Unified Identifier in IPv6 Segment Routing Networks
draft-mirsky-6man-unified-id-sr-05

The information below is for an old version of the document
Document Type Active Internet-Draft (individual)
Authors Weiqiang Cheng  , Greg Mirsky  , Shaofu Peng  , Aihua Liu  , XiaoLan Wan  , Cheng Wei  , Shay Zadok 
Last updated 2020-02-20 (latest revision 2019-11-04)
Stream (None)
Formats plain text xml pdf htmlized 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                                                      C. Weiqiang
Internet-Draft                                              China Mobile
Intended status: Standards Track                               G. Mirsky
Expires: August 22, 2020                                       ZTE Corp.
                                                               P. Shaofu
                                                                L. Aihua
                                                         ZTE Corporation
                                                              W. Xiaolan
                                            New H3C Technologies Co. Ltd
                                                                  C. Wei
                                                                  Centec
                                                                S. Zadok
                                                                Broadcom
                                                       February 19, 2020

          Unified Identifier in IPv6 Segment Routing Networks
                   draft-mirsky-6man-unified-id-sr-05

Abstract

   Segment Routing architecture leverages the paradigm of source
   routing.  It can be realized in a network data plane by prepending
   the packet with a list of instructions, a.k.a. segments.  A segment
   can be encoded as a Multi-Protocol Label Switching (MPLS) label, IPv4
   address, or IPv6 address.  Segment Routing can be applied in MPLS
   data plane by encoding segments in the MPLS label stack.  It also can
   be applied to IPv6 data plane by encoding a list of segment
   identifiers in IPv6 Segment Routing Extension Header (SRH).  This
   document extends the use of the SRH to unified segment identifiers
   encoded, for example, as MPLS label or IPv4 address, to compress the
   SRH, and support more detailed network programming and interworking
   between SR-MPLS and SRv6 domains.

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

Weiqiang, et al.         Expires August 22, 2020                [Page 1]
Internet-Draft           Unified Identifier SRv6           February 2020

   This Internet-Draft will expire on August 22, 2020.

Copyright Notice

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

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
     1.1.  Conventions used in this document . . . . . . . . . . . .   3
       1.1.1.  Terminology . . . . . . . . . . . . . . . . . . . . .   3
       1.1.2.  Requirements Language . . . . . . . . . . . . . . . .   4
   2.  Segment Routing Extension Header: Benefits and Challenges . .   4
   3.  Unified SIDs in IPv6 Segment Routing Extension Header . . . .   4
   4.  The Use Case of Unified Segment Identifier  . . . . . . . . .   6
     4.1.  Interworking Between SR-MPLS and SRv6 Using U-SID . . . .   6
   5.  Operations with Unified Segment Identifier  . . . . . . . . .   9
     5.1.  Procedures of SR-MPLS over IP . . . . . . . . . . . . . .  10
     5.2.  Packet Forwarding . . . . . . . . . . . . . . . . . . . .  10
     5.3.  Control Plane in Support of Unified SID . . . . . . . . .  13
   6.  U-SID supporting SRv6 programming . . . . . . . . . . . . . .  14
   7.  Implementation Considerations . . . . . . . . . . . . . . . .  14
   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  14
   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  14
   10. Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .  14
   11. Normative References  . . . . . . . . . . . . . . . . . . . .  14
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  16

1.  Introduction

   Segment Routing architecture [RFC8402] leverages the paradigm of
   source routing.  It can be realized in a network data plane by
   prepending the packet with a list of instructions, a.k.a. segment
   identifiers (SIDs).  A segment can be encoded as a Multi-Protocol
   Label Switching (MPLS) label, IPv4 address, or IPv6 address.  Segment
   Routing can be applied in MPLS data plane by encoding 20-bits SIDs in
   MPLS label stack [RFC8660].  It also can be applied to IPv6 data

Weiqiang, et al.         Expires August 22, 2020                [Page 2]
Internet-Draft           Unified Identifier SRv6           February 2020

   plane by encoding a list of 128-bits SIDs in IPv6 Segment Routing
   Extension Header (SRH) [I-D.ietf-6man-segment-routing-header].

   This document extends the use of the SRH
   [I-D.ietf-6man-segment-routing-header] to unified identifiers encoded
   as MPLS label or IPv4 address to support more detailed network
   programming and interworking between SR-MPLS and SRv6 domains.

