Cisco经典文档

当前位置: 首页Cisco经典文档使用 Test TCP (TTCP) 测试吞吐量


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

            

 

                                                       文档下载:

切换至英文原版


内容

前言
准备工作
      惯例
      前提条件
      使用的组件
为 TTCP 会话做准备
执行下行链路测试(从路由器到 Windows PC)
      获得结果
      分析结果
执行上行链路测试(从 Windows PC 到路由器)
一般准则


前言

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

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

准备工作

惯例

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

前提条件

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

  • TTCP 要求 Cisco IOS® 软件版本 11.2 或更高版本,以及功能集 IP Plus (is- images) 或服务提供商 (p- images)。

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

  • 客户端的 TTCP 软件可从以下网站上获取:http://renoir.csc.ncsu.edu/ttcp//images/exit.gif 对于 Windows 客户端下载 ttcpw.zip/images/exit.gif

使用的组件

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

为 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-Putter/images/exit.gif 在接入服务器后面的 Web 服务器上安装此工具,并让 Windows PC 客户端使用浏览器调用 Java 工具。 然后可以使用此工具快速确定调制解调器连接上的数据速率。 该调制解调器吞吐量小程序是一个开源工具,Cisco 技术支持中心不支持该工具。 有关详细的安装和操作说明,请参阅此工具随附的自述文件。


 

 

注:本人能力有限,如遇不足之处,还请指正!

China-CCIE  QQ交流群:106155045   点击与作者QQ交谈