Inline. This one is short.

Many thanks,
Pablo.

-----Original Message-----
From: Christian Hopps <cho...@chopps.org>
Date: Thursday, 12 March 2020 at 13:08
To: "Pablo Camarillo (pcamaril)" <pcama...@cisco.com>
Cc: Christian Hopps <cho...@chopps.org>, "spring@ietf.org" <spring@ietf.org>
Subject: Re: [spring] Question on draft-ietf-spring-srv6-network-programming-12

    
    
    > On Mar 12, 2020, at 6:06 AM, Pablo Camarillo (pcamaril) 
<pcamaril=40cisco....@dmarc.ietf.org> wrote:
    > 
    > Hi Chris, 
    > 
    > The Binding SIDs have a restriction not to be the last SID in a SID list. 
This applies to all three Binding SID behaviors defined in 
draft-ietf-spring-network-programming (End.B6.Encaps, End.B6.Encaps.Red and 
End.BM) and is indicated by the statements such as "An End.B6.Encaps SID is 
never the last segment in a SID list." in section 4.13.
    > 
    > More precisely, when a node processes the SRH of a packet whose IPv6 
Destination Address matches a locally instantiated SRv6 Binding-SID behavior 
(any of the three) and it is not the last segment in the SID list, it steers 
the packet into the associated SR Policy (either by performing an IPv6 
encapsulation or by pushing an MPLS label stack on top of the existing packet).
    > 
    > However, if the binding SID is the last SID in a SID list
    
    This is the Segments Left == 0 case?

Yes.
    
    > or the IPv6 DA in a packet with no SRH, then the router will generate an 
ICMP Parameter Problem message with code 4. In either of those two cases, the 
packet is not steered in the SR Policy and the source is notified of the issue.
    
    So looping back to my earlier comments on 4.1.1, but in this context. The 
only way to arrive at this text in 4.{13,14,15}:
    
       "When processing the Upper-layer header of a packet matching a FIB
       entry locally instantiated as an SRv6 End.B6.Encaps SID, process the
       packet as per Section 4.1.1."
    
    is for there to be no SRH in the packet?

Yes, but to be precise: IPv6 packet with any kind extension header(s) but no 
SRH.
    
    Thanks,
    Chris.
    
    > 
    > This restriction exists for two reasons:
    > First, the primary use-case for the Binding-SID concept is to apply an 
intermediate SR Policy that steers the packet along a particular path in an 
intermediate sub-domain, but the original SID-list is expected to steer the 
traffic up to the egress node of the SR domain. This means that the final 
segment in the original SID-list is usually an End.D* (VPN) segment at the 
egress node.
    > 
    > Second, the processing a Binding-SID at a last position in a SID list 
requires a different processing. First you would need to decapsulate the packet 
(since it has reached it final destination) and then re-encapsulate it (or push 
a label stack on top of the inner packet).
    > 
    > Many thanks,
    > Pablo.
    > 
    > -----Original Message-----
    > From: Christian Hopps <cho...@chopps.org>
    > Date: Wednesday, 11 March 2020 at 20:21
    > To: "Pablo Camarillo (pcamaril)" <pcama...@cisco.com>
    > Cc: Christian Hopps <cho...@chopps.org>, "spring@ietf.org" 
<spring@ietf.org>
    > Subject: Re: [spring] Question on 
draft-ietf-spring-srv6-network-programming-12
    > 
    > 
    > 
    >> On Mar 11, 2020, at 2:44 PM, Pablo Camarillo (pcamaril) 
<pcama...@cisco.com> wrote:
    >> 
    >> Hi Chris,
    >> 
    >> Indeed, an IPv6 packet with no SRH (and FIB entry is local End SID) is 
one way to get to the Upper Layer Header processing defined in 4.1.1.
    >> Another way is to have a FIB entry bound to an End.DT* or End.DX* 
behavior. In these cases the ULH processing occurs if the SRH has SL=0 or 
there's no SRH.
    > 
    >    Ah right, sorry that's right there in the document, it's easy too lose 
track of all this when multitasking on other things. :)
    > 
    >    So if you don't mind, going back to my original question of how this 
works with Binding SID cases... You replied:
    > 
    >       "Normally the Upper-Layer Header should not be processed on a 
packet with a BSID, since you have just pushed an SR policy into the packet. 
That said, when the ultimate destination is BSID, then the Upper Layer Header 
processing is the same to End (4.1)."
    > 
    >    Can you expand on "when the ultimate destination is BSID"? Do you mean 
