小编给大家分享一下使用iPerf测试并排查UDP丢包问题的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
使用iPerf测试并排查UDP丢包问题
使用高速通道打通同一个地域(地区)下的两台VPC网络类型的ECS实例后,通过iPerf测试两台实例内网之间UDP丢包率,测试带宽达50 Mbps到以上时出现了丢包现象,且随着带宽的增加,丢包率出现增长趋势。如下图:
假设两台网络类型的ECS实例的私有IP为VPC ECS(192.168.104.235)与ECS B(10.182.83.13),并用Netcat (NC)监听并发送UDP数据封包,则网络类型的ECS实例一个与实例B通信链路图如下:
其数据流走向为:
ECS一(192.168.104.235)→数控1 (100.105.59.3)→VGW (10.141.166.253)→数控2 (100.105.59.9)→ECS B (10.182.83.13)
我们需要对其链路进行排查分析,找出丢包的最终原因。
注意:由于只看到了源Netcat(即数控1)和目的Netcat(即数控2)之前的通信,抓包排查要避免误区,即随意判断是Netcat (NC)之间的直接通信丢包。
排查时会发现源端eth0的抓包发给了VGW,但是在目的端抓包发现外壳封装了目的数控2 IP,如示例:
[时间]17:32:07.130844点:“输入” (醚)24:4c: 07:33:0e: 02→x0800 00:04:37:28:00:65 eth_type: 0 (IPv4) 100.105.59.3→10.141.166.253 原型:17日版本:04 ihl: 05, len: 1534年,鉴别:59824年,R: 0, DF: 1, MF: 0,抵消:0,ttl: 60, xfe47 chksum: 0 (UDP)运动:46703年,dport: 250年,大小:1514年,chksum: 0 x0000 [VxLan] debug_flag: 0, vlan_tag: 0, payload_type: 0,版本:1,tunnel_id: 1878597,服务条款:0,tof: 0 (IPv4) 192.168.104.235→10.182.83.13 原型:17日版本:04 ihl: 05, len: 1498年,鉴别:55469年,R: 0, DF: 1, MF: 0,抵消:0,ttl: 64年,xd50e chksum: 0 (UDP)运动:36687年,dport: 5001年,大小:1478年,xa0aa chksum: 0 [时间]17:32:07.130854点:“输出” (醚)24:4c: 07:33:0e: 02→x0800 00:04:37:28:00:65 eth_type: 0 (IPv4) 100.105.59.3→100.105.59.9 原型:17日版本:04 ihl: 05, len: 1534年,鉴别:59824年,R: 0, DF: 1, MF: 0,抵消:0,ttl: 60, chksum: 0 x0000 (UDP)运动:46703年,dport: 250年,大小:1514年,chksum: 0 x0000 [VxLan] debug_flag: 0, vlan_tag: 0, payload_type: 0,版本:1,tunnel_id: 2125861,服务条款:0,tof: 0 (IPv4) 192.168.104.235→10.182.83.13 原型:17日版本:04 ihl: 05, len: 1498年,鉴别:55469年,R: 0, DF: 1, MF: 0,抵消:0,ttl: 64年,xd50e chksum: 0 (UDP)运动:36687年,dport: 5001年,大小:1478年,chksum: 0 xa0aa
确认数据包通过VGW后,开始统计抓包信息:
ECS通过iPerf打UDP流量:iPerf - c 10.182.83.13 - u - B 600
ECS B通过iPerf接收:iPerf - u - s
在实例内部抓包。
ECS答:sudo tcpdump - w ~/客户端。pcap - n - i eth0 src主机192.168.104.25和src端口1234 ECS B: sudo tcpdump - w ~/服务器。pcap - n - i eth0 src主机192.168.104.25和src端口1234
在两个数控eth0处抓包。
数控1:sudo houyi-tcpdump - w/apsara/i-6we6pnh29n2q7srkgomd。pcap nnk我eth0 udp和src inner_port 1234和dst inner_host 10.182.83.13 4096年数控2:sudo houyi-tcpdump - b - w/apsara/i-6we53i9h4ducbju5rmuw。人民行动党nn - eth0 udp - k和src inner_host 192.168.104.235 src inner_port 1234
在反潜战和LSW部署流统。
100.105.59.3:46728→10.141.166.253:250
注意:由于目的端包外壳自动封装了目的数控1 IP,所以VGW端数据包的报文格式为:100.105.59.3:46728→100.105.59.9:250 .
根据抓包结果分析。
ECS丢包/发包:171/510203
数控1 eth0发包:510204
反潜战和LSW流统计出包:510204
数控2 eth0收包:510204
ECS B收包:510204年,捕获507442,下降了2162
以内核上分析定位到实例协议栈丢包,通过调整实例内部UDP缓冲区大小来调整网络栈(栈),默认的UDF缓冲区大小为212992 (208 KB),您可以调整至2097152 (2 MB)。
/proc/sys/net/core/rmem_default #默认的接收数据包内存大?proc/sys/net/core/rmem_max #最大的接收数据包内存大小
调整后测试UDP丢包情况。