--- 1/draft-ietf-lisp-yang-11.txt 2019-09-07 19:13:14.584950074 -0700 +++ 2/draft-ietf-lisp-yang-12.txt 2019-09-07 19:13:14.732953821 -0700 @@ -1,26 +1,26 @@ LISP Working Group V. Ermagan Internet-Draft Google Intended status: Experimental A. Rodriguez-Natal -Expires: September 7, 2019 F. Coras +Expires: March 9, 2020 F. Coras C. Moberg R. Rahman Cisco Systems A. Cabellos-Aparicio Technical University of Catalonia F. Maino Cisco Systems - March 6, 2019 + September 6, 2019 LISP YANG Model - draft-ietf-lisp-yang-11 + draft-ietf-lisp-yang-12 Abstract This document describes a YANG data model to use with the Locator/ID Separation Protocol (LISP). The YANG modules in this document conform to the Network Management Datastore Architecture (NMDA). Status of This Memo @@ -31,21 +31,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 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 September 7, 2019. + This Internet-Draft will expire on March 9, 2020. Copyright Notice Copyright (c) 2019 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 @@ -56,44 +56,44 @@ described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 2. LISP Module . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1. Module Structure . . . . . . . . . . . . . . . . . . . . 3 2.2. Module Definition . . . . . . . . . . . . . . . . . . . . 6 - 3. LISP-ITR Module . . . . . . . . . . . . . . . . . . . . . . . 16 + 3. LISP-ITR Module . . . . . . . . . . . . . . . . . . . . . . . 17 3.1. Module Structure . . . . . . . . . . . . . . . . . . . . 17 - 3.2. Module Definition . . . . . . . . . . . . . . . . . . . . 22 + 3.2. Module Definition . . . . . . . . . . . . . . . . . . . . 23 4. LISP-ETR Module . . . . . . . . . . . . . . . . . . . . . . . 26 4.1. Module Structure . . . . . . . . . . . . . . . . . . . . 26 - 4.2. Module Definition . . . . . . . . . . . . . . . . . . . . 28 - 5. LISP-Map-Server Module . . . . . . . . . . . . . . . . . . . 32 + 4.2. Module Definition . . . . . . . . . . . . . . . . . . . . 29 + 5. LISP-Map-Server Module . . . . . . . . . . . . . . . . . . . 33 5.1. Module Structure . . . . . . . . . . . . . . . . . . . . 33 - 5.2. Module Definition . . . . . . . . . . . . . . . . . . . . 41 - 6. LISP-Map-Resolver Module . . . . . . . . . . . . . . . . . . 47 - 6.1. Module Structure . . . . . . . . . . . . . . . . . . . . 47 + 5.2. Module Definition . . . . . . . . . . . . . . . . . . . . 42 + 6. LISP-Map-Resolver Module . . . . . . . . . . . . . . . . . . 48 + 6.1. Module Structure . . . . . . . . . . . . . . . . . . . . 48 6.2. Module Definition . . . . . . . . . . . . . . . . . . . . 48 - 7. LISP-Address-Types Module . . . . . . . . . . . . . . . . . . 50 - 7.1. Module Definition . . . . . . . . . . . . . . . . . . . . 50 - 7.2. Data Model examples . . . . . . . . . . . . . . . . . . . 64 - 7.2.1. LISP protocol instance . . . . . . . . . . . . . . . 64 - 7.2.2. LISP ITR . . . . . . . . . . . . . . . . . . . . . . 66 - 7.2.3. LISP ETR . . . . . . . . . . . . . . . . . . . . . . 66 - 7.2.4. LISP Map-Server . . . . . . . . . . . . . . . . . . . 69 - 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 70 - 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 70 - 10. Security Considerations . . . . . . . . . . . . . . . . . . . 72 - 11. Normative References . . . . . . . . . . . . . . . . . . . . 75 - Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 76 + 7. LISP-Address-Types Module . . . . . . . . . . . . . . . . . . 51 + 7.1. Module Definition . . . . . . . . . . . . . . . . . . . . 51 + 7.2. Data Model examples . . . . . . . . . . . . . . . . . . . 65 + 7.2.1. LISP protocol instance . . . . . . . . . . . . . . . 65 + 7.2.2. LISP ITR . . . . . . . . . . . . . . . . . . . . . . 67 + 7.2.3. LISP ETR . . . . . . . . . . . . . . . . . . . . . . 67 + 7.2.4. LISP Map-Server . . . . . . . . . . . . . . . . . . . 70 + 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 71 + 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 71 + 10. Security Considerations . . . . . . . . . . . . . . . . . . . 73 + 11. Normative References . . . . . . . . . . . . . . . . . . . . 76 + Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 78 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. @@ -105,43 +105,43 @@ [RFC8174] when, and only when, they appear in all capitals, as shown here. 1.2. Tree Diagrams This document uses the graphical representation of data models defined in [RFC8340]. 2. LISP Module - This module is the base LISP module that is augmented in multiple - models to represent various LISP device roles. + This is the base LISP module. It is further augmented by the LISP + device role specific modules defined elsewhere in this document. 2.1. Module Structure module: ietf-lisp augment /rt:routing/rt:control-plane-protocols /rt:control-plane-protocol: +--rw lisp +--rw locator-sets | +--rw locator-set* [locator-set-name] | +--rw locator-set-name string | +--rw (locator-type)? | +--:(local-interface) | | +--rw interface* [interface-ref] | | +--rw interface-ref if:interface-ref | | +--rw priority? uint8 | | +--rw weight? uint8 | | +--rw multicast-priority? uint8 | | +--rw multicast-weight? uint8 | +--:(general-locator) - | +--rw locator* [id] - | +--rw id string + | +--rw locator* [locator-id] + | +--rw locator-id string | +--rw locator-address | | +--rw address-type | | | lisp-address-family-ref | | +--rw (address)? | | +--:(no-address) | | | +--rw no-address? empty | | +--:(ipv4) | | | +--rw ipv4? | | | inet:ipv4-address | | +--:(ipv4-prefix) @@ -247,52 +247,52 @@ | +--rw site-id? uint64 | +--rw xtr-id? lisp:xtr-id-type +--rw vpns +--rw vpn* [instance-id] +--rw instance-id lcaf:instance-id-type +--rw iid-name -> /ni:network-instances/network-instance/name 2.2. Module Definition - file "ietf-lisp@2019-03-05.yang" + file "ietf-lisp@2019-09-07.yang" module ietf-lisp { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-lisp"; prefix lisp; import ietf-interfaces { prefix if; reference "RFC 8343: A YANG Data Model for Interface Management"; } - // RFC Ed.: replace occurences of XXXX with actual RFC number + // RFC Ed.: replace occurrences of XXXX with actual RFC number // and remove this note import ietf-lisp-address-types { prefix lcaf; reference "RFC XXXX: LISP YANG model"; } import ietf-yang-types { prefix yang; reference "RFC 6991: Common YANG Data Types"; } import ietf-routing { prefix "rt"; reference "RFC 8349: A YANG Data Model for Routing Management (NMDA version)"; } import ietf-network-instance { prefix "ni"; - // RFC Ed.: replace occurences of YYYY with actual RFC number + // RFC Ed.: replace occurrences of YYYY with actual RFC number // of draft-ietf-rtgwg-ni-model and remove this note reference "RFC YYYY: YANG Model for Network Instances"; } organization "IETF LISP (Locator/ID Separation Protocol) Working Group"; contact "WG Web: WG List: @@ -319,21 +319,21 @@ 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 2019-03-05 { + revision 2019-09-07 { description "Initial revision."; reference "https://tools.ietf.org/html/rfc6830"; } /* * Identity definitions */ identity lisp { base "rt:control-plane-protocol"; @@ -359,108 +359,146 @@ identity etr { base lisp-role; description "LISP ETR."; } identity petr { base lisp-role; description "LISP PETR."; } + identity mapping-system { description "Mapping System interface"; } identity single-node-mapping-system { base mapping-system; description "logically singular Map Server"; } - typedef mapping-system-ref { - type identityref { - base mapping-system; - } - description - "Mapping System reference"; - } - typedef lisp-role-ref { - type identityref { - base lisp-role; - } + identity map-reply-act { description - "LISP role reference"; + "Defines the lisp map-cache ACT type"; + + reference + "https://www.iana.org/assignments/lisp-parameters" + + "/lisp-parameters.xhtml#lisp-act-value"; } - typedef map-reply-action { - type enumeration { - enum no-action { - value 0; + identity no-action { + base map-reply-act; description - "Mapping is kept alive and no encapsulation occurs."; + "Mapping is kept alive and no encapsulation + occurs."; } - enum natively-forward { - value 1; + identity natively-forward { + base map-reply-act; description - "Matching packets are not encapsulated or dropped but - natively forwarded."; + "Matching packets are not encapsulated or + dropped but natively forwarded."; } - enum send-map-request { - value 2; + identity send-map-request { + base map-reply-act; description "Matching packets invoke Map-Requests."; } - enum drop { - value 3; + identity drop-no-reason { + base map-reply-act; description "Matching packets are dropped."; } + identity drop-policy-denied { + base map-reply-act; + description + "Matching packets are dropped (due to policy)."; } + identity drop-auth-failure { + base map-reply-act; description - "Defines the lisp map-cache ACT type"; - reference "https://tools.ietf.org/html/rfc6830#section-6.1.4"; + "Matching packets are dropped (due to authentication + failure)."; } - typedef eid-id { - type string; + + identity auth-algorithm { description - "Type encoding of lisp-addresses to be generally used in EID - keyed lists."; + "Base identity for the authentication mechanisms supported by + LISP."; + reference + "https://www.iana.org/assignments/lisp-parameters" + + "/lisp-parameters.xhtml#lisp-key-id-numbers"; } - typedef auth-algorithm-type { - type enumeration { - enum none { - value 0; + identity no-auth-algorithm { + base auth-algorithm; description "No authentication."; } - enum hmac-sha-1-96 { - value 1; + identity hmac-sha-1-96-none { + base auth-algorithm; description - "HMAC-SHA-1-96 (RFC2404) authentication is used."; + "MAC = HMAC-SHA-1-96 (RFC2404), KDF = none"; } - enum hmac-sha-256-128 { - value 2; + identity hmac-sha-256-128-none { + base auth-algorithm; description - "HMAC-SHA-256-128 (RFC4868) authentication is used."; + "MAC = HMAC-SHA-256-128 (RFC4868), KDF = none"; } + identity hmac-sha-256-128-HKDF-SHA2562 { + base auth-algorithm; + description + "MAC = HMAC-SHA-256-128, KDF = HKDF-SHA2562 (RFC4868)"; + } + + typedef mapping-system-ref { + type identityref { + base mapping-system; } description - "Enumeration of the authentication mechanisms supported by - LISP."; - reference - "https://tools.ietf.org/html/rfc6830#section-6.1.6"; + "Mapping System reference"; + } + + typedef lisp-role-ref { + type identityref { + base lisp-role; + } + description + "LISP role reference"; + } + typedef map-reply-action { + type identityref { + base map-reply-act; + } + description + "Map-Reply action reference"; + } + typedef eid-id { + type string { + pattern '[a-zA-Z0-9\-_.:]*'; + } + description + "Type encoding of lisp-addresses to be generally used in EID + keyed lists."; + + } + typedef auth-algorithm-type { + type identityref { + base auth-algorithm; + } + description + "Authentication algorithm reference"; } typedef xtr-id-type { type binary { length "16"; } description - "128 bit xTR identifier."; + "128-bit xTR identifier."; } grouping locator-properties { description "Properties of a RLOC"; leaf priority { type uint8; description "Locator priority."; } @@ -478,26 +516,28 @@ type uint8; description "Locator's multicast weight"; } } grouping locators-grouping { description "Grouping that defines a list of LISP locators."; list locator { - key "id"; + key "locator-id"; description "List of routing locators"; - leaf id { + + leaf locator-id { type string { length "1..64"; + pattern '[a-zA-Z0-9\-_.:]*'; } description "Locator id"; } container locator-address { uses lcaf:lisp-address; description "The locator address provided in LISP canonincal address format."; } @@ -528,21 +568,21 @@ container eid { uses lcaf:lisp-address; description "End-host Identifier (EID) to be mapped to a list of locators"; } leaf time-to-live { type uint32; units minutes; description - "Mapping validity period in minutes."; + "Mapping validity period in minutes (as per RF6830)."; } leaf creation-time { type yang:date-and-time; config false; description "Time when the mapping was created."; } leaf authoritative { type bits { bit A { @@ -594,44 +635,46 @@ + "/lisp:vpns/lisp:vpn" + "/lisp:instance-id"; } description "VPN identifier."; } container mappings { description "Mappings within the VPN."; list mapping { - key "id"; + key "eid-id"; description "List of EID to RLOCs mappings."; - leaf id { + leaf eid-id { type eid-id; description "Id that uniquely identifies a mapping."; } uses mapping; } } } } grouping auth-key { description "Grouping that defines authentication keys."; container authentication-keys { description "Multiple authentication keys can be defined."; list authentication-key { key "auth-key-id"; description "Authentication key parameters."; leaf auth-key-id { - type string; + type string { + pattern '[a-zA-Z0-9\-_.:]*'; + } description "Identifier of the authentication key."; } leaf-list auth-algorithm-id { type lisp:auth-algorithm-type; description "Authentication algorithm used with the key."; } leaf auth-key-value { type string; @@ -660,38 +703,40 @@ description "Container that defines a named locator set which can be referenced elsewhere."; list locator-set { key "locator-set-name"; description "Multiple locator sets can be defined."; leaf locator-set-name { type string { length "1..64"; + pattern '[a-zA-Z0-9\-_.:]*'; } description "Locator set name"; } choice locator-type { description "Locator sets can be based on local interfaces, or general locators."; case local-interface { uses local-locators-grouping; description "List of locators in this set based on local interfaces."; } case general-locator { uses locators-grouping; description - "List of locators in this set based on lisp-address."; + "List of locators in this set based on + lisp-address."; } } } } list lisp-role { key lisp-role-type; description "List of lisp device roles such as MS, MR, ITR, PITR, ETR or PETR."; @@ -731,26 +776,27 @@ } description "VPNs"; list vpn { key instance-id; unique "iid-name"; description "List of VPNs"; leaf instance-id { type lcaf:instance-id-type; description - "VPN identifier. The value 0 for instance-id must be used - for the default VRF."; + "VPN identifier. The value 0 for instance-id must be + used for the default VRF."; } leaf iid-name { type leafref { - path "/ni:network-instances/ni:network-instance/ni:name"; + path "/ni:network-instances/ni:network-instance" + + "/ni:name"; } mandatory true; description "Name of VPN (e.g. VRF) to which an instance-id is bound. Each instance-id is bound to a different VPN"; } } } } } @@ -774,27 +820,24 @@ | +--rw retries-interval? uint16 +--rw itr-rlocs? leafref +--rw map-resolvers | +--rw map-resolver* inet:ip-address +--rw proxy-etrs | +--rw proxy-etr-address* inet:ip-address +--rw map-cache +--ro size? uint32 +--ro limit? uint32 +--rw vpn* [instance-id] - +--rw instance-id - | -> /rt:routing/control-plane-protocols - | /control-plane-protocol/lisp:lisp/vpns - | /vpn/instance-id + +--rw instance-id leafref +--rw mappings - +--rw mapping* [id] - +--rw id eid-id + +--rw mapping* [eid-id] + +--rw eid-id eid-id +--rw eid | +--rw address-type | | lisp-address-family-ref | +--rw (address)? | +--:(no-address) | | +--rw no-address? empty | +--:(ipv4) | | +--rw ipv4? | | inet:ipv4-address | +--:(ipv4-prefix) @@ -890,22 +933,22 @@ | +--rw service-index? uint8 +--rw time-to-live? uint32 +--ro creation-time? yang:date-and-time +--rw authoritative? bits +--rw static? boolean +--rw (locator-list)? +--:(negative-mapping) | +--rw map-reply-action? map-reply-action +--:(positive-mapping) +--rw rlocs - +--rw locator* [id] - +--rw id string + +--rw locator* [locator-id] + +--rw locator-id string +--rw locator-address | +--rw address-type | | lisp-address-family-ref | +--rw (address)? | +--:(no-address) | | +--rw no-address? | | empty | +--:(ipv4) | | +--rw ipv4? | | inet:ipv4-address @@ -1033,21 +1076,21 @@ 3.2. Module Definition file "ietf-lisp-itr@2019-02-23.yang" module ietf-lisp-itr { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-itr"; prefix lisp-itr; - // RFC Ed.: replace occurences of XXXX with actual RFC number + // RFC Ed.: replace occurrences of XXXX with actual RFC number // and remove this note import ietf-lisp { prefix lisp; reference "RFC XXXX: LISP YANG model"; } import ietf-inet-types { prefix inet; reference "RFC 6991: Common YANG Data Types"; } import ietf-routing { @@ -1099,21 +1142,21 @@ "https://tools.ietf.org/html/rfc6830"; } augment "/rt:routing/rt:control-plane-protocols" + "/rt:control-plane-protocol/lisp:lisp" { when "lisp:lisp-role/lisp:lisp-role-type = 'lisp:itr' or lisp:lisp-role/lisp:lisp-role-type = 'lisp:pitr'" { description "Augment is valid when LISP role type is ITR or PITR."; } description - "This augments LISP devices list with (P)ITR specific + "This augments the LISP devices list with (P)ITR specific parameters."; container itr { presence "LISP (P)ITR operation enabled"; description "ITR parameters"; container rloc-probing { presence "RLOC probing active"; description "RLOC-probing parameters"; leaf interval { @@ -1126,21 +1169,21 @@ type uint8; description "Number of retries for sending the probes"; } leaf retries-interval { type uint16; units "seconds"; description "Interval in seconds between retries when sending probes. The action taken if all retries fail to receive is - impementation specific."; + implementation specific."; } } leaf itr-rlocs { type leafref { path "/rt:routing/rt:control-plane-protocols" + "/rt:control-plane-protocol/lisp:lisp" + "/lisp:locator-sets/lisp:locator-set" + "/lisp:locator-set-name"; } description @@ -1204,31 +1246,29 @@ module: ietf-lisp-etr augment /rt:routing/rt:control-plane-protocols /rt:control-plane-protocol/lisp:lisp: +--rw etr! +--rw map-servers | +--rw map-server* [ms-address] | +--rw ms-address inet:ip-address | +--rw authentication-keys | +--rw authentication-key* [auth-key-id] | +--rw auth-key-id string - | +--rw auth-algorithm-id* lisp:auth-algorithm-type + | +--rw auth-algorithm-id* + | | lisp:auth-algorithm-type | +--rw auth-key-value? string +--rw local-eids +--rw vpn* [instance-id] - +--rw instance-id - | -> /rt:routing/control-plane-protocols - | /control-plane-protocol/lisp:lisp/vpns - | /vpn/instance-id + +--rw instance-id leafref +--rw eids - +--rw local-eid* [id] - +--rw id lisp:eid-id + +--rw local-eid* [eid-id] + +--rw eid-id lisp:eid-id +--rw eid-address | +--rw address-type | | lisp-address-family-ref | +--rw (address)? | +--:(no-address) | | +--rw no-address? empty | +--:(ipv4) | | +--rw ipv4? | | inet:ipv4-address | +--:(ipv4-prefix) @@ -1316,39 +1356,36 @@ | +--:(key-value-address) | | +--rw key-value-address | | +--rw key? simple-address | | +--rw value? simple-address | +--:(service-path) | +--rw service-path | +--rw service-path-id? | | service-path-id-type | +--rw service-index? uint8 +--rw rlocs? leafref - | -> /rt:routing/control-plane-protocols - | /control-plane-protocol/lisp:lisp - | /locator-sets - | /locator-set/locator-set-name +--rw record-ttl? uint32 +--rw want-map-notify? boolean +--rw proxy-reply? boolean +--rw registration-interval? uint16 4.2. Module Definition - file "ietf-lisp-etr@2019-02-23.yang" + file "ietf-lisp-etr@2019-09-07.yang" module ietf-lisp-etr { yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-etr"; prefix lisp-etr; - // RFC Ed.: replace occurences of XXXX with actual RFC number + // RFC Ed.: replace occurrences of XXXX with actual RFC number // and remove this note import ietf-lisp { prefix lisp; reference "RFC XXXX: LISP YANG model"; } import ietf-lisp-address-types { prefix lcaf; reference "RFC XXXX: LISP YANG model"; } import ietf-inet-types { @@ -1362,21 +1399,21 @@ (NMDA version)"; } organization "IETF LISP (Locator/ID Separation Protocol) Working Group"; contact "WG Web: WG List: Editor: Vina Ermagan - + Editor: Alberto Rodriguez-Natal Editor: Reshad Rahman "; description "This YANG module defines the generic parameters for a LISP ETR. The module can be extended by vendors to define vendor-specific parameters and policies. @@ -1390,35 +1427,35 @@ 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 2019-02-23 { + revision 2019-09-07 { description "Initial revision."; reference "https://tools.ietf.org/html/rfc6830"; } augment "/rt:routing/rt:control-plane-protocols" + "/rt:control-plane-protocol/lisp:lisp" { when "lisp:lisp-role/lisp:lisp-role-type = 'lisp:etr' or lisp:lisp-role/lisp:lisp-role-type = 'lisp:petr'" { description "Augment is valid when LISP device type is (P)ETR."; } description - "This augments LISP devices list with (P)ETR specific + "This augments the LISP devices list with (P)ETR specific parameters."; container etr { presence "LISP (P)ETR operation enabled"; description "(P)ETR parameters."; container map-servers { when "../../lisp:lisp-role/lisp:lisp-role-type = 'lisp:etr'" { description "Container exists only when LISP device type is ETR."; @@ -1457,24 +1493,24 @@ + "/lisp:vpns/lisp:vpn" + "/lisp:instance-id"; } description "VPN identifier."; } container eids { description "EIDs served by the ETR."; list local-eid { - key "id"; + key "eid-id"; description "List of local EIDs."; - leaf id { + leaf eid-id { type lisp:eid-id; description "Unique id of local EID."; } container eid-address { uses lcaf:lisp-address; description "EID address in generic LISP address format."; } leaf rlocs { @@ -1484,43 +1520,44 @@ + "/lisp:locator-sets/lisp:locator-set" + "/lisp:locator-set-name"; } description "Locator set mapped to this local EID."; } leaf record-ttl { type uint32; units minutes; description - "Validity period of the EID to RLOCs mapping provided - in Map-Replies."; + "Validity period of the EID to RLOCs mapping + provided in Map-Replies."; } leaf want-map-notify { type boolean; default "true"; description - "Flag which if set in a Map-Register requests that a - Map-Notify be sent in response."; + "Flag which if set in a Map-Register requests that + a Map-Notify be sent in response."; + } leaf proxy-reply { type boolean; default "false"; description - "Flag which if set in a Map-Register requests that the - Map-Server proxy Map-Replies for the ETR."; + "Flag which if set in a Map-Register requests that + the Map-Server proxy Map-Replies for the ETR."; } leaf registration-interval { type uint16; units "seconds"; default "60"; description - "Interval between consecutive Map-Register messages."; + "Interval between consecutive Map-Registers."; } } } } } } } } @@ -1727,35 +1764,43 @@ | | | | | inet:port-number | | | | +--rw local-port-high? | | | | | inet:port-number | | | | +--rw remote-port-low? | | | | | inet:port-number | | | | +--rw remote-port-high? | | | | inet:port-number | | | +--:(geo-coordinates) | | | | +--rw geo-coordinates | | | | +--rw latitude? bits - | | | | +--rw latitude-degrees? uint8 - | | | | +--rw latitude-minutes? uint8 - | | | | +--rw latitude-seconds? uint8 + | | | | +--rw latitude-degrees? + | | | | | uint8 + | | | | +--rw latitude-minutes? + | | | | | uint8 + | | | | +--rw latitude-seconds? + | | | | | uint8 | | | | +--rw longitude? bits | | | | +--rw longitude-degrees? | | | | | uint16 - | | | | +--rw longitude-minutes? uint8 - | | | | +--rw longitude-seconds? uint8 - | | | | +--rw altitude? int32 + | | | | +--rw longitude-minutes? + | | | | | uint8 + | | | | +--rw longitude-seconds? + | | | | | uint8 + | | | | +--rw altitude? + | | | | | int32 | | | | +--rw address? | | | | simple-address | | | +--:(nat-traversal) | | | | +--rw nat-traversal - | | | | +--rw ms-udp-port? uint16 - | | | | +--rw etr-udp-port? uint16 + | | | | +--rw ms-udp-port? + | | | | | uint16 + | | | | +--rw etr-udp-port? + | | | | | uint16 | | | | +--rw global-etr-rloc? | | | | | simple-address | | | | +--rw ms-rloc? | | | | | simple-address | | | | +--rw private-etr-rloc? | | | | | simple-address | | | | +--rw rtr-rlocs* | | | | simple-address | | | +--:(explicit-locator-path) | | | | +--rw explicit-locator-path @@ -1781,22 +1826,22 @@ | | +--ro creation-time? | | | yang:date-and-time | | +--rw authoritative? bits | | +--rw static? boolean | | +--rw (locator-list)? | | +--:(negative-mapping) | | | +--rw map-reply-action? | | | map-reply-action | | +--:(positive-mapping) | | +--rw rlocs - | | +--rw locator* [id] - | | +--rw id + | | +--rw locator* [locator-id] + | | +--rw locator-id | | | string | | +--rw locator-address | | | +--rw address-type | | | | lisp-address-family-ref | | | +--rw (address)? | | | +--:(no-address) | | | | +--rw no-address? | | | | empty | | | +--:(ipv4) | | | | +--rw ipv4? @@ -1954,21 +1999,21 @@ 5.2. Module Definition file "ietf-lisp-mapserver@2019-03-05.yang" module ietf-lisp-mapserver { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-mapserver"; prefix lisp-ms; - // RFC Ed.: replace occurences of XXXX with actual RFC number + // RFC Ed.: replace occurrences of XXXX with actual RFC number // and remove this note import ietf-lisp { prefix lisp; reference "RFC XXXX: LISP YANG model"; } import ietf-lisp-address-types { prefix lcaf; reference "RFC XXXX: LISP YANG model"; } import ietf-yang-types { @@ -2066,22 +2114,22 @@ } } augment "/rt:routing/rt:control-plane-protocols" + "/rt:control-plane-protocol/lisp:lisp" { when "lisp:lisp-role/lisp:lisp-role-type = 'lisp-ms:ms'" { description "Augment is valid when LISP device type is Map-Server."; } description - "This augments LISP devices list with Map-Server specific - parameters."; + "This augments the LISP devices list with Map-Server + specific parameters."; container map-server { presence "LISP Map-Server operation enabled"; description "Map-Server parameters."; container sites{ description "Sites to accept registrations from."; list site { key site-id; description @@ -2148,22 +2196,22 @@ units "seconds"; default "180"; //3 times the mapregister int description "Time before mapping is expired if no new registrations are received."; } leaf first-registration-time { type yang:date-and-time; config false; description - "Time at which the first registration for this EID - was received"; + "Time at which the first registration for this + EID was received"; } leaf last-registration-time { type yang:date-and-time; config false; description "Time at which the last registration for this EID was received"; } container mapping-records { description @@ -2250,22 +2298,21 @@ 6.2. Module Definition file "ietf-lisp-mapresolver@2019-02-23.yang" module ietf-lisp-mapresolver { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-mapresolver"; prefix lisp-mr; - - // RFC Ed.: replace occurences of XXXX with actual RFC number + // RFC Ed.: replace occurrences of XXXX with actual RFC number // and remove this note import ietf-lisp { prefix lisp; reference "RFC XXXX: LISP YANG model"; } import ietf-inet-types { prefix inet; reference "RFC 6991: Common YANG Data Types"; } import ietf-routing { @@ -2322,51 +2370,52 @@ "LISP Map-Resolver."; } augment "/rt:routing/rt:control-plane-protocols" + "/rt:control-plane-protocol/lisp:lisp" { when "lisp:lisp-role/lisp:lisp-role-type = 'lisp-mr:mr'" { description "Augment is valid when LISP device type is Map-Resolver."; } description - "This augments LISP devices list with Map-Resolver specific - parameters."; + "This augments the LISP devices list with Map-Resolver + specific parameters."; container map-resolver { presence "LISP Map-Resolver operation enabled"; description "Map-Resolver parameters."; leaf mapping-system-type { type lisp:mapping-system-ref; description "A reference to the mapping system"; } leaf ms-address { - when "../mapping-system-type='lisp:single-node-mapping-system'"; + when "../mapping-system-type=" + + "'lisp:single-node-mapping-system'"; type inet:ip-address; description "address to reach the Map Server when " + "lisp-mr:single-node-mapping-system is being used."; } } } } 7. LISP-Address-Types Module This module captures the various LISP address types, and is an essential building block used in other LISP modules. 7.1. Module Definition - file "ietf-lisp-address-types@2019-02-23.yang" + file "ietf-lisp-address-types@2019-09-07.yang" module ietf-lisp-address-types { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-address-types"; prefix laddr; import ietf-inet-types { prefix inet; reference "RFC 6991: Common YANG Data Types"; @@ -2406,21 +2455,21 @@ (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. "; // RFC Ed.: replace XXXX with actual RFC number and remove // this note reference "RFC XXXX"; - revision 2019-02-23 { + revision 2019-09-07 { description "Initial revision."; reference "RC8060: LISP Canonical Address Format (LCAF)"; } identity lisp-address-family { description "Base identity from which identities describing LISP address families are derived."; } @@ -2815,31 +2863,33 @@ description "High end of remote port range."; } } container geo-coordinates { when "../address-type = 'laddr:geo-coordinates-lcaf'" { description "When LCAF type is Geo-coordinates."; } description - "Geo-coordinates LCAF type."; + "Geo-coordinates LCAF type. Coordinates are specified + using the WGS 84 (World Geodetic System 1984) reference + coordinate system"; reference "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 #section-4.5"; - leaf latitude { type bits { bit N { description "Latitude bit."; } + } description "Bit that selects between North and South latitude."; } leaf latitude-degrees { type uint8 { range "0 .. 90"; } description "Degrees of latitude."; @@ -2952,20 +3004,21 @@ "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 #section-4.9"; list hop { key "hop-id"; ordered-by user; description "List of locator hops forming the explicit path."; leaf hop-id { type string { length "1..64"; + pattern '[a-zA-Z0-9\-_.:]*'; } description "Unique identifier for the hop."; } leaf address { type simple-address; description "AFI address."; } leaf lrs-bits { @@ -3248,21 +3300,22 @@ 7.2.4. LISP Map-Server The following is an example configuration for Map-Server functionality under "LISP1". There are 2 mappings configured. - + + lisp:lisp LISP1 1000 1 laddr:ipv6-prefix-afi - + 2001:db8:400:0:100::/80 2000 1