| rfc9256v1.txt | rfc9256.txt | |||
|---|---|---|---|---|
| Internet Engineering Task Force (IETF) C. Filsfils | Internet Engineering Task Force (IETF) C. Filsfils | |||
| Request for Comments: 9256 K. Talaulikar, Ed. | Request for Comments: 9256 K. Talaulikar, Ed. | |||
| Updates: 8402 Cisco Systems, Inc. | Updates: 8402 Cisco Systems, Inc. | |||
| Category: Standards Track D. Voyer | Category: Standards Track D. Voyer | |||
| ISSN: 2070-1721 Bell Canada | ISSN: 2070-1721 Bell Canada | |||
| A. Bogdanov | A. Bogdanov | |||
| British Telecom | British Telecom | |||
| P. Mattes | P. Mattes | |||
| Microsoft | Microsoft | |||
| June 2022 | July 2022 | |||
| Segment Routing Policy Architecture | Segment Routing Policy Architecture | |||
| Abstract | Abstract | |||
| Segment Routing (SR) allows a node to steer a packet flow along any | Segment Routing (SR) allows a node to steer a packet flow along any | |||
| path. Intermediate per-path states are eliminated thanks to source | path. Intermediate per-path states are eliminated thanks to source | |||
| routing. SR Policy is an ordered list of segments (i.e., | routing. SR Policy is an ordered list of segments (i.e., | |||
| instructions) that represent a source-routed policy. Packet flows | instructions) that represent a source-routed policy. Packet flows | |||
| are steered into an SR Policy on a node where it is instantiated | are steered into an SR Policy on a node where it is instantiated | |||
| skipping to change at line 90 ¶ | skipping to change at line 90 ¶ | |||
| 5.2. Dynamic Candidate Path | 5.2. Dynamic Candidate Path | |||
| 5.3. Composite Candidate Path | 5.3. Composite Candidate Path | |||
| 6. Binding SID | 6. Binding SID | |||
| 6.1. BSID of a Candidate Path | 6.1. BSID of a Candidate Path | |||
| 6.2. BSID of an SR Policy | 6.2. BSID of an SR Policy | |||
| 6.3. Forwarding Plane | 6.3. Forwarding Plane | |||
| 6.4. Non-SR Usage of Binding SID | 6.4. Non-SR Usage of Binding SID | |||
| 7. SR Policy State | 7. SR Policy State | |||
| 8. Steering into an SR Policy | 8. Steering into an SR Policy | |||
| 8.1. Validity of an SR Policy | 8.1. Validity of an SR Policy | |||
| 8.2. Drop upon Invalid SR Policy | 8.2. Drop-upon-Invalid SR Policy | |||
| 8.3. Incoming Active SID is a BSID | 8.3. Incoming Active SID is a BSID | |||
| 8.4. Per-Destination Steering | 8.4. Per-Destination Steering | |||
| 8.5. Recursion on an On-Demand Dynamic BSID | 8.5. Recursion on an On-Demand Dynamic BSID | |||
| 8.6. Per-Flow Steering | 8.6. Per-Flow Steering | |||
| 8.7. Policy-Based Routing | 8.7. Policy-Based Routing | |||
| 8.8. Optional Steering Modes for BGP Destinations | 8.8. Optional Steering Modes for BGP Destinations | |||
| 9. Recovering from Network Failures | 9. Recovering from Network Failures | |||
| 9.1. Leveraging TI-LFA Local Protection of the Constituent IGP | 9.1. Leveraging TI-LFA Local Protection of the Constituent IGP | |||
| Segments | Segments | |||
| 9.2. Using an SR Policy to Locally Protect a Link | 9.2. Using an SR Policy to Locally Protect a Link | |||
| skipping to change at line 163 ¶ | skipping to change at line 163 ¶ | |||
| The Segment Routing architecture [RFC8402] specifies that any | The Segment Routing architecture [RFC8402] specifies that any | |||
| instruction can be bound to a segment. Thus, an SR Policy can be | instruction can be bound to a segment. Thus, an SR Policy can be | |||
| built using any type of Segment Identifier (SID) including those | built using any type of Segment Identifier (SID) including those | |||
| associated with topological or service instructions. | associated with topological or service instructions. | |||
| This section defines the key aspects and constituents of an SR | This section defines the key aspects and constituents of an SR | |||
| Policy. | Policy. | |||
| 2.1. Identification of an SR Policy | 2.1. Identification of an SR Policy | |||
| An SR Policy MUST be identified through the tuple <headend, color, | An SR Policy MUST be identified through the tuple <Headend, Color, | |||
| endpoint>. In the context of a specific headend, an SR Policy MUST | Endpoint>. In the context of a specific headend, an SR Policy MUST | |||
| be identified by the <color, endpoint> tuple. | be identified by the <Color, Endpoint> tuple. | |||
| The headend is the node where the policy is instantiated/implemented. | The headend is the node where the policy is instantiated/implemented. | |||
| The headend is specified as an IPv4 or IPv6 address and MUST resolve | The headend is specified as an IPv4 or IPv6 address and MUST resolve | |||
| to a unique node in the SR domain [RFC8402]. | to a unique node in the SR domain [RFC8402]. | |||
| The endpoint indicates the destination of the policy. The endpoint | The endpoint indicates the destination of the policy. The endpoint | |||
| is specified as an IPv4 or IPv6 address and SHOULD resolve to a | is specified as an IPv4 or IPv6 address and SHOULD resolve to a | |||
| unique node in the domain. In a specific case (refer to | unique node in the domain. In a specific case (refer to | |||
| Section 8.8.1), the endpoint can be the unspecified address (0.0.0.0 | Section 8.8.1), the endpoint can be the unspecified address (0.0.0.0 | |||
| for IPv4, :: for IPv6) and in this case, the destination of the | for IPv4, :: for IPv6) and in this case, the destination of the | |||
| skipping to change at line 201 ¶ | skipping to change at line 201 ¶ | |||
| (refer to Section 2.2). An SR Policy MAY have multiple names | (refer to Section 2.2). An SR Policy MAY have multiple names | |||
| associated with it in the scenario where the headend receives | associated with it in the scenario where the headend receives | |||
| different SR Policy names along with different candidate paths for | different SR Policy names along with different candidate paths for | |||
| the same SR Policy via the same or different sources. | the same SR Policy via the same or different sources. | |||
| 2.2. Candidate Path and Segment List | 2.2. Candidate Path and Segment List | |||
| An SR Policy is associated with one or more candidate paths. A | An SR Policy is associated with one or more candidate paths. A | |||
| candidate path is the unit for signaling of an SR Policy to a headend | candidate path is the unit for signaling of an SR Policy to a headend | |||
| via protocol extensions like the Path Computation Element | via protocol extensions like the Path Computation Element | |||
| Communication Protocol (PCEP) [RFC8664] [SR-POLICY-CP] or BGP SR | Communication Protocol (PCEP) [RFC8664] [PCEP-SR-POLICY-CP] or BGP SR | |||
| Policy [IDR-SR-TE-POLICY]. | Policy [BGP-SR-POLICY]. | |||
| A Segment-List represents a specific source-routed path to send | A segment list represents a specific source-routed path to send | |||
| traffic from the headend to the endpoint of the corresponding SR | traffic from the headend to the endpoint of the corresponding SR | |||
| Policy. | Policy. | |||
| A candidate path is either dynamic, explicit, or composite. | A candidate path is either dynamic, explicit, or composite. | |||
| An explicit candidate path is expressed as a Segment-List or a set of | An explicit candidate path is expressed as a segment list or a set of | |||
| Segment-Lists. | segment lists. | |||
| A dynamic candidate path expresses an optimization objective and a | A dynamic candidate path expresses an optimization objective and a | |||
| set of constraints for a specific data plane (i.e., SR-MPLS or SRv6). | set of constraints for a specific data plane (i.e., SR-MPLS or SRv6). | |||
| The headend (potentially with the help of a PCE) computes a solution | The headend (potentially with the help of a PCE) computes a solution | |||
| Segment-List (or set of Segment-Lists) that solves the optimization | segment list (or set of segment lists) that solves the optimization | |||
| problem. | problem. | |||
| If a candidate path is associated with a set of Segment-Lists, each | If a candidate path is associated with a set of segment lists, each | |||
| Segment-List is associated with weight for weighted load balancing | segment list is associated with weight for weighted load balancing | |||
| (refer to Section 2.11 for details). The default weight is 1. | (refer to Section 2.11 for details). The default weight is 1. | |||
| A composite candidate path acts as a container for grouping SR | A composite candidate path acts as a container for grouping SR | |||
| Policies. The composite candidate path construct enables the | Policies. The composite candidate path construct enables the | |||
| combination of SR Policies, each with explicit candidate paths and/or | combination of SR Policies, each with explicit candidate paths and/or | |||
| dynamic candidate paths with potentially different optimization | dynamic candidate paths with potentially different optimization | |||
| objectives and constraints, for load-balanced steering of packet | objectives and constraints, for load-balanced steering of packet | |||
| flows over its constituent SR Policies. The following criteria apply | flows over its constituent SR Policies. The following criteria apply | |||
| for inclusion of constituent SR Policies using a composite candidate | for inclusion of constituent SR Policies using a composite candidate | |||
| path under a parent SR Policy: | path under a parent SR Policy: | |||
| skipping to change at line 252 ¶ | skipping to change at line 252 ¶ | |||
| associated with weight for load-balancing purposes (refer to | associated with weight for load-balancing purposes (refer to | |||
| Section 2.11 for details). The default weight is 1. | Section 2.11 for details). The default weight is 1. | |||
| Section 2.13 illustrates an information model for hierarchical | Section 2.13 illustrates an information model for hierarchical | |||
| relationships between the SR Policy constructs described in this | relationships between the SR Policy constructs described in this | |||
| section. | section. | |||
| 2.3. Protocol-Origin of a Candidate Path | 2.3. Protocol-Origin of a Candidate Path | |||
| A headend may be informed about a candidate path for an SR Policy | A headend may be informed about a candidate path for an SR Policy | |||
| <color, endpoint> by various means including: via configuration, PCEP | <Color, Endpoint> by various means including: via configuration, PCEP | |||
| [RFC8664] [SR-POLICY-CP], or BGP [IDR-SR-TE-POLICY]. | [RFC8664] [PCEP-SR-POLICY-CP], or BGP [BGP-SR-POLICY]. | |||
| Protocol-Origin of a candidate path is an 8-bit value associated with | Protocol-Origin of a candidate path is an 8-bit value associated with | |||
| the mechanism or protocol used for signaling/provisioning the SR | the mechanism or protocol used for signaling/provisioning the SR | |||
| Policy. It helps identify the protocol/mechanism that provides or | Policy. It helps identify the protocol/mechanism that provides or | |||
| signals the candidate path and indicates its preference relative to | signals the candidate path and indicates its preference relative to | |||
| other protocols/mechanisms. | other protocols/mechanisms. | |||
| The headend assigns different Protocol-Origin values to each source | The headend assigns different Protocol-Origin values to each source | |||
| of SR Policy information. The Protocol-Origin value is used as a | of SR Policy information. The Protocol-Origin value is used as a | |||
| tiebreaker between candidate paths of equal preference, as described | tiebreaker between candidate paths of equal Preference, as described | |||
| in Section 2.9. The table below specifies the RECOMMENDED default | in Section 2.9. The table below specifies the RECOMMENDED default | |||
| values of Protocol-Origin: | values of Protocol-Origin: | |||
| +=================+===================+ | +=================+===================+ | |||
| | Protocol-Origin | Description | | | Protocol-Origin | Description | | |||
| +=================+===================+ | +=================+===================+ | |||
| | 10 | PCEP | | | 10 | PCEP | | |||
| +-----------------+-------------------+ | +-----------------+-------------------+ | |||
| | 20 | BGP SR Policy | | | 20 | BGP SR Policy | | |||
| +-----------------+-------------------+ | +-----------------+-------------------+ | |||
| skipping to change at line 287 ¶ | skipping to change at line 287 ¶ | |||
| Table 1: Protocol-Origin Default Values | Table 1: Protocol-Origin Default Values | |||
| Note that the above order is to satisfy the need for having a clear | Note that the above order is to satisfy the need for having a clear | |||
| ordering, and implementations MAY allow modifications of these | ordering, and implementations MAY allow modifications of these | |||
| default values assigned to protocols on the headend along similar | default values assigned to protocols on the headend along similar | |||
| lines as a routing administrative distance. Its application in the | lines as a routing administrative distance. Its application in the | |||
| candidate path selection is described in Section 2.9. | candidate path selection is described in Section 2.9. | |||
| 2.4. Originator of a Candidate Path | 2.4. Originator of a Candidate Path | |||
| The originator identifies the node that provisioned or signaled the | The Originator identifies the node that provisioned or signaled the | |||
| candidate path on the headend. The originator is expressed in the | candidate path on the headend. The Originator is expressed in the | |||
| form of a 160-bit numerical value formed by the concatenation of the | form of a 160-bit numerical value formed by the concatenation of the | |||
| fields of the tuple <Autonomous System Number (ASN), node-address> as | fields of the tuple <Autonomous System Number (ASN), node-address> as | |||
| below: | below: | |||
| Autonomous System Number (ASN): represented as a 4-byte number. If | Autonomous System Number (ASN): represented as a 4-byte number. If | |||
| 2-byte ASNs are in use, the low-order 16 bits MUST be used, and | 2-byte ASNs are in use, the low-order 16 bits MUST be used, and | |||
| the high-order bits MUST be set to zero. | the high-order bits MUST be set to 0. | |||
| Node Address: represented as a 128-bit value. IPv4 addresses MUST | Node Address: represented as a 128-bit value. IPv4 addresses MUST | |||
| be encoded in the lowest 32 bits, and the high-order bits MUST be | be encoded in the lowest 32 bits, and the high-order bits MUST be | |||
| set to zero. | set to 0. | |||
| Its application in the candidate path selection is described in | Its application in the candidate path selection is described in | |||
| Section 2.9. | Section 2.9. | |||
| When provisioning is via configuration, the ASN and node address MAY | When provisioning is via configuration, the ASN and node address MAY | |||
| be set to either the headend or the provisioning controller/node ASN | be set to either the headend or the provisioning controller/node ASN | |||
| and address. The default value is 0 for both AS and node address. | and address. The default value is 0 for both AS and node address. | |||
| When signaling is via PCEP, it is the IPv4 or IPv6 address of the | When signaling is via PCEP, it is the IPv4 or IPv6 address of the | |||
| PCE, and the AS number is expected to be set to 0 by default when not | PCE, and the AS number is expected to be set to 0 by default when not | |||
| available or known. | available or known. | |||
| When signaling is via BGP SR Policy, the ASN and node address are | When signaling is via BGP SR Policy, the ASN and node address are | |||
| provided by BGP (refer to [IDR-SR-TE-POLICY]) on the headend. | provided by BGP (refer to [BGP-SR-POLICY]) on the headend. | |||
| 2.5. Discriminator of a Candidate Path | 2.5. Discriminator of a Candidate Path | |||
| The discriminator is a 32-bit value associated with a candidate path | The Discriminator is a 32-bit value associated with a candidate path | |||
| that uniquely identifies it within the context of an SR Policy from a | that uniquely identifies it within the context of an SR Policy from a | |||
| specific Protocol-Origin as specified below: | specific Protocol-Origin as specified below: | |||
| * When provisioning is via configuration, this is an | * When provisioning is via configuration, this is a unique | |||
| implementation's unique identifier for a candidate path; it is | identifier for a candidate path; it is specific to the | |||
| specific to the configuration model. The default value is 0. | implementation's configuration model. The default value is 0. | |||
| * When signaling is via PCEP, the method to uniquely signal an | * When signaling is via PCEP, the method to uniquely signal an | |||
| individual candidate path along with its discriminator is | individual candidate path along with its Discriminator is | |||
| described in [SR-POLICY-CP]. The default value is 0. | described in [PCEP-SR-POLICY-CP]. The default value is 0. | |||
| * When signaling is via BGP SR Policy, the BGP process receiving the | * When signaling is via BGP SR Policy, the BGP process receiving the | |||
| route provides the distinguisher (refer to Section 2.1 of | route provides the distinguisher (refer to [BGP-SR-POLICY]) as the | |||
| [IDR-SR-TE-POLICY]) as the discriminator. Note that the BGP best | Discriminator. Note that the BGP best path selection is applied | |||
| path selection is applied before the route is supplied as a | before the route is supplied as a candidate path, so only a single | |||
| candidate path, so only a single candidate path for a given SR | candidate path for a given SR Policy will be seen for a given | |||
| Policy will be seen for a given discriminator. | Discriminator. | |||
| Its application in the candidate path selection is described in | Its application in the candidate path selection is described in | |||
| Section 2.9. | Section 2.9. | |||
| 2.6. Identification of a Candidate Path | 2.6. Identification of a Candidate Path | |||
| A candidate path is identified in the context of a single SR Policy. | A candidate path is identified in the context of a single SR Policy. | |||
| A candidate path is not shared across SR Policies. | A candidate path is not shared across SR Policies. | |||
| A candidate path is not identified by its Segment-List(s). | A candidate path is not identified by its segment list(s). | |||
| | If CP1 is a candidate path of SR Policy Pol1 and CP2 is a | | If CP1 is a candidate path of SR Policy Pol1 and CP2 is a | |||
| | candidate path of SR Policy Pol2, then these two candidate | | candidate path of SR Policy Pol2, then these two candidate | |||
| | paths are independent, even if they happen to have the same | | paths are independent, even if they happen to have the same | |||
| | Segment-List. The Segment-List does not identify a candidate | | segment list. The segment list does not identify a candidate | |||
| | path. The Segment-List is an attribute of a candidate path. | | path. The segment list is an attribute of a candidate path. | |||
| The identity of a candidate path MUST be uniquely established in the | The identity of a candidate path MUST be uniquely established in the | |||
| context of an SR Policy <headend, color, endpoint> to handle add, | context of an SR Policy <Headend, Color, Endpoint> to handle add, | |||
| delete, or modify operations on them in an unambiguous manner | delete, or modify operations on them in an unambiguous manner | |||
| regardless of their source(s). | regardless of their source(s). | |||
| The tuple <protocol-origin, originator, discriminator> uniquely | The tuple <Protocol-Origin, Originator, Discriminator> uniquely | |||
| identifies a candidate path. | identifies a candidate path. | |||
| Candidate paths MAY also be assigned or signaled with a symbolic name | Candidate paths MAY also be assigned or signaled with a symbolic name | |||
| comprising printable ASCII [RFC0020] characters (i.e., 0x20 to 0x7E) | comprising printable ASCII [RFC0020] characters (i.e., 0x20 to 0x7E) | |||
| to serve as a user-friendly attribute for debugging and | to serve as a user-friendly attribute for debugging and | |||
| troubleshooting purposes. Such symbolic names MUST NOT be considered | troubleshooting purposes. Such symbolic names MUST NOT be considered | |||
| as identifiers for a candidate path. The signaling of the candidate | as identifiers for a candidate path. The signaling of the candidate | |||
| path name via BGP and PCEP is described in [IDR-SR-TE-POLICY] and | path name via BGP and PCEP is described in [BGP-SR-POLICY] and | |||
| [SR-POLICY-CP], respectively. | [PCEP-SR-POLICY-CP], respectively. | |||
| 2.7. Preference of a Candidate Path | 2.7. Preference of a Candidate Path | |||
| The preference of the candidate path is used to select the best | The Preference of the candidate path is used to select the best | |||
| candidate path for an SR Policy. It is a 32-bit value where a higher | candidate path for an SR Policy. It is a 32-bit value where a higher | |||
| value indicates higher preference and the default preference value is | value indicates higher preference and the default Preference value is | |||
| 100. | 100. | |||
| It is RECOMMENDED that each candidate path of a given SR Policy has a | It is RECOMMENDED that each candidate path of a given SR Policy has a | |||
| different preference. | different Preference. | |||
| The signaling of the candidate path preference via BGP and PCEP is | The signaling of the candidate path Preference via BGP and PCEP is | |||
| described in [IDR-SR-TE-POLICY] and [SR-POLICY-CP], respectively. | described in [BGP-SR-POLICY] and [PCEP-SR-POLICY-CP], respectively. | |||
| 2.8. Validity of a Candidate Path | 2.8. Validity of a Candidate Path | |||
| A candidate path is usable when it is valid. The RECOMMENDED | A candidate path is usable when it is valid. The RECOMMENDED | |||
| candidate path validity criterion is the validity of at least one of | candidate path validity criterion is the validity of at least one of | |||
| its constituent Segment-Lists. The validation rules are specified in | its constituent segment lists. The validation rules are specified in | |||
| Section 5. | Section 5. | |||
| 2.9. Active Candidate Path | 2.9. Active Candidate Path | |||
| A candidate path is selected when it is valid and it is determined to | A candidate path is selected when it is valid and it is determined to | |||
| be the best path of the SR Policy. The selected path is referred to | be the best path of the SR Policy. The selected path is referred to | |||
| as the "active path" of the SR Policy in this document. | as the "active path" of the SR Policy in this document. | |||
| Whenever a new path is learned or an active path is deleted, the | Whenever a new path is learned or an active path is deleted, the | |||
| validity of an existing path changes, or an existing path is changed, | validity of an existing path changes, or an existing path is changed, | |||
| the selection process MUST be re-executed. | the selection process MUST be re-executed. | |||
| The candidate path selection process operates primarily on the | The candidate path selection process operates primarily on the | |||
| candidate path preference. A candidate path is selected when it is | candidate path Preference. A candidate path is selected when it is | |||
| valid and it has the highest preference value among all the valid | valid and it has the highest Preference value among all the valid | |||
| candidate paths of the SR Policy. | candidate paths of the SR Policy. | |||
| In the case of multiple valid candidate paths of the same preference, | In the case of multiple valid candidate paths of the same Preference, | |||
| the tie-breaking rules are evaluated on the identification tuple in | the tie-breaking rules are evaluated on the identification tuple in | |||
| the following order until only one valid best path is selected: | the following order until only one valid best path is selected: | |||
| 1. The higher value of Protocol-Origin is selected. | 1. The higher value of Protocol-Origin is selected. | |||
| 2. If specified by configuration, prefer the existing installed | 2. If specified by configuration, prefer the existing installed | |||
| path. | path. | |||
| 3. The lower value of the originator is selected. | 3. The lower value of the Originator is selected. | |||
| 4. Finally, the higher value of the discriminator is selected. | 4. Finally, the higher value of the Discriminator is selected. | |||
| The rules are framed with multiple protocols and sources in mind and | The rules are framed with multiple protocols and sources in mind and | |||
| hence may not follow the logic of a single protocol (e.g., BGP best | hence may not follow the logic of a single protocol (e.g., BGP best | |||
| path selection). The motivation behind these rules are as follows: | path selection). The motivation behind these rules are as follows: | |||
| * The preference, being the primary criterion, allows an operator to | * The Preference, being the primary criterion, allows an operator to | |||
| influence selection across paths thus allowing provisioning of | influence selection across paths thus allowing provisioning of | |||
| multiple path options, e.g., CP1 is preferred and if it becomes | multiple path options, e.g., CP1 is preferred as its Preference | |||
| invalid then fallback to CP2 and so on. Since preference works | value is the highest, and if it becomes invalid, then CP2 with the | |||
| across protocol sources, it also enables (where necessary) | next highest Preference value is selected, and so on. Since | |||
| selective override of the default Protocol-Origin preference, | Preference works across protocol sources, it also enables (where | |||
| e.g., to prefer a path signaled via BGP SR Policy over what is | necessary) selective override of the default Protocol-Origin | |||
| configured. | preference, e.g., to prefer a path signaled via BGP SR Policy over | |||
| what is configured. | ||||
| * The Protocol-Origin allows an operator to set up a default | * The Protocol-Origin allows an operator to set up a default | |||
| selection mechanism across protocol sources, e.g., to prefer | selection mechanism across protocol sources, e.g., to prefer | |||
| configured over paths signaled via BGP SR Policy or PCEP. | configured paths over paths signaled via BGP SR Policy or PCEP. | |||
| * The originator allows an operator to have multiple redundant | * The Originator allows an operator to have multiple redundant | |||
| controllers and still maintain a deterministic behavior over which | controllers and still maintain a deterministic behavior over which | |||
| of them are preferred even if they are providing the same | of them are preferred even if they are providing the same | |||
| candidate paths for the same SR policies to the headend. | candidate paths for the same SR policies to the headend. | |||
| * The discriminator performs the final tie-breaking step to ensure a | * The Discriminator performs the final tie-breaking step to ensure a | |||
| deterministic outcome of selection regardless of the order in | deterministic outcome of selection regardless of the order in | |||
| which candidate paths are signaled across multiple transport | which candidate paths are signaled across multiple transport | |||
| channels or sessions. | channels or sessions. | |||
| Section 4 of [SR-POLICY-CONSID] provides a set of examples to | [SR-POLICY-CONSID] provides a set of examples to illustrate the | |||
| illustrate the active candidate path selection rules. | active candidate path selection rules. | |||
| 2.10. Validity of an SR Policy | 2.10. Validity of an SR Policy | |||
| An SR Policy is valid when it has at least one valid candidate path. | An SR Policy is valid when it has at least one valid candidate path. | |||
| 2.11. Instantiation of an SR Policy in the Forwarding Plane | 2.11. Instantiation of an SR Policy in the Forwarding Plane | |||
| Generally, only valid SR policies are instantiated in the forwarding | Generally, only valid SR policies are instantiated in the forwarding | |||
| plane. | plane. | |||
| Only the active candidate path MUST be used for forwarding traffic | Only the active candidate path MUST be used for forwarding traffic | |||
| that is being steered onto that policy except for certain scenarios | that is being steered onto that policy except for certain scenarios | |||
| such as fast reroute where a backup candidate path may be used as | such as fast reroute where a backup candidate path may be used as | |||
| described in Section 9.3. | described in Section 9.3. | |||
| If a set of Segment-Lists is associated with the active path of the | If a set of segment lists is associated with the active path of the | |||
| policy, then the steering is per flow and weighted-ECMP (W-ECMP) | policy, then the steering is per flow and weighted-ECMP (W-ECMP) | |||
| based according to the relative weight of each Segment-List. | based according to the relative weight of each segment list. | |||
| The fraction of the flows associated with a given Segment-List is | The fraction of the flows associated with a given segment list is | |||
| w/Sw, where w is the weight of the Segment-List and Sw is the sum of | w/Sw, where w is the weight of the segment list and Sw is the sum of | |||
| the weights of the Segment-Lists of the selected path of the SR | the weights of the segment lists of the selected path of the SR | |||
| Policy. | Policy. | |||
| When a composite candidate path is active, the fraction of flows | When a composite candidate path is active, the fraction of flows | |||
| steered into each constituent SR Policy is equal to the relative | steered into each constituent SR Policy is equal to the relative | |||
| weight of each constituent SR Policy. Further load-balancing of | weight of each constituent SR Policy. Further load-balancing of | |||
| flows steered into a constituent SR Policy is performed based on the | flows steered into a constituent SR Policy is performed based on the | |||
| weights of the Segment-List of the active candidate path of that | weights of the segment list of the active candidate path of that | |||
| constituent SR Policy. | constituent SR Policy. | |||
| The accuracy of the weighted load-balancing depends on the platform | The accuracy of the weighted load-balancing depends on the platform | |||
| implementation. | implementation. | |||
| 2.12. Priority of an SR Policy | 2.12. Priority of an SR Policy | |||
| Upon topological change, many policies could be re-computed or | Upon topological change, many policies could be re-computed or | |||
| revalidated. An implementation MAY provide a per-policy priority | revalidated. An implementation MAY provide a per-policy priority | |||
| configuration. The operator may set this field to indicate the order | configuration. The operator may set this field to indicate the order | |||
| skipping to change at line 501 ¶ | skipping to change at line 502 ¶ | |||
| priority value. When an SR Policy has multiple candidate paths with | priority value. When an SR Policy has multiple candidate paths with | |||
| distinct signaled non-default priority values and the SR Policy | distinct signaled non-default priority values and the SR Policy | |||
| itself does not have a priority value configured, the SR Policy as a | itself does not have a priority value configured, the SR Policy as a | |||
| whole takes the lowest value (i.e., the highest priority) amongst | whole takes the lowest value (i.e., the highest priority) amongst | |||
| these signaled priority values. | these signaled priority values. | |||
| 2.13. Summary | 2.13. Summary | |||
| In summary, the information model is the following: | In summary, the information model is the following: | |||
| SR Policy POL1 <headend = H1, color = 1, endpoint = E1> | SR Policy POL1 <Headend = H1, Color = 1, Endpoint = E1> | |||
| Candidate-path CP1 <protocol-origin = 20, originator = | Candidate Path CP1 <Protocol-Origin = 20, Originator = | |||
| 64511:192.0.2.1, discriminator = 1> | 64511:192.0.2.1, Discriminator = 1> | |||
| Preference 200 | Preference 200 | |||
| Priority 10 | Priority 10 | |||
| Segment List 1 <SID11...SID1i>, Weight W1 | Segment List 1 <SID11...SID1i>, Weight W1 | |||
| Segment List 2 <SID21...SID2j>, Weight W2 | Segment List 2 <SID21...SID2j>, Weight W2 | |||
| Candidate-path CP2 <protocol-origin = 20, originator = | Candidate Path CP2 <Protocol-Origin = 20, Originator = | |||
| 64511:192.0.2.2, discriminator = 2> | 64511:192.0.2.2, Discriminator = 2> | |||
| Preference 100 | Preference 100 | |||
| Priority 10 | Priority 10 | |||
| Segment List 3 <SID31...SID3i>, Weight W3 | Segment List 3 <SID31...SID3i>, Weight W3 | |||
| Segment List 4 <SID41...SID4j>, Weight W4 | Segment List 4 <SID41...SID4j>, Weight W4 | |||
| The SR Policy POL1 is identified by the tuple <headend, color, | The SR Policy POL1 is identified by the tuple <Headend, Color, | |||
| endpoint>. It has two candidate paths: CP1 and CP2. Each is | Endpoint>. It has two candidate paths: CP1 and CP2. Each is | |||
| identified by a tuple <protocol-origin, originator, discriminator> | identified by a tuple <Protocol-Origin, Originator, Discriminator> | |||
| within the scope of POL1. CP1 is the active candidate path (it is | within the scope of POL1. CP1 is the active candidate path (it is | |||
| valid and has the highest preference). The two Segment-Lists of CP1 | valid and has the highest Preference). The two segment lists of CP1 | |||
| are installed as the forwarding instantiation of SR Policy POL1. | are installed as the forwarding instantiation of SR Policy POL1. | |||
| Traffic steered on POL1 is flow-based hashed on Segment-List | Traffic steered on POL1 is flow-based hashed on segment list | |||
| <SID11...SID1i> with a ratio W1/(W1+W2). | <SID11...SID1i> with a ratio W1/(W1+W2). | |||
| The information model of SR Policy POL100 having a composite | The information model of SR Policy POL100 having a composite | |||
| candidate path is the following: | candidate path is the following: | |||
| SR Policy POL100 <headend = H1, color = 100, endpoint = E1> | SR Policy POL100 <Headend = H1, Color = 100, Endpoint = E1> | |||
| Candidate-path CP1 <protocol-origin = 20, originator = | Candidate Path CP1 <Protocol-Origin = 20, Originator = | |||
| 64511:192.0.2.1, discriminator = 1> | 64511:192.0.2.1, Discriminator = 1> | |||
| Preference 200 | Preference 200 | |||
| SR Policy <color = 1>, Weight W1 | SR Policy <Color = 1>, Weight W1 | |||
| SR Policy <color = 2>, Weight W2 | SR Policy <Color = 2>, Weight W2 | |||
| The constituent SR Policies POL1 and POL2 have an information model | The constituent SR Policies POL1 and POL2 have an information model | |||
| as described at the start of this section. They are referenced only | as described at the start of this section. They are referenced only | |||
| by color in the composite candidate path since their headend and | by color in the composite candidate path since their headend and | |||
| endpoint are identical to the POL100. The valid Segment-Lists of the | endpoint are identical to the POL100. The valid segment lists of the | |||
| active candidate path of POL1 and POL2 are installed in the | active candidate path of POL1 and POL2 are installed in the | |||
| forwarding. Traffic steered on POL100 is flow-based hashed on POL1 | forwarding. Traffic steered on POL100 is hashed on a per-flow basis | |||
| with a proportion W1/(W1+W2). Within the POL1, the flow-based | on POL1 with a proportion W1/(W1+W2). Within the POL1, the flow- | |||
| hashing over its Segment-Lists are performed as described earlier in | based hashing over its segment lists are performed as described | |||
| this section. | earlier in this section. | |||
| 3. Segment Routing Database | 3. Segment Routing Database | |||
| An SR Policy computation node (e.g., headend or controller) maintains | An SR Policy computation node (e.g., headend or controller) maintains | |||
| the Segment Routing Database (SR-DB). The SR-DB is a conceptual | the Segment Routing Database (SR-DB). The SR-DB is a conceptual | |||
| database to illustrate the various pieces of information and their | database to illustrate the various pieces of information and their | |||
| sources that may help in SR Policy computation and validation. There | sources that may help in SR Policy computation and validation. There | |||
| is no specific requirement for an implementation to create a new | is no specific requirement for an implementation to create a new | |||
| database as such. | database as such. | |||
| skipping to change at line 582 ¶ | skipping to change at line 583 ¶ | |||
| NETCONF. | NETCONF. | |||
| A non-attached (remote) domain topology may be learned via protocol/ | A non-attached (remote) domain topology may be learned via protocol/ | |||
| mechanisms such as BGP-LS or NETCONF. | mechanisms such as BGP-LS or NETCONF. | |||
| In some use cases, the SR-DB may only contain the attached domain | In some use cases, the SR-DB may only contain the attached domain | |||
| topology while in others, the SR-DB may contain the topology of | topology while in others, the SR-DB may contain the topology of | |||
| multiple domains and in this case, it is multi-domain capable. | multiple domains and in this case, it is multi-domain capable. | |||
| The SR-DB may also contain the SR Policies instantiated in the | The SR-DB may also contain the SR Policies instantiated in the | |||
| network. This can be collected via BGP-LS [TE-POLICIES-BGP-LS] or | network. This can be collected via BGP-LS [BGP-LS-TE-POLICY] or PCEP | |||
| PCEP [RFC8231], [SR-POLICY-CP], and [BINDING-LABEL-SID]. This | [RFC8231] (along with [PCEP-SR-POLICY-CP] and [PCEP-BSID-LABEL]). | |||
| information allows to build an end-to-end policy on the basis of | This information allows to build an end-to-end policy on the basis of | |||
| intermediate SR policies (see Section 6 for further details). | intermediate SR policies (see Section 6 for further details). | |||
| The SR-DB may also contain the Maximum SID Depth (MSD) capability of | The SR-DB may also contain the Maximum SID Depth (MSD) capability of | |||
| nodes in the topology. This can be collected via IS-IS [RFC8491], | nodes in the topology. This can be collected via IS-IS [RFC8491], | |||
| OSPF [RFC8476], BGP-LS [RFC8814], or PCEP [RFC8664]. | OSPF [RFC8476], BGP-LS [RFC8814], or PCEP [RFC8664]. | |||
| The use of the SR-DB for path computation and for the validation of | The use of the SR-DB for path computation and for the validation of | |||
| optimization objective and constraints of paths is outside the scope | optimization objective and constraints of paths is outside the scope | |||
| of this document. Some implementation aspects related to path | of this document. Some implementation aspects related to path | |||
| computation are covered in [SR-POLICY-CONSID]. | computation are covered in [SR-POLICY-CONSID]. | |||
| 4. Segment Types | 4. Segment Types | |||
| A Segment-List is an ordered set of segments represented as <S1, S2, | A segment list is an ordered set of segments represented as <S1, S2, | |||
| ... Sn> where S1 is the first segment. | ... Sn> where S1 is the first segment. | |||
| Based on the desired data plane, either the MPLS label stack or the | Based on the desired data plane, either the MPLS label stack or the | |||
| SRv6 Segment Routing Header [RFC8754] is built from the Segment-List. | SRv6 Segment Routing Header [RFC8754] is built from the segment list. | |||
| However, the Segment-List itself can be specified using different | However, the segment list itself can be specified using different | |||
| segment-descriptor types and the following are currently defined: | segment-descriptor types and the following are currently defined: | |||
| Type A: SR-MPLS Label: | Type A: SR-MPLS Label: | |||
| An MPLS label corresponding to any of the segment types defined | An MPLS label corresponding to any of the segment types defined | |||
| for SR-MPLS (as defined in [RFC8402] or other SR-MPLS | for SR-MPLS (as defined in [RFC8402] or other SR-MPLS | |||
| specifications) can be used. Additionally, special purpose | specifications) can be used. Additionally, special purpose | |||
| labels like explicit-null or in general any MPLS label MAY also | labels like explicit-null or in general any MPLS label MAY also | |||
| be used. For example, this type can be used to specify a label | be used. For example, this type can be used to specify a label | |||
| representation that maps to an optical transport path on a | representation that maps to an optical transport path on a | |||
| packet transport node. | packet transport node. | |||
| Type B: SRv6 SID: | Type B: SRv6 SID: | |||
| An IPv6 address corresponding to any of the SID behaviors for | An IPv6 address corresponding to any of the SID behaviors for | |||
| SRv6 (as defined in [RFC8986] or other SRv6 specifications) can | SRv6 (as defined in [RFC8986] or other SRv6 specifications) can | |||
| be used. Optionally, the SRv6 SID behavior (as defined in | be used. Optionally, the SRv6 SID behavior (as defined in | |||
| [RFC8986] or other SRv6 specifications) and structure (as | [RFC8986] or other SRv6 specifications) and structure (as | |||
| defined in [RFC8986]) MAY also be provided for the headend to | defined in [RFC8986]) MAY also be provided for the headend to | |||
| perform validation of the SID when using it for building the | perform validation of the SID when using it for building the | |||
| Segment List. | segment list. | |||
| Type C: IPv4 Prefix with optional SR Algorithm: | Type C: IPv4 Prefix with optional SR Algorithm: | |||
| In this case, the headend is required to resolve the specified | In this case, the headend is required to resolve the specified | |||
| IPv4 Prefix Address to the SR-MPLS label corresponding to its | IPv4 Prefix Address to the SR-MPLS label corresponding to its | |||
| Prefix SID segment (as defined in [RFC8402]). The SR algorithm | Prefix SID segment (as defined in [RFC8402]). The SR algorithm | |||
| (refer to Section 3.1.1 of [RFC8402]) to be used MAY also be | (refer to Section 3.1.1 of [RFC8402]) to be used MAY also be | |||
| provided. | provided. | |||
| Type D: IPv6 Global Prefix with optional SR Algorithm for SR-MPLS: | Type D: IPv6 Global Prefix with optional SR Algorithm for SR-MPLS: | |||
| In this case, the headend is required to resolve the specified | In this case, the headend is required to resolve the specified | |||
| IPv6 Global Prefix Address to the SR-MPLS label corresponding | IPv6 Global Prefix Address to the SR-MPLS label corresponding | |||
| to its Prefix SID segment (as defined in [RFC8402]). The SR | to its Prefix SID segment (as defined in [RFC8402]). The SR | |||
| skipping to change at line 728 ¶ | skipping to change at line 729 ¶ | |||
| Address pair link descriptors follow semantics as specified in | Address pair link descriptors follow semantics as specified in | |||
| [RFC7752]. The SR Algorithm (refer to Section 3.1.1 of | [RFC7752]. The SR Algorithm (refer to Section 3.1.1 of | |||
| [RFC8402]), the SRv6 SID behavior (as defined in [RFC8986] or | [RFC8402]), the SRv6 SID behavior (as defined in [RFC8986] or | |||
| other SRv6 specifications), and structure (as defined in | other SRv6 specifications), and structure (as defined in | |||
| [RFC8986]) MAY also be provided. | [RFC8986]) MAY also be provided. | |||
| When the algorithm is not specified for the SID types above which | When the algorithm is not specified for the SID types above which | |||
| optionally allow for it, the headend SHOULD use the Strict Shortest | optionally allow for it, the headend SHOULD use the Strict Shortest | |||
| Path algorithm if available and otherwise, it SHOULD use the default | Path algorithm if available and otherwise, it SHOULD use the default | |||
| Shortest Path algorithm. The specification of the algorithm enables | Shortest Path algorithm. The specification of the algorithm enables | |||
| the use of the IGP Flex Algorithm [IGP-FLEX-ALGO] specific SIDs in SR | the use of SIDs specific to the IGP Flex Algorithm [IGP-FLEX-ALGO] in | |||
| Policy. | SR Policy. | |||
| For SID types C through K, a SID value MAY also be optionally | For SID types C through K, a SID value MAY also be optionally | |||
| provided to the headend for verification purposes. Section 5.1 | provided to the headend for verification purposes. Section 5.1 | |||
| describes the resolution and verification of the SIDs and Segment | describes the resolution and verification of the SIDs and segment | |||
| Lists on the headend. | lists on the headend. | |||
| When building the MPLS label stack or the IPv6 Segment list from the | When building the MPLS label stack or the SRv6 SID list from the | |||
| Segment List, the node instantiating the policy MUST interpret the | segment list, the node instantiating the policy MUST interpret the | |||
| set of Segments as follows: | set of Segments as follows: | |||
| * The first Segment represents the topmost label or the first IPv6 | * The first Segment represents the topmost MPLS label or the first | |||
| segment. It identifies the active segment the traffic will be | SRv6 SID. It identifies the active segment the traffic will be | |||
| directed toward along the explicit SR path. | directed toward along the explicit SR path. | |||
| * The last Segment represents the bottommost label or the last IPv6 | * The last segment represents the bottommost MPLS label or the last | |||
| segment the traffic will be directed toward along the explicit SR | SRv6 SID the traffic will be directed toward along the explicit SR | |||
| path. | path. | |||
| 4.1. Explicit Null | 4.1. Explicit Null | |||
| A Type A SID MAY be any MPLS label, including special purpose labels. | A Type A SID MAY be any MPLS label, including special purpose labels. | |||
| For example, assuming that the desired traffic-engineered path from a | For example, assuming that the desired traffic-engineered path from a | |||
| headend 1 to an endpoint 4 can be expressed by the Segment-List | headend 1 to an endpoint 4 can be expressed by the segment list | |||
| <16002, 16003, 16004> where 16002, 16003, and 16004, respectively, | <16002, 16003, 16004> where 16002, 16003, and 16004, respectively, | |||
| refer to the IPv4 Prefix SIDs bound to nodes 2, 3, and 4, then IPv6 | refer to the IPv4 Prefix SIDs bound to nodes 2, 3, and 4, then IPv6 | |||
| traffic can be traffic-engineered from nodes 1 to 4 via the | traffic can be traffic-engineered from nodes 1 to 4 via the | |||
| previously described path using an SR Policy with Segment-List | previously described path using an SR Policy with segment list | |||
| <16002, 16003, 16004, 2> where the MPLS label value of 2 represents | <16002, 16003, 16004, 2> where the MPLS label value of 2 represents | |||
| the "IPv6 Explicit NULL Label". | the "IPv6 Explicit NULL Label". | |||
| The penultimate node before node 4 will pop 16004 and will forward | The penultimate node before node 4 will pop 16004 and will forward | |||
| the frame on its directly connected interface to node 4. | the frame on its directly connected interface to node 4. | |||
| The endpoint receives the traffic with the top label "2", which | The endpoint receives the traffic with the top label "2", which | |||
| indicates that the payload is an IPv6 packet. | indicates that the payload is an IPv6 packet. | |||
| When steering unlabeled IPv6 BGP destination traffic using an SR | When steering unlabeled IPv6 BGP destination traffic using an SR | |||
| Policy composed of Segment-List(s) based on IPv4 SIDs, the Explicit | Policy composed of segment list(s) based on IPv4 SIDs, the Explicit | |||
| Null Label Policy is processed as specified in Section 2.4.5 of | Null Label Policy is processed as specified in [BGP-SR-POLICY]. When | |||
| [IDR-SR-TE-POLICY]. When an "IPv6 Explicit NULL label" is not | an "IPv6 Explicit NULL label" is not present as the bottom label, the | |||
| present as the bottom label, the headend SHOULD automatically impose | headend SHOULD automatically impose one. Refer to Section 8 for more | |||
| one. Refer to Section 8 for more details. | details. | |||
| 5. Validity of a Candidate Path | 5. Validity of a Candidate Path | |||
| 5.1. Explicit Candidate Path | 5.1. Explicit Candidate Path | |||
| An explicit candidate path is associated with a Segment-List or a set | An explicit candidate path is associated with a segment list or a set | |||
| of Segment-Lists. | of segment lists. | |||
| An explicit candidate path is provisioned by the operator directly or | An explicit candidate path is provisioned by the operator directly or | |||
| via a controller. | via a controller. | |||
| The computation/logic that leads to the choice of the Segment-List is | The computation/logic that leads to the choice of the segment list is | |||
| external to the SR Policy headend. The SR Policy headend does not | external to the SR Policy headend. The SR Policy headend does not | |||
| compute the Segment-List. The SR Policy headend only confirms its | compute the segment list. The SR Policy headend only confirms its | |||
| validity. | validity. | |||
| An explicit candidate path MAY consist of a single explicit Segment- | An explicit candidate path MAY consist of a single explicit segment | |||
| List containing only an implicit-null label to indicate pop-and- | list containing only an implicit-null label to indicate pop-and- | |||
| forward behavior. The Binding SID (BSID) is popped and the traffic | forward behavior. The Binding SID (BSID) is popped and the traffic | |||
| is forwarded based on the inner label or an IP lookup in the case of | is forwarded based on the inner label or an IP lookup in the case of | |||
| unlabeled IP packets. Such an explicit path can serve as a fallback | unlabeled IP packets. Such an explicit path can serve as a fallback | |||
| or path of last resort for traffic being steered into an SR Policy | or path of last resort for traffic being steered into an SR Policy | |||
| using its BSID (refer to Section 8.3). | using its BSID (refer to Section 8.3). | |||
| A Segment-List of an explicit candidate path MUST be declared invalid | A segment list of an explicit candidate path MUST be declared invalid | |||
| when any of the following is true: | when any of the following is true: | |||
| * It is empty. | * It is empty. | |||
| * Its weight is 0. | * Its weight is 0. | |||
| * It comprises a mix of SR-MPLS and SRv6 segment types. | * It comprises a mix of SR-MPLS and SRv6 segment types. | |||
| * The headend is unable to perform path resolution for the first SID | * The headend is unable to perform path resolution for the first SID | |||
| into one or more outgoing interface(s) and next-hop(s). | into one or more outgoing interface(s) and next-hop(s). | |||
| * The headend is unable to perform SID resolution for any non-first | * The headend is unable to perform SID resolution for any non-first | |||
| SID of type C through K into an MPLS label or an SRv6 SID. | SID of type C through K into an MPLS label or an SRv6 SID. | |||
| * The headend verification fails for any SID for which verification | * The headend verification fails for any SID for which verification | |||
| skipping to change at line 833 ¶ | skipping to change at line 834 ¶ | |||
| through K in its SR-DB. | through K in its SR-DB. | |||
| * The headend is unable to perform SID resolution for any non-first | * The headend is unable to perform SID resolution for any non-first | |||
| SID of type C through K into an MPLS label or an SRv6 SID. | SID of type C through K into an MPLS label or an SRv6 SID. | |||
| In multi-domain deployments, it is expected that the headend may be | In multi-domain deployments, it is expected that the headend may be | |||
| unable to verify the reachability of the SIDs in remote domains. | unable to verify the reachability of the SIDs in remote domains. | |||
| Types A or B MUST be used for the SIDs for which the reachability | Types A or B MUST be used for the SIDs for which the reachability | |||
| cannot be verified. Note that the first SID MUST always be reachable | cannot be verified. Note that the first SID MUST always be reachable | |||
| regardless of its type. | regardless of its type. | |||
| Additionally, a Segment-List MAY be declared invalid when both of the | Additionally, a segment list MAY be declared invalid when both of the | |||
| conditions below are met : | conditions below are met : | |||
| * Its last segment is not a Prefix SID (including BGP Peer Node-SID) | * Its last segment is not a Prefix SID (including BGP Peer Node-SID) | |||
| advertised by the node specified as the endpoint of the | advertised by the node specified as the endpoint of the | |||
| corresponding SR Policy. | corresponding SR Policy. | |||
| * Its last segment is not an Adjacency SID (including BGP Peer | * Its last segment is not an Adjacency SID (including BGP Peer | |||
| Adjacency SID) of any of the links present on neighbor nodes and | Adjacency SID) of any of the links present on neighbor nodes and | |||
| that terminate on the node specified as the endpoint of the | that terminate on the node specified as the endpoint of the | |||
| corresponding SR Policy. | corresponding SR Policy. | |||
| An explicit candidate path is invalid as soon as it has no valid | An explicit candidate path is invalid as soon as it has no valid | |||
| Segment-List. | segment list. | |||
| Additionally, an explicit candidate path MAY be declared invalid when | Additionally, an explicit candidate path MAY be declared invalid when | |||
| its constituent segment lists (valid or invalid) are using segment | its constituent segment lists (valid or invalid) are using segment | |||
| types of different SR data planes. | types of different SR data planes. | |||
| 5.2. Dynamic Candidate Path | 5.2. Dynamic Candidate Path | |||
| A dynamic candidate path is specified as an optimization objective | A dynamic candidate path is specified as an optimization objective | |||
| and constraints. | and a set of constraints. | |||
| The headend of the policy leverages its SR database to compute a | The headend of the policy leverages its SR database to compute a | |||
| Segment-List ("solution Segment-List") that solves this optimization | segment list ("solution segment list") that solves this optimization | |||
| problem for either the SR-MPLS or the SRv6 data plane as specified. | problem for either the SR-MPLS or the SRv6 data plane as specified. | |||
| The headend re-computes the solution Segment-List any time the inputs | The headend re-computes the solution segment list any time the inputs | |||
| to the problem change (e.g., topology changes). | to the problem change (e.g., topology changes). | |||
| When the local computation is not possible (e.g., a policy's tail end | When the local computation is not possible (e.g., a policy's tail end | |||
| is outside the topology known to the headend) or not desired, the | is outside the topology known to the headend) or not desired, the | |||
| headend may rely on an external entity. For example, a path | headend may rely on an external entity. For example, a path | |||
| computation request may be sent to a PCE supporting PCEP extensions | computation request may be sent to a PCE supporting PCEP extensions | |||
| specified in [RFC8664]. | specified in [RFC8664]. | |||
| If no solution is found to the optimization objective and | If no solution is found to the optimization objective and | |||
| constraints, then the dynamic candidate path MUST be declared | constraints, then the dynamic candidate path MUST be declared | |||
| invalid. | invalid. | |||
| Section 3 of [SR-POLICY-CONSID] discusses some of the optimization | [SR-POLICY-CONSID] discusses some of the optimization objectives and | |||
| objectives and constraints that may be considered by a dynamic | constraints that may be considered by a dynamic candidate path. It | |||
| candidate path. It illustrates some of the desirable properties of | illustrates some of the desirable properties of the computation of | |||
| the computation of the solution Segment-List. | the solution segment list. | |||
| 5.3. Composite Candidate Path | 5.3. Composite Candidate Path | |||
| A composite candidate path is specified as a group of its constituent | A composite candidate path is specified as a group of its constituent | |||
| SR Policies. | SR Policies. | |||
| A composite candidate path is valid when it has at least one valid | A composite candidate path is valid when it has at least one valid | |||
| constituent SR Policy. | constituent SR Policy. | |||
| 6. Binding SID | 6. Binding SID | |||
| The Binding SID (BSID) is fundamental to Segment Routing [RFC8402]. | The Binding SID (BSID) is fundamental to Segment Routing [RFC8402]. | |||
| It provides scaling, network opacity, and service independence. | It provides scaling, network opacity, and service independence. | |||
| Section 6 of [SR-POLICY-CONSID] illustrates some of these benefits. | [SR-POLICY-CONSID] illustrates some of these benefits. This section | |||
| This section describes the association of BSID with an SR Policy. | describes the association of BSID with an SR Policy. | |||
| 6.1. BSID of a Candidate Path | 6.1. BSID of a Candidate Path | |||
| Each candidate path MAY be defined with a BSID. | Each candidate path MAY be defined with a BSID. | |||
| Candidate paths of the same SR Policy SHOULD have the same BSID. | Candidate paths of the same SR Policy SHOULD have the same BSID. | |||
| Candidate paths of different SR Policies MUST NOT have the same BSID. | Candidate paths of different SR Policies MUST NOT have the same BSID. | |||
| 6.2. BSID of an SR Policy | 6.2. BSID of an SR Policy | |||
| The BSID of an SR Policy is the BSID of its active candidate path. | The BSID of an SR Policy is the BSID of its active candidate path. | |||
| When the active candidate path has a specified BSID, the SR Policy | When the active candidate path has a specified BSID, the SR Policy | |||
| uses that BSID if this value (label in MPLS, IPv6 address in SRv6) is | uses that BSID if this value (label in MPLS, IPv6 address in SRv6) is | |||
| available (i.e., not associated with any other usage: e.g., label | available. A BSID is available when its value is not associated with | |||
| used by some other MPLS forwarding entry, SRv6 SID used in some other | any other usage, e.g., a label used by some other MPLS forwarding | |||
| context, to another SID, to another SR Policy, outside the range of | entry or an SRv6 SID used in some other context (such as to another | |||
| segment, to another SR Policy, or that it is outside the range of | ||||
| SRv6 Locators). | SRv6 Locators). | |||
| In the case of SR-MPLS, SRv6 BSIDs (e.g., with the behavior End.BM | In the case of SR-MPLS, SRv6 BSIDs (e.g., with the behavior End.BM | |||
| [RFC8986]) MAY be associated with the SR Policy in addition to the | [RFC8986]) MAY be associated with the SR Policy in addition to the | |||
| MPLS BSID. In the case of SRv6, multiple SRv6 BSIDs (e.g., with | MPLS BSID. In the case of SRv6, multiple SRv6 BSIDs (e.g., with | |||
| different behaviors like End.B6.Encaps and End.B6.Encaps.Red | different behaviors like End.B6.Encaps and End.B6.Encaps.Red | |||
| [RFC8986]) MAY be associated with the SR Policy. | [RFC8986]) MAY be associated with the SR Policy. | |||
| Optionally, instead of only checking that the BSID of the active path | Optionally, instead of only checking that the BSID of the active path | |||
| is available, a headend MAY check that it is available within the | is available, a headend MAY check that it is available within the | |||
| skipping to change at line 985 ¶ | skipping to change at line 987 ¶ | |||
| BSID of the active path is not available (optionally not in the | BSID of the active path is not available (optionally not in the | |||
| SRLB), then the SR Policy does not install any entry indexed by a | SRLB), then the SR Policy does not install any entry indexed by a | |||
| BSID in the forwarding plane. | BSID in the forwarding plane. | |||
| 6.4. Non-SR Usage of Binding SID | 6.4. Non-SR Usage of Binding SID | |||
| An implementation MAY choose to associate a Binding SID with any type | An implementation MAY choose to associate a Binding SID with any type | |||
| of interface (e.g., a layer 3 termination of an Optical Circuit) or a | of interface (e.g., a layer 3 termination of an Optical Circuit) or a | |||
| tunnel (e.g., IP tunnel, GRE tunnel, IP/UDP tunnel, MPLS RSVP-TE | tunnel (e.g., IP tunnel, GRE tunnel, IP/UDP tunnel, MPLS RSVP-TE | |||
| tunnel, etc). This enables the use of other non-SR-enabled | tunnel, etc). This enables the use of other non-SR-enabled | |||
| interfaces and tunnels as segments in an SR Policy Segment-List | interfaces and tunnels as segments in an SR Policy segment list | |||
| without the need of forming routing protocol adjacencies over them. | without the need of forming routing protocol adjacencies over them. | |||
| The details of this kind of usage are beyond the scope of this | The details of this kind of usage are beyond the scope of this | |||
| document. A specific packet-optical integration use case is | document. A specific packet-optical integration use case is | |||
| described in [POI-SR]. | described in [POI-SR]. | |||
| 7. SR Policy State | 7. SR Policy State | |||
| The SR Policy state is maintained on the headend to represent the | The SR Policy state is maintained on the headend to represent the | |||
| state of the policy and its candidate paths. This is to provide an | state of the policy and its candidate paths. This is to provide an | |||
| accurate representation of whether the SR Policy is being | accurate representation of whether the SR Policy is being | |||
| instantiated in the forwarding plane and which of its candidate paths | instantiated in the forwarding plane and which of its candidate paths | |||
| and segment-list(s) are active. The SR Policy state MUST also | and segment list(s) are active. The SR Policy state MUST also | |||
| reflect the reason when a policy and/or its candidate path is not | reflect the reason when a policy and/or its candidate path is not | |||
| active due to validation errors or not being preferred. The | active due to validation errors or not being preferred. The | |||
| operational state information reported for SR Policies are specified | operational state information reported for SR Policies are specified | |||
| in [SR-POLICY-YANG]. | in [SR-POLICY-YANG]. | |||
| The SR Policy state can be reported by the headend node via BGP-LS | The SR Policy state can be reported by the headend node via BGP-LS | |||
| [TE-POLICIES-BGP-LS] or PCEP [RFC8231] and [BINDING-LABEL-SID]. | [BGP-LS-TE-POLICY] or PCEP [RFC8231] [PCEP-BSID-LABEL]. | |||
| SR Policy state on the headend also includes traffic accounting | SR Policy state on the headend also includes traffic accounting | |||
| information for the flows being steered via the policies. The | information for the flows being steered via the policies. The | |||
| details of the SR Policy accounting are beyond the scope of this | details of the SR Policy accounting are beyond the scope of this | |||
| document. The aspects related to the SR traffic counters and their | document. The aspects related to the SR traffic counters and their | |||
| usage in the broader context of traffic accounting in an SR network | usage in the broader context of traffic accounting in an SR network | |||
| are covered in [SR-TRAFFIC-COUNTERS] and [SR-TRAFFIC-ACCOUNTING], | are covered in [SR-TRAFFIC-COUNTERS] and [SR-TRAFFIC-ACCOUNTING], | |||
| respectively. | respectively. | |||
| Implementations MAY support an administrative state to control | Implementations MAY support an administrative state to control | |||
| locally provisioned policies via mechanisms like CLI or NETCONF. | locally provisioned policies via mechanisms like command-line | |||
| interface (CLI) or NETCONF. | ||||
| 8. Steering into an SR Policy | 8. Steering into an SR Policy | |||
| A headend can steer a packet flow into a valid SR Policy in various | A headend can steer a packet flow into a valid SR Policy in various | |||
| ways: | ways: | |||
| * Incoming packets have an active SID matching a local BSID at the | * Incoming packets have an active SID matching a local BSID at the | |||
| headend. | headend. | |||
| * Per-Destination Steering: incoming packets match a BGP/Service | * Per-Destination Steering: incoming packets match a BGP/Service | |||
| route, which recurses on an SR Policy. | route, which recurses on an SR Policy. | |||
| skipping to change at line 1046 ¶ | skipping to change at line 1049 ¶ | |||
| By default, upon transitioning to the invalid state, | By default, upon transitioning to the invalid state, | |||
| * an SR Policy and its BSID are removed from the forwarding plane. | * an SR Policy and its BSID are removed from the forwarding plane. | |||
| * any steering of a service (Pseudowire (PW)), destination (BGP- | * any steering of a service (Pseudowire (PW)), destination (BGP- | |||
| VPN), flow or packet on the related SR Policy is disabled and the | VPN), flow or packet on the related SR Policy is disabled and the | |||
| related service, destination, flow, or packet is routed per the | related service, destination, flow, or packet is routed per the | |||
| classic forwarding table (e.g., longest match to the destination | classic forwarding table (e.g., longest match to the destination | |||
| or the recursing next-hop). | or the recursing next-hop). | |||
| 8.2. Drop upon Invalid SR Policy | 8.2. Drop-upon-Invalid SR Policy | |||
| An SR Policy MAY be enabled for the Drop-Upon-Invalid behavior. This | An SR Policy MAY be enabled for the Drop-Upon-Invalid behavior. This | |||
| would entail the following: | would entail the following: | |||
| * an invalid SR Policy and its BSID is kept in the forwarding plane | * an invalid SR Policy and its BSID is kept in the forwarding plane | |||
| with an action to drop. | with an action to drop. | |||
| * any steering of a service (PW), destination (BGP-VPN), flow, or | * any steering of a service (PW), destination (BGP-VPN), flow, or | |||
| packet on the related SR Policy is maintained with the action to | packet on the related SR Policy is maintained with the action to | |||
| drop all of this traffic. | drop all of this traffic. | |||
| The Drop-Upon-Invalid behavior has been deployed in use cases where | The Drop-Upon-Invalid behavior has been deployed in use cases where | |||
| the operator wants some PW to only be transported on a path with | the operator wants some PW to only be transported on a path with | |||
| specific constraints. When these constraints are no longer met, the | specific constraints. When these constraints are no longer met, the | |||
| operator wants the PW traffic to be dropped. Specifically, the | operator wants the PW traffic to be dropped. Specifically, the | |||
| operator does not want the PW to be routed according to the IGP | operator does not want the PW to be routed according to the IGP | |||
| shortest path to the PW endpoint. | shortest path to the PW endpoint. | |||
| 8.3. Incoming Active SID is a BSID | 8.3. Incoming Active SID is a BSID | |||
| Let us assume that headend H has a valid SR Policy P of Segment-List | Let us assume that headend H has a valid SR Policy P of segment list | |||
| <S1, S2, S3> and BSID B. | <S1, S2, S3> and BSID B. | |||
| In the case of SR-MPLS, when H receives a packet K with label stack | In the case of SR-MPLS, when H receives a packet K with label stack | |||
| <B, L2, L3>, H pops B and pushes <S1, S2, S3> and forwards the | <B, L2, L3>, H pops B and pushes <S1, S2, S3> and forwards the | |||
| resulting packet according to SID S1. | resulting packet according to SID S1. | |||
| | "Forwards the resulting packet according to SID S1" means: If | | "Forwards the resulting packet according to SID S1" means: If | |||
| | S1 is an Adj-SID or a PHP-enabled prefix SID advertised by a | | S1 is an Adj-SID or a PHP-enabled prefix SID advertised by a | |||
| | neighbor, H sends the resulting packet with label stack <S2, | | neighbor, H sends the resulting packet with label stack <S2, | |||
| | S3, L2, L3> on the outgoing interface associated with S1; Else, | | S3, L2, L3> on the outgoing interface associated with S1; Else, | |||
| skipping to change at line 1110 ¶ | skipping to change at line 1113 ¶ | |||
| 8.4. Per-Destination Steering | 8.4. Per-Destination Steering | |||
| This section describes how a headend applies steering of flows | This section describes how a headend applies steering of flows | |||
| corresponding to BGP routes over SR Policy using the Color Extended | corresponding to BGP routes over SR Policy using the Color Extended | |||
| community [RFC9012]. | community [RFC9012]. | |||
| In the case of SR-MPLS, let us assume that headend H: | In the case of SR-MPLS, let us assume that headend H: | |||
| * learns a BGP route R/r via next-hop N, Color Extended community C, | * learns a BGP route R/r via next-hop N, Color Extended community C, | |||
| and VPN label V. | and VPN label V. | |||
| * has a valid SR Policy P to (color = C, endpoint = N) of Segment- | * has a valid SR Policy P to (color = C, endpoint = N) of segment | |||
| List <S1, S2, S3> and BSID B. | list <S1, S2, S3> and BSID B. | |||
| * has a BGP policy that matches on the Color Extended community C | * has a BGP policy that matches on the Color Extended community C | |||
| and allows its usage as SLA steering information. | and allows its usage as SLA steering information. | |||
| If all these conditions are met, H installs R/r in RIB/FIB with next- | If all these conditions are met, H installs R/r in RIB/FIB with next- | |||
| hop = SR Policy P of BSID B instead of via N. | hop = SR Policy P of BSID B instead of via N. | |||
| Indeed, H's local BGP policy and the received BGP route indicate that | Indeed, H's local BGP policy and the received BGP route indicate that | |||
| the headend should associate R/r with an SR Policy path to endpoint N | the headend should associate R/r with an SR Policy path to endpoint N | |||
| with the SLA associated with color C. The headend, therefore, | with the SLA associated with color C. The headend, therefore, | |||
| installs the BGP route on that policy. | installs the BGP route on that policy. | |||
| This can be implemented by using the BSID as a generalized next-hop | This can be implemented by using the BSID as a generalized next-hop | |||
| and installing the BGP route on that generalized next-hop. | and installing the BGP route on that generalized next-hop. | |||
| When H receives a packet K with a destination matching R/r, H pushes | When H receives a packet K with a destination matching R/r, H pushes | |||
| the label stack <S1, S2, S3, V> and sends the resulting packet along | the label stack <S1, S2, S3, V> and sends the resulting packet along | |||
| the path to S1. | the path to S1. | |||
| Note that any SID associated with the BGP route is inserted after the | Note that any SID associated with the BGP route is inserted after the | |||
| Segment-List of the SR Policy (i.e., <S1, S2, S3, V>). | segment list of the SR Policy (i.e., <S1, S2, S3, V>). | |||
| In the case of SRv6, the processing is similar and follows the SR | In the case of SRv6, the processing is similar and follows the SR | |||
| Policy headend behaviors as specified in Section 5 of [RFC8986]. | Policy headend behaviors as specified in Section 5 of [RFC8986]. | |||
| The same behavior applies to any type of service route: any AFI/SAFI | The same behavior applies to any type of service route: any AFI/SAFI | |||
| of BGP [RFC4760] or the Locator/ID Separation Protocol (LISP) | of BGP [RFC4760] or the Locator/ID Separation Protocol (LISP) | |||
| [RFC6830] for both IPv4/IPv6. | [RFC6830] for both IPv4/IPv6. | |||
| In a BGP multi-path scenario, the BGP route MAY be resolved over a | In a BGP multi-path scenario, the BGP route MAY be resolved over a | |||
| mix of paths that include those that are steered over SR Policies and | mix of paths that include those that are steered over SR Policies and | |||
| skipping to change at line 1158 ¶ | skipping to change at line 1161 ¶ | |||
| When a BGP route has multiple Color Extended communities each with a | When a BGP route has multiple Color Extended communities each with a | |||
| valid SR Policy, the BGP process installs the route on the SR Policy | valid SR Policy, the BGP process installs the route on the SR Policy | |||
| giving preference to the Color Extended community with the highest | giving preference to the Color Extended community with the highest | |||
| numerical value. | numerical value. | |||
| Let us assume that headend H: | Let us assume that headend H: | |||
| * learns a BGP route R/r via next-hop N, Color Extended communities | * learns a BGP route R/r via next-hop N, Color Extended communities | |||
| C1 and C2. | C1 and C2. | |||
| * has a valid SR Policy P1 to (color = C1, endpoint = N) of Segment- | * has a valid SR Policy P1 to (color = C1, endpoint = N) of segment | |||
| List <S1, S2, S3> and BSID B1. | list <S1, S2, S3> and BSID B1. | |||
| * has a valid SR Policy P2 to (color = C2, endpoint = N) of Segment- | * has a valid SR Policy P2 to (color = C2, endpoint = N) of segment | |||
| List <S4, S5, S6> and BSID B2. | list <S4, S5, S6> and BSID B2. | |||
| * has a BGP policy that matches the Color Extended communities C1 | * has a BGP policy that matches the Color Extended communities C1 | |||
| and C2 and allows their usage as SLA steering information | and C2 and allows their usage as SLA steering information | |||
| If all these conditions are met, H installs R/r in RIB/FIB with next- | If all these conditions are met, H installs R/r in RIB/FIB with next- | |||
| hop = SR Policy P2 of BSID=B2 (instead of N) because C2 > C1. | hop = SR Policy P2 of BSID=B2 (instead of N) because C2 > C1. | |||
| When the SR Policy with a specific color is not instantiated or in | When the SR Policy with a specific color is not instantiated or in | |||
| the down/inactive state, the SR Policy with the next highest | the down/inactive state, the SR Policy with the next highest | |||
| numerical value of color is considered. | numerical value of color is considered. | |||
| skipping to change at line 1203 ¶ | skipping to change at line 1206 ¶ | |||
| SR Policy that is used for steering is then determined as described | SR Policy that is used for steering is then determined as described | |||
| in Section 8.4.1. | in Section 8.4.1. | |||
| 8.6. Per-Flow Steering | 8.6. Per-Flow Steering | |||
| This section provides an example of how a headend might apply per- | This section provides an example of how a headend might apply per- | |||
| flow steering in practice. | flow steering in practice. | |||
| Let us assume that headend H: | Let us assume that headend H: | |||
| * has a valid SR Policy P1 to (color = C1, endpoint = N) of Segment- | * has a valid SR Policy P1 to (color = C1, endpoint = N) of segment | |||
| List <S1, S2, S3> and BSID B1. | list <S1, S2, S3> and BSID B1. | |||
| * has a valid SR Policy P2 to (color = C2, endpoint = N) of Segment- | * has a valid SR Policy P2 to (color = C2, endpoint = N) of segment | |||
| List <S4, S5, S6> and BSID B2. | list <S4, S5, S6> and BSID B2. | |||
| * is configured to instantiate an array of paths to N where the | * is configured to instantiate an array of paths to N where the | |||
| entry 0 is the IGP path to N, color C1 is the first entry, and | entry 0 is the IGP path to N, color C1 is the first entry, and | |||
| color C2 is the second entry. The index into the array is called | color C2 is the second entry. The index into the array is called | |||
| a Forwarding Class (FC). The index can have values 0 to 7, | a Forwarding Class (FC). The index can have values 0 to 7, | |||
| especially when derived from the MPLS TC bits [RFC5462]. | especially when derived from the MPLS TC bits [RFC5462]. | |||
| * is configured to match flows in its ingress interfaces (upon any | * is configured to match flows in its ingress interfaces (upon any | |||
| field such as Ethernet destination/source/VLAN/TOS or IP | field such as Ethernet destination/source/VLAN/TOS or IP | |||
| destination/source/Differentiated Services Code Point (DSCP), or | destination/source/Differentiated Services Code Point (DSCP), or | |||
| transport ports etc.), and color them with an internal per-packet | transport ports etc.), and color them with an internal per-packet | |||
| forwarding-class variable (0, 1, or 2 in this example). | forwarding-class variable (0, 1, or 2 in this example). | |||
| skipping to change at line 1243 ¶ | skipping to change at line 1246 ¶ | |||
| * H forwards K along the shortest path to N (i.e., pushes the | * H forwards K along the shortest path to N (i.e., pushes the | |||
| Prefix-SID of N). | Prefix-SID of N). | |||
| * H pushes <S1, S2, S3> on packet K1 and forwards the resulting | * H pushes <S1, S2, S3> on packet K1 and forwards the resulting | |||
| frame along the shortest path to S1. | frame along the shortest path to S1. | |||
| * H pushes <S4, S5, S6> on packet K2 and forwards the resulting | * H pushes <S4, S5, S6> on packet K2 and forwards the resulting | |||
| frame along the shortest path to S4. | frame along the shortest path to S4. | |||
| For SRv6, the processing is similar and the segment lists of the | For SRv6, the processing is similar and the segment lists of the | |||
| individual SR Policies P1 and P2 are enforced for packets K1 and K2 | individual SR Policies P1 and P2 are enforced for packets K1 and K2 | |||
| using the SR Policy headend behaviors as specified in of Section 5 of | using the SR Policy headend behaviors as specified in Section 5 of | |||
| [RFC8986]. | [RFC8986]. | |||
| If the local configuration does not specify any explicit forwarding | If the local configuration does not specify any explicit forwarding | |||
| information for an entry of the array, then this entry is filled with | information for an entry of the array, then this entry is filled with | |||
| the same information as entry 0 (i.e., the IGP shortest path). | the same information as entry 0 (i.e., the IGP shortest path). | |||
| If the SR Policy mapped to an entry of the array becomes invalid, | If the SR Policy mapped to an entry of the array becomes invalid, | |||
| then this entry is filled with the same information as entry 0. When | then this entry is filled with the same information as entry 0. When | |||
| all the array entries have the same information as entry 0, the | all the array entries have the same information as entry 0, the | |||
| forwarding entry for N is updated to bypass the array and point | forwarding entry for N is updated to bypass the array and point | |||
| skipping to change at line 1295 ¶ | skipping to change at line 1298 ¶ | |||
| This is the most likely form of BGP destination steering and the one | This is the most likely form of BGP destination steering and the one | |||
| recommended for most use cases. | recommended for most use cases. | |||
| This section defines an alternative steering mechanism based only on | This section defines an alternative steering mechanism based only on | |||
| the Color Extended community. | the Color Extended community. | |||
| Three types of steering modes are defined. | Three types of steering modes are defined. | |||
| For the default, Type 0, the BGP destination is steered as follows: | For the default, Type 0, the BGP destination is steered as follows: | |||
| IF there is a valid SR Policy (N, C) where N is the IPv4 or IPv6 | IF there is a valid SR Policy (N, C) where N is the IPv4 or IPv6 | |||
| endpoint address and C is a color; | endpoint address and C is a color; | |||
| Steer into SR Policy (N, C); | Steer into SR Policy (N, C); | |||
| ELSE; | ELSE; | |||
| Steer on the IGP path to the next-hop N. | Steer on the IGP path to the next-hop N. | |||
| This is the classic case described in this document previously and | This is the classic case described in this document previously and | |||
| what is recommended in most scenarios. | what is recommended in most scenarios. | |||
| For Type 1, the BGP destination is steered as follows: | For Type 1, the BGP destination is steered as follows: | |||
| IF there is a valid SR Policy (N, C) where N is the IPv4 or IPv6 | IF there is a valid SR Policy (N, C) where N is the IPv4 or IPv6 | |||
| endpoint address and C is a color; | endpoint address and C is a color; | |||
| Steer into SR Policy (N, C); | Steer into SR Policy (N, C); | |||
| ELSE IF there is a valid SR Policy (null endpoint, C) of the | ELSE IF there is a valid SR Policy (null endpoint, C) of the | |||
| same address-family of N; | same address-family of N; | |||
| Steer into SR Policy (null endpoint, C); | Steer into SR Policy (null endpoint, C); | |||
| ELSE IF there is any valid SR Policy | ELSE IF there is any valid SR Policy | |||
| (any address-family null endpoint, C); | (any address-family null endpoint, C); | |||
| Steer into SR Policy (any null endpoint, C); | Steer into SR Policy (any null endpoint, C); | |||
| ELSE; | ELSE; | |||
| Steer on the IGP path to the next-hop N. | Steer on the IGP path to the next-hop N. | |||
| For Type 2, the BGP destination is steered as follows: | For Type 2, the BGP destination is steered as follows: | |||
| IF there is a valid SR Policy (N, C) where N is an IPv4 or IPv6 | IF there is a valid SR Policy (N, C) where N is an IPv4 or IPv6 | |||
| endpoint address and C is a color; | endpoint address and C is a color; | |||
| Steer into SR Policy (N, C); | Steer into SR Policy (N, C); | |||
| ELSE IF there is a valid SR Policy (null endpoint, C) | ELSE IF there is a valid SR Policy (null endpoint, C) | |||
| of the same address-family of N; | of the same address-family of N; | |||
| Steer into SR Policy (null endpoint, C); | Steer into SR Policy (null endpoint, C); | |||
| ELSE IF there is any valid SR Policy | ELSE IF there is any valid SR Policy | |||
| (any address-family null endpoint, C); | (any address-family null endpoint, C); | |||
| Steer into SR Policy (any null endpoint, C); | Steer into SR Policy (any null endpoint, C); | |||
| ELSE IF there is any valid SR Policy (any endpoint, C) | ELSE IF there is any valid SR Policy (any endpoint, C) | |||
| of the same address-family of N; | of the same address-family of N; | |||
| Steer into SR Policy (any endpoint, C); | Steer into SR Policy (any endpoint, C); | |||
| ELSE IF there is any valid SR Policy | ELSE IF there is any valid SR Policy | |||
| (any address-family endpoint, C); | (any address-family endpoint, C); | |||
| Steer into SR Policy (any address-family endpoint, C); | Steer into SR Policy (any address-family endpoint, C); | |||
| ELSE; | ELSE; | |||
| Steer on the IGP path to the next-hop N. | Steer on the IGP path to the next-hop N. | |||
| The null endpoint is 0.0.0.0 for IPv4 and :: for IPv6 (all bits set | The null endpoint is 0.0.0.0 for IPv4 and :: for IPv6 (all bits set | |||
| to the 0 value). | to the 0 value). | |||
| Please refer to [IDR-SR-TE-POLICY] for the updates to the BGP Color | Please refer to [BGP-SR-POLICY] for the updates to the BGP Color | |||
| Extended community for the implementation of these mechanisms. | Extended community for the implementation of these mechanisms. | |||
| 8.8.2. Multiple Colors and CO flags | 8.8.2. Multiple Colors and CO flags | |||
| The steering preference is first based on the highest Color Extended | The steering preference is first based on the highest Color Extended | |||
| community value and then Color-Only steering type for the color. | community value and then Color-Only steering type for the color. | |||
| Assuming a Prefix via (NH, C1(CO=01), C2(CO=01)); C1>C2, the steering | Assuming a Prefix via (NH, C1(CO=01), C2(CO=01)); C1>C2. The | |||
| preference order is: | steering preference order is: | |||
| * SR Policy (NH, C1). | * SR Policy (NH, C1). | |||
| * SR Policy (null, C1). | * SR Policy (null, C1). | |||
| * SR Policy (NH, C2). | * SR Policy (NH, C2). | |||
| * SR Policy (null, C2). | * SR Policy (null, C2). | |||
| * IGP to NH. | * IGP to NH. | |||
| 8.8.3. Drop upon Invalid | 8.8.3. Drop-upon-Invalid | |||
| This document defined earlier that when all the following conditions | This document defined earlier that when all the following conditions | |||
| are met, H installs R/r in RIB/FIB with next-hop = SR Policy P of | are met, H installs R/r in RIB/FIB with next-hop = SR Policy P of | |||
| BSID B instead of via N. | BSID B instead of via N. | |||
| * H learns a BGP route R/r via next-hop N, Color Extended community | * H learns a BGP route R/r via next-hop N, Color Extended community | |||
| C. | C. | |||
| * H has a valid SR Policy P to (color = C, endpoint = N) of Segment- | * H has a valid SR Policy P to (color = C, endpoint = N) of segment | |||
| List <S1, S2, S3> and BSID B. | list <S1, S2, S3> and BSID B. | |||
| * H has a BGP policy that matches the Color Extended community C and | * H has a BGP policy that matches the Color Extended community C and | |||
| allows its usage as SLA steering information. | allows its usage as SLA steering information. | |||
| This behavior is extended by noting that the BGP Policy may require | This behavior is extended by noting that the BGP Policy may require | |||
| the BGP steering to always stay on the SR Policy whatever its | the BGP steering to always stay on the SR Policy whatever its | |||
| validity. | validity. | |||
| This is the "drop upon invalid" option described in Section 8.2 | This is the "drop-upon-invalid" option described in Section 8.2 | |||
| applied to BGP-based steering. | applied to BGP-based steering. | |||
| 9. Recovering from Network Failures | 9. Recovering from Network Failures | |||
| 9.1. Leveraging TI-LFA Local Protection of the Constituent IGP Segments | 9.1. Leveraging TI-LFA Local Protection of the Constituent IGP Segments | |||
| In any topology, Topology-Independent Loop-Free Alternate (TI-LFA) | In any topology, Topology-Independent Loop-Free Alternate (TI-LFA) | |||
| [SR-TI-LFA] provides a 50 msec local protection technique for IGP | [SR-TI-LFA] provides a 50 msec local protection technique for IGP | |||
| SIDs. The backup path is computed on a per-IGP-SID basis along the | SIDs. The backup path is computed on a per-IGP-SID basis along the | |||
| post-convergence path. | post-convergence path. | |||
| skipping to change at line 1405 ¶ | skipping to change at line 1408 ¶ | |||
| protection. | protection. | |||
| 9.2. Using an SR Policy to Locally Protect a Link | 9.2. Using an SR Policy to Locally Protect a Link | |||
| 1----2-----6----7 | 1----2-----6----7 | |||
| | | | | | | | | | | |||
| 4----3-----9----8 | 4----3-----9----8 | |||
| Figure 1: Local Protection Using SR Policy | Figure 1: Local Protection Using SR Policy | |||
| An SR Policy can be instantiated at node 2 to protect link 2to6. A | An SR Policy can be instantiated at node 2 to protect link 2-to-6. A | |||
| typical explicit Segment-List would be <3, 9, 6>. | typical explicit segment list would be <3, 9, 6>. | |||
| A typical use case occurs for links outside an IGP domain: e.g., 1, | A typical use case occurs for links outside an IGP domain: e.g., 1, | |||
| 2, 3, and 4 are part of IGP/SR sub-domain 1 while 6, 7, 8, and 9 are | 2, 3, and 4 are part of IGP/SR sub-domain 1 while 6, 7, 8, and 9 are | |||
| part of IGP/SR sub-domain 2. In such a case, links 2to6 and 3to9 | part of IGP/SR sub-domain 2. In such a case, links 2-to-6 and 3to9 | |||
| cannot benefit from TI-LFA automated local protection. The SR Policy | cannot benefit from TI-LFA automated local protection. The SR Policy | |||
| with Segment-List <3, 9, 6> on node 2 can be locally configured to be | with segment list <3, 9, 6> on node 2 can be locally configured to be | |||
| a fast-reroute backup path for the link 2to6. | a fast-reroute backup path for the link 2-to-6. | |||
| 9.3. Using a Candidate Path for Path Protection | 9.3. Using a Candidate Path for Path Protection | |||
| An SR Policy allows for multiple candidate paths, of which at any | An SR Policy allows for multiple candidate paths, of which at any | |||
| point in time there is a single active candidate path that is | point in time there is a single active candidate path that is | |||
| provisioned in the forwarding plane and used for traffic steering. | provisioned in the forwarding plane and used for traffic steering. | |||
| However, another (lower preference) candidate path MAY be designated | However, another (lower preference) candidate path MAY be designated | |||
| as the backup for a specific or all (active) candidate path(s). The | as the backup for a specific or all (active) candidate path(s). The | |||
| following options are possible: | following options are possible: | |||
| skipping to change at line 1504 ¶ | skipping to change at line 1507 ¶ | |||
| apply. | apply. | |||
| A YANG model for the configuration and operation of SR Policy has | A YANG model for the configuration and operation of SR Policy has | |||
| been defined in [SR-POLICY-YANG]. | been defined in [SR-POLICY-YANG]. | |||
| 12. IANA Considerations | 12. IANA Considerations | |||
| IANA has created a new subregistry called "Segment Types" under the | IANA has created a new subregistry called "Segment Types" under the | |||
| "Segment Routing" registry that was created by [RFC8986]. This | "Segment Routing" registry that was created by [RFC8986]. This | |||
| subregistry maintains the alphabetic identifiers for the segment | subregistry maintains the alphabetic identifiers for the segment | |||
| types (as specified in Section 4) that may be used within a Segment | types (as specified in Section 4) that may be used within a segment | |||
| List of an SR Policy. The alphabetical identifiers run from A to Z | list of an SR Policy. The alphabetical identifiers run from A to Z | |||
| and may be extended on exhaustion with the identifiers AA to AZ, BA | and may be extended on exhaustion with the identifiers AA to AZ, BA | |||
| to BZ, and so on, through ZZ. This subregistry follows the | to BZ, and so on, through ZZ. This subregistry follows the | |||
| Specification Required allocation policy as specified in [RFC8126]. | Specification Required allocation policy as specified in [RFC8126]. | |||
| The initial registrations for this subregistry are as follows: | The initial registrations for this subregistry are as follows: | |||
| +=======+=============================================+===========+ | +=======+=============================================+===========+ | |||
| | Value | Description | Reference | | | Value | Description | Reference | | |||
| +=======+=============================================+===========+ | +=======+=============================================+===========+ | |||
| | A | SR-MPLS Label | RFC 9256 | | | A | SR-MPLS Label | RFC 9256 | | |||
| skipping to change at line 1572 ¶ | skipping to change at line 1575 ¶ | |||
| 13. References | 13. References | |||
| 13.1. Normative References | 13.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC7752] Gredler, H., Ed., Medved, J., Previdi, S., Farrel, A., and | [RFC7752] Gredler, H., Medved, J., Previdi, S., Farrel, A., and S. | |||
| S. Ray, "North-Bound Distribution of Link-State and | Ray, "North-Bound Distribution of Link-State and Traffic | |||
| Traffic Engineering (TE) Information Using BGP", RFC 7752, | Engineering (TE) Information Using BGP", | |||
| DOI 10.17487/RFC7752, March 2016, | DOI 10.17487/RFC7752, RFC 7752, March 2016, | |||
| <https://www.rfc-editor.org/info/rfc7752>. | <https://www.rfc-editor.org/info/rfc7752>. | |||
| [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | |||
| Writing an IANA Considerations Section in RFCs", BCP 26, | Writing an IANA Considerations Section in RFCs", BCP 26, | |||
| RFC 8126, DOI 10.17487/RFC8126, June 2017, | RFC 8126, DOI 10.17487/RFC8126, June 2017, | |||
| <https://www.rfc-editor.org/info/rfc8126>. | <https://www.rfc-editor.org/info/rfc8126>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| [RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., | [RFC8402] Filsfils, C., Previdi, S., Ginsberg, L., Decraene, B., | |||
| Decraene, B., Litkowski, S., and R. Shakir, "Segment | Litkowski, S., and R. Shakir, "Segment Routing | |||
| Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, | Architecture", DOI 10.17487/RFC8402, RFC 8402, July 2018, | |||
| July 2018, <https://www.rfc-editor.org/info/rfc8402>. | <https://www.rfc-editor.org/info/rfc8402>. | |||
| [RFC8660] Bashandy, A., Ed., Filsfils, C., Ed., Previdi, S., | [RFC8660] Bashandy, A., Ed., Filsfils, C., Ed., Previdi, S., | |||
| Decraene, B., Litkowski, S., and R. Shakir, "Segment | Decraene, B., Litkowski, S., and R. Shakir, "Segment | |||
| Routing with the MPLS Data Plane", RFC 8660, | Routing with the MPLS Data Plane", RFC 8660, | |||
| DOI 10.17487/RFC8660, December 2019, | DOI 10.17487/RFC8660, December 2019, | |||
| <https://www.rfc-editor.org/info/rfc8660>. | <https://www.rfc-editor.org/info/rfc8660>. | |||
| [RFC8754] Filsfils, C., Ed., Dukes, D., Ed., Previdi, S., Leddy, J., | [RFC8754] Filsfils, C., Ed., Dukes, D., Ed., Previdi, S., Leddy, J., | |||
| Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header | Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header | |||
| (SRH)", RFC 8754, DOI 10.17487/RFC8754, March 2020, | (SRH)", RFC 8754, DOI 10.17487/RFC8754, March 2020, | |||
| skipping to change at line 1616 ¶ | skipping to change at line 1619 ¶ | |||
| DOI 10.17487/RFC8986, February 2021, | DOI 10.17487/RFC8986, February 2021, | |||
| <https://www.rfc-editor.org/info/rfc8986>. | <https://www.rfc-editor.org/info/rfc8986>. | |||
| [RFC9012] Patel, K., Van de Velde, G., Sangli, S., and J. Scudder, | [RFC9012] Patel, K., Van de Velde, G., Sangli, S., and J. Scudder, | |||
| "The BGP Tunnel Encapsulation Attribute", RFC 9012, | "The BGP Tunnel Encapsulation Attribute", RFC 9012, | |||
| DOI 10.17487/RFC9012, April 2021, | DOI 10.17487/RFC9012, April 2021, | |||
| <https://www.rfc-editor.org/info/rfc9012>. | <https://www.rfc-editor.org/info/rfc9012>. | |||
| 13.2. Informative References | 13.2. Informative References | |||
| [BINDING-LABEL-SID] | [BGP-LS-TE-POLICY] | |||
| Sivabalan, S., Filsfils, C., Tantsura, J., Previdi, S., | Previdi, S., Talaulikar, K., Ed., Dong, J., Ed., Chen, M., | |||
| and C. Li, Ed., "Carrying Binding Label/Segment Identifier | Gredler, H., and J. Tantsura, "Distribution of Traffic | |||
| (SID) in PCE-based Networks.", Work in Progress, Internet- | Engineering (TE) Policies and State using BGP-LS", Work in | |||
| Draft, draft-ietf-pce-binding-label-sid-15, March 2022, | Progress, Internet-Draft, draft-ietf-idr-te-lsp- | |||
| <https://datatracker.ietf.org/doc/html/draft-ietf-pce- | distribution-17, April 2022, | |||
| binding-label-sid-15>. | <https://datatracker.ietf.org/doc/html/draft-ietf-idr-te- | |||
| lsp-distribution-17>. | ||||
| [IDR-SR-TE-POLICY] | [BGP-SR-POLICY] | |||
| Previdi, S., Filsfils, C., Talaulikar, K., Ed., Mattes, | Previdi, S., Filsfils, C., Talaulikar, K., Ed., Mattes, | |||
| P., Jain, D., and S. Lin, "Advertising Segment Routing | P., Jain, D., and S. Lin, "Advertising Segment Routing | |||
| Policies in BGP", Work in Progress, Internet-Draft, draft- | Policies in BGP", Work in Progress, Internet-Draft, draft- | |||
| ietf-idr-segment-routing-te-policy-17, April 2022, | ietf-idr-segment-routing-te-policy-18, June 2022, | |||
| <https://datatracker.ietf.org/doc/html/draft-ietf-idr- | <https://datatracker.ietf.org/doc/html/draft-ietf-idr- | |||
| segment-routing-te-policy-17>. | segment-routing-te-policy-18>. | |||
| [IGP-FLEX-ALGO] | [IGP-FLEX-ALGO] | |||
| Psenak, P., Ed., Hegde, S., Filsfils, C., Talaulikar, K., | Psenak, P., Ed., Hegde, S., Filsfils, C., Talaulikar, K., | |||
| and A. Gulko, "IGP Flexible Algorithm", Work in Progress, | and A. Gulko, "IGP Flexible Algorithm", Work in Progress, | |||
| Internet-Draft, draft-ietf-lsr-flex-algo-20, May 2022, | Internet-Draft, draft-ietf-lsr-flex-algo-20, May 2022, | |||
| <https://datatracker.ietf.org/doc/html/draft-ietf-lsr- | <https://datatracker.ietf.org/doc/html/draft-ietf-lsr- | |||
| flex-algo-20>. | flex-algo-20>. | |||
| [PCEP-BSID-LABEL] | ||||
| Sivabalan, S., Filsfils, C., Tantsura, J., Previdi, S., | ||||
| and C. Li, Ed., "Carrying Binding Label/Segment Identifier | ||||
| (SID) in PCE-based Networks.", Work in Progress, Internet- | ||||
| Draft, draft-ietf-pce-binding-label-sid-15, March 2022, | ||||
| <https://datatracker.ietf.org/doc/html/draft-ietf-pce- | ||||
| binding-label-sid-15>. | ||||
| [PCEP-SR-POLICY-CP] | ||||
| Koldychev, M., Sivabalan, S., Barth, C., Peng, S., and H. | ||||
| Bidgoli, "PCEP extension to support Segment Routing Policy | ||||
| Candidate Paths", Work in Progress, Internet-Draft, draft- | ||||
| ietf-pce-segment-routing-policy-cp-07, 21 April 2022, | ||||
| <https://datatracker.ietf.org/doc/html/draft-ietf-pce- | ||||
| segment-routing-policy-cp-07>. | ||||
| [POI-SR] Anand, M., Bardhan, S., Subrahmaniam, R., Tantsura, J., | [POI-SR] Anand, M., Bardhan, S., Subrahmaniam, R., Tantsura, J., | |||
| Mukhopadhyaya, U., and C. Filsfils, "Packet-Optical | Mukhopadhyaya, U., and C. Filsfils, "Packet-Optical | |||
| Integration in Segment Routing", Work in Progress, | Integration in Segment Routing", Work in Progress, | |||
| Internet-Draft, draft-anand-spring-poi-sr-08, 29 July | Internet-Draft, draft-anand-spring-poi-sr-08, 29 July | |||
| 2019, <https://datatracker.ietf.org/doc/html/draft-anand- | 2019, <https://datatracker.ietf.org/doc/html/draft-anand- | |||
| spring-poi-sr-08>. | spring-poi-sr-08>. | |||
| [RFC0020] Cerf, V., "ASCII format for network interchange", STD 80, | [RFC0020] Cerf, V., "ASCII format for network interchange", STD 80, | |||
| RFC 20, DOI 10.17487/RFC0020, October 1969, | RFC 20, DOI 10.17487/RFC0020, October 1969, | |||
| <https://www.rfc-editor.org/info/rfc20>. | <https://www.rfc-editor.org/info/rfc20>. | |||
| [RFC1195] Callon, R., "Use of OSI IS-IS for routing in TCP/IP and | [RFC1195] Callon, R W., "Use of OSI IS-IS for routing in TCP/IP and | |||
| dual environments", RFC 1195, DOI 10.17487/RFC1195, | dual environments", DOI 10.17487/RFC1195, RFC 1195, | |||
| December 1990, <https://www.rfc-editor.org/info/rfc1195>. | December 1990, <https://www.rfc-editor.org/info/rfc1195>. | |||
| [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, | [RFC2328] Moy, J., "OSPF Version 2", DOI 10.17487/RFC2328, STD 54, | |||
| DOI 10.17487/RFC2328, April 1998, | RFC 2328, April 1998, | |||
| <https://www.rfc-editor.org/info/rfc2328>. | <https://www.rfc-editor.org/info/rfc2328>. | |||
| [RFC3630] Katz, D., Kompella, K., and D. Yeung, "Traffic Engineering | [RFC3630] Katz, D., Kompella, K., and D. Yeung, "Traffic Engineering | |||
| (TE) Extensions to OSPF Version 2", RFC 3630, | (TE) Extensions to OSPF Version 2", RFC 3630, | |||
| DOI 10.17487/RFC3630, September 2003, | DOI 10.17487/RFC3630, September 2003, | |||
| <https://www.rfc-editor.org/info/rfc3630>. | <https://www.rfc-editor.org/info/rfc3630>. | |||
| [RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter, | [RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter, | |||
| "Multiprotocol Extensions for BGP-4", RFC 4760, | "Multiprotocol Extensions for BGP-4", RFC 4760, | |||
| DOI 10.17487/RFC4760, January 2007, | DOI 10.17487/RFC4760, January 2007, | |||
| skipping to change at line 1683 ¶ | skipping to change at line 1703 ¶ | |||
| in Support of Generalized Multi-Protocol Label Switching | in Support of Generalized Multi-Protocol Label Switching | |||
| (GMPLS)", RFC 5307, DOI 10.17487/RFC5307, October 2008, | (GMPLS)", RFC 5307, DOI 10.17487/RFC5307, October 2008, | |||
| <https://www.rfc-editor.org/info/rfc5307>. | <https://www.rfc-editor.org/info/rfc5307>. | |||
| [RFC5329] Ishiguro, K., Manral, V., Davey, A., and A. Lindem, Ed., | [RFC5329] Ishiguro, K., Manral, V., Davey, A., and A. Lindem, Ed., | |||
| "Traffic Engineering Extensions to OSPF Version 3", | "Traffic Engineering Extensions to OSPF Version 3", | |||
| RFC 5329, DOI 10.17487/RFC5329, September 2008, | RFC 5329, DOI 10.17487/RFC5329, September 2008, | |||
| <https://www.rfc-editor.org/info/rfc5329>. | <https://www.rfc-editor.org/info/rfc5329>. | |||
| [RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF | [RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF | |||
| for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, | for IPv6", DOI 10.17487/RFC5340, RFC 5340, July 2008, | |||
| <https://www.rfc-editor.org/info/rfc5340>. | <https://www.rfc-editor.org/info/rfc5340>. | |||
| [RFC5462] Andersson, L. and R. Asati, "Multiprotocol Label Switching | [RFC5462] Andersson, L. and R. Asati, "Multiprotocol Label Switching | |||
| (MPLS) Label Stack Entry: "EXP" Field Renamed to "Traffic | (MPLS) Label Stack Entry: "EXP" Field Renamed to "Traffic | |||
| Class" Field", RFC 5462, DOI 10.17487/RFC5462, February | Class" Field", RFC 5462, DOI 10.17487/RFC5462, February | |||
| 2009, <https://www.rfc-editor.org/info/rfc5462>. | 2009, <https://www.rfc-editor.org/info/rfc5462>. | |||
| [RFC6830] Farinacci, D., Fuller, V., Meyer, D., and D. Lewis, "The | [RFC6830] Farinacci, D., Fuller, V., Meyer, D., and D. Lewis, "The | |||
| Locator/ID Separation Protocol (LISP)", RFC 6830, | Locator/ID Separation Protocol (LISP)", RFC 6830, | |||
| DOI 10.17487/RFC6830, January 2013, | DOI 10.17487/RFC6830, January 2013, | |||
| skipping to change at line 1748 ¶ | skipping to change at line 1768 ¶ | |||
| 2021, <https://www.rfc-editor.org/info/rfc9086>. | 2021, <https://www.rfc-editor.org/info/rfc9086>. | |||
| [SR-POLICY-CONSID] | [SR-POLICY-CONSID] | |||
| Filsfils, C., Talaulikar, K., Ed., Krol, P., Horneffer, | Filsfils, C., Talaulikar, K., Ed., Krol, P., Horneffer, | |||
| M., and P. Mattes, "SR Policy Implementation and | M., and P. Mattes, "SR Policy Implementation and | |||
| Deployment Considerations", Work in Progress, Internet- | Deployment Considerations", Work in Progress, Internet- | |||
| Draft, draft-filsfils-spring-sr-policy-considerations-09, | Draft, draft-filsfils-spring-sr-policy-considerations-09, | |||
| 24 April 2022, <https://datatracker.ietf.org/doc/html/ | 24 April 2022, <https://datatracker.ietf.org/doc/html/ | |||
| draft-filsfils-spring-sr-policy-considerations-09>. | draft-filsfils-spring-sr-policy-considerations-09>. | |||
| [SR-POLICY-CP] | ||||
| Koldychev, M., Sivabalan, S., Barth, C., Peng, S., and H. | ||||
| Bidgoli, "PCEP extension to support Segment Routing Policy | ||||
| Candidate Paths", Work in Progress, Internet-Draft, draft- | ||||
| ietf-pce-segment-routing-policy-cp-07, 21 April 2022, | ||||
| <https://datatracker.ietf.org/doc/html/draft-ietf-pce- | ||||
| segment-routing-policy-cp-07>. | ||||
| [SR-POLICY-YANG] | [SR-POLICY-YANG] | |||
| Raza, K., Ed., Sawaya, S., Shunwan, Z., Voyer, D., | Raza, K., Ed., Sawaya, S., Shunwan, Z., Voyer, D., | |||
| Durrani, M., Matsushima, S., and V. Beeram, "YANG Data | Durrani, M., Matsushima, S., and V. Beeram, "YANG Data | |||
| Model for Segment Routing Policy", Work in Progress, | Model for Segment Routing Policy", Work in Progress, | |||
| Internet-Draft, draft-ietf-spring-sr-policy-yang-01, April | Internet-Draft, draft-ietf-spring-sr-policy-yang-01, April | |||
| 2021, <https://datatracker.ietf.org/doc/html/draft-ietf- | 2021, <https://datatracker.ietf.org/doc/html/draft-ietf- | |||
| spring-sr-policy-yang-01>. | spring-sr-policy-yang-01>. | |||
| [SR-TI-LFA] | [SR-TI-LFA] | |||
| Litkowski, S., Bashandy, A., Filsfils, C., Francois, P., | Litkowski, S., Bashandy, A., Filsfils, C., Francois, P., | |||
| skipping to change at line 1783 ¶ | skipping to change at line 1795 ¶ | |||
| [SR-TRAFFIC-ACCOUNTING] | [SR-TRAFFIC-ACCOUNTING] | |||
| Ali, Z., Filsfils, C., Talaulikar, K., Sivabalan, S., | Ali, Z., Filsfils, C., Talaulikar, K., Sivabalan, S., | |||
| Horneffer, M., Raszuk, R., Litkowski, S., Voyer, D., | Horneffer, M., Raszuk, R., Litkowski, S., Voyer, D., | |||
| Morton, R., and G. Dawra, "Traffic Accounting in Segment | Morton, R., and G. Dawra, "Traffic Accounting in Segment | |||
| Routing Networks", Work in Progress, Internet-Draft, | Routing Networks", Work in Progress, Internet-Draft, | |||
| draft-ali-spring-sr-traffic-accounting-07, May 2022, | draft-ali-spring-sr-traffic-accounting-07, May 2022, | |||
| <https://datatracker.ietf.org/doc/html/draft-ali-spring- | <https://datatracker.ietf.org/doc/html/draft-ali-spring- | |||
| sr-traffic-accounting-07>. | sr-traffic-accounting-07>. | |||
| [SR-TRAFFIC-COUNTERS] | [SR-TRAFFIC-COUNTERS] | |||
| Filsfils, C., Ali, A., Ed., Horneffer, M., Voyer, D., | Filsfils, C., Ali, Z., Ed., Horneffer, M., Voyer, D., | |||
| Durrani, M., and R. Raszuk, "Segment Routing Traffic | Durrani, M., and R. Raszuk, "Segment Routing Traffic | |||
| Accounting Counters", Work in Progress, Internet-Draft, | Accounting Counters", Work in Progress, Internet-Draft, | |||
| draft-filsfils-spring-sr-traffic-counters-02, October | draft-filsfils-spring-sr-traffic-counters-02, October | |||
| 2021, <https://datatracker.ietf.org/doc/html/draft- | 2021, <https://datatracker.ietf.org/doc/html/draft- | |||
| filsfils-spring-sr-traffic-counters-02>. | filsfils-spring-sr-traffic-counters-02>. | |||
| [TE-POLICIES-BGP-LS] | ||||
| Previdi, S., Ed., Talaulikar, K., Ed., Dong, J., Ed., | ||||
| Chen, M., Gredler, H., and J. Tantsura, "Distribution of | ||||
| Traffic Engineering (TE) Policies and State using BGP-LS", | ||||
| Work in Progress, Internet-Draft, draft-ietf-idr-te-lsp- | ||||
| distribution-17, April 2022, | ||||
| <https://datatracker.ietf.org/doc/html/draft-ietf-idr-te- | ||||
| lsp-distribution-17>. | ||||
| Acknowledgement | Acknowledgement | |||
| The authors would like to thank Tarek Saad, Dhanendra Jain, Ruediger | The authors would like to thank Tarek Saad, Dhanendra Jain, Ruediger | |||
| Geib, Rob Shakir, Cheng Li, Dhruv Dhody, Gyan Mishra, Nandan Saha, | Geib, Rob Shakir, Cheng Li, Dhruv Dhody, Gyan Mishra, Nandan Saha, | |||
| Jim Guichard, Martin Vigoureux, Benjamin Schwartz, David Schinazi, | Jim Guichard, Martin Vigoureux, Benjamin Schwartz, David Schinazi, | |||
| Matthew Bocci, Cullen Jennings, and Carlos J. Bernardos for their | Matthew Bocci, Cullen Jennings, and Carlos J. Bernardos for their | |||
| review, comments, and suggestions. | review, comments, and suggestions. | |||
| Contributors | Contributors | |||
| End of changes. 112 change blocks. | ||||
| 239 lines changed or deleted | 242 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||