Joe,

On 19/06/17 13:45, Joe Touch wrote:

Hi, Bob,

On 6/19/2017 4:37 AM, Bob Briscoe wrote:
Joe,

[Cutting the distr to nvo3 and adding tsvwg.]

On 16/06/17 20:38, Joe Touch wrote:

Hi, Bob,

This approach seems to assume an integrated implementation of multiple protocol layers.

There are other cases where the "shim" is added indirectly, as a packet is "tunneled" independently over multiple protocols.


So what aspect of the following para (in S.3.1) does not include the case(s) you are thinking of:
    In some cases a tunnel adds an outer IP header and a tightly coupled
    shim header to an inner header that is not an IP header, but that in
    turn encapsulates an IP header (or might encapsulate an IP header).
    For instance an inner Ethernet (or other link layer) header might
    encapsulate an inner IP header as its payload.  We call this a
    tightly coupled shim over an encapsulating header.
Can you be more specific? Or perhaps give an example? Or suggest an edit to the above text?

The issue is that the paragraph defines "tightly coupled" in terms of "tightly coupled".

AFAICT, "tightly coupled" depends on whether the layers are added all in the same software context or some "peeking" occurs after the shim layer is added but before the final IP.
So I think you are not objecting to the para I quoted above, but to something in the previous para, quoted here:

   In many cases the shim header(s) and the outer IP header are always
   added (or removed) as part of the same process.  We call this a
   tightly coupled shim header.  Processing the shim and outer together
   is often necessary because the shim(s) are not sufficient for packet
   forwarding in their own right; not unless complemented by an outer
   header.

Is the phrase "as part of the same process" the one you are objecting to?

If so, I have no objection to using an alternative to the word 'process' to avoid the implication that this means specifically one 'process' as defined for the OS in question. It wasn't intended to use the word 'process' so strictly. The more general meaning of 'procedure' or 'routine' was intended.

The main point was that the definition of a shim is something that cannot be used alone to forward a packet to another network address, unless it is complemented by an outer PSN header.

Whatever, these paragraphs only give context to the subsequent normative text, which (deliberately) doesn't actually rely on these definitions anyway.



I scanned the draft and didn't see this addressed explicitly (maybe I missed it). It's implied throughout 3.2 but never stated as a MAY, e.g., systems MAY support ECN across shim layers but are NOT REQUIRED to do so. Can that sort of explicit caveat be included? This case might be added as a final bullet in the list at the end of section 3.2.

Section 3.2 solely gives the cases where ECN is not or cannot be supported, so any ECN field in an outer IP header will have to be zeroed (typically by configuration because the implementation will not include any ECN logic).

If none of the cases listed in S.3.2 applies, then you would be in the territory of section 3.1 (i.e. supporting ECN would already be covered by RFC6040).

S.3.2 is solely there to plug an important hole that was left in RFC6040. RFC6040 said what implementers have to do to support RFC6040, but it did not include what /network operators/ have to do if they have an implementation that does not support any ECN tunnelling spec (RFC6040, RFC4301 or full functionality mode of RFC3168).

Have I misunderstood your point? Could I have made the text clearer?

My point is that the propagation of ECN across shim layers needs to be more clearly explained as optional (even, IMO, for "tightly coupled" cases). Right now, it reads more like "OK, so if you're layering has failed to support ECN propagation, here's how to at least make it safe".


I only realized S.3.2 was needed when I discovered that there is still equipment being built that is copying the 8-bit ToS byte from inner to outer as if the Internet Protocol is still as it was before Diffserv was standardized 19 years ago (Dec 1998).

I suspect lazy implementers search for "Internet Protocol header" and follow the many outdated articles you can find on the Web, rather than checking the RFCs. For instance, the 2nd hit from Google (ranked just below Wikipedia) erroneously tells us that the 8-bit ToS field contains 3 precedence bits (that are ignored), 4 ToS bits and 1 currently unused bit. I am not going to cite the link here, which will just reinforce its ranking.
Agreed, but again you're implying that there's something wrong with code that can't propagate ECN, rather than saying that ECN operates at the IP layer in which it is inserted by routers. Expecting ECN to propagate to tunnels is an optimization that in one sense is useful when it works, but in another is the antithesis of the point of tunneling.
The difficulty being addressed in this section is that blindly copying an inner ECN field to an outer is unsafe (whether or not you want to support ECN).

There is so much text in S.3.2 that says ECN is optional that I'm not sure how I can say it any more times without making the reader die of boredom. S.3.2. starts with

   Even when ECN propagation is not implemented or is not being used,

and the proposed new normative text starts:

      When the implementation of a tunnel ingress does not support
      [RFC6040 <https://tools.ietf.org/html/rfc6040>] or one of its compatible 
predecessors ([RFC4301 <https://tools.ietf.org/html/rfc4301>] or the
      full functionality mode of [RFC3168 
<https://tools.ietf.org/html/rfc3168>]) and when the outer tunnel
      header is IP (v4 or v6),

And the section ends with all this:

   Permanently zeroing the outer ECN field is safe, but it is not
   sufficient to claim compliance withRFC 6040 
<https://tools.ietf.org/html/rfc6040>  because it does not meet
   the aim of introducing ECN support to tunnels (seeSection 4.3 of [RFC6040] 
<https://tools.ietf.org/html/rfc6040#section-4.3>).  Developers and network 
operators are encouraged to
   implement and deploy tunnel endpoints compliant withRFC 6040 
<https://tools.ietf.org/html/rfc6040>  (as
   updated by the present specification) in order to provide the
   benefits of wider ECN deployment [RFC8087 
<https://tools.ietf.org/html/rfc8087>].  Nonetheless, propagation
   of ECN between IP headers, whether separated by shim headers or not,
   has to be OPTIONAL to implement and to use, because:

   o  Legacy implementations of tunnels without any ECN support already
      exist

   o  A network might be designed so that there is usually no bottleneck
      within the tunnel

   o  If the tunnel endpoints would have to search within an L2 header
      to find an encapsulated IP header, it might not be worth the
      potential performance hit

What more do you want me to say, to emphasize that ECN is optional?

Preferably, please suggest specific edits.

Cheers


Bob


Joe

--
________________________________________________________________
Bob Briscoe                               http://bobbriscoe.net/

_______________________________________________
nvo3 mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/nvo3

Reply via email to