| rfc8786xml2.original.xml | rfc8786.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="US-ASCII"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <?rfc toc="yes"?> | ||||
| <?rfc tocompact="yes"?> | ||||
| <?rfc tocdepth="3"?> | ||||
| <?rfc tocindent="yes"?> | ||||
| <?rfc symrefs="yes"?> | ||||
| <?rfc sortrefs="yes"?> | ||||
| <?rfc comments="yes"?> | ||||
| <?rfc inline="yes"?> | ||||
| <?rfc compact="yes"?> | ||||
| <?rfc subcompact="no"?> | ||||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
| <!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
| .2119.xml"> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" docName="draft-ietf-pce-stateful | |||
| <!ENTITY RFC4657 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | -flags-01" number="8786" ipr="trust200902" updates="8231" obsoletes="" submissio | |||
| .4657.xml"> | nType="IETF" category="std" consensus="true" xml:lang="en" tocInclude="true" toc | |||
| <!ENTITY RFC5440 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | Depth="3" symRefs="true" sortRefs="true" version="3"> | |||
| .5440.xml"> | ||||
| <!ENTITY RFC8174 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
| .8174.xml"> | ||||
| <!ENTITY RFC8231 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
| .8231.xml"> | ||||
| <!ENTITY RFC8281 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
| .8281.xml"> | ||||
| ]> | ||||
| <rfc category="std" docName="draft-ietf-pce-stateful-flags-01" ipr="trust200902" updates="8231"> | ||||
| <front> | <front> | |||
| <title abbrev="Stateful PCEP Flags">Updated Rules for Processing Stateful PC E Request Parameters Flags</title> | <title abbrev="Stateful PCEP Flags">Updated Rules for Processing Stateful PC E Request Parameters Flags</title> | |||
| <seriesInfo name="RFC" value="8786"/> | ||||
| <author fullname="Adrian Farrel" initials="A." surname="Farrel"> | <author fullname="Adrian Farrel" initials="A." surname="Farrel"> | |||
| <organization>Old Dog Consulting</organization> | <organization>Old Dog Consulting</organization> | |||
| <address> | <address> | |||
| <email>adrian@olddog.co.uk</email> | <email>adrian@olddog.co.uk</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date month="May" year="2020"/> | ||||
| <date month="" year="2020"/> | <area>Routing</area> | |||
| <workgroup>PCE</workgroup> | ||||
| <area>Routing Area</area> | ||||
| <workgroup>PCE Working Group</workgroup> | ||||
| <keyword>PCEP</keyword> | <keyword>PCEP</keyword> | |||
| <keyword>Path Computation Element</keyword> | <keyword>Path Computation Element</keyword> | |||
| <keyword>Stateful PCE</keyword> | <keyword>Stateful PCE</keyword> | |||
| <keyword>Flags</keyword> | <keyword>Flags</keyword> | |||
| <abstract> | <abstract> | |||
| <t>Extensions to the Path Computation Element Communication Protocol (PCEP | <t>Extensions to the Path Computation Element Communication Protocol | |||
| ) to support | (PCEP) to support stateful Path Computation Elements (PCEs) are defined | |||
| stateful Path Computation Elements (PCEs) are defined in RFC 8231. One | in RFC 8231. One of the extensions is the Stateful PCE Request | |||
| of the extensions | Parameters (SRP) object. That object includes a Flags field that is a | |||
| is the Stateful PCE Request Parameters (SRP) object. That object inclu | set of 32 bit flags, and RFC 8281 defines an IANA registry for tracking | |||
| des a Flags field | assigned flags. However, RFC 8231 does not explain how an | |||
| that is a set of 32 bit flags, and RFC 8281 defines an IANA registry fo | implementation should set unassigned flags in transmitted messages, nor | |||
| r tracking assigned | how an implementation should process unassigned, unknown, or unsupported | |||
| flags. However, RFC 8231 does not explain how an implementation should | flags in received messages.</t> | |||
| set unassigned | ||||
| flags in transmitted messages, nor how an implementation should process | ||||
| unassigned, unknown, | ||||
| or unsupported flags in received messages.</t> | ||||
| <t>This document updates RFC 8231 by defining the correct behaviors.</t> | <t>This document updates RFC 8231 by defining the correct behaviors.</t> | |||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section title="Introduction"> | <section numbered="true" toc="default"> | |||
| <name>Introduction</name> | ||||
| <t><xref target="RFC5440" /> describes the Path Computation Element Commu | <t><xref target="RFC5440" format="default"/> describes the Path | |||
| nication Protocol (PCEP). | Computation Element Communication Protocol (PCEP). PCEP defines the | |||
| PCEP defines the communication between a Path Computation Client (PCC) | communication between a Path Computation Client (PCC) and a Path | |||
| and a Path Computation | Computation Element (PCE), or between PCEs, enabling computation of | |||
| Element (PCE), or between PCEs, enabling computation of Multiprotocol | Multiprotocol Label Switching (MPLS) for Traffic Engineering Label | |||
| Label Switching (MPLS) | Switched Path (TE LSP) characteristics.</t> | |||
| for Traffic Engineering Label Switched Path (TE LSP) characteristics.< | <t><xref target="RFC8231" format="default"/> specifies a set of | |||
| /t> | extensions to PCEP to enable stateful control of LSPs within and across | |||
| PCEP sessions in compliance with <xref target="RFC4657" | ||||
| <t><xref target="RFC8231" /> specifies a set of extensions to PCEP to ena | format="default"/>. It includes mechanisms to effect Label Switched | |||
| ble stateful control of | Path (LSP) State Synchronization between PCCs and PCEs, delegation of | |||
| LSPs within and across PCEP sessions in compliance with <xref target=" | control over LSPs to PCEs, and PCE control of timing and sequence of | |||
| RFC4657" />. It includes | path computations within and across PCEP sessions.</t> | |||
| mechanisms to effect Label Switched Path (LSP) State Synchronization b | <t>One of the extensions defined in <xref target="RFC8231" | |||
| etween PCCs and PCEs, | format="default"/> is the Stateful PCE Request Parameters (SRP) object. | |||
| delegation of control over LSPs to PCEs, and PCE control of timing and | That object includes a Flags field that is a set of 32 bit flags, and | |||
| sequence of path | RFC 8281 defines an IANA registry for tracking assigned | |||
| computations within and across PCEP sessions.</t> | flags. However, RFC 8231 does not explain how an | |||
| implementation should set unassigned flags in transmitted messages, nor | ||||
| <t>One of the extensions defined in <xref target="RFC8231" /> is the Stat | how an implementation should process unassigned or unknown flags in | |||
| eful PCE Request Parameters | received messages.</t> | |||
| (SRP) object. That object includes a Flags field that is a set of 32 | <t>Furthermore, <xref target="RFC8231"/> gives no | |||
| bit flags, and RFC 8281 | guidance to the authors of future specifications about how to describe | |||
| defines an IANA registry for tracking assigned flags. However, RFC 82 | the interaction between flags that have already been defined and flags | |||
| 31 does not explain how an | being defined in the new specifications.</t> | |||
| implementation should set unassigned flags in transmitted messages, no | ||||
| r how an implementation | ||||
| should process unassigned or unknown flags in received messages.</t> | ||||
| <t>Furthermore, <xref target="RFC8231" /> gives no guidance to the author | ||||
| s of future specifications | ||||
| about how to describe the interaction between flags that have already | ||||
| been defined and flags | ||||
| being defined in the new specifications.</t> | ||||
| <t>This document updates RFC 8231 by defining the correct behaviors.</t> | <t>This document updates RFC 8231 by defining the correct behaviors.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <name>Requirements Language</name> | ||||
| <section title="Requirements Language"> | <t> | |||
| The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | ||||
| <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP 1 | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
| 4 | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are | |||
| <xref target="RFC2119" /> <xref target="RFC8174" /> when, and only when | to be interpreted as described in BCP 14 <xref target="RFC2119"/> | |||
| , | <xref target="RFC8174"/> when, and only when, they appear in all capitals, | |||
| they appear in all capitals, as shown here.</t> | as shown here. | |||
| </t> | ||||
| </section> | </section> | |||
| <section anchor="update" numbered="true" toc="default"> | ||||
| <name>Updated Procedures</name> | ||||
| <section anchor="advice" numbered="true" toc="default"> | ||||
| <name>Advice for Specification of New Flags</name> | ||||
| <section anchor="update" title="Updated Procedures"> | <t><xref target="RFC8231" sectionFormat="of" section="7"/> introduces | |||
| changes to existing PCEP objects and defines new PCEP objects and TLVs | ||||
| <section anchor="advice" title="Advice for Specification of New Flags"> | in support of stateful PCE functionality. That text does not advise | |||
| future specifications on how to describe the interaction between flags | ||||
| <t>Section 7 of <xref target="RFC8231" /> introduces changes to existing | that may be defined.</t> | |||
| PCEP objects | ||||
| and the definition of new PCEP objects and TLVs in support of statefu | ||||
| l PCE functionality. | ||||
| That text does not advise future specifications how to describe the i | ||||
| nteraction | ||||
| between flags that may be defined.</t> | ||||
| <t>The text in Section 7 is updated to read as follows: | <t>The text in <xref target="RFC8231" sectionFormat="of" section="7"/> | |||
| <list style="empty"> | is updated to read as follows: | |||
| <t>The PCEP objects defined in this document are compliant with th | </t> | |||
| e PCEP | ||||
| object format defined in <xref target="RFC5440" />. The P and | ||||
| I flags of the PCEP | ||||
| objects defined in the current document MUST be set to 0 on | ||||
| transmission and SHOULD be ignored on receipt since they are | ||||
| exclusively related to path computation requests.</t> | ||||
| <t>The sections that follow define PCEP objects and TLVs that cont | ||||
| ain flags | ||||
| fields, and some flag values are defined. Future specification | ||||
| s may define | ||||
| further flags, and each new specification that defines addition | ||||
| al flags is | ||||
| expected to describe the interaction between these new flags an | ||||
| d any existing | ||||
| flags. In particular, new specifications are expected to expla | ||||
| in how to | ||||
| handle the cases when both new and pre-existing flags are set.< | ||||
| /t> | ||||
| </list></t> | ||||
| <ul empty="true" spacing="normal"> | ||||
| <li>The PCEP objects defined in this document are compliant with the | ||||
| PCEP object format defined in <xref target="RFC5440" | ||||
| format="default"/>. The P and I flags of the PCEP objects defined | ||||
| in the current document <bcp14>MUST</bcp14> be set to 0 on | ||||
| transmission and <bcp14>SHOULD</bcp14> be ignored on receipt since | ||||
| they are exclusively related to path computation requests.</li> | ||||
| <li>The sections that follow define PCEP objects and TLVs that | ||||
| contain Flags fields, and some flag values are defined. Future | ||||
| specifications may define further flags, and each new specification | ||||
| that defines additional flags is expected to describe the | ||||
| interaction between these new flags and any existing flags. In | ||||
| particular, new specifications are expected to explain how to handle | ||||
| the cases when both new and pre-existing flags are set.</li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="SRPflags" numbered="true" toc="default"> | ||||
| <section anchor="SRPflags" title="Flags Field of the SRP Object"> | <name>Flags Field of the SRP Object</name> | |||
| <t><xref target="RFC8231" sectionFormat="of" section="7.2"/> defines the | ||||
| <t>Section 7.2 of <xref target="RFC8231" /> defines the PCEP SRP object. | PCEP SRP object. It describes | |||
| It describes | the Flags field as: | |||
| the flags field as: | </t> | |||
| <list style="empty"> | <ul empty="true" spacing="normal"> | |||
| <t>Flags (32 bits): None defined yet.</t> | <li>Flags (32 bits): None defined yet.</li> | |||
| </list></t> | </ul> | |||
| <t>This document updates that text as follows: | <t>This document updates that text as follows: | |||
| <list style="empty"> | </t> | |||
| <t>Flags (32 bits): This document does not define any flags. Unas | <ul empty="true" spacing="normal"> | |||
| signed flags | <li>Flags (32 bits): This document does not define any flags. Unassig | |||
| MUST be set to zero on transmission and MUST be ignored on rece | ned flags | |||
| ipt. | <bcp14>MUST</bcp14> be set to zero on transmission and <bcp14>M | |||
| Implementations that do not understand any particular flag MUST | UST</bcp14> be ignored on receipt. | |||
| ignore the | Implementations that do not understand any particular flag <bcp | |||
| flag.</t> | 14>MUST</bcp14> ignore the | |||
| </list></t> | flag.</li> | |||
| </ul> | ||||
| </section> | </section> | |||
| </section> | ||||
| <section anchor="Backward" title="Compatibility Considerations"> | ||||
| <t>While one of the main objectives of the changes made by this document | ||||
| is to enable backward | ||||
| compatibility, there remains an issue of compatibility between existin | ||||
| g implementations of | ||||
| RFC 8231 and implementations that are consistent with this document.</ | ||||
| t> | ||||
| <t>It should be noted that common behavior for flags fields is as describ | ||||
| ed by the updated text | ||||
| presented in <xref target="update" />. Thus, many implementations, la | ||||
| cking guidance from RFC 8231, | ||||
| will still have implemented a consistent and future-proof approach. H | ||||
| owever, for completeness | ||||
| it is worth noting how behaviors might interact between implementation | ||||
| s.</t> | ||||
| <t>SRP objects generated by an implementation of this document will set a | ||||
| ll unknown flag bits to | ||||
| zero and will therefore cause no issues to an older implementation eve | ||||
| n if it inspects those | ||||
| bits. Similarly, an implementation of this document will not inspect | ||||
| any unknown flag bits and | ||||
| will therefore be unaffected by older implementations no matter how th | ||||
| ey set the flags.</t> | ||||
| <t>There will remain an issue with compatibility between implementations | ||||
| of RFC 8231 that might | ||||
| set any of the unassigned flags, and current (such as <xref target="RF | ||||
| C8281" />) and future | ||||
| (such as <xref target="I-D.ietf-pce-lsp-control-request" />) specifica | ||||
| tions that assign specific | ||||
| meanings to flags if set. That problem cannot be fixed in old impleme | ||||
| ntations by any amount of | ||||
| documentation, and can only be handled for future specifications by ob | ||||
| soleting the Flags field | ||||
| and using a new technique. Fortunately, however, most implementations | ||||
| will have been constructed | ||||
| to set unused flags to zero which is consistent with the behavior desc | ||||
| ribed in this document and | ||||
| so the risk of bad interactions is sufficiently small that there is no | ||||
| need to obsolete the | ||||
| existing Flags field.</t> | ||||
| </section> | </section> | |||
| <section anchor="Backward" numbered="true" toc="default"> | ||||
| <name>Compatibility Considerations</name> | ||||
| <t>While one of the main objectives of the changes made by this document | ||||
| is to enable backward compatibility, there remains an issue of | ||||
| compatibility between existing implementations of RFC 8231 and | ||||
| implementations that are consistent with this document.</t> | ||||
| <t>It should be noted that common behavior for Flags fields is as | ||||
| described by the updated text presented in <xref target="update" | ||||
| format="default"/>. Thus, many implementations, lacking guidance from | ||||
| RFC 8231, will still have implemented a consistent and future-proof | ||||
| approach. However, for completeness, it is worth noting how behaviors | ||||
| might interact between implementations.</t> | ||||
| <t>SRP objects generated by an implementation of this document will set | ||||
| all unknown flag bits to zero and will therefore cause no issues to an | ||||
| older implementation even if it inspects those bits. Similarly, an | ||||
| implementation of this document will not inspect any unknown flag bits | ||||
| and will therefore be unaffected by older implementations no matter how | ||||
| they set the flags.</t> | ||||
| <section anchor="Imps" title="Implementation Status"> | <t>There will remain an issue with compatibility between implementations | |||
| and how they set the flags. An implementation of RFC 8231 might set any | ||||
| <t>[NOTE TO RFC EDITOR: Please remove this section before publication as | of the unassigned flags, but an implementation of a future or current | |||
| an RFC.]</t> | specification (such as <xref target="RFC8281" format="default"/> or | |||
| <xref target="RFC8741" format="default"/>) assigns specific meanings to | ||||
| <t>While this document describes changes to <xref target="RFC8231" /> tha | a flag if set. That problem cannot be fixed in old implementations by | |||
| t are important for | any amount of documentation and can only be handled for future | |||
| implementation, and while the document gives advice to implementations | specifications by obsoleting the Flags field and using a new technique. | |||
| , there is nothing | Fortunately, however, most implementations will have been constructed to | |||
| specific in this document to implement.</t> | set unused flags to zero, which is consistent with the behavior | |||
| described in this document, and so the risk of bad interactions is | ||||
| <t>A private and unscientific poll of implementers of RFC 8231 conducted | sufficiently small that there is no need to obsolete the existing Flags | |||
| by the author suggests | field.</t> | |||
| that existing implementations already abide by the modification set ou | ||||
| t in this document.</t> | ||||
| </section> | </section> | |||
| <section anchor="Management" title="Management Considerations"> | <section anchor="Management" numbered="true" toc="default"> | |||
| <name>Management Considerations</name> | ||||
| <t>Implementations receiving set SRP flags that they do not recognize MAY | <t>Implementations receiving set SRP flags that they do not recognize <bcp | |||
| log this. That could | 14>MAY</bcp14> log this. That could | |||
| be helpful for diagnosing backward compatibility issues with future fe atures that utilize those | be helpful for diagnosing backward compatibility issues with future fe atures that utilize those | |||
| flags.</t> | flags.</t> | |||
| </section> | </section> | |||
| <section anchor="Security" numbered="true" toc="default"> | ||||
| <section anchor="Security" title="Security Considerations"> | <name>Security Considerations</name> | |||
| <t><xref target="RFC8231" /> sets out security considerations for PCEP whe | <t><xref target="RFC8231" format="default"/> sets out security considerati | |||
| n used for communication | ons for PCEP when used for communication | |||
| with a stateful PCE. This document does not change those consideration s.</t> | with a stateful PCE. This document does not change those consideration s.</t> | |||
| <t>However, by defining the expected behavior of implementations, this | ||||
| <t>However, by defining the expected behavior of implementations, this doc | document may improve the stability of networks and thus reduce the | |||
| ument may improve the | attack surface. That is, by reminding implementations to ignore unset | |||
| stability of networks and thus reduce the attack surface. That is, by | bits, it is less possible to attack them by randomly tweaking bits. | |||
| reminding implementations | Furthermore, by reminding implementations to leave undefined bits unset, | |||
| to ignore unset bits, it is less possible to attack them by randomly tw | the network is future-proofed against new definitions of previously | |||
| eaking bits. Furthermore, | undefined bits.</t> | |||
| by reminding implementations to leave undefined bits unset, the network | ||||
| is future-proofed against | ||||
| new definitions of previously undefined bits.</t> | ||||
| </section> | ||||
| <section anchor="IANA" title="IANA Considerations"> | ||||
| <t>IANA maintains a registry called the "Path Computation Element Protocol | ||||
| (PCEP) Numbers" registry | ||||
| with a subregistry called " SRP Object Flag Field". IANA is requested t | ||||
| o update the Reference in | ||||
| that subregistry to include a reference to this document in addition to | ||||
| [RFC8281].</t> | ||||
| </section> | </section> | |||
| <section anchor="IANA" numbered="true" toc="default"> | ||||
| <section anchor="Acknowledgements" title="Acknowledgements"> | <name>IANA Considerations</name> | |||
| <t>Thanks to the authors of <xref target="I-D.ietf-pce-lsp-control-request | <t>IANA maintains a registry called the "Path Computation Element | |||
| " /> for exposing the | Protocol (PCEP) Numbers" registry with a subregistry called "SRP Object | |||
| need for this work. Thanks to Dhruv Dhody and Julien Meuric for discus | Flag Field". IANA has updated the reference for that | |||
| sing the solution. | subregistry to list this document in addition to | |||
| Additional thanks to Hariharan Ananthakrishnan for his Shepherd's | <xref target="RFC8281"/>.</t> | |||
| review. Thanks to | ||||
| Benjamin Kaduk and Alvaro Retana for helpful comments during IESG revie | ||||
| w.</t> | ||||
| </section> | </section> | |||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <references> | ||||
| <name>References</name> | ||||
| <references> | ||||
| <name>Normative References</name> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.2119.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8174.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8231.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8281.xml"/> | ||||
| </references> | ||||
| <references> | ||||
| <name>Informative References</name> | ||||
| <references title="Normative References"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| &RFC2119; | FC.8741.xml"/> | |||
| &RFC8174; | ||||
| &RFC8231; | ||||
| &RFC8281; | ||||
| </references> | ||||
| <references title="Informative References"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <?rfc include="reference.I-D.ietf-pce-lsp-control-request"?> | FC.4657.xml"/> | |||
| &RFC4657; | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| &RFC5440; | FC.5440.xml"/> | |||
| </references> | ||||
| </references> | </references> | |||
| <section anchor="Acknowledgements" numbered="false" toc="default"> | ||||
| <name>Acknowledgements</name> | ||||
| <t>Thanks to the authors of <xref target="RFC8741" format="default"/> | ||||
| for exposing the need for this work. Thanks to <contact fullname="Dhruv | ||||
| Dhody"/> and <contact fullname="Julien Meuric"/> for discussing the | ||||
| solution. Additional thanks to <contact fullname="Hariharan | ||||
| Ananthakrishnan"/> for his Shepherd's review. Thanks to <contact | ||||
| fullname="Benjamin Kaduk"/> and <contact fullname="Alvaro Retana"/> for | ||||
| helpful comments during IESG review.</t> | ||||
| </section> | ||||
| </back> | </back> | |||
| </rfc> | </rfc> | |||
| End of changes. 32 change blocks. | ||||
| 265 lines changed or deleted | 191 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||