Re: 6man w.g. last call for <draft-ietf-6man-segment-routing-header-11.txt>

stefano previdi <stefano@previdi.net> Mon, 09 April 2018 08:09 UTC

Return-Path: <stefano@previdi.net>
X-Original-To: ipv6@ietfa.amsl.com
Delivered-To: ipv6@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 49E7F1242F7 for <ipv6@ietfa.amsl.com>; Mon, 9 Apr 2018 01:09:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.6
X-Spam-Level:
X-Spam-Status: No, score=-2.6 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_LOW=-0.7] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=previdi-net.20150623.gappssmtp.com
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 zJ4cWitONDy2 for <ipv6@ietfa.amsl.com>; Mon, 9 Apr 2018 01:09:12 -0700 (PDT)
Received: from mail-wm0-x22d.google.com (mail-wm0-x22d.google.com [IPv6:2a00:1450:400c:c09::22d]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 215291200C5 for <ipv6@ietf.org>; Mon, 9 Apr 2018 01:09:12 -0700 (PDT)
Received: by mail-wm0-x22d.google.com with SMTP id 66so10599612wmd.3 for <ipv6@ietf.org>; Mon, 09 Apr 2018 01:09:12 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=previdi-net.20150623.gappssmtp.com; s=20150623; h=subject:mime-version:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=xCZHlRo4YjZ4aqAA/MUStUedMe9w4oIiRUjZbGkl/lw=; b=W/9bpj3lWcyggomb3mwwlN6WaxIQRadZYafUG1190fJwP3IQpDVXOrUdvgkUZ79l4b xnLhd2h0BMWe7Zyjjm17RDs1h6Brbo4ZSGcZCELoWaw1ektkj5iFXA6gaohExPgdjheA SJHpXBZv5vgs67/gWTzGcpFUIzrXtMSW2xERgLNZ5K5WfclitN29GD+3vV2ZF5LteBho ZvCVxj6rFtOw3IBW8xio4Kh8Fq4lbQavwCYtM9PybKlYPBCH6IdoCnFFUxnJMbw+HToW ayLK5ZfP4/REOm8UbXsIsADEvlzYGTzfW99woliu+dckLIlTXsZsZMj9RoWrAiCXdWom jvVA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:mime-version:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=xCZHlRo4YjZ4aqAA/MUStUedMe9w4oIiRUjZbGkl/lw=; b=j7bcrc6Y4keJ+O6iBzt9iSOd+wiJfa3xIdaWhFQhMq/T+BgXpFL1DFr08butIA6ww6 gRHGuk+QhYpCr16Fl3vvxN7lfcP0JWMVuiNfBiE51wPaqexvvpoOztAZ1BX5dtq5wkNV s7xO68Q4IC6UgFhOszXgjn3IkkPiJan/fSs/qyk85Nt2ZtdkkY2R1noWdZgSz4BGo2hz GAN5aVue+Xf7OmW2I12y15+/JXU1oiELaF32j/IKFGMASW2AwVeMjIJbQx/LfZ2RsUXd kuXSf5YVZYqun97D/1NYP9RzNAgFkgq7FRVcAAhAjdvtEWkIXUe6YTTXCqetR8mMhgvZ Y9JA==
X-Gm-Message-State: ALQs6tDnZ7xDjeVEPzvzmpOmZk66/3ZzVYd0aU8YQ8JBC2Bv4BwaMODR ZNWZaoR4jIQkhZaq8yOHmPMbFQ==
X-Google-Smtp-Source: AIpwx4/rqZ8F2hANKVFpr4d8kOfmTnwLztOC5iFVMv+evV+PP8gvKxV9Vn/R1uP+xOa6Oy9C6GXk8g==
X-Received: by 10.28.198.77 with SMTP id w74mr15833668wmf.36.1523261350485; Mon, 09 Apr 2018 01:09:10 -0700 (PDT)
Received: from sprevidi-m-f0kt.station (net-2-35-157-172.cust.vodafonedsl.it. [2.35.157.172]) by smtp.gmail.com with ESMTPSA id b203sm129912wmh.2.2018.04.09.01.09.08 (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 09 Apr 2018 01:09:09 -0700 (PDT)
Subject: Re: 6man w.g. last call for <draft-ietf-6man-segment-routing-header-11.txt>
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2104\))
Content-Type: text/plain; charset="utf-8"
From: stefano previdi <stefano@previdi.net>
In-Reply-To: <SN6PR05MB42406D76603C4D7E1B3BE321AEBB0@SN6PR05MB4240.namprd05.prod.outlook.com>
Date: Mon, 09 Apr 2018 10:09:06 +0200
Cc: Bob Hinden <bob.hinden@gmail.com>, IPv6 List <ipv6@ietf.org>
Content-Transfer-Encoding: quoted-printable
Message-Id: <73072E00-E549-488E-8960-B62ACE2F8511@previdi.net>
References: <20160428004904.25189.43047.idtracker@ietfa.amsl.com> <FB1C6E49-81F7-49DD-8E8B-2C0C4735071B@gmail.com> <SN6PR05MB424035B6FECB0057676067B1AEA40@SN6PR05MB4240.namprd05.prod.outlook.com> <87EAF1D7-FC8A-4661-990E-ECCF4AA7C12E@previdi.net> <SN6PR05MB42406D76603C4D7E1B3BE321AEBB0@SN6PR05MB4240.namprd05.prod.outlook.com>
To: Ron Bonica <rbonica@juniper.net>
X-Mailer: Apple Mail (2.2104)
Archived-At: <https://mailarchive.ietf.org/arch/msg/ipv6/7MlxB0N2-xomrgjDTJcVUWPw3RE>
X-BeenThere: ipv6@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: "IPv6 Maintenance Working Group \(6man\)" <ipv6.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ipv6>, <mailto:ipv6-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ipv6/>
List-Post: <mailto:ipv6@ietf.org>
List-Help: <mailto:ipv6-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ipv6>, <mailto:ipv6-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 09 Apr 2018 08:09:15 -0000

