BGP trigger Segment Routing ODN
draft-su-bgp-trigger-segment-routing-odn-00

The information below is for an old version of the document
Document Type Active Internet-Draft (individual)
Last updated 2018-10-01
Stream (None)
Intended RFC status (None)
Formats plain text pdf html bibtex
Stream Stream state (No stream defined)
Consensus Boilerplate Unknown
RFC Editor Note (None)
IESG IESG state I-D Exists
Telechat date
Responsible AD (None)
Send notices to (None)
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 <color, endpoint> 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: <Distinguisher, Policy-Color, Endpoint>
   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,
              <https://www.rfc-editor.org/info/rfc2119>.

   [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,
              <https://www.rfc-editor.org/info/rfc3032>.

   [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,
              <https://www.rfc-editor.org/info/rfc4271>.

   [RFC4360]  Sangli, S., Tappan, D., and Y. Rekhter, "BGP Extended
              Communities Attribute", RFC 4360, DOI 10.17487/RFC4360,
              February 2006, <https://www.rfc-editor.org/info/rfc4360>.

   [RFC4760]  Bates, T., Chandra, R., Katz, D., and Y. Rekhter,
              "Multiprotocol Extensions for BGP-4", RFC 4760,
              DOI 10.17487/RFC4760, January 2007,
              <https://www.rfc-editor.org/info/rfc4760>.

   [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,
              <https://www.rfc-editor.org/info/rfc5575>.

   [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,
              <https://www.rfc-editor.org/info/rfc7606>.

   [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,
              <https://www.rfc-editor.org/info/rfc8126>.

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,
              <https://www.rfc-editor.org/info/rfc4456>.

   [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,
              <https://www.rfc-editor.org/info/rfc7942>.

Authors' Addresses

   Yuanchao Su (editor)
   Cisco Systems, Inc. 
   China

   Email: yuasu@cisco.com