拨号和接入 : 异步连接

使用 Test TCP (TTCP) 测试吞吐量

2016 年 10 月 24 日 - 机器翻译
其他版本: PDFpdf | 英语 (2015 年 8 月 22 日) | 反馈


目录


简介

您可以使用 Test TCP 程序 (TTCP) 测量通过 IP 路径的 TCP 吞吐量。为了使用它,请启动在路径的一端的接收方,然后启动在另一侧的发射器。发射端将指定数量的 TCP 数据包发送到接收端。测试结束时,两端显示已传输的字节数以及数据包在两端之间传输所用的时间。然后可以使用这些图来计算链路上的实际吞吐量。有关 TTCP 的一般信息,请参阅使用 TTCP 的网络性能测试leavingcisco.com

TTCP 程序对于确定特定广域网或调制解调器连接的实际比特率很有效。然而,您也可以使用此功能来测试任何两个有 IP 连接的设备之间的连接速度。

开始使用前

规则

有关文档规则的详细信息,请参阅 Cisco 技术提示规则

先决条件

本文档的读者应具备以下方面的知识:

  • TTCP要求Cisco IOS�软件版本11.2或更加高和特性组IP Plus (是镜像)或服务提供商(p-镜像)。

    注意: ttcp 命令是隐藏、不支持的特权模式命令。因此,其可用性在各个 Cisco IOS 软件版本中可能会有变化,在某些版本中可能不存在。例如,某些平台要求 Cisco IOS 企业功能集来执行此活动。

使用的组件

本文档不限于特定的软件和硬件版本。

为 TTCP 会话做准备

  • 确保测试涉及的两个设备之间有 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 测试模式可高度压缩,任何数据压缩都会使调制解调器链路实际吞吐量的测量产生偏差。

执行下行链路测试(从路由器到 Windows PC)

  • 在 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 重新传输、速度转换和再培训等)。

执行上行链路测试(从 Windows PC 到路由器)

然后执行上行链路吞吐量测试。这与下行链路测试基本相同,只不过 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-Putterleavingcisco.com 在接入服务器后面的 Web 服务器上安装此工具,并让 Windows PC 客户端使用浏览器调用 Java 工具。然后可以使用此工具快速确定调制解调器连接上的数据速率。该调制解调器吞吐量小程序是一个开源工具,Cisco 技术支持中心不支持该工具。有关详细的安装和操作说明,请参阅此工具随附的自述文件。


相关信息


Document ID: 10340