1.1.  Conventions used in this document

1.1.1.  Terminology

   SR: Segment Routing

   SRH: Segment Routing Extension Header

   MPLS: Multiprotocol Label Switching

   SR-MPLS: Segment Routing using MPLS data plane

   SID: Segment Identifier

   IGP: Interior Gateway Protocol

   DA: Destination Address

   ILM: Incoming Label Map

   FEC: Forwarding Equivalence Class

   FTN: FEC-to-NHLFE map

   OAM: Operation, Administration and Maintenance

   TE: Traffic Engineering

   SRv6: Segment Routing in IPv6

   U-SID: Unified Segment Identifier

   PSP: Penultimate Segment Popping

   FIB: Forwarding Information Base

Weiqiang, et al.         Expires August 22, 2020                [Page 3]
Internet-Draft           Unified Identifier SRv6           February 2020

1.1.2.  Requirements Language

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in BCP
   14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.

2.  Segment Routing Extension Header: Benefits and Challenges

   Many functions related to Operation, Administration and Maintenance
   (OAM) require identification of the SR tunnel ingress and the path,
   constructed by segments, between the ingress and the egress SR nodes.
   Combination of IPv6 encapsulation [RFC8200] and SRH
   [I-D.ietf-6man-segment-routing-header], referred to as SRv6, comply
   with these requirements while it is challenging when applying SR in
   MPLS networks, also referred to as SR-MPLS.

   On the other hand, the size of IPv6 SID presents a scaling challenge
   to use topological instructions that define strict explicit traffic-
   engineered (TE) path or support network programming in combination
   with service-based instructions.  At the same time, that is where SR-
   MPLS approach provides better results due to smaller SID length.  It
   can be used to compress the SRv6 header size when a smaller namespace
   of available SIDs is sufficient for addressing the particular
   network.

   SR-MPLS is broadly used in metro networks.  With the gradual
   deployment of SRv6 in the core networks, supporting interworking
   between SR-MPLS and SRv6 becomes the necessity for operators.  It is
   operationally more efficient and straightforward if SRv6 can use the
   same size SIDs as in SR-MPLS.  The SRH can be extended to define the
   same as in SR-MPLS SID length to support the unified segment
   identifier (U-SID).  As a result, end-to-end SR tunnel may use U-SIDs
   across SR-MPLS and SRv6 domains.

3.  Unified SIDs in IPv6 Segment Routing Extension Header

   SRH format has been defined in Section 3 of
   [I-D.ietf-6man-segment-routing-header] as presented in Figure 1

Weiqiang, et al.         Expires August 22, 2020                [Page 4]
Internet-Draft           Unified Identifier SRv6           February 2020

        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
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       | Next Header   |  Hdr Ext Len  | Routing Type  | Segments Left |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |  Last Entry   |     Flags     |              Tag              |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                                                               |
       |            Segment List[0] (128 bits IPv6 address)            |
       |                                                               |
       |                                                               |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                                                               |
       |                                                               |
                                     ...
       |                                                               |
       |                                                               |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                                                               |
       |            Segment List[n] (128 bits IPv6 address)            |
       |                                                               |
       |                                                               |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       //                                                             //
       //         Optional Type Length Value objects (variable)       //
       //                                                             //
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                           Figure 1: SRH format

   This document defines a new field Size in the SRH Flags field as a
   two-bits field with the following values:

      0b00 - 128-bits SID, an IPv6 address.

      0b01 - 32-bits SID.  In some environments, the context could be of
      IPv4 address, while in some other cases, it could represent an
      index of list or range of IPv4/IPv6 addresses.  Another
      interpretation of 32-bits SID could be as a complementary element
      of an IPv4/IPv6 prefix.  The setting of the interpretation might
      be done through the control plane based signaling and is outside
      the scope of this document.  If this SID represents a
      complementary part of an IPv4/IPv6 prefix, the original IP address
      can be re-constructed by using, for example, mapping, stitching,
      shifting or translating operation.  Specification of such a
      mechanism is outside the scope of this document.

