Network Working Group                                              Z. Hu
Internet-Draft                                                     Z. Li
Intended status: Standards Track                                  Huawei
Expires: April 28, 2018                                    S. Matsushima
                                                               K. Horiba
                                                                Softbank
                                                        October 25, 2017


                        YANG Data Model for SRv6
                      draft-hu-spring-srv6-yang-00

Abstract

   This document defines a YANG data model that can be used to configure
   and manage SRv6

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

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 April 28, 2018.

Copyright Notice

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



Hu, et al.               Expires April 28, 2018                 [Page 1]


Internet-Draft            SRv6 YANG Data Model              October 2017


   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.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   2
   3.  Design of Data Model  . . . . . . . . . . . . . . . . . . . .   3
     3.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .   3
     3.2.  SRv6 Configuration  . . . . . . . . . . . . . . . . . . .   4
     3.3.  SRv6 Explicit-path Configuration  . . . . . . . . . . . .   6
   4.  SRv6 VPN YANG . . . . . . . . . . . . . . . . . . . . . . . .   7
   5.  Yang Module . . . . . . . . . . . . . . . . . . . . . . . . .   7
   6.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  13
   7.  Security Considerations . . . . . . . . . . . . . . . . . . .  13
   8.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .  13
   9.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  13
     9.1.  Normative References  . . . . . . . . . . . . . . . . . .  13
     9.2.  Informative References  . . . . . . . . . . . . . . . . .  15
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  15

1.  Introduction

   YANG[RFC6020] is a data definition language that was introduced to
   define the contents of a conceptual data store that allows networked
   devices to be managed using NETCONF[RFC6241].  YANG is proving
   relevant beyond its initial confines, as bindings to other
   interfaces(e.g.  REST) and encoding other than XML (e.g.  JSON) are
   being defined.  Furthermore, YANG data models can be used as the
   basis of implementation for other interface, such as CLI and
   Programmatic APIs.

2.  Terminology

   o  SR: Segment Routing

   o  SID: Segment ID

   o  SRv6: Segment Routing IPv6 data plane

   o  SRH:Segment Routing Header






Hu, et al.               Expires April 28, 2018                 [Page 2]


Internet-Draft            SRv6 YANG Data Model              October 2017


3.  Design of Data Model

3.1.  Overview

   This module augments the "/rt:routing:" with a segment-routing-ipv6
   container.  This container defines the configuration and operation
   state parameters related to segment-routing-ipv6.

   The YANG module includes :

   o segment-routing-ipv6-global-enable:Enable global SRv6 capability.

   o segment-routing-ipv6-traffic-engineer-enable:Enable SRv6 traffic
   engineering capability.

   o srv6-node-capability:the ability to encapsulate or handle SRv6
   headers.

   o my-local-sid-table:this table contains all the local SRv6 segments
   explicitly instantiated at the node.































Hu, et al.               Expires April 28, 2018                 [Page 3]


Internet-Draft            SRv6 YANG Data Model              October 2017


module: ietf-segment-routing-ipv6
augment /rt:routing:
  +--rw segment-routing-ipv6
     +--rw srv6-enable?               boolean
     +--rw traffic-engineering-enable?   boolean
     +--rw srv6-node-capabilities
     |  +--rw encap-capability?      boolean
     |  +--rw maximum-sl?            uint8
     |  +--rw maximum-end-pop-srh?   uint8
     |  +--rw maximum-insert-srh?    uint8
     |  +--rw maximum-encap-srh?     uint8
     |  +--rw maximum-end-d-srh?     uint8
     +--rw myLocalSidTable
     |  +--ro srhEndSidForwTables
     |  |  +--ro srhEndSidForwTable* [endSidValue]
     |  |     +--ro endSidValue     inet:ipv6-address-no-zone
     |  |     +--ro endSidFlavor?   string
     |  +--ro srhEndXSidForwTables
     |     +--ro srhEndXSidForwTable* [endXSidValue]
     |        +--ro endXSidValue       inet:ipv6-address-no-zone
     |        +--ro endXSidFlavor?     string
     |        +--ro endXSidNhpInfos
     |           +--ro endXSidNhpInfo* [interface nextHop]
     |              +--ro interface    string
     |              +--ro nextHop      inet:ipv6-address-no-zone
     +--rw srv6-sid-list
        +--rw explicitPath* [explicitPathName]
           +--rw explicitPathName    string
           +--rw explicitPathHops
              +--rw explicitPathHop* [tunnelHopIndex]
                 +--rw tunnelHopIndex               uint32
                 +--rw tunnelHopMode?               erHopMode
                 +--rw tunnelHopSidIPv6             inet:ipv6-address-no-zone
                 +--rw tunnelHopSidIpv6Type?        erSidIpv6Type


