| < 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.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||