Subject: [mpls] mpls open dt & the first nibble discussion

From: "Fomin, Sergey (Nokia - US/Mountain View)" <[email-masked]>
Date: Thu, 15 Apr 2021 19:04:27 +0000

Hi,
this "first nibble" discussion took up a lot of time in today's meeting, but I'm not quite sold on the idea.
Perhaps I'm missing some context, but what exactly are we trying to achieve with it?

Let me share a few thoughts, starting with a relevant paragraph from Stewart’s draft-bryant-mpls-dev-primer/meeting agenda
>    Note that when we define new first nibbles we are technically taking
   IP versions away from the IETF Internet Area.  When PWE3 first
   proposed this we agreed with the IETF of the day that we would only
   take 0b0000 and 0b0001.  I am looking to see if this agreement was
   documented.
I don't think this is the case.

0x4 and 0x6 have meaning in the context of IP header.
After an MPLS header with BoS=1 we may encounter any type of payload (with currently dominant IP & Ethernet). And we all know that this the reason how we got into the whole ECMP/CW mess in the first place. And that the first nibble was never intended to be used as a protocol identifier from MPLS point of view, it’s just a byproduct of load-balancing needs.
Which leads me to a few points:

  1.  We are not 'taking' anything from IP folks as long as we are not claiming that an IP header follows (VTN folks do not make such claim, instead using their own VTN header; same as BIER-MPLS and bier header).
  2.  We already put all sorts of things into that first nibble (e.g. when encapsulating ethernet frames without CW).
  3.  We can't directly/solely use "first nibble" after as an analogue to ethertype or next protocol/next header/etc. Its meaning by itself is not defined; and I don’t think we should (or can, for that matter) change that logic.

--
Sergey

---

From: Vasilenko Eduard <[email-masked]>
Date: Fri, 16 Apr 2021 12:35:59 +0000

Hi all,
Investigation for how legal is the requirement to have IP header just after MPLS stack
Is very interesting and important.
But even if it would be discovered that no one document gives the ground for such assumptions then what?
Almost all LSRs have a microcode that assumes this.
Insert arbitrary header in this pace and get packet reordering for traffic going through old LSRs?
IMHO: interoperability should be preserved.
Hence, whatever header would be defined after the label stack – it should start from something that would not create packet reordering.
Yesterday we have discussed getting from IANA codepoint (like “3“) – it is probably the best way because it would mean “MPLS metadata is here”.
But it did come to me now that it is not mandatory. “0” does mean “non-IP”. Old boxes would not try to search for IP header and load balance - it should be no reordering.
Whatever header we would insert – we would break load balancing effectiveness of old boxes– they would not find TCP anymore. They have to calculate hash only from labels.
Eduard
From: mpls [mailto:[email-masked]] On Behalf Of Fomin, Sergey (Nokia - US/Mountain View)
Sent: Thursday, April 15, 2021 10:04 PM
To: [email-masked]
Subject: [mpls] mpls open dt & the first nibble discussion

Hi,

--
Sergey