3.2.  SRv6 Configuration

   The global SRv6 configuration includes the following :

   1.The underlay transport-type is defined SRH.  The SPRING
   architecture leverages the existing MPLS data plane without any
   modification, and it also leverages the IPv6 data plane with a new
   IPv6 Routing Header Type with a proposal for a new type of routing
   header is made by [SRH].






Hu, et al.               Expires April 28, 2018                 [Page 4]


Internet-Draft            SRv6 YANG Data Model              October 2017


   2.Enable the capability of SRv6 traffic engineering.All the SPRING
   use cases [RFC7855] are also applicable to the SRv6 data plane
   including traffic engineering.

   3.SRV6-node-capability:the ability to encapsulate or handle SRv6
   headers.

   encap-capability:the SRv6 encap capability of the node.

   maximum-sl:the maximum value of the "SL" field in the SRH supported
   by the node.

   maximum-end-pop-srh:the maximum number of SIDs in the top SRH in an
   SRH stack to which the node can apply "PSP" or USP" flavors.

   maximum-insert-srh:the maximum number of SIDs that can be inserted as
   part of the "T.insert" behavior supported by the node.

   maximum-encap-srh:the maximum number of SIDs that can be included as
   part of the "T.Encap" behavior supported by the node.

   maximum-end-d-srh:the maximum number of SIDs in an SRH when applying
   "End.DX6" and "End.DT6" functions supported by the node.

   4:my-local-sid-table:this table contains all the local SRv6 segments
   explicitly instantiated at the node.

   SRv6EndSidTables:Segment Routing IPv6 End Local-SID table.

   SRV6EndXSidTables:Segment Routing IPv6 End.X Local-SID table.

   the other SID will be added in a later revision.



















Hu, et al.               Expires April 28, 2018                 [Page 5]


Internet-Draft            SRv6 YANG Data Model              October 2017


   module: ietf-segment-routing-ipv6
     augment /rt:routing:
       +--rw segment-routing-ipv6
          +--rw srv6-enable?               boolean
          +--rw traffic-engineer-enable?   boolean
          +--rw srv6-node-capabilities
          |  +--rw encap-capability?      boolean
          |  +--rw maximum-sl?            uint8
          |  +--rw maximum-end-pop-srh?   uint8
          |  +--rw maximum-insert-srh?    uint8
          |  +--rw maximum-encap-srh?     uint8
          |  +--rw maximum-end-d-srh?     uint8
          +--rw myLocalSidTable
          |  +--ro srhEndSidForwTables
          |  |  +--ro srhEndSidForwTable* [endSidValue]
          |  |     +--ro endSidValue     inet:ipv6-address-no-zone
          |  |     +--ro endSidFlavor?   string
          |  +--ro srhEndXSidForwTables
          |     +--ro srhEndXSidForwTable* [endXSidValue]
          |        +--ro endXSidValue       inet:ipv6-address-no-zone
          |        +--ro endXSidFlavor?     string
          |        +--ro endXSidNhpInfos
          |           +--ro endXSidNhpInfo* [interface nextHop]
          |              +--ro interface    string
          |              +--ro nextHop      inet:ipv6-address-no-zone

3.3.  SRv6 Explicit-path Configuration

   The SRv6 explicit path configuration includes the following:

   SRv6 tunnel explicit path, the SRV6 explicit path can be expressed by
   a set of IPv6 address or SRV6 sid or Mixed with both.  It contains
   the following parameters:

   o explicitPathName: The path name of explicit path.

   o tunnelHopIndex: The path index of explicit path.

   o HopMode: Route hop mode, specifies the IPv6 address or the SRv6
   SID.

   o tunnelHopSidIPv6 : IPv6 address or SRv6 SID.

   o tunnelHopSidIpv6Type: SRv6 SID type of the explicit route hop.







Hu, et al.               Expires April 28, 2018                 [Page 6]


Internet-Draft            SRv6 YANG Data Model              October 2017


 +--rw srv6-sid-list
          +--rw explicitPath* [explicitPathName]
             +--rw explicitPathName    string
             +--rw explicitPathHops
                +--rw explicitPathHop* [tunnelHopIndex]
                   +--rw tunnelHopIndex               uint32
                   +--rw tunnelHopMode?               erHopMode
                   +--rw tunnelHopSidIPv6             inet:ipv6-address-no-zone
                   +--rw tunnelHopSidIpv6Type?        erSidIpv6Type

