Internet DRAFT - draft-chen-spring-segment-list-id

draft-chen-spring-segment-list-id







Networking Working Group                                       Ran. Chen
Internet-Draft                                                Ting. Liao
Intended status: Standards Track                         ZTE Corporation
Expires: April 14, 2016                                 October 12, 2015


                         Spring Segment List ID
                  draft-chen-spring-segment-list-id-01

Abstract

   Segment Routing allows a node to steer a packet through an ordered
   list of instructions, called segments.  The ingress node prepends a
   SR header to a packet containing a set of "segments".  A segment can
   represent any instruction topological or service-based.

   The Segment Routing architecture can be implemented using MPLS with
   no change to the forwarding plane.  A segment is encoded as an MPLS
   label.  An ordered list of segments is encoded as a stack of labels,
   but it has implications on label stack depth.

   This document describes how to decrease the depth of the label stack
   in order to do effective Segment Routing operation.

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 http://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 April 14, 2016.

Copyright Notice

   Copyright (c) 2015 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



Chen & Liao              Expires April 14, 2016                 [Page 1]

Internet-Draft               Segment Routing                October 2015


   (http://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.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Conventions used in this document . . . . . . . . . . . . . .   3
   3.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   3
   4.  Solutions considered  . . . . . . . . . . . . . . . . . . . .   3
     4.1.  Jointing method . . . . . . . . . . . . . . . . . . . . .   3
       4.1.1.  Forwarding Mechanisms . . . . . . . . . . . . . . . .   5
     4.2.  Translation segment list to label stack method  . . . . .   5
       4.2.1.  Forwarding Mechanisms . . . . . . . . . . . . . . . .   8
   5.  Distribution of a binding Segment list ID for segment list
       information using BGP-LS or PCEP  . . . . . . . . . . . . . .   9
   6.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   9
   7.  Security Considerations . . . . . . . . . . . . . . . . . . .   9
   8.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  10
     8.1.  Normative references  . . . . . . . . . . . . . . . . . .  10
     8.2.  Informative references  . . . . . . . . . . . . . . . . .  10
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  10

1.  Introduction

   Segment Routing (SR), as described in Draft
   [I-D.ietf-spring-segment-routing]allows a node to steer a packet
   through an ordered list of instructions, called segments.  This can
   be directly applied to the MPLS with no change on the forwarding
   plane.  A segment is encoded as an MPLS label.  An ordered list of
   segments is encoded as a stack of labels, but it has implications on
   label stack depth.

   There may be many specified nodes or links included in the path based
   on policy, and this will greatly increase the stack depth.  If the
   label stack depth exceeds the LSR label stack processing
   capabilities, the hardware should be upgrade to support a deeper
   label stack capability.

   This document describes how to decrease the depth of the label stack
   in order to do effective Segment Routing operation.  It does not need
   to upgrade the hardware.





Chen & Liao              Expires April 14, 2016                 [Page 2]

Internet-Draft               Segment Routing                October 2015


2.  Conventions used in this document

   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 RFC2119.

3.  Terminology

   SR:Segment Routing

   SID:Segment Identifier

   SLID: Segment List Identifier, a segment list is identified by a
   Segment list ID (SLID).

   SRLD:specific Readable Label Depth

4.  Solutions considered

   There are two solutions described in the draft, both of them do not
   need to upgrade the hardware.

   In this document, we define the Segment List Identifier (SLID).  The
   segment list is identified by a Segment list ID (SLID).

   Segment list ID (SLID) is allocated by the controller.  The segment
   list and the SLID can be advertised to the related nodes.  The
   related nodes would be the jointing nodes, or all the segment nodes
   that contained in the segment list, or only be advertised to the
   ingress node.

   o  In the first case, the jointing nodes need to maintain the MPLS
      forwarding entry for the SLID.

   o  In the second case, each segment node needs to maintain the MPLS
      forwarding entry for the SLID.

   o  In the last case, the ingress node floods the SLID via the IGP to
      all the SR nodes in the SR domain and the SR node should maintain
      the SR list and the SLID mapping.  Each segment nodes that
      contained in the segment list would maintain the MPLS forwarding
      entry for the SLID.

4.1.  Jointing method

   The jointing method is based on the stack processing capability of
   each node.  The controller should have the capability to acquire the




Chen & Liao              Expires April 14, 2016                 [Page 3]

Internet-Draft               Segment Routing                October 2015


   stack processing capability of each node.  It may be analyzed from
   the chip's version or from the node advertising.

   In the proposed mechanism, an unused ID from the SRGB is allocated by
   the controller to identify the segment list which is out of the stack
   processing capability.



                        +----------------------+
                  /-   _|      Controller      |   _
                 /   /  +----------------------+_   \
                /   /   |   |   |    |     | \    \   \
               /   /    |   |   |    |     |  \    \   \
         +---+    /  +---+  |   |  +---+   | +---+  \   \+---+
-------- |R1 |---/---|R3 |--|---|--|R5 |---|-|R7 |---\-- |R9 |
         +---+  /    +---+  |   |  +---+   | +---+    \  +---+
           |   /       |    /    \   |     \   |       \   |
           |  /        |   /      \  |      \  |        \  |
         +---+       +---+        +---+     +---+       +---+
         |R2 |-------|R4 |--------|R6 |-----|R8 |-------|R10|-----------
         +---+       +---+        +---+     +---+       +---+



                                 Figure 1

   In this example, we assumes that:

   o  Each node's chip version is the same, and the stack processing
      capability is 5.

   o  All nodes are SR capable.

   o  All SR nodes have the same SRGB consisting of: [100, 200]

   o  The operator (likely via the SDN Controller) as provisioned the
      Node-SIDs 101, 102, 103, 104, 105, 106, 107, 108, 109,and 110
      respectively at nodes R1, R2, R3, R4, R5, R6, R7, R8, R9 and R10.

   o  The controller computes a list for: {R1, R2, R4, R3, R5, R6, R8,
      R7, R9, and R10}, and allocates an unused ID 100 to identify the
      segment list.

   o  The controller advertises the binding Segment list ID (SLID) 100
      for segment list {R1, R2, R4, R3, R5, R6, R8, R7, R9, and R10} to
      the jointing nodes R1 and R5, or advertises the binding Segment
      list ID (SLID) 100 for partitioned segment list {R1, R2, R4, R3,



Chen & Liao              Expires April 14, 2016                 [Page 4]

Internet-Draft               Segment Routing                October 2015


      and R5} to the jointing nodes R1 and Segment list ID (SLID) 100
      for partitioned segment list {R6, R8, R7, R9, and R10} to R5.

4.1.1.  Forwarding Mechanisms


   Node R1 maintains the following LIB entry:
     Incoming Label: NULL
     Label Operation: PUSH
     Outgoing Label: {102,104,103,105,100}
     Outgoing interface: port to R2


   Node R5 maintains the following LIB entry:
     Incoming Label: 105 &100
     Ingress Operation: POP and PUSH
     Outgoing Label: {106,108,107,109,110}
     Outgoing interface: R6


   Node R10 maintains the following LIB entry:
     Incoming Label: 110
     Ingress Operation: POP
     Outgoing Label: NULL
     Outgoing interface: NULL


   Other nodes are simple as following (i.e.R7):
     Incoming Label: 107&109
     Ingress Operation: POP and SWAP
     Outgoing Label: 109
     Outgoing interface: port to R9

   The following shows the progression of the packet as it enters and
   leaves the SR domain when the SLID is used.

   R1 encapsulates the SR header list{102,104,103,105,100}. R5 receives
   the packet, and converts 100 to the following list
   sequence{106,108,107,109,110}.R5 refreshs the SR header
   list{106,108,107,109,110}, and then the packet is transited to
   R6-R8-R7-R9-R10.

4.2.  Translation segment list to label stack method

   In this proposed mechanism, Segment list ID (SLID) is allocated by
   the controller.  The segment list and the SLID can be advertised to
   all the segment nodes that contained in the segment list, or only be
   advertised to the ingress node.



Chen & Liao              Expires April 14, 2016                 [Page 5]

Internet-Draft               Segment Routing                October 2015


   A node N (Not the last segment node) maintains the following LIB entry:
     Incoming Active Segment: SRGB_Node_N[SL-SID]
     Label Operation: SWAP and PUSH (i.e. SWAP with SRGB_Node_N+1[SL-SID]
                      and PUSH the outer-label destination to next segment
                      Node_N+1)
     Outgoing interface: the interface towards the next-hop along the
                      shortest-path to Node_N+1

   Especially, if next segment is not a node segment but an adjacency
   segment, the label operation would only be SWAP (i.e.  SWAP with
   SRGB_Node_N+1[SL-SID], Node_N+1 is adjacency to Node_N.), and
   outgoing interface is determined by the adjacency.


   The last segment node M maintains the following LIB entry:
     Incoming Active Segment: SRGB_Node_M[SL-SID]
     Label Operation: POP
     Outgoing interface: NULL

   Entire outgoing label stack of the packet in Node N from outer to
   inner is as follows:


                            +-----------------------------------+
                            |   SRGB_nexthop[Node_N+1-SID]      |
                            +-----------------------------------+
                            |   SRGB_Node_N+1[SL-SID]           |
                            +-----------------------------------+

   Entire outgoing label stack in ingress node from outer to inner is as
   follows:


                            +-----------------------------------+
                            |     SRGB_nexthop[Node_ 1-SID]     |
                            +-----------------------------------+
                            |     SRGB_Node_1 [SL-SID]          |
                            +-----------------------------------+

   Note:Node 1 is the first node segment.

   Especially, if the first segment is not a node segment but an
   adjacency segment, the label stack would only be SRGB_Node_1 [SL-
   SID].  Node_1 is adjacency to ingress node.

   Then, any length of the segment list can be encoded as two-level
   label stacks.




Chen & Liao              Expires April 14, 2016                 [Page 6]

Internet-Draft               Segment Routing                October 2015


   Let us analyze the following example:




                        +----------------------+
                  /-   _|      Controller      |   _
                 /   /  +----------------------+_   \
                /   /          |     |           \   \
               /   /           |     |            \   \
         +---+    /  +---+     |  +---+     +---+  \   \+---+
-------- |R0 |---/---|A1 |-----|--|R1 |-----|A2 |---\-- |R2 |
         +---+  /    +---+     |  +---+     +---+    \  +---+
           |   /               \    |                 \   |
           |  /                 \   |                  \  |
         +---+                    +---+                 +---+
         |R3 |--------------------|R4 |-----------------|R5 |-----------
         +---+                    +---+                 +---+



                                 Figure 2

   An SDN Controller (SC) is connected to the network and is able to
   retrieve the topology and traffic information.

   We assume that:

   o  The operator (likely via the SDN Controller) as provisioned the
      Node-SIDs 101, 102, 103, 104, 105,and 106 respectively at nodes
      R0, R1, R2, R3, R4 and R5.

   o  The controller can steer the traffic from R0 to R5 an explicit
      path R1R2R5.  The controller allocates a binding Segment list ID
      (SLID) 300 for segment list {R1, R2, and R5}.

   o  The controller advertises the binding Segment list ID (SLID) 300
      for segment list {R1, R2, and R5} to all the segment nodes (i.e.
      R1, R2, and R5) that contained in the segment list.  Those
      extensions would be described in section 5.

   o  In this example, all nodes are SR capable, including A1/A2/A3.

   o  Each SR node may have a different SRGB.

   o  The next-hop along the shortest-path from R0 to R1 is A1.  A1 can
      also be LDP/ RSVP-TE/BGP capable (optional).  The next-hop along
      the shortest-path from R1 to R2 is A2.  A2 is either an SR node or



Chen & Liao              Expires April 14, 2016                 [Page 7]

Internet-Draft               Segment Routing                October 2015


      LDP/RSVP-TE/BGP node.  The next-hop along the shortest-path from
      R2 to R5 is A3.  A3 is either an SR node or LDP/RSVP-TE/BGP node.

   o  Any length of the segment list is encoded as two-level label
      stacks.

4.2.1.  Forwarding Mechanisms


   Then, Node R1 maintains the following LIB entry:
     Incoming Label: SRGB_R1 [300]
     Label Operation: SWAP and PUSH
     Outgoing Label: SRGB_R2 [300], SRGB_A2[103]
     Outgoing interface: port to A2


   Node R2 maintains the following LIB entry:
     Incoming Label: SRGB_R2[300]
     Label Operation: SWAP and PUSH
     Outgoing Label: SRGB_R5 [300], SRGB_A3[106]
     Outgoing interface: port to A2


   or simple as following (because R2 knows it is the penultimate segment of the segment list):
    Incoming Label: SRGB_R2 [300]
    Ingress Operation: SWAP
    Outgoing Label: SRGB_A 3[106]
    Outgoing interface: port to A3


   Node R5 maintains the following LIB entry:
     Incoming Label: SRGB_R5 [106]
     Ingress Operation: POP
     Outgoing Label: NULL
     Outgoing interface: NULL

   The following shows the progression of the packet as it enters and
   leaves the SR domain when the SLID is used.













Chen & Liao              Expires April 14, 2016                 [Page 8]

Internet-Draft               Segment Routing                October 2015


 Packets sent by ingress R0     Packets sent by A1       Packets sent by  R1
      +---------------+                                    +----------------+
      |  SRGB_A1[102] |                                    |  SRGB_A2[103]  |
      +---------------+          +----------------+        +----------------+
      |  SRGB_R1[300] |------>   |  SRGB_R1[300]  |------> |  SRGB_R2[300]  |------->
      ++=============++          ++==============++        ++==============++
      ||   Packet    ||          ||  Packet      ||        ||   Packet     ||
      ++=============++          ++==============++        ++==============++


         Packets sent by A2        Packets sent by R2        Packets sent by A3
      +---------------+          +----------------+        +----------------+
      |  SRGB_R2[300] |------>   |  SRGB_A3[106]  |------> |  SRGB_R5[106]  |
      ++=============++          ++==============++        ++==============++------->
      ||   Packet    ||          ||  Packet      ||        ||   Packet     ||
      ++=============++          ++==============++        ++==============++


     Packets sent by R5
      ++=============++
      ||   Packet    ||
      ++=============++

   As an optional solution, the ingress node can also encode the label
   stack according to the global specific Readable label depth (SRLD).
   Also, the LIB entry (for SL-SID) in each segment node can swap the
   label stack according to SRLD.  This option will be specified in a
   future version.  The global SRLD can be configured, or it can be
   minimum Readable label depth of all the SR nodes.  The RLD has been
   specified in [I-D.kini-mpls-spring-entropy-label].

   The minimum Readable label depth of all the SR nodes can be learned
   via protocols.

5.  Distribution of a binding Segment list ID for segment list
    information using BGP-LS or PCEP

   TBD.

6.  IANA Considerations

   TBD.

7.  Security Considerations

   TBD.





Chen & Liao              Expires April 14, 2016                 [Page 9]

Internet-Draft               Segment Routing                October 2015


8.  References

8.1.  Normative references

   [I-D.ietf-ospf-segment-routing-extensions]
              Psenak, P., Previdi, S., Filsfils, C., Gredler, H.,
              Shakir, R., Henderickx, W., and J. Tantsura, "OSPF
              Extensions for Segment Routing", draft-ietf-ospf-segment-
              routing-extensions-05 (work in progress), June 2015.

   [I-D.ietf-spring-segment-routing]
              Filsfils, C., Previdi, S., Decraene, B., Litkowski, S.,
              and r. rjs@rob.sh, "Segment Routing Architecture", draft-
              ietf-spring-segment-routing-05 (work in progress),
              September 2015.

   [I-D.ietf-spring-segment-routing-mpls]
              Filsfils, C., Previdi, S., Bashandy, A., Decraene, B.,
              Litkowski, S., Horneffer, M., Shakir, R., Tantsura, J.,
              and E. Crabbe, "Segment Routing with MPLS data plane",
              draft-ietf-spring-segment-routing-mpls-01 (work in
              progress), May 2015.

   [RFC3031]  Rosen, E., Viswanathan, A., and R. Callon, "Multiprotocol
              Label Switching Architecture", RFC 3031,
              DOI 10.17487/RFC3031, January 2001,
              <http://www.rfc-editor.org/info/rfc3031>.

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

8.2.  Informative references

   [I-D.kini-mpls-spring-entropy-label]
              Kini, S., Kompella, K., Sivabalan, S., Litkowski, S.,
              Shakir, R., Xu, X., Henderickx, W., and J. Tantsura,
              "Entropy labels for source routed stacked tunnels", draft-
              kini-mpls-spring-entropy-label-03 (work in progress),
              March 2015.

Authors' Addresses








Chen & Liao              Expires April 14, 2016                [Page 10]

Internet-Draft               Segment Routing                October 2015


   Ran Chen
   ZTE Corporation
   No.50 Software Avenue,Yuhuatai District
   Nanjing, Jiangsu Province  210012
   China

   Phone: +86 025 88014636
   Email: chen.ran@zte.com.cn


   Ting Liao
   ZTE Corporation
   No.50 Software Avenue,Yuhuatai District
   Nanjing, Jiangsu Province  210012
   China

   Email: liao.ting@zte.com.cn


































Chen & Liao              Expires April 14, 2016                [Page 11]