您可以使用 Test TCP 程序 (TTCP) 测量通过 IP 路径的 TCP 吞吐量。要使用它,请在路径的一侧启动接收器,然后在另一侧启动发射器。发射端将指定数量的 TCP 数据包发送到接收端。测试结束时,两端显示已传输的字节数以及数据包在两端之间传输所用的时间。然后可以使用这些图来计算链路上的实际吞吐量。有关 TTCP 的一般信息,请参阅使用 TTCP 的网络性能测试 。
TTCP 程序对于确定特定广域网或调制解调器连接的实际比特率很有效。然而,您也可以使用此功能来测试任何两个有 IP 连接的设备之间的连接速度。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
本文档的读者应具备以下方面的知识:
TTCP 要求 Cisco IOS® 软件版本 11.2 或更高版本,以及功能集 IP Plus (is- images) 或服务提供商 (p- images)。
注意: tcp命令是隐藏的、不受支持的特权模式命令。因此,其可用性在各个 Cisco IOS 软件版本中可能会有变化,在某些版本中可能不存在。例如,某些平台要求 Cisco IOS 企业功能集来执行此活动。
本文档不限于特定的软件和硬件版本。
确保测试涉及的两个设备之间有 IP 连接。
如有必要,下载并安装非 IOS 客户端的 TTCP 软件。
在如下所示的示例中,我们尝试确定 Microsoft Windows PC 与 AS5300 接入服务器之间的调制解调器连接的速度。尽管此处包含的许多主题和说明是针对调制解调器连接的,但 TTCP 程序可以在任何两个设备之间使用。
请使用 show modem operational-status 命令(用于调制解调器链路)检查连接参数。对于其他 LAN 或广域网情况,则无需执行该步骤。
customer-dialin-sj> show modem operational-status 1/51 Parameter #1 Connect Protocol: LAP-M Parameter #2 Compression: None ... !--- Output omitted ... Parameter #8 Connected Standard: V.90 Parameter #9 TX,RX Bit Rate: 45333,24000
该编辑过的输出显示客户端以 45333 bps 的下行链路速率和 24000 bps 的上行链路速率连接在 V.90 中。客户端调制解调器上禁用了数据压缩。由于 TTCP 测试模式可高度压缩,任何数据压缩都会使调制解调器链路实际吞吐量的测量产生偏差。
在 PC 上启动 ttcpw 程序(在 DOS 窗口中),作为接收器运行。请参阅 Windows TTCP 软件随附的自述文件,查看相应语法。
C:\PROGRA~1\TTCPW> ttcpw -r -s ttcp-r: buflen=8192, nbuf=2048, align=16384/0, port=5001 tcp ttcp-r: socket
在AS5300上启动TTCP发送器(发射器)。将大多数设置保留为默认值,但要传输的缓冲区数除外。缓冲区的默认数量为 2048,因此 TTCP 测试需要很长时间来完成。通过减少缓冲区数量,我们可以在合理的时间内完成测试。
在如下所示的示例中,我们尝试确定 Microsoft Windows PC 与 AS5300 接入服务器之间的调制解调器连接的速度。尽管此处包含的许多主题和说明是针对调制解调器连接的,但 TTCP 程序可以在任何两个设备之间使用。
注意:在开始TTCP测试之前,尝试获取调制解调器(端口)运行状态的快照,如上所述。
customer-dialin-sj>ttcp transmit or receive [receive]: transmit !--- The AS5300 is the ttcp transmitter Target IP address: 10.1.1.52 ! -- Remote device (the Windows PC) IP address perform tcp half close [n]: use tcp driver [n]: send buflen [8192]: send nbuf [2048]: 50 !--- Number of buffers to transmit is now set to 50 (default is 2048 buffers) bufalign [16384]: bufoffset [0]: port [5001]: sinkmode [y]: buffering on writes [y]: show tcp information at end [n]: ttcp-t: buflen=8192, nbuf=50, align=16384/0, port=5001 tcp ->10.1.1.52 ttcp-t: connect (mss 1460, sndwnd 4096, rcvwnd 4128)
这会使 Cisco IOS TTCP 建立与 TTCPW 的 TCP 连接(在 Windows 计算机上)。
当 PC 收到 TTCP 会话请求时,TTCPW 会显示一条消息,指明 PC 已接受来自路由器 IP 地址的 TTCP 会话:
ttcp-r: accept from 10.1.1.1
当 TTCP 发送器发送完所有数据之后,两端都将打印吞吐量统计信息并终止。在本示例中,IOS TTCP 发送器显示:
ttcp-t: buflen=8192, nbuf=50, align=16384/0, port=5001 tcp -> 10.1.1.52 ttcp-t: connect (mss 1460, sndwnd 4096, rcvwnd 4128) ttcp-t: 409600 bytes in 84544 ms (84.544 real seconds) (~3 kB/s) +++ ttcp-t: 50 I/O calls ttcp-t: 0 sleeps (0 ms total) (0 ms average)
另一方面,PC TTCPW 接收器显示:
ttcp-r: 409600 bytes in 8 4.94 seconds = 4.71 KB/sec +++ ttcp-r: 79 I/O calls, msec/call = 1101.02, calls/sec =0.93
这时,您可以对调制解调器或端口运行状态拍摄另一张快照。该信息在分析过程中很有用,例如,检查调制解调器连接是否出现再培训或速度转换。
由于通常使用 kbps(千位每秒,或 1000 位每秒)而不是 kbps(千字节每秒,或 1024 字节每秒)来评估连接速度,所以必须使用 TTCP 产生的信息来计算比特率(单位为 kbps)。 用接收到的字节数和传输时间来计算连接的实际比特率。
通过将字节数传换成位,然后除以传输时间,来计算比特率。在本示例中,Windows PC 在 84.94 秒内接收了 409600 个字节。我们可以这样计算比特率:(409600 字节 * 8 位每字节)除以 84.94 秒 = 38577 bps 或 38.577 kbps。
注意:接收方结果稍微更准确,因为发射器可能认为它在执行最后一次写入后完成 — 即数据实际通过链路之前。
相对于 45333 bps 的名义链路速度(根据 show modem operational-status 命令来确定),这只是 85% 的效率。考虑到调制解调器 (LAPM) 的链路接入过程、PPP、IP 和 TCP 报头开销,这样的效率是正常的。如果这些结果与您的预期有很大不同,请分析运行状态、调制解调器日志,以及客户端调制解调器统计信息(如有必要),以查看可能影响性能的原因(例如 EC 重新传输、速度转换和再培训等)。
然后执行上行链路吞吐量测试。这与下行链路测试基本相同,只不过 Cisco IOS TTCP 是接收器而 Windows TTCPW 是发射器。首先,请使用默认参数将路由器作为接收器进行设置:
customer-dialin-sj>ttcp transmit or receive [receive]: perform tcp half close [n]: use tcp driver [n]: receive buflen [8192]: bufalign [16384]: bufoffset [0]: port [5001]: sinkmode [y]: rcvwndsize [4128]: delayed ACK [y]: show tcp information at end [n]: ttcp-r: buflen=8192, align=16384/0, port=5001 rcvwndsize=4128, delayedack=yes tcp
将 PC 作为 TTCP 发射器进行激活,并指定路由器的 IP 地址。请参阅 Windows TTCP 软件随附的自述文件,查看相应语法:
C:\PROGRA~1\ TTCPW>ttcpw -t -s -n 50 10.1.1.1 ttcp-t: buflen=8192, nbuf=50, align=16384/0, port=5001 tcp -> 10.1.1.1 ttcp-t: socket ttcp-t: connect
IOS 接收器报告以下结果:
ttcp-r: accept from 10.1.1.52 (mss 1460, sndwnd 4096, rcvwnd 4128) ttcp-r: 409600 bytes in 23216 ms (23.216 real seconds) (~16kb/s) +++ ttcp-r: 280 I/O calls ttcp-r: 0 sleeps (0 ms total) (0 ms average)
该结果显示,上行链路吞吐量为 141144 bps,或者说相对于 24 kbps 的名义上行链路速率,压缩率接近 6:1。考虑到硬件压缩已禁用(我们已根据 show modem operational-status 命令进行确定),这是一个有趣的结果。 但是,请用 IOS 命令 show compress 检查是否正在使用任何软件压缩。
以下是使用 TTCP 测量 IP 路径吞吐量的一些通用指导原则:
要产生有意义的结果,运行 TTCP 的主机应该有相对于链路速度的大量 CPU 电源。如果链路为 45 kbps 并且主机为空闲的 AS5300 和 700 MHz PC,以上规则适用。如果链路为 100baseT,并且其中一台主机是 Cisco 2600 路由器,以上规则便不适用。
Cisco IOS 对源自路由器的数据和通过路由器传输的数据的处理方式有所不同。在上面的示例中,虽然 Microsoft 点对点压缩 (MPPC) 在测试的链路上经过协商,但路由器传输的数据未使用软件压缩,而 PC 传输的数据使用了软件压缩。这就是上行链路吞吐量明显大于下行链路吞吐量的原因。对于高带宽链路的性能测试,应该始终通过路由器进行测试。
对于有高带宽 * 延迟结果的 IP 路径,用足够大小的 TCP 窗口充满管道十分重要。对于调制解调器链路的情况,默认的 4 KB 窗口大小通常就足够了。您可以使用 ip tcp window-size 命令增加 IOS TCP 窗口大小。请参阅非 IOS 系统的相应文档。
测试调制解调器链路吞吐量的另一种简单的方法是使用开源工具 Through-Putter 。 在接入服务器后面的 Web 服务器上安装此工具,并让 Windows PC 客户端使用浏览器调用 Java 工具。然后可以使用此工具快速确定调制解调器连接上的数据速率。该调制解调器吞吐量小程序是一个开源工具,Cisco 技术支持中心不支持该工具。有关详细的安装和操作说明,请参阅此工具随附的自述文件。
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
09-Sep-2005 |
初始版本 |