使用iPerf测试并排查UDP丢包问题的方法

  介绍

小编给大家分享一下使用iPerf测试并排查UDP丢包问题的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

使用iPerf测试并排查UDP丢包问题

使用高速通道打通同一个地域(地区)下的两台VPC网络类型的ECS实例后,通过iPerf测试两台实例内网之间UDP丢包率,测试带宽达50 Mbps到以上时出现了丢包现象,且随着带宽的增加,丢包率出现增长趋势。如下图:

使用iPerf测试并排查UDP丢包问题的方法

假设两台网络类型的ECS实例的私有IP为VPC ECS(192.168.104.235)与ECS B(10.182.83.13),并用Netcat (NC)监听并发送UDP数据封包,则网络类型的ECS实例一个与实例B通信链路图如下:

使用iPerf测试并排查UDP丢包问题的方法

其数据流走向为:

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丢包情况。

使用iPerf测试并排查UDP丢包问题的方法

使用iPerf测试并排查UDP丢包问题的方法