Comment at the end:

On 21-Dec-19 06:30, Pablo Camarillo (pcamaril) wrote:
> Inline.
> 
> Thanks.
> 
> -----Original Message-----
> From: Brian E Carpenter <brian.e.carpen...@gmail.com>
> Date: Thursday, 19 December 2019 at 22:39
> To: "Pablo Camarillo (pcamaril)" <pcama...@cisco.com>, "spring@ietf.org" 
> <spring@ietf.org>
> Subject: Re: [spring] I-D Action: 
> draft-ietf-spring-srv6-network-programming-06.txt
> 
>     Sorry, I am still confused, see in line:
>     
>     On 20-Dec-19 00:53, Pablo Camarillo (pcamaril) wrote:
>     > Brian,
>     > 
>     > Inline.
>     > 
>     > Thank you,
>     > Pablo.
>     > 
>     > -----Original Message-----
>     > From: Brian E Carpenter <brian.e.carpen...@gmail.com>
>     > Date: Saturday, 14 December 2019 at 21:04
>     > To: "Pablo Camarillo (pcamaril)" <pcama...@cisco.com>, 
> "spring@ietf.org" <spring@ietf.org>
>     > Subject: Re: [spring] I-D Action: 
> draft-ietf-spring-srv6-network-programming-06.txt
>     > 
>     >     Hi Pablo,
>     >     
>     >     See in line:
>     >     
>     >     On 14-Dec-19 22:34, Pablo Camarillo (pcamaril) wrote:
>     >     > Brian,
>     >     > 
>     >     > Many thanks for having another look to the draft. Please see 
> inline [PC].
>     >     > 
>     >     > Thank you,
>     >     > Pablo.
>     >     > 
>     >     > -----Original Message-----
>     >     > From: spring <spring-boun...@ietf.org> on behalf of Brian E 
> Carpenter <brian.e.carpen...@gmail.com>
>     >     > Date: Wednesday, 11 December 2019 at 23:06
>     >     > To: "spring@ietf.org" <spring@ietf.org>
>     >     > Subject: Re: [spring] I-D Action: 
> draft-ietf-spring-srv6-network-programming-06.txt
>     >     > 
>     >     >     So, I've tried to look at this with fresh eyes, and thanks 
> for the
>     >     >     various updates and clarifications.
>     >     >     
>     >     >     (I'm still not on the SPRING list so please leave me in CC.)
>     >     >     
>     >     >     I remain a bit puzzled. First, a quote from the SRH 
> specification
>     >     >     (draft-ietf-6man-segment-routing-header-26):
>     >     >     
>     >     >     > 4.2.  Transit Node
>     >     >     > 
>     >     >     >    As specified in [RFC8200], the only node allowed to 
> inspect the
>     >     >     >    Routing Extension Header (and therefore the SRH), is the 
> node
>     >     >     >    corresponding to the DA of the packet.  Any other 
> transit node MUST
>     >     >     >    NOT inspect the underneath routing header and MUST 
> forward the packet
>     >     >     >    toward the DA according to its IPv6 routing table.
>     >     >     
>     >     >     Next, a quote from the current draft:
>     >     >     
>     >     >     >    SRH[n]: A shorter representation of Segment List[n], as 
> defined in
>     >     >     >    [I-D.ietf-6man-segment-routing-header].
>     >     >     > 
>     >     >     >    When a packet is intercepted on a wire, it is possible 
> that SRH[SL]
>     >     >     >    is different from the DA.
>     >     >     
>     >     >     Huh? That would be extremely unusual in the normal 
> interpretation
>     >     >     of a routing header, where is RH[SL] is by definition the next
>     >     >     destination where the RH will be processed. Any other node is 
> a transit
>     >     >     node, and I don't see anything in 
> draft-ietf-6man-segment-routing-header-26
>     >     >     that allows for anything else. So it seems to me that the 
> quoted statement
>     >     >     needs an explanation of why it isn't a violation of
>     >     >     draft-ietf-6man-segment-routing-header-26, not to mention why 
> it's useful.
>     >     > 
>     >     > PC: This occurs when we use the reduced SRH as described in: 
> https://tools.ietf.org/html/draft-ietf-6man-segment-routing-header-26#section-4.1.1
>     > 
>     >     OK, well that definitely needs to be added to the draft, since it 
> is very far from
>     >     obvious to a newcomer.
>     > 
>     > PC: I have removed this sentence from the latest revision of the draft. 
> Unneeded, misleading and covered in the SRH. See rev07. Thank you for your 
> comment.
>     
>     Thanks.
>     
>     > 
>     >     > If you think this sentence does not reflect that, I can edit it 
> for the next revision of the draft. 
>     >     >     
>     >     >     That leads us back to:
>     >     >     
>     >     >     > 4.16.1.  PSP: Penultimate Segment Pop of the SRH
>     >     >     > 
>     >     >     >    The SRH processing of the End, End.X and End.T behaviors 
> are
>     >     >     >    modified: after the instruction "S14.  Update IPv6 DA 
> with Segment
>     >     >     >    List[Segments Left]" is executed, the following 
> instructions must be
>     >     >     >    executed as well:
>     >     >     > 
>     >     >     >  S14.1.   If (Segments Left == 0) {
>     >     >     >  S14.2.      Update the Next Header field in the preceding 
> header to the
>     >     >     >                 Next Header value of the SRH
>     >     >     >  S14.3.      Decrease the IPv6 header Payload Length by the 
> Hdr Ext Len
>     >     >     >                 value of the SRH
>     >     >     >  S14.4.      Remove the SRH from the IPv6 extension header 
> chain
>     >     >     >  S14.5.   }
>     >     >     
>     >     >     This is clearly a breach of RFC8200, but it can never be 
> reached if DA == SRH[SL]. 
>     >     
>     >     > PC: PSP executes at the segment that is the Destination Address.
>     >     
>     >     I am probably being stupid, but I don't understand what is 
> "penultimate" about
>     >     a condition where SL == 0 and the packet has reached the node that 
> owns DA.
>     >     Where will the packet be sent next, since it's already at the final 
> DA?
>     > 
>     > PC: You are reading line 14 of a pseudocode. In the previous lines we 
> have received a packet with Segments Left = 1, and we have decremented by one 
> such value.
>     
>     If I have this right, the PSP case is inserted in this pseudocode:
>     
>       S14.   Update IPv6 DA with Segment List[Segments Left]
>       S15.   Submit the packet to the egress IPv6 FIB lookup and
>                 transmission to the new destination
>     
>     which produces:
>     
>       S14.   Update IPv6 DA with Segment List[Segments Left]
>       S14.1.   If (Segments Left == 0) {
>       S14.2.      Update the Next Header field in the preceding header to the
>                      Next Header value of the SRH
>       S14.3.      Decrease the IPv6 header Payload Length by the Hdr Ext Len
>                      value of the SRH
>       S14.4.      Remove the SRH from the IPv6 extension header chain
>       S14.5.   }
>       S15.   Submit the packet to the egress IPv6 FIB lookup and
>                 transmission to the new destination
>     
>     That's explicitly removing the header before forwarding the packet. How
>     can that not be a violation of RFC 8200? And where is it forwarded to, 
> since
>     we are already at the DA?
> 
> PC:
> I receive a packet at the node identified in the Destination Address field of 
> the IPv6 header.
> I process the extension header and delete it (in that same node).
> The packet, with the updated Destination Address, is forwarded towards the 
> node identified in the Destination Address field of the IPv6 header.

Thanks, I understand that. I think that after the holidays we need to take that 
explanation back to 6MAN, where I suspect we will find strong objections. This 
means that two strange things are happening to the packet: in-flight deletion 
of a header and NAT.

As I just said to Robert, MPLS was designed in a way that makes this natural, 
but IPv6 wasn't. The natural solution for IPv6 is Penultimate Segment 
Decapsulation, not PSP, I think.

Regards
    Brian

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

Reply via email to