Subject: [spring] Question on RFC8660

From: Martin Horneffer <[email-masked]>
Date: Fri, 31 Jan 2020 16:50:13 +0100

Hello everyone,

again it seems the interesting questions only show up when applying 
something to the live network...

We ran into something that poses a question related to RFC8660: What is 
the exact meaning of section 2.10.1, "Forwarding for PUSH and CONTINUE 
of Global SIDs", when the chosen neighbor doesn't provide a valid MPLS path?

The relevant sections reads:

       -  Else, if there are other usable next hops, use them to forward
          the incoming packet.  The method by which the router "R0"
          decides on the possibility of using other next hops is beyond
          the scope of this document.  For example, the MCC on "R0" may
          chose the send an IPv4 packet without pushing any label to
          another next hop.

Does the part "send an IPv4 packet without pushing any label" apply to 
PUSH and CONTINUE, or just to PUSH?
Does R0 have to validate that neighbor N can correctly process to 
packet? Or can it forward the packet regardless?

The reason for asking is that we are now seeing issues similar to ones 
we had when starting with LDP based MPLS about two decades ago: traffic 
being black holed even though a path to the destination exists, because 
the MPLS path is interrupted somewhere in the middle.

With LDP we know the case of LFIBentries called "unlabelled". While this 
does break connectivity for many kinds of service, e.g. those relying on 
an additional service labels, it still works for plain IP(v4) traffic. 
In our cases, this works perfectly fine for all internal routing and 
control traffic. And even for IPv4 traffic that gets collected by a 
central router that injects a default route.

However, depending on the exact interpretation of the above paragraph, 
an implementor might feel obliged to chose the next paragraph:

       -  Otherwise, drop the packet.

Which is, at least in our case, very unfortunate...

Any advice or opinion appreciated!

Best regards, Martin