Hi Ron,


> On Apr 5, 2018, at 8:44 PM, Ron Bonica <rbonica@juniper.net> wrote:
> 
> Hi Stephano,
> 
> I'm glad you asked this question. RFC 8200 and draft-ietf-6man-segment-routing-header define Segments Left (SL) differently. The difference is a bit subtle and took me a few readings to catch.
> 
> RFC 8200 defines SL as follows:
> 
> "8-bit unsigned integer.  Number of route  segments remaining, i.e., number of explicitly listed intermediate nodes still to be visited before reaching the final destination."
> 
> Therefore, if a packet arrives at a node and the following conditions are true, the node skips over the Routing Extension Header and processes the next header:
> 
> - The packets IPv6 Destination address is local to the node
> - The packet contains a Routing Extension Header
> - The SL value in the Routing Extension Header is equal to 0


the same behavior happens into a SR node.


> In RFC 2460, Routing Extension Type RH0 was compliant with this behavior. The description of RHO (RFC 2460, Section 4.4) explains how RH0 used to process SL, offering pseudocode and an example. Between the publication of RFC 2460 and RFC 8200, RHO was deprecated for other reasons. Therefore, the detailed example of SL handling was not brought forward into RFC 8200.


ok. RFC2460 being obsoleted and RFC8200 not having any description, it looks to me the only reference where the processing of the routing header is explained is the SRH draft. 

Obviously, the processing of the routing header and the processing of an unrecognized routing header type didn’t change.


