如何监视TCP连接的cwnd和sstresh值?

时间:2011-07-09 04:29:11

标签: linux tcp

我希望在通过套接字连接发送或接收数据包时确定这些值。有没有现成的工具呢?

4 个答案:

答案 0 :(得分:10)

ss实用程序将为套接字生成此输出:

# ss -i
State      Recv-Q Send-Q      Local Address:Port          Peer Address:Port   
ESTAB      0      2054000          1.2.3.4:34069          1.2.3.5:ssh     
     htcp wscale:11,11 rto:247 rtt:47/0.75 ato:40 cwnd:1542 ssthresh:742 send 380.1Mbps rcv_rtt:14 rcv_space:64240

您可以从中检查cwnd / ssthresh值。

答案 1 :(得分:8)

我不同意尼莫给出的答案。 Wireshark(以及dumpcap,tcpdump)无法测量/记录cwnd和ssthresh,因为它们不是tcp数据报中的字段,而只是作为内核结构驻留在内核中的值。拥塞控制数据不通过线路传输,只有流量控制数据。

要监控这些值,请执行get_info并定期对数据进行采样,或者查看tcp_probe内核模块(请参阅:http://www.linuxfoundation.org/collaborate/workgroups/networking/tcptesting

更新:我已经创建了一个tcp_probe模块的修补版本,可以用来监视cwnd和ssthread,参见https://github.com/Dynalon/tcp_probe_fixed

答案 2 :(得分:0)

根据“监视器”的含义,Wireshark可能会有所帮助。

另见/proc/net/tcp documentation。 (不,我没有真正遵循它;你可能需要深入了解内核资源以理解它......)

答案 3 :(得分:0)

我找到了一个可以监控这些值的工具。 http://www.umic-mesh.net/downloads/flowgrind.html