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