netdev
[Top] [All Lists]

Re: CONFIG_INET_ECN creates problems

To: "David S. Miller" <davem@xxxxxxxxxx>
Subject: Re: CONFIG_INET_ECN creates problems
From: Rusty Russell <rusty@xxxxxxxxxxxxxxxx>
Date: Wed, 08 Nov 2000 14:31:15 +1100
Cc: hadi@xxxxxxxxxx, netdev@xxxxxxxxxxx
In-reply-to: Your message of "Tue, 07 Nov 2000 18:08:19 -0800." <200011080208.SAA19817@pizda.ninka.net>
Sender: owner-netdev@xxxxxxxxxxx
In message <200011080208.SAA19817@xxxxxxxxxxxxxxx> you write:
>    We could generalize the Floyd solution
>    to N transmits (I suggest N >= 2, rather than one, but it's just a
>    inverse of the ECN sysctl), and use two bits in the route cache: one
>    to indicate that we've spoken to the host with ECN flags set, and one
>    to indicate that we've received a RST for an ECN packet.
> 
> Doesn't work through masquerading sites.  DST != same machine nor same
> path.  Your scheme also ignores valid RST packets, unacceptable.

Actually, I didn't propose ignoring RST packets; I didn't realize that
Floyd suggested this.  That would be completely unacceptable.

`Doesn't work through masquerading sites' is misleading.  In normal
operation, SYNs come from the masqueraded machines to the server: if
the masqueraded client is behind an ECN-fucked router, it doesn't
matter to the server since it won't set CE.

If the server initiates an ident probe back to the masqueraded client
it will talk to the masquerading box, so it might believe that it
supports ECN when it does not.  This doesn't matter.

If a host being masqueraded IS behind an ECN-fucked router, and the
masquerading box does support ECN, and the client attempts to do an
active FTP, and the server still has the entry from an ident probe in
its route cache, it won't work.

Probability of that occurring: fairly low.

`Doesn't work with partially ECN-fucked load-shared sites' is true,
but an even smaller problem.

>    Horrible?  Yes.  But it would allow us to ship ECN by default (good),
>    and still communicate with the world (which is the highest priority).
> 
> How about we ship it on by default as is? :-)

The distributions will all have to disable it.  I'd prefer that not to
be the case.

I repeat:
Bogocode:
        #define IPECN_RT_OK  0x01  /* Set if we ever got CE from them */
        #define IPECN_RT_RST 0x02  /* Set if we ever got a RST from them */

        if (sysctl_ecn_disable &&
            (trans(rt) > sysctl_ecn_disable || IPECN_RT(rt) == IPECN_RT_RST)) {
                ... no ECN ...
        } else {
                ... ECN ...
        }

Rusty.
--
Hacking time.

<Prev in Thread] Current Thread [Next in Thread>