when the ultimate destination of the packet is the same node N that is 
currently processing the BSID FIB entry? If so then that will have to be 
handled in whatever way it should be after it is resubmitted to either IPv6 or 
MPLS engines and forwarded and then decapsulated. There won't be anymore header 
processing to follow from 4.{13,14,15} though. Given something has been added 
(an IPv6 header or an MPLS label stack) that still needs to get processed and 
removed before any upper-layer header of the now encapsulated packet gets 
looked at.
    > 
    >    I also find another bit of text confusing in these sections:
    > 
    >      "An End.BM SID is never the last SID, and any SID instantiation is
    >       associated with an SR-MPLS Policy B."
    > 
    >    Is that text is saying that if one lands on a BSID one can always 
expect more SIDs to be used in moving the packet (b/c of pushing an new IPv6 
encap or MPLS label stack)? It's confusing b/c it certainly can read that a 
BSID can't be the "Last Segment" in an SRH, but that doesn't seem like a 
reasonable restriction.
    > 
    >    Thanks,
    >    Chris.
    > 
    >> 
    >> Many thanks,
    >> Pablo.
    >> 
    >> -----Original Message-----
    >> From: Christian Hopps <cho...@chopps.org>
    >> Date: Wednesday, 11 March 2020 at 17:08
    >> To: "Pablo Camarillo (pcamaril)" <pcama...@cisco.com>
    >> Cc: Christian Hopps <cho...@chopps.org>, "spring@ietf.org" 
<spring@ietf.org>
    >> Subject: Re: [spring] Question on 
draft-ietf-spring-srv6-network-programming-12
    >> 
    >> 
    >> 
    >>> On Mar 11, 2020, at 8:16 AM, Pablo Camarillo (pcamaril) 
<pcamaril=40cisco....@dmarc.ietf.org> wrote:
    >>> 
    >>> Hi Chris,
    >>> 
    >>> The processing defined in draft-ietf-spring-srv6-network-programming is 
aligned with the SRH. 
    >>> Particularly see 
https://tools.ietf.org/html/draft-ietf-6man-segment-routing-header-26#section-4.3
    >>> 
    >>>> Is 4.1.1 covering (and only covering) the case where my FIB lookup 
yields a local End SID, but the packet has no SRH in it?
    >>> 
    >>> It is not *only* covering that case (although that is one of the cases, 
there are others). You process the extension header chain as defined in RFC8200.
    >> 
    >>   Right I had quoted the 8200 processing order so I'm using that as a 
guide.
    >> 
    >>> When processing the SRH you follow the processing of 4.1; If you get to 
the Upper Layer Header, you process it as per 4.1.1
    >> 
    >>   This is what I'm getting at though, if there is an SRH you will enter 
section 4.1 prior to 4.1.1, and if you are in 4.1 there is no processing path 
that leads to the upper-layer header. So AFAICT the only way to get to section 
4.1.1 is if the FIB entry is a local END SID and there is no SRH.
    >> 
    >>   Thanks,
    >>   Chris.
    >> 
    >>> 
    >>> Thank you,
    >>> Pablo. 
    >>> 
    >>> -----Original Message-----
    >>> From: Christian Hopps <cho...@chopps.org>
    >>> Date: Wednesday, 11 March 2020 at 12:06
    >>> To: "Pablo Camarillo (pcamaril)" <pcama...@cisco.com>
    >>> Cc: Christian Hopps <cho...@chopps.org>, "spring@ietf.org" 
<spring@ietf.org>
    >>> Subject: Re: [spring] Question on 
draft-ietf-spring-srv6-network-programming-12
    >>> 
    >>> 
    >>> 
    >>>> On Mar 11, 2020, at 5:59 AM, Pablo Camarillo (pcamaril) 
<pcamaril=40cisco....@dmarc.ietf.org> wrote:
    >>>> 
    >>>> Hi Chris,
    >>>> 
    >>>> They are the same thing. 
    >>> 
    >>>  Ok, so how do I get on 2 different processing paths for the same thing 
entry as Section 4.1 cannot lead to processing of an upper-layer header as far 
as I can tell, yet section 4.1.1 is talking about processing the upper layer 
header for the same FIB entry.
    >>> 
    >>>  1) Packet arrives, FIB lookup on packet destination address returns 
