1. 测评准备与目标定义
- 硬件/环境:准备一台位于马来西亚的测试主机(Linux推荐),最好有公网IP或端口转发;确认带宽至少为测试目标的两倍。
- 软件工具:安装 iperf3、mtr(或 my traceroute)、ping、traceroute、tcpdump/tshark、speedtest-cli;可选:nuttcp、nmap。
- 目标定义:明确要测的指标(单向延迟/往返时延RTT、抖动、丢包率、可用吞吐量、并发流吞吐)。记录测试时间窗与重复次数(例如每项测试做5次并取均值、中位数)。
2. 确定测试端与目标IP/端口
- 选择目标:若有CN2 GIA出口的中国服务器IP或云主机(例如广州/上海机房),优先使用运营商提供的测试IP或自建iperf3服务端。
- 使用BGP Looking Glass或路由检测工具验证路径是否走CN2 GIA:访问运营商看玻璃(如中国电信LG)并输入你的源IP检查是否被标记为CN2 GIA。记录AS路径与下一跳。
3. 基础连通与路由跟踪(ping/traceroute/mtr)
- ping:ping -c 20 -s 1200 <目标IP>,记录平均rtt、最小最大、丢包百分比。建议用不同包大小(64, 512, 1200)测试是否存在分段问题。
- traceroute/mtr:mtr -r -c 100 <目标IP> 得到逐跳丢包与延迟分布;若mtr不可用:traceroute -I <目标IP>(使用ICMP)。保存输出到文件:mtr -r -c 100 target > mtr_target.txt。
4. 抖动与丢包的细化测量
- 使用ping统计抖动:ping -D -i 0.2 -s 100 <目标IP> > ping_log.txt(记录时间戳,每0.2s一次),用脚本计算相邻包间RTT差值的标准差/平均值即抖动。
- 长时间监控:使用 smokeping 或 pingplotter(Windows)做24小时抖动/丢包曲线,能发现时段性丢包或速率限制。
5. 吞吐量测量准备(iperf3 服务端搭建)
- 在目标端部署:在位于中国的CN2 GIA机房主机上运行 iperf3 -s(或使用docker:docker run --rm -p 5201:5201 networkstatic/iperf3 -s)。
- 端口与防火墙:确保TCP/UDP 5201端口打开,必要时在服务端设置监听端口并在客户端指定 -p。记录服务端机器的带宽/VM配额。
6. 基本吞吐量测试(单向TCP)
- 客户端命令:iperf3 -c <目标IP> -p 5201 -t 60 -P 1 将测出单流最大吞吐。记录带宽、重传次数(Retr)。
- 参数说明:-t 60 表示60秒稳定期间测量,-P 并发流数,建议先做单流再做8/16并发。保存输出:iperf3 ... > iperf_tcp_single.txt。
7. 并发与UDP吞吐量测试
- 并发测试:iperf3 -c <目标IP> -t 60 -P 8 检验聚合吞吐(观察是否线性增加或出现丢包/重传激增)。
- UDP测试(延迟敏感场景):iperf3 -c <目标IP> -u -b 200M -t 60 -P 1,逐步调高 -b(带宽)直到出现丢包,记录丢包率。注意UDP不会自适应,会丢包并影响抖动。
8. 诊断与抓包(tshark/tcpdump)
- 抓包指令:sudo tshark -i eth0 -w /tmp/cn2_test.pcap -f "host <目标IP> and port 5201" 在测试期间抓取数据包。
- 分析重点:检查TCP重传、窗口大小、ICMP报错、MSS/MTU问题。使用 Wireshark 打开 pcap,过滤 tcp.analysis.retransmission 和 tcp.analysis.duplicate_ack 来定位问题。
9. 日志记录、结果统计与可视化
- 自动化脚本:编写bash脚本循环运行 iperf3/ping/mtr,并将关键字段输出为CSV(时间戳、平均RTT、丢包、吞吐、重传)。示例:echo "$(date +%s),$(grep 'sender' iperf_out | awk '{print $7}')" >> results.csv。
- 可视化:用Excel或Grafana导入CSV绘图,观察峰值、抖动与丢包在不同时间的关系。
10. 结果判读与优化建议
- 延迟参考值:马来西亚到中国沿海CN2 GIA RTT常见在40-80ms,显著高于或波动剧烈说明中间路由或出口存在问题。
- 丢包与吞吐:若TCP单流带宽远低于链接上限且重传多,检查MTU、TCP窗口、包丢弃;并发流若能显著提升说明存在每流限速或TCP拥塞。可尝试启用TCP window scaling、调整ss参数或更换到更近的POP。
11. 问:在马来西亚如何确认流量确实走的是CN2 GIA而不是CN2 GT或普通链路?
- 方法:使用BGP Looking Glass或向云服务商/机房索要路由信息,检查AS PATH中是否含有中国电信专属标识(运营商LG会标注CN2 GIA)。另外,在mtr/traceroute中看到的中间跳点通常有“CTGIX/CNCN”类似命名,可以结合ISP文档判断。
12. 答:如果发现延迟高但吞吐正常,可能是什么原因?
- 解析:高延迟但吞吐正常通常意味着路径上存在较长的传播延迟(物理距离或绕路),或者跨国链路存在稳定队列,TCP可以在高带宽延迟乘积下借助窗口填满带宽,但单包时延仍高。建议检查路由是否绕行、尝试更近机房的目标IP。
13. 问:如何制作可复现的测试报告给运营商以请求优化?
- 要点:提供测试时间窗口、原始日志(ping/mtr/iperf抓取文件)、pcap抓包片段、BGP路径截图、并说明网络影响(丢包率、平均RTT、吞吐阈值)。按时间序列展示问题发生时刻与数值,列出建议(如路由优化、链路升级、QoS调整)。
来源:从延迟到吞吐量全面测评马来西亚cn2 gia的网络表现