Weiqiang, et al.         Expires August 22, 2020                [Page 5]
Internet-Draft           Unified Identifier SRv6           February 2020

      0b10 - 32-bits SID, which includes an MPLS label in the leftmost
      20-bits as displayed in Figure 2.  Information in the Context
      field could be interpreted as a flavor of a particular network
      programming behavior.  Specification of the network programming
      using this type of U-SID is outside the scope of this document.
      [Ed.note.  Replace with a reference to the U-SID network
      programming document.]

        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
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                MPLS Label             |        Context        |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

              Figure 2: Format of Unified SID with MPLS Label

      0b11 - Reserved for future use.

   Entries of the segment list in the SRH MUST be of the same length.

4.  The Use Case of Unified Segment Identifier

   U-SID can be used for interworking between SR-MPLS and SRv6 domains.
   SR-MPLS is often used in a metro network, for example, in the
   backhaul metro network of CMCC.  If the core network uses SRv6, for
   example, the core network of the same operator, U-SID can be used in
   the SRv6 domain to interwork with SR-MPLS in the metro network to
   form an end-to-end tunnel.

4.1.  Interworking Between SR-MPLS and SRv6 Using U-SID

   SR-MPLS uses SR SIDs as MPLS label in MPLS stack, and the SIDs are
   32-bits long.  SRv6 uses SR SIDs as IPv6 extension header in SRH, and
   the SIDs are 128-bits long.

   The U-SID uses the same 32-bits long SIDs in MPLS stack and SRH.
   Thus, four 32-bits long U-SIDs can be placed in the space of a single
   128-bits long header.  The encapsulation is illustrated in Figure 3.

Weiqiang, et al.         Expires August 22, 2020                [Page 6]
Internet-Draft           Unified Identifier SRv6           February 2020

           +---------+          +----------------------------------+
           |         |          |           IPv6 header            |
           | Ethernet|          +----------------------------------+
           |         |          |           SRH                    |
           +---------+          +----------------------------------+
           |  USID1  |          | USID1  | USID2  | ...   | USID4  |
           +---------+          +----------------------------------+
           |  USID2  |          | USID5  |...     | USIDn | Null   |
           +---------+          +----------------------------------+
           | ...     |          +           Payload                |
           +---------+          +----------------------------------+
           |  USIDn  |
           +---------+
           | Payload |
           +---------+

                Figure 3: 32-bits long U-SIDs Encapsulation

   The SR-MPLS and SRv6 interworking is illustrated in Figure 4.  An
   end-to-end SR tunnel from A to F crosses the SR-MPLS and SRv6
   domains.  The SR-MPLS domain could be using IPv4 or IPv6 address
   family.  The SRv6 border nodes (E/G) receive SR-MPLS packets and
   forward them into the SRv6 domain using an SR-MPLS Binding SID
   [RFC8660].

Weiqiang, et al.         Expires August 22, 2020                [Page 7]
Internet-Draft           Unified Identifier SRv6           February 2020

           +-----+           +-----+           +-----+           +-----+
           |  A  +-----------+  B  +-----------+  E  +-----------+  F  |
           +-----+           +--+--+           +--+--+           +--+--+
              |    SR-MPLS      |                 |     SRv6        |
              |                 |                 |                 |
           +-----+           +--+--+           +--+--+           +--+--+
           |  C  |-----------|  D  +-----------+  G  +-----------+  H  |
           +-----+           +-----+           +-----+           +-----+

                                                      +--------------+
                                                      |   Eth(E->G)  |
              +--------------+                        +--------------+
              |   Eth(A->B)  |                        |IPv6 DA:G.intf|
              +--------------+    +--------------+    +--------------+
              |   USID(B)    |    |   Eth(B->E)  |    |SRH           |
              +--------------+    +--------------+    |NH:MPLS   SL:2|
              |   USID(E1)   |    |   USID(E1)   |    |USID(ADJ E->G)|
              +--------------+    +--------------+    |USID(ADJ G->H)|
              |   USID(E2)   |    |   USID(E2)   |    |USID(ADJ H->F)|
              +--------------+    +--------------+    +--------------+
              |   USID(F)    |    |   USID(F)    |    |   USID(F)    |
              +--------------+    +--------------+    +--------------+
              |Label(service)|    |Label(service)|    |Label(service)|
              +--------------+    +--------------+    +--------------+
              |    Payload   | -> |    Payload   | -> |    Payload   |
              +--------------+    +--------------+    +--------------+

                  Figure 4: SR-MPLS and SRv6 interworking

   The SRv6 edge node E assigns two SIDs, e.g., E1 and E2, E1 is an SR-
   MPLS Node-SID, E2 is an SR-MPLS Binding-SID, which represents an SRv6
   policy (from E to F, via segment list E-G-H-F) with U-SID
   encapsulation.  At the headend A, the end-to-end segment list could
   be B-E1-E2-F.  Figure 6 demonstrates an example of the packet
   forwarding, where U-SID is an MPLS label.

   The controller may assign the end-to-end SR tunnel U-SIDs (from A to
   F), and another method is outside the scope of this document.

   The reverse interworking is illustrated in Figure 5.  An end-to-end
   SR tunnel from F to A crosses the SRv6 and SR-MPLS domains.  The SRv6
   border nodes (E/G) receive SRv6 packets and forward them into the SR-
   MPLS domain using an SR-MPLS Binding SID or normal Prefix/Adjacency
   SID.

