首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于IPv6的iperf UDP

基于IPv6的iperf UDP
EN

Stack Overflow用户
提问于 2015-09-25 08:03:57
回答 2查看 7.4K关注 0票数 1

我正在使用iperf (https://iperf.fr/)在IPv6上进行一些UDP带宽测试。当我用以下命令行使用Linux客户端时,结果非常糟糕:

代码语言:javascript
运行
复制
iperf -u -V -c fe80::5910:d4ff:fe31:5b10%usb0 -b 100m

在研究Wireshark的问题时,我看到客户端在发送数据时出现了一些碎片。更准确地说,我看到UDP客户机输出的数据包大小为1510字节和92个字节,交替。例如,我看到的UDP数据包具有以下模式(大小):1510、92、1510、92、1510、92、...,1510、92、.

阅读iperf2文档我阅读了以下选项(-l):

读或写缓冲器的长度。iPerf的工作方式是多次编写len字节数组。默认情况下TCP为8KB,UDP为1470字节。注意:对于UDP,这是数据报大小,当使用IPv6寻址到1450或更低时,需要降低数据报大小,以避免碎片化。还请参阅-n和-t选项。

我试图通过用以下代码替换Linux客户端命令行来进行相同的带宽测试:

代码语言:javascript
运行
复制
iperf -u -V -c fe80::5910:d4ff:fe31:5b10%usb0 -b 100m -l1450

我看到了很好的结果。看着Wireshark的抓捕,我再也看不到碎片化了。

在IPv4上做同样的测试,我不需要改变默认的UDP数据报大小(我不需要使用'-l‘选项)来获得好的结果。

因此,我的结论是,碎片(通过IPv6)是造成较差的带宽性能。

无论如何,我想知道在IPv6上将UDP数据报大小设置为1450时到底会发生什么。为什么对于UDP数据报大小,我在IPv6上而不是在IPv4上有碎片?此外,为什么我在将UDP数据报大小减少到1450时没有碎片?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-25 08:13:30

最常见的以太网MTU是1500,不包括以太网帧头。这意味着您可以通过线路在一个数据包中发送1500个字节,包括IP报头。IPv6标头IPv4标头大有几个原因,最重要的是IPv6地址比IPv4大。因此,当您在IPv6上使用默认值运行时,您的数据包大小会超过MTU大小,并且需要将数据包分成两个部分:一个称为碎裂的过程。

票数 3
EN

Stack Overflow用户

发布于 2015-09-25 08:58:43

基本IPv4报头为20字节,基本IPv6报头为40字节,UDP报头为8字节。

对于IPv4,总的数据包大小是1470+8+20=1498,这比默认的以太网MTU 1500要小。

使用IPv6时,数据包的总大小是1470+8+40=1518,它超过1500个,必须是分段的。

现在让我们来看看你的观察。您可以看到大小分别为1510和92的数据包。其中包括以太网头,它是14个字节。因此,您的IPv6数据包是1496字节和78字节。大数据包的内容是: IPv6报头(40字节)、碎片报头(8)、UDP头(8)和1440字节的数据。较小的分组包含IPv6报头(40)、碎片报头(8)和剩余的30个字节的数据。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32777545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档