luckygood logo

Tiktok直播香港专线网络丢包率压到0.1%以内的3个调优手法

StrataServer

上个月一个做TikTok直播的MCN老板半夜两点给我打电话,说他们8个主播同时开播,画面全卡成幻灯片,弹幕刷满"主播你网炸了",一晚上GMV少了六位数。他们之前用的是某家CN2 GIA的VPS,带宽给的100M,iperf3跑满没问题,但一到晚高峰直播就拉胯。

问题压根不在带宽大小。普通公网路由没法给Tiktok直播香港专线网络的RTMP推流做优先级标记,数据包到了拥塞段照样被随机丢弃。你带宽再大,包丢了就是丢了,TCP一重传延迟直接起飞。

普通线路为啥扛不住直播推流

TikTok直播推流走的是RTMP协议,本质上是TCP长连接持续往服务器怼视频帧。这玩意儿对延迟波动和丢包的容忍度极低——丢包率超过1%画面就开始马赛克,超过3%直接断流重连。

普通CN2 GIA呢?去程确实走59.43.*.*的精品网段,但回程照样可能绕到163骨干网上兜一圈。更操蛋的是,直播推流是持续上行流量,普通VPS出口压根没有QoS策略(或者有个摆设一样的默认队列),你的视频帧和隔壁下载BT的流量挤在同一条队列里,谁先谁后全看运气。

MPLS专线不一样的地方在哪儿呢?从你深圳/广州的接入POP到香港机房这段,走的是标签交换的私有通路,不跟公网流量混。运营商在PE设备上直接给你划一条保障队列,QoS策略里EF(Expedited Forwarding)优先级拉满,推流包永远插队。别问我怎么知道的,问就是凌晨三点被oncall叫醒三次之后悟出来的。

说个反直觉的事:很多人以为专线就是"带宽更大的VPS"。不是。专线的核心价值是确定性——延迟是确定的、丢包是确定的、不会被别人的流量挤掉。这对直播推流来说比多给50M带宽管用一百倍。

# 从深圳办公网mtr到TikTok港區推流接入点,跑100轮看丢包
mtr -r -c 100 --report-wide push-rtmp-hk.tiktokcdn.com

登上香港端的专线CPE,确认QoS队列有没有生效

tc -s qdisc show dev ge-0/0/1

这步要是没输出,别慌,先看接口名对不对(ip link show确认)

看EF队列的bytes和packets计数有没有在涨

如果计数不动,说明PE侧class-map没匹配到你的推流端口

抓推流端口的包,确认TCP重传率

tcpdump -i ge-0/0/1 port 1935 -w /tmp/rtmp_capture.pcap -c 50000

抓完用wireshark过滤tcp.analysis.retransmission看重传比例

3种线路方案实测数据摆一起

下面这组数据是我们在深圳福田POP到港區葵涌机房之间,连续跑了两周晚高峰(20:00-23:00)的实测结果,100M带宽,推流码率8Mbps:

对比项普通CN2 GIA VPSBGP多线+中转MPLS/IEPL专线
晚高峰丢包率2%-8%0.5%-2%<0.1%
延迟波动(港→深)15-60ms8-25ms1-3ms
QoS队列保障没有部分有,看脸EF优先级独占
TCP重传率3%-12%1%-4%<0.3%
月费(100M)¥800-1500¥3000-5000¥8000-15000
扛得住的并发路数1-2路3-5路10路往上

数据摆这儿了,自己看。StrataServer那边给的MPLS专线我们测下来晚高峰丢包稳定在0.05%左右,PE到CPE全程标签交换不过公网,确实跟VPS不是一个物种。

这4种业务状况别碰专线

说句得罪同行的话,不是所有人都需要上专线。以下情况你花那个钱纯属冤大头:

  • 只做TikTok短视频上传、不做实时直播的——普通CN2 GIA完全够用,上传是异步的,丢几个包重传就完事了,没必要为确定性付溢价
  • 直播面向的是东南亚观众而非国内的——你走新加坡本地线路或者港到新的区域专线更划算,绕回深圳再出去是脱裤子放屁
  • 并发直播路数长期不超过2路的——BGP多线中转凑合能跑,月省大几千块,等路数上来了再升级不迟
  • 预算卡死在月费3000以内还想要100M独享的——这个价位买不到真专线,市面上那些"低价专线"大概率是拿VPS套个壳忽悠你,QoS策略压根没配

作者简介:周劲松,前某运营商传输网运维出身,干了六年SDH/DWDM之后跳到集成商做跨境专线交付。现居深圳福田,日常在深港两地机房之间跑,手里攒了一堆TikTok、快手海外直播客户的MPLS线路交付和排障case。脾气不太好,但技术细节给得足。

直播断流一晚少说亏几万块GMV,观众划走了不会等你。把推流地址、并发路数、现有线路情况甩过来,48小时内出线路测试报告和调优方案,跑不通不收钱。

常见问题解答

01 TikTok推流到港區服务器TCP重传率飙到5%以上,带宽没跑满,怎么排查?

先mtr -r -c 100看中间哪跳开始丢,再登CPE跑tc -s qdisc看EF队列计数有没有涨。大概率是公网段拥塞或者QoS策略没下发,跟带宽大小没半毛钱关系。

02 专线CPE上tc命令看不到EF队列流量,packets计数一直是0怎么整?

检查PE侧class-map有没有匹配推流端口1935,十有八九是ACL没下发或者DSCP标记没打上。让运营商确认PE到CPE的标签交换路径有没有建起来,lsp ping跑一下。

03 上了专线但TikTok创作者后台还是提示"网络不稳定"是啥情况?

八成是推流软件GOP设太大或者码率自适应没关。专线管的是传输层确定性,应用层参数得自己调。OBS里把关键帧间隔压到2秒,码率锁定别用ABR。

04 深圳到香港专线延迟突然从2ms跳到20ms,持续了半小时又恢复了?

大概率是PE设备做了路由收敛或者光缆割接。traceroute看哪跳变了,找运营商要当晚的割接通知。如果频繁出现,要求对方提供SLA报告并追究违约。