在套接字上设置 TCP ECN (C Linux)

Set TCP ECN on a socket (C Linux)

有没有办法在 C linux 程序中的非特权 TCP 套接字上设置 TCP ECN?

可以通过setsockopt()设置的拥塞算法是否涉及ECN?

谢谢!

简短回答:否,从技术上讲是的(但根据这个问题,它无济于事,我认为你想问的问题不是肯定​​的)。

ECN 通过回显 1 到 /proc/sys/net/ipv4/tcp_ecn 打开。看 ip_sysctl.txt。默认情况下,它应该是 2,当对等方请求它时启用 ECN,但不为其发起请求。要设置它需要 "privileges" 并且不能通过套接字完成,所以第一个答案是否定的。

拥塞算法可以在每个套接字的基础上设置,并且可能涉及 ECN,通常默认的算法会涉及。所以技术上,是的。但是即使拥塞算法可能会涉及到ECN,tcp_input.c和tcp_output.c中的代码已经明确表示,如果不设置sysctl标志,它就不会使用它,所以也无济于事。

看到这里的资料很好 answer