WAN 链路性能测试方法

Cho*_*er3 11 networking performance sftp

我们在相距约 200 英里的位置之间有一对新的不同路由的 1Gbps 以太网链路。“客户端”是一台相当强大的新机器(HP DL380 G6、双 E56xx Xeon、48GB DDR3、R1 对 300GB 10krpm SAS 磁盘、W2K8R2-x64),“服务器”也是一台足够好的机器(HP BL460c G6 、双 E55xx Xeon、72GB、R1 对 146GB 10krpm SAS 磁盘、双端口 Emulex 4Gbps FC HBA 链接到双 Cisco MDS9509,然后连接到带有 128 个 450GB 15krpm FC 磁盘的专用 HP EVA 8400,RHEL63)。

从客户端使用 SFTP,我们只看到使用大型 (>2GB) 文件的吞吐量约为 40Kbps。我们已经执行了服务器到“其他本地服务器”的测试,通过本地交换机(Cat 6509s)看到大约 500Mbps,我们将在客户端做同样的事情,但这需要一天左右的时间。

您会使用哪些其他测试方法向链接提供商证明问题出在他们身上?

Kyl*_*ndt 10

调整大象:
这可能需要调整,但可能不是 pQd 所说的问题。这种链接被称为“长而粗的管道”或大象(参见RFC 1072)。因为这是一个超长的千兆管道(在这种情况下,距离实际上是时间/延迟),所以 tcp 接收窗口需要很大(有关图片,请参见 TCP/IP Illustrated Volume 1, TCP Extensions Section)。

要确定接收窗口需要是什么,您可以计算带宽延迟乘积:

Bandwidth * Delay = Product
Run Code Online (Sandbox Code Playgroud)

如果有 10 毫秒的延迟,此计算器估计您需要大约 1.2 兆字节的接收窗口。我们可以用上面的公式自己计算:

echo $(( (1000000.00/.01)/8  )) 
12500000
Run Code Online (Sandbox Code Playgroud)

因此,您可能想要运行数据包转储以查看tcp 窗口缩放(允许更大窗口的 TCP 扩展)是否正在发生,以便在您找出大问题后进行调整。

Window Bound:
如果这是问题所在,即您的窗口大小受限制而没有缩放,如果没有 Window 缩放到位,并且无论管道大小如何,都有大约 200 毫秒的延迟:

Throughput = Recieve Window/Round Trip Time
Run Code Online (Sandbox Code Playgroud)

所以:

echo $(( 65536/.2 ))
327680 #Bytes/second
Run Code Online (Sandbox Code Playgroud)

为了获得您所看到的结果,您只需要解决延迟问题,即:

RTT = RWIN/Throughput
Run Code Online (Sandbox Code Playgroud)

所以(对于 40 kBytes/s):

echo $(( 65536.0/40000.0 )) 
1.63 #Seconds of Latency
Run Code Online (Sandbox Code Playgroud)

(请检查我的数学,这些当然不包括所有协议/头开销)


pQd*_*pQd 6

40kbps 非常低 [直到我怀疑有故障的媒体转换器/双工不匹配 [但你有千兆位,所以没有半双工的地方!] 等]。必须有数据包丢失或非常高的抖动。

iperf 是我想到的第一个测量可用吞吐量的工具。在一侧跑

iperf -s 
Run Code Online (Sandbox Code Playgroud)

另一方面:

iperf -t 60 -c 10.11.12.13
Run Code Online (Sandbox Code Playgroud)

然后您可以交换客户端/服务器角色,使用 -d 进行双工等。在测试开始之前在两台机器之间运行 mtr 并查看您在未使用的链接上有什么延迟/数据包丢失,以及它们在数据传输过程中如何变化。

您希望看到:非常小的抖动和没有数据包丢失,直到链路饱和到其容量的 90% 左右。

iperf for *nixwin,请在此处此处阅读有关它的信息。

*nixwin 的mtr 。