NVO3 WG Fangwei. Hu Internet-Draft Ran. Chen Intended status: Standards Track ZTE Corporation Expires: November 7, 2015 Mallik. Mahalingam Storvisor May 6, 2015 YANG Data Model for VxLAN Protocol draft-chen-nvo3-vxlan-yang-00.txt Abstract This document defines a YANG data model for VxLAN protocol. 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 November 7, 2015. 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 (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. Hu, et al. Expires November 7, 2015 [Page 1] Internet-Draft VxLAN YANG May 2015 Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 2 3. YANG Data Model for VxLAN Configuration . . . . . . . . . . . 2 3.1. VxLAN Multicast IP Address . . . . . . . . . . . . . . . 2 3.2. VxLAN Mapping Type . . . . . . . . . . . . . . . . . . . 2 3.3. VTEP Mode . . . . . . . . . . . . . . . . . . . . . . . . 3 4. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 5. VxLAN YANG Data Model . . . . . . . . . . . . . . . . . . . . 4 6. Security Considerations . . . . . . . . . . . . . . . . . . . 10 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 10 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 9. Normative References . . . . . . . . . . . . . . . . . . . . 10 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11 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]. This document defines a YANG data model for the configuration of VxLAN protocol [RFC7348]. 2. Terminology 3. YANG Data Model for VxLAN Configuration 3.1. VxLAN Multicast IP Address The vxlan-multicast-ip is used to configure the IP multicast group, which the VxLAN VNI of the VTEP is mapping to. 3.2. VxLAN Mapping Type The VxLAN-mapping-type is used to configure the VxLAN mapping type for the interface. The value is as following: o vlan-1:1: the vxlan mapping type is VLAN, and each VxLAN is only mapping to one VLAN. o vlan- n:1: the vxlan mapping type is VLAN, and each VxLAN could be mapped to several VLANs. o L3-interface: the VxLAN mapping type is layer 3 interface. o mac: the VxLAN mapping type is MAC address. Hu, et al. Expires November 7, 2015 [Page 2] Internet-Draft VxLAN YANG May 2015 o vlan-l2-interface: the VxLAN mapping type is vlan + Layer 2 interface. 3.3. VTEP Mode The VTEP-mode is used to configure the mode for the VTEP interface. There are two modes: discard-inner-vlan and no-discard-inner-vlan. If the VTEP interface works in the discard-inner-vlan mode, the VxLAN is only mapping to one VLAN. The inner VLAN tag will be stripped when encapsulating the VxLAN frame. On the decapsulation side, if VTEP receives the VxLAN frame with inner VLAN tag, it will discard the frame in this work mode. If the VTEP receives the VxLAN frame without VLAN tag, it will fill in the VLAN tag based on the VxLAN and VLAN mapping. If the VTEP interface works in the no-discard-inner-vlan mode, the VxLAN could be mapped to several VLANs. The inner VLAN tag will not stripped when encapsulating the VxLAN frame in the VxLAN encapsulation side. On the decapsulation side, if VTEP receives the VxLAN frame, it will strip the VxLAN header, and keep the VLAN frame. 4. Design of the Data Model Hu, et al. Expires November 7, 2015 [Page 3] Internet-Draft VxLAN YANG May 2015 Module: VxLAN VxLAN configuration +--rw global-config | +--rw global-enable +--rw vxlan-instances *[vxlan-id] | +--rw vxlan-id | +--rw vxlan-multicast-ip inet: ipv4-address | +--rw vxlan-map-table | +--rw map-type-vlan | +--rw map-vlan *[vlan-id] | +--rw map-type-mac | +--rw map-mac | +--rw mac yang:mac-address | +--map-tye-l2interface | +--rw map-type-interface | +--rw map-l2interface | +--rw vlan-id uint16 | +--rw interface-name if:name | +--map-type-l3interface | +--rw map-type-l3interface *[interface-name] | +--rw map-l3interface | +-- rw interface-name if:name +--rw vtep-instances | +--rw vtep-source-interfaces | +--rw vtep-source-interface | +--rw vtep-name if:name | +--rw source-interface if:name | +--rw vtep-modes | +--rw vtep-mode *[vtep-name] | +--rw vtep-name if:name | +--rw vetp-mode enumeration +--rw vtep-binds | +--rw vtep-bind *[vtep-name vxlan-id] | +--rw vtep-name if:name | +--vxlan-id uint32 + 5. VxLAN YANG Data Model module ietf-vxlan { namespace "urn:ietf:params:xml:ns:yang:ietf-vxlan"; prefix "vxlan"; organization "Internet Engineer Task Force"; Hu, et al. Expires November 7, 2015 [Page 4] Internet-Draft VxLAN YANG May 2015 contact Editor: Ran Chen Editor: Fangwei Hu description "TBD"; revision 2015-05-05 { description "Initial revision"; } import ietf-yang-types { prefix yang; } import ietf-inet-types { prefix "inet"; } import ietf-interfaces { prefix "if"; } //data defs container configuration { description 'Configuration model info.' ; container vxlan { description 'Configure VXLAN parameters.' ; container global-config { description 'Global configuration.' ; presence global-config ; leaf global-enable { description 'VXLAN global enble.' ; type empty ; mandatory true ; } } container vxlan-instances { description 'VXLAN instances.' ; list vxlan-instance { description 'VXLAN instance.' ; key vxlan-id ; leaf vxlan-id { description 'VXLAN ID.' ; type uint32 { Hu, et al. Expires November 7, 2015 [Page 5] Internet-Draft VxLAN YANG May 2015 range 1..16777215 { description 'The value of VXLAN,it must between 1 to 16777215.' ; } } } container vxlan-multicast-ip { description 'VXLAN multicast IP address.' ; presence vxlan-multicast-ip ; leaf multicast-ip { description 'VXLAN multicast IP address.' ; type inet:ipv4-address ; mandatory true ; } } container vxlan-map-tables { description 'VXLAN map tables.' ; presence vxlan-map-tables ; choice vxlan-map-types { description 'VXLAN map type choice.' ; case vxlan-map-vlan { description 'VXLAN map VLAN.' ; leaf map-type-vlan { description 'VXLAN map VLAN.' ; type enumeration { enum map-type-vlan1to1 { value 1 ; description 'Map type VLAN1:1.' ; } enum map-type-vlan1ton { value 2 ; description 'Map type VLAN1:n.' ; } } default map-type-vlan1to1 ; } list map-vlan { description 'VXLAN map VLAN.' ; key vlan-id ; leaf vlan-id { description 'VLAN ID.' ; type uint16 { range 1..4094 { description 'The value of VLAN,it must between 1 to 409' + '4.' ; } } } Hu, et al. Expires November 7, 2015 [Page 6] Internet-Draft VxLAN YANG May 2015 } } case vxlan-map-mac { description 'VXLAN map MAC.' ; leaf map-type-mac { description 'VXLAN map MAC.' ; type empty ; } container map-mac { description 'VXLAN map MAC.' ; presence map-mac ; leaf mac { description 'MAC address.' ; type yang:mac-address ; mandatory true ; } } } case vxlan-map-l2interface { description 'VXLAN map L2 interface.' ; leaf map-type-l2interface { description 'VXLAN map L2 interface.' ; type empty ; } container map-l2interface { description 'VXLAN map L2 interface.' ; presence map-l2interface ; leaf vlan-id { description 'VLAN ID.' ; type uint16 { range 1..4094 { description 'The value of VLAN,it must between 1 to 409' + '4.' ; } } mandatory true ; } leaf interface-name { description 'L2 interface name.' ; type if:name { length 1..31 { description 'The length of interface name must between ' + '1 to 31.' ; } } mandatory true ; Hu, et al. Expires November 7, 2015 [Page 7] Internet-Draft VxLAN YANG May 2015 } } } case vxlan-map-l3interface { description 'VXLAN map L3 interface.' ; leaf map-type-l3interface { description 'VXLAN map L3 interface.' ; type empty ; } list map-l3interface { description 'VXLAN map L3 interface.' ; key interface-name ; leaf interface-name { description 'L3 interface name.' ; type if:name { length 1..31 { description 'The length of interface name must between ' + '1 to 31.' ; } } } } } } } } } container vtep-instances { description 'VTEP instances.' ; container vtep-source-interfaces { description 'VTEP source interfaces.' ; list vtep-source-interface { description 'VTEP source interface.' ; key vtep-name ; leaf vtep-name { description 'VTEP interface name.' ; type if:name { length 1..31 { description 'The length of interface name must between 1 to 3' + '1.' ; } } } leaf source-interface { description 'Source interface name.' ; type if:name { Hu, et al. Expires November 7, 2015 [Page 8] Internet-Draft VxLAN YANG May 2015 length 1..31 { description 'The length of interface name must between 1 to 3' + '1.' ; } } mandatory true ; } } } container vtep-modes { description 'VTEP modes.' ; list vtep-mode { description 'VTEP mode.' ; key vtep-name ; leaf vtep-name { description 'VTEP interface name.' ; type if:name { length 1..31 { description 'The length of interface name must between 1 to 3' + '1.' ; } } } leaf vtep-mode { description 'VTEP mode.' ; type enumeration { enum discard-inner-vlan { value 1 ; description 'Discard inner-VLAN.' ; } enum no-discard-inner-vlan { value 2 ; description 'No discard inner-VLAN.' ; } } default discard-inner-vlan ; } } } } container vtep-binds { description 'VTEP bind table.' ; list vtep-bind { description 'VTEP bind table.' ; key 'vtep-name vxlan-id' ; leaf vtep-name { Hu, et al. Expires November 7, 2015 [Page 9] Internet-Draft VxLAN YANG May 2015 description 'VTEP interface name.' ; type if:name { length 1..31 { description 'The length of interface name must between 1 to 31.' ; } } } leaf vxlan-id { description 'VXLAN ID.' ; type uint32 { range 1..16777215 { description 'The value of VXLAN,it must between 1 to 16777215.' ; } } } } } } } } 6. Security Considerations 7. Acknowledgements 8. IANA Considerations This document requires no IANA Actions. Please remove this section before RFC publication. 9. Normative References [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, October 2010. [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. Bierman, "Network Configuration Protocol (NETCONF)", RFC 6241, June 2011. [RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991, July 2013. [RFC7223] Bjorklund, M., "A YANG Data Model for Interface Management", RFC 7223, May 2014. Hu, et al. Expires November 7, 2015 [Page 10] Internet-Draft VxLAN YANG May 2015 [RFC7348] Mahalingam, M., Dutt, D., Duda, K., Agarwal, P., Kreeger, L., Sridhar, T., Bursell, M., and C. Wright, "Virtual eXtensible Local Area Network (VXLAN): A Framework for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks", RFC 7348, August 2014. Authors' Addresses Fangwei Hu ZTE Corporation No.889 Bibo Rd Shanghai 201203 China Phone: +86 21 68896273 Email: hu.fangwei@zte.com.cn 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 Mallik Mahalingam Storvisor 640 W. California Ave, Suite #110 Sunnyvale, CA 94086 USA Email: mallik_mahalingam@yahoo.com Hu, et al. Expires November 7, 2015 [Page 11]