local End SID entry.
    >>> 
    >>>  2) Start processing the extension headers and arrive at the SRH (which 
comes prior to the upper-layer header.
    >>> 
    >>>     From RFC8200 the extension header order:
    >>>        IPv6 header
    >>>        Hop-by-Hop Options header
    >>>        Destination Options header (note 1)
    >>>        Routing header <------------------------------------ SRH
    >>>        Fragment header
    >>>        Authentication header (note 2)
    >>>        Encapsulating Security Payload header (note 2)
    >>>        Destination Options header (note 3)
    >>>        Upper-Layer header <-------------------------------- Upper Layer 
Header
    >>> 
    >>>  3) Process the SRH according to 4.1 for which there is no exit that 
leads to processing any more headers.
    >>> 
    >>>  Oh wait...
    >>> 
    >>>  Is 4.1.1 covering (and only covering) the case where my FIB lookup 
yields a local End SID, but the packet has no SRH in it? If this is the case 
then it would make things *way* more clear for the document to state this 
outright. "When a packet's DA returns a FIB entry for a local END SID, but the 
packet does not contain an SRH ..." or something like that.
    >>> 
    >>>  Thanks,
    >>>  Chris.
    >>> 
    >>> 
    >>>> 
    >>>> Section 3:
    >>>> ...
    >>>> Its processing is defined in [I-D.ietf-6man-segment-routing-header]
    >>>> section 4.3 and reproduced here as a reminder.
    >>>> 
    >>>>   Without constraining the details of an implementation, the SR
    >>>>   segment endpoint node creates Forwarding Information Base (FIB)
    >>>>   entries for its local SIDs.
    >>>> 
    >>>>   When an SRv6-capable node receives an IPv6 packet, it performs a
    >>>>   longest-prefix-match lookup on the packets destination address.
    >>>>   This lookup can return any of the following:
    >>>> 
    >>>>   - A FIB entry that represents a locally instantiated SRv6 SID
    >>>> 
    >>>>   - A FIB entry that represents a local interface, not locally
    >>>>     instantiated as an SRv6 SID
    >>>> 
    >>>>   - A FIB entry that represents a non-local route
    >>>> 
    >>>>   - No Match
    >>>> 
    >>>> Section 4:
    >>>>> Each FIB entry indicates the behavior associated with a SID instance
    >>>>> and its parameters.
    >>>> 
    >>>> Thank you,
    >>>> Pablo. 
    >>>> 
    >>>> -----Original Message-----
    >>>> From: Christian Hopps <cho...@chopps.org>
    >>>> Date: Tuesday, 10 March 2020 at 22:01
    >>>> To: "Pablo Camarillo (pcamaril)" <pcama...@cisco.com>
    >>>> Cc: Christian Hopps <cho...@chopps.org>, "spring@ietf.org" 
<spring@ietf.org>
    >>>> Subject: Re: [spring] Question on 
draft-ietf-spring-srv6-network-programming-12
    >>>> 
    >>>> 
    >>>> 
    >>>>> On Mar 10, 2020, at 2:13 PM, Pablo Camarillo (pcamaril) 
<pcamaril=40cisco....@dmarc.ietf.org> wrote:
    >>>>> 
    >>>>> Hi Chris,
    >>>>> 
    >>>>> Thanks for going through the document.
    >>>>> The behaviors 4.13 (End.B6.Encaps), 4.14 (End.B6.Encaps.Red) and 4.15 
(End.BM) correspond to Binding SIDs [1].
    >>>>> 
    >>>>> As a result of 4.13 for example, the packet is encapsulated with a 
new IPv6 header and an SRH that contains the SR policy associated to the BSID.
    >>>>> Once the new IPv6 header is pushed into the packet, the NET-PGM 
pseudocode passes this packet to the IPv6 module of the router for transmission.
    >>>>> 
    >>>>> Normally the Upper-Layer Header should not be processed on a packet 
with a BSID, since you have just pushed an SR policy into the packet.
    >>>>> That said, when the ultimate destination is BSID, then the Upper 
Layer Header processing is the same to End (4.1).
    >>>>> 
    >>>>> Hope it clarifies.
    >>>> 
    >>>> I'm still not clear on things I guess, but your answer leads me to a 
more basic question:
    >>>> 
    >>>> Section 4.1 described the basic "FIB entry" "End" which says:
    >>>> 
    >>>>   "When N receives a packet whose IPv6 DA is S and S is a local End 
