Network Working Group Yuanchao Su Internet-Draft Cisco Systems, Inc. Intended status: Standards Track October 1,2018 Expires: January 3, 2019 BGP trigger Segment Routing ODN draft-su-bgp-trigger-segment-routing-odn-00 Abstract This document defines an extension to the BGP SR Policy NLRI (draft-ietf-idr-segment-routing-te-policy) in order to use BGP to trigger Segment Routing ODN, without using PCEP. The goal is to consolidate the SR Policy provision(BGP-TE), collection(BGP-LS) and ODN-trigger protocol for device to be BGP only, thus remove the need for PCEP and reduce the network complexity and potential bugs cause by different protocol interactions. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at https://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on January 3, 2019. Copyright Notice Copyright (c) 2018 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. 1. Introduction Segment Routing (SR) allows a headend node to steer a packet flow along any path. Intermediate per-flow states are eliminated thanks to source routing [I-D.ietf-spring-segment-routing]. The headend node is said to steer a flow into a Segment Routing Policy (SR Policy). The header of a packet steered in an SR Policy is augmented with the ordered list of segments associated with that SR Policy. [I-D.ietf-spring-segment-routing-policy] details the concepts of SR Policy and steering into an SR Policy. These apply equally to the MPLS and SRv6 instantiations of segment routing. [I-D.ietf-idr-segment-routing-te-policy] specifies the way to use BGP to distribute one or more of the candidate paths of an SR Policy to the headend of that policy. This document specifies a way for headend to trigger SR ODN with BGP SR Policy NLRI UPDATE messages. BGP can then be used to replace PCEP as the signal protocol for ODN. This special UPDATE message SHOULD NOT be used for BGP best path selection. When controller receives this specific UPDATE message from headend, it checks whether it's PCE, if yes, it processed the payload of the message, otherwise it drops the message. If controller is PCE, it retrieves the color, link affinity, association information from the message and starts the path calculation. Once the path calculation is done, the controller uses BGP SR Policy NLRI UPDATE message to distribute the candidate path to headend.If the calculation is failed, for example, the constrains expressed by the link affinity TLV can't be met, the controller MUST sends a BGP SR Policy NLRI with Segment List TLV empty and Bing-SID empty. When headend receives the update from controller, it processed the update as specified in [I-D.ietf-idr-segment-routing-te-policy] The extensions to SR Policy NLRI include: o Distinguisher field SR Policy NLRI: special address FF:FF:FF:FF as the signal for ODN o Two new sub-TLVs belong to Tunnel Encaps Attribute with Tunnel-Type set to 15(SR Policy) o Metric sub-TLV to specify the metric that the PCE should use for the path calculation o Link Affinity sub-TLV to specify the link constrains o Association sub-TLV to specify the disjointness and protection constrains 1.1. Requirements Language The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119]. 2. BGP trigger ODN Encoding 2.1. Extension to SR Policy NLRI [I-D.ietf-idr-segment-routing-te-policy] defines the SR Policy NLRI as below: +------------------+ | NLRI Length | 1 octet +------------------+ | Distinguisher | 4 octets +------------------+ | Policy Color | 4 octets +------------------+ | Endpoint | 4 or 16 octets +------------------+ where: o NLRI Length: 1 octet of length expressed in bits as defined in [RFC4760]. o Distinguisher: 4-octet value uniquely identifying the policy in the context of tuple. The distinguisher has no semantic value and is solely used by the SR Policy originator to make unique (from an NLRI perspective) multiple occurrences of the same SR Policy. o Policy Color: 4-octet value identifying (with the endpoint) the policy. The color is used to match the color of the destination prefixes to steer traffic into the SR Policy [I-D.ietf-spring-segment-routing-policy]. o Endpoint: identifies the endpoint of a policy. The Endpoint may represent a single node or a set of nodes (e.g., an anycast address). The Endpoint is an IPv4 (4-octet) address or an IPv6 (16-octet) address according to the AFI of the NLRI. NLRI Length, Policy Color,Endpoint field remains unchanged, while the Distinguisher field will be set to FF:FF:FF:FF to signal the ODN request to controller. 2.2. New SR Policy Sub-TLVs The content of the SR Policy is encoded in the Tunnel Encapsulation Attribute originally defined in [I-D.ietf-idr-tunnel-encaps] using a new Tunnel-Type TLV (codepoint is 15, assigned by IANA. The SR Policy Encoding structure is as follows: SR Policy SAFI NLRI: Attributes: Tunnel Encaps Attribute (23) Tunnel Type: SR Policy Binding SID Preference Priority Policy Name Explicit NULL Label Policy (ENLP) Segment List Weight Segment Segment ... ... where: o SR Policy SAFI NLRI is defined in [I-D.ietf-idr-segment-routing-te-policy] o Tunnel Encapsulation Attribute is defined in [I-D.ietf-idr-tunnel-encaps]. o Tunnel-Type is set to 15. o Preference, Binding SID, Priority, Policy Name, ENLP, Segment- List, Weight and Segment sub-TLVs are defined in [I-D.ietf-idr-segment-routing-te-policy]. o Additional sub-TLVs may be defined in the future. In this document, 3 new SR Policy sub-TLVs are defined. 2.3. New SR Policy Sub-TLVs This section defines the new SR Policy sub-TLVs. o Metric sub-TLV to specify the metric that the PCE should use for the path calculation o LSPA sub-TLV to specify the link constrains o Association sub-TLV to specify the disjointness and protection constrains 2.3.1. Metric Sub-TLV The Metric sub-TLV carries the same content as Metric Object defined in [RFC5440] and [I-D.ietf-pce-segment-routing]. The Metric sub-TLV has following format: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Flags |C|B| T | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | metric-value (4 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ o Type: TBD o Length: specifies the length of the value field not including Type and Length fields. o T (Type - 8 bits): Specifies the metric type. Four values are currently defined: * T=1: IGP metric * T=2: TE metric * T=3: Hop Counts * T=11: Maximum SID Depth of the requested path Flags (8 bits): Two flags are currently defined: * B (Bound - 1 bit): When set in a BGP UPDATE message, the metric- value indicates a bound (a maximum) for the path metric that must not be exceeded for the headend to consider the computed path as acceptable. The path metric must be less than or equal to the value specified in the metric-value field. When the B flag is cleared, the metric-value field is not used to reflect a bound constraint. * C (Computed Metric - 1 bit): When set in a BGP UPDATE message, this indicates that the controller MUST provide the computed path metric value (should a path satisfying the constraints be found) in the PCRep message for the corresponding metric. Unassigned flags MUST be set to zero on transmission and MUST be ignored on receipt. Metric-value (32 bits): metric value encoded in 32 bits in IEEE floating point format (see [IEEE.754.1985]). 2.3.2. LSPA Sub-TLV The LSPA sub-TLV carries the same content as Metric Object defined in [RFC5440] and [I-D.ietf-pce-segment-routing]. The LSPA sub-TLV has following format: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Flags |L| Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Exclude-any sub-TLV | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Include-any sub-TLV | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Include-all sub-TLV | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | // Optional sub-TLVs // | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ o Type: TBD o Length: specifies the length of the value field not including Type and Length fields. Flags (8 bits) L flag: Corresponds to the "Local Protection Desired" bit ([RFC3209]) of the SESSION-ATTRIBUTE Object. When set, this means that the computed path must include links protected with Fast Reroute as defined in [RFC4090]. Unassigned flags MUST be set to zero on transmission and MUST be ignored on receipt. Reserved (8 bits): This field MUST be set to zero on transmission and MUST be ignored on receipt. Exclude-any, Include-any, Include-all sub-TLV's format is the same as subobjects defined in [RFC3209]. 2.3.3. Association Sub-TLV The Association sub-TLV carries the same content as Association Object defined in [RFC5440] and [I-D.ietf-pce-segment-routing]. The Association sub-TLV has following format: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Flags |R| Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Association type | Association ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IPv4 Association Source | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | // Optional sub-TLVs // | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ o Type: TBD o Length: specifies the length of the value field not including Type and Length fields. Flags (8 bits) R (Removal - 1 bit): when set, the requesting PCEP peer requires the removal of an LSP from the association group. When unset, the PCEP peer indicates that the LSP is added or retained as part of the association group. This flag is used for the ASSOCIATION object in the PCRpt and the PCUpd message, the flag is ignored in other PCEP messages. Association type,Association ID, IPv4 Association Source format is the same as definition in [I-D.ietf-pce-association-group]. 3. BGP trigger ODN Operations 3.1. Configure BGP trigger ODN Headend use color template to initiate ODN. To use BGP trigger ODN instead of PCEP, a new CLI knob to specify this new mechanism, something like below: on-demand color 30 candidate-paths preference 100 dynamic *bgp* metric type te With the key word "bgp" configured, the headend MUST initiate ODN by sending SR Policy NLRI UPDATE messages with Distinguisher field set to FF.FF.FF.FF, also SHOULD set the Metric sub-TLV, LSPA sub-TLV and Association sub-TLV. 3.2. Reception of an SR Policy NLRI with Distinguisher field set to FF.FF.FF.FF On reception of an SR Policy NLRI Distinguisher field set to FF.FF.FF.FF, a controller(BGP speaker) MUST determine if it's first acceptable, then it determines if it is usable. 3.2.1. Acceptance of an SR Policy NLRI When a BGP speaker receives an SR Policy NLRI from a neighbor it has to determine if it's acceptable. The following applies: o The SR Policy NLRI MUST include a distinguisher, color and endpoint field which implies that the length of the NLRI MUST be either 12 or 24 octets (depending on the address family of the endpoint). o The SR Policy update MUST have either the NO_ADVERTISE community or at least one route-target extended community in IPv4-address format. If a router supporting this document receives an SR policy update with no route-target extended communities and no NO_ADVERTISE community, the update MUST NOT be sent to the SRPM. Furthermore, it SHOULD be considered to be malformed, and the "treat-as-withdraw" strategy of [RFC7606] is applied. o The Tunnel Encapsulation Attribute MUST be attached to the BGP Update and MUST have a Tunnel Type TLV set to SR Policy ( codepoint is 15. A router that receives an SR Policy update that is not valid according to these criteria MUST treat the update as malformed. The route MUST NOT be passed to the SRPM, and the "treat-as-withdraw" strategy of [RFC7606] is applied. A unacceptable SR Policy update that has a valid NLRI portion with invalid attribute portion MUST be considered as a withdraw of the SR Policy. 3.2.2. Usable SR Policy NLRI If one or more route-targets are present, then at least one route- target MUST match one of the BGP Identifiers of the neighbor in order for the update to be considered usable. The BGP Identifier is defined in [RFC4271] as a 4 octet IPv4 address. Therefore the route- target extended community MUST be of the same format. If one or more route-targets are present and no one matches any of the neighbors' BGP Identifiers, then, while the SR Policy NLRI is acceptable, it is not usable on the receiver node. 3.2.3. Passing a usable SR Policy NLRI to calculation engine Once BGP has determined that the SR Policy NLRI is usable, BGP passes the SR Policy candidate path to calculation engine.Calculation engine will use its own algorithm and parameters retrieved from the SR Policy NLRI to calculate. The result will pass back the result to headend as defined in [I-D.ietf-idr-segment-routing-te-policy] 4. Contributors Yuanchao Su (editor) Cisco Systems, Inc. China Email: yuasu@cisco.com 5. Acknowledgments The authors of this document would like to thank for their comments and review of this document. 7. Implementation Status Note to RFC Editor: Please remove this section prior to publication, as well as the reference to RFC 7942. This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in [RFC7942]. The description of implementations in this section is intended to assist the IETF in its decision processes in progressing drafts to RFCs. Please note that the listing of any individual implementation here does not imply endorsement by the IETF. Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors. This is not intended as, and must not be construed to be, a catalog of available implementations or their features. Readers are advised to note that other implementations may exist. According to [RFC7942], "this will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature. It is up to the individual working groups to use this information as they see fit". When IANA-assigned values are available, implementations will be updated to use them. 8. IANA Considerations This document defines new Sub-TLVs in following existing registries: o BGP Tunnel Encapsulation Attribute sub-TLV Value Description Reference --------------------------------------------------------------------------------- XX Metric sub-TLV This document XX LSPA sub-TLV This document XX Association sub-TLV This document 9. Security Considerations TBD. 10. References 10.1. Normative References [I-D.ietf-idr-segment-routing-te-policy] S. Previdi, Ed., C. Filsfils,D. Jain, Ed., P. Mattes,E. Rosen, S. Lin,"Advertising Segment Routing Policies in BGP", draft-ietf-idr-segment-routing-te-policy-04.txt(work in progress), July,2018 [I-D.ietf-idr-tunnel-encaps] Rosen, E., Patel, K., and G. Velde, "The BGP Tunnel Encapsulation Attribute", draft-ietf-idr-tunnel-encaps-09 (work in progress), February 2018. [I-D.ietf-pce-segment-routing] Sivabalan, S., Filsfils, C., Tantsura, J., Henderickx, W., and J. Hardwick, "PCEP Extensions for Segment Routing", draft-ietf-pce-segment-routing-12 (work in progress), June 2018. [I-D.ietf-spring-segment-routing] Filsfils, C., Previdi, S., Ginsberg, L., Decraene, B., Litkowski, S., and R. Shakir, "Segment Routing Architecture", draft-ietf-spring-segment-routing-15 (work in progress), January 2018. [I-D.ietf-spring-segment-routing-policy] Filsfils, C., Sivabalan, S., daniel.voyer@bell.ca, d., bogdanov@google.com, b., and P. Mattes, "Segment Routing Policy Architecture", draft-ietf-spring-segment-routing- policy-01 (work in progress), June 2018. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, . [RFC3032] Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y., Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack Encoding", RFC 3032, DOI 10.17487/RFC3032, January 2001, . [RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A Border Gateway Protocol 4 (BGP-4)", RFC 4271, DOI 10.17487/RFC4271, January 2006, . [RFC4360] Sangli, S., Tappan, D., and Y. Rekhter, "BGP Extended Communities Attribute", RFC 4360, DOI 10.17487/RFC4360, February 2006, . [RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter, "Multiprotocol Extensions for BGP-4", RFC 4760, DOI 10.17487/RFC4760, January 2007, . [RFC5575] Marques, P., Sheth, N., Raszuk, R., Greene, B., Mauch, J., and D. McPherson, "Dissemination of Flow Specification Rules", RFC 5575, DOI 10.17487/RFC5575, August 2009, . [RFC7606] Chen, E., Ed., Scudder, J., Ed., Mohapatra, P., and K. Patel, "Revised Error Handling for BGP UPDATE Messages", RFC 7606, DOI 10.17487/RFC7606, August 2015, . [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 8126, DOI 10.17487/RFC8126, June 2017, . 10.2. Informational References [I-D.filsfils-spring-sr-policy-considerations] Filsfils, C., Talaulikar, K., Krol, P., Horneffer, M., and P. Mattes, "SR Policy Implementation and Deployment Considerations", draft-filsfils-spring-sr-policy- considerations-01 (work in progress), June 2018. [I-D.ietf-6man-segment-routing-header] Filsfils, C., Previdi, S., Leddy, J., Matsushima, S., and d. daniel.voyer@bell.ca, "IPv6 Segment Routing Header (SRH)", draft-ietf-6man-segment-routing-header-14 (work in progress), June 2018. [I-D.ietf-idr-flowspec-redirect-ip] Uttaro, J., Haas, J., Texier, M., Andy, A., Ray, S., Simpson, A., and W. Henderickx, "BGP Flow-Spec Redirect to IP Action", draft-ietf-idr-flowspec-redirect-ip-02 (work in progress), February 2015. [RFC4456] Bates, T., Chen, E., and R. Chandra, "BGP Route Reflection: An Alternative to Full Mesh Internal BGP (IBGP)", RFC 4456, DOI 10.17487/RFC4456, April 2006, . [RFC7942] Sheffer, Y. and A. Farrel, "Improving Awareness of Running Code: The Implementation Status Section", BCP 205, RFC 7942, DOI 10.17487/RFC7942, July 2016, . Authors' Addresses Yuanchao Su (editor) Cisco Systems, Inc. China Email: yuasu@cisco.com