
1. 本次评测目标是量化香港沙田到目标节点(通过 CN2 传输)的高峰期延迟、丢包率、抖动和带宽表现。总体方案:先准备测试环境与工具;确定高峰时段与样本大小;运行主动探测(ping/mtr/iperf3)与被动抓包(tcpdump);汇总为 CSV,再用 Python/Excel 统计并画图。
2. 准备事项:在沙田侧准备一台 Linux 服务器(建议 Ubuntu 或 CentOS),需 root 或 sudo 权限;安装工具:sudo apt install iperf3 mtr tcpdump hping3 jq python3-pip -y;pip3 install pandas matplotlib;确保目标测试端(对端)支持 iperf3 server(iperf3 -s)并告知对端 IP/端口,确认防火墙/ACL 允许测试流量。
3. 时间与样本计划:识别高峰期(例如工作日 19:00-23:00 与 12:00-14:00);每个高峰段至少持续 4 小时,按 5 分钟间隔采样(每 5 分钟跑一组测试),单次测试包含:ping 60 次(每秒一次),mtr 运行 3 分钟,iperf3 单向 60 秒,若可并行则多流(--parallel 4)。每天至少连续测 3-5 个高峰天数,样本量建议 >= 200 条记录。
4. 步骤详解(ping):在终端运行:ping -c 60 -i 0.2 <目标IP> | tee ping_$(date +%s).log。解析丢包:查看最后 summary,例如 “60 packets transmitted, 58 received, 3% packet loss”。(mtr):mtr --report --report-cycles 180 <目标IP> > mtr_$(date +%s).log。mtr 报告中会显示每跳的丢包和平均延迟,保存为文本用于后续解析。
5. iperf3 操作:在对端运行 iperf3 -s -p 5201。客户端运行:iperf3 -c <目标IP> -p 5201 -t 60 -P 4 -i 10 --logfile iperf3_$(date +%s).log。说明:-P 4 为 4 并发流以模拟并发高负载;可根据链路带宽调整并发数与测试时长;记录每秒吞吐、重传与丢包(若使用 TCP)。若需 UDP 丢包测量:iperf3 -c
6. 抓包步骤:sudo tcpdump -i eth0 host <目标IP> and \(icmp or tcp or udp\) -w capture_$(date +%s).pcap。建议每次测试抓 2-3 分钟以捕获丢包瞬态。用 tshark 导出 CSV:tshark -r capture.pcap -T fields -e frame.time_epoch -e ip.src -e ip.dst -e icmp.seq -e tcp.seq -e udp.length > capture.csv。抓包注意磁盘空间并定时清理。
7. 推荐脚本(bash)示例:创建 /usr/local/bin/cn2_test.sh,内含:1) ping 60 次并输出 JSON(用 jq 格式化);2) mtr --report;3) iperf3 调用;4) 将结果追加到 /var/log/cn2_tests/$(date +%F).csv。然后用 crontab 每 5 分钟触发:*/5 19-23 * * 1-5 /usr/local/bin/cn2_test.sh。脚本示例要包含错误重试与日志轮换。将每次输出写为 CSV 行便于后续合并。
8. 汇总步骤:把 ping 的 summary(发送/接收/丢包/最小平均最大延迟)解析成一行;mtr 抽取到最后一跳的 packet loss 和 avg rtt;iperf3 取平均吞吐。示例字段:timestamp, target, ping_sent, ping_recv, ping_loss_pct, rtt_min, rtt_avg, rtt_max, mtr_loss_pct, iperf_mbps。可用 awk/grep/jq 拼接日志到 CSV。
9. 使用 Python 分析:读取所有 CSV:df = pandas.read_csv('all.csv'); 计算丢包率分布:df['ping_loss_pct'].describe(); 计算 p95 延迟:df['rtt_avg'].quantile(0.95)。计算高峰期和非高峰差异:groupby 时段再 t-test(scipy.stats.ttest_ind)。判定标准例子:平均丢包 > 1% 或 p95 延迟增长 > 50ms 视为性能恶化;连续 3 个采样丢包 > 2% 建议报警并定位链路。
10. 定位流程:1) 若 ping 丢包高,先用 mtr 检查在哪一跳开始丢包;2) 对该跳做更长时间的 mtr/抓包确认是否瞬时或持续;3) 与运营商沟通,提供 mtr 与 pcap 作为证据;4) 若是链路拥塞造成,建议做持续 iperf3 并发压测以复现并量化带宽瓶颈;5) 若是路由突变导致高延迟,保存 traceroute 历史记录用于分析。
11. 问:如何确认测试走的确实是 CN2 路由?(请看答复)
11. 答:先通过 traceroute 或 mtr 查看中间跳的域名与 ASN(使用 whois 或 bgp.tools),CN2 通常会在中间跳显示联通/电信的“cn2”或“chinannet”标识;使用 `traceroute -n` 查看 IP,再用 `whois`/`bgpview` 确认 ASN 是否为运营商 CN2 专用 ASN;同时可以联系上游运营商确认到目的地是否建立了 CN2 专线。
12. 问:高峰期丢包是瞬时还是持续,如何区分?(请看答复)
12. 答:用持续采样判断:如果 mtr 或 ping 在多个连续采样(例如 5 次、即 25 分钟内)都显示丢包率异常,且抓包显示连续丢包或重复 ACK,说明是持续性问题;若只在某一两分钟内出现并立即恢复,且抓包显示零星丢包,可能是瞬时突发拥塞或链路抖动。建议同时检查对端和中间设备的接口错误计数。
13. 问:当发现丢包率 >1% 时下一步应该怎么做?(请看答复)
13. 答:先把时间段、mtr 路径、iperf3 压测结果和 pcap 文件整理好,尝试在非高峰期复现以排除临时负荷因素;如果能稳定复现,联系上游/数据中心提供商并提交证据(mtr 日志、pcap、测试时间线);同时在本地做替代路由测试(如果可行),并在 SLA 范围内申请网络事件工单以便运营商处理。