--- 1/draft-ietf-lisp-yang-00.txt 2015-12-17 22:15:12.702701891 -0800 +++ 2/draft-ietf-lisp-yang-01.txt 2015-12-17 22:15:12.894706624 -0800 @@ -1,26 +1,26 @@ Network Working Group V. Ermagan Internet-Draft Cisco Systems Intended status: Experimental A. Rodriguez-Natal -Expires: March 4, 2016 F. Coras +Expires: June 19, 2016 F. Coras Technical University of Catalonia C. Moberg Cisco Systems A. Cabellos-Aparicio Technical University of Catalonia F. Maino Cisco Systems - September 1, 2015 + December 17, 2015 LISP Configuration YANG Model - draft-ietf-lisp-yang-00 + draft-ietf-lisp-yang-01 Abstract This document describes a YANG data model to use with the Locator/ID Separation Protocol (LISP). Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. @@ -28,21 +28,21 @@ 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 March 4, 2016. + This Internet-Draft will expire on June 19, 2016. Copyright Notice Copyright (c) 2015 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents @@ -57,39 +57,39 @@ 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 2. LISP Module . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1. Module Structure . . . . . . . . . . . . . . . . . . . . 3 2.2. Module Definition . . . . . . . . . . . . . . . . . . . . 3 3. LISP-ITR Module . . . . . . . . . . . . . . . . . . . . . . . 9 3.1. Module Structure . . . . . . . . . . . . . . . . . . . . 9 3.2. Module Definition . . . . . . . . . . . . . . . . . . . . 22 4. LISP ETR Module . . . . . . . . . . . . . . . . . . . . . . . 26 4.1. Module Structure . . . . . . . . . . . . . . . . . . . . 26 4.2. Module Definition . . . . . . . . . . . . . . . . . . . . 30 - 5. LISP Map Server Module . . . . . . . . . . . . . . . . . . . 32 + 5. LISP Map Server Module . . . . . . . . . . . . . . . . . . . 33 5.1. Module Structure . . . . . . . . . . . . . . . . . . . . 33 5.2. Module Definition . . . . . . . . . . . . . . . . . . . . 43 6. LISP Map Resolver Module . . . . . . . . . . . . . . . . . . 47 - 6.1. Module Structure . . . . . . . . . . . . . . . . . . . . 47 + 6.1. Module Structure . . . . . . . . . . . . . . . . . . . . 48 6.2. Module Definition . . . . . . . . . . . . . . . . . . . . 48 - 7. LISP Proxy ITR Module . . . . . . . . . . . . . . . . . . . . 49 + 7. LISP Proxy ITR Module . . . . . . . . . . . . . . . . . . . . 50 7.1. Module Structure . . . . . . . . . . . . . . . . . . . . 50 7.2. Module Definition . . . . . . . . . . . . . . . . . . . . 59 8. LISP Proxy ETR Module . . . . . . . . . . . . . . . . . . . . 62 8.1. Module Structure . . . . . . . . . . . . . . . . . . . . 62 8.2. Module Definition . . . . . . . . . . . . . . . . . . . . 64 9. LISP Address Types . . . . . . . . . . . . . . . . . . . . . 66 9.1. Module Definition . . . . . . . . . . . . . . . . . . . . 66 - 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 78 - 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 78 - 12. Security Considerations . . . . . . . . . . . . . . . . . . . 78 - 13. Normative References . . . . . . . . . . . . . . . . . . . . 78 - Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 79 + 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 80 + 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 80 + 12. Security Considerations . . . . . . . . . . . . . . . . . . . 80 + 13. Normative References . . . . . . . . . . . . . . . . . . . . 80 + Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 81 1. Introduction The Locator/ID Separation Protocol (LISP) defines several network elements subject to be configured. This document presents the YANG data models required for basic configuration of all major LISP [RFC6830]elements. The models also capture some essential operational data elements as well. 2. LISP Module @@ -107,27 +107,28 @@ | +--rw id string | +--rw enabled? boolean +--ro lisp-state +--ro devices +--ro device* [type id] +--ro type device-ref +--ro id string 2.2. Module Definition + file "ietf-lisp@2014-12-19.yang" module ietf-lisp { namespace "urn:ietf:params:xml:ns:yang:ietf-lisp"; prefix lisp; import ietf-interfaces { prefix if; } - import lisp-address-types { + import ietf-lisp-address-types { prefix lcaf; } organization "IETF LISP (Locator/ID Separation Protocol) Working Group"; contact "lisp@ietf.org"; description "This YANG module defines the generic configuration and operational data for LISP. The module can be extended by vendors to define vendor-specific LISP configuration @@ -386,29 +387,30 @@ leaf id { type string; description "Name of LISP device."; } } } } } + 3. LISP-ITR Module This module captures the configuration data model of a LISP ITR. The model also captures some operational data elements. 3.1. Module Structure -module: lisp-itr +module: ietf-lisp-itr augment /lisp:lisp/lisp:devices/lisp:device: +--rw itr-cfg! +--rw rloc-probing! | +--rw interval? uint16 | +--rw retries? uint8 | +--rw retries-interval? uint16 +--rw itr-rlocs | +--rw itr-rloc* [id] | +--rw id string | +--rw address @@ -1012,27 +1014,28 @@ | +--ro sourc-dest-key | +--ro source? inet:ip-prefix | +--ro dest? inet:ip-prefix +--ro priority? uint8 +--ro weight? uint8 +--ro multicast-priority? uint8 +--ro multicast-weight? uint8 3.2. Module Definition - module lisp-itr { - namespace "urn:ietf:params:xml:ns:yang:lisp-itr"; + file "ietf-lisp-itr@2015-07-02.yang" + module ietf-lisp-itr { + namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-itr"; prefix lisp-itr; import ietf-lisp { prefix lisp; } - import lisp-address-types { + import ietf-lisp-address-types { prefix lcaf; } import ietf-inet-types { prefix inet; } organization "IETF LISP (Locator/ID Separation Protocol) Working Group"; contact "lisp@ietf.org"; description @@ -1210,29 +1210,30 @@ description "ITR state."; container learned-mappings { uses lisp:mappings; description "EID to RLOCs mappings cache."; } } } } + 4. LISP ETR Module This module captures the configuration data model of a LISP ETR. The model also captures some operational data elements. 4.1. Module Structure -module: lisp-etr +module: ietf-lisp-etr augment /lisp:lisp/lisp:devices/lisp:device: +--rw etr-cfg! +--rw local-eids +--rw local-eid* [id] +--rw id lisp:eid-id +--rw eid-address | +--rw afi lisp-address-family-ref | +--rw instance-id? instance-id-type | +--rw (address)? | +--:(ipv4) @@ -1385,27 +1386,28 @@ | +--rw weight? uint8 | +--rw multicast-priority? uint8 | +--rw multicast-weight? uint8 +--rw record-ttl? uint32 +--rw want-map-notify? boolean +--rw proxy-reply? boolean +--rw registration-interval? uint16 4.2. Module Definition - module lisp-etr { - namespace "urn:ietf:params:xml:ns:yang:lisp-etr"; + file "ietf-lisp-etr@2015-07-02.yang" + module ietf-lisp-etr { + namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-etr"; prefix lisp-etr; import ietf-lisp { prefix lisp; } - import lisp-address-types { + import ietf-lisp-address-types { prefix lcaf; } import ietf-inet-types { prefix inet; } organization "IETF LISP (Locator/ID Separation Protocol) Working Group"; contact "lisp@ietf.org"; description @@ -1520,30 +1522,31 @@ units "seconds"; default "60"; description "Interval between consecutive Map-Register messages."; } } } } } } + 5. LISP Map Server Module This module captures the configuration data model of a LISP Map Server [RFC6833]. The model also captures some operational data elements. 5.1. Module Structure -module: lisp-map-server +module: ietf-lisp-mapserver augment /lisp:lisp/lisp:devices/lisp:device: +--rw map-server-cfg! +--rw sites | +--rw site* [site-id] | +--rw site-id uint64 | +--rw devices | +--rw device* [device-id] | +--rw device-id uint64 | +--rw auth-key | | +--rw auth-key-value? string @@ -2014,27 +2017,28 @@ | +--ro sourc-dest-key | +--ro source? inet:ip-prefix | +--ro dest? inet:ip-prefix +--ro priority? uint8 +--ro weight? uint8 +--ro multicast-priority? uint8 +--ro multicast-weight? uint8 5.2. Module Definition - module lisp-map-server { - namespace "urn:ietf:params:xml:ns:yang:lisp-map-server"; + file "ietf-lisp-mapserver@2015-07-02.yang" + module ietf-lisp-mapserver { + namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-mapserver"; prefix lisp-ms; import ietf-lisp { prefix lisp; } - import lisp-address-types { + import ietf-lisp-address-types { prefix lcaf; } import ietf-inet-types { prefix inet; } organization "IETF LISP (Locator/ID Separation Protocol) Working Group"; contact "lisp@ietf.org"; description @@ -2087,21 +2091,21 @@ list site { key "site-id"; description "List of sites for which the Map-Server acceptes registrations."; leaf site-id { type uint64; description "Site identifier."; } - //VINA: can be augmented to have below for per site auth-key + //Can be augmented to have below for per site auth-key // leaf auth-key { // description "clear text authentication key"; // type string; // } container devices { description "Site devices registered with the Map-Server."; list device { key "device-id"; description @@ -2153,22 +2156,21 @@ can be registered."; } leaf mapping-expiration-timeout { type int16; units "seconds"; default "180"; //3 times the mapregister int description "Time before mapping is expired if no new registrations are received."; } - - // VINA: can be augmented to have below for per-eid auth-key + // Can be augmented to have below for per-eid auth-key // leaf auth-key { // description "clear text authentication key"; // type string; // } } } } } } } @@ -2233,43 +2234,45 @@ description "Map-Server state."; container registered-mappings { uses lisp:mappings; description "Datastore of registred mappings."; } } } } + 6. LISP Map Resolver Module This module captures the configuration data model of a LISP Map Resolver [RFC6833]. The model also captures some operational data elements. 6.1. Module Structure - module: lisp-map-resolver + module: ietf-lisp-mapresolver augment /lisp:lisp/lisp:devices/lisp:device: +--rw map-resolver-cfg! +--rw (mapping-system) +--:(ddt-mapping-system) | +--rw ddt-mapping-system! | +--rw ddt-root* inet:ip-address +--:(alt-mapping-system) +--rw alt-mapping-system! 6.2. Module Definition - module lisp-map-resolver { - namespace "urn:ietf:params:xml:ns:yang:lisp-map-resolver"; + file "ietf-lisp-mapresolver@2015-07-02.yang" + module ietf-lisp-mapresolver { + namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-mapresolver"; prefix lisp-mr; import ietf-lisp { prefix lisp; } import ietf-inet-types { prefix inet; } organization "IETF LISP (Locator/ID Separation Protocol) Working Group"; contact @@ -2330,40 +2333,34 @@ "List of DDT root addresses."; } } container alt-mapping-system{ presence "ALT Mapping System in use"; description "ALT mapping system interface."; // TBD } } - // VE: move to operational model/container - // container mappings { - // config false; - // uses mappings; - // } } } - // FC : should we add as operational data - // cached mappings? } + 7. LISP Proxy ITR Module This module captures the configuration data model of a LISP Proxy ITR [RFC6832]. The model may also capture some operational data elements. 7.1. Module Structure -module: lisp-pitr +module: ietf-lisp-pitr augment /lisp:lisp/lisp:devices/lisp:device: +--rw proxy-itr-cfg! +--rw servicing-eids | +--rw eid* [id] | +--rw id lisp:eid-id | +--rw eid-address | +--rw afi lisp-address-family-ref | +--rw instance-id? instance-id-type | +--rw (address)? | +--:(ipv4) @@ -2818,27 +2815,28 @@ | +--ro sourc-dest-key | +--ro source? inet:ip-prefix | +--ro dest? inet:ip-prefix +--ro priority? uint8 +--ro weight? uint8 +--ro multicast-priority? uint8 +--ro multicast-weight? uint8 7.2. Module Definition - module lisp-pitr { - namespace "urn:ietf:params:xml:ns:yang:lisp-pitr"; + file "ietf-lisp-pitr@2015-07-02.yang" + module ietf-lisp-pitr { + namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-pitr"; prefix lisp-pitr; import ietf-lisp { prefix lisp; } - import lisp-address-types { + import ietf-lisp-address-types { prefix lcaf; } import ietf-inet-types { prefix inet; } organization "IETF LISP (Locator/ID Separation Protocol) Working Group"; contact "lisp@ietf.org"; description @@ -2948,30 +2947,31 @@ description "ITR state."; container learned-mappings { uses lisp:mappings; description "EID to RLOCs mappings cache."; } } } } + 8. LISP Proxy ETR Module This module captures the configuration data model of a LISP Proxy ETR [RFC6832]. The model may also capture some operational data elements. 8.1. Module Structure -module: lisp-petr +module: ietf-lisp-petr augment /lisp:lisp/lisp:devices/lisp:device: +--rw proxy-etr-cfg! +--rw servicing-eids +--rw eid* [id] +--rw id lisp:eid-id +--rw eid-address +--rw afi lisp-address-family-ref +--rw instance-id? instance-id-type +--rw (address)? +--:(ipv4) @@ -3035,27 +3035,28 @@ | +--rw hop* [address] | +--rw address simple-address | +--rw lrs-bits? bits +--:(sourc-dest-key) +--rw sourc-dest-key +--rw source? inet:ip-prefix +--rw dest? inet:ip-prefix 8.2. Module Definition - module lisp-petr { - namespace "urn:ietf:params:xml:ns:yang:lisp-petr"; + file "ietf-lisp-petr@2015-07-02.yang" + module ietf-lisp-petr { + namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-petr"; prefix lisp-petr; import ietf-lisp { prefix lisp; } - import lisp-address-types { + import ietf-lisp-address-types { prefix lcaf; } organization "IETF LISP (Locator/ID Separation Protocol) Working Group"; contact "lisp@ietf.org"; description "This YANG module defines the generic configuration data for a LISP PETR. The module can be extended by vendors to define vendor-specific configuration parameters and policies. @@ -3106,41 +3107,46 @@ leaf id { type lisp:eid-id; description "Id of serviced EID."; } container eid-address { uses lcaf:lisp-address; description "Serviced EID in generic LISP address format."; } + } } } } } + 9. LISP Address Types This module captures the various LISP address types, and is an essential building block used in other LISP modules. 9.1. Module Definition - module lisp-address-types { - namespace "urn:ietf:params:xml:ns:yang:lisp-address-types"; + file "ietf-lisp-address-types@2015-11-05.yang" + module ietf-lisp-address-types { + namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-address-types"; prefix laddr; import ietf-inet-types { prefix inet; + //revision-date 2010-09-24; } import ietf-yang-types { prefix yang; + //revision-date 2010-09-24; } organization "IETF LISP (Locator/ID Separation Protocol) Working Group"; contact "lisp@ietf.org"; description "This YANG module defines the LISP Canonical Address Formats (LCAF) for LISP. The module can be extended by vendors to define vendor-specific parameters. @@ -3151,270 +3157,385 @@ 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 6338; see the RFC itself for full legal notices. "; - revision 2015-03-09 { + revision 2015-11-05 { description "Initial revision."; reference "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10"; } identity lisp-address-family { description "Base identity from which identities describing LISP address families are derived."; } - identity ipv4 { + identity no-address-afi { + base lisp-address-family; + description + "IANA Reserved."; + } + identity ipv4-afi { base lisp-address-family; description "IANA IPv4 address family."; } - identity ipv6 { + identity ipv4-prefix-afi { + base lisp-address-family; + description + "IANA IPv4 address family prefix."; + } + identity ipv6-afi { base lisp-address-family; description "IANA IPv6 address family."; } - identity mac { + identity ipv6-prefix-afi { + base lisp-address-family; + description + "IANA IPv6 address family prefix."; + } + identity mac-afi { base lisp-address-family; description "IANA MAC address family."; } - identity distinguished-name { + identity distinguished-name-afi { base lisp-address-family; description "IANA Distinguished Name address family."; } + identity as-number-afi { + base lisp-address-family; + description + "IANA AS Number address family."; + } identity lcaf { base lisp-address-family; description "IANA LISP Canonical Address Format address family."; } - identity null-address { + identity null-address-lcaf { base lcaf; description "Null body LCAF type."; } - identity afi-list { + identity afi-list-lcaf { base lcaf; description "AFI-List LCAF type."; } - identity instance-id { + identity instance-id-lcaf { base lcaf; description "Instance-ID LCAF type."; } - identity as-number { + identity as-number-lcaf { base lcaf; description "AS Number LCAF type."; } - identity application-data { + identity application-data-lcaf { base lcaf; description "Application Data LCAF type."; } - identity geo-coordinates { + identity geo-coordinates-lcaf { base lcaf; description "Geo-coordinates LCAF type."; } - identity opaque-key { + identity opaque-key-lcaf { base lcaf; description "Opaque Key LCAF type."; } - identity nat-traversal { + identity nat-traversal-lcaf { base lcaf; description "NAT-Traversal LCAF type."; + } - identity nonce-locator { + identity nonce-locator-lcaf { base lcaf; description "Nonce-Locator LCAF type."; } - identity multicast-info { + identity multicast-info-lcaf { base lcaf; description "Multicast Info LCAF type."; } - identity explicit-locator-path { + identity explicit-locator-path-lcaf { base lcaf; description "Explicit Locator Path LCAF type."; } - identity security-key { + identity security-key-lcaf { base lcaf; description "Security Key LCAF type."; } - identity source-dest-key { + identity source-dest-key-lcaf { base lcaf; description "Source/Dest LCAF type."; } - identity replication-list { + identity replication-list-lcaf { base lcaf; description "Replication-List LCAF type."; - } - identity json-data-model { + identity json-data-model-lcaf { base lcaf; description "JSON Data Model LCAF type."; } - identity key-value-address { + identity key-value-address-lcaf { base lcaf; description - "Key-Value LCAF type."; + "Key/Value Address LCAF type."; } - identity encapsulation-format { + identity encapsulation-format-lcaf { base lcaf; description "Encapsulation Format LCAF type."; } + identity service-path-lcaf { + base lcaf; + description + "Service Path LCAF type."; + } typedef instance-id-type { type uint32 { - range "0..16777214"; + range "0..16777215"; } description "Defines the range of values for an Instance ID."; } - typedef simple-address { - type union { - type inet:ip-address; - type inet:ip-prefix; - type yang:mac-address; - type distinguished-name; + typedef service-path-id-type { + type uint32 { + range "0..16777215"; } description - "Union of address types that can be part of LCAFs."; + "Defines the range of values for a Service Path ID."; } - typedef distinguished-name { + typedef distinguished-name-type { type string; description "Distinguished Name address."; reference "http://www.iana.org/assignments/address-family-numbers/ address-family-numbers.xhtml"; } + typedef simple-address { + type union { + type inet:ip-address; + type inet:ip-prefix; + type yang:mac-address; + type distinguished-name-type; + type inet:as-number; + } + description + "Union of address types that can be part of LCAFs."; + } + typedef lisp-address-family-ref { type identityref { base lisp-address-family; } description "LISP address family reference."; } typedef lcaf-ref { type identityref { base lcaf; } description "LCAF types reference."; } - grouping lcaf-address { + + grouping lisp-address { description - "Group of all the LCAF types."; - leaf lcaf-type { - type lcaf-ref; + "Generic LISP address."; + leaf address-type { + type lisp-address-family-ref; mandatory true; description - "Enumeration of LCAF types."; + "Type of the LISP address."; + } + leaf virtual-network-id { + type instance-id-type; + description + "Virtual Network Identifier (instance-id) of the address."; } choice address { - description "The LCAF addresses."; + description + "Various LISP address types, including IP, MAC, and LCAF."; + + leaf no-address { + when "../../address-type = 'laddr:no-addr-afi'" { + description + "When AFI is 0."; + } + type empty; + description + "No address."; + } + leaf ipv4 { + when "../../address-type = 'laddr:ipv4-afi'" { + description + "When AFI is IPv4."; + } + type inet:ipv4-address; + description + "IPv4 address."; + } + leaf ipv4-prefix { + when "../../address-type = 'laddr:ipv4-prefix-afi'" { + description + "When AFI is IPv4."; + } + type inet:ipv4-prefix; + description + "IPv4 prefix."; + + } + leaf ipv6 { + when "../../address-type = 'laddr:ipv6-afi'" { + description + "When AFI is IPv6."; + } + type inet:ipv6-address; + description + "IPv6 address."; + } + leaf ipv6-prefix { + when "../../address-type = 'laddr:ipv6-prefix-afi'" { + description + "When AFI is IPv6."; + } + type inet:ipv6-prefix; + description + "IPv6 address."; + } + leaf mac { + when "../../address-type = 'laddr:mac-afi'" { + description + "When AFI is MAC."; + } + type yang:mac-address; + description + "MAC address."; + } + leaf distinguished-name { + when "../../address-type = 'laddr:distinguished-name-afi'" { + description + "When AFI is distinguished-name."; + } + type distinguished-name-type; + description + "Distinguished Name address."; + } + leaf as-number { + when "../../address-type = 'laddr:as-number-afi'" { + description + "When AFI is as-number."; + } + type inet:as-number; + description + "AS Number."; + } container null-address { - when "../../lcaf-type = null" { + when "../../address-type = 'null-address-lcaf'" { description "When LCAF type is null."; } description "Null body LCAF type"; leaf address { type empty; description "AFI address."; } } container afi-list { - when "../../lcaf-type = afi-list" { + when "../../address-type = 'afi-list-lcaf'" { description "When LCAF type is AFI-List."; } description "AFI-List LCAF type."; reference "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 #section-4.16.1"; leaf-list address-list { type simple-address; description "List of AFI addresses."; } } container instance-id { - when "../../lcaf-type = instance-id" { + when "../../address-type = 'instance-id-lcaf'" { description "When LCAF type is Instance-ID"; } description "Instance ID LCAF type."; reference "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 #section-4.2"; - leaf instance-id { + leaf iid { type instance-id-type; description "Instance ID value."; } leaf mask-length { type uint8; description "Mask length."; } leaf address { type simple-address; description "AFI address."; } } - container as-number { - when "../../lcaf-type = as-number" { + container as-number-lcaf { + when "../../address-type = 'as-number-lcaf'" { description "When LCAF type is AS-Number."; } description "AS Number LCAF type."; reference "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 #section-4.3"; leaf as { type inet:as-number; description "AS number."; } leaf address { type simple-address; description "AFI address."; } } container application-data { - when "../../lcaf-type = application-data" { + when "../../address-type = 'application-data-lcaf'" { description "When LCAF type is Application Data."; } description "Application Data LCAF type."; reference "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 #section-4.4"; leaf address { type simple-address; @@ -3446,24 +3567,23 @@ description "Low end of remote port range."; } leaf remote-port-high { type inet:port-number; description "High end of remote port range."; } } container geo-coordinates { - when "../../lcaf-type = geo-coordinates" { + when "../../address-type = 'geo-coordinates-lcaf'" { description "When LCAF type is Geo-coordinates."; - } description "Geo-coordinates LCAF type."; reference "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 #section-4.5"; leaf latitude { type bits { bit N { description @@ -3530,21 +3650,21 @@ description "Height relative to sea level in meters."; } leaf address { type simple-address; description "AFI address."; } } container nat-traversal { - when "../../lcaf-type = nat-traversal" { + when "../../address-type = 'nat-traversal-lcaf'" { description "When LCAF type is NAT-Traversal."; } description "NAT-Traversal LCAF type."; reference "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 #section-4.6"; leaf ms-udp-port { type uint16; @@ -3571,33 +3691,39 @@ description "Private ETR RLOC address."; } leaf-list rtr-rlocs { type simple-address; description "List of RTR RLOC addresses."; } } container explicit-locator-path { - when "../../lcaf-type = explicit-locator-path" { + when "../../address-type = 'explicit-locator-path-lcaf'" { description "When LCAF type type is Explicit Locator Path."; } description "Explicit Locator Path LCAF type."; reference "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 #section-4.9"; list hop { - key "address"; + key "hop-id"; + ordered-by user; description "List of locator hops forming the explicit path."; + leaf hop-id { + type string; + description + "Unique identifier for the hop."; + } leaf address { type simple-address; description "AFI address."; } leaf lrs-bits { type bits{ bit lookup { description "Lookup bit."; @@ -3609,109 +3734,89 @@ } bit strict { description "Strict bit."; } } description "Flag bits per hop."; } } + } - container sourc-dest-key { - when "../../lcaf-type = source-dest-key" { + container source-dest-key { + when "../../address-type = 'source-dest-key-lcaf'" { description "When LCAF type type is Source/Dest."; } description "Source/Dest LCAF type."; reference "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 #section-4.11"; leaf source { - type inet:ip-prefix; + type simple-address; description - "Source prefix."; + "Source address."; } leaf dest { - type inet:ip-prefix; - description - "Destination prefix."; - } - } - } - } - grouping lisp-address { - description - "Generic LISP address."; - leaf afi { - type lisp-address-family-ref; - mandatory true; + type simple-address; description - "LISP address family AFI."; + "Destination address."; } - leaf instance-id { - type instance-id-type; - description - "Instance ID of the address."; } - choice address { - leaf ipv4 { - when "../../afi = 'laddr:ipv4'" { + container key-value-address { + when "../../address-type = 'key-value-address-lcaf'" { description - "When AFI is IPv4."; + "When LCAF type type is Key/Value Address."; } - type inet:ipv4-address; description - "IPv4 address."; - } - leaf ipv6 { - when "../../afi = 'laddr:ipv6'" { + "Key/Value Address LCAF type."; + reference + "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 + #section-4.11"; + leaf key { + type simple-address; description - "When AFI is IPv6."; + "Address as Key."; } - type inet:ipv6-address; + leaf value { + type simple-address; description - "IPv6 address."; + "Address as Value."; } - leaf mac { - when "../../afi = 'laddr:mac'" { - description - "When AFI is MAC."; } - type yang:mac-address; + container service-path { + when "../../address-type = 'service-path-lcaf'" { description - "MAC address."; + "When LCAF type service path identifier."; } - leaf distinguished-name { - when "../../afi = 'laddr:distinguished-name'" { + description - "When AFI is distinguished-name."; - } - type distinguished-name; + "Service Path LCAF type."; + reference + "http://tools.ietf.org/html/draft-ermagan-lisp-nsh-00"; + leaf service-path-id { + type service-path-id-type; description - "Distinguished Name address."; + "Service path identifier for the path for NSH header"; } - container lcaf { - when "../../afi = 'laddr:lcaf'" { + leaf service-index { + type uint8; description - "When AFI is LCAF."; + "Service path index for NSH header"; } - uses lcaf-address; - description - "LCAF address."; } - description - "Selection of address type."; } } } + 10. Acknowledgments The tree view and the YANG model shown in this document have been formated with the 'pyang' tool. 11. IANA Considerations This memo includes no request to IANA. @@ -3721,22 +3826,22 @@ 13. Normative References [I-D.ietf-lisp-ddt] Fuller, V., Lewis, D., Ermagan, V., and A. Jain, "LISP Delegated Database Tree", draft-ietf-lisp-ddt-03 (work in progress), April 2015. [I-D.ietf-lisp-lcaf] Farinacci, D., Meyer, D., and J. Snijders, "LISP Canonical - Address Format (LCAF)", draft-ietf-lisp-lcaf-10 (work in - progress), June 2015. + Address Format (LCAF)", draft-ietf-lisp-lcaf-11 (work in + progress), September 2015. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, . [RFC6830] Farinacci, D., Fuller, V., Meyer, D., and D. Lewis, "The Locator/ID Separation Protocol (LISP)", RFC 6830, DOI 10.17487/RFC6830, January 2013, .