Re: [spring] Question on draft-ietf-spring-srv6-network-programming-12

Christian Hopps <chopps@chopps.org> Wed, 11 March 2020 16:07 UTC

Return-Path: <chopps@chopps.org>
X-Original-To: spring@ietfa.amsl.com
Delivered-To: spring@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 155FC3A0C74 for <spring@ietfa.amsl.com>; Wed, 11 Mar 2020 09:07:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.897
X-Spam-Level:
X-Spam-Status: No, score=-1.897 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_NONE=0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7FRkZtZAG8b4 for <spring@ietfa.amsl.com>; Wed, 11 Mar 2020 09:07:43 -0700 (PDT)
Received: from smtp.chopps.org (smtp.chopps.org [54.88.81.56]) by ietfa.amsl.com (Postfix) with ESMTP id 43D413A0C5F for <spring@ietf.org>; Wed, 11 Mar 2020 09:07:43 -0700 (PDT)
Received: from stubbs.int.chopps.org (047-050-069-038.biz.spectrum.com [47.50.69.38]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by smtp.chopps.org (Postfix) with ESMTPSA id B9EF460D6E; Wed, 11 Mar 2020 16:07:42 +0000 (UTC)
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (Mac OS X Mail 13.0 \(3608.40.2.2.4\))
From: Christian Hopps <chopps@chopps.org>
In-Reply-To: <BD09DFAC-1A16-41F8-B204-38D98AA38050@cisco.com>
Date: Wed, 11 Mar 2020 12:07:41 -0400
Cc: Christian Hopps <chopps@chopps.org>, "spring@ietf.org" <spring@ietf.org>
Content-Transfer-Encoding: quoted-printable
Message-Id: <1114E167-1853-4004-A42F-E4F1185CB296@chopps.org>
References: <D5A410FF-EEA3-4F01-8147-5E180EE35DE6@chopps.org> <A6B1D2E0-0230-468B-931F-C6C976BDC9DC@cisco.com> <84B6A844-0811-4317-8EC5-A204B2B23F23@chopps.org> <81EA92B2-5057-43F3-A895-53B08FB0D746@cisco.com> <7DDFB2C3-4C7D-4750-8B4B-8D96532B6A6D@chopps.org> <BD09DFAC-1A16-41F8-B204-38D98AA38050@cisco.com>
To: "Pablo Camarillo (pcamaril)" <pcamaril=40cisco.com@dmarc.ietf.org>
X-Mailer: Apple Mail (2.3608.40.2.2.4)
Archived-At: <https://mailarchive.ietf.org/arch/msg/spring/xai2lbfHy3T6saAAcnqqokPGPKE>
Subject: Re: [spring] Question on draft-ietf-spring-srv6-network-programming-12
X-BeenThere: spring@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Source Packet Routing in NetworkinG \(SPRING\)" <spring.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/spring>, <mailto:spring-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/spring/>
List-Post: <mailto:spring@ietf.org>
List-Help: <mailto:spring-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/spring>, <mailto:spring-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 11 Mar 2020 16:07:58 -0000


> On Mar 11, 2020, at 8:16 AM, Pablo Camarillo (pcamaril) <pcamaril=40cisco.com@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 <chopps@chopps.org>
> Date: Wednesday, 11 March 2020 at 12:06
> To: "Pablo Camarillo (pcamaril)" <pcamaril@cisco.com>
> Cc: Christian Hopps <chopps@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.com@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 <chopps@chopps.org>
>> Date: Tuesday, 10 March 2020 at 22:01
>> To: "Pablo Camarillo (pcamaril)" <pcamaril@cisco.com>
>> Cc: Christian Hopps <chopps@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.com@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-bounces@ietf.org> on behalf of Christian Hopps <chopps@chopps.org>
>>> Date: Saturday, 7 March 2020 at 12:50
>>> To: "spring@ietf.org" <spring@ietf.org>
>>> Cc: Christian Hopps <chopps@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
>