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

stefano previdi <stefano@previdi.net> Thu, 12 April 2018 13:59 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 DE2E1127867 for <ipv6@ietfa.amsl.com>; Thu, 12 Apr 2018 06:59:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.609
X-Spam-Level:
X-Spam-Status: No, score=-2.609 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_LOW=-0.7, T_DKIMWL_WL_MED=-0.01, URIBL_BLOCKED=0.001] 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 p1ZIRe1tVrby for <ipv6@ietfa.amsl.com>; Thu, 12 Apr 2018 06:59:02 -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 E036212778E for <ipv6@ietf.org>; Thu, 12 Apr 2018 06:59:01 -0700 (PDT)
Received: by mail-wm0-x22d.google.com with SMTP id b127so11909237wmf.5 for <ipv6@ietf.org>; Thu, 12 Apr 2018 06:59:01 -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=mI9HvUtIVdeTFIho/g8H5lX0iQC5D4rSXIvXfRkC51U=; b=gtrUblG0SgOsh8O3SILzNin+NJugmLTZSJI+RZ6r8wAtcMxome8wLUauQRRy+4eERw EZtVG896YElvhRJ1TN9xCdM9b0hBjuc/BfJdqRJA1r/yezBUGZEm8CfYI4DDF1Xw7Xbt cClqgKHnGRx4fELBa00Ewui6GzA9/vNfe9gZR4p6S3D7gmjCdmv9gBnYyTm8n5sF5a0S 3pERTO6dxa9i41HrAKnTrBVAF1KvT5lzPTeNes+5C/omKfddnlIfdIHunnyvjaJPJGNq lKA1d9gngcX7XMSMCIh54G/xhe14ABwEYTRzoYNUH0AVv+1Z+2BVRjCM6wjoA8nuTNu3 N4mQ==
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=mI9HvUtIVdeTFIho/g8H5lX0iQC5D4rSXIvXfRkC51U=; b=Dylqc7U7ruZ1vEMNEkzSmqoKqF5tQCXI0NB/FO8RKQRjtHrGVVJmriUVIF9bu7Q37Z Wbyb1sGDTzEByFm0h/uakptHXbrE7mWqjayLpNlguGGK2kYBD8JIviYvecVrjb2VlOto pLHw9diUulwQ2gjOT98r9dz9XGuxpW+dwW6KYXadYFQiMApCytZKQ3n8QYIfbJT6oi3r BxvNIGnvIlvlqmJQ2jiaxeotpZgmq/X2oDQDWHB1GCpbTBC1mHukQRVTYoV3u5uKz/hh RVvB8fZeUluDKLzdLPAaagTOj3SlZnwJNOxVy5StACZAIFV/TdgXtfJsgORD73GRp/3f 5vxQ==
X-Gm-Message-State: ALQs6tBVuElqPxi2SHf+/zGWFw/+rSZmg5hCBbLgG4bllb2FuZNlVcdM zgDQW5hST22QfhFS5pY9SYgjFw==
X-Google-Smtp-Source: AIpwx4/JbpuChO/mW4MHCeQOcMrz1BYYICk5OGeTBeeWGpryq8nOPyORPIxYhWwztiwtLA7ov6FY+A==
X-Received: by 10.28.167.204 with SMTP id q195mr823769wme.48.1523541540356; Thu, 12 Apr 2018 06:59:00 -0700 (PDT)
Received: from [192.168.43.78] ([5.170.129.95]) by smtp.gmail.com with ESMTPSA id z11sm3307009wre.15.2018.04.12.06.58.58 (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 12 Apr 2018 06:58:59 -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: <SN6PR05MB4240C8C987A30D3849E866B8AEBD0@SN6PR05MB4240.namprd05.prod.outlook.com>
Date: Thu, 12 Apr 2018 15:58:57 +0200
Cc: Bob Hinden <bob.hinden@gmail.com>, IPv6 List <ipv6@ietf.org>
Content-Transfer-Encoding: quoted-printable
Message-Id: <46C3FE7C-014A-4E99-B001-4D59DE55A129@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> <73072E00-E549-488E-8960-B62ACE2F8511@previdi.net> <SN6PR05MB4240C8C987A30D3849E866B8AEBD0@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/CNDoY0ja8AIVJ7SOcGUIldZ0OOI>
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: Thu, 12 Apr 2018 13:59:06 -0000

Hi Ron,


> On Apr 11, 2018, at 10:08 PM, Ron Bonica <rbonica@juniper.net> wrote:
> 
> Stephano,
> 

> This entire conversation is muddied by that fact that a segment identifier is a 128-bit entity that represents either:
> 
> - An IPv6 interface (i.e., an attachment to a network link, as defined in [RFC 4291])
> - A locator:instruction:parameter structure
> 
> When the Destination Address / Segment Identifier represents a locator:instruction:parameter structure:
> 
> - the locator (high-order bits) represent a node to which the packet should be delivered
> - the instruction (low-order bits) represents how the packet should be processed once it arrives at that node
> - the parameter (lowest-order bits)  constrains the instruction
> 
> As with any Routing Extension Header, we swap segment identifiers in and out of the Destination Address field of the basic IPv6 header.


while I understand the difference, I don’t see how/when this can be a problem in between the SRH draft and rfc8200 especially now that rfc8200 only describes what a node must do when receiving an unrecognized routing header type.


> So, when the packet arrives at a locator and SL==0, it is questionable as to whether the SRH has been completely processed.


“processing an SRH” means:
. decrement segmentsLeft
. update DA with segmentList[segmentsLeft]

so, when a packet is received and if SL==0, there’s no processing of the SRH. 

Still the SRH may contain valuable data that the node may have some use of it, but the processing of the SRH does NOT happen when SL==0.

So, again, it’s perfectly normal to apply what rfc8200 mandates:
      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.


> At very least, the node needs to execute the instruction that is encoded within the IP Destination Address


correct.


> and Segment List[0].


of course, the whole segment list is still in the SRH (exactly the same for what rfc2460 expected) but this doesn’t mean the node has to process the SRH (i.e.: the node does NOT have to decrement segmentsLeft and does NOT have to update DA).


> The node may even need to examine the SRH to execute that instruction.
> 
> I am pretty sure that the required procedures can be specified unambiguously. But since we are playing a little fast-and-loose with the semantics of an IP Destination Address, our specification needs to be extremely well crafted.


Darren is working on a new text for the processing so hopefully we can nail this down.

Thanks.
s.


> 
>                                                       Ron
> 
>> -----Original Message-----
>> From: stefano previdi <stefano@previdi.net>
>> Sent: Monday, April 9, 2018 4:09 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>
>> 
>> 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.
>>>> 
>>>> 
>>>> 
>>>> 
>>> 
>