4.  SRv6 VPN YANG

   The SRv6 VPN YANG module will be added in a later revision.

5.  Yang Module

   <CODE BEGINS> file "ietf-segment-routing-ipv6@2017-10-23.yang"
   module ietf-segment-routing-ipv6 {
     namespace "urn:ietf:params:xml:ns:yang:ietf-segment-routing-ipv6";
     prefix sr;

     import ietf-inet-types {
       prefix inet;
     }
     import ietf-routing {
       prefix rt;
     }

     organization
       "IETF SPRING Working Group";
     contact
       "WG Web:   <http://tools.ietf.org/wg/spring/>
        WG List:  <mailto:spring@ietf.org>

        Editor:    Zhibo hu
                  <mailto:huzhibo@huawei.com>

        Author:    Zhenbin li
                  <lizhenbin@huawei.com>

        Author:    S. Matsushima
                  <satoru.matsushima@g.softbank.co.jp>

       ";
     description
       "The YANG module defines a generic configuration model for
        Segment routing IPv6 data plane.




Hu, et al.               Expires April 28, 2018                 [Page 7]


Internet-Draft            SRv6 YANG Data Model              October 2017


        Copyright (c) 2017 IETF Trust and the persons identified as
        authors of the code.  All rights reserved.

        Redistribution and use in source and binary forms, with or
        without modification, is permitted pursuant to, and subject
        to the license terms contained in, the Simplified BSD License
        set forth in Section 4.c of the IETF Trust's Legal Provisions
        Relating to IETF Documents
        (http://trustee.ietf.org/license-info).

        This version of this YANG module is part of RFC XXXX;
        see the RFC itself for full legal notices.";

     reference "RFC XXXX";

     revision 2017-10-23 {
       description
         "
          * Implement NMDA model
          *Conform to RFC6087BIS Appendix C
         ";
       reference "RFC XXXX: YANG Data Model for Segment Routing IPv6.";
     }

     typedef erHopMode {
       type enumeration {
         enum "IPV6_ADDRESS" {
           description
             "IPv6 address.";
         }
         enum "SRv6 Sid" {
           description
             "SRv6 SID.";
         }
       }
       description
         "TE Hop Address Type";
     }
     typedef erSidIpv6Type {
       type enumeration {
         enum "none" {
           description
             "None.";
         }
         enum "adjacency" {
           description
             "Adjacency SID.";
         }



Hu, et al.               Expires April 28, 2018                 [Page 8]


Internet-Draft            SRv6 YANG Data Model              October 2017


         enum "prefix" {
           description
             "Prefix SID.";
         }
       }
       description
         "TE Hop Address Type";
     }

     augment "/rt:routing" {
       description
         "This augments routing-instance
          configuration with segment-routing-ipv6.";
       container segment-routing-ipv6 {
         description
           "segment routing IPV6 global config.";
         leaf srv6-enable {
           type boolean;
           default "false";
           description
             "Enables segment-routing
              IPV6 dataplane.";
         }
         leaf traffic-engineering-enable {
           type boolean;
           default "false";
           description
             "Enables segment-routing
              IPV6 traffic-engineering.";
         }
       container SRV6-node-capabilities {
           description
               "Containing SRv6 node capabilities.";
           leaf encap-capability {
               type boolean;
               default true;
               description
               "The SRv6 T.Encap capability of Node.";
           }
           leaf maximum-sl {
               type uint8;
               description
               "Node maximum-sl is the maximum value of the 'SL' field
                in the SRH supported by the node.";
           }
           leaf maximum-end-pop-srh {
               type uint8;
               description



Hu, et al.               Expires April 28, 2018                 [Page 9]


Internet-Draft            SRv6 YANG Data Model              October 2017


               "Node maximum-end-pop-srh is the maximum number of SIDs
                in the top SRH in an SRH stack to which the node can
                apply 'PSP' or 'USP' flavors.";
           }
           leaf maximum-insert-srh {
               type uint8;
               description
               "Node maximum-insert-srh is the maximum number of SIDs
                that can be inserted as part of the 'T.insert'
                behavior supported by the node.";
           }
           leaf maximum-encap-srh {
               type uint8;
               description
               "Node maximum-encap-srh is the maximum number of SIDs
                that can be included as part of the 'T.Encap'
                behavior supported by the node.";
           }
           leaf maximum-end-d-srh {
               type uint8;
               description
               "Node maximum-end-d-srh is the maximum number of SIDs
                in an SRH when applying 'End.DX6' and 'End.DT6'
                functions supported by the node.";
           }
       }

       container myLocalSidTable {
           container srv6EndSidTables {
             config false;
             description
               "Segment Routing IPv6 End Local-Sid table.";
             list srhEndSidForwTable {
               key "endSidValue";
               config false;
               description
                 "Segment Routing IPv6 End Local-Sid table.";
               leaf endSidValue {
                 type inet:ipv6-address-no-zone;
                 config false;
                 description
                   "End SID value.";
               }
               leaf endSidFlavor {
                 type string {
                   length "0..64";
                 }
                 config false;



Hu, et al.               Expires April 28, 2018                [Page 10]


Internet-Draft            SRv6 YANG Data Model              October 2017


                 description
                   "End SID flavor value.";
               }
             }
           }
           container srv6EndXSidTables {
             config false;
             description
               "Segment Routing IPv6 End.X Local-Sid table.";
             list srhEndXSidForwTable {
               key "endXSidValue";
               config false;
               description
                 "Segment Routing IPv6 End.X Local-Sid table.";
               leaf endXSidValue {
                 type inet:ipv6-address-no-zone;
                 config false;
                 description
                   "End.X SID value.";
               }
               leaf endXSidFlavor {
                 type string {
                   length "0..64";
                 }
                 config false;
                 description
                   "End.X SID flavor value.";
               }
               container endXSidNhpInfos {
                 config false;
                 description
                   "Next hop information.";
                 list endXSidNhpInfo {
                   key "interface nextHop";
                   config false;
                   description
                     "Next hop information.";
                   leaf interface {
                     type string {
                       length "0..64";
                     }
                     config false;
                     description
                       "Exit interface.";
                   }
                   leaf nextHop {
                     type inet:ipv6-address-no-zone;
                     config false;



Hu, et al.               Expires April 28, 2018                [Page 11]


Internet-Draft            SRv6 YANG Data Model              October 2017


                     description
                       "Next hop IPV6 address.";
                   }
                 }
               }
             }
           }
       description
         "My local SID table contains all the local SRv6 segments
          explicitly instantiated at the node.";
       }
       container explicitPaths {
         description
           "Explicit path list.";
         list explicitPath {
           key "explicitPathName";
           description
             "Explicit path. When a TE LSP is to be established,
              specify route hop constraints for the LSP.";
           leaf explicitPathName {
             type string {
               length "1..63";
               pattern '[^ \?]*';
             }
             description
               "Explicit path name.";
           }
           container explicitPathHops {
             description
               "Route hop list.";
             list explicitPathHop {
               key "tunnelHopIndex";
               max-elements  "96";
               description
                 "Route hop.";
                leaf tunnelHopIndex {
                 type uint32 {
                   range "1..65535";
                 }
                 description
                   "Route hop index.";
                }
                leaf tunnelHopMode {
                  type erHopMode;
                  default "IPV6_ADDRESS";
                  description
                   "Route hop mode, specifies the
                    IPv6 address or the SRv6 SID.";



Hu, et al.               Expires April 28, 2018                [Page 12]


Internet-Draft            SRv6 YANG Data Model              October 2017


                }
                leaf tunnelHopSidIPv6 {
                  when "../tunnelHopMode='SID_IPV6'";
                  type inet:ipv6-address-no-zone;
                  mandatory true;
                  description
                   "SRv6 SID of the explicit route hop.";
                }
                leaf tunnelHopSidIpv6Type {
                  when "../tunnelHopMode='SID_IPV6'";
                  type erSidIpv6Type;
                  default "none";
                  description
                   "SRv6 SID type of the explicit route hop.";
                }
              }
            }
          }
        }
      }
    }
   }
   <CODE ENDS>


6.  IANA Considerations

   This draft has no request to IANA.

7.  Security Considerations

   The data model defined in this document does not create any security
   implications.  This draft does not change any underlying security
   issues inherent in [I-D.ietf-netmod-routing-cfg].

8.  Acknowledgements

   TBD

9.  References

9.1.  Normative References









Hu, et al.               Expires April 28, 2018                [Page 13]


Internet-Draft            SRv6 YANG Data Model              October 2017


   [I-D.filsfils-spring-srv6-network-programming]
              Filsfils, C., Leddy, J., daniel.voyer@bell.ca, d.,
              daniel.bernier@bell.ca, d., Steinberg, D., Raszuk, R.,
              Matsushima, S., Lebrun, D., Decraene, B., Peirens, B.,
              Salsano, S., Naik, G., Elmalky, H., Jonnalagadda, P.,
              Sharif, M., Ayyangar, A., Mynam, S., Henderickx, W.,
              Bashandy, A., Raza, K., Dukes, D., Clad, F., and P.
              Camarillo, "SRv6 Network Programming", draft-filsfils-
              spring-srv6-network-programming-01 (work in progress),
              June 2017.

   [I-D.ietf-netmod-routing-cfg]
              Lhotka, L. and A. Lindem, "A YANG Data Model for Routing
              Management", draft-ietf-netmod-routing-cfg-25 (work in
              progress), November 2016.

   [RFC3973]  Adams, A., Nicholas, J., and W. Siadak, "Protocol
              Independent Multicast - Dense Mode (PIM-DM): Protocol
              Specification (Revised)", RFC 3973, DOI 10.17487/RFC3973,
              January 2005, <https://www.rfc-editor.org/info/rfc3973>.

   [RFC4601]  Fenner, B., Handley, M., Holbrook, H., and I. Kouvelas,
              "Protocol Independent Multicast - Sparse Mode (PIM-SM):
              Protocol Specification (Revised)", RFC 4601,
              DOI 10.17487/RFC4601, August 2006,
              <https://www.rfc-editor.org/info/rfc4601>.

   [RFC4607]  Holbrook, H. and B. Cain, "Source-Specific Multicast for
              IP", RFC 4607, DOI 10.17487/RFC4607, August 2006,
              <https://www.rfc-editor.org/info/rfc4607>.

   [RFC4608]  Meyer, D., Rockell, R., and G. Shepherd, "Source-Specific
              Protocol Independent Multicast in 232/8", BCP 120,
              RFC 4608, DOI 10.17487/RFC4608, August 2006,
              <https://www.rfc-editor.org/info/rfc4608>.

   [RFC4610]  Farinacci, D. and Y. Cai, "Anycast-RP Using Protocol
              Independent Multicast (PIM)", RFC 4610,
              DOI 10.17487/RFC4610, August 2006,
              <https://www.rfc-editor.org/info/rfc4610>.

   [RFC5015]  Handley, M., Kouvelas, I., Speakman, T., and L. Vicisano,
              "Bidirectional Protocol Independent Multicast (BIDIR-
              PIM)", RFC 5015, DOI 10.17487/RFC5015, October 2007,
              <https://www.rfc-editor.org/info/rfc5015>.