Weiqiang, et al.         Expires August 22, 2020                [Page 8]
Internet-Draft           Unified Identifier SRv6           February 2020

           +-----+           +-----+           +-----+           +-----+
           |  A  +-----------+  B  +-----------+  E  +-----------+  F  |
           +-----+           +--+--+           +--+--+           +--+--+
              |    SR-MPLS      |                 |     SRv6        |
              |                 |                 |                 |
           +-----+           +--+--+           +--+--+           +--+--+
           |  C  |-----------|  D  +-----------+  G  +-----------+  H  |
           +-----+           +-----+           +-----+           +-----+

                                                      +--------------+
                                                      |   Eth(F->H)  |
                                                      +--------------+
                                                      |IPv6 DA:H.intf|
                                                      +--------------+
                                                      |SRH           |
                                                      |NH:MPLS   SL:2|
                                                      |USID(ADJ F->H)|
                                  +--------------+    |USID(ADJ H->G)|
                                  |   Eth(E->B)  |    |USID(ADJ G->E)|
              +--------------+    +--------------+    +--------------+
              |   Eth(B->A)  |    |   USID(B)    |    |   USID(B)    |
              +--------------+    +--------------+    +--------------+
              |   USID(A)    |    |   USID(A)    |    |   USID(A)    |
              +--------------+    +--------------+    +--------------+
              |Label(service)|    |Label(service)|    |Label(service)|
              +--------------+    +--------------+    +--------------+
              |    Payload   | <- |    Payload   | <- |    Payload   |
              +--------------+    +--------------+    +--------------+

              Figure 5: SR-MPLS and SRv6 reverse interworking

   The SRv6 edge node F assigns an SR-MPLS Binding-SID F2, which
   represents an SRv6 policy (from F to E, via segment list F-H-G-E)
   with U-SID encapsulation.  At the headend F, the end-to-end segment
   list could be F2-B-A.

5.  Operations with Unified Segment Identifier

   When SRH is used to include 32-bits long U-SIDs, the ingress and
   transit nodes of an SR tunnel act as described in Section 5.1 and
   Section 5.2 of [I-D.ietf-6man-segment-routing-header] respectively.

   If U-SID is used to support interworking between SR-MPLS and SRv6
   domains, it is beneficial that U-SID type matches to an MPLS label.
   In that case, an ILM (Incoming Label Map) entry can be used to map a
   U-SID to an IPv6 address.  As a result, it is not necessary to
   introduce a new type of index-based mapping table.  For ILM entry of

Weiqiang, et al.         Expires August 22, 2020                [Page 9]
Internet-Draft           Unified Identifier SRv6           February 2020

   Adjacency-SID, the mapping result copied to DA (Destination Address)
   is the remote interface IPv6 address, for ILM entry of Node-SID, the
   mapping result that is copied into DA is a remote node loopback IPv6
   address.

   Operations on an MPLS label of U-SID type are the same as those
   defined in [RFC8663].  However, SR-MPLS over SRH has the following
   advantages compared with SR-MPLS over UDP:

   o  SRH is flexible to extend flags or sub-TLVs for service
      requirements, but UDP not.

   o  Labels in SRH can meet 8 bytes alignment requirements as per
      [RFC8200], but UDP not.

   o  The source address of the SR policy is not discarded, but UDP not.

