Re: [Pce] WG Last Call for draft-ietf-pce-binding-label-sid-07 (and Code Point Allocation)

Adrian Farrel <adrian@olddog.co.uk> Fri, 26 March 2021 11:23 UTC

Return-Path: <adrian@olddog.co.uk>
X-Original-To: pce@ietfa.amsl.com
Delivered-To: pce@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 505C43A1BDB; Fri, 26 Mar 2021 04:23:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.895
X-Spam-Level:
X-Spam-Status: No, score=-1.895 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, 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 3stPhiv3Jlur; Fri, 26 Mar 2021 04:23:10 -0700 (PDT)
Received: from mta7.iomartmail.com (mta7.iomartmail.com [62.128.193.157]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0F36C3A1BD9; Fri, 26 Mar 2021 04:23:09 -0700 (PDT)
Received: from vs3.iomartmail.com (vs3.iomartmail.com [10.12.10.124]) by mta7.iomartmail.com (8.14.4/8.14.4) with ESMTP id 12QBMu3j018710; Fri, 26 Mar 2021 11:22:58 GMT
Received: from vs3.iomartmail.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id DCA602203C; Fri, 26 Mar 2021 11:22:57 +0000 (GMT)
Received: from asmtp3.iomartmail.com (unknown [10.12.10.224]) by vs3.iomartmail.com (Postfix) with ESMTPS id C6F4D2203A; Fri, 26 Mar 2021 11:22:57 +0000 (GMT)
Received: from LAPTOPK7AS653V ([84.93.32.41]) (authenticated bits=0) by asmtp3.iomartmail.com (8.14.4/8.14.4) with ESMTP id 12QBMuGp009253 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Fri, 26 Mar 2021 11:22:57 GMT
Reply-To: adrian@olddog.co.uk
From: Adrian Farrel <adrian@olddog.co.uk>
To: "'Chengli (Cheng Li)'" <c.l@huawei.com>, julien.meuric@orange.com, pce@ietf.org
Cc: draft-ietf-pce-binding-label-sid@ietf.org
References: <7010_1616065722_605334BA_7010_19_1_3f1d8d24-af98-f962-95ea-0e6ec46b738c@orange.com> <0b8501d71fcd$c68ee810$53acb830$@olddog.co.uk> <a766e147b12c4416943a7fbd494cd346@huawei.com>
In-Reply-To: <a766e147b12c4416943a7fbd494cd346@huawei.com>
Date: Fri, 26 Mar 2021 11:22:55 -0000
Organization: Old Dog Consulting
Message-ID: <01d201d72232$5f3c1040$1db430c0$@olddog.co.uk>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
X-Mailer: Microsoft Outlook 16.0
Thread-Index: AQF5+g9UqT0wjWcvYUMbbc0LfQqsYwGaymB7ASUvpqerOlxrAA==
Content-Language: en-gb
X-Originating-IP: 84.93.32.41
X-Thinkmail-Auth: adrian@olddog.co.uk
X-TM-AS-GCONF: 00
X-TM-AS-Product-Ver: IMSVA-9.0.0.1623-8.2.0.1013-26052.007
X-TM-AS-Result: No--13.952-10.0-31-10
X-imss-scan-details: No--13.952-10.0-31-10
X-TMASE-Version: IMSVA-9.0.0.1623-8.2.1013-26052.007
X-TMASE-Result: 10--13.951700-10.000000
X-TMASE-MatchedRID: CxmI61mtwh/xIbpQ8BhdbI61Z+HJnvsOFp4YCwpWQx6qvcIF1TcLYCB0 lLfwuwKcjD3qZivMR8hdZKFawINVRhTBVEIvqWphGUlF/M3Dxp/g02I3oyGU8LlFNxpkoauJJhV 9PPW3jyzspvqcNfZ3X6yIa8+cpj+H64YaJwvKvEMD2WXLXdz+AQKflB9+9kWVq7FI/pTKulUWSo kgvu/zbPcf4bBeoqJWMajSuGZuEZ58pgecdPLWZXT7rnt3EYkY52mltlE2n8hkylnD9Bt5/BCt+ Sw57jGmynHfTAMx2c8Nc6ZwnXdop1kA0yRIaRom0x8on4GtZ8fM3YWjd+4gDITGTpzirPHy9VlG BjCDnciie1qqk6DUhw/A0c8wCvM5XJaKTPwymT3yKt/vA0HdKEKOGTgHJV9S1zm/LsNdbGOffgR i+5xRiNDpO/xvCuTcNK6MtNDfRT2lSLM56aAmmJMIKPXbrloXAf1C358hdK8LJKBkFcV+xNE+hC 4M89pCi3Pl8uc7naZiJSXeSGoQW2St9c6xY079vOAv94sAIMTyR9+fVCb6GHrjo3X9e+DHM36vq XHE/YZK3ToMnUd87slVYuNKJnFu90rcSoyiMHvece0aRiX9WgRsBMbTTgAPXplsKAlw4/UgpGmJ AKdhm3ymUkpdn5GyyGSvWTmXRTHxPdkZBNfrSfFCD/XOqpSbKQNhMboqZlocja+OII/I+4XxZal 9SBRVQMOJEqjTDAAiBkJI/w7eaHbI+PVdeqUpMpVOsYwN78PEGBoHKd3a+fuiO5t6hLaGpXO0hn l5Ljy705JGvJx6s1OrnFa7KLN05fMkekEWjxueAiCmPx4NwFkMvWAuahr8m5N2YHMD0b8MyrfP9 j+C1d934/rDAK3zGjFMngtLLWicA6dTiL984ybx+TMac4wOYA84vo2Qi5mQFODhh2iCBw4vIaJd sr+NGPKdpQMvEwY=
X-TMASE-SNAP-Result: 1.821001.0001-0-1-12:0,22:0,33:0,34:0-0
Archived-At: <https://mailarchive.ietf.org/arch/msg/pce/KLTOT6X-7_Kywglf2hTRK-uqqac>
Subject: Re: [Pce] WG Last Call for draft-ietf-pce-binding-label-sid-07 (and Code Point Allocation)
X-BeenThere: pce@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Path Computation Element <pce.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/pce>, <mailto:pce-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/pce/>
List-Post: <mailto:pce@ietf.org>
List-Help: <mailto:pce-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/pce>, <mailto:pce-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 26 Mar 2021 11:23:15 -0000

Hi Cheng!

This is good progress, thanks.

I have cut down to the points that are still open.

Nothing we need to fight about šŸ˜Š

Best,
Adrian

>> == Questions / Issues ==
>>
>> 3.
>>
>>   o  BT = 0: The binding value is an MPLS label carried in the format
>>      specified in [RFC5462] where only the label value is valid, and
>>      other fields MUST be considered invalid.  The Length MUST be set
>>      to 7.
>>
>> I don't think that RFC 5462 is the right reference. That document simply
>> renames a field in the MPLS label stack entry.
>>
>> So, are you carrying an MPLS label or an MPLS label stack entry? Either
>> is possible, although since you're only interested in the label, it might be
>> more normal to carry just the label value in the least significant 20 bits
>> of the binding value field. That would be consistent with a Length of 7.
>>
>> But, if you want to carry the full label stack entry (with the other fields
>> ignored) then perhaps...
>>   o  BT = 0: The binding value is an MPLS label carried in an MPLS 
>>      label stack entry format as specified in [RFC3032] where only the
>>      label value is valid, and other fields MUST be ignored.  The
>>      Length MUST be set to 8.
>>
>> This would be more consistent with:
>>   o  BT = 1: Similar to the case where BT is 0 except that all the
>>      fields on the MPLS label entry are set on transmission.  However,
>>      the receiver MAY choose to override TC, S, and TTL values
>>      according its local policy.  The Length MUST be set to 8.
>> But here you may want a little more clarity as:
>>   o  BT = 1: Similar to the case where BT is 0 except that all the
>>      fields of the MPLS label stack entry are set on transmission of
>>      the PCEP message containing the TLV.  A PCC receiver of this TLV 
>>      in a PCEP message MAY choose to override TC, S, and TTL values 
>>      according its local policy.  The Length MUST be set to 8.
>>
>> But, at the bottom of the section...
>>   For the BT as 0, the 20 bits represent the MPLS
>>   label.  For the BT as 1, the 32-bits represent the label stack entry
>>   as per [RFC5462].
>> Which is going back on itself (and using the wrong reference).
>>
>> Just make a decision on the meaning of BT=0 and make the text clean.
>
> [Cheng] How about this - 
>
>   o  BT = 0: The binding value is a 20-bit MPLS label value.  The TLV
>      is padded to 4-bytes alignment.  The Length MUST be set to 7 and
>      first 20 bits are used to encode the MPLS label value.
>
>   o  BT = 1: The binding value is a 32-bit MPLS label stack entry as
>      per [RFC3032] with Label, TC [RFC5462], S, and TTL values encoded.
>      Note that the receiver MAY choose to override TC, S, and TTL
>      values according to its local policy.  The Length MUST be set to 8.

OK. This is clear. I think you just need to look through the other mentions of BT=0 and BT=1 to make sure they match with this.

>> 3.
>>
>> I'm a bit puzzled as to why this document defines two flags for the Path Binding TLV 
>> Flags field, when this document clearly doesn't use or depend on them.
>>
>> In order to not make [I-D.ietf-spring-segment-routing-policy] a normative reference, perhaps
>> you should not mention the specific bits, create the registry (in 11.1.1) as empty, and simply
>> not that [I-D.ietf-spring-segment-routing-policy] defines some flags.
>>
>> (Obviously, [I-D.ietf-spring-segment-routing-policy] will need to make assignments from 
>> the registry.)
>
> [Cheng] The idea was to make it consistent with IDR WG I-D [draft-ietf-idr-segment-routing-
> te-policy]. 
> One option could be to move this to the SR-policy-related PCE WG I-D [draft-ietf-pce-segment-
> routing-policy-cp]. 
> I have kept this open for now for further discussion.

To be clear, I was suggesting:
- this document creates and defines the registry
- the documents that need codepoints are responsible for requesting allocation of codepoints

>> 4.
>>
>>   Multiple TE-PATH-BINDING TLVs are allowed to be present in the same
>>   LSP object.  This signifies the presence of multiple binding SIDs for
>>   the given LSP.
>>
>> If one of these contains a bad value, and a PCErr is sent according to the previous
>> paragraph, what happens to all the other Binding Values?
>> Are they used or discarded?
>
> [Cheng] They should not be impacted. I have added this - 
>
>   In case of multiple TE-PATH-BINDING TLVs, all
>   instances of TE-PATH-BINDING TLVs MUST always be included in the LSP
>   object.  In case of an error, a PCErr message MAY include the
>   offending TE-PATH-BINDING TLV in the PCEP-ERROR object.

I think maybe I wasn't clear.
Suppose the LSP object contains three TE-PATH-BINDING TLVs (TLV1, TLV2, and TLV3)
Suppose that TLV3 contains a bad value.
That means a PCErr will be sent with PCEP-ERROR and that MAY contain the offending TLV3.
OK so far.
Now, what happens to TLV1 and TLV2?
    Are they processed and used by the receiver?
      Or
    Are they all rejected because the received message has been rejected?
Personally, I think you should reject the whole message because this makes the case of modifying previous values a lot easier (see a later point).

>> 4.
>>
>>   For SRv6 BSIDs, it is RECOMMENDED to always explicitly specify the
>>   SRv6 Endpoint Behavior and SID Structure in the TE-PATH-BINDING TLV
>>   by setting the BT (Binding Type) to 3, instead of 2.  The choice of
>>   interpreting SRv6 Endpoint Behavior and SID Structure when none is
>>   explicitly specified is left up to the implementation.
>>
>> I puzzled about the alternative to "RECOMMENDED".  I wondered if the second
>> sentence was meant to offer that guidance, but perhaps it is intended to only
>> to cover the case when no Path Binding TLV is present.
>> Two concepts in one paragraph?
>
> [Cheng]
> The idea was to say that while BT=2 (just IPv6 address) for BSID is allowed, there
> are older implementations, but BT=3 SHOULD be proffered which requires explicit
> SID structure and behavior to be explicitly encoded. 
> It is not about when no Path Binding TLV is present.
> Do you have a better way to put this?

Ah, and possibly "ouch".
You are actually saying that BT=2 is only present to support pre-standard implementations. That's actually not a good reason to put something in a standard.

How about...
   For SRv6 BSIDs, it is RECOMMENDED to always explicitly specify the
   SRv6 Endpoint Behavior and SID Structure in the TE-PATH-BINDING TLV
   by setting the BT (Binding Type) to 3.  This enables the sender to have
   control of the SRv6 Endpoint Behavior and SID Structure.  A sender MAY
   choose to set the BT to 2, in which case the receiving implementation
   chooses how to interpret the SRv6 Endpoint Behavior and SID Structure
   according to local configuration.

>> 4.
>>
>>   If a PCC wishes to withdraw or modify a previously reported binding
>>   value, it MUST send a PCRpt message without any TE-PATH-BINDING TLV
>>   or with the TE-PATH-BINDING TLV containing the new binding value
>>   respectively.
>>
>>   If a PCE wishes to modify a previously requested binding value, it
>>   MUST send a PCUpd message with TE-PATH-BINDING TLV containing the new
>>   binding value.  The absence of TE-PATH-BINDING TLV in PCUpd message
>>   means that the PCE does not specify a binding value in which case the
>>   binding value allocation is governed by the PCC's local policy.
>>
>> How does this work if multiple binding values have been assigned by
>> using multiple TE-PATH-BINDING TLVs? Suppose, having done that, it
>> is the intention to withdraw one of the binding values but leave the
>> others in place. Should the message making the change contain all the 
>> TLVs except the one being withdrawn?
>>
>>   If a PCC receives a valid binding value from a PCE which is different
>>   than the current binding value, it MUST try to allocate the new
>>   value.  If the new binding value is successfully allocated, the PCC
>>   MUST report the new value to the PCE.  Otherwise, it MUST send a
>>   PCErr message with Error-Type = TBD2 ("Binding label/SID failure")
>>   and Error Value = TBD4 ("Unable to allocate the specified label/
>>   SID").
>>
>> And in this failure case, what is the residual state? Is the old value
>> still in place, or is no value in place?
>
> [Cheng] It has been specified that all instances of TE-PATH-BINDING TLVs
> need to be included and the offending TE-PATH-BINDING TLV can be
> included in the PCEP-ERROR object. 
>
> Any suggestion to make this clearer?

There are two separate issues here. Sorry for including them in one comment.

First. When you send a new PCRpt it completely overwrites any previous PCRpt and so you must include all of the TE-PATH-BINDING TLVs you want to apply form now on. So...
OLD
   If a PCC wishes to withdraw or modify a previously reported binding
   value, it MUST send a PCRpt message without any TE-PATH-BINDING TLV
   or with the TE-PATH-BINDING TLV containing the new binding value
   respectively.

   If a PCE wishes to modify a previously requested binding value, it
   MUST send a PCUpd message with TE-PATH-BINDING TLV containing the new
   binding value.  The absence of TE-PATH-BINDING TLV in PCUpd message
   means that the PCE does not specify a binding value in which case the
   binding value allocation is governed by the PCC's local policy.
NEW
   If a PCC wishes to withdraw all previously reported binding values, it
   MUST send a PCRpt message without any TE-PATH-BINDING TLV.  If a
   PCC wishes to modify any or all previously reported binding values, it
   MUST send a PCRpt message containing TE-PATH-BINDING TLVs 
   containing all the binding values that apply from that point on.

   If a PCE wishes to modify a previously requested binding value, it
   MUST send a PCUpd message with TE-PATH-BINDING TLVs containing
   all the binding values that apply from that point on.  The absence of
   TE-PATH-BINDING TLV in PCUpd message means that the PCE does 
   not specify a binding value in which case the binding value allocation
   is governed by the PCC's local policy, and the PCC MAY continue to
   use the previously allocated values.
END

Second. As discussed in a previous point, you have to describe what happens when a message with multiple TE-PATH-BINDING TLVs contains one that is in error. Is the whole message rejected, or do the good TLVs still get applied?  If the message is rejected, presumably the previously allocated values still apply. If the good TLVs still get actioned, presumably any that are not continued in the new message are removed. You can handle this by:
- addressing the issue as in the previous point
- putting a note here something like...

   As previously noted, if a message that is intended to modify a previously
   allocated binding value contains a TE-PATH-BINDING TLV with a bad 
   value, .... <fill in the details>

>> Expand PCE on first use
>
> [Cheng]Done. BTW PCE has a * in https://www.rfc-editor.org/materials/abbrev.expansion.txt

Oh, that's new. My apologies.

>> 7.
>>
>>      The TLV in LSP object identifies what should be
>>      allocated, such as Binding label/SID.
>>
>> Suggest to remove this sentence as superfluous with following text.
>
> [Cheng] No following text :)
> I suggest changing it to - "The TE-PATH-BINDING TLV in the LSP object identifies
> that the allocation is for Binding label/SID."

Sorry, I meant "with the text that follows in the next sentences of the document."

The document had...

     The TLV in LSP object identifies what should be
      allocated, such as Binding label/SID.  A PCC would set this bit to
      1 and include a TE-PATH-BINDING TLV in the LSP object to request
      for allocation of Binding label/SID by the PCE in the PCEP
      message.  A PCE would also set this bit to 1 and include a TE-
      PATH-BINDING TLV to indicate that the Binding label/SID is
      allocated by PCE and encoded in the PCEP message towards PCC.
      Further, a PCE would set this bit to 0 and include a TE-PATH-
      BINDING TLV in the LSP object to indicate that the Binding label/
      SID should be allocated by the PCC as described in Section 4.

It's not important, but my point was that the first sentence is redundant.

>> 7.
>>
>>      *  Send a PCErr message with Error-Type=19 (Invalid Operation) and
>>         Error-Value=TBD (Attempted PCECC operations when PCECC
>>         capability was not advertised)
>>
>> I understand this to mean to use the Error-Value defined in [I-D.ietf-
>> pce-pcep-extension-for-pce-controller] and marked in that document
>> as TBD3.

[snip]

> [Cheng] IANA has made the allocation as the I-D is in the RFC-Editor queue.
> Perhaps we can use the value directly as per https://www.iana.org/
> assignments/pcep/pcep.xhtml#pcep-error-object?

It is slightly premature to use that value, but I think it is safe to do. So, yes, put the actual value in the text.