Harald Welte wrote:

> The only valid use from my point of view is removing the ECT codepoint from
> the TCP header of every SYN packet in order to prevent ECN from being
> negotiated for a given connection.

If iptables is used for shaping purposes, then setting the IP CE codepoint 
may also be of value.

Harald: ECT above should read ECE+CWR bits. ECT is a dual codepoint in the IP 
header, after the SYN handshake.

Possibly valid iptables ECN capabilities:

* Clearing the TCP ECE+CWR bits on SYN to stop ECN from being negotiated for 
TCP connections. This to work around broken routers/firewalls. When doing 
this one should also clear the IP ECN field just in case.

* Setting the IP ECN CE codepoint to signal congestion, but only if the 
current IP ECN codepoint is ECT.

But as I tried to show before, having the ability to clear the IP ECN field 
separately from TCP also makes sense if one has control of both sides with a 
uncontrolled broken device in the middle and there is other protocols 
utilizing ECN (for example a custom UDP based protocol). But at this time 
this should be an experimental option to protect the innocent.

I think it should be acceptable to have the "clear ECN" target apply 
blindly.. Always clear the IP ECN field, and if the packet is a TCP packet 
also clear the ECE+CWR bits.

And no, clearing just the IP ECN field do not create additional problems 
apart from ECN not working, but doing it singlehanded does not solve any 
problems either as it is not this field that is causing problems today..

Regards
Henrik

Reply via email to