• Tilmans, Olivier (Nokia - BE/Antwerp)'s avatar
    tcp: Accept ECT on SYN in the presence of RFC8311 · f6fee16d
    Linux currently disable ECN for incoming connections when the SYN
    requests ECN and the IP header has ECT(0)/ECT(1) set, as some
    networks were reportedly mangling the ToS byte, hence could later
    trigger false congestion notifications.
    
    RFC8311 §4.3 relaxes RFC3168's requirements such that ECT can be set
    one TCP control packets (including SYNs). The main benefit of this
    is the decreased probability of losing a SYN in a congested
    ECN-capable network (i.e., it avoids the initial 1s timeout).
    Additionally, this allows the development of newer TCP extensions,
    such as AccECN.
    
    This patch relaxes the previous check, by enabling ECN on incoming
    connections using SYN+ECT if at least one bit of the reserved flags
    of the TCP header is set. Such bit would indicate that the sender of
    the SYN is using a newer TCP feature than what the host implements,
    such as AccECN, and is thus implementing RFC8311. This enables
    end-hosts not supporting such extensions to still negociate ECN, and
    to have some of the benefits of using ECN on control packets.
    Signed-off-by: default avatarOlivier Tilmans <olivier.tilmans@nokia-bell-labs.com>
    Suggested-by: default avatarBob Briscoe <research@bobbriscoe.net>
    Cc: Koen De Schepper <koen.de_schepper@nokia-bell-labs.com>
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Acked-by: default avatarNeal Cardwell <ncardwell@google.com>
    Acked-by: default avatarYuchung Cheng <ycheng@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f6fee16d
tcp_input.c 186 KB