draft-ietf-lisp-yang-07.txt   draft-ietf-lisp-yang-08.txt 
LISP Working Group V. Ermagan LISP Working Group V. Ermagan
Internet-Draft A. Rodriguez-Natal Internet-Draft A. Rodriguez-Natal
Intended status: Experimental F. Coras Intended status: Experimental F. Coras
Expires: September 6, 2018 C. Moberg Expires: December 31, 2018 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 5, 2018 June 29, 2018
LISP YANG Model LISP YANG Model
draft-ietf-lisp-yang-07 draft-ietf-lisp-yang-08
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 41 skipping to change at page 1, line 41
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 6, 2018. This Internet-Draft will expire on December 31, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the Copyright (c) 2018 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
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. LISP Module . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3
1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3
2. LISP Module . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1. Module Structure . . . . . . . . . . . . . . . . . . . . 3 2.1. Module Structure . . . . . . . . . . . . . . . . . . . . 3
2.2. Module Definition . . . . . . . . . . . . . . . . . . . . 5 2.2. Module Definition . . . . . . . . . . . . . . . . . . . . 6
3. LISP-ITR Module . . . . . . . . . . . . . . . . . . . . . . . 13 3. LISP-ITR Module . . . . . . . . . . . . . . . . . . . . . . . 16
3.1. Module Structure . . . . . . . . . . . . . . . . . . . . 14 3.1. Module Structure . . . . . . . . . . . . . . . . . . . . 16
3.2. Module Definition . . . . . . . . . . . . . . . . . . . . 18 3.2. Module Definition . . . . . . . . . . . . . . . . . . . . 21
4. LISP-ETR Module . . . . . . . . . . . . . . . . . . . . . . . 21 4. LISP-ETR Module . . . . . . . . . . . . . . . . . . . . . . . 25
4.1. Module Structure . . . . . . . . . . . . . . . . . . . . 21 4.1. Module Structure . . . . . . . . . . . . . . . . . . . . 25
4.2. Module Definition . . . . . . . . . . . . . . . . . . . . 23 4.2. Module Definition . . . . . . . . . . . . . . . . . . . . 27
5. LISP-Map-Server Module . . . . . . . . . . . . . . . . . . . 27 5. LISP-Map-Server Module . . . . . . . . . . . . . . . . . . . 31
5.1. Module Structure . . . . . . . . . . . . . . . . . . . . 27 5.1. Module Structure . . . . . . . . . . . . . . . . . . . . 32
5.2. Module Definition . . . . . . . . . . . . . . . . . . . . 33 5.2. Module Definition . . . . . . . . . . . . . . . . . . . . 40
6. LISP-Map-Resolver Module . . . . . . . . . . . . . . . . . . 39 6. LISP-Map-Resolver Module . . . . . . . . . . . . . . . . . . 46
6.1. Module Structure . . . . . . . . . . . . . . . . . . . . 39 6.1. Module Structure . . . . . . . . . . . . . . . . . . . . 46
6.2. Module Definition . . . . . . . . . . . . . . . . . . . . 39 6.2. Module Definition . . . . . . . . . . . . . . . . . . . . 47
7. LISP-Address-Types Module . . . . . . . . . . . . . . . . . . 41 7. LISP-Address-Types Module . . . . . . . . . . . . . . . . . . 49
7.1. Module Definition . . . . . . . . . . . . . . . . . . . . 41 7.1. Module Definition . . . . . . . . . . . . . . . . . . . . 49
8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 55 7.2. Data Model examples . . . . . . . . . . . . . . . . . . . 63
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 55 7.2.1. LISP protocol instance . . . . . . . . . . . . . . . 64
10. Security Considerations . . . . . . . . . . . . . . . . . . . 56 7.2.2. LISP ITR . . . . . . . . . . . . . . . . . . . . . . 65
11. Normative References . . . . . . . . . . . . . . . . . . . . 56 7.2.3. LISP ETR . . . . . . . . . . . . . . . . . . . . . . 65
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 56 7.2.4. LISP Map-Server . . . . . . . . . . . . . . . . . . . 67
8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 68
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 68
10. Security Considerations . . . . . . . . . . . . . . . . . . . 70
11. Normative References . . . . . . . . . . . . . . . . . . . . 70
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 71
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.
1.1. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in BCP 14 [RFC2119]
[RFC8174] when, and only when, they appear in all capitals, as shown
here.
1.2. Tree Diagrams
This document uses the graphical representation of data models
defined in [RFC8340].
2. LISP Module 2. LISP Module
This module is the base LISP module that is augmented in multiple This module is the base LISP module that is augmented in multiple
models to represent various LISP device roles. models to represent various LISP device roles.
2.1. Module Structure 2.1. Module Structure
module: ietf-lisp module: ietf-lisp
+--rw lisp augment /rt:routing/rt:control-plane-protocols
+--rw locator-sets /rt:control-plane-protocol:
| +--rw locator-set* [locator-set-name] +--rw lisp
| +--rw locator-set-name string +--rw locator-sets
| +--rw (locator-type)? | +--rw locator-set* [locator-set-name]
| +--:(local-interface) | +--rw locator-set-name string
| | +--rw interface* [interface-ref] | +--rw (locator-type)?
| | +--rw interface-ref if:interface-ref | +--:(local-interface)
| | +--rw priority? uint8 | | +--rw interface* [interface-ref]
| | +--rw weight? uint8 | | +--rw interface-ref if:interface-ref
| | +--rw multicast-priority? uint8 | | +--rw priority? uint8
| | +--rw multicast-weight? uint8 | | +--rw weight? uint8
| +--:(general-locator) | | +--rw multicast-priority? uint8
| +--rw locator* [id] | | +--rw multicast-weight? uint8
| +--rw id string | +--:(general-locator)
| +--rw locator-address | +--rw locator* [id]
| | +--rw address-type lisp-address-family-ref | +--rw id string
| | +--rw virtual-network-id? instance-id-type | +--rw locator-address
| | +--rw (address)? | | +--rw address-type
| | +--:(no-address) | | | lisp-address-family-ref
| | | +--rw no-address? empty | | +--rw virtual-network-id?
| | +--:(ipv4) | | | instance-id-type
| | | +--rw ipv4? inet:ipv4-address | | +--rw (address)?
| | +--:(ipv4-prefix) | | +--:(no-address)
| | | +--rw ipv4-prefix? inet:ipv4-prefix | | | +--rw no-address? empty
| | +--:(ipv6) | | +--:(ipv4)
| | | +--rw ipv6? inet:ipv6-address | | | +--rw ipv4?
| | +--:(ipv6-prefix) | | | inet:ipv4-address
| | | +--rw ipv6-prefix? inet:ipv6-prefix | | +--:(ipv4-prefix)
| | +--:(mac) | | | +--rw ipv4-prefix?
| | | +--rw mac? yang:mac-address | | | inet:ipv4-prefix
| | +--:(distinguished-name) | | +--:(ipv6)
| | | +--rw distinguished-name? distinguished-name-type | | | +--rw ipv6?
| | +--:(as-number) | | | inet:ipv6-address
| | | +--rw as-number? inet:as-number | | +--:(ipv6-prefix)
| | +--:(null-address) | | | +--rw ipv6-prefix?
| | | +--rw null-address | | | inet:ipv6-prefix
| | | +--rw address? empty | | +--:(mac)
| | +--:(afi-list) | | | +--rw mac?
| | | +--rw afi-list | | | yang:mac-address
| | | +--rw address-list* simple-address | | +--:(distinguished-name)
| | +--:(instance-id) | | | +--rw distinguished-name?
| | | +--rw instance-id | | | distinguished-name-type
| | | +--rw iid? instance-id-type | | +--:(as-number)
| | | +--rw mask-length? uint8 | | | +--rw as-number?
| | | +--rw address? simple-address | | | inet:as-number
| | +--:(as-number-lcaf) | | +--:(null-address)
| | | +--rw as-number-lcaf | | | +--rw null-address
| | | +--rw as? inet:as-number | | | +--rw address? empty
| | | +--rw address? simple-address | | +--:(afi-list)
| | +--:(application-data) | | | +--rw afi-list
| | | +--rw application-data | | | +--rw address-list*
| | | +--rw address? simple-address | | | simple-address
| | | +--rw protocol? uint8 | | +--:(instance-id)
| | | +--rw ip-tos? int32 | | | +--rw instance-id
| | | +--rw local-port-low? inet:port-number | | | +--rw iid?
| | | +--rw local-port-high? inet:port-number | | | | instance-id-type
| | | +--rw remote-port-low? inet:port-number | | | +--rw mask-length? uint8
| | | +--rw remote-port-high? inet:port-number | | | +--rw address? simple-address
| | +--:(geo-coordinates) | | +--:(as-number-lcaf)
| | | +--rw geo-coordinates | | | +--rw as-number-lcaf
| | | +--rw latitude? bits | | | +--rw as? inet:as-number
| | | +--rw latitude-degrees? uint8 | | | +--rw address? simple-address
| | | +--rw latitude-minutes? uint8 | | +--:(application-data)
| | | +--rw latitude-seconds? uint8 | | | +--rw application-data
| | | +--rw longitude? bits | | | +--rw address?
| | | +--rw longitude-degrees? uint16 | | | | simple-address
| | | +--rw longitude-minutes? uint8 | | | +--rw protocol? uint8
| | | +--rw longitude-seconds? uint8 | | | +--rw ip-tos? int32
| | | +--rw altitude? int32 | | | +--rw local-port-low?
| | | +--rw address? simple-address | | | | inet:port-number
| | +--:(nat-traversal) | | | +--rw local-port-high?
| | | +--rw nat-traversal | | | | inet:port-number
| | | +--rw ms-udp-port? uint16 | | | +--rw remote-port-low?
| | | +--rw etr-udp-port? uint16 | | | | inet:port-number
| | | +--rw global-etr-rloc? simple-address | | | +--rw remote-port-high?
| | | +--rw ms-rloc? simple-address | | | inet:port-number
| | | +--rw private-etr-rloc? simple-address | | +--:(geo-coordinates)
| | | +--rw rtr-rlocs* simple-address | | | +--rw geo-coordinates
| | +--:(explicit-locator-path) | | | +--rw latitude? bits
| | | +--rw explicit-locator-path | | | +--rw latitude-degrees? uint8
| | | +--rw hop* [hop-id] | | | +--rw latitude-minutes? uint8
| | | +--rw hop-id string | | | +--rw latitude-seconds? uint8
| | | +--rw address? simple-address | | | +--rw longitude? bits
| | | +--rw lrs-bits? bits | | | +--rw longitude-degrees? uint16
| | +--:(source-dest-key) | | | +--rw longitude-minutes? uint8
| | | +--rw source-dest-key | | | +--rw longitude-seconds? uint8
| | | +--rw source? simple-address | | | +--rw altitude? int32
| | | +--rw dest? simple-address | | | +--rw address?
| | +--:(key-value-address) | | | simple-address
| | | +--rw key-value-address | | +--:(nat-traversal)
| | | +--rw key? simple-address | | | +--rw nat-traversal
| | | +--rw value? simple-address | | | +--rw ms-udp-port? uint16
| | +--:(service-path) | | | +--rw etr-udp-port? uint16
| | +--rw service-path | | | +--rw global-etr-rloc?
| | +--rw service-path-id? service-path-id-type | | | | simple-address
| | +--rw service-index? uint8 | | | +--rw ms-rloc?
| +--rw priority? uint8 | | | | simple-address
| +--rw weight? uint8 | | | +--rw private-etr-rloc?
| +--rw multicast-priority? uint8 | | | | simple-address
| +--rw multicast-weight? uint8 | | | +--rw rtr-rlocs*
+--rw lisp-router-instances | | | simple-address
+--rw lisp-router-instance* [lisp-router-instance-id] | | +--:(explicit-locator-path)
+--rw lisp-router-instance-id int32 | | | +--rw explicit-locator-path
+--rw lisp-role* [lisp-role-type] | | | +--rw hop* [hop-id]
| +--rw lisp-role-type lisp-role-ref | | | +--rw hop-id string
+--rw lisp-router-id | | | +--rw address? simple-address
+--rw site-id? uint64 | | | +--rw lrs-bits? bits
+--rw xtr-id? lisp:xtr-id-type | | +--:(source-dest-key)
| | | +--rw source-dest-key
| | | +--rw source? simple-address
| | | +--rw dest? simple-address
| | +--:(key-value-address)
| | | +--rw key-value-address
| | | +--rw key? simple-address
| | | +--rw value? simple-address
| | +--:(service-path)
| | +--rw service-path
| | +--rw service-path-id?
| | | service-path-id-type
| | +--rw service-index? uint8
| +--rw priority? uint8
| +--rw weight? uint8
| +--rw multicast-priority? uint8
| +--rw multicast-weight? uint8
+--rw lisp-role* [lisp-role-type]
| +--rw lisp-role-type lisp-role-ref
+--rw lisp-router-id
| +--rw site-id? uint64
| +--rw xtr-id? lisp:xtr-id-type
+--rw virtual-networks
+--rw virtual-network* [vni]
+--rw vni lcaf:instance-id-type
+--rw ni-name?
-> /ni:network-instances/network-instance/name
2.2. Module Definition 2.2. Module Definition
<CODE BEGINS> file "ietf-lisp@2018-03-05.yang" <CODE BEGINS> file "ietf-lisp@2018-06-29.yang"
module ietf-lisp { module ietf-lisp {
namespace "urn:ietf:params:xml:ns:yang:ietf-lisp"; yang-version 1.1;
prefix lisp;
import ietf-interfaces {
prefix if;
}
import ietf-lisp-address-types {
prefix lcaf;
}
import ietf-yang-types {
prefix yang;
}
organization
"IETF LISP (Locator/ID Separation Protocol) Working Group";
contact
"WG Web: <http://tools.ietf.org/wg/lisp/>
WG List: <mailto:lisp@ietf.org>
Editor: Vina Ermagan namespace "urn:ietf:params:xml:ns:yang:ietf-lisp";
<mailto:vermagan@cisco.com>
Editor: Alberto Rodriguez-Natal prefix lisp;
<mailto:natal@cisco.com>
Editor: Reshad Rahman import ietf-interfaces {
<mailto:rrahman@cisco.com>"; prefix if;
description reference
"This YANG module defines the generic parameters for LISP. "RFC 8343: A YANG Data Model for Interface Management";
}
// RFC Ed.: replace occurences of XXXX with actual RFC number
// and remove this note
import ietf-lisp-address-types {
prefix lcaf;
reference "RFC XXXX: LISP YANG model";
}
import ietf-yang-types {
prefix yang;
reference "RFC 6991: Common YANG Data Types";
}
import ietf-routing {
prefix "rt";
reference
"RFC 8349: A YANG Data Model for Routing Management
(NMDA version)";
}
import ietf-network-instance {
prefix "ni";
// RFC Ed.: replace occurences of YYYY with actual RFC number
// of draft-ietf-rtgwg-ni-model and remove this note
reference
"RFC YYYY: YANG Model for Network Instances";
}
The module can be extended by vendors to define vendor-specific organization
LISP parameters and policies. "IETF LISP (Locator/ID Separation Protocol) Working Group";
contact
"WG Web: <http://tools.ietf.org/wg/lisp/>
WG List: <mailto:lisp@ietf.org>
Copyright (c) 2018 IETF Trust and the persons identified as Editor: Vina Ermagan
authors of the code. All rights reserved. <mailto:vermagan@cisco.com>
Redistribution and use in source and binary forms, with or Editor: Alberto Rodriguez-Natal
without modification, is permitted pursuant to, and subject <mailto:natal@cisco.com>
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 Editor: Reshad Rahman
the RFC itself for full legal notices. <mailto:rrahman@cisco.com>";
"; description
// RFC Ed.: replace XXXX with actual RFC number and remove "This YANG module defines the generic parameters for LISP.
// this note The module can be extended by vendors to define vendor-specific
reference "RFC XXXX"; LISP parameters and policies.
revision 2018-03-05 { Copyright (c) 2018 IETF Trust and the persons identified as
description authors of the code. All rights reserved.
"Initial revision.";
reference Redistribution and use in source and binary forms, with or
"https://tools.ietf.org/html/rfc6830"; without modification, is permitted pursuant to, and subject
} to the license terms contained in, the Simplified BSD License
identity lisp-role { set forth in Section 4.c of the IETF Trust's Legal Provisions
description Relating to IETF Documents
"LISP router role."; (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices.
";
reference "RFC XXXX";
revision 2018-06-29 {
description
"Initial revision.";
reference
"https://tools.ietf.org/html/rfc6830";
}
/*
* Identity definitions
*/
identity lisp {
base "rt:control-plane-protocol";
description "LISP protocol.";
reference
"RFC 6830: The Locator/ID Separation Protocol (LISP).";
}
identity lisp-role {
description
"LISP router role.";
}
identity itr {
base lisp-role;
description
"LISP ITR.";
}
identity pitr {
base lisp-role;
description
"LISP PITR.";
}
identity etr {
base lisp-role;
description
"LISP ETR.";
}
identity petr {
base lisp-role;
description
"LISP PETR.";
}
identity mapping-system {
description
"Mapping System interface";
}
identity single-node-mapping-system {
base mapping-system;
description
"logically singular Map Server";
}
typedef mapping-system-ref {
type identityref {
base mapping-system;
} }
identity itr { description
"Mapping System reference";
}
typedef lisp-role-ref {
type identityref {
base lisp-role; base lisp-role;
description
"LISP ITR.";
} }
identity pitr { description
base lisp-role; "LISP role reference";
description }
"LISP PITR."; typedef map-reply-action {
type enumeration {
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.";
}
} }
identity etr { description
base lisp-role; "Defines the lisp map-cache ACT type";
description reference "https://tools.ietf.org/html/rfc6830#section-6.1.4";
"LISP ETR."; }
typedef eid-id {
type string;
description
"Type encoding of lisp-addresses to be generally used in EID
keyed lists.";
}
typedef auth-key-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.";
}
} }
identity petr { description
base lisp-role; "Enumeration of the authentication mechanisms supported by
description LISP.";
"LISP PETR."; reference
"https://tools.ietf.org/html/rfc6830#section-6.1.6";
}
typedef xtr-id-type {
type binary {
length "16";
} }
identity mapping-system { description
"128 bit xTR identifier.";
}
grouping locator-properties {
description
"Properties of a RLOC";
leaf priority {
type uint8;
description description
"Mapping System interface"; "Locator priority.";
} }
identity single-node-mapping-system { leaf weight {
base mapping-system; type uint8;
description description
"logically singular Map Server"; "Locator weight.";
} }
typedef mapping-system-ref { leaf multicast-priority {
type identityref { type uint8;
base mapping-system;
}
description description
"Mapping System reference"; "Locator's multicast priority";
} }
leaf multicast-weight {
typedef lisp-role-ref { type uint8;
type identityref {
base lisp-role;
}
description description
"LISP role reference"; "Locator's multicast weight";
} }
typedef map-reply-action {
type enumeration { }
enum no-action {
value 0; grouping locators-grouping {
description description
"Mapping is kept alive and no encapsulation occurs."; "Group that defines a list of LISP locators.";
} list locator {
enum natively-forward { key "id";
value 1; description
"List of routing locators";
leaf id {
type string {
length "1..64";
}
description description
"Matching packets are not encapsulated or dropped but "Locator id";
natively forwarded.";
} }
enum send-map-request { container locator-address {
value 2; uses lcaf:lisp-address;
description description
"Matching packets invoke Map-Requests."; "The locator address provided in LISP canonincal
address format.";
} }
enum drop { uses locator-properties;
value 3; }
description
"Matching packets are dropped.";
} }
grouping local-locators-grouping {
description
"Group 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
"The name of the interface supporting the locator.";
} }
uses locator-properties;
}
}
grouping mapping {
description
"Group that defines a LISP mapping.";
container eid {
uses lcaf:lisp-address;
description description
"Defines the lisp map-cache ACT type"; "End-host Identifier (EID) to be mapped to a list of
reference "https://tools.ietf.org/html/rfc6830#section-6.1.4"; locators";
} }
typedef eid-id { leaf time-to-live {
type string; type uint32;
units minutes;
description description
"Type encoding of lisp-addresses to be generally used in EID "Mapping validity period in minutes.";
keyed lists.";
} }
typedef auth-key-type { leaf creation-time {
type enumeration { type yang:date-and-time;
enum none { config false;
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 description
"Enumeration of the authentication mechanisms supported by "Time when the mapping was created.";
LISP.";
reference
"https://tools.ietf.org/html/rfc6830#section-6.1.6";
} }
typedef xtr-id-type { leaf authoritative {
type binary { type bits {
length "16"; bit A {
description
"Authoritative bit.";
}
} }
description description
"128 bit xTR identifier."; "Bit that indicates if mapping comes from an
authoritative source.";
} }
leaf static {
grouping locator-properties { type boolean;
default "false";
description description
"Properties of a RLOC"; "This leaf should be true if the mapping is static.";
leaf priority {
type uint8;
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";
}
} }
choice locator-list {
grouping locators-grouping {
description description
"Group that defines a list of LISP locators."; "list of locartors are either negative, or positive.";
list locator { case negative-mapping {
key "id"; leaf map-reply-action {
type map-reply-action;
description description
"List of routing locators"; "Forwarding action for a negative mapping.";
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;
} }
}
} case positive-mapping {
container rlocs {
grouping local-locators-grouping { uses locators-grouping;
description
"Group 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
"The name of the interface supporting the locator."; "List of locators for a positive mapping.";
} }
uses locator-properties;
} }
} }
}
grouping mapping { grouping mappings {
description
"Group that defines a list of LISP mappings.";
list virtual-network {
key "vni";
description description
"Group that defines a LISP mapping."; "Virtual network to which the mappings belong.";
container eid { leaf vni {
uses lcaf:lisp-address; type lcaf:instance-id-type;
description
"End-host Identifier (EID) to be mapped to a list of
locators";
}
leaf time-to-live {
type uint32;
units minutes;
description
"Mapping validity period in minutes.";
}
leaf creation-time {
type yang:date-and-time;
description
"Time when the mapping was created.";
}
leaf authoritative {
type bits {
bit A {
description
"Authoritative bit.";
}
}
description
"Bit that indicates if mapping comes from an
authoritative source.";
}
leaf static {
type boolean;
default "false";
description description
"This leaf should be true if the mapping is static."; "Virtual network identifier.";
} }
choice locator-list { container mappings {
description description
"list of locartors are either negative, or positive."; "Mappings within the virtual network.";
case negative-mapping { list mapping {
leaf map-reply-action { key "id";
type map-reply-action; description
description "List of EID to RLOCs mappings.";
"Forwarding action for a negative mapping."; leaf id {
} type eid-id;
}
case positive-mapping {
container rlocs {
uses locators-grouping;
description description
"List of locators for a positive mapping."; "Id that uniquely identifies a mapping.";
} }
uses mapping;
} }
} }
} }
}
grouping mappings { augment "/rt:routing/rt:control-plane-protocols"
+ "/rt:control-plane-protocol" {
when "derived-from-or-self(rt:type, 'lisp:lisp')" {
description description
"Group that defines a list of LISP mappings."; "This augmentation is only valid for a control-plane protocol
list virtual-network { instance of LISP.";
key "vni";
description
"Virtual network to which the mappings belong.";
leaf vni {
type lcaf:instance-id-type;
description
"Virtual network identifier.";
}
container mappings {
description
"Mappings within the virtual network.";
list mapping {
key "id";
description
"List of EID to RLOCs mappings.";
leaf id {
type eid-id;
description
"Id that uniquely identifies a mapping.";
}
uses mapping;
}
}
}
} }
description "LISP protocol ietf-routing module
control-plane-protocol augmentation.";
container lisp { container lisp {
description description
"Parameters for the LISP subsystem."; "Parameters for the LISP subsystem.";
container locator-sets { container locator-sets {
description description
"Container that defines a named locator set which can be "Container that defines a named locator set which can be
referenced elsewhere."; referenced elsewhere.";
list locator-set { list locator-set {
skipping to change at page 12, line 48 skipping to change at page 14, line 39
} }
case general-locator { case general-locator {
uses locators-grouping; uses locators-grouping;
description description
"List of locators in this set based on lisp-address."; "List of locators in this set based on lisp-address.";
} }
} }
} }
} }
container lisp-router-instances { list lisp-role {
description key lisp-role-type;
"Different LISP routers instantiated in the device";
list lisp-router-instance {
key "lisp-router-instance-id";
description description
"Each entry contains parameters for a LISP router."; "List of lisp device roles such as MS, MR, ITR,
leaf lisp-router-instance-id { PITR, ETR or PETR.";
type int32; leaf lisp-role-type {
type lisp-role-ref;
description description
"Arbitrary lisp-router id."; "The type of LISP device - identity derived from the
'lisp-device' base identity.";
} }
list lisp-role { }
key lisp-role-type;
container lisp-router-id {
when "../lisp-role/lisp-role-type = 'itr' or
../lisp-role/lisp-role-type = 'pitr' or
../lisp-role/lisp-role-type = 'etr' or
../lisp-role/lisp-role-type = '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";
}
}
container virtual-networks {
description "Virtual networks";
list virtual-network {
key vni;
description "List of virtual networks";
leaf vni {
type lcaf:instance-id-type;
description description
"List of lisp device roles such as MS, MR, ITR, "Virtual network identifier";
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 lisp-router-id { leaf ni-name {
when "../lisp-role/lisp-role-type = 'itr' or type leafref {
../lisp-role/lisp-role-type = 'pitr' or path "/ni:network-instances/ni:network-instance/ni:name";
../lisp-role/lisp-role-type = 'etr' or
../lisp-role/lisp-role-type = 'petr'" {
description "Only when ITR, PITR, ETR or PETR.";
} }
description description
"Site-ID and xTR-ID of the device."; "Name of Network Instance (e.g. VRF) to which a VNI is
leaf site-id { bound. Each VNI is bound to a different Network
type uint64; Instance";
description "Site ID";
}
leaf xtr-id {
type lisp:xtr-id-type;
description "xTR ID";
}
} }
} }
} }
} }
} }
<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 /lisp:lisp/lisp:lisp-router-instances/lisp:lisp-router-instance: augment /rt:routing/rt:control-plane-protocols
+--rw itr! /rt:control-plane-protocol/lisp:lisp:
+--rw rloc-probing! +--rw itr!
| +--rw interval? uint16 +--rw rloc-probing!
| +--rw retries? uint8 | +--rw interval? uint16
| +--rw retries-interval? uint16 | +--rw retries? uint8
+--rw itr-rlocs? -> /lisp:lisp/locator-sets/locator-set/locator-set-name | +--rw retries-interval? uint16
+--rw map-resolvers +--rw itr-rlocs? leafref
| +--rw map-resolver* inet:ip-address +--rw map-resolvers
+--rw proxy-etrs | +--rw map-resolver* inet:ip-address
| +--rw proxy-etr-address* inet:ip-address +--rw proxy-etrs
+--rw map-cache | +--rw proxy-etr-address* inet:ip-address
+--rw virtual-network* [vni] +--rw map-cache
+--rw vni lcaf:instance-id-type +--ro size? uint32
+--rw mappings +--ro limit? uint32
+--rw mapping* [id] +--rw virtual-network* [vni]
+--rw id eid-id +--rw vni lcaf:instance-id-type
+--rw eid +--rw mappings
| +--rw address-type lisp-address-family-ref +--rw mapping* [id]
| +--rw virtual-network-id? instance-id-type +--rw id eid-id
| +--rw (address)? +--rw eid
| +--:(no-address) | +--rw address-type
| | +--rw no-address? empty | | lisp-address-family-ref
| +--:(ipv4) | +--rw virtual-network-id?
| | +--rw ipv4? inet:ipv4-address | | instance-id-type
| +--:(ipv4-prefix) | +--rw (address)?
| | +--rw ipv4-prefix? inet:ipv4-prefix | +--:(no-address)
| +--:(ipv6) | | +--rw no-address? empty
| | +--rw ipv6? inet:ipv6-address | +--:(ipv4)
| +--:(ipv6-prefix) | | +--rw ipv4?
| | +--rw ipv6-prefix? inet:ipv6-prefix | | inet:ipv4-address
| +--:(mac) | +--:(ipv4-prefix)
| | +--rw mac? yang:mac-address | | +--rw ipv4-prefix?
| +--:(distinguished-name) | | inet:ipv4-prefix
| | +--rw distinguished-name? distinguished-name-type | +--:(ipv6)
| +--:(as-number) | | +--rw ipv6?
| | +--rw as-number? inet:as-number | | inet:ipv6-address
| +--:(null-address) | +--:(ipv6-prefix)
| | +--rw null-address | | +--rw ipv6-prefix?
| | +--rw address? empty | | inet:ipv6-prefix
| +--:(afi-list) | +--:(mac)
| | +--rw afi-list | | +--rw mac?
| | +--rw address-list* simple-address | | yang:mac-address
| +--:(instance-id) | +--:(distinguished-name)
| | +--rw instance-id | | +--rw distinguished-name?
| | +--rw iid? instance-id-type | | distinguished-name-type
| | +--rw mask-length? uint8 | +--:(as-number)
| | +--rw address? simple-address | | +--rw as-number?
| +--:(as-number-lcaf) | | inet:as-number
| | +--rw as-number-lcaf | +--:(null-address)
| | +--rw as? inet:as-number | | +--rw null-address
| | +--rw address? simple-address | | +--rw address? empty
| +--:(application-data) | +--:(afi-list)
| | +--rw application-data | | +--rw afi-list
| | +--rw address? simple-address | | +--rw address-list* simple-address
| | +--rw protocol? uint8 | +--:(instance-id)
| | +--rw ip-tos? int32 | | +--rw instance-id
| | +--rw local-port-low? inet:port-number | | +--rw iid? instance-id-type
| | +--rw local-port-high? inet:port-number | | +--rw mask-length? uint8
| | +--rw remote-port-low? inet:port-number | | +--rw address? simple-address
| | +--rw remote-port-high? inet:port-number | +--:(as-number-lcaf)
| +--:(geo-coordinates) | | +--rw as-number-lcaf
| | +--rw geo-coordinates | | +--rw as? inet:as-number
| | +--rw latitude? bits | | +--rw address? simple-address
| | +--rw latitude-degrees? uint8 | +--:(application-data)
| | +--rw latitude-minutes? uint8 | | +--rw application-data
| | +--rw latitude-seconds? uint8 | | +--rw address?
| | +--rw longitude? bits | | | simple-address
| | +--rw longitude-degrees? uint16 | | +--rw protocol? uint8
| | +--rw longitude-minutes? uint8 | | +--rw ip-tos? int32
| | +--rw longitude-seconds? uint8 | | +--rw local-port-low?
| | +--rw altitude? int32 | | | inet:port-number
| | +--rw address? simple-address | | +--rw local-port-high?
| +--:(nat-traversal) | | | inet:port-number
| | +--rw nat-traversal | | +--rw remote-port-low?
| | +--rw ms-udp-port? uint16 | | | inet:port-number
| | +--rw etr-udp-port? uint16 | | +--rw remote-port-high?
| | +--rw global-etr-rloc? simple-address | | inet:port-number
| | +--rw ms-rloc? simple-address | +--:(geo-coordinates)
| | +--rw private-etr-rloc? simple-address | | +--rw geo-coordinates
| | +--rw rtr-rlocs* simple-address | | +--rw latitude? bits
| +--:(explicit-locator-path) | | +--rw latitude-degrees? uint8
| | +--rw explicit-locator-path | | +--rw latitude-minutes? uint8
| | +--rw hop* [hop-id] | | +--rw latitude-seconds? uint8
| | +--rw hop-id string | | +--rw longitude? bits
| | +--rw address? simple-address | | +--rw longitude-degrees? uint16
| | +--rw lrs-bits? bits | | +--rw longitude-minutes? uint8
| +--:(source-dest-key) | | +--rw longitude-seconds? uint8
| | +--rw source-dest-key | | +--rw altitude? int32
| | +--rw source? simple-address | | +--rw address?
| | +--rw dest? simple-address | | simple-address
| +--:(key-value-address) | +--:(nat-traversal)
| | +--rw key-value-address | | +--rw nat-traversal
| | +--rw key? simple-address | | +--rw ms-udp-port? uint16
| | +--rw value? simple-address | | +--rw etr-udp-port? uint16
| +--:(service-path) | | +--rw global-etr-rloc?
| +--rw service-path | | | simple-address
| +--rw service-path-id? service-path-id-type | | +--rw ms-rloc?
| +--rw service-index? uint8 | | | simple-address
+--rw time-to-live? uint32 | | +--rw private-etr-rloc?
+--rw creation-time? yang:date-and-time | | | simple-address
+--rw authoritative? bits | | +--rw rtr-rlocs*
+--rw static? boolean | | simple-address
+--rw (locator-list)? | +--:(explicit-locator-path)
+--:(negative-mapping) | | +--rw explicit-locator-path
| +--rw map-reply-action? map-reply-action | | +--rw hop* [hop-id]
+--:(positive-mapping) | | +--rw hop-id string
+--rw rlocs | | +--rw address? simple-address
+--rw locator* [id] | | +--rw lrs-bits? bits
+--rw id string | +--:(source-dest-key)
+--rw locator-address | | +--rw source-dest-key
| +--rw address-type lisp-address-family-ref | | +--rw source? simple-address
| +--rw virtual-network-id? instance-id-type | | +--rw dest? simple-address
| +--rw (address)? | +--:(key-value-address)
| +--:(no-address) | | +--rw key-value-address
| | +--rw no-address? empty | | +--rw key? simple-address
| +--:(ipv4) | | +--rw value? simple-address
| | +--rw ipv4? inet:ipv4-address | +--:(service-path)
| +--:(ipv4-prefix) | +--rw service-path
| | +--rw ipv4-prefix? inet:ipv4-prefix | +--rw service-path-id?
| +--:(ipv6) | | service-path-id-type
| | +--rw ipv6? inet:ipv6-address | +--rw service-index? uint8
| +--:(ipv6-prefix) +--rw time-to-live? uint32
| | +--rw ipv6-prefix? inet:ipv6-prefix +--ro creation-time? yang:date-and-time
| +--:(mac) +--rw authoritative? bits
| | +--rw mac? yang:mac-address +--rw static? boolean
| +--:(distinguished-name) +--rw (locator-list)?
| | +--rw distinguished-name? distinguished-name-type +--:(negative-mapping)
| +--:(as-number) | +--rw map-reply-action? map-reply-action
| | +--rw as-number? inet:as-number +--:(positive-mapping)
| +--:(null-address) +--rw rlocs
| | +--rw null-address +--rw locator* [id]
| | +--rw address? empty +--rw id string
| +--:(afi-list) +--rw locator-address
| | +--rw afi-list | +--rw address-type
| | +--rw address-list* simple-address | | lisp-address-family-ref
| +--:(instance-id) | +--rw virtual-network-id?
| | +--rw instance-id | | instance-id-type
| | +--rw iid? instance-id-type | +--rw (address)?
| | +--rw mask-length? uint8 | +--:(no-address)
| | +--rw address? simple-address | | +--rw no-address?
| +--:(as-number-lcaf) | | empty
| | +--rw as-number-lcaf | +--:(ipv4)
| | +--rw as? inet:as-number | | +--rw ipv4?
| | +--rw address? simple-address | | inet:ipv4-address
| +--:(application-data) | +--:(ipv4-prefix)
| | +--rw application-data | | +--rw ipv4-prefix?
| | +--rw address? simple-address | | inet:ipv4-prefix
| | +--rw protocol? uint8 | +--:(ipv6)
| | +--rw ip-tos? int32 | | +--rw ipv6?
| | +--rw local-port-low? inet:port-number | | inet:ipv6-address
| | +--rw local-port-high? inet:port-number | +--:(ipv6-prefix)
| | +--rw remote-port-low? inet:port-number | | +--rw ipv6-prefix?
| | +--rw remote-port-high? inet:port-number | | inet:ipv6-prefix
| +--:(geo-coordinates) | +--:(mac)
| | +--rw geo-coordinates | | +--rw mac?
| | +--rw latitude? bits | | yang:mac-address
| | +--rw latitude-degrees? uint8 | +--:(distinguished-name)
| | +--rw latitude-minutes? uint8 | | +--rw distinguished-name?
| | +--rw latitude-seconds? uint8 | | distinguished-name-type
| | +--rw longitude? bits | +--:(as-number)
| | +--rw longitude-degrees? uint16 | | +--rw as-number?
| | +--rw longitude-minutes? uint8 | | inet:as-number
| | +--rw longitude-seconds? uint8 | +--:(null-address)
| | +--rw altitude? int32 | | +--rw null-address
| | +--rw address? simple-address | | +--rw address? empty
| +--:(nat-traversal) | +--:(afi-list)
| | +--rw nat-traversal | | +--rw afi-list
| | +--rw ms-udp-port? uint16 | | +--rw address-list*
| | +--rw etr-udp-port? uint16 | | simple-address
| | +--rw global-etr-rloc? simple-address | +--:(instance-id)
| | +--rw ms-rloc? simple-address | | +--rw instance-id
| | +--rw private-etr-rloc? simple-address | | +--rw iid?
| | +--rw rtr-rlocs* simple-address | | | instance-id-type
| +--:(explicit-locator-path) | | +--rw mask-length? uint8
| | +--rw explicit-locator-path | | +--rw address?
| | +--rw hop* [hop-id] | | simple-address
| | +--rw hop-id string | +--:(as-number-lcaf)
| | +--rw address? simple-address | | +--rw as-number-lcaf
| | +--rw lrs-bits? bits | | +--rw as?
| +--:(source-dest-key) | | | inet:as-number
| | +--rw source-dest-key | | +--rw address?
| | +--rw source? simple-address | | simple-address
| | +--rw dest? simple-address | +--:(application-data)
| +--:(key-value-address) | | +--rw application-data
| | +--rw key-value-address | | +--rw address?
| | +--rw key? simple-address | | | simple-address
| | +--rw value? simple-address | | +--rw protocol?
| +--:(service-path) | | | uint8
| +--rw service-path | | +--rw ip-tos?
| +--rw service-path-id? service-path-id-type | | | int32
| +--rw service-index? uint8 | | +--rw local-port-low?
+--rw priority? uint8 | | | inet:port-number
+--rw weight? uint8 | | +--rw local-port-high?
+--rw multicast-priority? uint8 | | | inet:port-number
+--rw multicast-weight? uint8 | | +--rw remote-port-low?
| | | inet:port-number
| | +--rw remote-port-high?
| | inet:port-number
| +--:(geo-coordinates)
| | +--rw geo-coordinates
| | +--rw latitude?
| | | bits
| | +--rw latitude-degrees?
| | | uint8
| | +--rw latitude-minutes?
| | | uint8
| | +--rw latitude-seconds?
| | | uint8
| | +--rw longitude?
| | | bits
| | +--rw longitude-degrees?
| | | uint16
| | +--rw longitude-minutes?
| | | uint8
| | +--rw longitude-seconds?
| | | uint8
| | +--rw altitude?
| | | int32
| | +--rw address?
| | simple-address
| +--:(nat-traversal)
| | +--rw nat-traversal
| | +--rw ms-udp-port?
| | | uint16
| | +--rw etr-udp-port?
| | | uint16
| | +--rw global-etr-rloc?
| | | simple-address
| | +--rw ms-rloc?
| | | simple-address
| | +--rw private-etr-rloc?
| | | simple-address
| | +--rw rtr-rlocs*
| | simple-address
| +--:(explicit-locator-path)
| | +--rw explicit-locator-path
| | +--rw hop* [hop-id]
| | +--rw hop-id
| | | string
| | +--rw address?
| | | simple-address
| | +--rw lrs-bits? bits
| +--:(source-dest-key)
| | +--rw source-dest-key
| | +--rw source?
| | | simple-address
| | +--rw dest?
| | simple-address
| +--:(key-value-address)
| | +--rw key-value-address
| | +--rw key?
| | | simple-address
| | +--rw value?
| | simple-address
| +--:(service-path)
| +--rw service-path
| +--rw service-path-id?
| | service-path-id-type
| +--rw service-index?
| uint8
+--rw priority? uint8
+--rw weight? uint8
+--rw multicast-priority? uint8
+--rw multicast-weight? uint8
3.2. Module Definition 3.2. Module Definition
<CODE BEGINS> file "ietf-lisp-itr@2018-03-05.yang" <CODE BEGINS> file "ietf-lisp-itr@2018-06-29.yang"
module ietf-lisp-itr { module ietf-lisp-itr {
namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-itr"; yang-version 1.1;
prefix lisp-itr;
import ietf-lisp {
prefix lisp;
}
import ietf-inet-types {
prefix inet;
}
organization
"IETF LISP (Locator/ID Separation Protocol) Working Group";
contact
"WG Web: <http://tools.ietf.org/wg/lisp/>
WG List: <mailto:lisp@ietf.org>
Editor: Vina Ermagan namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-itr";
<mailto:vermagan@cisco.com>
Editor: Alberto Rodriguez-Natal prefix lisp-itr;
<mailto:natal@cisco.com>
Editor: Reshad Rahman // RFC Ed.: replace occurences of XXXX with actual RFC number
<mailto:rrahman@cisco.com>"; // and remove this note
description import ietf-lisp {
"This YANG module defines the generic parameters for a LISP prefix lisp;
ITR. The module can be extended by vendors to define reference "RFC XXXX: LISP YANG model";
vendor-specific parameters and policies. }
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)";
}
Copyright (c) 2018 IETF Trust and the persons identified as organization
authors of the code. All rights reserved. "IETF LISP (Locator/ID Separation Protocol) Working Group";
contact
"WG Web: <http://tools.ietf.org/wg/lisp/>
WG List: <mailto:lisp@ietf.org>
Redistribution and use in source and binary forms, with or Editor: Vina Ermagan
without modification, is permitted pursuant to, and subject <mailto:vermagan@cisco.com>
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.
";
// RFC Ed.: replace XXXX with actual RFC number and remove
// this note
reference "RFC XXXX";
revision 2018-03-05 { Editor: Alberto Rodriguez-Natal
<mailto:natal@cisco.com>
Editor: Reshad Rahman
<mailto:rrahman@cisco.com>";
description description
"Initial revision."; "This YANG module defines the generic parameters for a LISP
reference ITR. The module can be extended by vendors to define
"https://tools.ietf.org/html/rfc6830"; vendor-specific parameters and policies.
}
augment "/lisp:lisp/lisp:lisp-router-instances/lisp:lisp-router-instance" { Copyright (c) 2018 IETF Trust and the persons identified as
when "lisp:lisp-role/lisp:lisp-role-type = 'lisp:itr' or authors of the code. All rights reserved.
lisp:lisp-role/lisp:lisp-role-type = 'lisp:pitr'" {
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices.
";
reference "RFC XXXX";
revision 2018-06-29 {
description description
"Augment is valid when LISP role type is ITR or PITR."; "Initial revision.";
reference
"https://tools.ietf.org/html/rfc6830";
} }
description augment "/rt:routing/rt:control-plane-protocols"
"This augments LISP devices list with (P)ITR specific + "/rt:control-plane-protocol/lisp:lisp" {
parameters."; when "lisp:lisp-role/lisp:lisp-role-type = 'lisp:itr' or
container itr { lisp:lisp-role/lisp:lisp-role-type = 'lisp:pitr'" {
presence "LISP (P)ITR operation enabled"; description
"Augment is valid when LISP role type is ITR or PITR.";
}
description description
"ITR parameters"; "This augments LISP devices list with (P)ITR specific
container rloc-probing { parameters.";
presence "RLOC probing active"; container itr {
presence "LISP (P)ITR operation enabled";
description description
"RLOC-probing parameters"; "ITR parameters";
leaf interval { container rloc-probing {
type uint16; presence "RLOC probing active";
units "seconds";
description
"Interval in seconds for resending the probes";
}
leaf retries {
type uint8;
description description
"Number of retries for sending the probes"; "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 retries-interval { leaf itr-rlocs {
type uint16; type leafref {
units "seconds"; path "/rt:routing/rt:control-plane-protocols"
+ "/rt:control-plane-protocol/lisp:lisp"
+ "/lisp:locator-sets/lisp:locator-set"
+ "/lisp:locator-set-name";
}
description description
"Interval in seconds between retries when sending probes. "Reference to a locator set that the (P)ITR includes in
The action taken if all retries fail to receive is Map-Requests";
impementation specific.";
}
}
leaf itr-rlocs {
type leafref {
path "/lisp:lisp/lisp:locator-sets/lisp:locator-set/"
+ "lisp:locator-set-name";
} }
description container map-resolvers {
"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;
min-elements 1;
description description
"Each Map-Resolver within the list of Map-Resolvers."; "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 {
container proxy-etrs { when "../../lisp:lisp-role/lisp:lisp-role-type = 'lisp:itr'" {
when "../../lisp:lisp-role/lisp:lisp-role-type = 'lisp:itr'" { description
"Container exists only when LISP role type is ITR";
}
description description
"Container exists only when LISP role type is ITR"; "Proxy ETRs that the ITR uses.";
leaf-list proxy-etr-address{
type inet:ip-address;
description
"Proxy ETR RLOC address.";
}
} }
description container map-cache {
"Proxy ETRs that the ITR uses."; leaf size {
leaf-list proxy-etr-address{ type uint32;
type inet:ip-address; 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;
description description
"Proxy ETR RLOC address."; "EID to RLOCs mappings cache.";
} }
}
container map-cache{
uses lisp:mappings;
description
"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 /lisp:lisp/lisp:lisp-router-instances/lisp:lisp-router-instance: augment /rt:routing/rt:control-plane-protocols
+--rw etr! /rt:control-plane-protocol/lisp:lisp:
+--rw map-servers +--rw etr!
| +--rw map-server* [ms-address] +--rw map-servers
| +--rw ms-address inet:ip-address | +--rw map-server* [ms-address]
| +--rw auth-key? string | +--rw ms-address inet:ip-address
| +--rw auth-key-type? lisp:auth-key-type | +--rw auth-key? string
+--rw local-eids | +--rw auth-key-type? lisp:auth-key-type
+--rw virtual-network* [vni] +--rw local-eids
+--rw vni lcaf:instance-id-type +--rw virtual-network* [vni]
+--rw eids +--rw vni lcaf:instance-id-type
+--rw local-eid* [id] +--rw eids
+--rw id lisp:eid-id +--rw local-eid* [id]
+--rw eid-address +--rw id lisp:eid-id
| +--rw address-type lisp-address-family-ref +--rw eid-address
| +--rw virtual-network-id? instance-id-type | +--rw address-type
| +--rw (address)? | | lisp-address-family-ref
| +--:(no-address) | +--rw virtual-network-id?
| | +--rw no-address? empty | | instance-id-type
| +--:(ipv4) | +--rw (address)?
| | +--rw ipv4? inet:ipv4-address | +--:(no-address)
| +--:(ipv4-prefix) | | +--rw no-address? empty
| | +--rw ipv4-prefix? inet:ipv4-prefix | +--:(ipv4)
| +--:(ipv6) | | +--rw ipv4?
| | +--rw ipv6? inet:ipv6-address | | inet:ipv4-address
| +--:(ipv6-prefix) | +--:(ipv4-prefix)
| | +--rw ipv6-prefix? inet:ipv6-prefix | | +--rw ipv4-prefix?
| +--:(mac) | | inet:ipv4-prefix
| | +--rw mac? yang:mac-address | +--:(ipv6)
| +--:(distinguished-name) | | +--rw ipv6?
| | +--rw distinguished-name? distinguished-name-type | | inet:ipv6-address
| +--:(as-number) | +--:(ipv6-prefix)
| | +--rw as-number? inet:as-number | | +--rw ipv6-prefix?
| +--:(null-address) | | inet:ipv6-prefix
| | +--rw null-address | +--:(mac)
| | +--rw address? empty | | +--rw mac?
| +--:(afi-list) | | yang:mac-address
| | +--rw afi-list | +--:(distinguished-name)
| | +--rw address-list* simple-address | | +--rw distinguished-name?
| +--:(instance-id) | | distinguished-name-type
| | +--rw instance-id | +--:(as-number)
| | +--rw iid? instance-id-type | | +--rw as-number?
| | +--rw mask-length? uint8 | | inet:as-number
| | +--rw address? simple-address | +--:(null-address)
| +--:(as-number-lcaf) | | +--rw null-address
| | +--rw as-number-lcaf | | +--rw address? empty
| | +--rw as? inet:as-number | +--:(afi-list)
| | +--rw address? simple-address | | +--rw afi-list
| +--:(application-data) | | +--rw address-list* simple-address
| | +--rw application-data | +--:(instance-id)
| | +--rw address? simple-address | | +--rw instance-id
| | +--rw protocol? uint8 | | +--rw iid? instance-id-type
| | +--rw ip-tos? int32 | | +--rw mask-length? uint8
| | +--rw local-port-low? inet:port-number | | +--rw address? simple-address
| | +--rw local-port-high? inet:port-number | +--:(as-number-lcaf)
| | +--rw remote-port-low? inet:port-number | | +--rw as-number-lcaf
| | +--rw remote-port-high? inet:port-number | | +--rw as? inet:as-number
| +--:(geo-coordinates) | | +--rw address? simple-address
| | +--rw geo-coordinates | +--:(application-data)
| | +--rw latitude? bits | | +--rw application-data
| | +--rw latitude-degrees? uint8 | | +--rw address?
| | +--rw latitude-minutes? uint8 | | | simple-address
| | +--rw latitude-seconds? uint8 | | +--rw protocol? uint8
| | +--rw longitude? bits | | +--rw ip-tos? int32
| | +--rw longitude-degrees? uint16 | | +--rw local-port-low?
| | +--rw longitude-minutes? uint8 | | | inet:port-number
| | +--rw longitude-seconds? uint8 | | +--rw local-port-high?
| | +--rw altitude? int32 | | | inet:port-number
| | +--rw address? simple-address | | +--rw remote-port-low?
| +--:(nat-traversal) | | | inet:port-number
| | +--rw nat-traversal | | +--rw remote-port-high?
| | +--rw ms-udp-port? uint16 | | inet:port-number
| | +--rw etr-udp-port? uint16 | +--:(geo-coordinates)
| | +--rw global-etr-rloc? simple-address | | +--rw geo-coordinates
| | +--rw ms-rloc? simple-address | | +--rw latitude? bits
| | +--rw private-etr-rloc? simple-address | | +--rw latitude-degrees? uint8
| | +--rw rtr-rlocs* simple-address | | +--rw latitude-minutes? uint8
| +--:(explicit-locator-path) | | +--rw latitude-seconds? uint8
| | +--rw explicit-locator-path | | +--rw longitude? bits
| | +--rw hop* [hop-id] | | +--rw longitude-degrees? uint16
| | +--rw hop-id string | | +--rw longitude-minutes? uint8
| | +--rw address? simple-address | | +--rw longitude-seconds? uint8
| | +--rw lrs-bits? bits | | +--rw altitude? int32
| +--:(source-dest-key) | | +--rw address?
| | +--rw source-dest-key | | simple-address
| | +--rw source? simple-address | +--:(nat-traversal)
| | +--rw dest? simple-address | | +--rw nat-traversal
| +--:(key-value-address) | | +--rw ms-udp-port? uint16
| | +--rw key-value-address | | +--rw etr-udp-port? uint16
| | +--rw key? simple-address | | +--rw global-etr-rloc?
| | +--rw value? simple-address | | | simple-address
| +--:(service-path) | | +--rw ms-rloc?
| +--rw service-path | | | simple-address
| +--rw service-path-id? service-path-id-type | | +--rw private-etr-rloc?
| +--rw service-index? uint8 | | | simple-address
+--rw rlocs? -> /lisp:lisp/locator-sets/locator-set/locator-set-name | | +--rw rtr-rlocs*
+--rw record-ttl? uint32 | | simple-address
+--rw want-map-notify? boolean | +--:(explicit-locator-path)
+--rw proxy-reply? boolean | | +--rw explicit-locator-path
+--rw registration-interval? uint16 | | +--rw hop* [hop-id]
| | +--rw hop-id string
| | +--rw address? simple-address
| | +--rw lrs-bits? bits
| +--:(source-dest-key)
| | +--rw source-dest-key
| | +--rw source? simple-address
| | +--rw dest? simple-address
| +--:(key-value-address)
| | +--rw key-value-address
| | +--rw key? simple-address
| | +--rw value? simple-address
| +--:(service-path)
| +--rw service-path
| +--rw service-path-id?
| | service-path-id-type
| +--rw service-index? uint8
+--rw rlocs? leafref
+--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@2018-03-05.yang" <CODE BEGINS> file "ietf-lisp-etr@2018-06-29.yang"
module ietf-lisp-etr { module ietf-lisp-etr {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-etr"; namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-etr";
prefix lisp-etr; prefix lisp-etr;
// RFC Ed.: replace occurences of XXXX with actual RFC number
// and remove this note
import ietf-lisp { import ietf-lisp {
prefix lisp; prefix lisp;
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";
} }
import ietf-inet-types { import ietf-inet-types {
prefix inet; 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 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:vermagan@cisco.com> <mailto:vermagan@cisco.com>
Editor: Alberto Rodriguez-Natal Editor: Alberto Rodriguez-Natal
skipping to change at page 24, line 16 skipping to change at page 29, line 9
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.
"; ";
// RFC Ed.: replace XXXX with actual RFC number and remove
// this note
reference "RFC XXXX"; reference "RFC XXXX";
revision 2018-03-05 { revision 2018-06-29 {
description description
"Initial revision."; "Initial revision.";
reference reference
"https://tools.ietf.org/html/rfc6830"; "https://tools.ietf.org/html/rfc6830";
} }
augment "/lisp:lisp/lisp:lisp-router-instances/lisp:lisp-router-instance" { augment "/rt:routing/rt:control-plane-protocols"
+ "/rt:control-plane-protocol/lisp:lisp" {
when "lisp:lisp-role/lisp:lisp-role-type = 'lisp:etr' or when "lisp:lisp-role/lisp:lisp-role-type = 'lisp:etr' or
lisp:lisp-role/lisp:lisp-role-type = 'lisp:petr'" { lisp:lisp-role/lisp:lisp-role-type = 'lisp:petr'" {
description description
"Augment is valid when LISP device type is (P)ETR."; "Augment is valid when LISP device type is (P)ETR.";
} }
description description
"This augments LISP devices list with (P)ETR specific "This augments LISP devices list with (P)ETR specific
parameters."; parameters.";
container etr { container etr {
presence "LISP (P)ETR operation enabled"; presence "LISP (P)ETR operation enabled";
skipping to change at page 26, line 9 skipping to change at page 30, line 50
description description
"Unique id of local EID."; "Unique id of local EID.";
} }
container eid-address { container eid-address {
uses lcaf:lisp-address; uses lcaf:lisp-address;
description description
"EID address in generic LISP address format."; "EID address in generic LISP address format.";
} }
leaf rlocs { leaf rlocs {
type leafref { type leafref {
path "/lisp:lisp/lisp:locator-sets/lisp:locator-set/" path "/rt:routing/rt:control-plane-protocols"
+ "lisp:locator-set-name"; + "/rt:control-plane-protocol/lisp:lisp"
+ "/lisp:locator-sets/lisp:locator-set"
+ "/lisp:locator-set-name";
} }
description description
"Locator set mapped to this local EID."; "Locator set mapped to this local EID.";
} }
leaf record-ttl { leaf record-ttl {
type uint32; type uint32;
units minutes; units minutes;
description description
"Validity period of the EID to RLOCs mapping provided "Validity period of the EID to RLOCs mapping provided
in Map-Replies."; in Map-Replies.";
skipping to change at page 27, line 4 skipping to change at page 31, line 46
"Interval between consecutive Map-Register messages."; "Interval between consecutive Map-Register messages.";
} }
} }
} }
} }
} }
} }
} }
} }
<CODE ENDS> <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 /lisp:lisp/lisp:lisp-router-instances/lisp:lisp-router-instance: augment /rt:routing/rt:control-plane-protocols
/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 auth-key | +--rw auth-key
| +--rw auth-key-value? string | +--rw auth-key-value? string
| +--rw auth-key-type* lisp:auth-key-type | +--rw auth-key-type* lisp:auth-key-type
+--rw virtual-network-ids +--rw virtual-network-ids
| +--rw virtual-network-identifier* [vni] | +--rw virtual-network-identifier* [vni]
| +--rw vni lcaf:instance-id-type | +--rw vni 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 lisp-address-family-ref | | | +--rw address-type
| | | +--rw virtual-network-id? instance-id-type | | | | lisp-address-family-ref
| | | +--rw virtual-network-id?
| | | | instance-id-type
| | | +--rw (address)? | | | +--rw (address)?
| | | +--:(no-address) | | | +--:(no-address)
| | | | +--rw no-address? empty | | | | +--rw no-address? empty
| | | +--:(ipv4) | | | +--:(ipv4)
| | | | +--rw ipv4? inet:ipv4-address | | | | +--rw ipv4?
| | | | inet:ipv4-address
| | | +--:(ipv4-prefix) | | | +--:(ipv4-prefix)
| | | | +--rw ipv4-prefix? inet:ipv4-prefix | | | | +--rw ipv4-prefix?
| | | | inet:ipv4-prefix
| | | +--:(ipv6) | | | +--:(ipv6)
| | | | +--rw ipv6? inet:ipv6-address | | | | +--rw ipv6?
| | | | inet:ipv6-address
| | | +--:(ipv6-prefix) | | | +--:(ipv6-prefix)
| | | | +--rw ipv6-prefix? inet:ipv6-prefix | | | | +--rw ipv6-prefix?
| | | | inet:ipv6-prefix
| | | +--:(mac) | | | +--:(mac)
| | | | +--rw mac? yang:mac-address | | | | +--rw mac?
| | | | yang:mac-address
| | | +--:(distinguished-name) | | | +--:(distinguished-name)
| | | | +--rw distinguished-name? distinguished-name-type | | | | +--rw distinguished-name?
| | | | distinguished-name-type
| | | +--:(as-number) | | | +--:(as-number)
| | | | +--rw as-number? inet:as-number | | | | +--rw 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 iid? instance-id-type | | | | +--rw iid? 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? simple-address | | | | +--rw address?
| | | | | simple-address
| | | | +--rw protocol? uint8 | | | | +--rw protocol? uint8
| | | | +--rw ip-tos? int32 | | | | +--rw ip-tos? int32
| | | | +--rw local-port-low? inet:port-number | | | | +--rw local-port-low?
| | | | +--rw local-port-high? inet:port-number | | | | | inet:port-number
| | | | +--rw remote-port-low? inet:port-number | | | | +--rw local-port-high?
| | | | +--rw remote-port-high? inet:port-number | | | | | inet:port-number
| | | | +--rw remote-port-low?
| | | | | inet:port-number
| | | | +--rw remote-port-high?
| | | | 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? simple-address | | | | +--rw 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? simple-address | | | | +--rw global-etr-rloc?
| | | | +--rw ms-rloc? simple-address | | | | | simple-address
| | | | +--rw private-etr-rloc? simple-address | | | | +--rw ms-rloc?
| | | | +--rw rtr-rlocs* simple-address | | | | | simple-address
| | | | +--rw private-etr-rloc?
| | | | | simple-address
| | | | +--rw rtr-rlocs*
| | | | 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? service-path-id-type | | | +--rw service-path-id?
| | | | 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?
| | | yang:date-and-time
| | +--ro last-registration-time?
| | | yang:date-and-time
| | +--rw mapping-records | | +--rw mapping-records
| | +--rw mapping-record* [xtr-id] | | +--rw mapping-record* [xtr-id]
| | +--rw xtr-id lisp:xtr-id-type | | +--rw xtr-id
| | +--rw site-id? uint64 | | | lisp:xtr-id-type
| | +--rw site-id? uint64
| | +--rw eid | | +--rw eid
| | | +--rw address-type lisp-address-family-ref | | | +--rw address-type
| | | +--rw virtual-network-id? instance-id-type | | | | lisp-address-family-ref
| | | +--rw virtual-network-id?
| | | | instance-id-type
| | | +--rw (address)? | | | +--rw (address)?
| | | +--:(no-address) | | | +--:(no-address)
| | | | +--rw no-address? empty | | | | +--rw no-address?
| | | | empty
| | | +--:(ipv4) | | | +--:(ipv4)
| | | | +--rw ipv4? inet:ipv4-address | | | | +--rw ipv4?
| | | | inet:ipv4-address
| | | +--:(ipv4-prefix) | | | +--:(ipv4-prefix)
| | | | +--rw ipv4-prefix? inet:ipv4-prefix | | | | +--rw ipv4-prefix?
| | | | inet:ipv4-prefix
| | | +--:(ipv6) | | | +--:(ipv6)
| | | | +--rw ipv6? inet:ipv6-address | | | | +--rw ipv6?
| | | | inet:ipv6-address
| | | +--:(ipv6-prefix) | | | +--:(ipv6-prefix)
| | | | +--rw ipv6-prefix? inet:ipv6-prefix | | | | +--rw ipv6-prefix?
| | | | inet:ipv6-prefix
| | | +--:(mac) | | | +--:(mac)
| | | | +--rw mac? yang:mac-address | | | | +--rw mac?
| | | | yang:mac-address
| | | +--:(distinguished-name) | | | +--:(distinguished-name)
| | | | +--rw distinguished-name? distinguished-name-type | | | | +--rw distinguished-name?
| | | | distinguished-name-type
| | | +--:(as-number) | | | +--:(as-number)
| | | | +--rw as-number? inet:as-number | | | | +--rw 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 iid? instance-id-type | | | | +--rw iid?
| | | | | 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? simple-address | | | | +--rw address?
| | | | | simple-address
| | | | +--rw protocol? uint8 | | | | +--rw protocol? uint8
| | | | +--rw ip-tos? int32 | | | | +--rw ip-tos? int32
| | | | +--rw local-port-low? inet:port-number | | | | +--rw local-port-low?
| | | | +--rw local-port-high? inet:port-number | | | | | inet:port-number
| | | | +--rw remote-port-low? inet:port-number | | | | +--rw local-port-high?
| | | | +--rw remote-port-high? inet:port-number | | | | | inet:port-number
| | | | +--rw remote-port-low?
| | | | | inet:port-number
| | | | +--rw remote-port-high?
| | | | 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? simple-address | | | | +--rw 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? simple-address | | | | +--rw global-etr-rloc?
| | | | +--rw ms-rloc? simple-address | | | | | simple-address
| | | | +--rw private-etr-rloc? simple-address | | | | +--rw ms-rloc?
| | | | +--rw rtr-rlocs* simple-address | | | | | simple-address
| | | | +--rw private-etr-rloc?
| | | | | simple-address
| | | | +--rw rtr-rlocs*
| | | | 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? service-path-id-type | | | +--rw service-path-id?
| | | | service-path-id-type
| | | +--rw service-index? uint8 | | | +--rw service-index? uint8
| | +--rw time-to-live? uint32 | | +--rw time-to-live? uint32
| | +--rw creation-time? yang:date-and-time | | +--ro creation-time?
| | +--rw authoritative? bits | | | yang:date-and-time
| | +--rw static? boolean | | +--rw authoritative? bits
| | +--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* [id]
| | +--rw id string | | +--rw id
| | | string
| | +--rw locator-address | | +--rw locator-address
| | | +--rw address-type lisp-address-family-ref | | | +--rw address-type
| | | +--rw virtual-network-id? instance-id-type | | | | lisp-address-family-ref
| | | +--rw virtual-network-id?
| | | | instance-id-type
| | | +--rw (address)? | | | +--rw (address)?
| | | +--:(no-address) | | | +--:(no-address)
| | | | +--rw no-address? empty | | | | +--rw no-address?
| | | | empty
| | | +--:(ipv4) | | | +--:(ipv4)
| | | | +--rw ipv4? inet:ipv4-address | | | | +--rw ipv4?
| | | | inet:ipv4-address
| | | +--:(ipv4-prefix) | | | +--:(ipv4-prefix)
| | | | +--rw ipv4-prefix? inet:ipv4-prefix | | | | +--rw ipv4-prefix?
| | | | inet:ipv4-prefix
| | | +--:(ipv6) | | | +--:(ipv6)
| | | | +--rw ipv6? inet:ipv6-address | | | | +--rw ipv6?
| | | | inet:ipv6-address
| | | +--:(ipv6-prefix) | | | +--:(ipv6-prefix)
| | | | +--rw ipv6-prefix? inet:ipv6-prefix | | | | +--rw ipv6-prefix?
| | | | inet:ipv6-prefix
| | | +--:(mac) | | | +--:(mac)
| | | | +--rw mac? yang:mac-address | | | | +--rw mac?
| | | | yang:mac-address
| | | +--:(distinguished-name) | | | +--:(distinguished-name)
| | | | +--rw distinguished-name? distinguished-name-type | | | | +--rw distinguished-name?
| | | | distinguished-name-type
| | | +--:(as-number) | | | +--:(as-number)
| | | | +--rw as-number? inet:as-number | | | | +--rw 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 iid? instance-id-type | | | | +--rw iid?
| | | | +--rw mask-length? uint8 | | | | | instance-id-type
| | | | +--rw address? simple-address | | | | +--rw mask-length?
| | | | | uint8
| | | | +--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?
| | | | +--rw address? simple-address | | | | | inet:as-number
| | | | +--rw address?
| | | | simple-address
| | | +--:(application-data) | | | +--:(application-data)
| | | | +--rw application-data | | | | +--rw application-data
| | | | +--rw address? simple-address | | | | +--rw address?
| | | | +--rw protocol? uint8 | | | | | simple-address
| | | | +--rw ip-tos? int32 | | | | +--rw protocol?
| | | | +--rw local-port-low? inet:port-number | | | | | uint8
| | | | +--rw local-port-high? inet:port-number | | | | +--rw ip-tos?
| | | | +--rw remote-port-low? inet:port-number | | | | | int32
| | | | +--rw remote-port-high? inet:port-number | | | | +--rw local-port-low?
| | | | | inet:port-number
| | | | +--rw local-port-high?
| | | | | inet:port-number
| | | | +--rw remote-port-low?
| | | | | inet:port-number
| | | | +--rw remote-port-high?
| | | | inet:port-number
| | | +--:(geo-coordinates) | | | +--:(geo-coordinates)
| | | | +--rw geo-coordinates | | | | +--rw geo-coordinates
| | | | +--rw latitude? bits | | | | +--rw latitude?
| | | | +--rw latitude-degrees? uint8 | | | | | bits
| | | | +--rw latitude-minutes? uint8 | | | | +--rw latitude-degrees?
| | | | +--rw latitude-seconds? uint8 | | | | | uint8
| | | | +--rw longitude? bits | | | | +--rw latitude-minutes?
| | | | +--rw longitude-degrees? uint16 | | | | | uint8
| | | | +--rw longitude-minutes? uint8 | | | | +--rw latitude-seconds?
| | | | +--rw longitude-seconds? uint8 | | | | | uint8
| | | | +--rw altitude? int32 | | | | +--rw longitude?
| | | | +--rw address? simple-address | | | | | bits
| | | | +--rw longitude-degrees?
| | | | | uint16
| | | | +--rw longitude-minutes?
| | | | | uint8
| | | | +--rw longitude-seconds?
| | | | | uint8
| | | | +--rw altitude?
| | | | | int32
| | | | +--rw address?
| | | | simple-address
| | | +--:(nat-traversal) | | | +--:(nat-traversal)
| | | | +--rw nat-traversal | | | | +--rw nat-traversal
| | | | +--rw ms-udp-port? uint16 | | | | +--rw ms-udp-port?
| | | | +--rw etr-udp-port? uint16 | | | | | uint16
| | | | +--rw global-etr-rloc? simple-address | | | | +--rw etr-udp-port?
| | | | +--rw ms-rloc? simple-address | | | | | uint16
| | | | +--rw private-etr-rloc? simple-address | | | | +--rw global-etr-rloc?
| | | | +--rw rtr-rlocs* simple-address | | | | | simple-address
| | | | +--rw ms-rloc?
| | | | | simple-address
| | | | +--rw private-etr-rloc?
| | | | | simple-address
| | | | +--rw rtr-rlocs*
| | | | 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
| | | | +--rw address? simple-address | | | | | string
| | | | +--rw lrs-bits? bits | | | | +--rw address?
| | | | | simple-address
| | | | +--rw lrs-bits?
| | | | bits
| | | +--:(source-dest-key) | | | +--:(source-dest-key)
| | | | +--rw source-dest-key | | | | +--rw source-dest-key
| | | | +--rw source? simple-address | | | | +--rw source?
| | | | +--rw dest? simple-address | | | | | 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?
| | | | +--rw value? simple-address | | | | | simple-address
| | | | +--rw value?
| | | | simple-address
| | | +--:(service-path) | | | +--:(service-path)
| | | +--rw service-path | | | +--rw service-path
| | | +--rw service-path-id? service-path-id-type | | | +--rw service-path-id?
| | | +--rw service-index? uint8 | | | | service-path-id-type
| | +--rw priority? uint8 | | | +--rw service-index?
| | +--rw weight? uint8 | | | uint8
| | +--rw multicast-priority? uint8 | | +--rw priority?
| | +--rw multicast-weight? uint8 | | | uint8
| | +--rw weight?
| | | uint8
| | +--rw multicast-priority?
| | | uint8
| | +--rw multicast-weight?
| | uint8
| +--ro counters | +--ro counters
| +--ro map-registers-in? yang:counter32 | +--ro map-registers-in? yang:counter64
| +--ro map-registers-in-auth-failed? yang:counter32 | +--ro map-registers-in-auth-failed? yang:counter64
| +--ro map-notify-records-out? yang:counter32 | +--ro map-notify-records-out? yang:counter64
| +--ro proxy-reply-records-out? yang:counter32 | +--ro proxy-reply-records-out? yang:counter64
| +--ro map-requests-forwarded-out? yang:counter32 | +--ro map-requests-forwarded-out? yang:counter64
+--rw mapping-system-type? lisp:mapping-system-ref +--rw mapping-system-type? lisp:mapping-system-ref
+--ro summary +--ro summary
| +--ro number-configured-sites? uint32 | +--ro number-configured-sites? uint32
| +--ro number-registered-sites? uint32 | +--ro number-registered-sites? uint32
| +--ro af-datum | +--ro af-datum
| +--ro af-data* [address-type] | +--ro af-data* [address-type]
| +--ro address-type lcaf:lisp-address-family-ref | +--ro address-type
| | lcaf:lisp-address-family-ref
| +--ro number-configured-eids? uint32 | +--ro number-configured-eids? uint32
| +--ro number-registered-eids? uint32 | +--ro number-registered-eids? uint32
+--ro counters +--ro counters
+--ro map-registers-in? yang:counter32 +--ro map-registers-in? yang:counter64
+--ro map-registers-in-auth-failed? yang:counter32 +--ro map-registers-in-auth-failed? yang:counter64
+--ro map-notify-records-out? yang:counter32 +--ro map-notify-records-out? yang:counter64
+--ro proxy-reply-records-out? yang:counter32 +--ro proxy-reply-records-out? yang:counter64
+--ro map-requests-forwarded-out? yang:counter32 +--ro map-requests-forwarded-out? yang:counter64
5.2. Module Definition 5.2. Module Definition
<CODE BEGINS> file "ietf-lisp-mapserver@2018-03-05.yang" <CODE BEGINS> file "ietf-lisp-mapserver@2018-06-29.yang"
module ietf-lisp-mapserver { module ietf-lisp-mapserver {
namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-mapserver"; yang-version 1.1;
prefix lisp-ms;
import ietf-lisp {
prefix lisp;
}
import ietf-lisp-address-types {
prefix lcaf;
}
import ietf-yang-types {
prefix yang;
revision-date 2013-07-15;
}
organization namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-mapserver";
"IETF LISP (Locator/ID Separation Protocol) Working Group";
contact
"WG Web: <http://tools.ietf.org/wg/lisp/>
WG List: <mailto:lisp@ietf.org>
Editor: Vina Ermagan
<mailto:vermagan@cisco.com>
Editor: Alberto Rodriguez-Natal prefix lisp-ms;
<mailto:natal@cisco.com>
Editor: Reshad Rahman // RFC Ed.: replace occurences of XXXX with actual RFC number
<mailto:rrahman@cisco.com>"; // and remove this note
description import ietf-lisp {
"This YANG module defines the generic parameters for a LISP prefix lisp;
Map-Server. The module can be extended by vendors to define reference "RFC XXXX: LISP YANG model";
vendor-specific parameters and policies. }
import ietf-lisp-address-types {
prefix lcaf;
reference "RFC XXXX: LISP YANG model";
}
import ietf-yang-types {
prefix yang;
reference "RFC 6991: Common YANG Data Types";
}
import ietf-routing {
prefix "rt";
reference
"RFC 8349: A YANG Data Model for Routing Management
(NMDA version)";
}
Copyright (c) 2018 IETF Trust and the persons identified as organization
authors of the code. All rights reserved. "IETF LISP (Locator/ID Separation Protocol) Working Group";
contact
"WG Web: <http://tools.ietf.org/wg/lisp/>
WG List: <mailto:lisp@ietf.org>
Redistribution and use in source and binary forms, with or Editor: Vina Ermagan
without modification, is permitted pursuant to, and subject <mailto:vermagan@cisco.com>
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 Editor: Alberto Rodriguez-Natal
the RFC itself for full legal notices. <mailto:natal@cisco.com>
";
// RFC Ed.: replace XXXX with actual RFC number and remove
// this note
reference "RFC XXXX";
revision 2018-03-05 { Editor: Reshad Rahman
description <mailto:rrahman@cisco.com>";
"Initial revision."; description
reference "This YANG module defines the generic parameters for a LISP
"https://tools.ietf.org/html/rfc6833"; Map-Server. The module can be extended by vendors to define
} vendor-specific parameters and policies.
identity ms { Copyright (c) 2018 IETF Trust and the persons identified as
base lisp:lisp-role; authors of the code. All rights reserved.
description
"LISP Map-Server.";
}
grouping ms-counters { Redistribution and use in source and binary forms, with or
description "Group that defines map-server counters."; without modification, is permitted pursuant to, and subject
container counters { to the license terms contained in, the Simplified BSD License
config false; set forth in Section 4.c of the IETF Trust's Legal Provisions
description "Container for the counters"; Relating to IETF Documents
leaf map-registers-in { (http://trustee.ietf.org/license-info).
type yang:counter64;
description "Number of incoming Map-Register messages";
}
leaf map-registers-in-auth-failed { This version of this YANG module is part of RFC XXXX; see
type yang:counter64; the RFC itself for full legal notices.
description ";
"Number of incoming Map-Register messages failed
authentication";
}
leaf map-notify-records-out { reference "RFC XXXX";
type yang:counter64;
description
"Number of outgoing Map-Notify records";
}
leaf proxy-reply-records-out { revision 2018-06-29 {
type yang:counter64; description
description "Initial revision.";
"Number of outgoing proxy Map-Reply records"; reference
} "https://tools.ietf.org/html/rfc6833";
}
leaf map-requests-forwarded-out { identity ms {
type yang:counter64; base lisp:lisp-role;
description description
"Number of outgoing Map-Requests forwarded to ETR"; "LISP Map-Server.";
} }
}
}
augment "/lisp:lisp/lisp:lisp-router-instances" grouping ms-counters {
+ "/lisp:lisp-router-instance" { description "Group that defines map-server counters.";
when "lisp:lisp-role/lisp:lisp-role-type = 'lisp-ms:ms'" { container counters {
description config false;
"Augment is valid when LISP device type is Map-Server."; description "Container for the counters";
}
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 { leaf map-registers-in {
key site-id; type yang:counter64;
description description "Number of incoming Map-Register messages";
"Site that can send registrations."; }
leaf site-id {
type uint64;
description "Site ID";
}
container auth-key {
description
"Site authentication key.";
leaf auth-key-value {
type string;
description
"Clear text authentication key";
}
leaf-list auth-key-type {
type lisp:auth-key-type;
description
"Authentication key type.";
}
}
}
}
container virtual-network-ids {
description
"Sites for which the Map-Server accepts registrations.";
list virtual-network-identifier {
key "vni";
description
"Virtual network instances in the Map-Server.";
leaf vni {
type lcaf:instance-id-type;
description
"Virtual network 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.";
}
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 map-registers-in-auth-failed {
config false; type yang:counter64;
description "Summary state information"; description
"Number of incoming Map-Register messages failed
authentication";
}
leaf number-configured-sites { leaf map-notify-records-out {
type uint32; type yang:counter64;
description "Number of configured LISP sites"; description
} "Number of outgoing Map-Notify records";
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 { leaf proxy-reply-records-out {
key "address-type"; type yang:counter64;
description "Number of configured EIDs for this AF"; description
leaf address-type { "Number of outgoing proxy Map-Reply records";
type lcaf:lisp-address-family-ref; }
description "AF type";
} leaf map-requests-forwarded-out {
leaf number-configured-eids { type yang:counter64;
type uint32; description
description "Number of configured EIDs for this AF"; "Number of outgoing Map-Requests forwarded to ETR";
} }
leaf number-registered-eids { }
type uint32; }
description "Number of registered EIDs for this AF";
} augment "/rt:routing/rt:control-plane-protocols"
} + "/rt:control-plane-protocol/lisp:lisp" {
} when "lisp:lisp-role/lisp:lisp-role-type = 'lisp-ms:ms'" {
} description
uses ms-counters; "Augment is valid when LISP device type is Map-Server.";
} }
} description
} "This augments LISP devices list with Map-Server specific
<CODE ENDS> 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";
}
container auth-key {
description
"Site authentication key.";
leaf auth-key-value {
type string;
description
"Clear text authentication key";
}
leaf-list auth-key-type {
type lisp:auth-key-type;
description
"Authentication key type.";
}
}
}
}
container virtual-network-ids {
description
"Sites for which the Map-Server accepts registrations.";
list virtual-network-identifier {
key "vni";
description
"Virtual network instances in the Map-Server.";
leaf vni {
type lcaf:instance-id-type;
description
"Virtual network 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 /lisp:lisp/lisp:lisp-router-instances/lisp:lisp-router-instance: augment /rt:routing/rt:control-plane-protocols
+--rw map-resolver! /rt:control-plane-protocol/lisp:lisp:
+--rw mapping-system-type? lisp:mapping-system-ref +--rw map-resolver!
+--rw ms-address? inet:ip-address +--rw mapping-system-type? lisp:mapping-system-ref
+--rw ms-address? inet:ip-address
6.2. Module Definition 6.2. Module Definition
<CODE BEGINS> file "ietf-lisp-mapresolver@2018-03-05.yang" <CODE BEGINS> file "ietf-lisp-mapresolver@2018-06-29.yang"
module ietf-lisp-mapresolver { module ietf-lisp-mapresolver {
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 occurences of XXXX with actual RFC number
// and remove this note
import ietf-lisp { import ietf-lisp {
prefix lisp; prefix lisp;
reference "RFC XXXX: LISP YANG model";
} }
import ietf-inet-types { import ietf-inet-types {
prefix inet; 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 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:vermagan@cisco.com> <mailto:vermagan@cisco.com>
skipping to change at page 40, line 15 skipping to change at page 48, line 15
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.
"; ";
// RFC Ed.: replace XXXX with actual RFC number and remove
// this note
reference "RFC XXXX"; reference "RFC XXXX";
revision 2018-05-03 { revision 2018-06-29 {
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 "/lisp:lisp/lisp:lisp-router-instances"
+"/lisp:lisp-router-instance" { augment "/rt:routing/rt:control-plane-protocols"
+ "/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 LISP devices list with Map-Resolver specific
parameters."; 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-mr:single-node-mapping-system'"; when "../mapping-system-type='lisp:single-node-mapping-system'";
type inet:ip-address; type inet:ip-address;
description description
"address to reach the Map Server when " "address to reach the Map Server when "
+ "lisp-mr:single-node-mapping-system is being used."; + "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@2018-03-05.yang" <CODE BEGINS> file "ietf-lisp-address-types@2018-06-29.yang"
module ietf-lisp-address-types { module ietf-lisp-address-types {
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;
revision-date 2013-07-15; reference "RFC 6991: Common YANG Data Types";
} }
import ietf-yang-types { import ietf-yang-types {
prefix yang; prefix yang;
revision-date 2013-07-15; reference "RFC 6991: Common YANG Data Types";
} }
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:vermagan@cisco.com> <mailto:vermagan@cisco.com>
Editor: Alberto Rodriguez-Natal Editor: Alberto Rodriguez-Natal
skipping to change at page 42, line 20 skipping to change at page 50, line 24
(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 2018-03-05 { revision 2018-06-29 {
description description
"Initial revision."; "Initial revision.";
reference reference
"http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10"; "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10";
} }
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.";
} }
identity no-address-afi { identity no-address-afi {
base lisp-address-family; base lisp-address-family;
description description
"IANA Reserved."; "IANA Reserved.";
} }
identity ipv4-afi { identity ipv4-afi {
base lisp-address-family; base lisp-address-family;
description description
"IANA IPv4 address family."; "IANA IPv4 address family.";
} }
identity ipv4-prefix-afi { identity ipv4-prefix-afi {
base lisp-address-family; base lisp-address-family;
description description
"IANA IPv4 address family prefix."; "IANA IPv4 address family prefix.";
} }
skipping to change at page 46, line 41 skipping to change at page 54, line 46
leaf virtual-network-id { leaf virtual-network-id {
type instance-id-type; type instance-id-type;
description description
"Virtual Network Identifier (instance-id) of the address."; "Virtual Network Identifier (instance-id) of the address.";
} }
choice address { choice address {
description description
"Various LISP address types, including IP, MAC, and LCAF."; "Various LISP address types, including IP, MAC, and LCAF.";
leaf no-address { leaf no-address {
when "../address-type = 'laddr:no-addr-afi'" { when "../address-type = 'laddr:no-address-afi'" {
description description
"When AFI is 0."; "When AFI is 0.";
} }
type empty; type empty;
description description
"No address."; "No address.";
} }
leaf ipv4 { leaf ipv4 {
when "../address-type = 'laddr:ipv4-afi'" { when "../address-type = 'laddr:ipv4-afi'" {
description description
skipping to change at page 55, line 41 skipping to change at page 63, line 45
type uint8; type uint8;
description description
"Service path index for NSH header"; "Service path index for NSH header";
} }
} }
} }
} }
} }
<CODE ENDS> <CODE ENDS>
7.2. Data Model examples
This section presents some simple and illustrative examples on how to
configure LISP.
7.2.1. LISP protocol instance
The following is an example configuration for a LISP protocol
instance with the name "LISP1". There are also 2 VNIs configured.
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<network-instances xmlns="urn:ietf:params:xml:ns:yang:ietf-network-instance">
<network-instance>
<name>VRF-BLUE</name>
<vrf-root/>
<enabled>true</enabled>
</network-instance>
<network-instance>
<name>VRF-RED</name>
<vrf-root/>
<enabled>true</enabled>
</network-instance>
</network-instances>
<routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing">
<control-plane-protocols>
<control-plane-protocol>
<type xmlns:lisp="urn:ietf:params:xml:ns:yang:ietf-lisp">
lisp:lisp
</type>
<name>LISP1</name>
<lisp xmlns="urn:ietf:params:xml:ns:yang:ietf-lisp">
<virtual-networks>
<virtual-network>
<vni>1000</vni>
<ni-name>VRF-BLUE</ni-name>
</virtual-network>
<virtual-network>
<vni>2000</vni>
<ni-name>VRF-RED</ni-name>
</virtual-network>
</virtual-networks>
</lisp>
</control-plane-protocol>
</control-plane-protocols>
</routing>
</config>
7.2.2. LISP ITR
The following is an example configuration for ITR functionality under
"LISP1". There are 2 Map-Resolvers configured.
<?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">
<control-plane-protocols>
<control-plane-protocol>
<type xmlns:lisp="urn:ietf:params:xml:ns:yang:ietf-lisp">
lisp:lisp
</type>
<name>LISP1</name>
<lisp xmlns="urn:ietf:params:xml:ns:yang:ietf-lisp">
<lisp-role>
<lisp-role-type>itr</lisp-role-type>
</lisp-role>
<itr xmlns="urn:ietf:params:xml:ns:yang:ietf-lisp-itr">
<map-resolvers>
<map-resolver>2001:db8:203:0:113::1</map-resolver>
<map-resolver>2001:db8:204:0:113::1</map-resolver>
</map-resolvers>
</itr>
</lisp>
</control-plane-protocol>
</control-plane-protocols>
</routing>
</config>
7.2.3. LISP ETR
The following is an example configuration for ETR functionality under
"LISP1". There are 2 Map-Servers and 2 local EIDs configured.
<?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">
<control-plane-protocols>
<control-plane-protocol>
<type xmlns:lisp="urn:ietf:params:xml:ns:yang:ietf-lisp">
lisp:lisp
</type>
<name>LISP1</name>
<lisp xmlns="urn:ietf:params:xml:ns:yang:ietf-lisp">
<lisp-role>
<lisp-role-type>etr</lisp-role-type>
</lisp-role>
<lisp-router-id>
<site-id>1</site-id>
</lisp-router-id>
<etr xmlns="urn:ietf:params:xml:ns:yang:ietf-lisp-etr">
<map-servers>
<map-server>
<ms-address>2001:db8:203:0:113::1</ms-address>
<auth-key>*Kye^$$1#gb91U04zpa!</auth-key>
<auth-key-type>hmac-sha-256-128</auth-key-type>
</map-server>
<map-server>
<ms-address>2001:db8:204:0:113::1</ms-address>
<auth-key>*Kye^$$1#gb91U04zpa!</auth-key>
<auth-key-type>hmac-sha-256-128</auth-key-type>
</map-server>
</map-servers>
<local-eids>
<virtual-network>
<vni>1000</vni>
<eids>
<local-eid>
<id>2001:db8:400:0:100::0</id>
<eid-address>
<address-type xmlns:laddr=
"urn:ietf:params:xml:ns:yang:ietf-lisp-address-types">
laddr:ipv6-prefix-afi
</address-type>
<ipv6-prefix>2001:db8:400:0:100::/80</ipv6-prefix>
</eid-address>
</local-eid>
</eids>
</virtual-network>
<virtual-network>
<vni>2000</vni>
<eids>
<local-eid>
<id>2001:db8:800:0:200::0</id>
<eid-address>
<address-type xmlns:laddr=
"urn:ietf:params:xml:ns:yang:ietf-lisp-address-types">
laddr:ipv6-prefix-afi
</address-type>
<ipv6-prefix>2001:db8:800:0:200::/80</ipv6-prefix>
</eid-address>
</local-eid>
</eids>
</virtual-network>
</local-eids>
</etr>
</lisp>
</control-plane-protocol>
</control-plane-protocols>
</routing>
</config>
7.2.4. LISP Map-Server
The following is an example configuration for Map-Server
functionality under "LISP1". There are 2 mappings configured.
<config xmlns="http://tail-f.com/ns/config/1.0">
<routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing">
<control-plane-protocols>
<control-plane-protocol>
<type xmlns:lisp="urn:ietf:params:xml:ns:yang:ietf-lisp">
lisp:lisp
</type>
<name>LISP1</name>
<lisp xmlns="urn:ietf:params:xml:ns:yang:ietf-lisp">
<lisp-role>
<lisp-role-type xmlns:lisp-ms=
"urn:ietf:params:xml:ns:yang:ietf-lisp-mapserver">
lisp-ms:ms
</lisp-role-type>
</lisp-role>
<map-server xmlns="urn:ietf:params:xml:ns:yang:ietf-lisp-mapserver">
<sites>
<site>
<site-id>1</site-id>
<auth-key>
<auth-key-value>*Kye^$$1#gb91U04zpa!</auth-key-value>
<auth-key-type>hmac-sha-256-128</auth-key-type>
</auth-key>
</site>
</sites>
<virtual-network-ids>
<virtual-network-identifier>
<vni>1000</vni>
<mappings>
<mapping>
<eid-id>1</eid-id>
<eid-address>
<address-type xmlns:laddr=
"urn:ietf:params:xml:ns:yang:ietf-lisp-address-types">
laddr:ipv6-prefix-afi
</address-type>
<ipv6-prefix>2001:db8:400:0:100::/80</ipv6-prefix>
</eid-address>
</mapping>
</mappings>
</virtual-network-identifier>
<virtual-network-identifier>
<vni>2000</vni>
<mappings>
<mapping>
<eid-id>1</eid-id>
<eid-address>
<address-type xmlns:laddr=
"urn:ietf:params:xml:ns:yang:ietf-lisp-address-types">
laddr:ipv6-prefix-afi
</address-type>
<ipv6-prefix>2001:db8:800:0:200::/80</ipv6-prefix>
</eid-address>
</mapping>
</mappings>
</virtual-network-identifier>
</virtual-network-ids>
</map-server>
</lisp>
</control-plane-protocol>
</control-plane-protocols>
</routing>
</config>
8. Acknowledgments 8. Acknowledgments
The tree view and the YANG model shown in this document have been The tree view and the YANG model shown in this document have been
formated with the 'pyang' tool. formated with the 'pyang' tool.
9. IANA Considerations 9. IANA Considerations
This memo includes no request to IANA. The IANA is requested to as assign a new namespace URI from the IETF
XML registry.
This document registers the following namesace URIs in the IETF XML
registry [RFC3688]:
--------------------------------------------------------------------
URI: urn:ietf:params:xml:ns:yang:ietf-lisp
Registrant Contact: The IESG.
XML: N/A, the requested URI is an XML namespace.
--------------------------------------------------------------------
--------------------------------------------------------------------
URI: urn:ietf:params:xml:ns:yang:ietf-lisp-itr
Registrant Contact: The IESG.
XML: N/A, the requested URI is an XML namespace.
--------------------------------------------------------------------
--------------------------------------------------------------------
URI: urn:ietf:params:xml:ns:yang:ietf-lisp-etr
Registrant Contact: The IESG.
XML: N/A, the requested URI is an XML namespace.
--------------------------------------------------------------------
--------------------------------------------------------------------
URI: urn:ietf:params:xml:ns:yang:ietf-lisp-mapserver
Registrant Contact: The IESG.
XML: N/A, the requested URI is an XML namespace.
--------------------------------------------------------------------
--------------------------------------------------------------------
URI: urn:ietf:params:xml:ns:yang:ietf-lisp-mapresolver
Registrant Contact: The IESG.
XML: N/A, the requested URI is an XML namespace.
--------------------------------------------------------------------
--------------------------------------------------------------------
URI: urn:ietf:params:xml:ns:yang:ietf-lisp-address-types
Registrant Contact: The IESG.
XML: N/A, the requested URI is an XML namespace.
--------------------------------------------------------------------
10. Security Considerations 10. Security Considerations
Security Considerations TBD Security Considerations TBD
11. Normative References 11. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004,
<https://www.rfc-editor.org/info/rfc3688>.
[RFC6830] Farinacci, D., Fuller, V., Meyer, D., and D. Lewis, "The [RFC6830] Farinacci, D., Fuller, V., Meyer, D., and D. Lewis, "The
Locator/ID Separation Protocol (LISP)", RFC 6830, Locator/ID Separation Protocol (LISP)", RFC 6830,
DOI 10.17487/RFC6830, January 2013, DOI 10.17487/RFC6830, January 2013,
<https://www.rfc-editor.org/info/rfc6830>. <https://www.rfc-editor.org/info/rfc6830>.
[RFC6832] Lewis, D., Meyer, D., Farinacci, D., and V. Fuller, [RFC6832] Lewis, D., Meyer, D., Farinacci, D., and V. Fuller,
"Interworking between Locator/ID Separation Protocol "Interworking between Locator/ID Separation Protocol
(LISP) and Non-LISP Sites", RFC 6832, (LISP) and Non-LISP Sites", RFC 6832,
DOI 10.17487/RFC6832, January 2013, DOI 10.17487/RFC6832, January 2013,
<https://www.rfc-editor.org/info/rfc6832>. <https://www.rfc-editor.org/info/rfc6832>.
skipping to change at page 56, line 46 skipping to change at page 71, line 19
[RFC8060] Farinacci, D., Meyer, D., and J. Snijders, "LISP Canonical [RFC8060] Farinacci, D., Meyer, D., and J. Snijders, "LISP Canonical
Address Format (LCAF)", RFC 8060, DOI 10.17487/RFC8060, Address Format (LCAF)", RFC 8060, DOI 10.17487/RFC8060,
February 2017, <https://www.rfc-editor.org/info/rfc8060>. February 2017, <https://www.rfc-editor.org/info/rfc8060>.
[RFC8111] Fuller, V., Lewis, D., Ermagan, V., Jain, A., and A. [RFC8111] Fuller, V., Lewis, D., Ermagan, V., Jain, A., and A.
Smirnov, "Locator/ID Separation Protocol Delegated Smirnov, "Locator/ID Separation Protocol Delegated
Database Tree (LISP-DDT)", RFC 8111, DOI 10.17487/RFC8111, Database Tree (LISP-DDT)", RFC 8111, DOI 10.17487/RFC8111,
May 2017, <https://www.rfc-editor.org/info/rfc8111>. May 2017, <https://www.rfc-editor.org/info/rfc8111>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018,
<https://www.rfc-editor.org/info/rfc8340>.
[RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for
Routing Management (NMDA Version)", RFC 8349,
DOI 10.17487/RFC8349, March 2018,
<https://www.rfc-editor.org/info/rfc8349>.
Authors' Addresses Authors' Addresses
Vina Ermagan Vina Ermagan
Cisco Systems Cisco Systems
San Jose, CA San Jose, CA
USA USA
Email: vermagan@cisco.com Email: vermagan@cisco.com
Alberto Rodriguez-Natal Alberto Rodriguez-Natal
Cisco Systems Cisco Systems
San Jose, CA San Jose, CA
 End of changes. 217 change blocks. 
1224 lines changed or deleted 1924 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/