28 Sep, 2012

1 commit

  • Linux tunnels were written before RFC6040 and therefore never
    implemented the corner case of ECN getting set in the outer header
    and the inner header not being ready for it.

    Section 4.2. Default Tunnel Egress Behaviour.
    o If the inner ECN field is Not-ECT, the decapsulator MUST NOT
    propagate any other ECN codepoint onwards. This is because the
    inner Not-ECT marking is set by transports that rely on dropped
    packets as an indication of congestion and would not understand or
    respond to any other ECN codepoint [RFC4774]. Specifically:

    * If the inner ECN field is Not-ECT and the outer ECN field is
    CE, the decapsulator MUST drop the packet.

    * If the inner ECN field is Not-ECT and the outer ECN field is
    Not-ECT, ECT(0), or ECT(1), the decapsulator MUST forward the
    outgoing packet with the ECN field cleared to Not-ECT.

    This patch moves the ECN decap logic out of the individual tunnels
    into a common place.

    It also adds logging to allow detecting broken systems that
    set ECN bits incorrectly when tunneling (or an intermediate
    router might be changing the header).

    Overloads rx_frame_error to keep track of ECN related error.

    Thanks to Chris Wright who caught this while reviewing the new VXLAN
    tunnel.

    This code was tested by injecting faulty logic in other end GRE
    to send incorrectly encapsulated packets.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    stephen hemminger
     

22 Oct, 2011

1 commit


13 May, 2011

1 commit

  • Since commit e9df2e8fd8fbc9 (Use appropriate sock tclass setting for
    routing lookup) we lost ability to properly add ECN codemarks to ipv6
    TCP frames.

    It seems like TCP_ECN_send() calls INET_ECN_xmit(), which only sets the
    ECN bit in the IPv4 ToS field (inet_sk(sk)->tos), but after the patch,
    what's checked is inet6_sk(sk)->tclass, which is a completely different
    field.

    Close bug https://bugzilla.kernel.org/show_bug.cgi?id=34322

    [Eric Dumazet] : added the INET_ECN_dontxmit() fix and replace macros
    by inline functions for clarity.

    Signed-off-by: Steinar H. Gunderson
    Signed-off-by: Eric Dumazet
    Cc: YOSHIFUJI Hideaki
    Cc: Andrew Morton
    Signed-off-by: David S. Miller

    Steinar H. Gunderson
     

24 Sep, 2010

1 commit


15 Feb, 2009

1 commit


14 Apr, 2008

1 commit


29 Jan, 2008

1 commit


26 Apr, 2007

4 commits


03 Dec, 2006

2 commits


06 Nov, 2006

1 commit


04 Jan, 2006

1 commit


06 Nov, 2005

1 commit

  • Changes IP_ECN_set_ce() and IP6_ECN_set_ce() to return 0 if the CE
    bits could not bet set because none of the ECT bits are set or 1
    if the CE bits are already set or have been successfully set.

    Introduces INET_ECN_set_ce(skb) to enable CE bits for all supported
    protocols.

    Signed-off-by: Thomas Graf
    Signed-off-by: Arnaldo Carvalho de Melo

    Thomas Graf
     

17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds