iperf实验验证及抓包分析系列之一:iperf3中通过-l参数指定的是哪部分数据的大小?

目录

思考题:iperf3中通过-l参数指定的是哪部分数据的大小?

一、实验拓扑:

二、iperf TCP打流情况分析:

三、iperf UDP打流情况分析


思考题:iperf3中通过-l参数指定的是哪部分数据的大小?

一、实验拓扑:

【客户端】(10.255.0.2)------(iperf打流)------>【服务端】(10.255.1.2)

二、iperf TCP打流情况分析:

1、进行以下三次打流,并分别进行抓包

打流1:单线程,-l 64字节,1Mbps速率,打流20秒

服务端:iperf3 -s -B 10.255.1.2

客户端:iperf3 -c 10.255.1.2 -i 1 -t 20 -l 64 -b 1M

打流2:单线程,-l 1400字节,1Mbps速率,打流20秒

服务端:iperf3 -s -B 10.255.1.2

客户端:iperf3 -c 10.255.1.2 -i 1 -t 20 -l 1400 -b 1M

打流3:单线程,-l 8000字节,1Mbps速率,打流20秒

服务端:iperf3 -s -B 10.255.1.2

客户端:iperf3 -c 10.255.1.2 -i 1 -t 20 -l 8000 -b 1M

2、分析数据包,可以看到iperf单线程TCP打流时,会产生两条TCP流,一条应该是用于控制,一条用于跑数据。

当-l指定的数值越大,用于跑数据的TCP流的实际转发速率(整体二层帧转发速率)越接近iperf命令中指定的速率。

但是即使-l指定的数值很大,例如【打流3】中指定了8KB,用于跑数据的TCP流的实际转发速率(整体二层帧转发速率)也不可能等于iperf命令中指定的速率。因为-l实际上只是设置读写缓冲区的长度(可以简单理解成是TCP/UDP Data部分的长度),而iperf中指定/显示的速率应该只是拿Data部分的数据进行计算,最终形成的数据包还会加上TCP/UDP报头、IP包头、二层帧头,所以整体流量速率会大于iperf命令中指定的速率。当-l指定的数值越大,各类报头在整体数据中占比越小,所以会越接近iperf命令中指定的速率。 但是即使-l指定的数值再大,实际转发速率(整体二层帧转发速率)也不可能等于iperf命令中指定的速率,因为以太网中最大MTU也就是1500字节,IP包大小超过1500字节,还会发生分片,IP报头+TCP报头最少也有40字节(20+20)的固定开销。

3、查看具体的数据包结构,例如下图中是-l 64字节TCP打流的抓包,-l设置的数值可以简单理解成是TCP Data部分的长度,但是因为TCP是流转发,TCP Data部分不固定(小包会合成大包再一次性发送)。64(Date)+12(TCP Option)+20(TCP报头)+20(IP包头)+14(二层帧头,不算帧尾FCS的4字节)=130字节

-l 1400字节TCP打流的抓包

-l 8000字节TCP打流的抓包。说明:wireshark抓包是在网卡分片前抓的。

三、iperf UDP打流情况分析:

1、进行以下三次打流,并分别进行抓包

打流1:单线程,-l 64字节,1Mbps速率,打流20秒

服务端:iperf3 -s -B 10.255.1.2

客户端:iperf3 -c 10.255.1.2 -i 1 -t 20 -l 64 -b 1M -u

打流2:单线程,-l 1400字节,1Mbps速率,打流20秒

服务端:iperf3 -s -B 10.255.1.2

客户端:iperf3 -c 10.255.1.2 -i 1 -t 20 -l 1400 -b 1M -u

打流3:单线程,-l 8000字节,1Mbps速率,打流20秒

服务端:iperf3 -s -B 10.255.1.2

客户端:iperf3 -c 10.255.1.2 -i 1 -t 20 -l 8000 -b 1M -u

2、分析数据包,可以看到,iperf3中打UDP流也是需要先建立TCP控制流,然后在用UDP转发数据

同样的,当-l指定的数值越大,用于跑数据的UDP流的实际转发速率(整体二层帧转发速率)越接近iperf命令中指定的速率,但是不可能相等,因为还有UDP头(8字节)+IP头(20字节)+二层帧头(14)=42字节的额外开销。【TCP要12(TCP Option)+20(TCP报头)+20(IP包头)+14(二层帧头)=66字节的额外开销】

此外可以看到当-l 8000字节打UDP流时,实际产生UDP包很少,因为MTU大于1500字节时在IP层就被分片了,所以打UDP流时,建议-l数值不要超过1472(1500-8-20)

3、查看具体的数据包结构,例如下图中是-l 64字节UDP打流的抓包,因为UDP是逐包转发,Data部分基本是固定的,所以能更明显看出,-l设置的数值是UDP Data部分的长度。

64(Date)+8(UDP报头)+20(IP包头)+14(二层帧头,不算帧尾FCS的4字节)=106字节

-l 1400字节UDP打流的抓包

-l 8000字节UDP打流的抓包。说明:UDP大包在IP层被分片了。

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值