draft-ietf-lisp-yang-11.txt   draft-ietf-lisp-yang-12.txt 
LISP Working Group V. Ermagan LISP Working Group V. Ermagan
Internet-Draft Google Internet-Draft Google
Intended status: Experimental A. Rodriguez-Natal Intended status: Experimental A. Rodriguez-Natal
Expires: September 7, 2019 F. Coras Expires: March 9, 2020 F. Coras
C. Moberg C. Moberg
R. Rahman R. Rahman
Cisco Systems Cisco Systems
A. Cabellos-Aparicio A. Cabellos-Aparicio
Technical University of Catalonia Technical University of Catalonia
F. Maino F. Maino
Cisco Systems Cisco Systems
March 6, 2019 September 6, 2019
LISP YANG Model LISP YANG Model
draft-ietf-lisp-yang-11 draft-ietf-lisp-yang-12
Abstract Abstract
This document describes a YANG data model to use with the Locator/ID This document describes a YANG data model to use with the Locator/ID
Separation Protocol (LISP). Separation Protocol (LISP).
The YANG modules in this document conform to the Network Management The YANG modules in this document conform to the Network Management
Datastore Architecture (NMDA). Datastore Architecture (NMDA).
Status of This Memo Status of This Memo
skipping to change at page 1, line 42 skipping to change at page 1, line 42
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." 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 Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2019 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 23 skipping to change at page 2, line 23
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3
1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3
2. LISP Module . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. LISP Module . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1. Module Structure . . . . . . . . . . . . . . . . . . . . 3 2.1. Module Structure . . . . . . . . . . . . . . . . . . . . 3
2.2. Module Definition . . . . . . . . . . . . . . . . . . . . 6 2.2. Module Definition . . . . . . . . . . . . . . . . . . . . 6
3. LISP-ITR Module . . . . . . . . . . . . . . . . . . . . . . . 16 3. LISP-ITR Module . . . . . . . . . . . . . . . . . . . . . . . 17
3.1. Module Structure . . . . . . . . . . . . . . . . . . . . 17 3.1. Module Structure . . . . . . . . . . . . . . . . . . . . 17
3.2. Module Definition . . . . . . . . . . . . . . . . . . . . 22 3.2. Module Definition . . . . . . . . . . . . . . . . . . . . 23
4. LISP-ETR Module . . . . . . . . . . . . . . . . . . . . . . . 26 4. LISP-ETR Module . . . . . . . . . . . . . . . . . . . . . . . 26
4.1. Module Structure . . . . . . . . . . . . . . . . . . . . 26 4.1. Module Structure . . . . . . . . . . . . . . . . . . . . 26
4.2. Module Definition . . . . . . . . . . . . . . . . . . . . 28 4.2. Module Definition . . . . . . . . . . . . . . . . . . . . 29
5. LISP-Map-Server Module . . . . . . . . . . . . . . . . . . . 32 5. LISP-Map-Server Module . . . . . . . . . . . . . . . . . . . 33
5.1. Module Structure . . . . . . . . . . . . . . . . . . . . 33 5.1. Module Structure . . . . . . . . . . . . . . . . . . . . 33
5.2. Module Definition . . . . . . . . . . . . . . . . . . . . 41 5.2. Module Definition . . . . . . . . . . . . . . . . . . . . 42
6. LISP-Map-Resolver Module . . . . . . . . . . . . . . . . . . 47 6. LISP-Map-Resolver Module . . . . . . . . . . . . . . . . . . 48
6.1. Module Structure . . . . . . . . . . . . . . . . . . . . 47 6.1. Module Structure . . . . . . . . . . . . . . . . . . . . 48
6.2. Module Definition . . . . . . . . . . . . . . . . . . . . 48 6.2. Module Definition . . . . . . . . . . . . . . . . . . . . 48
7. LISP-Address-Types Module . . . . . . . . . . . . . . . . . . 50 7. LISP-Address-Types Module . . . . . . . . . . . . . . . . . . 51
7.1. Module Definition . . . . . . . . . . . . . . . . . . . . 50 7.1. Module Definition . . . . . . . . . . . . . . . . . . . . 51
7.2. Data Model examples . . . . . . . . . . . . . . . . . . . 64 7.2. Data Model examples . . . . . . . . . . . . . . . . . . . 65
7.2.1. LISP protocol instance . . . . . . . . . . . . . . . 64 7.2.1. LISP protocol instance . . . . . . . . . . . . . . . 65
7.2.2. LISP ITR . . . . . . . . . . . . . . . . . . . . . . 66 7.2.2. LISP ITR . . . . . . . . . . . . . . . . . . . . . . 67
7.2.3. LISP ETR . . . . . . . . . . . . . . . . . . . . . . 66 7.2.3. LISP ETR . . . . . . . . . . . . . . . . . . . . . . 67
7.2.4. LISP Map-Server . . . . . . . . . . . . . . . . . . . 69 7.2.4. LISP Map-Server . . . . . . . . . . . . . . . . . . . 70
8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 70 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 71
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 70 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 71
10. Security Considerations . . . . . . . . . . . . . . . . . . . 72 10. Security Considerations . . . . . . . . . . . . . . . . . . . 73
11. Normative References . . . . . . . . . . . . . . . . . . . . 75 11. Normative References . . . . . . . . . . . . . . . . . . . . 76
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 76 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 78
1. Introduction 1. Introduction
The Locator/ID Separation Protocol (LISP) defines several network The Locator/ID Separation Protocol (LISP) defines several network
elements subject to be configured. This document presents the YANG elements subject to be configured. This document presents the YANG
data models required for basic configuration of all major LISP data models required for basic configuration of all major LISP
[RFC6830] elements. The models also capture some essential [RFC6830] elements. The models also capture some essential
operational data elements as well. operational data elements as well.
skipping to change at page 3, line 23 skipping to change at page 3, line 23
[RFC8174] when, and only when, they appear in all capitals, as shown [RFC8174] when, and only when, they appear in all capitals, as shown
here. here.
1.2. Tree Diagrams 1.2. Tree Diagrams
This document uses the graphical representation of data models This document uses the graphical representation of data models
defined in [RFC8340]. defined in [RFC8340].
2. LISP Module 2. LISP Module
This module is the base LISP module that is augmented in multiple This is the base LISP module. It is further augmented by the LISP
models to represent various LISP device roles. device role specific modules defined elsewhere in this document.
2.1. Module Structure 2.1. Module Structure
module: ietf-lisp module: ietf-lisp
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol: /rt:control-plane-protocol:
+--rw lisp +--rw lisp
+--rw locator-sets +--rw locator-sets
| +--rw locator-set* [locator-set-name] | +--rw locator-set* [locator-set-name]
| +--rw locator-set-name string | +--rw locator-set-name string
| +--rw (locator-type)? | +--rw (locator-type)?
| +--:(local-interface) | +--:(local-interface)
| | +--rw interface* [interface-ref] | | +--rw interface* [interface-ref]
| | +--rw interface-ref if:interface-ref | | +--rw interface-ref if:interface-ref
| | +--rw priority? uint8 | | +--rw priority? uint8
| | +--rw weight? uint8 | | +--rw weight? uint8
| | +--rw multicast-priority? uint8 | | +--rw multicast-priority? uint8
| | +--rw multicast-weight? uint8 | | +--rw multicast-weight? uint8
| +--:(general-locator) | +--:(general-locator)
| +--rw locator* [id] | +--rw locator* [locator-id]
| +--rw id string | +--rw locator-id string
| +--rw locator-address | +--rw locator-address
| | +--rw address-type | | +--rw address-type
| | | lisp-address-family-ref | | | lisp-address-family-ref
| | +--rw (address)? | | +--rw (address)?
| | +--:(no-address) | | +--:(no-address)
| | | +--rw no-address? empty | | | +--rw no-address? empty
| | +--:(ipv4) | | +--:(ipv4)
| | | +--rw ipv4? | | | +--rw ipv4?
| | | inet:ipv4-address | | | inet:ipv4-address
| | +--:(ipv4-prefix) | | +--:(ipv4-prefix)
skipping to change at page 6, line 20 skipping to change at page 6, line 20
| +--rw site-id? uint64 | +--rw site-id? uint64
| +--rw xtr-id? lisp:xtr-id-type | +--rw xtr-id? lisp:xtr-id-type
+--rw vpns +--rw vpns
+--rw vpn* [instance-id] +--rw vpn* [instance-id]
+--rw instance-id lcaf:instance-id-type +--rw instance-id lcaf:instance-id-type
+--rw iid-name +--rw iid-name
-> /ni:network-instances/network-instance/name -> /ni:network-instances/network-instance/name
2.2. Module Definition 2.2. Module Definition
<CODE BEGINS> file "ietf-lisp@2019-03-05.yang" <CODE BEGINS> file "ietf-lisp@2019-09-07.yang"
module ietf-lisp { module ietf-lisp {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-lisp"; namespace "urn:ietf:params:xml:ns:yang:ietf-lisp";
prefix lisp; prefix lisp;
import ietf-interfaces { import ietf-interfaces {
prefix if; prefix if;
reference reference
"RFC 8343: A YANG Data Model for Interface Management"; "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 // and remove this note
import ietf-lisp-address-types { import ietf-lisp-address-types {
prefix lcaf; prefix lcaf;
reference "RFC XXXX: LISP YANG model"; reference "RFC XXXX: LISP YANG model";
} }
import ietf-yang-types { import ietf-yang-types {
prefix yang; prefix yang;
reference "RFC 6991: Common YANG Data Types"; reference "RFC 6991: Common YANG Data Types";
} }
import ietf-routing { import ietf-routing {
prefix "rt"; prefix "rt";
reference reference
"RFC 8349: A YANG Data Model for Routing Management "RFC 8349: A YANG Data Model for Routing Management
(NMDA version)"; (NMDA version)";
} }
import ietf-network-instance { import ietf-network-instance {
prefix "ni"; 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 // of draft-ietf-rtgwg-ni-model and remove this note
reference reference
"RFC YYYY: YANG Model for Network Instances"; "RFC YYYY: YANG Model for Network Instances";
} }
organization organization
"IETF LISP (Locator/ID Separation Protocol) Working Group"; "IETF LISP (Locator/ID Separation Protocol) Working Group";
contact contact
"WG Web: <http://tools.ietf.org/wg/lisp/> "WG Web: <http://tools.ietf.org/wg/lisp/>
WG List: <mailto:lisp@ietf.org> WG List: <mailto:lisp@ietf.org>
Editor: Vina Ermagan Editor: Vina Ermagan
<mailto:ermagan@gmail.com> <mailto:ermagan@gmail.com>
Editor: Alberto Rodriguez-Natal Editor: Alberto Rodriguez-Natal
<mailto:natal@cisco.com> <mailto:natal@cisco.com>
Editor: Reshad Rahman Editor: Reshad Rahman
<mailto:rrahman@cisco.com>"; <mailto:rrahman@cisco.com>";
description description
"This YANG module defines the generic parameters for LISP. "This YANG module defines the generic parameters for LISP.
The module can be extended by vendors to define vendor-specific The module can be extended by vendors to define vendor-specific
LISP parameters and policies. LISP parameters and policies.
Copyright (c) 2018 IETF Trust and the persons identified as Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices. the RFC itself for full legal notices.
"; ";
reference "RFC XXXX"; reference "RFC XXXX";
revision 2019-03-05 { revision 2019-09-07 {
description description
"Initial revision."; "Initial revision.";
reference reference
"https://tools.ietf.org/html/rfc6830"; "https://tools.ietf.org/html/rfc6830";
} }
/* /*
* Identity definitions * Identity definitions
*/ */
identity lisp { identity lisp {
base "rt:control-plane-protocol"; base "rt:control-plane-protocol";
description "LISP protocol."; description "LISP protocol.";
reference reference
"RFC 6830: The Locator/ID Separation Protocol (LISP)."; "RFC 6830: The Locator/ID Separation Protocol (LISP).";
} }
identity lisp-role { identity lisp-role {
description description
"LISP router role."; "LISP router role.";
} }
identity itr { identity itr {
base lisp-role; base lisp-role;
description description
"LISP ITR."; "LISP ITR.";
} }
identity pitr { identity pitr {
base lisp-role; base lisp-role;
description description
"LISP PITR."; "LISP PITR.";
} }
identity etr { identity etr {
base lisp-role; base lisp-role;
description description
"LISP ETR."; "LISP ETR.";
} }
identity petr { identity petr {
base lisp-role; base lisp-role;
description description
"LISP PETR."; "LISP PETR.";
} }
identity mapping-system {
description identity mapping-system {
"Mapping System interface"; description
} "Mapping System interface";
identity single-node-mapping-system { }
base mapping-system; identity single-node-mapping-system {
description
"logically singular Map Server";
}
typedef mapping-system-ref {
type identityref {
base mapping-system; base mapping-system;
description
"logically singular Map Server";
} }
description
"Mapping System reference";
}
typedef lisp-role-ref { identity map-reply-act {
type identityref { description
base lisp-role; "Defines the lisp map-cache ACT type";
reference
"https://www.iana.org/assignments/lisp-parameters"
+ "/lisp-parameters.xhtml#lisp-act-value";
} }
description identity no-action {
"LISP role reference"; base map-reply-act;
} description
typedef map-reply-action { "Mapping is kept alive and no encapsulation
type enumeration { occurs.";
enum no-action {
value 0;
description
"Mapping is kept alive and no encapsulation occurs.";
}
enum natively-forward {
value 1;
description
"Matching packets are not encapsulated or dropped but
natively forwarded.";
}
enum send-map-request {
value 2;
description
"Matching packets invoke Map-Requests.";
}
enum drop {
value 3;
description
"Matching packets are dropped.";
}
} }
description identity natively-forward {
"Defines the lisp map-cache ACT type"; base map-reply-act;
reference "https://tools.ietf.org/html/rfc6830#section-6.1.4"; description
} "Matching packets are not encapsulated or
typedef eid-id { dropped but natively forwarded.";
type string;
description
"Type encoding of lisp-addresses to be generally used in EID
keyed lists.";
}
typedef auth-algorithm-type {
type enumeration {
enum none {
value 0;
description
"No authentication.";
}
enum hmac-sha-1-96 {
value 1;
description
"HMAC-SHA-1-96 (RFC2404) authentication is used.";
}
enum hmac-sha-256-128 {
value 2;
description
"HMAC-SHA-256-128 (RFC4868) authentication is used.";
}
} }
description identity send-map-request {
"Enumeration of the authentication mechanisms supported by base map-reply-act;
LISP."; description
reference "Matching packets invoke Map-Requests.";
"https://tools.ietf.org/html/rfc6830#section-6.1.6"; }
} identity drop-no-reason {
typedef xtr-id-type { base map-reply-act;
type binary { description
length "16"; "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
"Matching packets are dropped (due to authentication
failure).";
} }
description
"128 bit xTR identifier.";
}
grouping locator-properties { identity auth-algorithm {
description
"Properties of a RLOC";
leaf priority {
type uint8;
description description
"Locator priority."; "Base identity for the authentication mechanisms supported by
LISP.";
reference
"https://www.iana.org/assignments/lisp-parameters"
+ "/lisp-parameters.xhtml#lisp-key-id-numbers";
} }
leaf weight { identity no-auth-algorithm {
type uint8; base auth-algorithm;
description description
"Locator weight."; "No authentication.";
} }
leaf multicast-priority { identity hmac-sha-1-96-none {
type uint8; base auth-algorithm;
description description
"Locator's multicast priority"; "MAC = HMAC-SHA-1-96 (RFC2404), KDF = none";
} }
leaf multicast-weight { identity hmac-sha-256-128-none {
type uint8; base auth-algorithm;
description description
"Locator's multicast weight"; "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)";
} }
}
grouping locators-grouping { typedef mapping-system-ref {
description type identityref {
"Grouping that defines a list of LISP locators."; base mapping-system;
list locator {
key "id";
description
"List of routing locators";
leaf id {
type string {
length "1..64";
}
description
"Locator id";
}
container locator-address {
uses lcaf:lisp-address;
description
"The locator address provided in LISP canonincal
address format.";
}
uses locator-properties;
} }
}
grouping local-locators-grouping {
description
"Grouping that defines a list of LISP locators.";
list interface {
key "interface-ref";
description description
"The address type of the locator"; "Mapping System reference";
leaf interface-ref {
type if:interface-ref;
description
"The name of the interface supporting the locator.";
}
uses locator-properties;
} }
}
grouping mapping { typedef lisp-role-ref {
description type identityref {
"Grouping that defines a LISP mapping."; base lisp-role;
container eid { }
uses lcaf:lisp-address;
description description
"End-host Identifier (EID) to be mapped to a list of "LISP role reference";
locators";
} }
leaf time-to-live { typedef map-reply-action {
type uint32; type identityref {
units minutes; base map-reply-act;
}
description description
"Mapping validity period in minutes."; "Map-Reply action reference";
} }
leaf creation-time { typedef eid-id {
type yang:date-and-time; type string {
config false; pattern '[a-zA-Z0-9\-_.:]*';
}
description description
"Time when the mapping was created."; "Type encoding of lisp-addresses to be generally used in EID
keyed lists.";
} }
leaf authoritative { typedef auth-algorithm-type {
type bits { type identityref {
bit A { base auth-algorithm;
description
"Authoritative bit.";
}
} }
description description
"Bit that indicates if mapping comes from an "Authentication algorithm reference";
authoritative source.";
} }
leaf static { typedef xtr-id-type {
type boolean; type binary {
default "false"; length "16";
}
description description
"This leaf should be true if the mapping is static."; "128-bit xTR identifier.";
} }
choice locator-list {
grouping locator-properties {
description description
"list of locartors are either negative, or positive."; "Properties of a RLOC";
case negative-mapping { leaf priority {
leaf map-reply-action { type uint8;
type map-reply-action; description
"Locator priority.";
}
leaf weight {
type uint8;
description
"Locator weight.";
}
leaf multicast-priority {
type uint8;
description
"Locator's multicast priority";
}
leaf multicast-weight {
type uint8;
description
"Locator's multicast weight";
}
}
grouping locators-grouping {
description
"Grouping that defines a list of LISP locators.";
list locator {
key "locator-id";
description description
"Forwarding action for a negative mapping."; "List of routing locators";
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.";
}
uses locator-properties;
} }
}
case positive-mapping { }
container rlocs {
uses locators-grouping; grouping local-locators-grouping {
description
"Grouping that defines a list of LISP locators.";
list interface {
key "interface-ref";
description
"The address type of the locator";
leaf interface-ref {
type if:interface-ref;
description description
"List of locators for a positive mapping."; "The name of the interface supporting the locator.";
} }
uses locator-properties;
} }
} }
}
grouping mappings { grouping mapping {
description
"Grouping that defines a list of LISP mappings.";
list vpn {
key "instance-id";
description description
"VPN to which the mappings belong."; "Grouping that defines a LISP mapping.";
leaf instance-id { container eid {
type leafref { uses lcaf:lisp-address;
path "/rt:routing/rt:control-plane-protocols" description
+ "/rt:control-plane-protocol/lisp:lisp" "End-host Identifier (EID) to be mapped to a list of
+ "/lisp:vpns/lisp:vpn" locators";
+ "/lisp:instance-id"; }
leaf time-to-live {
type uint32;
units minutes;
description
"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 {
description
"Authoritative bit.";
}
} }
description description
"VPN identifier."; "Bit that indicates if mapping comes from an
authoritative source.";
} }
container mappings { leaf static {
type boolean;
default "false";
description description
"Mappings within the VPN."; "This leaf should be true if the mapping is static.";
list mapping { }
key "id"; choice locator-list {
description description
"List of EID to RLOCs mappings."; "list of locartors are either negative, or positive.";
leaf id { case negative-mapping {
type eid-id; leaf map-reply-action {
type map-reply-action;
description description
"Id that uniquely identifies a mapping."; "Forwarding action for a negative mapping.";
}
}
case positive-mapping {
container rlocs {
uses locators-grouping;
description
"List of locators for a positive mapping.";
} }
uses mapping;
} }
} }
} }
}
grouping auth-key { grouping mappings {
description "Grouping that defines authentication keys."; description
container authentication-keys { "Grouping that defines a list of LISP mappings.";
description "Multiple authentication keys can be defined.";
list authentication-key { list vpn {
key "auth-key-id"; key "instance-id";
description description
"Authentication key parameters."; "VPN to which the mappings belong.";
leaf auth-key-id { leaf instance-id {
type string; type leafref {
description path "/rt:routing/rt:control-plane-protocols"
"Identifier of the authentication key."; + "/rt:control-plane-protocol/lisp:lisp"
} + "/lisp:vpns/lisp:vpn"
leaf-list auth-algorithm-id { + "/lisp:instance-id";
type lisp:auth-algorithm-type; }
description description
"Authentication algorithm used with the key."; "VPN identifier.";
} }
leaf auth-key-value { container mappings {
type string;
description description
"Clear text authentication key."; "Mappings within the VPN.";
list mapping {
key "eid-id";
description
"List of EID to RLOCs mappings.";
leaf eid-id {
type eid-id;
description
"Id that uniquely identifies a mapping.";
}
uses mapping;
}
} }
} }
} }
}
augment "/rt:routing/rt:control-plane-protocols" grouping auth-key {
+ "/rt:control-plane-protocol" { description "Grouping that defines authentication keys.";
when "derived-from-or-self(rt:type, 'lisp:lisp')" { container authentication-keys {
description description "Multiple authentication keys can be defined.";
"This augmentation is only valid for a control-plane protocol list authentication-key {
instance of LISP."; key "auth-key-id";
}
description "LISP protocol ietf-routing module
control-plane-protocol augmentation.";
container lisp {
description
"Parameters for the LISP subsystem.";
container locator-sets {
description
"Container that defines a named locator set which can be
referenced elsewhere.";
list locator-set {
key "locator-set-name";
description description
"Multiple locator sets can be defined."; "Authentication key parameters.";
leaf locator-set-name { leaf auth-key-id {
type string { type string {
length "1..64"; pattern '[a-zA-Z0-9\-_.:]*';
} }
description description
"Locator set name"; "Identifier of the authentication key.";
} }
choice locator-type { leaf-list auth-algorithm-id {
type lisp:auth-algorithm-type;
description description
"Locator sets can be based on local interfaces, or "Authentication algorithm used with the key.";
general locators."; }
case local-interface { leaf auth-key-value {
uses local-locators-grouping; type string;
description description
"List of locators in this set based on local "Clear text authentication key.";
interfaces.";
}
case general-locator {
uses locators-grouping;
description
"List of locators in this set based on lisp-address.";
}
} }
} }
} }
}
list lisp-role { augment "/rt:routing/rt:control-plane-protocols"
key lisp-role-type; + "/rt:control-plane-protocol" {
description when "derived-from-or-self(rt:type, 'lisp:lisp')" {
"List of lisp device roles such as MS, MR, ITR, description
PITR, ETR or PETR."; "This augmentation is only valid for a control-plane protocol
leaf lisp-role-type { instance of LISP.";
type lisp-role-ref;
description
"The type of LISP device - identity derived from the
'lisp-device' base identity.";
}
} }
description "LISP protocol ietf-routing module
control-plane-protocol augmentation.";
container lisp-router-id { container lisp {
when "../lisp-role/lisp-role-type = 'lisp:itr' or
../lisp-role/lisp-role-type = 'lisp:pitr' or
../lisp-role/lisp-role-type = 'lisp:etr' or
../lisp-role/lisp-role-type = 'lisp:petr'" {
description "Only when ITR, PITR, ETR or PETR.";
}
description description
"Site-ID and xTR-ID of the device."; "Parameters for the LISP subsystem.";
leaf site-id {
type uint64; container locator-sets {
description "Site ID"; 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.";
}
}
}
} }
leaf xtr-id {
type lisp:xtr-id-type; list lisp-role {
description "xTR ID"; key lisp-role-type;
description
"List of lisp device roles such as MS, MR, ITR,
PITR, ETR or PETR.";
leaf lisp-role-type {
type lisp-role-ref;
description
"The type of LISP device - identity derived from the
'lisp-device' base identity.";
}
} }
}
container vpns { container lisp-router-id {
when "../lisp-role/lisp-role-type = 'lisp:itr' or when "../lisp-role/lisp-role-type = 'lisp:itr' or
../lisp-role/lisp-role-type = 'lisp:pitr' or ../lisp-role/lisp-role-type = 'lisp:pitr' or
../lisp-role/lisp-role-type = 'lisp:etr' or ../lisp-role/lisp-role-type = 'lisp:etr' or
../lisp-role/lisp-role-type = 'lisp:petr'" { ../lisp-role/lisp-role-type = 'lisp:petr'" {
description "Only when ITR, PITR, ETR or PETR."; description "Only when ITR, PITR, ETR or PETR.";
}
description
"Site-ID and xTR-ID of the device.";
leaf site-id {
type uint64;
description "Site ID";
}
leaf xtr-id {
type lisp:xtr-id-type;
description "xTR ID";
}
} }
description "VPNs";
list vpn {
key instance-id;
unique "iid-name";
description "List of VPNs";
leaf instance-id { container vpns {
type lcaf:instance-id-type; when "../lisp-role/lisp-role-type = 'lisp:itr' or
description ../lisp-role/lisp-role-type = 'lisp:pitr' or
"VPN identifier. The value 0 for instance-id must be used ../lisp-role/lisp-role-type = 'lisp:etr' or
for the default VRF."; ../lisp-role/lisp-role-type = 'lisp:petr'" {
description "Only when ITR, PITR, ETR or PETR.";
} }
leaf iid-name { description "VPNs";
type leafref { list vpn {
path "/ni:network-instances/ni:network-instance/ni:name"; 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.";
}
leaf iid-name {
type leafref {
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";
} }
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";
} }
} }
} }
} }
} }
} <CODE ENDS>
<CODE ENDS>
3. LISP-ITR Module 3. LISP-ITR Module
This module captures the configuration data model of a LISP ITR. The This module captures the configuration data model of a LISP ITR. The
model also captures some operational data elements. model also captures some operational data elements.
3.1. Module Structure 3.1. Module Structure
module: ietf-lisp-itr module: ietf-lisp-itr
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
skipping to change at page 17, line 21 skipping to change at page 18, line 12
+--rw rloc-probing! +--rw rloc-probing!
| +--rw interval? uint16 | +--rw interval? uint16
| +--rw retries? uint8 | +--rw retries? uint8
| +--rw retries-interval? uint16 | +--rw retries-interval? uint16
+--rw itr-rlocs? leafref +--rw itr-rlocs? leafref
+--rw map-resolvers +--rw map-resolvers
| +--rw map-resolver* inet:ip-address | +--rw map-resolver* inet:ip-address
+--rw proxy-etrs +--rw proxy-etrs
| +--rw proxy-etr-address* inet:ip-address | +--rw proxy-etr-address* inet:ip-address
+--rw map-cache +--rw map-cache
+--ro size? uint32 +--ro size? uint32
+--ro limit? uint32 +--ro limit? uint32
+--rw vpn* [instance-id] +--rw vpn* [instance-id]
+--rw instance-id +--rw instance-id leafref
| -> /rt:routing/control-plane-protocols
| /control-plane-protocol/lisp:lisp/vpns
| /vpn/instance-id
+--rw mappings +--rw mappings
+--rw mapping* [id] +--rw mapping* [eid-id]
+--rw id eid-id +--rw eid-id eid-id
+--rw eid +--rw eid
| +--rw address-type | +--rw address-type
| | lisp-address-family-ref | | lisp-address-family-ref
| +--rw (address)? | +--rw (address)?
| +--:(no-address) | +--:(no-address)
| | +--rw no-address? empty | | +--rw no-address? empty
| +--:(ipv4) | +--:(ipv4)
| | +--rw ipv4? | | +--rw ipv4?
| | inet:ipv4-address | | inet:ipv4-address
| +--:(ipv4-prefix) | +--:(ipv4-prefix)
skipping to change at page 19, line 43 skipping to change at page 20, line 32
| +--rw service-index? uint8 | +--rw service-index? uint8
+--rw time-to-live? uint32 +--rw time-to-live? uint32
+--ro creation-time? yang:date-and-time +--ro creation-time? yang:date-and-time
+--rw authoritative? bits +--rw authoritative? bits
+--rw static? boolean +--rw static? boolean
+--rw (locator-list)? +--rw (locator-list)?
+--:(negative-mapping) +--:(negative-mapping)
| +--rw map-reply-action? map-reply-action | +--rw map-reply-action? map-reply-action
+--:(positive-mapping) +--:(positive-mapping)
+--rw rlocs +--rw rlocs
+--rw locator* [id] +--rw locator* [locator-id]
+--rw id string +--rw locator-id string
+--rw locator-address +--rw locator-address
| +--rw address-type | +--rw address-type
| | lisp-address-family-ref | | lisp-address-family-ref
| +--rw (address)? | +--rw (address)?
| +--:(no-address) | +--:(no-address)
| | +--rw no-address? | | +--rw no-address?
| | empty | | empty
| +--:(ipv4) | +--:(ipv4)
| | +--rw ipv4? | | +--rw ipv4?
| | inet:ipv4-address | | inet:ipv4-address
skipping to change at page 22, line 34 skipping to change at page 23, line 23
| | service-path-id-type | | service-path-id-type
| +--rw service-index? | +--rw service-index?
| uint8 | uint8
+--rw priority? uint8 +--rw priority? uint8
+--rw weight? uint8 +--rw weight? uint8
+--rw multicast-priority? uint8 +--rw multicast-priority? uint8
+--rw multicast-weight? uint8 +--rw multicast-weight? uint8
3.2. Module Definition 3.2. Module Definition
<CODE BEGINS> file "ietf-lisp-itr@2019-02-23.yang" <CODE BEGINS> file "ietf-lisp-itr@2019-02-23.yang"
module ietf-lisp-itr { module ietf-lisp-itr {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-itr";
prefix lisp-itr; namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-itr";
// RFC Ed.: replace occurences of XXXX with actual RFC number prefix lisp-itr;
// 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 {
prefix "rt";
reference
"RFC 8349: A YANG Data Model for Routing Management
(NMDA version)";
}
organization // RFC Ed.: replace occurrences of XXXX with actual RFC number
"IETF LISP (Locator/ID Separation Protocol) Working Group"; // and remove this note
contact import ietf-lisp {
"WG Web: <http://tools.ietf.org/wg/lisp/> prefix lisp;
WG List: <mailto:lisp@ietf.org> reference "RFC XXXX: LISP YANG model";
}
import ietf-inet-types {
prefix inet;
reference "RFC 6991: Common YANG Data Types";
}
import ietf-routing {
prefix "rt";
reference
"RFC 8349: A YANG Data Model for Routing Management
(NMDA version)";
}
Editor: Vina Ermagan organization
<mailto:ermagan@gmail.com> "IETF LISP (Locator/ID Separation Protocol) Working Group";
contact
"WG Web: <http://tools.ietf.org/wg/lisp/>
WG List: <mailto:lisp@ietf.org>
Editor: Alberto Rodriguez-Natal Editor: Vina Ermagan
<mailto:natal@cisco.com> <mailto:ermagan@gmail.com>
Editor: Reshad Rahman Editor: Alberto Rodriguez-Natal
<mailto:rrahman@cisco.com>"; <mailto:natal@cisco.com>
description
"This YANG module defines the generic parameters for a LISP
ITR. The module can be extended by vendors to define
vendor-specific parameters and policies.
Copyright (c) 2018 IETF Trust and the persons identified as Editor: Reshad Rahman
authors of the code. All rights reserved. <mailto:rrahman@cisco.com>";
description
"This YANG module defines the generic parameters for a LISP
ITR. The module can be extended by vendors to define
vendor-specific parameters and policies.
Redistribution and use in source and binary forms, with or Copyright (c) 2018 IETF Trust and the persons identified as
without modification, is permitted pursuant to, and subject authors of the code. All rights reserved.
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 Redistribution and use in source and binary forms, with or
the RFC itself for full legal notices. 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).
reference "RFC XXXX"; This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices.
";
revision 2019-02-23 { reference "RFC XXXX";
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: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
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 {
type uint16;
units "seconds";
description
"Interval in seconds for resending the probes";
}
leaf retries {
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.";
}
}
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
"Reference to a locator set that the (P)ITR includes in
Map-Requests";
} revision 2019-02-23 {
container map-resolvers { description
description "Initial revision.";
"Map-Resolvers that the (P)ITR uses."; reference
leaf-list map-resolver { "https://tools.ietf.org/html/rfc6830";
type inet:ip-address; }
description augment "/rt:routing/rt:control-plane-protocols"
"Each Map-Resolver within the list of Map-Resolvers."; + "/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'" {
container proxy-etrs { description
when "../../lisp:lisp-role/lisp:lisp-role-type = 'lisp:itr'" { "Augment is valid when LISP role type is ITR or PITR.";
description }
"Container exists only when LISP role type is ITR"; description
} "This augments the LISP devices list with (P)ITR specific
description parameters.";
"Proxy ETRs that the ITR uses."; container itr {
leaf-list proxy-etr-address{ presence "LISP (P)ITR operation enabled";
type inet:ip-address; description
description "ITR parameters";
"Proxy ETR RLOC address."; container rloc-probing {
} presence "RLOC probing active";
} description
container map-cache { "RLOC-probing parameters";
leaf size { leaf interval {
type uint32; type uint16;
config false; units "seconds";
description description
"Current number of entries in the EID-to-RLOC map-cache"; "Interval in seconds for resending the probes";
} }
leaf limit { leaf retries {
type uint32; type uint8;
config false; description
description "Number of retries for sending the probes";
"Maximum permissible number of entries in the EID-to-RLOC }
map-cache"; 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
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
"Reference to a locator set that the (P)ITR includes in
Map-Requests";
}
container map-resolvers {
description
"Map-Resolvers that the (P)ITR uses.";
leaf-list map-resolver {
type inet:ip-address;
description
"Each Map-Resolver within the list of Map-Resolvers.";
}
}
container proxy-etrs {
when "../../lisp:lisp-role/lisp:lisp-role-type='lisp:itr'" {
description
"Container exists only when LISP role type is ITR";
}
description
"Proxy ETRs that the ITR uses.";
leaf-list proxy-etr-address{
type inet:ip-address;
description
"Proxy ETR RLOC address.";
}
}
container map-cache {
leaf size {
type uint32;
config false;
description
"Current number of entries in the EID-to-RLOC map-cache";
}
leaf limit {
type uint32;
config false;
description
"Maximum permissible number of entries in the EID-to-RLOC
map-cache";
}
uses lisp:mappings; uses lisp:mappings;
description description
"EID to RLOCs mappings cache."; "EID to RLOCs mappings cache.";
} }
} }
} }
} }
<CODE ENDS> <CODE ENDS>
4. LISP-ETR Module 4. LISP-ETR Module
This module captures the configuration data model of a LISP ETR. The This module captures the configuration data model of a LISP ETR. The
model also captures some operational data elements. model also captures some operational data elements.
4.1. Module Structure 4.1. Module Structure
module: ietf-lisp-etr module: ietf-lisp-etr
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/lisp:lisp: /rt:control-plane-protocol/lisp:lisp:
+--rw etr! +--rw etr!
+--rw map-servers +--rw map-servers
| +--rw map-server* [ms-address] | +--rw map-server* [ms-address]
| +--rw ms-address inet:ip-address | +--rw ms-address inet:ip-address
| +--rw authentication-keys | +--rw authentication-keys
| +--rw authentication-key* [auth-key-id] | +--rw authentication-key* [auth-key-id]
| +--rw auth-key-id string | +--rw auth-key-id string
| +--rw auth-algorithm-id* lisp:auth-algorithm-type | +--rw auth-algorithm-id*
| +--rw auth-key-value? string | | lisp:auth-algorithm-type
+--rw local-eids | +--rw auth-key-value? string
+--rw vpn* [instance-id] +--rw local-eids
+--rw instance-id +--rw vpn* [instance-id]
| -> /rt:routing/control-plane-protocols +--rw instance-id leafref
| /control-plane-protocol/lisp:lisp/vpns +--rw eids
| /vpn/instance-id +--rw local-eid* [eid-id]
+--rw eids +--rw eid-id lisp:eid-id
+--rw local-eid* [id] +--rw eid-address
+--rw id lisp:eid-id | +--rw address-type
+--rw eid-address | | lisp-address-family-ref
| +--rw address-type | +--rw (address)?
| | lisp-address-family-ref | +--:(no-address)
| +--rw (address)? | | +--rw no-address? empty
| +--:(no-address) | +--:(ipv4)
| | +--rw no-address? empty | | +--rw ipv4?
| +--:(ipv4) | | inet:ipv4-address
| | +--rw ipv4? | +--:(ipv4-prefix)
| | inet:ipv4-address | | +--rw ipv4-prefix?
| +--:(ipv4-prefix) | | inet:ipv4-prefix
| | +--rw ipv4-prefix? | +--:(ipv6)
| | inet:ipv4-prefix | | +--rw ipv6?
| +--:(ipv6) | | inet:ipv6-address
| | +--rw ipv6? | +--:(ipv6-prefix)
| | inet:ipv6-address | | +--rw ipv6-prefix?
| +--:(ipv6-prefix) | | inet:ipv6-prefix
| | +--rw ipv6-prefix? | +--:(mac)
| | inet:ipv6-prefix | | +--rw mac?
| +--:(mac) | | yang:mac-address
| | +--rw mac? | +--:(distinguished-name)
| | yang:mac-address | | +--rw distinguished-name?
| +--:(distinguished-name) | | distinguished-name-type
| | +--rw distinguished-name? | +--:(as-number)
| | distinguished-name-type | | +--rw as-number?
| +--:(as-number) | | inet:as-number
| | +--rw as-number? | +--:(null-address)
| | inet:as-number | | +--rw null-address
| +--:(null-address) | | +--rw address? empty
| | +--rw null-address | +--:(afi-list)
| | +--rw address? empty | | +--rw afi-list
| +--:(afi-list) | | +--rw address-list* simple-address
| | +--rw afi-list | +--:(instance-id)
| | +--rw address-list* simple-address | | +--rw instance-id
| +--:(instance-id) | | +--rw instance-id? instance-id-type
| | +--rw instance-id | | +--rw mask-length? uint8
| | +--rw instance-id? instance-id-type | | +--rw address? simple-address
| | +--rw mask-length? uint8 | +--:(as-number-lcaf)
| | +--rw address? simple-address | | +--rw as-number-lcaf
| +--:(as-number-lcaf) | | +--rw as? inet:as-number
| | +--rw as-number-lcaf | | +--rw address? simple-address
| | +--rw as? inet:as-number | +--:(application-data)
| | +--rw address? simple-address | | +--rw application-data
| +--:(application-data) | | +--rw address?
| | +--rw application-data | | | simple-address
| | +--rw address? | | +--rw protocol? uint8
| | | simple-address | | +--rw ip-tos? int32
| | +--rw protocol? uint8 | | +--rw local-port-low?
| | +--rw ip-tos? int32 | | | inet:port-number
| | +--rw local-port-low? | | +--rw local-port-high?
| | | inet:port-number | | | inet:port-number
| | +--rw local-port-high? | | +--rw remote-port-low?
| | | inet:port-number | | | inet:port-number
| | +--rw remote-port-low? | | +--rw remote-port-high?
| | | inet:port-number | | inet:port-number
| | +--rw remote-port-high? | +--:(geo-coordinates)
| | inet:port-number | | +--rw geo-coordinates
| +--:(geo-coordinates) | | +--rw latitude? bits
| | +--rw geo-coordinates | | +--rw latitude-degrees? uint8
| | +--rw latitude? bits | | +--rw latitude-minutes? uint8
| | +--rw latitude-degrees? uint8 | | +--rw latitude-seconds? uint8
| | +--rw latitude-minutes? uint8 | | +--rw longitude? bits
| | +--rw latitude-seconds? uint8 | | +--rw longitude-degrees? uint16
| | +--rw longitude? bits | | +--rw longitude-minutes? uint8
| | +--rw longitude-degrees? uint16 | | +--rw longitude-seconds? uint8
| | +--rw longitude-minutes? uint8 | | +--rw altitude? int32
| | +--rw longitude-seconds? uint8 | | +--rw address?
| | +--rw altitude? int32 | | simple-address
| | +--rw address? | +--:(nat-traversal)
| | simple-address | | +--rw nat-traversal
| +--:(nat-traversal) | | +--rw ms-udp-port? uint16
| | +--rw nat-traversal | | +--rw etr-udp-port? uint16
| | +--rw ms-udp-port? uint16 | | +--rw global-etr-rloc?
| | +--rw etr-udp-port? uint16 | | | simple-address
| | +--rw global-etr-rloc? | | +--rw ms-rloc?
| | | simple-address | | | simple-address
| | +--rw ms-rloc? | | +--rw private-etr-rloc?
| | | simple-address | | | simple-address
| | +--rw private-etr-rloc? | | +--rw rtr-rlocs*
| | | simple-address | | simple-address
| | +--rw rtr-rlocs* | +--:(explicit-locator-path)
| | simple-address | | +--rw explicit-locator-path
| +--:(explicit-locator-path) | | +--rw hop* [hop-id]
| | +--rw explicit-locator-path | | +--rw hop-id string
| | +--rw hop* [hop-id] | | +--rw address? simple-address
| | +--rw hop-id string | | +--rw lrs-bits? bits
| | +--rw address? simple-address | +--:(source-dest-key)
| | +--rw lrs-bits? bits | | +--rw source-dest-key
| +--:(source-dest-key) | | +--rw source? simple-address
| | +--rw source-dest-key | | +--rw dest? simple-address
| | +--rw source? simple-address | +--:(key-value-address)
| | +--rw dest? simple-address | | +--rw key-value-address
| +--:(key-value-address) | | +--rw key? simple-address
| | +--rw key-value-address | | +--rw value? simple-address
| | +--rw key? simple-address | +--:(service-path)
| | +--rw value? simple-address | +--rw service-path
| +--:(service-path) | +--rw service-path-id?
| +--rw service-path | | service-path-id-type
| +--rw service-path-id? | +--rw service-index? uint8
| | service-path-id-type +--rw rlocs? leafref
| +--rw service-index? uint8 +--rw record-ttl? uint32
+--rw rlocs? leafref +--rw want-map-notify? boolean
| -> /rt:routing/control-plane-protocols +--rw proxy-reply? boolean
| /control-plane-protocol/lisp:lisp +--rw registration-interval? uint16
| /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 4.2. Module Definition
<CODE BEGINS> file "ietf-lisp-etr@2019-02-23.yang" <CODE BEGINS> file "ietf-lisp-etr@2019-09-07.yang"
module ietf-lisp-etr { module ietf-lisp-etr {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-etr";
prefix lisp-etr; namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-etr";
// RFC Ed.: replace occurences of XXXX with actual RFC number prefix lisp-etr;
// 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 {
prefix inet;
reference "RFC 6991: Common YANG Data Types";
}
import ietf-routing {
prefix "rt";
reference
"RFC 8349: A YANG Data Model for Routing Management
(NMDA version)";
}
organization // RFC Ed.: replace occurrences of XXXX with actual RFC number
"IETF LISP (Locator/ID Separation Protocol) Working Group"; // and remove this note
contact import ietf-lisp {
"WG Web: <http://tools.ietf.org/wg/lisp/> prefix lisp;
WG List: <mailto:lisp@ietf.org> reference "RFC XXXX: LISP YANG model";
}
import ietf-lisp-address-types {
prefix lcaf;
reference "RFC XXXX: LISP YANG model";
}
import ietf-inet-types {
prefix inet;
reference "RFC 6991: Common YANG Data Types";
}
import ietf-routing {
prefix "rt";
reference
"RFC 8349: A YANG Data Model for Routing Management
(NMDA version)";
}
Editor: Vina Ermagan organization
<mailto:ermagan@gmail.com> "IETF LISP (Locator/ID Separation Protocol) Working Group";
contact
"WG Web: <http://tools.ietf.org/wg/lisp/>
WG List: <mailto:lisp@ietf.org>
Editor: Alberto Rodriguez-Natal Editor: Vina Ermagan
<mailto:natal@cisco.com> <mailto:vermagan@cisco.com>
Editor: Reshad Rahman Editor: Alberto Rodriguez-Natal
<mailto:rrahman@cisco.com>"; <mailto:natal@cisco.com>
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.
Copyright (c) 2018 IETF Trust and the persons identified as Editor: Reshad Rahman
authors of the code. All rights reserved. <mailto:rrahman@cisco.com>";
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.
Redistribution and use in source and binary forms, with or Copyright (c) 2018 IETF Trust and the persons identified as
without modification, is permitted pursuant to, and subject authors of the code. All rights reserved.
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 Redistribution and use in source and binary forms, with or
the RFC itself for full legal notices. 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).
reference "RFC XXXX"; This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices.
";
revision 2019-02-23 { reference "RFC XXXX";
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
parameters.";
container etr {
presence "LISP (P)ETR operation enabled";
description
"(P)ETR parameters.";
container map-servers { revision 2019-09-07 {
when "../../lisp:lisp-role/lisp:lisp-role-type = 'lisp:etr'" { description
description "Initial revision.";
"Container exists only when LISP device type is ETR."; reference
} "https://tools.ietf.org/html/rfc6830";
description }
"Map-Servers that the ETR uses."; augment "/rt:routing/rt:control-plane-protocols"
list map-server { + "/rt:control-plane-protocol/lisp:lisp" {
key "ms-address"; when "lisp:lisp-role/lisp:lisp-role-type = 'lisp:etr' or
description lisp:lisp-role/lisp:lisp-role-type = 'lisp:petr'" {
"Each Map-Server within the list of Map-Servers."; description
leaf ms-address { "Augment is valid when LISP device type is (P)ETR.";
type inet:ip-address; }
description description
"Map-Server address."; "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 {
uses lisp:auth-key; when "../../lisp:lisp-role/lisp:lisp-role-type='lisp:etr'" {
} description
} "Container exists only when LISP device type is ETR.";
}
description
"Map-Servers that the ETR uses.";
list map-server {
key "ms-address";
description
"Each Map-Server within the list of Map-Servers.";
leaf ms-address {
type inet:ip-address;
description
"Map-Server address.";
}
uses lisp:auth-key;
}
}
container local-eids { container local-eids {
when "../../lisp:lisp-role/lisp:lisp-role-type = 'lisp:etr'" { when "../../lisp:lisp-role/lisp:lisp-role-type='lisp:etr'" {
description description
"Container exists only when LISP device type is ETR."; "Container exists only when LISP device type is ETR.";
} }
description description
"VPNs served by the ETR."; "VPNs served by the ETR.";
list vpn { list vpn {
key "instance-id"; key "instance-id";
description description
"VPN for local-EIDs."; "VPN for local-EIDs.";
leaf instance-id { leaf instance-id {
type leafref { type leafref {
path "/rt:routing/rt:control-plane-protocols" path "/rt:routing/rt:control-plane-protocols"
+ "/rt:control-plane-protocol/lisp:lisp"
+ "/lisp:vpns/lisp:vpn"
+ "/lisp:instance-id";
}
description
"VPN identifier.";
}
container eids {
description
"EIDs served by the ETR.";
list local-eid {
key "id";
description
"List of local EIDs.";
leaf 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 {
type leafref {
path "/rt:routing/rt:control-plane-protocols"
+ "/rt:control-plane-protocol/lisp:lisp" + "/rt:control-plane-protocol/lisp:lisp"
+ "/lisp:locator-sets/lisp:locator-set" + "/lisp:vpns/lisp:vpn"
+ "/lisp:locator-set-name"; + "/lisp:instance-id";
} }
description description
"Locator set mapped to this local EID."; "VPN identifier.";
} }
leaf record-ttl { container eids {
type uint32; description
units minutes; "EIDs served by the ETR.";
description list local-eid {
"Validity period of the EID to RLOCs mapping provided key "eid-id";
in Map-Replies."; description
} "List of local EIDs.";
leaf want-map-notify { leaf eid-id {
type boolean; type lisp:eid-id;
default "true"; description
description "Unique id of local EID.";
"Flag which if set in a Map-Register requests that a }
Map-Notify be sent in response."; container eid-address {
} uses lcaf:lisp-address;
leaf proxy-reply { description
type boolean; "EID address in generic LISP address format.";
default "false"; }
description leaf rlocs {
"Flag which if set in a Map-Register requests that the type leafref {
Map-Server proxy Map-Replies for the ETR."; path "/rt:routing/rt:control-plane-protocols"
} + "/rt:control-plane-protocol/lisp:lisp"
leaf registration-interval { + "/lisp:locator-sets/lisp:locator-set"
type uint16; + "/lisp:locator-set-name";
units "seconds"; }
default "60"; description
description "Locator set mapped to this local EID.";
"Interval between consecutive Map-Register messages."; }
} leaf record-ttl {
} type uint32;
} units minutes;
} description
} "Validity period of the EID to RLOCs mapping
} provided in Map-Replies.";
} }
} leaf want-map-notify {
<CODE ENDS> type boolean;
default "true";
description
"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.";
}
leaf registration-interval {
type uint16;
units "seconds";
default "60";
description
"Interval between consecutive Map-Registers.";
}
}
}
}
}
}
}
}
<CODE ENDS>
5. LISP-Map-Server Module 5. LISP-Map-Server Module
This module captures the configuration data model of a LISP Map This module captures the configuration data model of a LISP Map
Server [RFC6833]. The model also captures some operational data Server [RFC6833]. The model also captures some operational data
elements. elements.
5.1. Module Structure 5.1. Module Structure
module: ietf-lisp-mapserver module: ietf-lisp-mapserver
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/lisp:lisp: /rt:control-plane-protocol/lisp:lisp:
+--rw map-server! +--rw map-server!
+--rw sites +--rw sites
| +--rw site* [site-id] | +--rw site* [site-id]
| +--rw site-id uint64 | +--rw site-id uint64
| +--rw authentication-keys | +--rw authentication-keys
| | +--rw authentication-key* [auth-key-id] | | +--rw authentication-key* [auth-key-id]
| | +--rw auth-key-id string | | +--rw auth-key-id string
| | +--rw auth-algorithm-id* | | +--rw auth-algorithm-id*
| | | lisp:auth-algorithm-type | | | lisp:auth-algorithm-type
| | +--rw auth-key-value? string | | +--rw auth-key-value? string
| +--rw xtr-ids* [xtr-id] | +--rw xtr-ids* [xtr-id]
| +--rw xtr-id uint64 | +--rw xtr-id uint64
| +--rw authentication-keys | +--rw authentication-keys
| +--rw authentication-key* [auth-key-id] | +--rw authentication-key* [auth-key-id]
| +--rw auth-key-id string | +--rw auth-key-id string
| +--rw auth-algorithm-id* | +--rw auth-algorithm-id*
| | lisp:auth-algorithm-type | | lisp:auth-algorithm-type
| +--rw auth-key-value? string | +--rw auth-key-value? string
+--rw vpns +--rw vpns
| +--rw vpn* [instance-id] | +--rw vpn* [instance-id]
| +--rw instance-id lcaf:instance-id-type | +--rw instance-id lcaf:instance-id-type
| +--rw mappings | +--rw mappings
| | +--rw mapping* [eid-id] | | +--rw mapping* [eid-id]
| | +--rw eid-id lisp:eid-id | | +--rw eid-id lisp:eid-id
| | +--rw eid-address | | +--rw eid-address
| | | +--rw address-type | | | +--rw address-type
| | | | lisp-address-family-ref | | | | lisp-address-family-ref
| | | +--rw (address)? | | | +--rw (address)?
| | | +--:(no-address) | | | +--:(no-address)
| | | | +--rw no-address? empty | | | | +--rw no-address? empty
| | | +--:(ipv4) | | | +--:(ipv4)
| | | | +--rw ipv4? | | | | +--rw ipv4?
| | | | inet:ipv4-address | | | | inet:ipv4-address
| | | +--:(ipv4-prefix) | | | +--:(ipv4-prefix)
| | | | +--rw ipv4-prefix? | | | | +--rw ipv4-prefix?
| | | | inet:ipv4-prefix | | | | inet:ipv4-prefix
| | | +--:(ipv6) | | | +--:(ipv6)
| | | | +--rw ipv6? | | | | +--rw ipv6?
| | | | inet:ipv6-address | | | | inet:ipv6-address
| | | +--:(ipv6-prefix) | | | +--:(ipv6-prefix)
| | | | +--rw ipv6-prefix? | | | | +--rw ipv6-prefix?
| | | | inet:ipv6-prefix | | | | inet:ipv6-prefix
| | | +--:(mac) | | | +--:(mac)
| | | | +--rw mac? | | | | +--rw mac?
| | | | yang:mac-address | | | | yang:mac-address
| | | +--:(distinguished-name) | | | +--:(distinguished-name)
| | | | +--rw distinguished-name? | | | | +--rw distinguished-name?
| | | | distinguished-name-type | | | | distinguished-name-type
| | | +--:(as-number) | | | +--:(as-number)
| | | | +--rw as-number? | | | | +--rw as-number?
| | | | inet:as-number | | | | inet:as-number
| | | +--:(null-address) | | | +--:(null-address)
| | | | +--rw null-address | | | | +--rw null-address
| | | | +--rw address? empty | | | | +--rw address? empty
| | | +--:(afi-list) | | | +--:(afi-list)
| | | | +--rw afi-list | | | | +--rw afi-list
| | | | +--rw address-list* simple-address | | | | +--rw address-list* simple-address
| | | +--:(instance-id) | | | +--:(instance-id)
| | | | +--rw instance-id | | | | +--rw instance-id
| | | | +--rw instance-id? instance-id-type | | | | +--rw instance-id? instance-id-type
| | | | +--rw mask-length? uint8 | | | | +--rw mask-length? uint8
| | | | +--rw address? simple-address | | | | +--rw address? simple-address
| | | +--:(as-number-lcaf) | | | +--:(as-number-lcaf)
| | | | +--rw as-number-lcaf | | | | +--rw as-number-lcaf
| | | | +--rw as? inet:as-number | | | | +--rw as? inet:as-number
| | | | +--rw address? simple-address | | | | +--rw address? simple-address
| | | +--:(application-data) | | | +--:(application-data)
| | | | +--rw application-data | | | | +--rw application-data
| | | | +--rw address? | | | | +--rw address?
| | | | | simple-address | | | | | simple-address
| | | | +--rw protocol? uint8 | | | | +--rw protocol? uint8
| | | | +--rw ip-tos? int32 | | | | +--rw ip-tos? int32
| | | | +--rw local-port-low? | | | | +--rw local-port-low?
| | | | | inet:port-number | | | | | inet:port-number
| | | | +--rw local-port-high? | | | | +--rw local-port-high?
| | | | | inet:port-number | | | | | inet:port-number
| | | | +--rw remote-port-low? | | | | +--rw remote-port-low?
| | | | | inet:port-number | | | | | inet:port-number
| | | | +--rw remote-port-high? | | | | +--rw remote-port-high?
| | | | inet:port-number | | | | inet:port-number
| | | +--:(geo-coordinates) | | | +--:(geo-coordinates)
| | | | +--rw geo-coordinates | | | | +--rw geo-coordinates
| | | | +--rw latitude? bits | | | | +--rw latitude? bits
| | | | +--rw latitude-degrees? uint8 | | | | +--rw latitude-degrees? uint8
| | | | +--rw latitude-minutes? uint8 | | | | +--rw latitude-minutes? uint8
| | | | +--rw latitude-seconds? uint8 | | | | +--rw latitude-seconds? uint8
| | | | +--rw longitude? bits | | | | +--rw longitude? bits
| | | | +--rw longitude-degrees? uint16 | | | | +--rw longitude-degrees? uint16
| | | | +--rw longitude-minutes? uint8 | | | | +--rw longitude-minutes? uint8
| | | | +--rw longitude-seconds? uint8 | | | | +--rw longitude-seconds? uint8
| | | | +--rw altitude? int32 | | | | +--rw altitude? int32
| | | | +--rw address? | | | | +--rw address?
| | | | simple-address | | | | simple-address
| | | +--:(nat-traversal) | | | +--:(nat-traversal)
| | | | +--rw nat-traversal | | | | +--rw nat-traversal
| | | | +--rw ms-udp-port? uint16 | | | | +--rw ms-udp-port? uint16
| | | | +--rw etr-udp-port? uint16 | | | | +--rw etr-udp-port? uint16
| | | | +--rw global-etr-rloc? | | | | +--rw global-etr-rloc?
| | | | | simple-address | | | | | simple-address
| | | | +--rw ms-rloc? | | | | +--rw ms-rloc?
| | | | | simple-address | | | | | simple-address
| | | | +--rw private-etr-rloc? | | | | +--rw private-etr-rloc?
| | | | | simple-address | | | | | simple-address
| | | | +--rw rtr-rlocs* | | | | +--rw rtr-rlocs*
| | | | simple-address | | | | simple-address
| | | +--:(explicit-locator-path) | | | +--:(explicit-locator-path)
| | | | +--rw explicit-locator-path | | | | +--rw explicit-locator-path
| | | | +--rw hop* [hop-id] | | | | +--rw hop* [hop-id]
| | | | +--rw hop-id string | | | | +--rw hop-id string
| | | | +--rw address? simple-address | | | | +--rw address? simple-address
| | | | +--rw lrs-bits? bits | | | | +--rw lrs-bits? bits
| | | +--:(source-dest-key) | | | +--:(source-dest-key)
| | | | +--rw source-dest-key | | | | +--rw source-dest-key
| | | | +--rw source? simple-address | | | | +--rw source? simple-address
| | | | +--rw dest? simple-address | | | | +--rw dest? simple-address
| | | +--:(key-value-address) | | | +--:(key-value-address)
| | | | +--rw key-value-address | | | | +--rw key-value-address
| | | | +--rw key? simple-address | | | | +--rw key? simple-address
| | | | +--rw value? simple-address | | | | +--rw value? simple-address
| | | +--:(service-path) | | | +--:(service-path)
| | | +--rw service-path | | | +--rw service-path
| | | +--rw service-path-id? | | | +--rw service-path-id?
| | | | service-path-id-type | | | | service-path-id-type
| | | +--rw service-index? uint8 | | | +--rw service-index? uint8
| | +--rw site-id* uint64 | | +--rw site-id* uint64
| | +--rw more-specifics-accepted? boolean | | +--rw more-specifics-accepted? boolean
| | +--rw mapping-expiration-timeout? int16 | | +--rw mapping-expiration-timeout? int16
| | +--ro first-registration-time? | | +--ro first-registration-time?
| | | yang:date-and-time | | | yang:date-and-time
| | +--ro last-registration-time? | | +--ro last-registration-time?
| | | yang:date-and-time | | | yang:date-and-time
| | +--rw mapping-records | | +--rw mapping-records
| | +--rw mapping-record* [xtr-id] | | +--rw mapping-record* [xtr-id]
| | +--rw xtr-id | | +--rw xtr-id
| | | lisp:xtr-id-type | | | lisp:xtr-id-type
| | +--rw site-id? uint64 | | +--rw site-id? uint64
| | +--rw eid | | +--rw eid
| | | +--rw address-type | | | +--rw address-type
| | | | lisp-address-family-ref | | | | lisp-address-family-ref
| | | +--rw (address)? | | | +--rw (address)?
| | | +--:(no-address) | | | +--:(no-address)
| | | | +--rw no-address? | | | | +--rw no-address?
| | | | empty | | | | empty
| | | +--:(ipv4) | | | +--:(ipv4)
| | | | +--rw ipv4? | | | | +--rw ipv4?
| | | | inet:ipv4-address | | | | inet:ipv4-address
| | | +--:(ipv4-prefix) | | | +--:(ipv4-prefix)
| | | | +--rw ipv4-prefix? | | | | +--rw ipv4-prefix?
| | | | inet:ipv4-prefix | | | | inet:ipv4-prefix
| | | +--:(ipv6) | | | +--:(ipv6)
| | | | +--rw ipv6? | | | | +--rw ipv6?
| | | | inet:ipv6-address | | | | inet:ipv6-address
| | | +--:(ipv6-prefix) | | | +--:(ipv6-prefix)
| | | | +--rw ipv6-prefix? | | | | +--rw ipv6-prefix?
| | | | inet:ipv6-prefix | | | | inet:ipv6-prefix
| | | +--:(mac) | | | +--:(mac)
| | | | +--rw mac? | | | | +--rw mac?
| | | | yang:mac-address | | | | yang:mac-address
| | | +--:(distinguished-name) | | | +--:(distinguished-name)
| | | | +--rw distinguished-name? | | | | +--rw distinguished-name?
| | | | distinguished-name-type | | | | distinguished-name-type
| | | +--:(as-number) | | | +--:(as-number)
| | | | +--rw as-number? | | | | +--rw as-number?
| | | | inet:as-number | | | | inet:as-number
| | | +--:(null-address) | | | +--:(null-address)
| | | | +--rw null-address | | | | +--rw null-address
| | | | +--rw address? empty | | | | +--rw address? empty
| | | +--:(afi-list) | | | +--:(afi-list)
| | | | +--rw afi-list | | | | +--rw afi-list
| | | | +--rw address-list* | | | | +--rw address-list*
| | | | simple-address | | | | simple-address
| | | +--:(instance-id) | | | +--:(instance-id)
| | | | +--rw instance-id | | | | +--rw instance-id
| | | | +--rw instance-id? | | | | +--rw instance-id?
| | | | | instance-id-type | | | | | instance-id-type
| | | | +--rw mask-length? uint8 | | | | +--rw mask-length? uint8
| | | | +--rw address? | | | | +--rw address?
| | | | simple-address | | | | simple-address
| | | +--:(as-number-lcaf) | | | +--:(as-number-lcaf)
| | | | +--rw as-number-lcaf | | | | +--rw as-number-lcaf
| | | | +--rw as? inet:as-number | | | | +--rw as? inet:as-number
| | | | +--rw address? simple-address | | | | +--rw address? simple-address
| | | +--:(application-data) | | | +--:(application-data)
| | | | +--rw application-data | | | | +--rw application-data
| | | | +--rw address? | | | | +--rw address?
| | | | | simple-address | | | | | simple-address
| | | | +--rw protocol? uint8 | | | | +--rw protocol? uint8
| | | | +--rw ip-tos? int32 | | | | +--rw ip-tos? int32
| | | | +--rw local-port-low? | | | | +--rw local-port-low?
| | | | | inet:port-number | | | | | inet:port-number
| | | | +--rw local-port-high? | | | | +--rw local-port-high?
| | | | | inet:port-number | | | | | inet:port-number
| | | | +--rw remote-port-low? | | | | +--rw remote-port-low?
| | | | | inet:port-number | | | | | inet:port-number
| | | | +--rw remote-port-high? | | | | +--rw remote-port-high?
| | | | inet:port-number | | | | inet:port-number
| | | +--:(geo-coordinates) | | | +--:(geo-coordinates)
| | | | +--rw geo-coordinates | | | | +--rw geo-coordinates
| | | | +--rw latitude? bits | | | | +--rw latitude? bits
| | | | +--rw latitude-degrees? uint8 | | | | +--rw latitude-degrees?
| | | | +--rw latitude-minutes? uint8 | | | | | uint8
| | | | +--rw latitude-seconds? uint8 | | | | +--rw latitude-minutes?
| | | | +--rw longitude? bits | | | | | uint8
| | | | +--rw longitude-degrees? | | | | +--rw latitude-seconds?
| | | | | uint16 | | | | | uint8
| | | | +--rw longitude-minutes? uint8 | | | | +--rw longitude? bits
| | | | +--rw longitude-seconds? uint8 | | | | +--rw longitude-degrees?
| | | | +--rw altitude? int32 | | | | | uint16
| | | | +--rw address? | | | | +--rw longitude-minutes?
| | | | simple-address | | | | | uint8
| | | +--:(nat-traversal) | | | | +--rw longitude-seconds?
| | | | +--rw nat-traversal | | | | | uint8
| | | | +--rw ms-udp-port? uint16 | | | | +--rw altitude?
| | | | +--rw etr-udp-port? uint16 | | | | | int32
| | | | +--rw global-etr-rloc? | | | | +--rw address?
| | | | | simple-address | | | | simple-address
| | | | +--rw ms-rloc? | | | +--:(nat-traversal)
| | | | | simple-address | | | | +--rw nat-traversal
| | | | +--rw private-etr-rloc? | | | | +--rw ms-udp-port?
| | | | | simple-address | | | | | uint16
| | | | +--rw rtr-rlocs* | | | | +--rw etr-udp-port?
| | | | simple-address | | | | | uint16
| | | +--:(explicit-locator-path) | | | | +--rw global-etr-rloc?
| | | | +--rw explicit-locator-path | | | | | simple-address
| | | | +--rw hop* [hop-id] | | | | +--rw ms-rloc?
| | | | +--rw hop-id string | | | | | simple-address
| | | | +--rw address? | | | | +--rw private-etr-rloc?
| | | | | simple-address | | | | | simple-address
| | | | +--rw lrs-bits? bits | | | | +--rw rtr-rlocs*
| | | +--:(source-dest-key) | | | | simple-address
| | | | +--rw source-dest-key | | | +--:(explicit-locator-path)
| | | | +--rw source? simple-address | | | | +--rw explicit-locator-path
| | | | +--rw dest? simple-address | | | | +--rw hop* [hop-id]
| | | +--:(key-value-address) | | | | +--rw hop-id string
| | | | +--rw key-value-address | | | | +--rw address?
| | | | +--rw key? simple-address | | | | | simple-address
| | | | +--rw value? simple-address | | | | +--rw lrs-bits? bits
| | | +--:(service-path) | | | +--:(source-dest-key)
| | | +--rw service-path | | | | +--rw source-dest-key
| | | +--rw service-path-id? | | | | +--rw source? simple-address
| | | | service-path-id-type | | | | +--rw dest? simple-address
| | | +--rw service-index? uint8 | | | +--:(key-value-address)
| | +--rw time-to-live? uint32 | | | | +--rw key-value-address
| | +--ro creation-time? | | | | +--rw key? simple-address
| | | yang:date-and-time | | | | +--rw value? simple-address
| | +--rw authoritative? bits | | | +--:(service-path)
| | +--rw static? boolean | | | +--rw service-path
| | +--rw (locator-list)? | | | +--rw service-path-id?
| | +--:(negative-mapping) | | | | service-path-id-type
| | | +--rw map-reply-action? | | | +--rw service-index? uint8
| | | map-reply-action | | +--rw time-to-live? uint32
| | +--:(positive-mapping) | | +--ro creation-time?
| | +--rw rlocs | | | yang:date-and-time
| | +--rw locator* [id] | | +--rw authoritative? bits
| | +--rw id | | +--rw static? boolean
| | | string | | +--rw (locator-list)?
| | +--rw locator-address | | +--:(negative-mapping)
| | | +--rw address-type | | | +--rw map-reply-action?
| | | | lisp-address-family-ref | | | map-reply-action
| | | +--rw (address)? | | +--:(positive-mapping)
| | | +--:(no-address) | | +--rw rlocs
| | | | +--rw no-address? | | +--rw locator* [locator-id]
| | | | empty | | +--rw locator-id
| | | +--:(ipv4) | | | string
| | | | +--rw ipv4? | | +--rw locator-address
| | | | inet:ipv4-address | | | +--rw address-type
| | | +--:(ipv4-prefix) | | | | lisp-address-family-ref
| | | | +--rw ipv4-prefix? | | | +--rw (address)?
| | | | inet:ipv4-prefix | | | +--:(no-address)
| | | +--:(ipv6) | | | | +--rw no-address?
| | | | +--rw ipv6? | | | | empty
| | | | inet:ipv6-address | | | +--:(ipv4)
| | | +--:(ipv6-prefix) | | | | +--rw ipv4?
| | | | +--rw ipv6-prefix? | | | | inet:ipv4-address
| | | | inet:ipv6-prefix | | | +--:(ipv4-prefix)
| | | +--:(mac) | | | | +--rw ipv4-prefix?
| | | | +--rw mac? | | | | inet:ipv4-prefix
| | | | yang:mac-address | | | +--:(ipv6)
| | | +--:(distinguished-name) | | | | +--rw ipv6?
| | | | +--rw distinguished-name? | | | | inet:ipv6-address
| | | | distinguished-name-type | | | +--:(ipv6-prefix)
| | | +--:(as-number) | | | | +--rw ipv6-prefix?
| | | | +--rw as-number? | | | | inet:ipv6-prefix
| | | | inet:as-number | | | +--:(mac)
| | | +--:(null-address) | | | | +--rw mac?
| | | | +--rw null-address | | | | yang:mac-address
| | | | +--rw address? | | | +--:(distinguished-name)
| | | | empty | | | | +--rw distinguished-name?
| | | +--:(afi-list) | | | | distinguished-name-type
| | | | +--rw afi-list | | | +--:(as-number)
| | | | +--rw address-list* | | | | +--rw as-number?
| | | | simple-address | | | | inet:as-number
| | | +--:(instance-id) | | | +--:(null-address)
| | | | +--rw instance-id | | | | +--rw null-address
| | | | +--rw instance-id? | | | | +--rw address?
| | | | | instance-id-type | | | | empty
| | | | +--rw mask-length? | | | +--:(afi-list)
| | | | | uint8 | | | | +--rw afi-list
| | | | +--rw address? | | | | +--rw address-list*
| | | | simple-address | | | | simple-address
| | | +--:(as-number-lcaf) | | | +--:(instance-id)
| | | | +--rw as-number-lcaf | | | | +--rw instance-id
| | | | +--rw as? | | | | +--rw instance-id?
| | | | | inet:as-number | | | | | instance-id-type
| | | | +--rw address? | | | | +--rw mask-length?
| | | | simple-address | | | | | uint8
| | | +--:(application-data) | | | | +--rw address?
| | | | +--rw application-data | | | | simple-address
| | | | +--rw address? | | | +--:(as-number-lcaf)
| | | | | simple-address | | | | +--rw as-number-lcaf
| | | | +--rw protocol? | | | | +--rw as?
| | | | | uint8 | | | | | inet:as-number
| | | | +--rw ip-tos? | | | | +--rw address?
| | | | | int32 | | | | simple-address
| | | | +--rw local-port-low? | | | +--:(application-data)
| | | | | inet:port-number | | | | +--rw application-data
| | | | +--rw local-port-high? | | | | +--rw address?
| | | | | inet:port-number | | | | | simple-address
| | | | +--rw remote-port-low? | | | | +--rw protocol?
| | | | | inet:port-number | | | | | uint8
| | | | +--rw remote-port-high? | | | | +--rw ip-tos?
| | | | inet:port-number | | | | | int32
| | | +--:(geo-coordinates) | | | | +--rw local-port-low?
| | | | +--rw geo-coordinates | | | | | inet:port-number
| | | | +--rw latitude? | | | | +--rw local-port-high?
| | | | | bits | | | | | inet:port-number
| | | | +--rw latitude-degrees? | | | | +--rw remote-port-low?
| | | | | uint8 | | | | | inet:port-number
| | | | +--rw latitude-minutes? | | | | +--rw remote-port-high?
| | | | | uint8 | | | | inet:port-number
| | | | +--rw latitude-seconds? | | | +--:(geo-coordinates)
| | | | | uint8 | | | | +--rw geo-coordinates
| | | | +--rw longitude? | | | | +--rw latitude?
| | | | | bits | | | | | bits
| | | | +--rw longitude-degrees? | | | | +--rw latitude-degrees?
| | | | | uint16 | | | | | uint8
| | | | +--rw longitude-minutes? | | | | +--rw latitude-minutes?
| | | | | uint8 | | | | | uint8
| | | | +--rw longitude-seconds? | | | | +--rw latitude-seconds?
| | | | | uint8 | | | | | uint8
| | | | +--rw altitude? | | | | +--rw longitude?
| | | | | int32 | | | | | bits
| | | | +--rw address? | | | | +--rw longitude-degrees?
| | | | simple-address | | | | | uint16
| | | +--:(nat-traversal) | | | | +--rw longitude-minutes?
| | | | +--rw nat-traversal | | | | | uint8
| | | | +--rw ms-udp-port? | | | | +--rw longitude-seconds?
| | | | | uint16 | | | | | uint8
| | | | +--rw etr-udp-port? | | | | +--rw altitude?
| | | | | uint16 | | | | | int32
| | | | +--rw global-etr-rloc? | | | | +--rw address?
| | | | | simple-address | | | | simple-address
| | | | +--rw ms-rloc? | | | +--:(nat-traversal)
| | | | | simple-address | | | | +--rw nat-traversal
| | | | +--rw private-etr-rloc? | | | | +--rw ms-udp-port?
| | | | | simple-address | | | | | uint16
| | | | +--rw rtr-rlocs* | | | | +--rw etr-udp-port?
| | | | simple-address | | | | | uint16
| | | +--:(explicit-locator-path) | | | | +--rw global-etr-rloc?
| | | | +--rw explicit-locator-path | | | | | simple-address
| | | | +--rw hop* [hop-id] | | | | +--rw ms-rloc?
| | | | +--rw hop-id | | | | | simple-address
| | | | | string | | | | +--rw private-etr-rloc?
| | | | +--rw address? | | | | | simple-address
| | | | | simple-address | | | | +--rw rtr-rlocs*
| | | | +--rw lrs-bits? | | | | simple-address
| | | | bits | | | +--:(explicit-locator-path)
| | | +--:(source-dest-key) | | | | +--rw explicit-locator-path
| | | | +--rw source-dest-key | | | | +--rw hop* [hop-id]
| | | | +--rw source? | | | | +--rw hop-id
| | | | | simple-address | | | | | string
| | | | +--rw dest? | | | | +--rw address?
| | | | simple-address | | | | | simple-address
| | | +--:(key-value-address) | | | | +--rw lrs-bits?
| | | | +--rw key-value-address | | | | bits
| | | | +--rw key? | | | +--:(source-dest-key)
| | | | | simple-address | | | | +--rw source-dest-key
| | | | +--rw value? | | | | +--rw source?
| | | | simple-address | | | | | simple-address
| | | +--:(service-path) | | | | +--rw dest?
| | | +--rw service-path | | | | simple-address
| | | +--rw service-path-id? | | | +--:(key-value-address)
| | | | service-path-id-type | | | | +--rw key-value-address
| | | +--rw service-index? | | | | +--rw key?
| | | uint8 | | | | | simple-address
| | +--rw priority? | | | | +--rw value?
| | | uint8 | | | | simple-address
| | +--rw weight? | | | +--:(service-path)
| | | uint8 | | | +--rw service-path
| | +--rw multicast-priority? | | | +--rw service-path-id?
| | | uint8 | | | | service-path-id-type
| | +--rw multicast-weight? | | | +--rw service-index?
| | uint8 | | | uint8
| +--ro counters | | +--rw priority?
| +--ro map-registers-in? yang:counter64 | | | uint8
| +--ro map-registers-in-auth-failed? yang:counter64 | | +--rw weight?
| +--ro map-notify-records-out? yang:counter64 | | | uint8
| +--ro proxy-reply-records-out? yang:counter64 | | +--rw multicast-priority?
| +--ro map-requests-forwarded-out? yang:counter64 | | | uint8
+--rw mapping-system-type? lisp:mapping-system-ref | | +--rw multicast-weight?
+--ro summary | | uint8
| +--ro number-configured-sites? uint32 | +--ro counters
| +--ro number-registered-sites? uint32 | +--ro map-registers-in? yang:counter64
| +--ro af-datum | +--ro map-registers-in-auth-failed? yang:counter64
| +--ro af-data* [address-type] | +--ro map-notify-records-out? yang:counter64
| +--ro address-type | +--ro proxy-reply-records-out? yang:counter64
| | lcaf:lisp-address-family-ref | +--ro map-requests-forwarded-out? yang:counter64
| +--ro number-configured-eids? uint32 +--rw mapping-system-type? lisp:mapping-system-ref
| +--ro number-registered-eids? uint32 +--ro summary
+--ro counters | +--ro number-configured-sites? uint32
+--ro map-registers-in? yang:counter64 | +--ro number-registered-sites? uint32
+--ro map-registers-in-auth-failed? yang:counter64 | +--ro af-datum
+--ro map-notify-records-out? yang:counter64 | +--ro af-data* [address-type]
+--ro proxy-reply-records-out? yang:counter64 | +--ro address-type
+--ro map-requests-forwarded-out? yang:counter64 | | lcaf:lisp-address-family-ref
| +--ro number-configured-eids? uint32
| +--ro number-registered-eids? uint32
+--ro counters
+--ro map-registers-in? yang:counter64
+--ro map-registers-in-auth-failed? yang:counter64
+--ro map-notify-records-out? yang:counter64
+--ro proxy-reply-records-out? yang:counter64
+--ro map-requests-forwarded-out? yang:counter64
5.2. Module Definition 5.2. Module Definition
<CODE BEGINS> file "ietf-lisp-mapserver@2019-03-05.yang" <CODE BEGINS> file "ietf-lisp-mapserver@2019-03-05.yang"
module ietf-lisp-mapserver { module ietf-lisp-mapserver {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-mapserver"; namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-mapserver";
prefix lisp-ms; 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 // and remove this note
import ietf-lisp { import ietf-lisp {
prefix lisp; prefix lisp;
reference "RFC XXXX: LISP YANG model"; reference "RFC XXXX: LISP YANG model";
} }
import ietf-lisp-address-types { import ietf-lisp-address-types {
prefix lcaf; prefix lcaf;
reference "RFC XXXX: LISP YANG model"; reference "RFC XXXX: LISP YANG model";
} }
import ietf-yang-types { import ietf-yang-types {
prefix yang; prefix yang;
reference "RFC 6991: Common YANG Data Types"; reference "RFC 6991: Common YANG Data Types";
} }
import ietf-routing { import ietf-routing {
prefix "rt"; prefix "rt";
reference reference
"RFC 8349: A YANG Data Model for Routing Management "RFC 8349: A YANG Data Model for Routing Management
(NMDA version)"; (NMDA version)";
} }
organization organization
"IETF LISP (Locator/ID Separation Protocol) Working Group"; "IETF LISP (Locator/ID Separation Protocol) Working Group";
contact contact
"WG Web: <http://tools.ietf.org/wg/lisp/> "WG Web: <http://tools.ietf.org/wg/lisp/>
WG List: <mailto:lisp@ietf.org> WG List: <mailto:lisp@ietf.org>
Editor: Vina Ermagan Editor: Vina Ermagan
<mailto:ermagan@gmail.com> <mailto:ermagan@gmail.com>
Editor: Alberto Rodriguez-Natal Editor: Alberto Rodriguez-Natal
<mailto:natal@cisco.com> <mailto:natal@cisco.com>
Editor: Reshad Rahman Editor: Reshad Rahman
<mailto:rrahman@cisco.com>"; <mailto:rrahman@cisco.com>";
description description
"This YANG module defines the generic parameters for a LISP "This YANG module defines the generic parameters for a LISP
Map-Server. The module can be extended by vendors to define Map-Server. The module can be extended by vendors to define
vendor-specific parameters and policies. vendor-specific parameters and policies.
Copyright (c) 2018 IETF Trust and the persons identified as Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (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"; This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices.
";
revision 2019-03-05 { reference "RFC XXXX";
description
"Initial revision.";
reference
"https://tools.ietf.org/html/rfc6833";
}
identity ms { revision 2019-03-05 {
base lisp:lisp-role; description
description "Initial revision.";
"LISP Map-Server.";
}
grouping ms-counters { reference
description "Grouping that defines map-server counters."; "https://tools.ietf.org/html/rfc6833";
container counters { }
config false;
description "Container for the counters";
leaf map-registers-in { identity ms {
type yang:counter64; base lisp:lisp-role;
description "Number of incoming Map-Register messages"; description
} "LISP Map-Server.";
}
leaf map-registers-in-auth-failed { grouping ms-counters {
type yang:counter64; description "Grouping that defines map-server counters.";
description container counters {
"Number of incoming Map-Register messages failed config false;
authentication"; description "Container for the counters";
}
leaf map-notify-records-out { leaf map-registers-in {
type yang:counter64; type yang:counter64;
description description "Number of incoming Map-Register messages";
"Number of outgoing Map-Notify records"; }
}
leaf proxy-reply-records-out { leaf map-registers-in-auth-failed {
type yang:counter64; type yang:counter64;
description description
"Number of outgoing proxy Map-Reply records"; "Number of incoming Map-Register messages failed
} authentication";
leaf map-requests-forwarded-out { }
type yang:counter64;
description
"Number of outgoing Map-Requests forwarded to ETR";
}
}
}
augment "/rt:routing/rt:control-plane-protocols" leaf map-notify-records-out {
+ "/rt:control-plane-protocol/lisp:lisp" { type yang:counter64;
when "lisp:lisp-role/lisp:lisp-role-type = 'lisp-ms:ms'" { description
description "Number of outgoing Map-Notify records";
"Augment is valid when LISP device type is Map-Server."; }
}
description
"This augments 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
"Site that can send registrations.";
leaf site-id {
type uint64;
description "Site ID";
}
uses lisp:auth-key;
list xtr-ids {
key xtr-id;
description "xTR-ID specific configuration.";
leaf xtr-id {
type uint64;
description "xTR ID";
}
uses lisp:auth-key;
}
}
}
container vpns {
description
"VPNs for which the Map-Server accepts registrations.";
list vpn {
key "instance-id";
description
"VPN instances in the Map-Server.";
leaf instance-id {
type lcaf:instance-id-type;
description
"VPN identifier.";
}
container mappings {
description
"EIDs registered by device.";
list mapping {
key "eid-id";
description
"List of EIDs registered by device.";
leaf eid-id {
type lisp:eid-id;
description
"Id of the EID registered.";
}
container eid-address {
uses lcaf:lisp-address;
description
"EID in generic LISP address format registered
with the Map-Server.";
}
leaf-list site-id {
type uint64;
description "Site ID";
}
leaf more-specifics-accepted {
type boolean;
default "false";
description
"Flag indicating if more specific prefixes
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.";
}
leaf first-registration-time {
type yang:date-and-time;
config false;
description
"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
"Datastore of registered mappings.";
list mapping-record {
key xtr-id;
description
"Registered mapping.";
leaf xtr-id {
type lisp:xtr-id-type;
description "xTR ID";
}
leaf site-id {
type uint64;
description "Site ID";
}
uses lisp:mapping;
}
}
}
}
uses ms-counters;
}
}
leaf mapping-system-type {
type lisp:mapping-system-ref;
description
"A reference to the mapping system";
}
container summary { leaf proxy-reply-records-out {
config false; type yang:counter64;
description "Summary state information"; description
"Number of outgoing proxy Map-Reply records";
}
leaf number-configured-sites { leaf map-requests-forwarded-out {
type uint32; type yang:counter64;
description "Number of configured LISP sites"; description
} "Number of outgoing Map-Requests forwarded to ETR";
leaf number-registered-sites { }
type uint32; }
description "Number of registered LISP sites"; }
}
container af-datum {
description "Number of configured EIDs per each AF";
list af-data { augment "/rt:routing/rt:control-plane-protocols"
key "address-type"; + "/rt:control-plane-protocol/lisp:lisp" {
description "Number of configured EIDs for this AF"; when "lisp:lisp-role/lisp:lisp-role-type = 'lisp-ms:ms'" {
leaf address-type { description
type lcaf:lisp-address-family-ref; "Augment is valid when LISP device type is Map-Server.";
description "AF type"; }
} description
leaf number-configured-eids { "This augments the LISP devices list with Map-Server
type uint32; specific parameters.";
description "Number of configured EIDs for this AF"; container map-server {
} presence "LISP Map-Server operation enabled";
leaf number-registered-eids { description
type uint32; "Map-Server parameters.";
description "Number of registered EIDs for this AF"; container sites{
} description
} "Sites to accept registrations from.";
} list site {
} key site-id;
uses ms-counters; description
} "Site that can send registrations.";
} leaf site-id {
} type uint64;
<CODE ENDS> description "Site ID";
}
uses lisp:auth-key;
list xtr-ids {
key xtr-id;
description "xTR-ID specific configuration.";
leaf xtr-id {
type uint64;
description "xTR ID";
}
uses lisp:auth-key;
}
}
}
container vpns {
description
"VPNs for which the Map-Server accepts registrations.";
list vpn {
key "instance-id";
description
"VPN instances in the Map-Server.";
leaf instance-id {
type lcaf:instance-id-type;
description
"VPN identifier.";
}
container mappings {
description
"EIDs registered by device.";
list mapping {
key "eid-id";
description
"List of EIDs registered by device.";
leaf eid-id {
type lisp:eid-id;
description
"Id of the EID registered.";
}
container eid-address {
uses lcaf:lisp-address;
description
"EID in generic LISP address format registered
with the Map-Server.";
}
leaf-list site-id {
type uint64;
description "Site ID";
}
leaf more-specifics-accepted {
type boolean;
default "false";
description
"Flag indicating if more specific prefixes
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.";
}
leaf first-registration-time {
type yang:date-and-time;
config false;
description
"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
"Datastore of registered mappings.";
list mapping-record {
key xtr-id;
description
"Registered mapping.";
leaf xtr-id {
type lisp:xtr-id-type;
description "xTR ID";
}
leaf site-id {
type uint64;
description "Site ID";
}
uses lisp:mapping;
}
}
}
}
uses ms-counters;
}
}
leaf mapping-system-type {
type lisp:mapping-system-ref;
description
"A reference to the mapping system";
}
container summary {
config false;
description "Summary state information";
leaf number-configured-sites {
type uint32;
description "Number of configured LISP sites";
}
leaf number-registered-sites {
type uint32;
description "Number of registered LISP sites";
}
container af-datum {
description "Number of configured EIDs per each AF";
list af-data {
key "address-type";
description "Number of configured EIDs for this AF";
leaf address-type {
type lcaf:lisp-address-family-ref;
description "AF type";
}
leaf number-configured-eids {
type uint32;
description "Number of configured EIDs for this AF";
}
leaf number-registered-eids {
type uint32;
description "Number of registered EIDs for this AF";
}
}
}
}
uses ms-counters;
}
}
}
<CODE ENDS>
6. LISP-Map-Resolver Module 6. LISP-Map-Resolver Module
This module captures the configuration data model of a LISP Map This module captures the configuration data model of a LISP Map
Resolver [RFC6833]. The model also captures some operational data Resolver [RFC6833]. The model also captures some operational data
elements. elements.
6.1. Module Structure 6.1. Module Structure
module: ietf-lisp-mapresolver module: ietf-lisp-mapresolver
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/lisp:lisp: /rt:control-plane-protocol/lisp:lisp:
+--rw map-resolver! +--rw map-resolver!
+--rw mapping-system-type? lisp:mapping-system-ref +--rw mapping-system-type? lisp:mapping-system-ref
+--rw ms-address? inet:ip-address +--rw ms-address? inet:ip-address
6.2. Module Definition 6.2. Module Definition
<CODE BEGINS> file "ietf-lisp-mapresolver@2019-02-23.yang" <CODE BEGINS> file "ietf-lisp-mapresolver@2019-02-23.yang"
module ietf-lisp-mapresolver { module ietf-lisp-mapresolver {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-mapresolver"; namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-mapresolver";
prefix lisp-mr; prefix lisp-mr;
// 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 {
prefix "rt";
reference
"RFC 8349: A YANG Data Model for Routing Management
(NMDA version)";
}
// RFC Ed.: replace occurences of XXXX with actual RFC number organization
// and remove this note "IETF LISP (Locator/ID Separation Protocol) Working Group";
import ietf-lisp { contact
prefix lisp; "WG Web: <http://tools.ietf.org/wg/lisp/>
reference "RFC XXXX: LISP YANG model"; WG List: <mailto:lisp@ietf.org>
}
import ietf-inet-types {
prefix inet;
reference "RFC 6991: Common YANG Data Types";
}
import ietf-routing {
prefix "rt";
reference
"RFC 8349: A YANG Data Model for Routing Management
(NMDA version)";
}
organization Editor: Vina Ermagan
"IETF LISP (Locator/ID Separation Protocol) Working Group"; <mailto:ermagan@gmail.com>
contact
"WG Web: <http://tools.ietf.org/wg/lisp/>
WG List: <mailto:lisp@ietf.org>
Editor: Vina Ermagan Editor: Alberto Rodriguez-Natal
<mailto:ermagan@gmail.com> <mailto:natal@cisco.com>
Editor: Alberto Rodriguez-Natal Editor: Reshad Rahman
<mailto:natal@cisco.com> <mailto:rrahman@cisco.com>";
description
"This YANG module defines the generic parameters for a LISP
Map-Resolver. The module can be extended by vendors to define
vendor-specific parameters and policies.
Editor: Reshad Rahman Copyright (c) 2018 IETF Trust and the persons identified as
<mailto:rrahman@cisco.com>"; authors of the code. All rights reserved.
description
"This YANG module defines the generic parameters for a LISP
Map-Resolver. The module can be extended by vendors to define
vendor-specific parameters and policies.
Copyright (c) 2018 IETF Trust and the persons identified as Redistribution and use in source and binary forms, with or
authors of the code. All rights reserved. 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).
Redistribution and use in source and binary forms, with or This version of this YANG module is part of RFC XXXX; see
without modification, is permitted pursuant to, and subject the RFC itself for full legal notices.
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"; reference "RFC XXXX";
revision 2019-02-23 { revision 2019-02-23 {
description description
"Initial revision."; "Initial revision.";
reference reference
"https://tools.ietf.org/html/rfc6833"; "https://tools.ietf.org/html/rfc6833";
} }
identity mr { identity mr {
base lisp:lisp-role; base lisp:lisp-role;
description description
"LISP Map-Resolver."; "LISP Map-Resolver.";
} }
augment "/rt:routing/rt:control-plane-protocols" augment "/rt:routing/rt:control-plane-protocols"
+ "/rt:control-plane-protocol/lisp:lisp" { + "/rt:control-plane-protocol/lisp:lisp" {
when "lisp:lisp-role/lisp:lisp-role-type = 'lisp-mr:mr'" { when "lisp:lisp-role/lisp:lisp-role-type = 'lisp-mr:mr'" {
description description
"Augment is valid when LISP device type is Map-Resolver."; "Augment is valid when LISP device type is Map-Resolver.";
} }
description description
"This augments LISP devices list with Map-Resolver specific "This augments the LISP devices list with Map-Resolver
parameters."; specific parameters.";
container map-resolver { container map-resolver {
presence "LISP Map-Resolver operation enabled"; presence "LISP Map-Resolver operation enabled";
description description
"Map-Resolver parameters."; "Map-Resolver parameters.";
leaf mapping-system-type { leaf mapping-system-type {
type lisp:mapping-system-ref; type lisp:mapping-system-ref;
description description
"A reference to the mapping system"; "A reference to the mapping system";
} }
leaf ms-address { leaf ms-address {
when "../mapping-system-type='lisp:single-node-mapping-system'"; when "../mapping-system-type="
type inet:ip-address; + "'lisp:single-node-mapping-system'";
description type inet:ip-address;
"address to reach the Map Server when " description
+ "lisp-mr:single-node-mapping-system is being used."; "address to reach the Map Server when "
} + "lisp-mr:single-node-mapping-system is being used.";
} }
} }
} }
<CODE ENDS> }
<CODE ENDS>
7. LISP-Address-Types Module 7. LISP-Address-Types Module
This module captures the various LISP address types, and is an This module captures the various LISP address types, and is an
essential building block used in other LISP modules. essential building block used in other LISP modules.
7.1. Module Definition 7.1. Module Definition
<CODE BEGINS> file "ietf-lisp-address-types@2019-02-23.yang" <CODE BEGINS> file "ietf-lisp-address-types@2019-09-07.yang"
module ietf-lisp-address-types { module ietf-lisp-address-types {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-address-types"; namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-address-types";
prefix laddr; prefix laddr;
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
reference "RFC 6991: Common YANG Data Types"; reference "RFC 6991: Common YANG Data Types";
skipping to change at page 51, line 24 skipping to change at page 52, line 17
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices. the RFC itself for full legal notices.
"; ";
// RFC Ed.: replace XXXX with actual RFC number and remove // RFC Ed.: replace XXXX with actual RFC number and remove
// this note // this note
reference "RFC XXXX"; reference "RFC XXXX";
revision 2019-02-23 { revision 2019-09-07 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RC8060: LISP Canonical Address Format (LCAF)"; "RC8060: LISP Canonical Address Format (LCAF)";
} }
identity lisp-address-family { identity lisp-address-family {
description description
"Base identity from which identities describing LISP address "Base identity from which identities describing LISP address
families are derived."; families are derived.";
} }
skipping to change at page 59, line 48 skipping to change at page 60, line 40
description description
"High end of remote port range."; "High end of remote port range.";
} }
} }
container geo-coordinates { container geo-coordinates {
when "../address-type = 'laddr:geo-coordinates-lcaf'" { when "../address-type = 'laddr:geo-coordinates-lcaf'" {
description description
"When LCAF type is Geo-coordinates."; "When LCAF type is Geo-coordinates.";
} }
description description
"Geo-coordinates LCAF type."; "Geo-coordinates LCAF type. Coordinates are specified
using the WGS 84 (World Geodetic System 1984) reference
coordinate system";
reference reference
"http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10
#section-4.5"; #section-4.5";
leaf latitude { leaf latitude {
type bits { type bits {
bit N { bit N {
description description
"Latitude bit."; "Latitude bit.";
} }
} }
description description
"Bit that selects between North and South latitude."; "Bit that selects between North and South latitude.";
} }
leaf latitude-degrees { leaf latitude-degrees {
type uint8 { type uint8 {
range "0 .. 90"; range "0 .. 90";
} }
description description
"Degrees of latitude."; "Degrees of latitude.";
skipping to change at page 62, line 40 skipping to change at page 63, line 35
"http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10
#section-4.9"; #section-4.9";
list hop { list hop {
key "hop-id"; key "hop-id";
ordered-by user; ordered-by user;
description description
"List of locator hops forming the explicit path."; "List of locator hops forming the explicit path.";
leaf hop-id { leaf hop-id {
type string { type string {
length "1..64"; length "1..64";
pattern '[a-zA-Z0-9\-_.:]*';
} }
description description
"Unique identifier for the hop."; "Unique identifier for the hop.";
} }
leaf address { leaf address {
type simple-address; type simple-address;
description description
"AFI address."; "AFI address.";
} }
leaf lrs-bits { leaf lrs-bits {
skipping to change at page 69, line 9 skipping to change at page 70, line 9
</lisp> </lisp>
</control-plane-protocol> </control-plane-protocol>
</control-plane-protocols> </control-plane-protocols>
</routing> </routing>
</config> </config>
7.2.4. LISP Map-Server 7.2.4. LISP Map-Server
The following is an example configuration for Map-Server The following is an example configuration for Map-Server
functionality under "LISP1". There are 2 mappings configured. functionality under "LISP1". There are 2 mappings configured.
<config xmlns="http://tail-f.com/ns/config/1.0"> <?xml version="1.0" encoding="UTF-8"?>
<config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> <routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing">
<control-plane-protocols> <control-plane-protocols>
<control-plane-protocol> <control-plane-protocol>
<type xmlns:lisp="urn:ietf:params:xml:ns:yang:ietf-lisp"> <type xmlns:lisp="urn:ietf:params:xml:ns:yang:ietf-lisp">
lisp:lisp lisp:lisp
</type> </type>
<name>LISP1</name> <name>LISP1</name>
<lisp xmlns="urn:ietf:params:xml:ns:yang:ietf-lisp"> <lisp xmlns="urn:ietf:params:xml:ns:yang:ietf-lisp">
<lisp-role> <lisp-role>
<lisp-role-type xmlns:lisp-ms= <lisp-role-type xmlns:lisp-ms=
skipping to change at page 69, line 50 skipping to change at page 71, line 4
<vpns> <vpns>
<vpn> <vpn>
<instance-id>1000</instance-id> <instance-id>1000</instance-id>
<mappings> <mappings>
<mapping> <mapping>
<eid-id>1</eid-id> <eid-id>1</eid-id>
<eid-address> <eid-address>
<address-type xmlns:laddr= <address-type xmlns:laddr=
"urn:ietf:params:xml:ns:yang:ietf-lisp-address-types"> "urn:ietf:params:xml:ns:yang:ietf-lisp-address-types">
laddr:ipv6-prefix-afi laddr:ipv6-prefix-afi
</address-type>
</address-type>
<ipv6-prefix>2001:db8:400:0:100::/80</ipv6-prefix> <ipv6-prefix>2001:db8:400:0:100::/80</ipv6-prefix>
</eid-address> </eid-address>
</mapping> </mapping>
</mappings> </mappings>
</vpn> </vpn>
<vpn> <vpn>
<instance-id>2000</instance-id> <instance-id>2000</instance-id>
<mappings> <mappings>
<mapping> <mapping>
<eid-id>1</eid-id> <eid-id>1</eid-id>
 End of changes. 176 change blocks. 
1661 lines changed or deleted 1714 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/