Hu, et al.               Expires April 28, 2018                [Page 14]


Internet-Draft            SRv6 YANG Data Model              October 2017


   [RFC5059]  Bhaskar, N., Gall, A., Lingard, J., and S. Venaas,
              "Bootstrap Router (BSR) Mechanism for Protocol Independent
              Multicast (PIM)", RFC 5059, DOI 10.17487/RFC5059, January
              2008, <https://www.rfc-editor.org/info/rfc5059>.

   [RFC6020]  Bjorklund, M., Ed., "YANG - A Data Modeling Language for
              the Network Configuration Protocol (NETCONF)", RFC 6020,
              DOI 10.17487/RFC6020, October 2010,
              <https://www.rfc-editor.org/info/rfc6020>.

   [RFC6241]  Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
              and A. Bierman, Ed., "Network Configuration Protocol
              (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
              <https://www.rfc-editor.org/info/rfc6241>.

9.2.  Informative References

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

Authors' Addresses

   Zhibo
   Huawei
   Huawei Bld., No.156 Beiqing Rd.
   Beijing  100095
   China

   Email: huzhibo@huawei.com


   Zhenbin
   Huawei
   Huawei Bld., No.156 Beiqing Rd.
   Beijing  100095
   China

   Email: lizhenbin@huawei.com











Hu, et al.               Expires April 28, 2018                [Page 15]


Internet-Draft            SRv6 YANG Data Model              October 2017


   Satoru Matsushima
   Softbank
   1-9-1,Higashi-Shimbashi,Minato-Ku .
   Tokyo  105-7322
   Japan

   Email: satoru.matsushima@g.softbank.co.jp


   Katsuhiro Horiba
   Softbank
   1-9-1,Higashi-Shimbashi,Minato-Ku .
   Tokyo  105-7322
   Japan

   Email: katsuhiro.horiba@g.softbank.co.jp



































Hu, et al.               Expires April 28, 2018                [Page 16]