PACATTCP学习笔记一.PACATTCP是什么(以下内容来自PACATTCP官方网站英文翻译)TTCP,即Test TCP,是命令行下执行的带宽测试软件,用于测试两个系统间TCP和UDP的性能表现。
二.PACATTCP运行环境PCATTCP是Win32命令行程序,必须运行于命令行或者是批处理文件,现在也有了UNIX和LINUX下的运行程序。
PCATTCP运行需要两个Windows平台,或者一个Windows平台与一个Linux平台,其中一个作为接收端,一个作为发送端。
三.PACATTCP使用1.开启接收端打开命令行,切换到PACATTCP所在的目录,执行:pcattcp –r ,即可启动PCATTCP接收端。
2.开启发送端打开命令行,切换到PACATTCP所在的目录,执行:pcattcp –t 接收端IP ,即可启动与接收端的带宽测试连接。
四.应用举例1.IPv4环境下应用接收端:C:\Users\xiaoming>PCATTCP.exe -r -f M -cPCAUSA Test TCP Utility V2.01.01.14 (IPv4/IPv6)IP Version : IPv4Started TCP Receive Test 0...TCP Receive TestLocal Host : xiaoming-PC**************Listening...: On TCPv4 0.0.0.0:5001Accept : TCPv4 0.0.0.0:5001 <- 172.22.101.3:54974Buffer Size : 8192; Alignment: 16384/0Receive Mode: Sinking (discarding) DataStatistics : TCPv4 0.0.0.0:5001 <- 172.22.101.3:549744274257920 bytes in 80.152 real seconds = 50.86 MB/sec +++numCalls: 525749; msec/call: 0.156; calls/sec: 6559.372参数解释:-r 启动接收端-f M 以M为单位显示带宽-c 持续接受,直到手动终止(CTRL + C)文中标红位置为带宽测试结果发送端:C:\Users\xiaoming>PCATTCP.exe -t -f M -c 172.22.101.3PCAUSA Test TCP Utility V2.01.01.14 (IPv4/IPv6)IP Version : IPv4Started TCP Transmit Test 0...TCP Transmit TestTransmit : TCPv4 0.0.0.0 -> 172.22.101.3:5001Buffer Size : 8192; Alignment: 16384/0TCP_NODELAY : DISABLED (0)Connect : Connected to 172.22.101.3:5001Send Mode : Sending Pattern CONTINUOUSStatistics : TCPv4 0.0.0.0 -> 172.22.101.3:500116777216 bytes in 0.258 real seconds = 62.06 MB/sec +++numCalls: 2048; msec/call: 0.129; calls/sec: 7943.748参数解释:-t 开启发送端-f M 以M为单位显示带宽-c 持续发送数据,知道手动终止(CTRL + C)文中标红位置为带宽测试结果五.PCATTCP在Linux下的应用相比与在Windows下的应用,PACATTCP在Linux下功能就缩减了很多,参数也少了很多。
如PCATTCP在Linux下不支持IPv6协议,不支持连续发送等。
PCATTCP在Linux下启动,也同Windows下启动差不多,首先在接收端启动程序:[root@RedHat-XM ~]# ttcp -rttcp-r: buflen=8192, nbuf=2048, align=16384/0, port=5001 tcpttcp-r: socketPCATTCP在Linux下的运行程序名为ttcp,其他参数与Windows下基本相同。
在发送端启动程序:[root@RedHat-XM pcattcp]# ttcp -t -f M 172.22.101.8ttcp-t: buflen=8192, nbuf=2048, align=16384/0, port=5001 tcp -> 172.22.101.8ttcp-t: socketttcp-t: nodelayttcp-t: connectttcp-t: 16777216 bytes in 0.04 real seconds = 374.31 MB/sec +++ttcp-t: 2048 I/O calls, msec/call = 0.02, calls/sec = 47912.04ttcp-t: 0.0user 0.0sys 0:00real 75% 0i+0d 0maxrss 0+3pf 0+3csw由以上可以看出,带宽为374.31 MB/sec(本机)。
PCATTCP在Linux下不能持续发送,不能对设备造成持续压力。
在实际应用中,可以在Linux 下编写shell脚本,来实现对于接收端的持续压力。
#!/bin/shwhile [ 1 ]dottcp -t -f M 172.22.101.3done六.PCATTCP所有参数解释Windows下:C:\Users\xiaoming>PCATTCP.exe -hPCAUSA Test TCP Utility V2.01.01.14 (IPv4/IPv6)Usage: pcattcp -t [-4|-6] [-options] host [ < in ]pcattcp -r [-4|-6] [-options > out]Common options:-4 use IPv4 (default)(使用IPv4协议)-6 use IPv6(使用IPv6协议)-l ## length of bufs read from or written to network (default 8192)(缓冲大小,默认8192)-u use UDP instead of TCP(使用UDP协议)-p ## port number to send to or listen at (default 5001)(发送或监听的端口,默认5001 Can specify multiple sequential ports two ways:(可以以两种形式指定多个端口)-p #first-#last-p #first+#additional-s toggle sinkmode (enabled by default)sinkmode enabled:-t: source (transmit) fabricated pattern(发送端)-r: sink (discard) all received data(接收端)sinkmode disabled:-t: reads data to be transmitted from stdin-r: writes received data to stdout-A align the start of buffers to this modulus (default 16384)(指定缓冲区的开始系数)-O start buffers at this offset from the modulus (default 0) (指定缓冲区的偏移系数)-v verbose: print more statistics(显示更多统计数据)-d set SO_DEBUG socket option(开启debug模式)-b ## set socket buffer size (if supported)(设置socket缓冲区大小)-f X format for rate: k,K = kilo{bit,byte}; m,M = mega; g,G = giga(设置带宽的显示格式,K,M或G)-c -t: send continuously(发送端持续发送)-r: accept multiple connections sequentially(接收端持续接受)-a bind to local host interface IP address (绑定本地网卡地址)Options specific to -t:(以下参数只针对于发送端)-n ## number of source bufs written to network (default 2048)(向网络写入源缓冲内容的序号)-D don't buffer TCP writes (sets TCP_NODELAY socket option)(不缓冲TCP写入内容)-w ## milliseconds of delay before each write (default 0)(每次写入前的延时)-R ## desired transmit data rate in bytes/second(以bytes/second显示速率)Options specific to -r:(以下参数只针对于接收端)-M concurrent TCP/UDP multithreaded receiver(开启TCP/UDP的并发接收)-B for -s, only output full blocks as specified by -l (for TAR)-T "touch": access each byte as it's readLinux下参数比Windows下少,已有的参数可以参照Windows下参数解释表。