5.1.  Procedures of SR-MPLS over IP

   Procedures of SR-MPLS over IP of [RFC8663] described how to construct
   an adjusted SR-MPLS FTN (FEC-to-NHLFE map) and ILM entry towards a
   prefix-SID when next-hops are IP-only routers.  The action of FTN and
   ILM entry will steer the packet along an outer tunnel to the
   destination node that has originated the FEC (Forwarding Equivalence
   Class).  UDP header is removed and put again at the each segment
   endpoint.  However, for SR-MPLS over SRH in this document we don't
   try to depend on that adjusted FIB (Forwarding Information Base)
   entry, because there are not any actions needed to get from the FIB
   entry, a traditional ILM entry (maybe without out-label because of
   IP-only next-hop) is enough to get the FEC information, i.e., to map
   a U-SID to an IPv6 address and copy to DA.  Note that an
   implementation can get both FEC and next-hop/interface forwarding
   information from the ILM entry, to avoid extra FIB lookup.  An SRv6
   policy chosen to encapsulate U-SID list within SRH is determined at
   the ingress node of this SRv6 policy, SRH is preserved along the SR
   to egress, though PSP (Penultimate Segment Popping) may be used, that
   is different from SR-MPLS over IP/UDP method [RFC8663], so the source
   address (i.e., the ingress of the SRv6 policy) is not discarded.

5.2.  Packet Forwarding

   U-SID based packet forwarding is similar to the processing described
   in [RFC8663].  But it differs from that in FIB action and segment
   list processing.  For completeness, we repeat the description of
   [RFC8663] with modification as follows.

Weiqiang, et al.         Expires August 22, 2020               [Page 10]
Internet-Draft           Unified Identifier SRv6           February 2020

      +-----+       +-----+       +-----+        +-----+        +-----+
      |  A  +-------+  B  +-------+  C  +--------+  D  +--------+  H  |
      +-----+       +--+--+       +--+--+        +--+--+        +-----+
                       |             |              |
                       |             |              |
                    +--+--+       +--+--+        +--+--+
                    |  E  +-------+  F  +--------+  G  |
                    +-----+       +-----+        +-----+

           +--------+           +--------+            +--------+
           |IP(A->E)|           |IP(A->G)|            |IP(A->G)|
           +--------+           +--------+            +--------+
           |SRH     |           |SRH     |            |SRH     |(or PSP)
           |  SL:2  |           |  SL:1  |            |  SL:0  |
           |  L(E)  |           |  L(E)  |            |  L(E)  |
           |  L(G)  |           |  L(G)  |            |  L(G)  |
           |  L(H)  |           |  L(H)  |            |  L(H)  |
           +--------+           +--------+            +--------+
           | Packet |   --->    | Packet |      --->  | Packet |
           +--------+           +--------+            +--------+

                    Figure 6: Packet Forwarding Example

   In the example shown in Figure 6, assume that routers A, E, G, and H
   are U-SID capable (i.e., both SR-MPLS and SRv6 capable ) while the
   remaining routers (B, C, D, and F) are only capable of forwarding IP
   packets.  Routers A, E, G, and H advertise their Segment Routing
   related information via IS-IS or OSPF.

   Now assume that router A (the Domain ingress) wants to send a packet
   to router H (the Domain egress) via an SRv6 policy with the explicit
   path {E->G->H}. Router A will impose an MPLS label stack within SRH
   on the packet that corresponds to that explicit path.  Router A
   searches ILM entry by the top label (that indicated router E), get
   the FEC information and next-hop/interface forwarding information, a
   loopback IPv6 address of E, and then copy to DA and sends the packet.
   The value of SRH.SL is 2.

   When the IPv6 packet arrives at router E, router E picks the next
   segment (label) within SRH based on the SRH.SL value of 2, searches
   ILM entry by the next label, get the FEC information and next-hop/
   interface forwarding information, a loopback IPv6 address of G, and
   then copy to DA and sends the packet.  The value of SRH.SL is 1.

   When the IPv6 packet arrives at router G, router G gets the next
   segment (label) within SRH based on the SRH.SL value of 1, looks up
   ILM entry by the next label, gets the FEC information and next-hop/

