晚上9点,客户投诉电话打爆,你打开后台一看——越南机房到广州延迟180ms,丢包15%,TCP重传堆了满屏。白天还好好的,一到晚高峰就拉胯。别急着重启服务器,八成不是机器的问题,是回国那条路在搞鬼。
我经手过的案子里,至少6成所谓"越南直连"根本没跟VNPT或Viettel做settlement-free peering,走的是NTT、PCCW的paid transit,AS路径拉了七八跳,绕港绕新加坡是常态。你花的"直连"钱,买了个转机票。(别问我怎么知道的,问就是凌晨三点被oncall从床上薅起来看路由表)
回国延迟到底卡在哪一跳
拿到一台越南直连中国线路服务器,头一件事不是跑业务,是敲mtr看路由。正常的VNPT直连peering,从广州出发3跳内应该看到AS7552(Viettel)或AS45899(VNPT)的IP。要是第4跳蹦出来hinet.net(台湾中华电信)或者pccw.com,得,绕路了。
晚高峰丢包集中在第2-3跳(国内出口段),说明163骨干(AS4134)堵了。这时候哪怕越南侧线路再好也白搭,数据出不去就是出不去。换CN2 GIA(AS4809)中转能绕开这个堵点,代价是多15-20ms。
- 第2跳Loss%突然飙高 → 国内运营商出口打满了,换CN2 GIA出口或者等过了11点再说
- 第4-5跳出现境外ISP → 没做直连peering,找商家要VNPT/Viettel的peering证明
- 全程Loss%都是0但延迟飘 → 大概率是中间设备在做QoS限速,跑TCP mtr而不是ICMP
这里涉及一个底层概念:BGP AS-Path。简单讲就是数据包从你这到越南服务器经过的AS编号序列。AS-Path越长,中间转手越多,延迟和丢包概率越高。直连peering的AS-Path通常就2-3个AS,transit能拉到6-8个。
3条回国通路延迟丢包对比
去年Q4我在河内和胡志明各拿了一台机器,跑了整整两个月的晚高峰数据(20:00-23:00,每天50次mtr取均值),整理成下面这张表。广州电信出口测试,100M带宽档位:
| 回国通路 | 广州延迟(均值) | 晚高峰丢包 | 100M月费参考 | 适合的业务 |
|---|---|---|---|---|
| 普通BGP transit(绕港) | 85-120ms | 8-15% | ¥800-1200 | 下载站、离线同步 |
| VNPT/Viettel直连peering | 38-50ms | 2-5% | ¥2000-3500 | 电商、直播、游戏 |
| CN2 GIA中转(经港) | 55-70ms | 1-3% | ¥3000-5000 | SaaS、企业ERP |
| IPLC专线(南宁-河内) | 25-35ms | <0.5% | ¥15000+ | 金融清算、实时音视频 |
分水岭很明显:月带宽需求50M以下、对延迟不敏感的,普通transit凑合用。做电商直播这种晚高峰正好是业务高峰的,直连peering是刚需,多花的钱从客户投诉里省回来。IPLC专线留给金融和音视频,中小业务上这个纯属烧钱。
顺带提一嘴MPLS TE(多协议标签交换流量工程),IPLC专线底层就是靠这玩意儿做路径约束和带宽预留的。普通公网BGP做不到"这条路给我留100M不许别人挤",MPLS TE可以。这就是专线贵的道理。
越南直连线路3个翻车高发区
说几个我亲眼见过的坑,都是真金白银买来的教训:
- 用户全在华北东北的,别碰越南服务器。国内段广州到北京还得加30-40ms,总延迟跟用国内机器+CDN比完全没优势,白折腾一圈
- 纯服务越南本地用户的业务,不要花冤枉钱买回国线路。直接用VNPT/Viettel本地带宽就行,回国线路是给中国用户访问越南机器用的,方向搞反了
- 对延迟要求低于10ms的(高频交易、工业控制),趁早断了念想。光速限制摆在那,南宁到河内物理距离就那么多,再怎么调也压不到10ms以内
还有个容易翻车的:服务器端TCP拥塞控制算法用默认的cubic,在跨境高延迟回路上表现很拉胯。换成TCP BBR(Google搞的基于带宽和RTT的拥塞控制),吞吐能拉高30-50%,重传明显少。一行命令的事:
# 从广州机器上敲,看回国路由到底绕了哪
mtr -rwc 50 --tcp -P 443 103.xx.xx.xx
# 重点盯第3-5跳的Host和Loss%列
# 要是蹦出来 hk-broadband.net 或者 pccw.com 就是绕港了
# 正常VNPT直连应该3跳内看到 as7552 或 as45899
服务器端换BBR(需要内核4.9+)
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
验证:sysctl net.ipv4.tcp_congestion_control 输出bbr就对了
选商家的时候多留个心眼。像StrataServer这种在越南有自营机房、跟VNPT签了settlement-free peering的,AS-Path确实能压到3跳以内。但也别光听销售说,让他当面跑一份mtr给你看,数据不会骗人。
写在后面
越南机房回国线路这摊水,说深不深说浅不浅。核心就一句话:看AS-Path,看晚高峰丢包,别信PPT。mtr跑出来的东西比任何销售话术都管用。下单前让商家提供至少一周的晚高峰mtr日志,拿不到就换一家,别犹豫。
作者简介:在广西某二级ISP蹲了8年跨境路由运维,日常跟VNPT、Viettel的peering session较劲,后转港IDC做东南亚方向路由调优。AS号背得比女朋友生日熟,现在半退休状态偶尔帮人看路由表收点茶水钱。