在Linux下的TCP通讯,如果能通过工具实时的获取某TCP通讯的RTT,就能比较清楚得知道当前网络TCP通讯的拥塞程度,在一定程度上对网络拥塞做出量化数据,记录历史日志。问题是,有什么工具或办法直接拿到RTT数据呢?
------------------摘自某个被TCP通讯中的timeout搞得头痛的码农
什么是TCP的RTT?这个还是网上搜索科普吧。
这里将范围缩小,我们讨论的目标是如何对一个正在运行的socket(TCP)通讯应用,做一个RTT的Benchmark。如何测试硬件系统和操作系统本身带入的RTT延迟,有很多现场的软件工具,比如开源工具tcpping脚本(请自行搜索)。
请出解决办法的命令行工具ss, 详细用法如下:
wll@linux:~$ ss -ti 'src 192.168.0.209:12131 dst 192.168.0.224:20007'
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 192.168.0.209:12131 192.168.0.224:20007
cubic rto:204 rtt:0.858/0.46 ato:40 mss:1460 cwnd:10 send 136.1Mbps pacing_rate 272.0Mbps rcv_space:29200
看见RTT的结果了,它采集的是从src到dst的TCP的RTT
rtt:0.858/0.46
注意,在程序运行中的不同时刻,运用ss采集的RTT是在不断变化的,我们需要的见到是比较均匀稳定的一个范围。