> But even though this example was not brought forward into RFC 8200, it explains why RFC 8200 says:
> 
> "If, while processing a received packet, a node encounters a Routing header with an unrecognized Routing Type value, the required behavior of the node depends on the value of the Segments Left field, as  follows:
> 
> If Segments Left is zero, the node must ignore the Routing header and proceed to process the next header in the packet, whose type is identified by the Next Header field in the Routing header.
> 
> If Segments Left is non-zero, the node must discard the packet and  send an ICMP Parameter Problem, Code 0, message to the packet's Source Address, pointing to the unrecognized Routing Type."
> 
> This is because an SL value of 0 means that the Routing Extension Header has already been completely processed by upstream nodes. Even if the node recognized the Routing Type, it still would skip over it.


correct. And note that by 
    “processing of the routing header” 
we intend 
    “update the DA with the next segment on the list”.

So, when SL==0 there’s nothing that needs to be processed in the header.


> By contrast, draft-ietf-6man-segment-routing header defines the Segments Left as follows:
> 
> "Defined in [RFC8200], it contains the index, in the Segment List, of the next segment to inspect.  Segments Left  is decremented at each segment.
> 
> Therefore, if a packet arrives at a node and the following conditions are true, the node processes Segment[0]:
> 
> - The packets IPv6 Destination address is local to the node
> - The packet contains a Routing Extension Header
> - The SL value in the Routing Extension Header is equal to 0


SL==0 doesn’t imply any processing of the SRH. Both END and END.x functions starts with “IF SegmentsLeft > 0”.


> This is different from the behavior described in RFC 8200 and 2460. It also raises two questions:
> 
> - If the node doesn't recognize SRH, is it safe to ignore the SRH, as recommended by RFC 8200


rfc8200 applies here. 


> - If the node does recognize SRH and the segment requires decapsulation and forwarding, are Extension Headers that follow SRH (e.g. Fragment, Destination Options) ignored?


rfc8200 applies here.

Thanks.
s.


> 
>                                                             Ron
> 
> 
>> -----Original Message-----
>> From: stefano previdi <stefano@previdi.net>
>> Sent: Thursday, April 5, 2018 5:30 AM
>> To: Ron Bonica <rbonica@juniper.net>
>> Cc: Bob Hinden <bob.hinden@gmail.com>; IPv6 List <ipv6@ietf.org>
>> Subject: Re: 6man w.g. last call for <draft-ietf-6man-segment-routing-
>> header-11.txt>
>> 
>> Ron,
>> 
>> on comment 5:
>> 
>> 
>>> Section 2.2 SRv6 Segment (Comment 5)
>>> 
>>> According to RFC 8200:
>>> 
>>> "If, while processing a received packet, a node encounters a Routing
>> header with an unrecognized Routing Type value, the required behavior of
>> the node depends on the value of the Segments Left field, as follows:
>>> 
>>> -  If Segments Left is zero, the node must ignore the Routing header and
>> proceed to process the next header in the packet, whose type is identified
>> by the Next Header field in the Routing header.
>>> 
>>> -  If Segments Left is non-zero, the node must discard the packet and send
>> an ICMP Parameter Problem, Code 0, message to the packet's Source
>> Address, pointing to the unrecognized Routing Type."
>>> 
>>> This is safe, so long as all Routing Extension Types use SL == 0  to indicate
>> that the Routing Extension Header has been completely processed. It is may
>> not be safe when SL == 0 means that one more segment needs to be
>> processed.
>>> 
>>> In the SRH, SL == 0 indicates that one more segment needs to be
>> processed.
>> 
>> 
>> sorry, I don’t understand.
>> 
>> Can you point me the text in draft-ietf-6man-segment-routing-header that
>> states that ?
>> 
>> If it’s the case it should be obviously corrected.
>> 
>> SL==0 means the packet is traveling within the last segment.
>> 
>> draft-ietf-6man-segment-routing-header does not modify the semantic of
>> “Segments Left”.
>> 
>> It does modify the way segment list is encoded (that’s one of the reason it’s
>> a different routing header type) but not the "Segments Left” field semantic.
>> 
>> s.
>> 
>> 
>> 
>> 
>