Weiqiang, et al.         Expires August 22, 2020               [Page 11]
Internet-Draft           Unified Identifier SRv6           February 2020

   interface forwarding information, a loopback IPv6 address of H, and
   then copies it to IP DA and transmits the packet.  Because the value
   of SRH.SL is 0, the SRH can be removed if the behavior flavor
   codepoint of next segment (label) is set to PSP.

   Processing of SRH with elements carrying 20 bits-long SIDs closely
   follows SRH processing as defined in Section 4.3.1.1
   [I-D.ietf-6man-segment-routing-header] and is demonstrated in the
   pseudo-code below:

Weiqiang, et al.         Expires August 22, 2020               [Page 12]
Internet-Draft           Unified Identifier SRv6           February 2020

    S01. When an SRH is processed {
    S02.   If (Segments Left == zero) {
    S03.     Proceed to process the next header in the packet,
             whose type is identified by the Next Header field in
             the Routing header.
    S04.   }
    S05.   Else {
    S06.     If local configuration requires TLV processing {
    S07.       Perform TLV processing (see TLV Processing)
    S08.     }
    S09.     max_last_entry =
           ( Hdr Ext Len * 8/ sizeof(SRH_element) ) - 1
    S10.     If  ((Last Entry > max_last_entry) or
    S11.          (Segments Left is greater than (Last Entry+1)) {
    S12.       Send an ICMP Parameter Problem, Code 0, message to
               the Source Address, pointing to the Segments Left
               field, and discard the packet.
    S13.     }
    S14.     Else {
    S15.       Decrement Segments Left by 1.
    S16.       Use Segment List[Segments Left] as the key
           in exact match lookup of FIB
    S17.       If (Lookup_result == Empty)
    S18.          Send an ICMP Destination Unreachable and
               discard the packet
    S19.       Else {
    S20.           Copy Lookup_result as the destination address
                     of the IPv6 header.
    S21.           If (IPv6 Hop Limit is less than or equal <= to 1) {
    S22.             Send an ICMP Time Exceeded -- Hop Limit Exceeded in
                     Transit message to the Source Address and discard
                     the packet.
    S23.           }
    S24.           Else {
    S25.             Decrement the Hop Limit by 1
    S26.             Resubmit the packet to the IPv6 module
                     for transmission to the new destination.
    S27.          }
    S28.        }
    S29.      }
    S30.    }
    S31. }

5.3.  Control Plane in Support of Unified SID

   The introduction of the Unified Identifier may rely on the existing
   SR extensions to the routing protocols.  But some enhancements in the

Weiqiang, et al.         Expires August 22, 2020               [Page 13]
Internet-Draft           Unified Identifier SRv6           February 2020

   control plane are still required.  This section references to the
   existing protocols and identifies necessary extensions.

   SR extensions to Interior Gateway Protocols (IGP), IS-IS [RFC8667],
   OSPF [RFC8665], and OSPFv3 [RFC8666], defined how 20-bits and 32-bits
   SIDs advertised and bound to SR objects and/or instructions.
   Extensions to BGP Link-state address family
   [I-D.ietf-idr-bgp-ls-segment-routing-ext] enabled propagation of
   segment information of variable length via BGP.

6.  U-SID supporting SRv6 programming

   U-SID can support SRv6 programming defined by
   [I-D.ietf-spring-srv6-network-programming].  The details will be
   described in another document.

7.  Implementation Considerations

   The Unified SID solution has been already implemented and tested by
   two companies:

   o  Centec has conducted its PoC, and the report is available at
      https://cloud.tencent.com/developer/article/1540023.

   o  Broadcom, in its lab, also conducted PoC testing of the U-SID
      solution.

8.  IANA Considerations

   IANA is requested to allocate from the Segment Routing Header Flags
   registry the two-bits long field referred to as Size.

9.  Security Considerations

   This specification inherits all security considerations of [RFC8402]
   and [I-D.ietf-6man-segment-routing-header].

10.  Acknowledgements

   TBD

11.  Normative References

   [I-D.ietf-6man-segment-routing-header]
              Filsfils, C., Dukes, D., Previdi, S., Leddy, J.,
              Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header
              (SRH)", draft-ietf-6man-segment-routing-header-26 (work in
              progress), October 2019.

