Skip to main content

6.1.1.2 Robust TCP Initialization with an Echoed Reserved Field

6.1.1.2 Robust TCP Initialization with an Echoed Reserved Field

There is a question of why we chose to have the TCP sending a SYN set both ECN-related flags in the Reserved field of the TCP header in the SYN packet, while the responding TCP sending a SYN-ACK sets only one ECN-related flag in the SYN-ACK packet. This asymmetry is necessary for a robust negotiation of ECN-capability with some deployed TCP implementations. There is at least one buggy TCP implementation where the TCP receiver simply echoes the Reserved field of the received packet in the Reserved field of the ACK packet (and therefore also in the SYN-ACK). Because the TCP SYN packet sets the ECN-Echo and CWR flags to indicate ECN-capability, while the SYN-ACK packet sets only the ECN-Echo flag, a sending TCP correctly interprets a receiver's behavior of echoing its own flags in the Reserved field as an indication that the receiver does not support ECN. The sending TCP will not be misled by a SYN-ACK packet that merely echoes the Reserved field of the incoming SYN packet, sent by a buggy TCP implementation.