est*_*est 5 kernel tcp iproute
问题背景:我试图总结总带宽,但ss -i巧妙地将数字转换为更易读的格式,如 Kbps/s 或 Mbps/s,这是不准确的。所以确实ss -o有定时器。我查看了源代码,发现转换是硬编码的。所以我需要来自某个地方的原始数字。
从 man ss
-D FILE
Do not display anything, just dump raw information about TCP sockets to FILE after applying filters. If FILE is - stdout is used.
Run Code Online (Sandbox Code Playgroud)
我没有看到任何地方记录的格式。此外,这个原始转储在很大程度上取决于我认为的内核。
根据 Linux 系统上的手册页,ss(8)它是“另一个调查套接字的实用程序”;它是 Linux 特定的,是 的一部分iproute,但在概念上似乎与更主流的netstat.
这是以下示例的输出ss -i:
# ss -i | head
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 173.xxx.xxx.xxx:46780 72.21.203.xx:www
cubic wscale:6,7 rto:276 rtt:76/38 cwnd:10 send 1.5Mbps rcv_space:14600
ESTAB 0 0 173.xxx.xxx.xxx:35674 208.71.121.xx:www
cubic rto:272 rtt:72/36 cwnd:10 send 1.6Mbps rcv_space:14600
ESTAB 0 0 173.xxx.xxx.xxx:33496 198.252.206.xx:https
cubic wscale:9,7 rto:274 rtt:74.875/2.25 ato:40 cwnd:10 send 1.5Mbps rcv_rtt:524913 rcv_space:29456
ESTAB 0 0 173.xxx.xxx.xxx:49605 205.251.242.xx:www
cubic wscale:6,7 rto:282 rtt:82.625/37.5 cwnd:10 send 1.4Mbps rcv_space:14600
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,有关接收和发送队列的信息是可用的,就像 一样netstat,但ss更进一步,还提供了附加信息,所有这些似乎都围绕TCP 窗口缩放和套接字缓冲区大小的概念,并围绕带宽延迟积的概念。
因此,您所说的带宽很可能是通过发送缓冲区大小除以 rtt(往返时间)来计算的。任何这样的计算必然是非常粗略、不精确和可变的,因此,当您看到像 之类的值时1.6Mbps,知道更多的小数点没有多大意义,因为整个数字首先只是一个移动目标。
| 归档时间: |
|
| 查看次数: |
1565 次 |
| 最近记录: |