
测量网络性能:测试网络吞吐量,延迟延迟,抖动,传输速度,数据包丢失&可靠性。使用Iperf / Jperf生成数据包
衡量网络性能
衡量网络性能 一直是一项艰巨而不清楚的任务,主要是因为大多数工程师和管理员不确定哪种方法最适合他们 局域网 要么 广域网.
一种常见(非常简单)的方法 测试网络性能 这是通过启动从一端(通常是工作站)到另一端(通常是服务器)的简单文件传输进行的,但是,这种方法在工程师中经常引起争议,并且这样做的理由很充分: 执行文件传输,我们不仅 测量传输速度 但是也 两端硬盘延迟 流。目标目标很可能能够接受 更高的传输速率 超过来源的发送能力,或者反之。这些 瓶颈由硬盘驱动器,操作系统排队机制或其他硬件组件引起, 引入不必要的延迟,最终提供不正确的结果。
衡量最大吞吐量和网络其他方面的最佳方法是最小化参与测试的计算机所引入的延迟。高端/中端机器(服务器,工作站或便携式计算机)可以用于执行这些测试,只要它们在测试操作期间不处理其他任务即可。
大型公司有足够的资金来克服上述所有问题,并且可以购买专用于测试网络环境的昂贵设备,而我们其他人可以依靠其他方法和工具,其中大多数方法和工具都可以从开源社区免费获得。
介绍Iperf
伊珀尔夫 是一个简单且功能强大的网络工具,旨在测量TCP和UDP带宽性能。通过调整TCP / UDP协议的各种参数和特征,工程师可以执行许多测试,从而深入了解网络的带宽可用性,延迟,抖动和数据丢失。
伊珀尔夫的主要功能包括:
- TCP协议和UDP带宽测量
- 最大段大小/最大传输单位的报告
- 支持TCP窗口大小
- 多线程同时进行多个连接
- 创建特定的UDP带宽流
- 丢包的测量
- 延迟抖动的测量
- 能够作为服务或守护程序运行
- 设置和间隔选项以自动执行性能测试
- 将结果和错误保存到文件中(用于以后查看结果)
- 在Windows,Linux OSX或Solaris下运行
与其他高级工具不同,Iperf是一个命令行程序,它接受许多不同的选项,因此非常易于使用。喜欢基于GUI的工具的用户可以下载Kperf或Jperf,这是旨在为Iperf提供友好的GUI界面的增强项目。
关于Iperf的另一点好处是,两端不需要都在同一类型的操作系统上。这意味着一端可以在Windows PC /服务器上运行,而另一端则是基于Linux的系统。
当前支持的操作系统如下:
- 视窗 2000,XP,2003,Vista,7、8& 视窗 2008
- 的Linux 32位(i386)
- 的Linux 64位(AMD64)
- MacOS X(英特尔& PowerPC)
- Oracle Solaris(8、9和10)
下载Windows版Iperf / Jperf& 的Linux - Compiling & Installing on 的Linux
伊珀尔夫可从我们的网站免费下载 管理员实用程序 下载部分。可下载的zip文件包含Windows和Linux版本的Iperf,以及基于Java的图形界面(Jperf)。 .zip文件中提供了完整的安装说明。
使用以下概述的步骤可以轻松安装Linux版本。第一步是解压缩并解压缩包含Iperf应用程序的文件:
[root @ Nightsky〜]# 焦油-zxvf iperf-2.0.5.tar.gz
接下来,进入Iperf目录,配置,编译和安装该应用程序:
[root @ Nightsky〜]# 光盘iperf-2.0.5
[root @ Nightsky iperf-2.0.5]# 。/配置
[root @ Nightsky iperf-2.0.5]# 使
<输出省略>
[root @ Nightsky iperf-2.0.5]# 进行安装
<输出省略>
最后,清理包含编译后的剩余文件的目录:
[root @ Nightsky iperf-2.0.5]# 弄干净
伊珀尔夫可以在 / usr / local / bin / 的Linux服务器或工作站的目录。
以下是来自的截图 视窗 GUI-Jperf 应用。其友好的界面使您只需单击几下即可轻松选择带宽速度,协议特定参数等。在GUI的顶部,Jperf还将显示用于所选选项的CLI命令-简洁的功能:
释放Iperf的想法-有关如何使用Iperf的详细示例
拥有像 伊珀尔夫 衡量网络性能,数据包丢失,抖动和网络的其他特性,带来了许多绝妙的可能性,它们不仅可以帮助工程师识别其网络(LAN或WAN)中可能存在的陷阱,而且还可以测试不同的供应商设备和技术来发现它们之间真正的性能差异。
这里有一些想法 防火墙 团队在关于Iperf的集思广益会议上提出了以下建议:
- 测量网络(LAN)骨干吞吐量
- 测量跨链路的抖动和数据包丢失。抖动值在支持IP语音(VoIP)的网络链路上尤其重要,因为高抖动会打断VoIP呼叫。
- 测试WAN链路速度和CIR –电信提供商是否正在提供我们所支付的速度?
- 测试链路之间的路由器或防火墙VPN吞吐量。通过调整IPSec加密算法,我们可以显着提高吞吐量。
- 测试客户端之间的访问点性能。无线客户端以150Mbps或300Mbps的速度连接到接入点,但是它们之间可以达到的最大速度是多少?
- 测试客户端–服务器瓶颈。如果服务器性能出现问题,并且我们不确定服务器的网络是否相关,Iperf可以帮助您找出问题的根源,而不必担心硬盘驱动器等瓶颈。
- 创建并行数据传输流以增加网络负载以测试路由器或交换机利用率。通过在具有多个线程的多个工作站上运行Iperf,我们可以在网络上创建大量负载并执行各种压力测试。
乍一看,很明显,Iperf是可用于测试网络任何部分的工具,无论它是UTP链路,光纤链路,Wi-Fi,租用线路,VoIP基础结构等等。
因为每个网络都有不同的需求和问题,所以我们认为最好采用不同的方法来处理Iperf,并且最好不要显示设置的测试结果(LAB环境),而应说明如何将其用于测试和诊断工程师的不同问题。被迫应对。
通过深入了解如何使用Iperf支持的选项,工程师可以调整命令以帮助他们确定自己的网络问题并测试其网络性能。
因此,我们通过覆盖Iperf的各种参数来拆分它。 注意参数区分大小写:
- 服务器和客户端的默认Iperf设置
- 通讯端口(-p),间隔(-一世)和时间(-t)
- 数据格式报告(Kbps,Mbps,KB,MB) (-F)
- 读取或写入的缓冲区长度(-l)
- UDP协议测试(-u) &UDP带宽设置(-b)
- 多个并行线程(-P)
- 双向带宽测量(-r)
- 同时双向带宽测量(-d)
- TCP协议窗口大小(-w)
- TCP协议最大段大小(MSS)(-M)
- 伊珀尔夫帮助(-H)
服务器和客户端的默认Iperf设置
服务器端
默认情况下,Iperf服务器侦听 TCP协议端口5001 使用TCP 窗口尺寸 的 85KB。在Windows下以服务器模式运行Iperf时,TCP窗口大小设置为64KB。使用以下命令运行Iperf服务器:
[root @ Nightsky bin]# iperf -s
-------------------------------------------------- ----------
服务器在TCP端口5001上侦听
TCP协议窗口大小:85.3 KByte(默认)
-------------------------------------------------- ----------
客户端
伊珀尔夫客户端在以下位置连接到Iperf服务器: TCP协议端口5001。在客户端模式下运行时,我们必须指定Iperf服务器的IP地址。 伊珀尔夫将立即运行并显示其结果:
C:\ Users \ Chris \ Desktop \ iperf-2.0.5-2-win32> iperf -c 192.168.5.5
-------------------------------------------------- ----------
客户端连接到192.168.5.5,TCP端口5001
TCP协议视窗大小:64.0 KByte(预设)
-------------------------------------------------- ----------
[ 3]与192.168.5.5端口5001连接的本地192.168.5.237端口52339
[ID]间隔 转让 带宽
[ 3] 0.0-10.0秒 105 MBytes 87.6 Mbits/sec
平均带宽测试为 87.6Mbps的
服务器端结果
服务器还提供测试结果,允许两端验证结果。在某些情况下,带宽的差异可能会很小,因为它是从两端进行计算的:
-------------------------------------------------- ----------
服务器在TCP端口5001上侦听
TCP协议窗口大小:85.3 KByte(默认)
-------------------------------------------------- ----------
[ 4]本地192.168.5.5端口5001与192.168.5.237端口52339连接
[ID]间隔 转让 带宽
[ 4] 0.0-10.0秒 105 MBytes 87.5 Mbits /秒
通信端口(-p),间隔(-i)和定时(-t)
可以使用以下命令更改运行Iperf的端口 –p 参数。必须在服务器和客户端上都配置相同的值。间隔 -一世 是服务器/客户端参数,用于设置定期带宽报告之间的间隔(以秒为单位),对于查看带宽报告在测试期间的变化情况非常有用。
计时参数 –t 是特定于客户的,以秒为单位指定测试的持续时间。默认值为10秒。
服务器端
[root @ Nightsky bin]# iperf -s -p 32000
-------------------------------------------------- ----------
服务器在TCP端口32000上侦听
TCP协议窗口大小:85.3 KByte(默认)
-------------------------------------------------- ----------
客户端
C:\ Users \ Chris \ Desktop \ iperf-2.0.5-2-win32> iperf -c 192.168.5.5 -p 32000 -一世 2 -t 5
-------------------------------------------------- ----------
客户端连接到192.168.5.5,TCP端口32000
TCP协议视窗大小:64.0 KByte(预设)
-------------------------------------------------- ----------
[ 3]本地192.168.5.237端口52602与192.168.5.5端口32000连接
[ID]间隔 转让 带宽
[ 3] 0.0- 2.0 sec 20.4 MBytes 85.5 Mbits/sec
[ 3] 2.0- 4.0 sec 20.8 MBytes 87.0 Mbits/sec
[ 3] 0.0- 5.0秒 51.8 MBytes 86.5 Mbits/sec
服务器端结果
-------------------------------------------------- ----------
服务器在TCP端口32000上侦听
TCP协议窗口大小:85.3 KByte(默认)
-------------------------------------------------- ----------
[ 4]与192.168.5.237端口52678连接的本地192.168.5.5端口32000
[ID]间隔 转让 带宽
[ 4] 0.0- 5.0秒 51.6 MBytes 86.2 Mbits/sec数据格式报告(千字节)& 千比特, Mbytes & Mbps) (-f)–服务器/客户端参数
伊珀尔夫可以以不同的格式显示带宽结果,使其易于阅读。带宽测量和数据传输将以所选格式显示。
服务器端
[root @ Nightsky bin]# iperf -s
-------------------------------------------------- ----------
服务器在TCP端口5001上侦听
TCP协议窗口大小:85.3 KByte(默认)
-------------------------------------------------- ----------
客户端
此处使用默认参数在10Mbps链路上执行测试。注意 转让 和 带宽 最后报告:
C:\ Users \ Chris \ Desktop \ iperf-2.0.5-2-win32> iperf -c 192.168.5.5
-------------------------------------------------- ----------
客户端连接到192.168.5.5,TCP端口5001
TCP协议视窗大小:64.0 KByte(预设)
-------------------------------------------------- ----------
[ 3]本地192.168.5.237端口53006与192.168.5.5端口5001连接
[ID]间隔 转让 带宽
[ 3] 0.0-10.2秒 11.4 MBytes 9.39 Mbits/sec
使用进行了相同的测试 –f k 参数,以便Iperf将结果显示在 千字节 和 千比特 格式:
C:\ Users \ Chris \ Desktop \ iperf-2.0.5-2-win32> iperf -c 192.168.5.5 -F k
-------------------------------------------------- ----------
客户端连接到192.168.5.5,TCP端口5001
TCP协议视窗大小:64.0 KByte(预设)
-------------------------------------------------- ----------
[ 3]与192.168.5.5端口5001连接的本地192.168.5.237端口53038
[ID]间隔 转让 带宽
[ 3] 0.0-10.2秒 11648 KBytes 9373 Kbits/sec
读取或写入的缓冲区长度(-l)–服务器/客户端参数
缓冲区长度很少使用,但是,在处理诸如本地网络(LAN)之类的大容量链接时,它们很有用。的 –l 参数指定每侧缓冲区读/写的长度,并且是客户端/服务器参数。指定的值可以在 K (KB)或 M (兆字节)。最好始终确保双方的缓冲区值设置相同。读/写缓冲区的默认长度为8K。
服务器端
[root @ Nightsky bin]# iperf -s -l 256K
-------------------------------------------------- ----------
服务器在TCP端口5001上侦听
TCP协议窗口大小:85.3 KByte(默认)
-------------------------------------------------- ----------
客户端,默认读/写缓冲区为8K。
请注意,对于测试, 服务器 边未设置,使其成为默认值 8K.
C:\ Users \ Chris \ Desktop \ iperf-2.0.5-2-win32> iperf -c 192.168.5.241
-------------------------------------------------- ----------
客户端连接到192.168.5.241,TCP端口5001
TCP协议视窗大小:64.0 KByte(预设)
-------------------------------------------------- ----------
[ 3]与192.168.5.241端口5001连接的本地192.168.5.237端口53331
[ID]间隔 转让 带宽
[ 3] 0.0-10.0秒 735 MBytes 616 Mbits/sec
带有256K读/写缓冲区的客户端。
请注意,在此测试中,服务器端设置为相同的缓冲区长度值 256K.
C:\ Users \ Chris \ Desktop \ iperf-2.0.5-2-win32> iperf -c 192.168.5.241 -l 256K
-------------------------------------------------- ----------
客户端连接到192.168.5.241,TCP端口5001
TCP协议视窗大小:64.0 KByte(预设)
-------------------------------------------------- ----------
[ 3]本地192.168.5.237端口53330与192.168.5.241端口5001连接
[ID]间隔 转让 带宽
[ 3] 0.0-10.0秒 796 MBytes 667 Mbits/sec
客户端,具有20MB的读/写缓冲区。
请注意,在此测试中,服务器端设置为相同的缓冲区长度值 20MB。请注意,随着20MB读/写缓冲区的传输和带宽的急剧增加:
C:\ Users \ Chris \ Desktop \ iperf-2.0.5-2-win32> iperf -c 192.168.5.241 -l 20M
-------------------------------------------------- ----------
客户端连接到192.168.5.241,TCP端口5001
TCP协议视窗大小:64.0 KByte(预设)
-------------------------------------------------- ----------
[ 3]本地192.168.5.237端口53860与192.168.5.241端口5001连接
[ID]间隔 转让 带宽
[ 3] 0.0-10.2秒 980 MBytes 803 Mbits/sec
使用较大的读/写缓冲区运行测试时,监视客户端或服务器的CPU,内存和带宽使用情况同样很有趣。
由于在测试期间将20MB缓冲区交换到内存,因此内存使用量将显着增加。那些好奇的人还可以尝试更大的缓冲区,例如100MB,以查看系统如何响应。同时,CPU使用率也会随着处理正在生成和接收的数据包而增加。我们的 双核CPU 毫无问题地完成了测试,但是,将系统屈膝屈膝并不需要花费太多。因此,强烈建议在测试期间不要运行其他繁重的应用程序:
另一方面,通过Windows Task Manager监视网络利用率也有助于提供网络吞吐量测试的直观结果:
UDP协议测试(-u)&UDP带宽设置(-b)–对于VoIP网络很重要
的 –u 参数是服务器/客户端特定的参数。
VoIP网络非常适合此类测试,并且非常重要。 UDP测试可以为我们提供有关抖动和丢包的宝贵信息。抖动是等待时间的变化,并不取决于等待时间本身。我们可以具有高响应时间和低抖动值,而不会引入VoIP通信问题。高抖动会给VoIP呼叫造成严重问题,甚至会打断它们。
UDP测试还可以测量网络的数据包丢失。优质链接的丢包率必须小于 1%.
的 –b 参数是 客户特定 并允许我们以位/秒为单位指定发送带宽。有用的组合 –u 和 –b 使我们可以控制跨测试链路发送数据的速率。默认值为1Mbps。
服务器端
[root @ Nightsky bin]# iperf -s -u
-------------------------------------------------- ----------
服务器在UDP端口5001上侦听
接收1470字节数据报
UDP缓冲区大小: 224 KByte (default)
-------------------------------------------------- ----------
客户端
以下命令指示我们的客户端以以下速率发送UDP数据: 10Mbps:
C:\ Users \ Chris \ Desktop \ iperf-2.0.5-2-win32> iperf -c 192.168.5.5 -u -b10m
-------------------------------------------------- ----------
客户端连接到192.168.5.5,UDP端口5001
发送1470字节数据报
UDP缓冲区大小: 64.0 KByte (default)
-------------------------------------------------- ----------
[ 3]与192.168.5.5端口5001连接的本地192.168.5.237端口64214
[ID]间隔 转让 带宽
[ 3] 0.0-10.0秒 11.8 MBytes 9.89 Mbits/sec
[ 3]发送了8418个数据报
[ 3] 服务器报告:
[ 3] 0.0-10.0秒 5.23 MBytes 4.39 Mbits/sec 0.218毫秒4683/8417(56%)
[ 3] 0.0-10.0秒 1个数据报无序接收
重要的是要注意,Iperf客户端显示其本地和远程Iperf服务器统计信息。当客户端报告它能够以以下速率发送数据时 9.89Mbps,服务器报告它正在以以下速率接收数据 4.39Mbps,清楚表明我们的链接存在问题。
服务器带宽报告中的下一个(4.39Mbps)是 抖动 和 数据包丢失 统计。测量的抖动为 0.218毫秒 –但是,可以接受的延迟 丢包56% 完全无法接受,并解释了为什么服务器收到的钱不到一半(4.39Mbps)的传输速率 9.89Mbps.
当测试发现可能的网络问题时,最好总是重新运行测试以确定丢包是否恒定或在整个传输过程中的特定时间发生。可以通过重复执行Iperf命令(但包括 –i 2 参数,指示我们的客户端以的速率发送UDP数据 10Mbps 和集 定期带宽报告之间的间隔至2秒:
客户端
C:\ Users \ Chris \ Desktop \ iperf-2.0.5-2-win32> iperf -c 192.168.5.5 -u -b10m -一世 2
-------------------------------------------------- ----------
客户端连接到192.168.5.5,UDP端口5001
发送1470字节数据报
UDP缓冲区大小: 64.0 KByte (default)
-------------------------------------------------- ----------
[ 3]本地192.168.5.237端口64609与192.168.5.5端口5001连接
[ID]间隔 转让 带宽
[ 3] 0.0- 2.0 sec 2.32 MBytes 9.74 Mbits/sec
[ 3] 2.0- 4.0 sec 2.40 MBytes 10.1 Mbits/sec
[ 3] 4.0- 6.0 sec 2.34 MBytes 9.80 Mbits/sec
[ 3] 6.0- 8.0秒 2.07 MBytes 8.68 Mbits/sec
[ 3] 8.0-10.0秒 2.06 MBytes 8.64 Mbits/sec
[ 3] 0.0-10.3秒 11.2 MBytes 9.10 Mbits/sec
[ 3]发送了7983个数据报
[ 3] 服务器报告:
[ 3] 0.0-50.4秒 4.76 MBytes 793 Kbits/sec 0.270毫秒4584/7982(57%)
[ 3] 0.0-50.4秒 1个数据报无序接收
报告间隔为2秒的结果表明,传输速度的显着下降要晚于测试进行一半的时间,即6到10秒之间。如果这是专线或帧中继链接,则最有可能表明我们正在达到目标 CIR (承诺信息速率),并且服务提供商正在减慢我们的传输速率。
当然,需要进一步测试,但是任何工程师都可以欣赏此简单测试提供的宝贵信息。
多个并行线程(-P)-客户端特定参数
多并行线程参数 –P 是特定于客户端的,并允许客户端同时运行多个线程。显然,使用此参数会将带宽除以正在运行的线程数量,并且在测试QoS功能时,它被认为是有价值的参数。我们将其与 –l 4M 参数将读/写缓冲区增加到4MB,从而提高两端的性能。
服务器端
[root @ Nightsky bin]# iperf -s -l 4M
-------------------------------------------------- ----------
服务器在TCP端口5001上侦听
TCP协议窗口大小:85.3 KByte(默认)
-------------------------------------------------- ----------
客户端
C:\ Users \ Chris \ Desktop \ iperf-2.0.5-2-win32> iperf -c 192.168.5.5 -l 4M -P 3
-------------------------------------------------- ----------
客户端连接到192.168.5.5,TCP端口5001
TCP协议视窗大小:64.0 KByte(预设)
-------------------------------------------------- ----------
[ 5]与192.168.5.5端口5001连接的本地192.168.5.237端口54222
[ 3]与192.168.5.5端口5001连接的本地192.168.5.237端口54220
[ 4]与192.168.5.5端口5001连接的本地192.168.5.237端口54221
[ID]间隔 转让 带宽
[ 5] 0.0-11.5秒 44.0 MBytes 32.1 Mbits/sec
[ 4] 0.0-11.7秒 44.0 MBytes 31.5 Mbits/sec
[ 3] 0.0-11.8秒 44.0 MBytes 31.4 Mbits/sec
[SUM] 0.0-11.8秒 132 MBytes 94.1 Mbits/sec单个双向带宽测量(-r)-客户端特定参数
双向参数 –r 强制进行单独的双向测试,强制客户端在初始测试完成后成为服务器。当有必要在两个方向上测试性能时,此选项被认为非常有用,并且使我们免于手动在客户端和服务器之间切换角色。
服务器端
[root @ Nightsky bin]# iperf -s
-------------------------------------------------- ----------
服务器在TCP端口5001上侦听
TCP协议窗口大小:85.3 KByte(默认)
-------------------------------------------------- ----------
客户端
C:\ Users \ Chris \ Desktop \ iperf-2.0.5-2-win32> iperf -c 192.168.5.5 -r
-------------------------------------------------- ----------
服务器在TCP端口5001上侦听
TCP协议视窗大小:64.0 KByte(预设)
-------------------------------------------------- ----------
-------------------------------------------------- ----------
客户端连接到192.168.5.5,TCP端口5001
TCP协议视窗大小:64.0 KByte(预设)
-------------------------------------------------- ----------
[ 4] 本地192.168.5.237端口54538与192.168.5.5端口5001连接
[ID]间隔 Transfer 带宽
[ 4] 0.0-10.0秒 103 MBytes 86.3 Mbits/sec
[ 4] 本地192.168.5.237端口5001与192.168.5.5端口39426连接
[ 4] 0.0-10.0秒 110 MBytes 92.5 Mbits/sec
注意创建了两个连接,每个方向一个。服务器端会生成类似的报告。
同时双向带宽测量(-d)–特定于客户
同时双向带宽测量参数–d是特定于客户端的,并强制同时进行双向数据传输测试。可以将其视为服务器和客户端之间的全双工测试。此测试对于提供同步下载/上传速度的租用WAN链接非常有用。
我们使用–l 5M参数在Linux服务器和Windows 7客户端之间对其进行了测试,以增加发送/接收缓冲区并通过100Mbit链接测试输出速度。
服务器端
[root @ Nightsky bin]# iperf -s -l 5M
-------------------------------------------------- ----------
服务器在TCP端口5001上侦听
TCP协议窗口大小:85.3 KByte(默认)
-------------------------------------------------- ----------
客户端
C:\ Users \ Chris \ Desktop \ iperf-2.0.5-2-win32> iperf -c 192.168.5.5 -d -l 5M
-------------------------------------------------- ----------
服务器在TCP端口5001上侦听
TCP协议视窗大小:64.0 KByte(预设)
-------------------------------------------------- ----------
-------------------------------------------------- ----------
客户端连接到192.168.5.5,TCP端口5001
TCP协议视窗大小:64.0 KByte(预设)
-------------------------------------------------- ----------
[ 4]与192.168.5.5端口5001连接的本地192.168.5.237端口52671
[ 5]与192.168.5.5端口39430连接的本地192.168.5.237端口5001
[ID]间隔 转让 带宽
[ 5] 0.0-10.3秒 90.0 MBytes 73.2 Mbits/sec
[ 4] 0.0-10.7秒 115 MBytes 90.0 Mbits/sec
我们可以看到两个会议[4 & 5]在我们两个端点之间创建以及它们的结果–平均 81.6Mbps ((73.2 + 90)/ 2),略低于我们对我们的预期 100Mbps的 测试链接。
TCP协议窗口大小(-w)–服务器/客户端参数
可以使用–w参数设置TCP窗口大小。 TCP协议窗口大小表示可以从服务器发送而无需接收者要求确认的数据量。典型值在2到65,535字节之间。默认值为64KB。
防火墙已经深入探讨了TCP窗口大小的概念。读者可以参考我们的 TCP协议窗口s大小 文章以了解其重要性以及它如何帮助增加延迟增加的链接(例如卫星链接)的吞吐量。
服务器端
在Linux上,当指定TCP窗口大小时,内核会分配两倍的请求。具有讽刺意味的是,Windows操作系统允许1MB甚至5MB的窗口大小而没有任何问题。
[root @ Nightsky bin]# iperf -s -l 5M -w 4000
-------------------------------------------------- ----------
服务器在TCP端口5001上侦听
TCP协议窗口大小:7.81 KB(警告:请求的3.91 KB)
-------------------------------------------------- ----------
客户端
C:\ Users \ Chris \ Desktop \ iperf-2.0.5-2-win32> iperf -c 192.168.5.5 -l 5M -w 4000
-------------------------------------------------- ----------
客户端连接到192.168.5.5,TCP端口5001
TCP协议视窗大小:3.91 KB
-------------------------------------------------- ----------
[ 3]本地192.168.5.237端口54172与192.168.5.5端口5001连接
[ID]间隔 转让 带宽
[ 3] 0.0-11.5秒 55.0 MBytes 40.1 Mbits/sec
用一个 4KB TCP协议窗口 大小只给了我们 40.1Mbps的 -我们潜在的100Mbps链路的一半。当我们增加到 64KB,我们设法挤出 93.9Mbps的 吞吐量!
TCP协议最大段大小(MSS)(-M)-服务器/客户端参数
最大段大小(mss)是计算机可以在单个无碎片的TCP段中支持的最大数据量(以字节为单位)。有兴趣了解mss重要性及其运作方式的读者可以参考我们的 TCP协议标头分析文章.
如果将MSS设置得太低或太高,则可能会极大地影响网络性能,尤其是在WAN链接上。
以下是各种网络的一些默认值:
以太网–局域网:1500字节
PPPoE ADSL:1492字节
拨号:576字节
服务器端
[root @ Nightsky bin]# iperf -s
-------------------------------------------------- ----------
服务器在TCP端口5001上侦听
TCP协议窗口大小:85.3 KByte(默认)
-------------------------------------------------- ----------
客户端
C:\ Users \ Chris \ Desktop \ iperf-2.0.5-2-win32> iperf -c 192.168.5.5 -M 1350
警告:尝试将TCP最大段大小设置为1350,但得到1281
-------------------------------------------------- ----------
客户端连接到192.168.5.5,TCP端口5001
TCP协议视窗大小:64.0 KByte(预设)
-------------------------------------------------- ----------
[ 3]本地192.168.5.237端口54877与192.168.5.5端口5001连接
[ID]间隔 转让 带宽
[ 3] 0.0-10.0秒 105 MBytes 88.2 Mbits/sec伊珀尔夫帮助–(h)
尽管我们涵盖了大多数Iperf支持的参数,但仍有更多读者可以发现并使用它。使用 iperf –h 命令将显示所有可用选项:
C:\ Users \ Chris \ Desktop \ iperf-2.0.5-2-win32> iperf -H
用法: iperf [-s | -c主机] [选项]
iperf [-h |-帮助] [-v |-版本]
客户端服务器:
-F, --format [kmKM] 报告格式:千位,兆位,千字节,兆字节
-一世, --interval # 定期带宽报告之间的秒数
-l, --len #[KM] 读取或写入缓冲区的长度(默认为8 KB)
-m, --print_mss 打印TCP最大段大小(MTU-TCP / IP标头)
-o, --output 将报告或错误消息输出到此指定文件
-p, --port # 侦听/连接到的服务器端口
-u, --udp 使用UDP而不是TCP
-w, --window #[KM] TCP窗口大小(套接字缓冲区大小)
-B, --bind 绑定到接口或多播地址
-C, --compatibility 与旧版本一起使用不会发送额外的消息
-M, --mss # 设置TCP最大段大小(MTU-40字节)
-N, --nodelay 设置TCP无延迟,禁用Nagle算法
-V, --IPv6Version 将域设置为IPv6
特定于服务器:
-s, --server run in server mode
-U, --single_udp 以单线程UDP模式运行
-D, --daemon 将服务器作为守护程序运行
客户特定:
-b,--bandwidth#[KM] 对于UDP,以比特/秒为单位发送的带宽
(默认为1 Mbit / sec,表示-u)
-c, --client 在客户端模式下运行,连接到
-d, --dualtest 同时进行双向测试
-n, --num #[KM] 要传输的字节数(而不是-t)
-r, --tradeoff 单独进行双向测试
-t, --time # 传输时间(以秒为单位)(默认为10秒)
-F, --fileinput 输入要从文件传输的数据
-I, --stdin 输入要从标准输入传输的数据
-L, --listenport # 端口以接收双向测试
-P, --parallel # 要运行的并行客户端线程数
-T, --ttl # 生存时间,用于多播(默认1)
-Z,-linux-拥塞 设置TCP拥塞控制算法(仅Linux)
在本文中,我们展示了 IT管理员, IT经理 和 网络工程师 可以使用 知识产权 正确测试他们的 网络吞吐量, 网络延迟, 丢包和链路可靠性.