the structure
the structure

Reputation: 89

Set TCP ECN on a socket (C Linux)

Is it there a way to set TCP ECN on an unprivileged TCP socket in a C linux program?

Does any congestion algorythm that can be set through setsockopt() involve ECN?

Thank you!

Upvotes: 1

Views: 1823

Answers (1)

Anders
Anders

Reputation: 2316

Short answer: no and technically yes (but based on the question it won't help and I don't think it is yes to what you wanted to ask).

ECN is turned on by echoing 1 to /proc/sys/net/ipv4/tcp_ecn. See ip_sysctl.txt. By default it should be 2 which enables ECN when the peer requests it, but does not initiate requests for it. To set this would require "privileges" and can't be done via a socket so the 1st answer is no.

Congestion algorithms may be set on a per socket basis and may involve ECN, trivially the default one does. So technically, yes. But even though the congestion algorithms may involve ECN, the code in tcp_input.c and tcp_output.c makes it clear that without the sysctl flag set, it won't use it, so it won't help.

See the very good information in this answer

Upvotes: 1

Related Questions