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 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: WG List: Editor: Zhibo hu Author: Zhenbin li Author: S. Matsushima "; 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."; } } } } } } } } 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, . [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, . [RFC4607] Holbrook, H. and B. Cain, "Source-Specific Multicast for IP", RFC 4607, DOI 10.17487/RFC4607, August 2006, . [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, . [RFC4610] Farinacci, D. and Y. Cai, "Anycast-RP Using Protocol Independent Multicast (PIM)", RFC 4610, DOI 10.17487/RFC4610, August 2006, . [RFC5015] Handley, M., Kouvelas, I., Speakman, T., and L. Vicisano, "Bidirectional Protocol Independent Multicast (BIDIR- PIM)", RFC 5015, DOI 10.17487/RFC5015, October 2007, . 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, . [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, DOI 10.17487/RFC6020, October 2010, . [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, . 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, . 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]