Weiqiang, et al.         Expires August 22, 2020               [Page 14]
Internet-Draft           Unified Identifier SRv6           February 2020

   [I-D.ietf-idr-bgp-ls-segment-routing-ext]
              Previdi, S., Talaulikar, K., Filsfils, C., Gredler, H.,
              and M. Chen, "BGP Link-State extensions for Segment
              Routing", draft-ietf-idr-bgp-ls-segment-routing-ext-16
              (work in progress), June 2019.

   [I-D.ietf-spring-srv6-network-programming]
              Filsfils, C., Camarillo, P., Leddy, J., Voyer, D.,
              Matsushima, S., and Z. Li, "SRv6 Network Programming",
              draft-ietf-spring-srv6-network-programming-09 (work in
              progress), February 2020.

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

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.

   [RFC8200]  Deering, S. and R. Hinden, "Internet Protocol, Version 6
              (IPv6) Specification", STD 86, RFC 8200,
              DOI 10.17487/RFC8200, July 2017,
              <https://www.rfc-editor.org/info/rfc8200>.

   [RFC8402]  Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L.,
              Decraene, B., Litkowski, S., and R. Shakir, "Segment
              Routing Architecture", RFC 8402, DOI 10.17487/RFC8402,
              July 2018, <https://www.rfc-editor.org/info/rfc8402>.

   [RFC8660]  Bashandy, A., Ed., Filsfils, C., Ed., Previdi, S.,
              Decraene, B., Litkowski, S., and R. Shakir, "Segment
              Routing with the MPLS Data Plane", RFC 8660,
              DOI 10.17487/RFC8660, December 2019,
              <https://www.rfc-editor.org/info/rfc8660>.

   [RFC8663]  Xu, X., Bryant, S., Farrel, A., Hassan, S., Henderickx,
              W., and Z. Li, "MPLS Segment Routing over IP", RFC 8663,
              DOI 10.17487/RFC8663, December 2019,
              <https://www.rfc-editor.org/info/rfc8663>.

   [RFC8665]  Psenak, P., Ed., Previdi, S., Ed., Filsfils, C., Gredler,
              H., Shakir, R., Henderickx, W., and J. Tantsura, "OSPF
              Extensions for Segment Routing", RFC 8665,
              DOI 10.17487/RFC8665, December 2019,
              <https://www.rfc-editor.org/info/rfc8665>.

Weiqiang, et al.         Expires August 22, 2020               [Page 15]
Internet-Draft           Unified Identifier SRv6           February 2020

   [RFC8666]  Psenak, P., Ed. and S. Previdi, Ed., "OSPFv3 Extensions
              for Segment Routing", RFC 8666, DOI 10.17487/RFC8666,
              December 2019, <https://www.rfc-editor.org/info/rfc8666>.

   [RFC8667]  Previdi, S., Ed., Ginsberg, L., Ed., Filsfils, C.,
              Bashandy, A., Gredler, H., and B. Decraene, "IS-IS
              Extensions for Segment Routing", RFC 8667,
              DOI 10.17487/RFC8667, December 2019,
              <https://www.rfc-editor.org/info/rfc8667>.

Authors' Addresses

   Cheng Weiqiang
   China Mobile
   Beijing
   China

   Email: chengweiqiang@chinamobile.com

   Greg Mirsky
   ZTE Corp.

   Email: gregimirsky@gmail.com

   Peng Shaofu
   ZTE Corporation
   No.50 Software Avenue, Yuhuatai District
   Nanjing
   China

   Email: peng.shaofu@zte.com.cn

   Liu Aihua
   ZTE Corporation
   Zhongxing Industrial Park, Nanshan District
   Shenzhen
   China

   Email: liu.aihua@zte.com.cn

Weiqiang, et al.         Expires August 22, 2020               [Page 16]
Internet-Draft           Unified Identifier SRv6           February 2020

   Wan Xiaolan
   New H3C Technologies Co. Ltd
   No.8, Yongjia Road, Haidian District
   Beijing
   China

   Email: wxlan@h3c.com

   Cheng Wei
   Centec
   Building B, No.5 Xing Han Street, Suzhou Industrial Park
   Suzhou
   China

   Email: Chengw@centecnetworks.com

   S.Zadok
   Broadcom
   Israel

   Email: shay.zadok@broadcom.com

Weiqiang, et al.         Expires August 22, 2020               [Page 17]