在 Linux 上获取 TCP initcwnd 的当前/默认值

cYr*_*rus 11 linux tcp

我可以通过以下方式操纵这样的值:

ip route change ... initcwnd 10
Run Code Online (Sandbox Code Playgroud)

然后有一个反馈:

ip route show
Run Code Online (Sandbox Code Playgroud)

但是在任何修改之前的默认值呢?有没有办法从系统中查询该值?

或者,您能否提供一个有效的参考,显示每个内核版本的默认硬编码值?

Яро*_*лин 12

我不确定,但这似乎是一个合法的参考

直觉:

$ grep -A 2 initcwnd `find /usr/src/linux/include -type f -iname '*h'`
Run Code Online (Sandbox Code Playgroud)

出去:

/usr/src/linux/include/net/tcp.h:
/* TCP initial congestion window as per draft-hkchu-tcpm-initcwnd-01 */
#define TCP_INIT_CWND          10
Run Code Online (Sandbox Code Playgroud)


小智 8

好吧,我不能说我 100% 肯定这应该是答案,buuut,因为它经常出现,ss是获取一些信息的好选择,例如:

 ss -nli|fgrep cwnd
     westwood rto:1000 mss:536 cwnd:10
     westwood rto:1000 mss:536 cwnd:10
     westwood rto:1000 mss:536 cwnd:10
Run Code Online (Sandbox Code Playgroud)

-n摆脱烦人的 DNS 解析是典型的-l做法,我们是否坚持只监听套接字并且-i(关键)是“显示内部 TCP 信息”。可以看出,拥塞算法和默认 cwnd 都显示了。