SID, N does..."
    >>>> 
    >>>> So it's talking about a FIB entry for a "local End SID".
    >>>> 
    >>>> Section 4.1.1 says:
    >>>> 
    >>>>   "When processing the Upper-layer Header of a packet matching a FIB
    >>>>    entry locally instantiated as an SRv6 End SID"
    >>>> 
    >>>> It's talking about a "FIB entry locally instantiated as an SRv6 END 
SID"
    >>>> 
    >>>> I'm not understanding how these 2 things are different. 4.1s calling a 
FIB Entry a "local End SID" 4.1.1 is calling something (different?) a "FIB 
Entry locally instantiated as an SRv6 END SID".
    >>>> 
    >>>> The terms seem too similar for me to make a distinction, where I feel 
the document expects me to make one.
    >>>> 
    >>>> Thanks,
    >>>> Chris.
    >>>> 
    >>>> 
    >>>>> 
    >>>>> Thanks,
    >>>>> Pablo.
    >>>>> 
    >>>>> [1]. https://tools.ietf.org/html/rfc8402#section-5
    >>>>> 
    >>>>> 
    >>>>> -----Original Message-----
    >>>>> From: spring <spring-boun...@ietf.org> on behalf of Christian Hopps 
<cho...@chopps.org>
    >>>>> Date: Saturday, 7 March 2020 at 12:50
    >>>>> To: "spring@ietf.org" <spring@ietf.org>
    >>>>> Cc: Christian Hopps <cho...@chopps.org>
    >>>>> Subject: [spring] Question on 
draft-ietf-spring-srv6-network-programming-12
    >>>>> 
    >>>>> In sections 4.13, (implicitly in 4.14) and 4.15 a set of steps is 
indicated. As far as I can tell the processing of the IPv6 header chain in all 
cases is terminated. e.g.,
    >>>>> 
    >>>>> "
    >>>>>   When N receives a packet whose IPv6 DA is S and S is a local End.BM
    >>>>>   SID, does:
    >>>>> 
    >>>>>  S01. When an SRH is processed {
    >>>>>  S02.   If (Segments Left == 0) {
    >>>>> ....
    >>>>>               Interrupt packet processing and discard the packet.
    >>>>>  S04.   }
    >>>>>  S05.   If (IPv6 Hop Limit <= 1) {
    >>>>> ....
    >>>>>               Interrupt packet processing and discard the packet.
    >>>>>  S07.   }
    >>>>>  S09.   If ((Last Entry > max_LE) or (Segments Left > (Last Entry+1)) 
{
    >>>>> ....
    >>>>>               Interrupt packet processing and discard the packet.
    >>>>>  S11.   }
    >>>>> ....
    >>>>>  S15.   Submit the packet to the MPLS engine for transmission to the
    >>>>>            topmost label.
    >>>>>  S16. }
    >>>>> "
    >>>>> 
    >>>>> The text then says:
    >>>>> 
    >>>>>   When processing the Upper-layer header of a packet matching a FIB
    >>>>>   entry locally instantiated as an SRv6 End.BM SID, process the packet
    >>>>>   as per Section 4.1.1.
    >>>>> 
    >>>>> Why would I ever be processing the upper-layer header at this point?
    >>>>> 
    >>>>> Thanks,
    >>>>> Chris.
    >>>>> _______________________________________________
    >>>>> spring mailing list
    >>>>> spring@ietf.org
    >>>>> https://www.ietf.org/mailman/listinfo/spring
    >>>>> 
    >>>>> 
    >>>>> _______________________________________________
    >>>>> spring mailing list
    >>>>> spring@ietf.org
    >>>>> https://www.ietf.org/mailman/listinfo/spring
    >>>> 
    >>>> 
    >>>> 
    >>>> _______________________________________________
    >>>> spring mailing list
    >>>> spring@ietf.org
    >>>> https://www.ietf.org/mailman/listinfo/spring
    >>> 
    >>> 
    >>> 
    >>> 
    >>> _______________________________________________
    >>> spring mailing list
    >>> spring@ietf.org
    >>> https://www.ietf.org/mailman/listinfo/spring
    >>> 
    >> 
    >> 
    >> 
    > 
    > 
    > 
    > _______________________________________________
    > spring mailing list
    > spring@ietf.org
    > https://www.ietf.org/mailman/listinfo/spring
    
    

_______________________________________________
spring mailing list
spring@ietf.org
https://www.ietf.org/mailman/listinfo/spring

Reply via email to