< draft-ietf-lisp-yang-15.txt   draft-ietf-lisp-yang-16.txt >
LISP Working Group V. Ermagan LISP Working Group V. Ermagan
Internet-Draft Google Internet-Draft Google
Intended status: Experimental A. Rodriguez-Natal Intended status: Experimental A. Rodriguez-Natal
Expires: August 26, 2021 F. Coras Expires: 25 February 2022 F. Coras
Cisco Systems Cisco Systems
C. Moberg C. Moberg
Avassa Avassa
R. Rahman R. Rahman
A. Cabellos-Aparicio A. Cabellos-Aparicio
Technical University of Catalonia Technical University of Catalonia
F. Maino F. Maino
Cisco Systems Cisco Systems
February 22, 2021 24 August 2021
LISP YANG Model LISP YANG Model
draft-ietf-lisp-yang-15 draft-ietf-lisp-yang-16
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 44 skipping to change at page 1, line 44
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 August 26, 2021. This Internet-Draft will expire on 25 February 2022.
Copyright Notice Copyright Notice
Copyright (c) 2021 IETF Trust and the persons identified as the Copyright (c) 2021 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/
(https://trustee.ietf.org/license-info) in effect on the date of license-info) in effect on the date of publication of this document.
publication of this document. Please review these documents Please review these documents carefully, as they describe your rights
carefully, as they describe your rights and restrictions with respect and restrictions with respect to this document. Code Components
to this document. Code Components extracted from this document must extracted from this document must include Simplified BSD License text
include Simplified BSD License text as described in Section 4.e of as described in Section 4.e of the Trust Legal Provisions and are
the Trust Legal Provisions and are provided without warranty as provided without warranty as described in the Simplified BSD License.
described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3
1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3
1.3. Prefixes . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3. Prefixes . . . . . . . . . . . . . . . . . . . . . . . . 3
2. LISP Module . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. LISP Module . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1. Module Structure . . . . . . . . . . . . . . . . . . . . 4 2.1. Module Structure . . . . . . . . . . . . . . . . . . . . 4
2.2. Module Definition . . . . . . . . . . . . . . . . . . . . 7 2.2. Module Definition . . . . . . . . . . . . . . . . . . . . 7
3. LISP-ITR Module . . . . . . . . . . . . . . . . . . . . . . . 18 3. LISP-ITR Module . . . . . . . . . . . . . . . . . . . . . . . 19
3.1. Module Structure . . . . . . . . . . . . . . . . . . . . 18 3.1. Module Structure . . . . . . . . . . . . . . . . . . . . 19
3.2. Module Definition . . . . . . . . . . . . . . . . . . . . 24 3.2. Module Definition . . . . . . . . . . . . . . . . . . . . 24
4. LISP-ETR Module . . . . . . . . . . . . . . . . . . . . . . . 27 4. LISP-ETR Module . . . . . . . . . . . . . . . . . . . . . . . 28
4.1. Module Structure . . . . . . . . . . . . . . . . . . . . 27 4.1. Module Structure . . . . . . . . . . . . . . . . . . . . 28
4.2. Module Definition . . . . . . . . . . . . . . . . . . . . 30 4.2. Module Definition . . . . . . . . . . . . . . . . . . . . 30
5. LISP-Map-Server Module . . . . . . . . . . . . . . . . . . . 34 5. LISP-Map-Server Module . . . . . . . . . . . . . . . . . . . 34
5.1. Module Structure . . . . . . . . . . . . . . . . . . . . 34 5.1. Module Structure . . . . . . . . . . . . . . . . . . . . 34
5.2. Module Definition . . . . . . . . . . . . . . . . . . . . 43 5.2. Module Definition . . . . . . . . . . . . . . . . . . . . 43
6. LISP-Map-Resolver Module . . . . . . . . . . . . . . . . . . 49 6. LISP-Map-Resolver Module . . . . . . . . . . . . . . . . . . 49
6.1. Module Structure . . . . . . . . . . . . . . . . . . . . 49 6.1. Module Structure . . . . . . . . . . . . . . . . . . . . 50
6.2. Module Definition . . . . . . . . . . . . . . . . . . . . 49 6.2. Module Definition . . . . . . . . . . . . . . . . . . . . 50
7. LISP-Address-Types Module . . . . . . . . . . . . . . . . . . 51 7. LISP-Address-Types Module . . . . . . . . . . . . . . . . . . 52
7.1. Module Definition . . . . . . . . . . . . . . . . . . . . 51 7.1. Module Definition . . . . . . . . . . . . . . . . . . . . 52
7.2. Data Model examples . . . . . . . . . . . . . . . . . . . 66 7.2. Data Model examples . . . . . . . . . . . . . . . . . . . 67
7.2.1. LISP protocol instance . . . . . . . . . . . . . . . 66 7.2.1. LISP protocol instance . . . . . . . . . . . . . . . 67
7.2.2. LISP ITR . . . . . . . . . . . . . . . . . . . . . . 68 7.2.2. LISP ITR . . . . . . . . . . . . . . . . . . . . . . 69
7.2.3. LISP ETR . . . . . . . . . . . . . . . . . . . . . . 68 7.2.3. LISP ETR . . . . . . . . . . . . . . . . . . . . . . 69
7.2.4. LISP Map-Server . . . . . . . . . . . . . . . . . . . 71 7.2.4. LISP Map-Server . . . . . . . . . . . . . . . . . . . 72
8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 72 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 73
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 72 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 73
10. Security Considerations . . . . . . . . . . . . . . . . . . . 75 10. Security Considerations . . . . . . . . . . . . . . . . . . . 77
11. Normative References . . . . . . . . . . . . . . . . . . . . 78 11. Normative References . . . . . . . . . . . . . . . . . . . . 80
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 81 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 82
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 1.1. Requirements Language
skipping to change at page 3, line 31 skipping to change at page 4, line 5
1.2. Tree Diagrams 1.2. Tree Diagrams
This document uses the graphical representation of data models This document uses the graphical representation of data models
defined in [RFC8340]. defined in [RFC8340].
1.3. Prefixes 1.3. Prefixes
The table below provides a summary of the prefixes used by this The table below provides a summary of the prefixes used by this
document. document.
+----------+-------------------------+------------------------------+ +==========+=========================+===========+
| Prefix | YANG module | Reference | | Prefix | YANG module | Reference |
+----------+-------------------------+------------------------------+ +==========+=========================+===========+
| lisp | ietf-lisp | Section 2 | | lisp | ietf-lisp | Section 2 |
| if | ietf-interfaces | [RFC8343] | +----------+-------------------------+-----------+
| lisp-at | ietf-lisp-address-types | Section 7 | | if | ietf-interfaces | [RFC8343] |
| yang | ietf-yang-types | [RFC6991] | +----------+-------------------------+-----------+
| rt | ietf-routing | [RFC8022] | | lisp-at | ietf-lisp-address-types | Section 7 |
| ni | ietf-network-instance | [RFC8529] | +----------+-------------------------+-----------+
| lisp-itr | ietf-lisp-itr | Section 3 | | yang | ietf-yang-types | [RFC6991] |
| inet | ietf-inet-types | [RFC6991] | +----------+-------------------------+-----------+
| lisp-etr | ietf-lisp-etr | Section 4 | | rt | ietf-routing | [RFC8022] |
| lisp-ms | ietf-lisp-mapserver | Section 5 | +----------+-------------------------+-----------+
| lisp-mr | ietf-lisp-mapresolver | Section 6 | | ni | ietf-network-instance | [RFC8529] |
+----------+-------------------------+------------------------------+ +----------+-------------------------+-----------+
| lisp-itr | ietf-lisp-itr | Section 3 |
+----------+-------------------------+-----------+
| inet | ietf-inet-types | [RFC6991] |
+----------+-------------------------+-----------+
| lisp-etr | ietf-lisp-etr | Section 4 |
+----------+-------------------------+-----------+
| lisp-ms | ietf-lisp-mapserver | Section 5 |
+----------+-------------------------+-----------+
| lisp-mr | ietf-lisp-mapresolver | Section 6 |
+----------+-------------------------+-----------+
Table 1: Prefixes and corresponding YANG modules Table 1: Prefixes and corresponding YANG modules
2. LISP Module 2. LISP Module
This is the base LISP module. It is further augmented by the LISP This is the base LISP module. It is further augmented by the LISP
device role specific modules defined elsewhere in this document. device role specific modules defined elsewhere in this document.
2.1. Module Structure 2.1. Module Structure
skipping to change at page 51, line 39 skipping to change at page 52, line 30
} }
<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@2021-02-22.yang" <CODE BEGINS> file "ietf-lisp-address-types@2021-02-22.yang"
module ietf-lisp-address-types { module ietf-lisp-address-types {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-address-types";
prefix lisp-at; namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-address-types";
import ietf-inet-types { prefix lisp-at;
prefix inet;
reference "RFC 6991: Common YANG Data Types";
}
import ietf-yang-types {
prefix yang;
reference "RFC 6991: Common YANG Data Types";
}
organization import ietf-inet-types {
"IETF LISP (Locator/ID Separation Protocol) Working Group"; prefix inet;
contact reference "RFC 6991: Common YANG Data Types";
"WG Web: <http://tools.ietf.org/wg/lisp/> }
WG List: <mailto:lisp@ietf.org> import ietf-yang-types {
prefix yang;
reference "RFC 6991: Common YANG Data Types";
}
Editor: Vina Ermagan organization
<mailto:ermagan@gmail.com> "IETF LISP (Locator/ID Separation Protocol) Working Group";
contact
"WG Web: <http://tools.ietf.org/wg/lisp/>
WG List: <mailto:lisp@ietf.org>
Editor: Vina Ermagan
<mailto:ermagan@gmail.com>
Editor: Alberto Rodriguez-Natal Editor: Alberto Rodriguez-Natal
<mailto:natal@cisco.com> <mailto:natal@cisco.com>
Editor: Reshad Rahman Editor: Reshad Rahman
<mailto:reshad@yahoo.com>"; <mailto:reshad@yahoo.com>";
description description
"This YANG module defines the LISP Canonical Address Formats "This YANG module defines the LISP Canonical Address Formats
(LCAF) for LISP. The module can be extended by vendors to (LCAF) for LISP. The module can be extended by vendors to
define vendor-specific parameters. define vendor-specific parameters.
Copyright (c) 2018 IETF Trust and the persons identified as Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices. the RFC itself for full legal notices.
"; ";
// 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 2021-02-22 { revision 2021-02-22 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RC8060: LISP Canonical Address Format (LCAF)"; "RC8060: LISP Canonical Address Format (LCAF)";
} }
identity lisp-address-family { identity lisp-address-family {
description description
"Base identity from which identities describing LISP address "Base identity from which identities describing LISP address
families are derived."; families are derived.";
} }
identity no-address-afi { identity no-address-afi {
base lisp-address-family;
description
"IANA Reserved.";
}
identity ipv4-afi {
base lisp-address-family;
description
"IANA IPv4 address family.";
}
identity ipv4-prefix-afi {
base lisp-address-family;
description
"IANA IPv4 address family prefix.";
}
identity ipv6-afi {
base lisp-address-family;
description
"IANA IPv6 address family.";
}
identity ipv6-prefix-afi {
base lisp-address-family;
description
"IANA IPv6 address family prefix.";
}
identity mac-afi {
base lisp-address-family;
description
"IANA MAC address family.";
}
identity distinguished-name-afi {
base lisp-address-family;
description
"IANA Distinguished Name address family.";
}
identity as-number-afi {
base lisp-address-family; base lisp-address-family;
description description
"IANA AS Number address family."; "IANA Reserved.";
}
identity lcaf {
base lisp-address-family;
description
"IANA LISP Canonical Address Format address family.";
}
identity null-address-lcaf {
base lcaf;
description
"Null body LCAF type.";
}
identity afi-list-lcaf {
base lcaf;
description
"AFI-List LCAF type.";
}
identity instance-id-lcaf {
base lcaf;
description
"Instance-ID LCAF type.";
}
identity as-number-lcaf {
base lcaf;
description
"AS Number LCAF type.";
}
identity application-data-lcaf {
base lcaf;
description
"Application Data LCAF type.";
}
identity geo-coordinates-lcaf {
base lcaf;
description
"Geo-coordinates LCAF type.";
}
identity opaque-key-lcaf {
base lcaf;
description
"Opaque Key LCAF type.";
}
identity nat-traversal-lcaf {
base lcaf;
description
"NAT-Traversal LCAF type.";
}
identity nonce-locator-lcaf {
base lcaf;
description
"Nonce-Locator LCAF type.";
}
identity multicast-info-lcaf {
base lcaf;
description
"Multicast Info LCAF type.";
}
identity explicit-locator-path-lcaf {
base lcaf;
description
"Explicit Locator Path LCAF type.";
}
identity security-key-lcaf {
base lcaf;
description
"Security Key LCAF type.";
}
identity source-dest-key-lcaf {
base lcaf;
description
"Source/Dest LCAF type.";
}
identity replication-list-lcaf {
base lcaf;
description
"Replication-List LCAF type.";
}
identity json-data-model-lcaf {
base lcaf;
description
"JSON Data Model LCAF type.";
}
identity key-value-address-lcaf {
base lcaf;
description
"Key/Value Address LCAF type.";
}
identity encapsulation-format-lcaf {
base lcaf;
description
"Encapsulation Format LCAF type.";
}
identity service-path-lcaf {
base lcaf;
description
"Service Path LCAF type.";
}
typedef instance-id-type {
type uint32 {
range "0..16777215";
} }
description identity ipv4-afi {
"Defines the range of values for an Instance ID."; base lisp-address-family;
} description
typedef service-path-id-type { "IANA IPv4 address family.";
type uint32 {
range "0..16777215";
} }
description identity ipv4-prefix-afi {
"Defines the range of values for a Service Path ID."; base lisp-address-family;
} description
typedef distinguished-name-type { "IANA IPv4 address family prefix.";
type string;
description
"Distinguished Name address.";
reference
"http://www.iana.org/assignments/address-family-numbers/
address-family-numbers.xhtml";
}
typedef simple-address {
type union {
type inet:ip-address;
type inet:ip-prefix;
type yang:mac-address;
type distinguished-name-type;
type inet:as-number;
} }
description identity ipv6-afi {
"Union of address types that can be part of LCAFs.";
}
typedef lisp-address-family-ref {
type identityref {
base lisp-address-family; base lisp-address-family;
description
"IANA IPv6 address family.";
} }
description identity ipv6-prefix-afi {
"LISP address family reference."; base lisp-address-family;
} description
typedef lcaf-ref { "IANA IPv6 address family prefix.";
type identityref { }
identity mac-afi {
base lisp-address-family;
description
"IANA MAC address family.";
}
identity distinguished-name-afi {
base lisp-address-family;
description
"IANA Distinguished Name address family.";
}
identity as-number-afi {
base lisp-address-family;
description
"IANA AS Number address family.";
}
identity lcaf {
base lisp-address-family;
description
"IANA LISP Canonical Address Format address family.";
}
identity null-address-lcaf {
base lcaf; base lcaf;
description
"Null body LCAF type.";
} }
description identity afi-list-lcaf {
"LCAF types reference."; base lcaf;
} description
"AFI-List LCAF type.";
grouping lisp-address { }
description identity instance-id-lcaf {
"Generic LISP address."; base lcaf;
leaf address-type {
type lisp-address-family-ref;
mandatory true;
description description
"Type of the LISP address."; "Instance-ID LCAF type.";
} }
choice address { identity as-number-lcaf {
base lcaf;
description description
"Various LISP address types, including IP, MAC, and LCAF."; "AS Number LCAF type.";
}
leaf no-address { identity application-data-lcaf {
when "../address-type = 'lisp-at:no-address-afi'" { base lcaf;
description description
"When AFI is 0."; "Application Data LCAF type.";
} }
type empty; identity geo-coordinates-lcaf {
description base lcaf;
"No address."; description
} "Geo-coordinates LCAF type.";
leaf ipv4 { }
when "../address-type = 'lisp-at:ipv4-afi'" { identity opaque-key-lcaf {
description base lcaf;
"When AFI is IPv4."; description
} "Opaque Key LCAF type.";
type inet:ipv4-address; }
description identity nat-traversal-lcaf {
"IPv4 address."; base lcaf;
} description
leaf ipv4-prefix { "NAT-Traversal LCAF type.";
when "../address-type = 'lisp-at:ipv4-prefix-afi'" { }
description identity nonce-locator-lcaf {
"When AFI is IPv4."; base lcaf;
} description
type inet:ipv4-prefix; "Nonce-Locator LCAF type.";
description }
"IPv4 prefix."; identity multicast-info-lcaf {
} base lcaf;
leaf ipv6 { description
when "../address-type = 'lisp-at:ipv6-afi'" { "Multicast Info LCAF type.";
description }
"When AFI is IPv6."; identity explicit-locator-path-lcaf {
} base lcaf;
type inet:ipv6-address; description
description "Explicit Locator Path LCAF type.";
"IPv6 address."; }
identity security-key-lcaf {
base lcaf;
description
"Security Key LCAF type.";
}
identity source-dest-key-lcaf {
base lcaf;
description
"Source/Dest LCAF type.";
}
identity replication-list-lcaf {
base lcaf;
description
"Replication-List LCAF type.";
}
identity json-data-model-lcaf {
base lcaf;
description
"JSON Data Model LCAF type.";
}
identity key-value-address-lcaf {
base lcaf;
description
"Key/Value Address LCAF type.";
}
identity encapsulation-format-lcaf {
base lcaf;
description
"Encapsulation Format LCAF type.";
}
identity service-path-lcaf {
base lcaf;
description
"Service Path LCAF type.";
}
typedef instance-id-type {
type uint32 {
range "0..16777215";
} }
leaf ipv6-prefix { description
when "../address-type = 'lisp-at:ipv6-prefix-afi'" { "Defines the range of values for an Instance ID.";
description }
"When AFI is IPv6."; typedef service-path-id-type {
type uint32 {
} range "0..16777215";
type inet:ipv6-prefix;
description
"IPv6 address.";
} }
leaf mac { description
when "../address-type = 'lisp-at:mac-afi'" { "Defines the range of values for a Service Path ID.";
description }
"When AFI is MAC."; typedef distinguished-name-type {
} type string;
description
"Distinguished Name address.";
reference
"http://www.iana.org/assignments/address-family-numbers/
address-family-numbers.xhtml";
}
typedef simple-address {
type union {
type inet:ip-address;
type inet:ip-prefix;
type yang:mac-address; type yang:mac-address;
description
"MAC address.";
}
leaf distinguished-name {
when "../address-type = 'lisp-at:distinguished-name-afi'" {
description
"When AFI is distinguished-name.";
}
type distinguished-name-type; type distinguished-name-type;
description
"Distinguished Name address.";
}
leaf as-number {
when "../address-type = 'lisp-at:as-number-afi'" {
description
"When AFI is as-number.";
}
type inet:as-number; type inet:as-number;
}
description
"Union of address types that can be part of LCAFs.";
}
typedef lisp-address-family-ref {
type identityref {
base lisp-address-family;
}
description
"LISP address family reference.";
}
typedef lcaf-ref {
type identityref {
base lcaf;
}
description
"LCAF types reference.";
}
grouping lisp-address {
description
"Generic LISP address.";
leaf address-type {
type lisp-address-family-ref;
mandatory true;
description description
"AS Number."; "Type of the LISP address.";
} }
container null-address { choice address {
when "../address-type = 'lisp-at:null-address-lcaf'" {
description
"When LCAF type is null.";
}
description description
"Null body LCAF type"; "Various LISP address types, including IP, MAC, and LCAF.";
leaf address {
leaf no-address {
when "../address-type = 'lisp-at:no-address-afi'" {
description
"When AFI is 0.";
}
type empty; type empty;
description description
"AFI address."; "No address.";
} }
} leaf ipv4 {
container afi-list { when "../address-type = 'lisp-at:ipv4-afi'" {
when "../address-type = 'lisp-at:afi-list-lcaf'" { description
"When AFI is IPv4.";
}
type inet:ipv4-address;
description description
"When LCAF type is AFI-List."; "IPv4 address.";
} }
description leaf ipv4-prefix {
"AFI-List LCAF type."; when "../address-type = 'lisp-at:ipv4-prefix-afi'" {
reference description
"http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 "When AFI is IPv4.";
#section-4.16.1"; }
leaf-list address-list { type inet:ipv4-prefix;
type simple-address;
description description
"List of AFI addresses."; "IPv4 prefix.";
} }
} leaf ipv6 {
container instance-id { when "../address-type = 'lisp-at:ipv6-afi'" {
when "../address-type = 'lisp-at:instance-id-lcaf'" { description
"When AFI is IPv6.";
}
type inet:ipv6-address;
description description
"When LCAF type is Instance ID as per RFC8060."; "IPv6 address.";
} }
description leaf ipv6-prefix {
"Instance ID LCAF type."; when "../address-type = 'lisp-at:ipv6-prefix-afi'" {
reference description
"http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 "When AFI is IPv6.";
#section-4.2"; }
leaf instance-id { type inet:ipv6-prefix;
type instance-id-type;
description description
"Instance ID value."; "IPv6 address.";
} }
leaf mask-length { leaf mac {
type uint8; when "../address-type = 'lisp-at:mac-afi'" {
description description
"Mask length."; "When AFI is MAC.";
} }
leaf address { type yang:mac-address;
type simple-address;
description description
"AFI address."; "MAC address.";
} }
} leaf distinguished-name {
container as-number-lcaf { when "../address-type = 'lisp-at:distinguished-name-afi'" {
when "../address-type = 'lisp-at:as-number-lcaf'" { description
"When AFI is distinguished-name.";
}
type distinguished-name-type;
description description
"When LCAF type is AS-Number."; "Distinguished Name address.";
} }
description leaf as-number {
"AS Number LCAF type."; when "../address-type = 'lisp-at:as-number-afi'" {
reference description
"http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 "When AFI is as-number.";
#section-4.3"; }
leaf as {
type inet:as-number; type inet:as-number;
description description
"AS number."; "AS Number.";
} }
leaf address { container null-address {
type simple-address; when "../address-type = 'lisp-at:null-address-lcaf'" {
description
"When LCAF type is null.";
}
description description
"AFI address."; "Null body LCAF type";
leaf address {
type empty;
description
"AFI address.";
}
} }
} container afi-list {
container application-data { when "../address-type = 'lisp-at:afi-list-lcaf'" {
when "../address-type = 'lisp-at:application-data-lcaf'" { description
"When LCAF type is AFI-List.";
}
description description
"When LCAF type is Application Data."; "AFI-List LCAF type.";
} reference
description "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10
"Application Data LCAF type."; #section-4.16.1";
reference leaf-list address-list {
"http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10
#section-4.4";
leaf address {
type simple-address; type simple-address;
description description
"AFI address."; "List of AFI addresses.";
}
} }
leaf protocol { container instance-id {
type uint8; when "../address-type = 'lisp-at:instance-id-lcaf'" {
description description
"Protocol number."; "When LCAF type is Instance ID as per RFC8060.";
} }
leaf ip-tos { description
type int32; "Instance ID LCAF type.";
reference
"http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10
#section-4.2";
leaf instance-id {
type instance-id-type;
description description
"Type of service field."; "Instance ID value.";
} }
leaf local-port-low { leaf mask-length {
type inet:port-number; type uint8;
description
"Mask length.";
}
leaf address {
type simple-address;
description description
"Low end of local port range."; "AFI address.";
}
} }
leaf local-port-high { container as-number-lcaf {
type inet:port-number; when "../address-type = 'lisp-at:as-number-lcaf'" {
description description
"High end of local port range."; "When LCAF type is AS-Number.";
} }
leaf remote-port-low { description
type inet:port-number; "AS Number LCAF type.";
reference
"http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10
#section-4.3";
leaf as {
type inet:as-number;
description description
"Low end of remote port range."; "AS number.";
} }
leaf remote-port-high { leaf address {
type inet:port-number; type simple-address;
description description
"High end of remote port range."; "AFI address.";
}
} }
} container application-data {
container geo-coordinates { when "../address-type = 'lisp-at:application-data-lcaf'" {
when "../address-type = 'lisp-at:geo-coordinates-lcaf'" { description
"When LCAF type is Application Data.";
}
description description
"When LCAF type is Geo-coordinates."; "Application Data LCAF type.";
} reference
description "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10
"Geo-coordinates LCAF type. Coordinates are specified #section-4.4";
using the WGS 84 (World Geodetic System 1984) reference leaf address {
coordinate system"; type simple-address;
reference
"http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10
#section-4.5";
leaf latitude {
type bits {
bit N {
description description
"Latitude bit."; "AFI address.";
}
} }
description leaf protocol {
"Bit that selects between North and South latitude."; type uint8;
} description
leaf latitude-degrees { "Protocol number.";
type uint8 {
range "0 .. 90";
} }
description leaf ip-tos {
"Degrees of latitude."; type int32;
} description
leaf latitude-minutes { "Type of service field.";
type uint8 {
range "0..59";
} }
description leaf local-port-low {
"Minutes of latitude."; type inet:port-number;
} description
leaf latitude-seconds { "Low end of local port range.";
type uint8 {
range "0..59";
} }
description leaf local-port-high {
"Seconds of latitude."; type inet:port-number;
}
leaf longitude {
type bits {
bit E {
description description
"Longitude bit."; "High end of local port range.";
}
} }
description leaf remote-port-low {
"Bit that selects between East and West longitude."; type inet:port-number;
} description
leaf longitude-degrees { "Low end of remote port range.";
type uint16 {
range "0 .. 180";
} }
description leaf remote-port-high {
"Degrees of longitude."; type inet:port-number;
} description
leaf longitude-minutes { "High end of remote port range.";
type uint8 {
range "0..59";
} }
description
"Minutes of longitude.";
} }
leaf longitude-seconds { container geo-coordinates {
type uint8 { when "../address-type = 'lisp-at:geo-coordinates-lcaf'" {
range "0..59"; description
"When LCAF type is Geo-coordinates.";
} }
description description
"Seconds of longitude."; "Geo-coordinates LCAF type. Coordinates are specified
} using the WGS 84 (World Geodetic System 1984) reference
leaf altitude { coordinate system";
type int32; reference
description "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10
"Height relative to sea level in meters."; #section-4.5";
} leaf latitude {
leaf address { type bits {
type simple-address; bit N {
description description
"AFI address."; "Latitude bit.";
} }
}
container nat-traversal {
when "../address-type = 'lisp-at:nat-traversal-lcaf'" {
description
"When LCAF type is NAT-Traversal.";
}
description
"NAT-Traversal LCAF type.";
reference
"http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10
#section-4.6";
leaf ms-udp-port {
type uint16;
description
"Map-Server UDP port (set to 4342).";
}
leaf etr-udp-port {
type uint16;
description
"ETR UDP port.";
}
leaf global-etr-rloc {
type simple-address;
description
"Global ETR RLOC address.";
}
leaf ms-rloc {
type simple-address;
description
"Map-Server RLOC address.";
}
leaf private-etr-rloc {
type simple-address;
description
"Private ETR RLOC address.";
}
leaf-list rtr-rlocs {
type simple-address;
description
"List of RTR RLOC addresses.";
}
}
container explicit-locator-path {
when "../address-type = 'lisp-at:explicit-locator-path-lcaf'" {
description
"When LCAF type type is Explicit Locator Path.";
}
description
"Explicit Locator Path LCAF type.";
reference
"http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10
#section-4.9";
list hop {
key "hop-id";
ordered-by user;
description
"List of locator hops forming the explicit path.";
leaf hop-id {
type string {
length "1..64";
pattern '[a-zA-Z0-9\-_.:]*';
} }
description description
"Unique identifier for the hop."; "Bit that selects between North and South latitude.";
} }
leaf address { leaf latitude-degrees {
type simple-address; type uint8 {
range "0 .. 90";
}
description description
"AFI address."; "Degrees of latitude.";
} }
leaf lrs-bits { leaf latitude-minutes {
type bits{ type uint8 {
bit lookup { range "0..59";
description }
"Lookup bit."; description
} "Minutes of latitude.";
bit rloc-probe { }
description leaf latitude-seconds {
"RLOC-probe bit."; type uint8 {
} range "0..59";
bit strict { }
description
"Seconds of latitude.";
}
leaf longitude {
type bits {
bit E {
description description
"Strict bit."; "Longitude bit.";
} }
} }
description description
"Flag bits per hop."; "Bit that selects between East and West longitude.";
}
leaf longitude-degrees {
type uint16 {
range "0 .. 180";
}
description
"Degrees of longitude.";
}
leaf longitude-minutes {
type uint8 {
range "0..59";
}
description
"Minutes of longitude.";
}
leaf longitude-seconds {
type uint8 {
range "0..59";
}
description
"Seconds of longitude.";
}
leaf altitude {
type int32;
description
"Height relative to sea level in meters.";
}
leaf address {
type simple-address;
description
"AFI address.";
} }
} }
} container nat-traversal {
container source-dest-key { when "../address-type = 'lisp-at:nat-traversal-lcaf'" {
when "../address-type = 'lisp-at:source-dest-key-lcaf'" { description
"When LCAF type is NAT-Traversal.";
}
description description
"When LCAF type type is Source/Dest."; "NAT-Traversal LCAF type.";
} reference
description
"Source/Dest LCAF type.";
reference
"http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10
#section-4.11"; #section-4.6";
leaf source { leaf ms-udp-port {
type simple-address; type uint16;
description description
"Source address."; "Map-Server UDP port (set to 4342).";
} }
leaf dest { leaf etr-udp-port {
type simple-address; type uint16;
description description
"Destination address."; "ETR UDP port.";
}
leaf global-etr-rloc {
type simple-address;
description
"Global ETR RLOC address.";
}
leaf ms-rloc {
type simple-address;
description
"Map-Server RLOC address.";
}
leaf private-etr-rloc {
type simple-address;
description
"Private ETR RLOC address.";
}
leaf-list rtr-rlocs {
type simple-address;
description
"List of RTR RLOC addresses.";
}
} }
} container explicit-locator-path {
container key-value-address { when "../address-type = 'lisp-at:explicit-locator-path-lcaf'" {
when "../address-type = 'lisp-at:key-value-address-lcaf'" { description
"When LCAF type type is Explicit Locator Path.";
}
description description
"When LCAF type type is Key/Value Address."; "Explicit Locator Path LCAF type.";
reference
"http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10
#section-4.9";
list hop {
key "hop-id";
ordered-by user;
description
"List of locator hops forming the explicit path.";
leaf hop-id {
type string {
length "1..64";
pattern '[a-zA-Z0-9\-_.:]*';
}
description
"Unique identifier for the hop.";
}
leaf address {
type simple-address;
description
"AFI address.";
}
leaf lrs-bits {
type bits{
bit lookup {
description
"Lookup bit.";
}
bit rloc-probe {
description
"RLOC-probe bit.";
}
bit strict {
description
"Strict bit.";
}
}
description
"Flag bits per hop.";
}
}
} }
description container source-dest-key {
"Key/Value Address LCAF type."; when "../address-type = 'lisp-at:source-dest-key-lcaf'" {
reference description
"http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 "When LCAF type type is Source/Dest.";
#section-4.11"; }
leaf key {
type simple-address;
description description
"Address as Key."; "Source/Dest LCAF type.";
reference
"http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10
#section-4.11";
leaf source {
type simple-address;
description
"Source address.";
}
leaf dest {
type simple-address;
description
"Destination address.";
}
} }
leaf value { container key-value-address {
type simple-address; when "../address-type = 'lisp-at:key-value-address-lcaf'" {
description
"When LCAF type type is Key/Value Address.";
}
description description
"Address as Value."; "Key/Value Address LCAF type.";
reference
"http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10
#section-4.11";
leaf key {
type simple-address;
description
"Address as Key.";
}
leaf value {
type simple-address;
description
"Address as Value.";
}
} }
} container service-path {
container service-path { when "../address-type = 'lisp-at:service-path-lcaf'" {
when "../address-type = 'lisp-at:service-path-lcaf'" {
description
"When LCAF type service path identifier.";
}
description
"Service Path LCAF type.";
reference
"http://tools.ietf.org/html/draft-ermagan-lisp-nsh-00";
leaf service-path-id {
type service-path-id-type;
description description
"Service path identifier for the path for NSH header"; "When LCAF type service path identifier.";
} }
leaf service-index {
type uint8;
description description
"Service path index for NSH header"; "Service Path LCAF type.";
reference
"http://tools.ietf.org/html/draft-ermagan-lisp-nsh-00";
leaf service-path-id {
type service-path-id-type;
description
"Service path identifier for the path for NSH header";
}
leaf service-index {
type uint8;
description
"Service path index for NSH header";
}
} }
} }
} }
} }
} <CODE ENDS>
<CODE ENDS>
7.2. Data Model examples 7.2. Data Model examples
This section presents some simple and illustrative examples on how to This section presents some simple and illustrative examples on how to
configure LISP. configure LISP.
7.2.1. LISP protocol instance 7.2.1. LISP protocol instance
The following is an example configuration for a LISP protocol The following is an example configuration for a LISP protocol
instance with the name "LISP1". There are also 2 VNIs configured. instance with the name "LISP1". There are also 2 VNIs configured.
skipping to change at page 81, line 9 skipping to change at page 82, line 23
[RFC8529] Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X. [RFC8529] Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X.
Liu, "YANG Data Model for Network Instances", RFC 8529, Liu, "YANG Data Model for Network Instances", RFC 8529,
DOI 10.17487/RFC8529, March 2019, DOI 10.17487/RFC8529, March 2019,
<https://www.rfc-editor.org/info/rfc8529>. <https://www.rfc-editor.org/info/rfc8529>.
Authors' Addresses Authors' Addresses
Vina Ermagan Vina Ermagan
Google Google
USA United States of America
Email: ermagan@gmail.com Email: ermagan@gmail.com
Alberto Rodriguez-Natal Alberto Rodriguez-Natal
Cisco Systems Cisco Systems
San Jose, CA San Jose, CA
USA United States of America
Email: natal@cisco.com Email: natal@cisco.com
Florin Coras Florin Coras
Cisco Systems Cisco Systems
San Jose, CA San Jose, CA
USA United States of America
Email: fcoras@cisco.com Email: fcoras@cisco.com
Carl Moberg Carl Moberg
Avassa Avassa
Email: calle@avassa.io Email: calle@avassa.io
Reshad Rahman Reshad Rahman
Canada Canada
skipping to change at page 81, line 34 skipping to change at page 83, line 4
Email: fcoras@cisco.com Email: fcoras@cisco.com
Carl Moberg Carl Moberg
Avassa Avassa
Email: calle@avassa.io Email: calle@avassa.io
Reshad Rahman Reshad Rahman
Canada Canada
Email: reshad@yahoo.com Email: reshad@yahoo.com
Albert Cabellos-Aparicio Albert Cabellos-Aparicio
Technical University of Catalonia Technical University of Catalonia
Barcelona Barcelona
Spain Spain
Email: acabello@ac.upc.edu Email: acabello@ac.upc.edu
Fabio Maino Fabio Maino
Cisco Systems Cisco Systems
San Jose, CA San Jose, CA
USA United States of America
Email: fmaino@cisco.com Email: fmaino@cisco.com
 End of changes. 108 change blocks. 
643 lines changed or deleted 652 lines changed or added

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