网络基本功(十五):细说网络性能监测与实例(上)

    网络路径性能检测主要包括三方面的内容:带宽测量能够获知网络的硬件特性,如网络的最大容量,吞吐量测量能够获得网络实际可提供的最大容量,数据流测量能够了解真实占用的网络容量。

    本文介绍在评估网络性能是否合理时,需要收集的数据及收集方式。涉及工具包括:ping, pathchar, bing, ttcp, netperf, iperf, netstat。

    带宽测量:

    ping

    ping这一工具返回的时间,虽然通常被描述为传输延时,实际上是发送,传输,队列延时之和。中,我们通过ping来粗略计算带宽。这一过程可通过如下方式改进:首先计算链路近端的路径行为,然后计算远端路径,然后用两者差异来估算链路带宽。

    这一过程需要四次使用ping。首先,用两个不同大小报文ping近端链路。减掉传输大报文中额外数据的传输时间以外,时间差可估算传输以及队列延时。接下来,用同样两个报文ping远端链路。再次用大报文和小报文的时间差来估算开销。最后,用两次差值的差值就是在最后一段链路中传输额外数据的时间值。这是一个往返时间,除以2就是额外数据在单向链路传输所用时间。带宽则是额外数据总量除以单向传输时间。

    下表是第二跳和第三跳的时间值,报文大小为100和1100字节。

    下表显示了带宽计算结果,用time difference除以2,用8000bit除以这个值,再乘1000(毫秒转换为秒)。结果是bps转换为Mbps。

    将上述过程自动话完成的一个工具是pathchar。pathchar在路径的一端即能检测各链路的带宽。方法与之前描述的ping相类似,但是pathchar使用各种大小不一的报文。如下例所示:

    pathchar的运行过程中,首先显示的信息描述探测如何进行。从第三行输出开始,可看到pathchar使用从64到1500字节的45中不同大小报文。对于每一跳使用32种不同报文组合进行测试。因此,共8跳生成了11,520个测试报文加上相应回复信息。

    显示中给出了带宽和延时。pathchar也包括了队列延时信息(如本例中5和6)。如上述信息,pathchar并不总是能成功估算出带宽(如链路4和7)或是延时(如链路1)。

    在pathchar运行过程中,每发送一个报文就启动一次倒计时:显示内容如下所示:

    1指示跳数并且随着路径上后续跳数而增加。下一个数字是倒计时值,给出这一链路剩余的探测组数。第三个值是当前发送报文大小。第二个和第三个值改变都非常迅速。倒数第二个值是目前为止丢弃报文数,最后一个是该链路的平均往返时间。

    当一条的探测完成时,这一行内容被带宽,传输延时,往返时间所取代。pathchar使用观测到的最小延时来改进带宽估算值。

    bing

    pathchar的一个替代工具是bing。pathchar估算的是一条路径上各链路的带宽,而bing用来测量点到点的带宽。通常,如果你不知道路径上的各条链路,需要首先执行traceroute命令。之后可以运行bing来指定链路的近端和远端。下例显示了第三跳的带宽:

    输出从地址和报文大小信息开始,之后是探测pair。接下来,返回往返时间和丢失数据。最后,返回一些吞吐量的估测值。

    吞吐量测量:

    吞吐量不够的原因不仅在于硬件不足,还有可能是网络设计架构的问题。例如,广播域设置得太大,则即使硬件够磅也会造成问题。解决方案是重构网络,在充分理解数据流模式后,将这类域隔离开或是分段。

    一个比较简单粗放的方式是用FTP。用FTP来传输一份文件并且看一下它report的数据。需要将结果转换成比特率,例如,这是文件传输的最后一行:

    将1,294,522字节乘8转换成bit之后再除以时间,1.44秒。 结果为7,191,789 bps。

    这种方法的不足在于磁盘访问时间可能对结果造成影响。如果需要提高精度则需要使用一些工具。

    ttcp

    运行这一程序首先需要在远端设备运行server,通常用-r和-s选项。之后运行client,用-t和-s选项,以及主机名或地址。数据从client端发送至server端,测量性能之后,在各端返回结果,之后终止client端和server端。例如,server端如下所示:

    该程序报告中显示了信息传输总量,标识了连接的建立,并且给出了结果,包括raw data,throughput,I/O call信息,执行时间。最有用的信息应该是transfer rate,892.71 KB/sec (or 893.26 KB/sec)。

    这一数据反映了数据的传输速率,而不是链路的容量。将这一数据转化成带宽可能是有问题的,因为实际上传输了比这一值更多的比特数。这一程序显示18.35秒传送了16,777,216字节,但是这仅仅是数据。以太网报文封装还包括TCP,IP,以太网报文头,估算容量时,需要把这些值加上去。

    吞吐量低通常意味着拥塞,但也并不总是如此。吞吐量也会取决于配置问题,如连接的TCP窗口大小。如果窗口大小不足,会严重影响到性能。

    (未完待续)

    Network Troubleshooting Tools