[Bloat] No ECN marking in IPv6 linux

Matthew Ford ford at isoc.org
Fri May 6 14:40:41 EDT 2011


On 6 May 2011, at 16:27, Eric Dumazet wrote:

> FYI
> 
> IPV6 ECN support is buggy on current linux kernels
> 
> Fix is on the way, problem spotted by Steinar H. Gunderson
> 
> https://bugzilla.kernel.org/show_bug.cgi?id=34322
> 

FWIW, Mac OSX has similar behaviour and I filed the bug with Apple in July of last year.

Summary: When ECN is enabled (by setting net.inet.tcp.ecn_initiate_out =  1 and net.inet.tcp.ecn_negotiate_in = 1), the ECN capable-transport (ECT) bit is not set in the IPv6 Traffic Class field when communicating with ECN-enabled hosts.

Steps to Reproduce:

1. Set net.inet.tcp.ecn_initiate_out=1 and net.inet.tcp.ecn_negotiate_in = 1
2. Connect over IPv6 to another similarly ECN-enabled host and transfer some data over TCP (e.g. an HTTP transaction, or FTP transfer).
3. Monitor the connection with your favourite protocol analyser.
4. Observe that the ECN-Echo bits are correctly set in the initial TCP handshake.
5. Observe that the ECT bit is not being set in the IPv6 Traffic Class field in subsequent packets.

Expected Results:

RFC3168 defines ECN for IP. In IPv4 and IPv6, ECN codepoints are specified as bits 6 and 7 of the TOS Byte and Traffic Class Octet respectively. The ECN Capable Transport (ECT) bit should be set after TCP has successfully concluded ECN initialisation.

Actual Results:

ECT is set for IPv4 communications. ECT is not being set for IPv6 communications.

Mat




More information about the Bloat mailing list