idnits 2.17.1 draft-ietf-lisp-yang-16.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** There are 5 instances of too long lines in the document, the longest one being 2 characters in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 160 has weird spacing: '...et-name str...' == Line 279 has weird spacing: '...le-type lis...' == Line 285 has weird spacing: '...ance-id lis...' == Line 862 has weird spacing: '...ance-id lea...' == Line 1293 has weird spacing: '...ance-id lea...' == (1 more instance...) == The document doesn't use any RFC 2119 keywords, yet has text resembling RFC 2119 boilerplate text. -- The document date (24 August 2021) is 948 days in the past. Is this intentional? Checking references for intended status: Experimental ---------------------------------------------------------------------------- == Unused Reference: 'RFC6832' is defined on line 3730, but no explicit reference was found in the text == Unused Reference: 'RFC6836' is defined on line 3741, but no explicit reference was found in the text == Unused Reference: 'RFC8060' is defined on line 3763, but no explicit reference was found in the text == Unused Reference: 'RFC8111' is defined on line 3767, but no explicit reference was found in the text == Unused Reference: 'RFC8349' is defined on line 3789, but no explicit reference was found in the text ** Obsolete normative reference: RFC 6830 (Obsoleted by RFC 9300, RFC 9301) ** Obsolete normative reference: RFC 6833 (Obsoleted by RFC 9301) ** Obsolete normative reference: RFC 8022 (Obsoleted by RFC 8349) Summary: 4 errors (**), 0 flaws (~~), 13 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 LISP Working Group V. Ermagan 3 Internet-Draft Google 4 Intended status: Experimental A. Rodriguez-Natal 5 Expires: 25 February 2022 F. Coras 6 Cisco Systems 7 C. Moberg 8 Avassa 9 R. Rahman 11 A. Cabellos-Aparicio 12 Technical University of Catalonia 13 F. Maino 14 Cisco Systems 15 24 August 2021 17 LISP YANG Model 18 draft-ietf-lisp-yang-16 20 Abstract 22 This document describes a YANG data model to use with the Locator/ID 23 Separation Protocol (LISP). 25 The YANG modules in this document conform to the Network Management 26 Datastore Architecture (NMDA). 28 Status of This Memo 30 This Internet-Draft is submitted in full conformance with the 31 provisions of BCP 78 and BCP 79. 33 Internet-Drafts are working documents of the Internet Engineering 34 Task Force (IETF). Note that other groups may also distribute 35 working documents as Internet-Drafts. The list of current Internet- 36 Drafts is at https://datatracker.ietf.org/drafts/current/. 38 Internet-Drafts are draft documents valid for a maximum of six months 39 and may be updated, replaced, or obsoleted by other documents at any 40 time. It is inappropriate to use Internet-Drafts as reference 41 material or to cite them other than as "work in progress." 43 This Internet-Draft will expire on 25 February 2022. 45 Copyright Notice 47 Copyright (c) 2021 IETF Trust and the persons identified as the 48 document authors. All rights reserved. 50 This document is subject to BCP 78 and the IETF Trust's Legal 51 Provisions Relating to IETF Documents (https://trustee.ietf.org/ 52 license-info) in effect on the date of publication of this document. 53 Please review these documents carefully, as they describe your rights 54 and restrictions with respect to this document. Code Components 55 extracted from this document must include Simplified BSD License text 56 as described in Section 4.e of the Trust Legal Provisions and are 57 provided without warranty as described in the Simplified BSD License. 59 Table of Contents 61 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 62 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 63 1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 64 1.3. Prefixes . . . . . . . . . . . . . . . . . . . . . . . . 3 65 2. LISP Module . . . . . . . . . . . . . . . . . . . . . . . . . 4 66 2.1. Module Structure . . . . . . . . . . . . . . . . . . . . 4 67 2.2. Module Definition . . . . . . . . . . . . . . . . . . . . 7 68 3. LISP-ITR Module . . . . . . . . . . . . . . . . . . . . . . . 19 69 3.1. Module Structure . . . . . . . . . . . . . . . . . . . . 19 70 3.2. Module Definition . . . . . . . . . . . . . . . . . . . . 24 71 4. LISP-ETR Module . . . . . . . . . . . . . . . . . . . . . . . 28 72 4.1. Module Structure . . . . . . . . . . . . . . . . . . . . 28 73 4.2. Module Definition . . . . . . . . . . . . . . . . . . . . 30 74 5. LISP-Map-Server Module . . . . . . . . . . . . . . . . . . . 34 75 5.1. Module Structure . . . . . . . . . . . . . . . . . . . . 34 76 5.2. Module Definition . . . . . . . . . . . . . . . . . . . . 43 77 6. LISP-Map-Resolver Module . . . . . . . . . . . . . . . . . . 49 78 6.1. Module Structure . . . . . . . . . . . . . . . . . . . . 50 79 6.2. Module Definition . . . . . . . . . . . . . . . . . . . . 50 80 7. LISP-Address-Types Module . . . . . . . . . . . . . . . . . . 52 81 7.1. Module Definition . . . . . . . . . . . . . . . . . . . . 52 82 7.2. Data Model examples . . . . . . . . . . . . . . . . . . . 67 83 7.2.1. LISP protocol instance . . . . . . . . . . . . . . . 67 84 7.2.2. LISP ITR . . . . . . . . . . . . . . . . . . . . . . 69 85 7.2.3. LISP ETR . . . . . . . . . . . . . . . . . . . . . . 69 86 7.2.4. LISP Map-Server . . . . . . . . . . . . . . . . . . . 72 87 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 73 88 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 73 89 10. Security Considerations . . . . . . . . . . . . . . . . . . . 77 90 11. Normative References . . . . . . . . . . . . . . . . . . . . 80 91 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 82 93 1. Introduction 95 The Locator/ID Separation Protocol (LISP) defines several network 96 elements subject to be configured. This document presents the YANG 97 data models required for basic configuration of all major LISP 98 [RFC6830] elements. The models also capture some essential 99 operational data elements as well. 101 1.1. Requirements Language 103 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 104 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 105 document are to be interpreted as described in BCP 14 [RFC2119] 106 [RFC8174] when, and only when, they appear in all capitals, as shown 107 here. 109 1.2. Tree Diagrams 111 This document uses the graphical representation of data models 112 defined in [RFC8340]. 114 1.3. Prefixes 116 The table below provides a summary of the prefixes used by this 117 document. 119 +==========+=========================+===========+ 120 | Prefix | YANG module | Reference | 121 +==========+=========================+===========+ 122 | lisp | ietf-lisp | Section 2 | 123 +----------+-------------------------+-----------+ 124 | if | ietf-interfaces | [RFC8343] | 125 +----------+-------------------------+-----------+ 126 | lisp-at | ietf-lisp-address-types | Section 7 | 127 +----------+-------------------------+-----------+ 128 | yang | ietf-yang-types | [RFC6991] | 129 +----------+-------------------------+-----------+ 130 | rt | ietf-routing | [RFC8022] | 131 +----------+-------------------------+-----------+ 132 | ni | ietf-network-instance | [RFC8529] | 133 +----------+-------------------------+-----------+ 134 | lisp-itr | ietf-lisp-itr | Section 3 | 135 +----------+-------------------------+-----------+ 136 | inet | ietf-inet-types | [RFC6991] | 137 +----------+-------------------------+-----------+ 138 | lisp-etr | ietf-lisp-etr | Section 4 | 139 +----------+-------------------------+-----------+ 140 | lisp-ms | ietf-lisp-mapserver | Section 5 | 141 +----------+-------------------------+-----------+ 142 | lisp-mr | ietf-lisp-mapresolver | Section 6 | 143 +----------+-------------------------+-----------+ 145 Table 1: Prefixes and corresponding YANG modules 147 2. LISP Module 149 This is the base LISP module. It is further augmented by the LISP 150 device role specific modules defined elsewhere in this document. 152 2.1. Module Structure 154 module: ietf-lisp 155 augment /rt:routing/rt:control-plane-protocols 156 /rt:control-plane-protocol: 157 +--rw lisp 158 +--rw locator-sets 159 | +--rw locator-set* [locator-set-name] 160 | +--rw locator-set-name string 161 | +--rw (locator-type)? 162 | +--:(local-interface) 163 | | +--rw interface* [interface-ref] 164 | | +--rw interface-ref if:interface-ref 165 | | +--rw priority? uint8 166 | | +--rw weight? uint8 167 | | +--rw multicast-priority? uint8 168 | | +--rw multicast-weight? uint8 169 | +--:(general-locator) 170 | +--rw locator* [locator-id] 171 | +--rw locator-id string 172 | +--rw locator-address 173 | | +--rw address-type 174 | | | lisp-address-family-ref 175 | | +--rw (address)? 176 | | +--:(no-address) 177 | | | +--rw no-address? empty 178 | | +--:(ipv4) 179 | | | +--rw ipv4? 180 | | | inet:ipv4-address 181 | | +--:(ipv4-prefix) 182 | | | +--rw ipv4-prefix? 183 | | | inet:ipv4-prefix 184 | | +--:(ipv6) 185 | | | +--rw ipv6? 186 | | | inet:ipv6-address 187 | | +--:(ipv6-prefix) 188 | | | +--rw ipv6-prefix? 189 | | | inet:ipv6-prefix 190 | | +--:(mac) 191 | | | +--rw mac? 192 | | | yang:mac-address 193 | | +--:(distinguished-name) 194 | | | +--rw distinguished-name? 195 | | | distinguished-name-type 196 | | +--:(as-number) 197 | | | +--rw as-number? 198 | | | inet:as-number 199 | | +--:(null-address) 200 | | | +--rw null-address 201 | | | +--rw address? empty 202 | | +--:(afi-list) 203 | | | +--rw afi-list 204 | | | +--rw address-list* 205 | | | simple-address 206 | | +--:(instance-id) 207 | | | +--rw instance-id 208 | | | +--rw instance-id? 209 | | | | instance-id-type 210 | | | +--rw mask-length? uint8 211 | | | +--rw address? simple-address 212 | | +--:(as-number-lcaf) 213 | | | +--rw as-number-lcaf 214 | | | +--rw as? inet:as-number 215 | | | +--rw address? simple-address 216 | | +--:(application-data) 217 | | | +--rw application-data 218 | | | +--rw address? 219 | | | | simple-address 220 | | | +--rw protocol? uint8 221 | | | +--rw ip-tos? int32 222 | | | +--rw local-port-low? 223 | | | | inet:port-number 224 | | | +--rw local-port-high? 225 | | | | inet:port-number 226 | | | +--rw remote-port-low? 227 | | | | inet:port-number 228 | | | +--rw remote-port-high? 229 | | | inet:port-number 230 | | +--:(geo-coordinates) 231 | | | +--rw geo-coordinates 232 | | | +--rw latitude? bits 233 | | | +--rw latitude-degrees? uint8 234 | | | +--rw latitude-minutes? uint8 235 | | | +--rw latitude-seconds? uint8 236 | | | +--rw longitude? bits 237 | | | +--rw longitude-degrees? uint16 238 | | | +--rw longitude-minutes? uint8 239 | | | +--rw longitude-seconds? uint8 240 | | | +--rw altitude? int32 241 | | | +--rw address? 242 | | | simple-address 243 | | +--:(nat-traversal) 244 | | | +--rw nat-traversal 245 | | | +--rw ms-udp-port? uint16 246 | | | +--rw etr-udp-port? uint16 247 | | | +--rw global-etr-rloc? 248 | | | | simple-address 249 | | | +--rw ms-rloc? 250 | | | | simple-address 251 | | | +--rw private-etr-rloc? 252 | | | | simple-address 253 | | | +--rw rtr-rlocs* 254 | | | simple-address 255 | | +--:(explicit-locator-path) 256 | | | +--rw explicit-locator-path 257 | | | +--rw hop* [hop-id] 258 | | | +--rw hop-id string 259 | | | +--rw address? simple-address 260 | | | +--rw lrs-bits? bits 261 | | +--:(source-dest-key) 262 | | | +--rw source-dest-key 263 | | | +--rw source? simple-address 264 | | | +--rw dest? simple-address 265 | | +--:(key-value-address) 266 | | | +--rw key-value-address 267 | | | +--rw key? simple-address 268 | | | +--rw value? simple-address 269 | | +--:(service-path) 270 | | +--rw service-path 271 | | +--rw service-path-id? 272 | | | service-path-id-type 273 | | +--rw service-index? uint8 274 | +--rw priority? uint8 275 | +--rw weight? uint8 276 | +--rw multicast-priority? uint8 277 | +--rw multicast-weight? uint8 278 +--rw lisp-role* [lisp-role-type] 279 | +--rw lisp-role-type lisp-role-ref 280 +--rw lisp-router-id 281 | +--rw site-id? uint64 282 | +--rw xtr-id? lisp:xtr-id-type 283 +--rw vpns 284 +--rw vpn* [instance-id] 285 +--rw instance-id lisp-at:instance-id-type 286 +--rw iid-name 287 -> /ni:network-instances/network-instance/name 289 2.2. Module Definition 291 file "ietf-lisp@2021-02-22.yang" 292 module ietf-lisp { 293 yang-version 1.1; 295 namespace "urn:ietf:params:xml:ns:yang:ietf-lisp"; 297 prefix lisp; 299 import ietf-interfaces { 300 prefix if; 301 reference 302 "RFC 8343: A YANG Data Model for Interface Management"; 303 } 304 // RFC Ed.: replace occurrences of XXXX with actual RFC number 305 // and remove this note 306 import ietf-lisp-address-types { 307 prefix lisp-at; 308 reference "RFC XXXX: LISP YANG model"; 310 } 311 import ietf-yang-types { 312 prefix yang; 313 reference "RFC 6991: Common YANG Data Types"; 314 } 315 import ietf-routing { 316 prefix "rt"; 317 reference 318 "RFC 8349: A YANG Data Model for Routing Management 319 (NMDA version)"; 320 } 321 import ietf-network-instance { 322 prefix "ni"; 323 reference 324 "RFC 8529: YANG Model for Network Instances"; 325 } 327 organization 328 "IETF LISP (Locator/ID Separation Protocol) Working Group"; 329 contact 330 "WG Web: 331 WG List: 333 Editor: Vina Ermagan 334 336 Editor: Alberto Rodriguez-Natal 337 339 Editor: Reshad Rahman 340 "; 341 description 342 "This YANG module defines the generic parameters for LISP. 343 The module can be extended by vendors to define vendor-specific 344 LISP parameters and policies. 346 Copyright (c) 2018 IETF Trust and the persons identified as 347 authors of the code. All rights reserved. 349 Redistribution and use in source and binary forms, with or 350 without modification, is permitted pursuant to, and subject 351 to the license terms contained in, the Simplified BSD License 352 set forth in Section 4.c of the IETF Trust's Legal Provisions 353 Relating to IETF Documents 354 (http://trustee.ietf.org/license-info). 356 This version of this YANG module is part of RFC XXXX; see 357 the RFC itself for full legal notices. 359 "; 361 reference "RFC XXXX"; 363 revision 2021-02-22 { 364 description 365 "Initial revision."; 366 reference 367 "https://tools.ietf.org/html/rfc6830"; 368 } 370 /* 371 * Identity definitions 372 */ 373 identity lisp { 374 base "rt:control-plane-protocol"; 375 description "LISP protocol."; 376 reference 377 "RFC 6830: The Locator/ID Separation Protocol (LISP)."; 378 } 380 identity lisp-role { 381 description 382 "LISP router role."; 383 } 384 identity itr { 385 base lisp-role; 386 description 387 "LISP ITR."; 388 } 389 identity pitr { 390 base lisp-role; 391 description 392 "LISP PITR."; 393 } 394 identity etr { 395 base lisp-role; 396 description 397 "LISP ETR."; 398 } 399 identity petr { 400 base lisp-role; 401 description 402 "LISP PETR."; 403 } 405 identity mapping-system { 406 description 407 "Mapping System interface"; 408 } 409 identity single-node-mapping-system { 410 base mapping-system; 411 description 412 "logically singular Map Server"; 413 } 415 identity map-reply-act { 416 description 417 "Defines the lisp map-cache ACT type"; 418 reference 419 "https://www.iana.org/assignments/lisp-parameters" 420 + "/lisp-parameters.xhtml#lisp-act-value"; 421 } 422 identity no-action { 423 base map-reply-act; 424 description 425 "Mapping is kept alive and no encapsulation 426 occurs."; 427 } 428 identity natively-forward { 429 base map-reply-act; 430 description 431 "Matching packets are not encapsulated or 432 dropped but natively forwarded."; 433 } 434 identity send-map-request { 435 base map-reply-act; 436 description 437 "Matching packets invoke Map-Requests."; 438 } 439 identity drop-no-reason { 440 base map-reply-act; 441 description 442 "Matching packets are dropped."; 443 } 444 identity drop-policy-denied { 445 base map-reply-act; 446 description 447 "Matching packets are dropped (due to policy)."; 448 } 449 identity drop-auth-failure { 450 base map-reply-act; 451 description 452 "Matching packets are dropped (due to authentication 453 failure)."; 454 } 455 identity auth-algorithm { 456 description 457 "Base identity for the authentication mechanisms supported by 458 LISP."; 459 reference 460 "https://www.iana.org/assignments/lisp-parameters" 461 + "/lisp-parameters.xhtml#lisp-key-id-numbers"; 462 } 463 identity no-auth-algorithm { 464 base auth-algorithm; 465 description 466 "No authentication."; 467 } 468 identity hmac-sha-1-96-none { 469 base auth-algorithm; 470 description 471 "MAC = HMAC-SHA-1-96 (RFC2404), KDF = none"; 472 } 473 identity hmac-sha-256-128-none { 474 base auth-algorithm; 475 description 476 "MAC = HMAC-SHA-256-128 (RFC4868), KDF = none"; 477 } 478 identity hmac-sha-256-128-HKDF-SHA2562 { 479 base auth-algorithm; 480 description 481 "MAC = HMAC-SHA-256-128, KDF = HKDF-SHA2562 (RFC4868)"; 482 } 484 typedef mapping-system-ref { 485 type identityref { 486 base mapping-system; 487 } 488 description 489 "Mapping System reference"; 490 } 492 typedef lisp-role-ref { 493 type identityref { 494 base lisp-role; 495 } 496 description 497 "LISP role reference"; 498 } 499 typedef map-reply-action { 500 type identityref { 501 base map-reply-act; 502 } 503 description 504 "Map-Reply action reference"; 505 } 506 typedef eid-id { 507 type string { 508 pattern '[a-zA-Z0-9\-_.:]*'; 509 } 510 description 511 "Type encoding of lisp-addresses to be generally used in EID 512 keyed lists."; 513 } 514 typedef auth-algorithm-type { 515 type identityref { 516 base auth-algorithm; 517 } 518 description 519 "Authentication algorithm reference"; 520 } 521 typedef xtr-id-type { 522 type binary { 523 length "16"; 524 } 525 description 526 "128-bit xTR identifier."; 527 } 529 grouping locator-properties { 530 description 531 "Properties of a RLOC"; 532 leaf priority { 533 type uint8; 534 description 535 "Locator priority."; 536 } 537 leaf weight { 538 type uint8; 539 description 540 "Locator weight."; 541 } 542 leaf multicast-priority { 543 type uint8; 544 description 545 "Locator's multicast priority"; 546 } 547 leaf multicast-weight { 548 type uint8; 549 description 550 "Locator's multicast weight"; 552 } 553 } 555 grouping locators-grouping { 556 description 557 "Grouping that defines a list of LISP locators."; 558 list locator { 559 key "locator-id"; 560 description 561 "List of routing locators"; 562 leaf locator-id { 563 type string { 564 length "1..64"; 565 pattern '[a-zA-Z0-9\-_.:]*'; 566 } 567 description 568 "Locator id"; 569 } 570 container locator-address { 571 uses lisp-at:lisp-address; 572 description 573 "The locator address provided in LISP canonincal 574 address format."; 575 } 576 uses locator-properties; 577 } 579 } 581 grouping local-locators-grouping { 582 description 583 "Grouping that defines a list of LISP locators."; 584 list interface { 585 key "interface-ref"; 586 description 587 "The address type of the locator"; 588 leaf interface-ref { 589 type if:interface-ref; 590 description 591 "The name of the interface supporting the locator."; 592 } 593 uses locator-properties; 594 } 595 } 597 grouping mapping { 598 description 599 "Grouping that defines a LISP mapping."; 601 container eid { 602 uses lisp-at:lisp-address; 603 description 604 "End-host Identifier (EID) to be mapped to a list of 605 locators"; 606 } 607 leaf time-to-live { 608 type uint32; 609 units minutes; 610 description 611 "Mapping validity period in minutes (as per RF6830)."; 612 } 613 leaf creation-time { 614 type yang:date-and-time; 615 config false; 616 description 617 "Time when the mapping was created."; 618 } 619 leaf authoritative { 620 type bits { 621 bit A { 622 description 623 "Authoritative bit."; 624 } 625 } 626 description 627 "Bit that indicates if mapping comes from an 628 authoritative source."; 629 } 630 leaf static { 631 type boolean; 632 default "false"; 633 description 634 "This leaf should be true if the mapping is static."; 635 } 636 choice locator-list { 637 description 638 "list of locartors are either negative, or positive."; 639 case negative-mapping { 640 leaf map-reply-action { 641 type map-reply-action; 642 description 643 "Forwarding action for a negative mapping."; 644 } 645 } 646 case positive-mapping { 647 container rlocs { 648 uses locators-grouping; 649 description 650 "List of locators for a positive mapping."; 651 } 652 } 653 } 654 } 656 grouping mappings { 657 description 658 "Grouping that defines a list of LISP mappings."; 659 list vpn { 660 key "instance-id"; 661 description 662 "VPN to which the mappings belong."; 663 leaf instance-id { 664 type leafref { 665 path "/rt:routing/rt:control-plane-protocols" 666 + "/rt:control-plane-protocol/lisp:lisp" 667 + "/lisp:vpns/lisp:vpn" 668 + "/lisp:instance-id"; 669 } 670 description 671 "VPN identifier."; 672 } 673 container mappings { 674 description 675 "Mappings within the VPN."; 676 list mapping { 677 key "eid-id"; 678 description 679 "List of EID to RLOCs mappings."; 680 leaf eid-id { 681 type eid-id; 682 description 683 "Id that uniquely identifies a mapping."; 684 } 685 uses mapping; 686 } 687 } 688 } 689 } 691 grouping auth-key { 692 description "Grouping that defines authentication keys."; 693 container authentication-keys { 694 description "Multiple authentication keys can be defined."; 695 list authentication-key { 696 key "auth-key-id"; 697 description 698 "Authentication key parameters."; 699 leaf auth-key-id { 700 type string { 701 pattern '[a-zA-Z0-9\-_.:]*'; 702 } 703 description 704 "Identifier of the authentication key."; 705 } 706 leaf-list auth-algorithm-id { 707 type lisp:auth-algorithm-type; 708 description 709 "Authentication algorithm used with the key."; 710 } 711 leaf auth-key-value { 712 type string; 713 description 714 "Clear text authentication key."; 715 } 716 } 717 } 718 } 720 augment "/rt:routing/rt:control-plane-protocols" 721 + "/rt:control-plane-protocol" { 722 when "derived-from-or-self(rt:type, 'lisp:lisp')" { 723 description 724 "This augmentation is only valid for a control-plane protocol 725 instance of LISP."; 726 } 727 description "LISP protocol ietf-routing module 728 control-plane-protocol augmentation."; 730 container lisp { 731 description 732 "Parameters for the LISP subsystem."; 734 container locator-sets { 735 description 736 "Container that defines a named locator set which can be 737 referenced elsewhere."; 738 list locator-set { 739 key "locator-set-name"; 740 description 741 "Multiple locator sets can be defined."; 742 leaf locator-set-name { 743 type string { 744 length "1..64"; 745 pattern '[a-zA-Z0-9\-_.:]*'; 746 } 747 description 748 "Locator set name"; 749 } 750 choice locator-type { 751 description 752 "Locator sets can be based on local interfaces, or 753 general locators."; 754 case local-interface { 755 uses local-locators-grouping; 756 description 757 "List of locators in this set based on local 758 interfaces."; 759 } 760 case general-locator { 761 uses locators-grouping; 762 description 763 "List of locators in this set based on 764 lisp-address."; 765 } 766 } 767 } 768 } 770 list lisp-role { 771 key lisp-role-type; 772 description 773 "List of lisp device roles such as MS, MR, ITR, 774 PITR, ETR or PETR."; 775 leaf lisp-role-type { 776 type lisp-role-ref; 777 description 778 "The type of LISP device - identity derived from the 779 'lisp-device' base identity."; 780 } 781 } 783 container lisp-router-id { 784 when "../lisp-role/lisp-role-type = 'lisp:itr' or 785 ../lisp-role/lisp-role-type = 'lisp:pitr' or 786 ../lisp-role/lisp-role-type = 'lisp:etr' or 787 ../lisp-role/lisp-role-type = 'lisp:petr'" { 788 description "Only when ITR, PITR, ETR or PETR."; 789 } 790 description 791 "Site-ID and xTR-ID of the device."; 792 leaf site-id { 793 type uint64; 794 description "Site ID"; 795 } 796 leaf xtr-id { 797 type lisp:xtr-id-type; 798 description "xTR ID"; 799 } 800 } 802 container vpns { 803 when "../lisp-role/lisp-role-type = 'lisp:itr' or 804 ../lisp-role/lisp-role-type = 'lisp:pitr' or 805 ../lisp-role/lisp-role-type = 'lisp:etr' or 806 ../lisp-role/lisp-role-type = 'lisp:petr'" { 807 description "Only when ITR, PITR, ETR or PETR."; 808 } 809 description "VPNs"; 810 list vpn { 811 key instance-id; 812 unique "iid-name"; 813 description "List of VPNs"; 815 leaf instance-id { 816 type lisp-at:instance-id-type; 817 description 818 "VPN identifier. The value 0 for instance-id must be 819 used for the default VRF."; 820 } 821 leaf iid-name { 822 type leafref { 823 path "/ni:network-instances/ni:network-instance" 824 + "/ni:name"; 825 } 826 mandatory true; 827 description 828 "Name of VPN (e.g. VRF) to which an instance-id is 829 bound. Each instance-id is bound to a different VPN"; 830 } 831 } 832 } 833 } 834 } 835 } 836 838 3. LISP-ITR Module 840 This module captures the configuration data model of a LISP ITR. The 841 model also captures some operational data elements. 843 3.1. Module Structure 845 module: ietf-lisp-itr 846 augment /rt:routing/rt:control-plane-protocols 847 /rt:control-plane-protocol/lisp:lisp: 848 +--rw itr! 849 +--rw rloc-probing! 850 | +--rw interval? uint16 851 | +--rw retries? uint8 852 | +--rw retries-interval? uint16 853 +--rw itr-rlocs? leafref 854 +--rw map-resolvers 855 | +--rw map-resolver* inet:ip-address 856 +--rw proxy-etrs 857 | +--rw proxy-etr-address* inet:ip-address 858 +--rw map-cache 859 +--ro size? uint32 860 +--ro limit? uint32 861 +--rw vpn* [instance-id] 862 +--rw instance-id leafref 863 +--rw mappings 864 +--rw mapping* [eid-id] 865 +--rw eid-id eid-id 866 +--rw eid 867 | +--rw address-type 868 | | lisp-address-family-ref 869 | +--rw (address)? 870 | +--:(no-address) 871 | | +--rw no-address? empty 872 | +--:(ipv4) 873 | | +--rw ipv4? 874 | | inet:ipv4-address 875 | +--:(ipv4-prefix) 876 | | +--rw ipv4-prefix? 877 | | inet:ipv4-prefix 878 | +--:(ipv6) 879 | | +--rw ipv6? 880 | | inet:ipv6-address 881 | +--:(ipv6-prefix) 882 | | +--rw ipv6-prefix? 883 | | inet:ipv6-prefix 884 | +--:(mac) 885 | | +--rw mac? 886 | | yang:mac-address 887 | +--:(distinguished-name) 888 | | +--rw distinguished-name? 889 | | distinguished-name-type 890 | +--:(as-number) 891 | | +--rw as-number? 892 | | inet:as-number 893 | +--:(null-address) 894 | | +--rw null-address 895 | | +--rw address? empty 896 | +--:(afi-list) 897 | | +--rw afi-list 898 | | +--rw address-list* simple-address 899 | +--:(instance-id) 900 | | +--rw instance-id 901 | | +--rw instance-id? instance-id-type 902 | | +--rw mask-length? uint8 903 | | +--rw address? simple-address 904 | +--:(as-number-lcaf) 905 | | +--rw as-number-lcaf 906 | | +--rw as? inet:as-number 907 | | +--rw address? simple-address 908 | +--:(application-data) 909 | | +--rw application-data 910 | | +--rw address? 911 | | | simple-address 912 | | +--rw protocol? uint8 913 | | +--rw ip-tos? int32 914 | | +--rw local-port-low? 915 | | | inet:port-number 916 | | +--rw local-port-high? 917 | | | inet:port-number 918 | | +--rw remote-port-low? 919 | | | inet:port-number 920 | | +--rw remote-port-high? 921 | | inet:port-number 922 | +--:(geo-coordinates) 923 | | +--rw geo-coordinates 924 | | +--rw latitude? bits 925 | | +--rw latitude-degrees? uint8 926 | | +--rw latitude-minutes? uint8 927 | | +--rw latitude-seconds? uint8 928 | | +--rw longitude? bits 929 | | +--rw longitude-degrees? uint16 930 | | +--rw longitude-minutes? uint8 931 | | +--rw longitude-seconds? uint8 932 | | +--rw altitude? int32 933 | | +--rw address? 934 | | simple-address 935 | +--:(nat-traversal) 936 | | +--rw nat-traversal 937 | | +--rw ms-udp-port? uint16 938 | | +--rw etr-udp-port? uint16 939 | | +--rw global-etr-rloc? 940 | | | simple-address 941 | | +--rw ms-rloc? 942 | | | simple-address 943 | | +--rw private-etr-rloc? 944 | | | simple-address 945 | | +--rw rtr-rlocs* 946 | | simple-address 947 | +--:(explicit-locator-path) 948 | | +--rw explicit-locator-path 949 | | +--rw hop* [hop-id] 950 | | +--rw hop-id string 951 | | +--rw address? simple-address 952 | | +--rw lrs-bits? bits 953 | +--:(source-dest-key) 954 | | +--rw source-dest-key 955 | | +--rw source? simple-address 956 | | +--rw dest? simple-address 957 | +--:(key-value-address) 958 | | +--rw key-value-address 959 | | +--rw key? simple-address 960 | | +--rw value? simple-address 961 | +--:(service-path) 962 | +--rw service-path 963 | +--rw service-path-id? 964 | | service-path-id-type 965 | +--rw service-index? uint8 966 +--rw time-to-live? uint32 967 +--ro creation-time? yang:date-and-time 968 +--rw authoritative? bits 969 +--rw static? boolean 970 +--rw (locator-list)? 971 +--:(negative-mapping) 972 | +--rw map-reply-action? map-reply-action 973 +--:(positive-mapping) 974 +--rw rlocs 975 +--rw locator* [locator-id] 976 +--rw locator-id string 977 +--rw locator-address 978 | +--rw address-type 979 | | lisp-address-family-ref 980 | +--rw (address)? 981 | +--:(no-address) 982 | | +--rw no-address? 983 | | empty 984 | +--:(ipv4) 985 | | +--rw ipv4? 986 | | inet:ipv4-address 987 | +--:(ipv4-prefix) 988 | | +--rw ipv4-prefix? 989 | | inet:ipv4-prefix 990 | +--:(ipv6) 991 | | +--rw ipv6? 992 | | inet:ipv6-address 993 | +--:(ipv6-prefix) 994 | | +--rw ipv6-prefix? 995 | | inet:ipv6-prefix 996 | +--:(mac) 997 | | +--rw mac? 998 | | yang:mac-address 999 | +--:(distinguished-name) 1000 | | +--rw distinguished-name? 1001 | | distinguished-name-type 1002 | +--:(as-number) 1003 | | +--rw as-number? 1004 | | inet:as-number 1005 | +--:(null-address) 1006 | | +--rw null-address 1007 | | +--rw address? empty 1008 | +--:(afi-list) 1009 | | +--rw afi-list 1010 | | +--rw address-list* 1011 | | simple-address 1012 | +--:(instance-id) 1013 | | +--rw instance-id 1014 | | +--rw instance-id? 1015 | | | instance-id-type 1016 | | +--rw mask-length? uint8 1017 | | +--rw address? 1018 | | simple-address 1019 | +--:(as-number-lcaf) 1020 | | +--rw as-number-lcaf 1021 | | +--rw as? 1022 | | | inet:as-number 1023 | | +--rw address? 1024 | | simple-address 1025 | +--:(application-data) 1026 | | +--rw application-data 1027 | | +--rw address? 1028 | | | simple-address 1029 | | +--rw protocol? 1030 | | | uint8 1031 | | +--rw ip-tos? 1032 | | | int32 1033 | | +--rw local-port-low? 1034 | | | inet:port-number 1035 | | +--rw local-port-high? 1036 | | | inet:port-number 1037 | | +--rw remote-port-low? 1038 | | | inet:port-number 1039 | | +--rw remote-port-high? 1040 | | inet:port-number 1041 | +--:(geo-coordinates) 1042 | | +--rw geo-coordinates 1043 | | +--rw latitude? 1044 | | | bits 1045 | | +--rw latitude-degrees? 1046 | | | uint8 1047 | | +--rw latitude-minutes? 1048 | | | uint8 1049 | | +--rw latitude-seconds? 1050 | | | uint8 1051 | | +--rw longitude? 1052 | | | bits 1053 | | +--rw longitude-degrees? 1054 | | | uint16 1055 | | +--rw longitude-minutes? 1056 | | | uint8 1057 | | +--rw longitude-seconds? 1058 | | | uint8 1059 | | +--rw altitude? 1060 | | | int32 1061 | | +--rw address? 1062 | | simple-address 1063 | +--:(nat-traversal) 1064 | | +--rw nat-traversal 1065 | | +--rw ms-udp-port? 1066 | | | uint16 1067 | | +--rw etr-udp-port? 1068 | | | uint16 1069 | | +--rw global-etr-rloc? 1070 | | | simple-address 1071 | | +--rw ms-rloc? 1072 | | | simple-address 1073 | | +--rw private-etr-rloc? 1074 | | | simple-address 1075 | | +--rw rtr-rlocs* 1076 | | simple-address 1077 | +--:(explicit-locator-path) 1078 | | +--rw explicit-locator-path 1079 | | +--rw hop* [hop-id] 1080 | | +--rw hop-id 1081 | | | string 1082 | | +--rw address? 1083 | | | simple-address 1084 | | +--rw lrs-bits? bits 1085 | +--:(source-dest-key) 1086 | | +--rw source-dest-key 1087 | | +--rw source? 1088 | | | simple-address 1089 | | +--rw dest? 1090 | | simple-address 1091 | +--:(key-value-address) 1092 | | +--rw key-value-address 1093 | | +--rw key? 1094 | | | simple-address 1095 | | +--rw value? 1096 | | simple-address 1097 | +--:(service-path) 1098 | +--rw service-path 1099 | +--rw service-path-id? 1100 | | service-path-id-type 1101 | +--rw service-index? 1102 | uint8 1103 +--rw priority? uint8 1104 +--rw weight? uint8 1105 +--rw multicast-priority? uint8 1106 +--rw multicast-weight? uint8 1108 3.2. Module Definition 1110 file "ietf-lisp-itr@2019-02-23.yang" 1111 module ietf-lisp-itr { 1112 yang-version 1.1; 1114 namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-itr"; 1116 prefix lisp-itr; 1118 // RFC Ed.: replace occurrences of XXXX with actual RFC number 1119 // and remove this note 1120 import ietf-lisp { 1121 prefix lisp; 1122 reference "RFC XXXX: LISP YANG model"; 1123 } 1124 import ietf-inet-types { 1125 prefix inet; 1126 reference "RFC 6991: Common YANG Data Types"; 1127 } 1128 import ietf-routing { 1129 prefix "rt"; 1130 reference 1131 "RFC 8349: A YANG Data Model for Routing Management 1132 (NMDA version)"; 1133 } 1135 organization 1136 "IETF LISP (Locator/ID Separation Protocol) Working Group"; 1137 contact 1138 "WG Web: 1139 WG List: 1141 Editor: Vina Ermagan 1142 1144 Editor: Alberto Rodriguez-Natal 1145 1147 Editor: Reshad Rahman 1148 "; 1149 description 1150 "This YANG module defines the generic parameters for a LISP 1151 ITR. The module can be extended by vendors to define 1152 vendor-specific parameters and policies. 1154 Copyright (c) 2018 IETF Trust and the persons identified as 1155 authors of the code. All rights reserved. 1157 Redistribution and use in source and binary forms, with or 1158 without modification, is permitted pursuant to, and subject 1159 to the license terms contained in, the Simplified BSD License 1160 set forth in Section 4.c of the IETF Trust's Legal Provisions 1161 Relating to IETF Documents 1162 (http://trustee.ietf.org/license-info). 1164 This version of this YANG module is part of RFC XXXX; see 1165 the RFC itself for full legal notices. 1166 "; 1168 reference "RFC XXXX"; 1170 revision 2019-02-23 { 1171 description 1172 "Initial revision."; 1173 reference 1174 "https://tools.ietf.org/html/rfc6830"; 1175 } 1176 augment "/rt:routing/rt:control-plane-protocols" 1177 + "/rt:control-plane-protocol/lisp:lisp" { 1178 when "lisp:lisp-role/lisp:lisp-role-type = 'lisp:itr' or 1179 lisp:lisp-role/lisp:lisp-role-type = 'lisp:pitr'" { 1180 description 1181 "Augment is valid when LISP role type is ITR or PITR."; 1182 } 1183 description 1184 "This augments the LISP devices list with (P)ITR specific 1185 parameters."; 1186 container itr { 1187 presence "LISP (P)ITR operation enabled"; 1188 description 1189 "ITR parameters"; 1190 container rloc-probing { 1191 presence "RLOC probing active"; 1192 description 1193 "RLOC-probing parameters"; 1194 leaf interval { 1195 type uint16; 1196 units "seconds"; 1197 description 1198 "Interval in seconds for resending the probes"; 1199 } 1200 leaf retries { 1201 type uint8; 1202 description 1203 "Number of retries for sending the probes"; 1204 } 1205 leaf retries-interval { 1206 type uint16; 1207 units "seconds"; 1208 description 1209 "Interval in seconds between retries when sending probes. 1210 The action taken if all retries fail to receive is 1211 implementation specific."; 1212 } 1213 } 1214 leaf itr-rlocs { 1215 type leafref { 1216 path "/rt:routing/rt:control-plane-protocols" 1217 + "/rt:control-plane-protocol/lisp:lisp" 1218 + "/lisp:locator-sets/lisp:locator-set" 1219 + "/lisp:locator-set-name"; 1220 } 1221 description 1222 "Reference to a locator set that the (P)ITR includes in 1223 Map-Requests"; 1224 } 1225 container map-resolvers { 1226 description 1227 "Map-Resolvers that the (P)ITR uses."; 1228 leaf-list map-resolver { 1229 type inet:ip-address; 1230 description 1231 "Each Map-Resolver within the list of Map-Resolvers."; 1232 } 1233 } 1234 container proxy-etrs { 1235 when "../../lisp:lisp-role/lisp:lisp-role-type='lisp:itr'" { 1236 description 1237 "Container exists only when LISP role type is ITR"; 1238 } 1239 description 1240 "Proxy ETRs that the ITR uses."; 1241 leaf-list proxy-etr-address{ 1242 type inet:ip-address; 1243 description 1244 "Proxy ETR RLOC address."; 1245 } 1246 } 1247 container map-cache { 1248 leaf size { 1249 type uint32; 1250 config false; 1251 description 1252 "Current number of entries in the EID-to-RLOC map-cache"; 1253 } 1254 leaf limit { 1255 type uint32; 1256 config false; 1257 description 1258 "Maximum permissible number of entries in the EID-to-RLOC 1259 map-cache"; 1260 } 1262 uses lisp:mappings; 1263 description 1264 "EID to RLOCs mappings cache."; 1265 } 1266 } 1267 } 1268 } 1269 1271 4. LISP-ETR Module 1273 This module captures the configuration data model of a LISP ETR. The 1274 model also captures some operational data elements. 1276 4.1. Module Structure 1278 module: ietf-lisp-etr 1279 augment /rt:routing/rt:control-plane-protocols 1280 /rt:control-plane-protocol/lisp:lisp: 1281 +--rw etr! 1282 +--rw map-servers 1283 | +--rw map-server* [ms-address] 1284 | +--rw ms-address inet:ip-address 1285 | +--rw authentication-keys 1286 | +--rw authentication-key* [auth-key-id] 1287 | +--rw auth-key-id string 1288 | +--rw auth-algorithm-id* 1289 | | lisp:auth-algorithm-type 1290 | +--rw auth-key-value? string 1291 +--rw local-eids 1292 +--rw vpn* [instance-id] 1293 +--rw instance-id leafref 1294 +--rw eids 1295 +--rw local-eid* [eid-id] 1296 +--rw eid-id lisp:eid-id 1297 +--rw eid-address 1298 | +--rw address-type 1299 | | lisp-address-family-ref 1300 | +--rw (address)? 1301 | +--:(no-address) 1302 | | +--rw no-address? empty 1303 | +--:(ipv4) 1304 | | +--rw ipv4? 1305 | | inet:ipv4-address 1306 | +--:(ipv4-prefix) 1307 | | +--rw ipv4-prefix? 1308 | | inet:ipv4-prefix 1309 | +--:(ipv6) 1310 | | +--rw ipv6? 1311 | | inet:ipv6-address 1312 | +--:(ipv6-prefix) 1313 | | +--rw ipv6-prefix? 1314 | | inet:ipv6-prefix 1315 | +--:(mac) 1316 | | +--rw mac? 1317 | | yang:mac-address 1318 | +--:(distinguished-name) 1319 | | +--rw distinguished-name? 1320 | | distinguished-name-type 1321 | +--:(as-number) 1322 | | +--rw as-number? 1323 | | inet:as-number 1324 | +--:(null-address) 1325 | | +--rw null-address 1326 | | +--rw address? empty 1327 | +--:(afi-list) 1328 | | +--rw afi-list 1329 | | +--rw address-list* simple-address 1330 | +--:(instance-id) 1331 | | +--rw instance-id 1332 | | +--rw instance-id? instance-id-type 1333 | | +--rw mask-length? uint8 1334 | | +--rw address? simple-address 1335 | +--:(as-number-lcaf) 1336 | | +--rw as-number-lcaf 1337 | | +--rw as? inet:as-number 1338 | | +--rw address? simple-address 1339 | +--:(application-data) 1340 | | +--rw application-data 1341 | | +--rw address? 1342 | | | simple-address 1343 | | +--rw protocol? uint8 1344 | | +--rw ip-tos? int32 1345 | | +--rw local-port-low? 1346 | | | inet:port-number 1347 | | +--rw local-port-high? 1348 | | | inet:port-number 1349 | | +--rw remote-port-low? 1350 | | | inet:port-number 1351 | | +--rw remote-port-high? 1352 | | inet:port-number 1353 | +--:(geo-coordinates) 1354 | | +--rw geo-coordinates 1355 | | +--rw latitude? bits 1356 | | +--rw latitude-degrees? uint8 1357 | | +--rw latitude-minutes? uint8 1358 | | +--rw latitude-seconds? uint8 1359 | | +--rw longitude? bits 1360 | | +--rw longitude-degrees? uint16 1361 | | +--rw longitude-minutes? uint8 1362 | | +--rw longitude-seconds? uint8 1363 | | +--rw altitude? int32 1364 | | +--rw address? 1365 | | simple-address 1366 | +--:(nat-traversal) 1367 | | +--rw nat-traversal 1368 | | +--rw ms-udp-port? uint16 1369 | | +--rw etr-udp-port? uint16 1370 | | +--rw global-etr-rloc? 1371 | | | simple-address 1372 | | +--rw ms-rloc? 1373 | | | simple-address 1374 | | +--rw private-etr-rloc? 1375 | | | simple-address 1376 | | +--rw rtr-rlocs* 1377 | | simple-address 1378 | +--:(explicit-locator-path) 1379 | | +--rw explicit-locator-path 1380 | | +--rw hop* [hop-id] 1381 | | +--rw hop-id string 1382 | | +--rw address? simple-address 1383 | | +--rw lrs-bits? bits 1384 | +--:(source-dest-key) 1385 | | +--rw source-dest-key 1386 | | +--rw source? simple-address 1387 | | +--rw dest? simple-address 1388 | +--:(key-value-address) 1389 | | +--rw key-value-address 1390 | | +--rw key? simple-address 1391 | | +--rw value? simple-address 1392 | +--:(service-path) 1393 | +--rw service-path 1394 | +--rw service-path-id? 1395 | | service-path-id-type 1396 | +--rw service-index? uint8 1397 +--rw rlocs? leafref 1398 +--rw record-ttl? uint32 1399 +--rw want-map-notify? boolean 1400 +--rw proxy-reply? boolean 1401 +--rw registration-interval? uint16 1403 4.2. Module Definition 1405 file "ietf-lisp-etr@2021-02-22.yang" 1406 module ietf-lisp-etr { 1407 yang-version 1.1; 1409 namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-etr"; 1411 prefix lisp-etr; 1413 // RFC Ed.: replace occurrences of XXXX with actual RFC number 1414 // and remove this note 1415 import ietf-lisp { 1416 prefix lisp; 1417 reference "RFC XXXX: LISP YANG model"; 1418 } 1419 import ietf-lisp-address-types { 1420 prefix lisp-at; 1421 reference "RFC XXXX: LISP YANG model"; 1422 } 1423 import ietf-inet-types { 1424 prefix inet; 1425 reference "RFC 6991: Common YANG Data Types"; 1426 } 1427 import ietf-routing { 1428 prefix "rt"; 1429 reference 1430 "RFC 8349: A YANG Data Model for Routing Management 1431 (NMDA version)"; 1432 } 1434 organization 1435 "IETF LISP (Locator/ID Separation Protocol) Working Group"; 1436 contact 1437 "WG Web: 1438 WG List: 1440 Editor: Vina Ermagan 1441 1443 Editor: Alberto Rodriguez-Natal 1444 1446 Editor: Reshad Rahman 1447 "; 1448 description 1449 "This YANG module defines the generic parameters for a LISP 1450 ETR. The module can be extended by vendors to define 1451 vendor-specific parameters and policies. 1453 Copyright (c) 2018 IETF Trust and the persons identified as 1454 authors of the code. All rights reserved. 1456 Redistribution and use in source and binary forms, with or 1457 without modification, is permitted pursuant to, and subject 1458 to the license terms contained in, the Simplified BSD License 1459 set forth in Section 4.c of the IETF Trust's Legal Provisions 1460 Relating to IETF Documents 1461 (http://trustee.ietf.org/license-info). 1462 This version of this YANG module is part of RFC XXXX; see 1463 the RFC itself for full legal notices. 1464 "; 1466 reference "RFC XXXX"; 1468 revision 2021-02-22 { 1469 description 1470 "Initial revision."; 1471 reference 1472 "https://tools.ietf.org/html/rfc6830"; 1473 } 1474 augment "/rt:routing/rt:control-plane-protocols" 1475 + "/rt:control-plane-protocol/lisp:lisp" { 1476 when "lisp:lisp-role/lisp:lisp-role-type = 'lisp:etr' or 1477 lisp:lisp-role/lisp:lisp-role-type = 'lisp:petr'" { 1478 description 1479 "Augment is valid when LISP device type is (P)ETR."; 1480 } 1481 description 1482 "This augments the LISP devices list with (P)ETR specific 1483 parameters."; 1484 container etr { 1485 presence "LISP (P)ETR operation enabled"; 1486 description 1487 "(P)ETR parameters."; 1489 container map-servers { 1490 when "../../lisp:lisp-role/lisp:lisp-role-type='lisp:etr'" { 1491 description 1492 "Container exists only when LISP device type is ETR."; 1493 } 1494 description 1495 "Map-Servers that the ETR uses."; 1496 list map-server { 1497 key "ms-address"; 1498 description 1499 "Each Map-Server within the list of Map-Servers."; 1500 leaf ms-address { 1501 type inet:ip-address; 1502 description 1503 "Map-Server address."; 1504 } 1505 uses lisp:auth-key; 1506 } 1507 } 1509 container local-eids { 1510 when "../../lisp:lisp-role/lisp:lisp-role-type='lisp:etr'" { 1511 description 1512 "Container exists only when LISP device type is ETR."; 1513 } 1514 description 1515 "VPNs served by the ETR."; 1516 list vpn { 1517 key "instance-id"; 1518 description 1519 "VPN for local-EIDs."; 1520 leaf instance-id { 1521 type leafref { 1522 path "/rt:routing/rt:control-plane-protocols" 1523 + "/rt:control-plane-protocol/lisp:lisp" 1524 + "/lisp:vpns/lisp:vpn" 1525 + "/lisp:instance-id"; 1526 } 1527 description 1528 "VPN identifier."; 1529 } 1530 container eids { 1531 description 1532 "EIDs served by the ETR."; 1533 list local-eid { 1534 key "eid-id"; 1535 description 1536 "List of local EIDs."; 1537 leaf eid-id { 1538 type lisp:eid-id; 1539 description 1540 "Unique id of local EID."; 1541 } 1542 container eid-address { 1543 uses lisp-at:lisp-address; 1544 description 1545 "EID address in generic LISP address format."; 1546 } 1547 leaf rlocs { 1548 type leafref { 1549 path "/rt:routing/rt:control-plane-protocols" 1550 + "/rt:control-plane-protocol/lisp:lisp" 1551 + "/lisp:locator-sets/lisp:locator-set" 1552 + "/lisp:locator-set-name"; 1553 } 1554 description 1555 "Locator set mapped to this local EID."; 1556 } 1557 leaf record-ttl { 1558 type uint32; 1559 units minutes; 1560 description 1561 "Validity period of the EID to RLOCs mapping 1562 provided in Map-Replies."; 1563 } 1564 leaf want-map-notify { 1565 type boolean; 1566 default "true"; 1567 description 1568 "Flag which if set in a Map-Register requests that 1569 a Map-Notify be sent in response."; 1570 } 1571 leaf proxy-reply { 1572 type boolean; 1573 default "false"; 1574 description 1575 "Flag which if set in a Map-Register requests that 1576 the Map-Server proxy Map-Replies for the ETR."; 1577 } 1578 leaf registration-interval { 1579 type uint16; 1580 units "seconds"; 1581 default "60"; 1582 description 1583 "Interval between consecutive Map-Registers."; 1584 } 1585 } 1586 } 1587 } 1588 } 1589 } 1590 } 1591 } 1592 1594 5. LISP-Map-Server Module 1596 This module captures the configuration data model of a LISP Map 1597 Server [RFC6833]. The model also captures some operational data 1598 elements. 1600 5.1. Module Structure 1601 module: ietf-lisp-mapserver 1602 augment /rt:routing/rt:control-plane-protocols 1603 /rt:control-plane-protocol/lisp:lisp: 1604 +--rw map-server! 1605 +--rw sites 1606 | +--rw site* [site-id] 1607 | +--rw site-id uint64 1608 | +--rw authentication-keys 1609 | | +--rw authentication-key* [auth-key-id] 1610 | | +--rw auth-key-id string 1611 | | +--rw auth-algorithm-id* 1612 | | | lisp:auth-algorithm-type 1613 | | +--rw auth-key-value? string 1614 | +--rw xtr-ids* [xtr-id] 1615 | +--rw xtr-id uint64 1616 | +--rw authentication-keys 1617 | +--rw authentication-key* [auth-key-id] 1618 | +--rw auth-key-id string 1619 | +--rw auth-algorithm-id* 1620 | | lisp:auth-algorithm-type 1621 | +--rw auth-key-value? string 1622 +--rw vpns 1623 | +--rw vpn* [instance-id] 1624 | +--rw instance-id lisp-at:instance-id-type 1625 | +--rw mappings 1626 | | +--rw mapping* [eid-id] 1627 | | +--rw eid-id lisp:eid-id 1628 | | +--rw eid-address 1629 | | | +--rw address-type 1630 | | | | lisp-address-family-ref 1631 | | | +--rw (address)? 1632 | | | +--:(no-address) 1633 | | | | +--rw no-address? empty 1634 | | | +--:(ipv4) 1635 | | | | +--rw ipv4? 1636 | | | | inet:ipv4-address 1637 | | | +--:(ipv4-prefix) 1638 | | | | +--rw ipv4-prefix? 1639 | | | | inet:ipv4-prefix 1640 | | | +--:(ipv6) 1641 | | | | +--rw ipv6? 1642 | | | | inet:ipv6-address 1643 | | | +--:(ipv6-prefix) 1644 | | | | +--rw ipv6-prefix? 1645 | | | | inet:ipv6-prefix 1646 | | | +--:(mac) 1647 | | | | +--rw mac? 1648 | | | | yang:mac-address 1649 | | | +--:(distinguished-name) 1650 | | | | +--rw distinguished-name? 1651 | | | | distinguished-name-type 1652 | | | +--:(as-number) 1653 | | | | +--rw as-number? 1654 | | | | inet:as-number 1655 | | | +--:(null-address) 1656 | | | | +--rw null-address 1657 | | | | +--rw address? empty 1658 | | | +--:(afi-list) 1659 | | | | +--rw afi-list 1660 | | | | +--rw address-list* simple-address 1661 | | | +--:(instance-id) 1662 | | | | +--rw instance-id 1663 | | | | +--rw instance-id? instance-id-type 1664 | | | | +--rw mask-length? uint8 1665 | | | | +--rw address? simple-address 1666 | | | +--:(as-number-lcaf) 1667 | | | | +--rw as-number-lcaf 1668 | | | | +--rw as? inet:as-number 1669 | | | | +--rw address? simple-address 1670 | | | +--:(application-data) 1671 | | | | +--rw application-data 1672 | | | | +--rw address? 1673 | | | | | simple-address 1674 | | | | +--rw protocol? uint8 1675 | | | | +--rw ip-tos? int32 1676 | | | | +--rw local-port-low? 1677 | | | | | inet:port-number 1678 | | | | +--rw local-port-high? 1679 | | | | | inet:port-number 1680 | | | | +--rw remote-port-low? 1681 | | | | | inet:port-number 1682 | | | | +--rw remote-port-high? 1683 | | | | inet:port-number 1684 | | | +--:(geo-coordinates) 1685 | | | | +--rw geo-coordinates 1686 | | | | +--rw latitude? bits 1687 | | | | +--rw latitude-degrees? uint8 1688 | | | | +--rw latitude-minutes? uint8 1689 | | | | +--rw latitude-seconds? uint8 1690 | | | | +--rw longitude? bits 1691 | | | | +--rw longitude-degrees? uint16 1692 | | | | +--rw longitude-minutes? uint8 1693 | | | | +--rw longitude-seconds? uint8 1694 | | | | +--rw altitude? int32 1695 | | | | +--rw address? 1696 | | | | simple-address 1697 | | | +--:(nat-traversal) 1698 | | | | +--rw nat-traversal 1699 | | | | +--rw ms-udp-port? uint16 1700 | | | | +--rw etr-udp-port? uint16 1701 | | | | +--rw global-etr-rloc? 1702 | | | | | simple-address 1703 | | | | +--rw ms-rloc? 1704 | | | | | simple-address 1705 | | | | +--rw private-etr-rloc? 1706 | | | | | simple-address 1707 | | | | +--rw rtr-rlocs* 1708 | | | | simple-address 1709 | | | +--:(explicit-locator-path) 1710 | | | | +--rw explicit-locator-path 1711 | | | | +--rw hop* [hop-id] 1712 | | | | +--rw hop-id string 1713 | | | | +--rw address? simple-address 1714 | | | | +--rw lrs-bits? bits 1715 | | | +--:(source-dest-key) 1716 | | | | +--rw source-dest-key 1717 | | | | +--rw source? simple-address 1718 | | | | +--rw dest? simple-address 1719 | | | +--:(key-value-address) 1720 | | | | +--rw key-value-address 1721 | | | | +--rw key? simple-address 1722 | | | | +--rw value? simple-address 1723 | | | +--:(service-path) 1724 | | | +--rw service-path 1725 | | | +--rw service-path-id? 1726 | | | | service-path-id-type 1727 | | | +--rw service-index? uint8 1728 | | +--rw site-id* uint64 1729 | | +--rw more-specifics-accepted? boolean 1730 | | +--rw mapping-expiration-timeout? int16 1731 | | +--ro first-registration-time? 1732 | | | yang:date-and-time 1733 | | +--ro last-registration-time? 1734 | | | yang:date-and-time 1735 | | +--rw mapping-records 1736 | | +--rw mapping-record* [xtr-id] 1737 | | +--rw xtr-id 1738 | | | lisp:xtr-id-type 1739 | | +--rw site-id? uint64 1740 | | +--rw eid 1741 | | | +--rw address-type 1742 | | | | lisp-address-family-ref 1743 | | | +--rw (address)? 1744 | | | +--:(no-address) 1745 | | | | +--rw no-address? 1746 | | | | empty 1747 | | | +--:(ipv4) 1748 | | | | +--rw ipv4? 1749 | | | | inet:ipv4-address 1750 | | | +--:(ipv4-prefix) 1751 | | | | +--rw ipv4-prefix? 1752 | | | | inet:ipv4-prefix 1753 | | | +--:(ipv6) 1754 | | | | +--rw ipv6? 1755 | | | | inet:ipv6-address 1756 | | | +--:(ipv6-prefix) 1757 | | | | +--rw ipv6-prefix? 1758 | | | | inet:ipv6-prefix 1759 | | | +--:(mac) 1760 | | | | +--rw mac? 1761 | | | | yang:mac-address 1762 | | | +--:(distinguished-name) 1763 | | | | +--rw distinguished-name? 1764 | | | | distinguished-name-type 1765 | | | +--:(as-number) 1766 | | | | +--rw as-number? 1767 | | | | inet:as-number 1768 | | | +--:(null-address) 1769 | | | | +--rw null-address 1770 | | | | +--rw address? empty 1771 | | | +--:(afi-list) 1772 | | | | +--rw afi-list 1773 | | | | +--rw address-list* 1774 | | | | simple-address 1775 | | | +--:(instance-id) 1776 | | | | +--rw instance-id 1777 | | | | +--rw instance-id? 1778 | | | | | instance-id-type 1779 | | | | +--rw mask-length? uint8 1780 | | | | +--rw address? 1781 | | | | simple-address 1782 | | | +--:(as-number-lcaf) 1783 | | | | +--rw as-number-lcaf 1784 | | | | +--rw as? inet:as-number 1785 | | | | +--rw address? simple-address 1786 | | | +--:(application-data) 1787 | | | | +--rw application-data 1788 | | | | +--rw address? 1789 | | | | | simple-address 1790 | | | | +--rw protocol? uint8 1791 | | | | +--rw ip-tos? int32 1792 | | | | +--rw local-port-low? 1793 | | | | | inet:port-number 1794 | | | | +--rw local-port-high? 1795 | | | | | inet:port-number 1796 | | | | +--rw remote-port-low? 1797 | | | | | inet:port-number 1798 | | | | +--rw remote-port-high? 1799 | | | | inet:port-number 1800 | | | +--:(geo-coordinates) 1801 | | | | +--rw geo-coordinates 1802 | | | | +--rw latitude? bits 1803 | | | | +--rw latitude-degrees? 1804 | | | | | uint8 1805 | | | | +--rw latitude-minutes? 1806 | | | | | uint8 1807 | | | | +--rw latitude-seconds? 1808 | | | | | uint8 1809 | | | | +--rw longitude? bits 1810 | | | | +--rw longitude-degrees? 1811 | | | | | uint16 1812 | | | | +--rw longitude-minutes? 1813 | | | | | uint8 1814 | | | | +--rw longitude-seconds? 1815 | | | | | uint8 1816 | | | | +--rw altitude? 1817 | | | | | int32 1818 | | | | +--rw address? 1819 | | | | simple-address 1820 | | | +--:(nat-traversal) 1821 | | | | +--rw nat-traversal 1822 | | | | +--rw ms-udp-port? 1823 | | | | | uint16 1824 | | | | +--rw etr-udp-port? 1825 | | | | | uint16 1826 | | | | +--rw global-etr-rloc? 1827 | | | | | simple-address 1828 | | | | +--rw ms-rloc? 1829 | | | | | simple-address 1830 | | | | +--rw private-etr-rloc? 1831 | | | | | simple-address 1832 | | | | +--rw rtr-rlocs* 1833 | | | | simple-address 1834 | | | +--:(explicit-locator-path) 1835 | | | | +--rw explicit-locator-path 1836 | | | | +--rw hop* [hop-id] 1837 | | | | +--rw hop-id string 1838 | | | | +--rw address? 1839 | | | | | simple-address 1840 | | | | +--rw lrs-bits? bits 1841 | | | +--:(source-dest-key) 1842 | | | | +--rw source-dest-key 1843 | | | | +--rw source? simple-address 1844 | | | | +--rw dest? simple-address 1845 | | | +--:(key-value-address) 1846 | | | | +--rw key-value-address 1847 | | | | +--rw key? simple-address 1848 | | | | +--rw value? simple-address 1849 | | | +--:(service-path) 1850 | | | +--rw service-path 1851 | | | +--rw service-path-id? 1852 | | | | service-path-id-type 1853 | | | +--rw service-index? uint8 1854 | | +--rw time-to-live? uint32 1855 | | +--ro creation-time? 1856 | | | yang:date-and-time 1857 | | +--rw authoritative? bits 1858 | | +--rw static? boolean 1859 | | +--rw (locator-list)? 1860 | | +--:(negative-mapping) 1861 | | | +--rw map-reply-action? 1862 | | | map-reply-action 1863 | | +--:(positive-mapping) 1864 | | +--rw rlocs 1865 | | +--rw locator* [locator-id] 1866 | | +--rw locator-id 1867 | | | string 1868 | | +--rw locator-address 1869 | | | +--rw address-type 1870 | | | | lisp-address-family-ref 1871 | | | +--rw (address)? 1872 | | | +--:(no-address) 1873 | | | | +--rw no-address? 1874 | | | | empty 1875 | | | +--:(ipv4) 1876 | | | | +--rw ipv4? 1877 | | | | inet:ipv4-address 1878 | | | +--:(ipv4-prefix) 1879 | | | | +--rw ipv4-prefix? 1880 | | | | inet:ipv4-prefix 1881 | | | +--:(ipv6) 1882 | | | | +--rw ipv6? 1883 | | | | inet:ipv6-address 1884 | | | +--:(ipv6-prefix) 1885 | | | | +--rw ipv6-prefix? 1886 | | | | inet:ipv6-prefix 1887 | | | +--:(mac) 1888 | | | | +--rw mac? 1889 | | | | yang:mac-address 1890 | | | +--:(distinguished-name) 1891 | | | | +--rw distinguished-name? 1892 | | | | distinguished-name-type 1893 | | | +--:(as-number) 1894 | | | | +--rw as-number? 1895 | | | | inet:as-number 1896 | | | +--:(null-address) 1897 | | | | +--rw null-address 1898 | | | | +--rw address? 1899 | | | | empty 1900 | | | +--:(afi-list) 1901 | | | | +--rw afi-list 1902 | | | | +--rw address-list* 1903 | | | | simple-address 1904 | | | +--:(instance-id) 1905 | | | | +--rw instance-id 1906 | | | | +--rw instance-id? 1907 | | | | | instance-id-type 1908 | | | | +--rw mask-length? 1909 | | | | | uint8 1910 | | | | +--rw address? 1911 | | | | simple-address 1912 | | | +--:(as-number-lcaf) 1913 | | | | +--rw as-number-lcaf 1914 | | | | +--rw as? 1915 | | | | | inet:as-number 1916 | | | | +--rw address? 1917 | | | | simple-address 1918 | | | +--:(application-data) 1919 | | | | +--rw application-data 1920 | | | | +--rw address? 1921 | | | | | simple-address 1922 | | | | +--rw protocol? 1923 | | | | | uint8 1924 | | | | +--rw ip-tos? 1925 | | | | | int32 1926 | | | | +--rw local-port-low? 1927 | | | | | inet:port-number 1928 | | | | +--rw local-port-high? 1929 | | | | | inet:port-number 1930 | | | | +--rw remote-port-low? 1931 | | | | | inet:port-number 1932 | | | | +--rw remote-port-high? 1933 | | | | inet:port-number 1934 | | | +--:(geo-coordinates) 1935 | | | | +--rw geo-coordinates 1936 | | | | +--rw latitude? 1937 | | | | | bits 1938 | | | | +--rw latitude-degrees? 1939 | | | | | uint8 1940 | | | | +--rw latitude-minutes? 1941 | | | | | uint8 1942 | | | | +--rw latitude-seconds? 1943 | | | | | uint8 1944 | | | | +--rw longitude? 1945 | | | | | bits 1946 | | | | +--rw longitude-degrees? 1947 | | | | | uint16 1948 | | | | +--rw longitude-minutes? 1949 | | | | | uint8 1950 | | | | +--rw longitude-seconds? 1951 | | | | | uint8 1952 | | | | +--rw altitude? 1953 | | | | | int32 1954 | | | | +--rw address? 1955 | | | | simple-address 1956 | | | +--:(nat-traversal) 1957 | | | | +--rw nat-traversal 1958 | | | | +--rw ms-udp-port? 1959 | | | | | uint16 1960 | | | | +--rw etr-udp-port? 1961 | | | | | uint16 1962 | | | | +--rw global-etr-rloc? 1963 | | | | | simple-address 1964 | | | | +--rw ms-rloc? 1965 | | | | | simple-address 1966 | | | | +--rw private-etr-rloc? 1967 | | | | | simple-address 1968 | | | | +--rw rtr-rlocs* 1969 | | | | simple-address 1970 | | | +--:(explicit-locator-path) 1971 | | | | +--rw explicit-locator-path 1972 | | | | +--rw hop* [hop-id] 1973 | | | | +--rw hop-id 1974 | | | | | string 1975 | | | | +--rw address? 1976 | | | | | simple-address 1977 | | | | +--rw lrs-bits? 1978 | | | | bits 1979 | | | +--:(source-dest-key) 1980 | | | | +--rw source-dest-key 1981 | | | | +--rw source? 1982 | | | | | simple-address 1983 | | | | +--rw dest? 1984 | | | | simple-address 1985 | | | +--:(key-value-address) 1986 | | | | +--rw key-value-address 1987 | | | | +--rw key? 1988 | | | | | simple-address 1989 | | | | +--rw value? 1990 | | | | simple-address 1991 | | | +--:(service-path) 1992 | | | +--rw service-path 1993 | | | +--rw service-path-id? 1994 | | | | service-path-id-type 1995 | | | +--rw service-index? 1996 | | | uint8 1997 | | +--rw priority? 1998 | | | uint8 1999 | | +--rw weight? 2000 | | | uint8 2001 | | +--rw multicast-priority? 2002 | | | uint8 2003 | | +--rw multicast-weight? 2004 | | uint8 2005 | +--ro counters 2006 | +--ro map-registers-in? yang:counter64 2007 | +--ro map-registers-in-auth-failed? yang:counter64 2008 | +--ro map-notify-records-out? yang:counter64 2009 | +--ro proxy-reply-records-out? yang:counter64 2010 | +--ro map-requests-forwarded-out? yang:counter64 2011 +--rw mapping-system-type? lisp:mapping-system-ref 2012 +--ro summary 2013 | +--ro number-configured-sites? uint32 2014 | +--ro number-registered-sites? uint32 2015 | +--ro af-datum 2016 | +--ro af-data* [address-type] 2017 | +--ro address-type 2018 | | lisp-at:lisp-address-family-ref 2019 | +--ro number-configured-eids? uint32 2020 | +--ro number-registered-eids? uint32 2021 +--ro counters 2022 +--ro map-registers-in? yang:counter64 2023 +--ro map-registers-in-auth-failed? yang:counter64 2024 +--ro map-notify-records-out? yang:counter64 2025 +--ro proxy-reply-records-out? yang:counter64 2026 +--ro map-requests-forwarded-out? yang:counter64 2028 5.2. Module Definition 2029 file "ietf-lisp-mapserver@2021-02-22.yang" 2030 module ietf-lisp-mapserver { 2031 yang-version 1.1; 2033 namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-mapserver"; 2035 prefix lisp-ms; 2037 // RFC Ed.: replace occurrences of XXXX with actual RFC number 2038 // and remove this note 2039 import ietf-lisp { 2040 prefix lisp; 2041 reference "RFC XXXX: LISP YANG model"; 2042 } 2043 import ietf-lisp-address-types { 2044 prefix lisp-at; 2045 reference "RFC XXXX: LISP YANG model"; 2046 } 2047 import ietf-yang-types { 2048 prefix yang; 2049 reference "RFC 6991: Common YANG Data Types"; 2050 } 2051 import ietf-routing { 2052 prefix "rt"; 2053 reference 2054 "RFC 8349: A YANG Data Model for Routing Management 2055 (NMDA version)"; 2056 } 2058 organization 2059 "IETF LISP (Locator/ID Separation Protocol) Working Group"; 2060 contact 2061 "WG Web: 2062 WG List: 2064 Editor: Vina Ermagan 2065 2067 Editor: Alberto Rodriguez-Natal 2068 2070 Editor: Reshad Rahman 2071 "; 2072 description 2073 "This YANG module defines the generic parameters for a LISP 2074 Map-Server. The module can be extended by vendors to define 2075 vendor-specific parameters and policies. 2077 Copyright (c) 2018 IETF Trust and the persons identified as 2078 authors of the code. All rights reserved. 2080 Redistribution and use in source and binary forms, with or 2081 without modification, is permitted pursuant to, and subject 2082 to the license terms contained in, the Simplified BSD License 2083 set forth in Section 4.c of the IETF Trust's Legal Provisions 2084 Relating to IETF Documents 2085 (http://trustee.ietf.org/license-info). 2087 This version of this YANG module is part of RFC XXXX; see 2088 the RFC itself for full legal notices. 2089 "; 2091 reference "RFC XXXX"; 2093 revision 2021-02-22 { 2094 description 2095 "Initial revision."; 2096 reference 2097 "https://tools.ietf.org/html/rfc6833"; 2098 } 2100 identity ms { 2101 base lisp:lisp-role; 2102 description 2103 "LISP Map-Server."; 2104 } 2106 grouping ms-counters { 2107 description "Grouping that defines map-server counters."; 2108 container counters { 2109 config false; 2110 description "Container for the counters"; 2112 leaf map-registers-in { 2113 type yang:counter64; 2114 description "Number of incoming Map-Register messages"; 2115 } 2117 leaf map-registers-in-auth-failed { 2118 type yang:counter64; 2119 description 2120 "Number of incoming Map-Register messages failed 2121 authentication"; 2122 } 2124 leaf map-notify-records-out { 2125 type yang:counter64; 2126 description 2127 "Number of outgoing Map-Notify records"; 2128 } 2130 leaf proxy-reply-records-out { 2131 type yang:counter64; 2132 description 2133 "Number of outgoing proxy Map-Reply records"; 2134 } 2136 leaf map-requests-forwarded-out { 2137 type yang:counter64; 2138 description 2139 "Number of outgoing Map-Requests forwarded to ETR"; 2140 } 2141 } 2142 } 2144 augment "/rt:routing/rt:control-plane-protocols" 2145 + "/rt:control-plane-protocol/lisp:lisp" { 2146 when "lisp:lisp-role/lisp:lisp-role-type = 'lisp-ms:ms'" { 2147 description 2148 "Augment is valid when LISP device type is Map-Server."; 2149 } 2150 description 2151 "This augments the LISP devices list with Map-Server 2152 specific parameters."; 2153 container map-server { 2154 presence "LISP Map-Server operation enabled"; 2155 description 2156 "Map-Server parameters."; 2157 container sites{ 2158 description 2159 "Sites to accept registrations from."; 2160 list site { 2161 key site-id; 2162 description 2163 "Site that can send registrations."; 2164 leaf site-id { 2165 type uint64; 2166 description "Site ID"; 2167 } 2168 uses lisp:auth-key; 2169 list xtr-ids { 2170 key xtr-id; 2171 description "xTR-ID specific configuration."; 2172 leaf xtr-id { 2173 type uint64; 2174 description "xTR ID"; 2175 } 2176 uses lisp:auth-key; 2177 } 2178 } 2179 } 2180 container vpns { 2181 description 2182 "VPNs for which the Map-Server accepts registrations."; 2183 list vpn { 2184 key "instance-id"; 2185 description 2186 "VPN instances in the Map-Server."; 2187 leaf instance-id { 2188 type lisp-at:instance-id-type; 2189 description 2190 "VPN identifier."; 2191 } 2192 container mappings { 2193 description 2194 "EIDs registered by device."; 2195 list mapping { 2196 key "eid-id"; 2197 description 2198 "List of EIDs registered by device."; 2199 leaf eid-id { 2200 type lisp:eid-id; 2201 description 2202 "Id of the EID registered."; 2203 } 2204 container eid-address { 2205 uses lisp-at:lisp-address; 2206 description 2207 "EID in generic LISP address format registered 2208 with the Map-Server."; 2209 } 2210 leaf-list site-id { 2211 type uint64; 2212 description "Site ID"; 2213 } 2214 leaf more-specifics-accepted { 2215 type boolean; 2216 default "false"; 2217 description 2218 "Flag indicating if more specific prefixes 2219 can be registered."; 2220 } 2221 leaf mapping-expiration-timeout { 2222 type int16; 2223 units "seconds"; 2224 default "180"; //3 times the mapregister int 2225 description 2226 "Time before mapping is expired if no new 2227 registrations are received."; 2228 } 2229 leaf first-registration-time { 2230 type yang:date-and-time; 2231 config false; 2232 description 2233 "Time at which the first registration for this 2234 EID was received"; 2235 } 2236 leaf last-registration-time { 2237 type yang:date-and-time; 2238 config false; 2239 description 2240 "Time at which the last registration for this EID 2241 was received"; 2242 } 2243 container mapping-records { 2244 description 2245 "Datastore of registered mappings."; 2246 list mapping-record { 2247 key xtr-id; 2248 description 2249 "Registered mapping."; 2250 leaf xtr-id { 2251 type lisp:xtr-id-type; 2252 description "xTR ID"; 2253 } 2254 leaf site-id { 2255 type uint64; 2256 description "Site ID"; 2257 } 2258 uses lisp:mapping; 2259 } 2260 } 2261 } 2262 } 2263 uses ms-counters; 2264 } 2265 } 2266 leaf mapping-system-type { 2267 type lisp:mapping-system-ref; 2268 description 2269 "A reference to the mapping system"; 2270 } 2272 container summary { 2273 config false; 2274 description "Summary state information"; 2276 leaf number-configured-sites { 2277 type uint32; 2278 description "Number of configured LISP sites"; 2279 } 2280 leaf number-registered-sites { 2281 type uint32; 2282 description "Number of registered LISP sites"; 2283 } 2284 container af-datum { 2285 description "Number of configured EIDs per each AF"; 2287 list af-data { 2288 key "address-type"; 2289 description "Number of configured EIDs for this AF"; 2290 leaf address-type { 2291 type lisp-at:lisp-address-family-ref; 2292 description "AF type"; 2293 } 2294 leaf number-configured-eids { 2295 type uint32; 2296 description "Number of configured EIDs for this AF"; 2297 } 2298 leaf number-registered-eids { 2299 type uint32; 2300 description "Number of registered EIDs for this AF"; 2301 } 2302 } 2303 } 2304 } 2305 uses ms-counters; 2306 } 2307 } 2308 } 2309 2311 6. LISP-Map-Resolver Module 2313 This module captures the configuration data model of a LISP Map 2314 Resolver [RFC6833]. The model also captures some operational data 2315 elements. 2317 6.1. Module Structure 2319 module: ietf-lisp-mapresolver 2320 augment /rt:routing/rt:control-plane-protocols 2321 /rt:control-plane-protocol/lisp:lisp: 2322 +--rw map-resolver! 2323 +--rw mapping-system-type? lisp:mapping-system-ref 2324 +--rw ms-address? inet:ip-address 2326 6.2. Module Definition 2328 file "ietf-lisp-mapresolver@2019-02-23.yang" 2329 module ietf-lisp-mapresolver { 2330 yang-version 1.1; 2332 namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-mapresolver"; 2334 prefix lisp-mr; 2336 // RFC Ed.: replace occurrences of XXXX with actual RFC number 2337 // and remove this note 2338 import ietf-lisp { 2339 prefix lisp; 2340 reference "RFC XXXX: LISP YANG model"; 2341 } 2342 import ietf-inet-types { 2343 prefix inet; 2344 reference "RFC 6991: Common YANG Data Types"; 2345 } 2346 import ietf-routing { 2347 prefix "rt"; 2348 reference 2349 "RFC 8349: A YANG Data Model for Routing Management 2350 (NMDA version)"; 2351 } 2353 organization 2354 "IETF LISP (Locator/ID Separation Protocol) Working Group"; 2355 contact 2356 "WG Web: 2357 WG List: 2359 Editor: Vina Ermagan 2360 2362 Editor: Alberto Rodriguez-Natal 2363 2365 Editor: Reshad Rahman 2366 "; 2367 description 2368 "This YANG module defines the generic parameters for a LISP 2369 Map-Resolver. The module can be extended by vendors to define 2370 vendor-specific parameters and policies. 2372 Copyright (c) 2018 IETF Trust and the persons identified as 2373 authors of the code. All rights reserved. 2375 Redistribution and use in source and binary forms, with or 2376 without modification, is permitted pursuant to, and subject 2377 to the license terms contained in, the Simplified BSD License 2378 set forth in Section 4.c of the IETF Trust's Legal Provisions 2379 Relating to IETF Documents 2380 (http://trustee.ietf.org/license-info). 2382 This version of this YANG module is part of RFC XXXX; see 2383 the RFC itself for full legal notices. 2384 "; 2386 reference "RFC XXXX"; 2388 revision 2019-02-23 { 2389 description 2390 "Initial revision."; 2391 reference 2392 "https://tools.ietf.org/html/rfc6833"; 2393 } 2394 identity mr { 2395 base lisp:lisp-role; 2396 description 2397 "LISP Map-Resolver."; 2398 } 2400 augment "/rt:routing/rt:control-plane-protocols" 2401 + "/rt:control-plane-protocol/lisp:lisp" { 2402 when "lisp:lisp-role/lisp:lisp-role-type = 'lisp-mr:mr'" { 2403 description 2404 "Augment is valid when LISP device type is Map-Resolver."; 2405 } 2406 description 2407 "This augments the LISP devices list with Map-Resolver 2408 specific parameters."; 2409 container map-resolver { 2410 presence "LISP Map-Resolver operation enabled"; 2411 description 2412 "Map-Resolver parameters."; 2414 leaf mapping-system-type { 2415 type lisp:mapping-system-ref; 2416 description 2417 "A reference to the mapping system"; 2418 } 2419 leaf ms-address { 2420 when "../mapping-system-type=" 2421 + "'lisp:single-node-mapping-system'"; 2422 type inet:ip-address; 2423 description 2424 "address to reach the Map Server when " 2425 + "lisp-mr:single-node-mapping-system is being used."; 2426 } 2427 } 2428 } 2429 } 2430 2432 7. LISP-Address-Types Module 2434 This module captures the various LISP address types, and is an 2435 essential building block used in other LISP modules. 2437 7.1. Module Definition 2439 file "ietf-lisp-address-types@2021-02-22.yang" 2440 module ietf-lisp-address-types { 2441 yang-version 1.1; 2443 namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-address-types"; 2445 prefix lisp-at; 2447 import ietf-inet-types { 2448 prefix inet; 2449 reference "RFC 6991: Common YANG Data Types"; 2450 } 2451 import ietf-yang-types { 2452 prefix yang; 2453 reference "RFC 6991: Common YANG Data Types"; 2454 } 2456 organization 2457 "IETF LISP (Locator/ID Separation Protocol) Working Group"; 2458 contact 2459 "WG Web: 2460 WG List: 2461 Editor: Vina Ermagan 2462 2464 Editor: Alberto Rodriguez-Natal 2465 2467 Editor: Reshad Rahman 2468 "; 2469 description 2470 "This YANG module defines the LISP Canonical Address Formats 2471 (LCAF) for LISP. The module can be extended by vendors to 2472 define vendor-specific parameters. 2474 Copyright (c) 2018 IETF Trust and the persons identified as 2475 authors of the code. All rights reserved. 2477 Redistribution and use in source and binary forms, with or 2478 without modification, is permitted pursuant to, and subject 2479 to the license terms contained in, the Simplified BSD License 2480 set forth in Section 4.c of the IETF Trust's Legal Provisions 2481 Relating to IETF Documents 2482 (http://trustee.ietf.org/license-info). 2484 This version of this YANG module is part of RFC XXXX; see 2485 the RFC itself for full legal notices. 2487 "; 2488 // RFC Ed.: replace XXXX with actual RFC number and remove 2489 // this note 2490 reference "RFC XXXX"; 2492 revision 2021-02-22 { 2493 description 2494 "Initial revision."; 2495 reference 2496 "RC8060: LISP Canonical Address Format (LCAF)"; 2497 } 2498 identity lisp-address-family { 2499 description 2500 "Base identity from which identities describing LISP address 2501 families are derived."; 2502 } 2503 identity no-address-afi { 2504 base lisp-address-family; 2505 description 2506 "IANA Reserved."; 2507 } 2508 identity ipv4-afi { 2509 base lisp-address-family; 2510 description 2511 "IANA IPv4 address family."; 2512 } 2513 identity ipv4-prefix-afi { 2514 base lisp-address-family; 2515 description 2516 "IANA IPv4 address family prefix."; 2517 } 2518 identity ipv6-afi { 2519 base lisp-address-family; 2520 description 2521 "IANA IPv6 address family."; 2522 } 2523 identity ipv6-prefix-afi { 2524 base lisp-address-family; 2525 description 2526 "IANA IPv6 address family prefix."; 2527 } 2528 identity mac-afi { 2529 base lisp-address-family; 2530 description 2531 "IANA MAC address family."; 2532 } 2533 identity distinguished-name-afi { 2534 base lisp-address-family; 2535 description 2536 "IANA Distinguished Name address family."; 2537 } 2538 identity as-number-afi { 2539 base lisp-address-family; 2540 description 2541 "IANA AS Number address family."; 2542 } 2543 identity lcaf { 2544 base lisp-address-family; 2545 description 2546 "IANA LISP Canonical Address Format address family."; 2547 } 2548 identity null-address-lcaf { 2549 base lcaf; 2550 description 2551 "Null body LCAF type."; 2552 } 2553 identity afi-list-lcaf { 2554 base lcaf; 2555 description 2556 "AFI-List LCAF type."; 2558 } 2559 identity instance-id-lcaf { 2560 base lcaf; 2561 description 2562 "Instance-ID LCAF type."; 2563 } 2564 identity as-number-lcaf { 2565 base lcaf; 2566 description 2567 "AS Number LCAF type."; 2568 } 2569 identity application-data-lcaf { 2570 base lcaf; 2571 description 2572 "Application Data LCAF type."; 2573 } 2574 identity geo-coordinates-lcaf { 2575 base lcaf; 2576 description 2577 "Geo-coordinates LCAF type."; 2578 } 2579 identity opaque-key-lcaf { 2580 base lcaf; 2581 description 2582 "Opaque Key LCAF type."; 2583 } 2584 identity nat-traversal-lcaf { 2585 base lcaf; 2586 description 2587 "NAT-Traversal LCAF type."; 2588 } 2589 identity nonce-locator-lcaf { 2590 base lcaf; 2591 description 2592 "Nonce-Locator LCAF type."; 2593 } 2594 identity multicast-info-lcaf { 2595 base lcaf; 2596 description 2597 "Multicast Info LCAF type."; 2598 } 2599 identity explicit-locator-path-lcaf { 2600 base lcaf; 2601 description 2602 "Explicit Locator Path LCAF type."; 2603 } 2604 identity security-key-lcaf { 2605 base lcaf; 2606 description 2607 "Security Key LCAF type."; 2608 } 2609 identity source-dest-key-lcaf { 2610 base lcaf; 2611 description 2612 "Source/Dest LCAF type."; 2613 } 2614 identity replication-list-lcaf { 2615 base lcaf; 2616 description 2617 "Replication-List LCAF type."; 2618 } 2619 identity json-data-model-lcaf { 2620 base lcaf; 2621 description 2622 "JSON Data Model LCAF type."; 2623 } 2624 identity key-value-address-lcaf { 2625 base lcaf; 2626 description 2627 "Key/Value Address LCAF type."; 2628 } 2629 identity encapsulation-format-lcaf { 2630 base lcaf; 2631 description 2632 "Encapsulation Format LCAF type."; 2633 } 2634 identity service-path-lcaf { 2635 base lcaf; 2636 description 2637 "Service Path LCAF type."; 2638 } 2639 typedef instance-id-type { 2640 type uint32 { 2641 range "0..16777215"; 2642 } 2643 description 2644 "Defines the range of values for an Instance ID."; 2645 } 2646 typedef service-path-id-type { 2647 type uint32 { 2648 range "0..16777215"; 2649 } 2650 description 2651 "Defines the range of values for a Service Path ID."; 2652 } 2653 typedef distinguished-name-type { 2654 type string; 2655 description 2656 "Distinguished Name address."; 2657 reference 2658 "http://www.iana.org/assignments/address-family-numbers/ 2659 address-family-numbers.xhtml"; 2660 } 2661 typedef simple-address { 2662 type union { 2663 type inet:ip-address; 2664 type inet:ip-prefix; 2665 type yang:mac-address; 2666 type distinguished-name-type; 2667 type inet:as-number; 2668 } 2669 description 2670 "Union of address types that can be part of LCAFs."; 2671 } 2672 typedef lisp-address-family-ref { 2673 type identityref { 2674 base lisp-address-family; 2675 } 2676 description 2677 "LISP address family reference."; 2678 } 2679 typedef lcaf-ref { 2680 type identityref { 2681 base lcaf; 2682 } 2683 description 2684 "LCAF types reference."; 2685 } 2687 grouping lisp-address { 2688 description 2689 "Generic LISP address."; 2690 leaf address-type { 2691 type lisp-address-family-ref; 2692 mandatory true; 2693 description 2694 "Type of the LISP address."; 2695 } 2696 choice address { 2697 description 2698 "Various LISP address types, including IP, MAC, and LCAF."; 2700 leaf no-address { 2701 when "../address-type = 'lisp-at:no-address-afi'" { 2702 description 2703 "When AFI is 0."; 2704 } 2705 type empty; 2706 description 2707 "No address."; 2708 } 2709 leaf ipv4 { 2710 when "../address-type = 'lisp-at:ipv4-afi'" { 2711 description 2712 "When AFI is IPv4."; 2713 } 2714 type inet:ipv4-address; 2715 description 2716 "IPv4 address."; 2717 } 2718 leaf ipv4-prefix { 2719 when "../address-type = 'lisp-at:ipv4-prefix-afi'" { 2720 description 2721 "When AFI is IPv4."; 2722 } 2723 type inet:ipv4-prefix; 2724 description 2725 "IPv4 prefix."; 2726 } 2727 leaf ipv6 { 2728 when "../address-type = 'lisp-at:ipv6-afi'" { 2729 description 2730 "When AFI is IPv6."; 2731 } 2732 type inet:ipv6-address; 2733 description 2734 "IPv6 address."; 2735 } 2736 leaf ipv6-prefix { 2737 when "../address-type = 'lisp-at:ipv6-prefix-afi'" { 2738 description 2739 "When AFI is IPv6."; 2740 } 2741 type inet:ipv6-prefix; 2742 description 2743 "IPv6 address."; 2744 } 2745 leaf mac { 2746 when "../address-type = 'lisp-at:mac-afi'" { 2747 description 2748 "When AFI is MAC."; 2749 } 2750 type yang:mac-address; 2751 description 2752 "MAC address."; 2753 } 2754 leaf distinguished-name { 2755 when "../address-type = 'lisp-at:distinguished-name-afi'" { 2756 description 2757 "When AFI is distinguished-name."; 2758 } 2759 type distinguished-name-type; 2760 description 2761 "Distinguished Name address."; 2762 } 2763 leaf as-number { 2764 when "../address-type = 'lisp-at:as-number-afi'" { 2765 description 2766 "When AFI is as-number."; 2767 } 2768 type inet:as-number; 2769 description 2770 "AS Number."; 2771 } 2772 container null-address { 2773 when "../address-type = 'lisp-at:null-address-lcaf'" { 2774 description 2775 "When LCAF type is null."; 2776 } 2777 description 2778 "Null body LCAF type"; 2779 leaf address { 2780 type empty; 2781 description 2782 "AFI address."; 2783 } 2784 } 2785 container afi-list { 2786 when "../address-type = 'lisp-at:afi-list-lcaf'" { 2787 description 2788 "When LCAF type is AFI-List."; 2789 } 2790 description 2791 "AFI-List LCAF type."; 2792 reference 2793 "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 2794 #section-4.16.1"; 2795 leaf-list address-list { 2796 type simple-address; 2797 description 2798 "List of AFI addresses."; 2799 } 2800 } 2801 container instance-id { 2802 when "../address-type = 'lisp-at:instance-id-lcaf'" { 2803 description 2804 "When LCAF type is Instance ID as per RFC8060."; 2805 } 2806 description 2807 "Instance ID LCAF type."; 2808 reference 2809 "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 2810 #section-4.2"; 2811 leaf instance-id { 2812 type instance-id-type; 2813 description 2814 "Instance ID value."; 2815 } 2816 leaf mask-length { 2817 type uint8; 2818 description 2819 "Mask length."; 2820 } 2821 leaf address { 2822 type simple-address; 2823 description 2824 "AFI address."; 2825 } 2826 } 2827 container as-number-lcaf { 2828 when "../address-type = 'lisp-at:as-number-lcaf'" { 2829 description 2830 "When LCAF type is AS-Number."; 2831 } 2832 description 2833 "AS Number LCAF type."; 2834 reference 2835 "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 2836 #section-4.3"; 2837 leaf as { 2838 type inet:as-number; 2839 description 2840 "AS number."; 2841 } 2842 leaf address { 2843 type simple-address; 2844 description 2845 "AFI address."; 2847 } 2848 } 2849 container application-data { 2850 when "../address-type = 'lisp-at:application-data-lcaf'" { 2851 description 2852 "When LCAF type is Application Data."; 2853 } 2854 description 2855 "Application Data LCAF type."; 2856 reference 2857 "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 2858 #section-4.4"; 2859 leaf address { 2860 type simple-address; 2861 description 2862 "AFI address."; 2863 } 2864 leaf protocol { 2865 type uint8; 2866 description 2867 "Protocol number."; 2868 } 2869 leaf ip-tos { 2870 type int32; 2871 description 2872 "Type of service field."; 2873 } 2874 leaf local-port-low { 2875 type inet:port-number; 2876 description 2877 "Low end of local port range."; 2878 } 2879 leaf local-port-high { 2880 type inet:port-number; 2881 description 2882 "High end of local port range."; 2883 } 2884 leaf remote-port-low { 2885 type inet:port-number; 2886 description 2887 "Low end of remote port range."; 2888 } 2889 leaf remote-port-high { 2890 type inet:port-number; 2891 description 2892 "High end of remote port range."; 2893 } 2894 } 2895 container geo-coordinates { 2896 when "../address-type = 'lisp-at:geo-coordinates-lcaf'" { 2897 description 2898 "When LCAF type is Geo-coordinates."; 2899 } 2900 description 2901 "Geo-coordinates LCAF type. Coordinates are specified 2902 using the WGS 84 (World Geodetic System 1984) reference 2903 coordinate system"; 2904 reference 2905 "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 2906 #section-4.5"; 2907 leaf latitude { 2908 type bits { 2909 bit N { 2910 description 2911 "Latitude bit."; 2912 } 2913 } 2914 description 2915 "Bit that selects between North and South latitude."; 2916 } 2917 leaf latitude-degrees { 2918 type uint8 { 2919 range "0 .. 90"; 2920 } 2921 description 2922 "Degrees of latitude."; 2923 } 2924 leaf latitude-minutes { 2925 type uint8 { 2926 range "0..59"; 2927 } 2928 description 2929 "Minutes of latitude."; 2930 } 2931 leaf latitude-seconds { 2932 type uint8 { 2933 range "0..59"; 2934 } 2935 description 2936 "Seconds of latitude."; 2937 } 2938 leaf longitude { 2939 type bits { 2940 bit E { 2941 description 2942 "Longitude bit."; 2944 } 2945 } 2946 description 2947 "Bit that selects between East and West longitude."; 2948 } 2949 leaf longitude-degrees { 2950 type uint16 { 2951 range "0 .. 180"; 2952 } 2953 description 2954 "Degrees of longitude."; 2955 } 2956 leaf longitude-minutes { 2957 type uint8 { 2958 range "0..59"; 2959 } 2960 description 2961 "Minutes of longitude."; 2962 } 2963 leaf longitude-seconds { 2964 type uint8 { 2965 range "0..59"; 2966 } 2967 description 2968 "Seconds of longitude."; 2969 } 2970 leaf altitude { 2971 type int32; 2972 description 2973 "Height relative to sea level in meters."; 2974 } 2975 leaf address { 2976 type simple-address; 2977 description 2978 "AFI address."; 2979 } 2980 } 2981 container nat-traversal { 2982 when "../address-type = 'lisp-at:nat-traversal-lcaf'" { 2983 description 2984 "When LCAF type is NAT-Traversal."; 2985 } 2986 description 2987 "NAT-Traversal LCAF type."; 2988 reference 2989 "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 2990 #section-4.6"; 2991 leaf ms-udp-port { 2992 type uint16; 2993 description 2994 "Map-Server UDP port (set to 4342)."; 2995 } 2996 leaf etr-udp-port { 2997 type uint16; 2998 description 2999 "ETR UDP port."; 3000 } 3001 leaf global-etr-rloc { 3002 type simple-address; 3003 description 3004 "Global ETR RLOC address."; 3005 } 3006 leaf ms-rloc { 3007 type simple-address; 3008 description 3009 "Map-Server RLOC address."; 3010 } 3011 leaf private-etr-rloc { 3012 type simple-address; 3013 description 3014 "Private ETR RLOC address."; 3015 } 3016 leaf-list rtr-rlocs { 3017 type simple-address; 3018 description 3019 "List of RTR RLOC addresses."; 3020 } 3021 } 3022 container explicit-locator-path { 3023 when "../address-type = 'lisp-at:explicit-locator-path-lcaf'" { 3024 description 3025 "When LCAF type type is Explicit Locator Path."; 3026 } 3027 description 3028 "Explicit Locator Path LCAF type."; 3029 reference 3030 "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 3031 #section-4.9"; 3032 list hop { 3033 key "hop-id"; 3034 ordered-by user; 3035 description 3036 "List of locator hops forming the explicit path."; 3037 leaf hop-id { 3038 type string { 3039 length "1..64"; 3040 pattern '[a-zA-Z0-9\-_.:]*'; 3041 } 3042 description 3043 "Unique identifier for the hop."; 3044 } 3045 leaf address { 3046 type simple-address; 3047 description 3048 "AFI address."; 3049 } 3050 leaf lrs-bits { 3051 type bits{ 3052 bit lookup { 3053 description 3054 "Lookup bit."; 3055 } 3056 bit rloc-probe { 3057 description 3058 "RLOC-probe bit."; 3059 } 3060 bit strict { 3061 description 3062 "Strict bit."; 3063 } 3064 } 3065 description 3066 "Flag bits per hop."; 3067 } 3068 } 3069 } 3070 container source-dest-key { 3071 when "../address-type = 'lisp-at:source-dest-key-lcaf'" { 3072 description 3073 "When LCAF type type is Source/Dest."; 3074 } 3075 description 3076 "Source/Dest LCAF type."; 3077 reference 3078 "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 3079 #section-4.11"; 3080 leaf source { 3081 type simple-address; 3082 description 3083 "Source address."; 3084 } 3085 leaf dest { 3086 type simple-address; 3087 description 3088 "Destination address."; 3089 } 3090 } 3091 container key-value-address { 3092 when "../address-type = 'lisp-at:key-value-address-lcaf'" { 3093 description 3094 "When LCAF type type is Key/Value Address."; 3095 } 3096 description 3097 "Key/Value Address LCAF type."; 3098 reference 3099 "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 3100 #section-4.11"; 3101 leaf key { 3102 type simple-address; 3103 description 3104 "Address as Key."; 3105 } 3106 leaf value { 3107 type simple-address; 3108 description 3109 "Address as Value."; 3110 } 3111 } 3112 container service-path { 3113 when "../address-type = 'lisp-at:service-path-lcaf'" { 3114 description 3115 "When LCAF type service path identifier."; 3116 } 3117 description 3118 "Service Path LCAF type."; 3119 reference 3120 "http://tools.ietf.org/html/draft-ermagan-lisp-nsh-00"; 3121 leaf service-path-id { 3122 type service-path-id-type; 3123 description 3124 "Service path identifier for the path for NSH header"; 3125 } 3126 leaf service-index { 3127 type uint8; 3128 description 3129 "Service path index for NSH header"; 3130 } 3131 } 3132 } 3133 } 3134 } 3135 3137 7.2. Data Model examples 3139 This section presents some simple and illustrative examples on how to 3140 configure LISP. 3142 7.2.1. LISP protocol instance 3144 The following is an example configuration for a LISP protocol 3145 instance with the name "LISP1". There are also 2 VNIs configured. 3147 3148 3149 3151 3152 VRF-BLUE 3153 3154 true 3155 3156 3157 VRF-RED 3158 3159 true 3160 3161 3162 3163 3164 3165 3166 lisp:lisp 3167 3168 LISP1 3169 3170 3171 etr 3172 3173 3174 itr 3175 3176 3177 3178 1000 3179 VRF-BLUE 3180 3181 3182 2000 3183 VRF-RED 3184 3185 3186 3187 3188 3189 3190 3192 7.2.2. LISP ITR 3194 The following is an example configuration for ITR functionality under 3195 "LISP1". There are 2 Map-Resolvers configured. 3197 3198 3199 3200 3201 3202 3203 lisp:lisp 3204 3205 LISP1 3206 3207 3208 itr 3209 3210 3211 3212 2001:db8:203:0:113::1 3213 2001:db8:204:0:113::1 3214 3215 3216 3217 3218 3219 3220 3222 7.2.3. LISP ETR 3224 The following is an example configuration for ETR functionality under 3225 "LISP1". There are 2 Map-Servers and 2 local EIDs configured. 3227 3228 3229 3231 3232 VRF-BLUE 3233 3234 true 3235 3236 3237 VRF-RED 3238 3239 true 3240 3241 3242 3243 3244 3245 3246 lisp:lisp 3247 3248 LISP1 3249 3250 3251 etr 3252 3253 3254 1 3255 3256 3257 3258 1000 3259 VRF-BLUE 3260 3261 3262 2000 3263 VRF-RED 3264 3265 3266 3267 3268 3269 2001:db8:203:0:113::1 3270 3271 3272 key1 3273 3274 hmac-sha-256-128 3275 3276 *Kye^$$1#gb91U04zpa 3277 3278 3279 3280 3281 2001:db8:204:0:113::1 3282 3283 3284 key1 3285 3286 hmac-sha-256-128 3287 3288 *Kye^$$1#gb91U04zpa 3289 3290 3291 3292 3293 3294 3295 1000 3296 3297 3298 2001:db8:400:0:100::0 3299 3300 3302 lisp-at:ipv6-prefix-afi 3303 3304 2001:db8:400:0:100::/80 3305 3306 3307 3308 3309 3310 2000 3311 3312 3313 2001:db8:800:0:200::0 3314 3315 3317 lisp-at:ipv6-prefix-afi 3318 3319 2001:db8:800:0:200::/80 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 7.2.4. LISP Map-Server 3333 The following is an example configuration for Map-Server 3334 functionality under "LISP1". There are 2 mappings configured. 3336 3337 3338 3339 3340 3341 3342 lisp:lisp 3343 3344 LISP1 3345 3346 3347 3349 lisp-ms:ms 3350 3351 3352 3354 3355 3356 1 3357 3358 3359 key1 3360 3361 hmac-sha-256-128 3362 3363 *Kye^$$1#gb91U04zpa 3364 3365 3366 3367 3368 3369 3370 1000 3371 3372 3373 1 3374 3375 3377 lisp-at:ipv6-prefix-afi 3379 3380 2001:db8:400:0:100::/80 3381 3382 3383 3384 3385 3386 2000 3387 3388 3389 1 3390 3391 3393 lisp-at:ipv6-prefix-afi 3394 3395 2001:db8:800:0:200::/80 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3408 8. Acknowledgments 3410 The tree view and the YANG model shown in this document have been 3411 formated with the 'pyang' tool. 3413 9. IANA Considerations 3415 The IANA is requested to as assign a new namespace URI from the IETF 3416 XML registry. 3418 This document registers the following namesace URIs in the IETF XML 3419 registry [RFC3688]: 3421 -------------------------------------------------------------------- 3423 URI: urn:ietf:params:xml:ns:yang:ietf-lisp 3424 Registrant Contact: The IESG. 3426 XML: N/A, the requested URI is an XML namespace. 3428 -------------------------------------------------------------------- 3430 -------------------------------------------------------------------- 3432 URI: urn:ietf:params:xml:ns:yang:ietf-lisp-itr 3434 Registrant Contact: The IESG. 3436 XML: N/A, the requested URI is an XML namespace. 3438 -------------------------------------------------------------------- 3440 -------------------------------------------------------------------- 3442 URI: urn:ietf:params:xml:ns:yang:ietf-lisp-etr 3444 Registrant Contact: The IESG. 3446 XML: N/A, the requested URI is an XML namespace. 3448 -------------------------------------------------------------------- 3450 -------------------------------------------------------------------- 3452 URI: urn:ietf:params:xml:ns:yang:ietf-lisp-mapserver 3454 Registrant Contact: The IESG. 3456 XML: N/A, the requested URI is an XML namespace. 3458 -------------------------------------------------------------------- 3460 -------------------------------------------------------------------- 3462 URI: urn:ietf:params:xml:ns:yang:ietf-lisp-mapresolver 3464 Registrant Contact: The IESG. 3466 XML: N/A, the requested URI is an XML namespace. 3468 -------------------------------------------------------------------- 3470 -------------------------------------------------------------------- 3472 URI: urn:ietf:params:xml:ns:yang:ietf-lisp-address-types 3474 Registrant Contact: The IESG. 3476 XML: N/A, the requested URI is an XML namespace. 3478 -------------------------------------------------------------------- 3480 This document registers the following YANG modules in the "YANG 3481 Module Names" registry [RFC6020]: 3483 -------------------------------------------------------------------- 3485 Name: ietf-lisp 3487 Namespace: urn:ietf:params:xml:ns:yang:ietf-lisp 3489 Prefix: lisp 3491 Reference: RFC XXX 3493 -------------------------------------------------------------------- 3495 -------------------------------------------------------------------- 3497 Name: ietf-lisp-itr 3499 Namespace: urn:ietf:params:xml:ns:yang:ietf-lisp-itr 3501 Prefix: lisp-itr 3503 Reference: RFC XXX 3505 -------------------------------------------------------------------- 3507 -------------------------------------------------------------------- 3509 Name: ietf-lisp-etr 3511 Namespace: urn:ietf:params:xml:ns:yang:ietf-lisp-etr 3513 Prefix: lisp-etr 3514 Reference: RFC XXX 3516 -------------------------------------------------------------------- 3518 -------------------------------------------------------------------- 3520 Name: ietf-lisp-mapserver 3522 Namespace: urn:ietf:params:xml:ns:yang:ietf-lisp-mapserver 3524 Prefix: lisp-ms 3526 Reference: RFC XXX 3528 -------------------------------------------------------------------- 3530 -------------------------------------------------------------------- 3532 Name: ietf-lisp-mapresolver 3534 Namespace: urn:ietf:params:xml:ns:yang:ietf-lisp-mapresolver 3536 Prefix: lisp-mr 3538 Reference: RFC XXX 3540 -------------------------------------------------------------------- 3542 -------------------------------------------------------------------- 3544 Name: ietf-lisp-address-types 3546 Namespace: urn:ietf:params:xml:ns:yang:ietf-lisp-address-types 3548 Prefix: lisp-at 3550 Reference: RFC XXX 3552 -------------------------------------------------------------------- 3554 10. Security Considerations 3556 The YANG modules specified in this document define a schema for data 3557 that is designed to be accessed via network management protocols such 3558 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 3559 is the secure transport layer, and the mandatory-to-implement secure 3560 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 3561 is HTTPS, and the mandatory-to-implement secure transport is TLS 3562 [RFC8446]. 3564 The NETCONF access control model [RFC8341] provides the means to 3565 restrict access for particular NETCONF or RESTCONF users to a pre- 3566 configured subset of all available NETCONF or RESTCONF protocol 3567 operations and content. 3569 The security considerations of LISP control-plane [RFC6833] and LISP 3570 data-plane [RFC6830] as well as the LISP threat analysis [RFC7835] 3571 apply to this YANG model. 3573 There are a number of data nodes defined in this YANG module that are 3574 writable/creatable/deletable (i.e., config true, which is the 3575 default). These data nodes may be considered sensitive or vulnerable 3576 in some network environments. Write operations (e.g., edit-config) 3577 to these data nodes without proper protection can have a negative 3578 effect on network operations. These are the subtrees and data nodes 3579 and their sensitivity/vulnerability: 3581 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 3582 lisp:lisp/ 3584 Access to the locator-sets node may modify which interfaces are used 3585 for data and/or control traffic as well as affect the load balancing 3586 of data-plane traffic. Access to the lisp-role node may prevent the 3587 device from perform its intended data-plane and/or control-plane 3588 operation. Access to the router-id node allows to modify the unique 3589 identifier of the device, which may result in disruption of its LISP 3590 control-plane operation. Access to the vpn node may allow to 3591 redirect data-plane traffic to erroneous local or remote network 3592 instances. 3594 /rt:routing/rt:control-plane-protocols/rt:control-plane- 3595 protocol/lisp:lisp/lisp:map-server 3597 Access to the sites node can prevent authorized devices from 3598 registering mappings in the Map-Server and/or allow unauthorized 3599 devices to so. Access to the vpn node can result in corrupted 3600 mapping sate that may propagate across the LISP network, potentially 3601 resulting in forwarding of data-plane traffic to arbitrary 3602 destinations and general disruption of the data-plane operation. 3603 Access to mapping-system-type and/or ddt-mapping-system nodes may 3604 prevent the device to connect to the Mapping System infrastructure 3605 and consequentially to attract Map-Request messages. 3607 /rt:routing/rt:control-plane-protocols/rt:control-plane- 3608 protocol/lisp:lisp/lisp:map-resolver 3610 Access to mapping-system-type, ms-address and/or ddt-mapping-system 3611 nodes may prevent the device to connect to the Mapping System 3612 infrastructure and forward Map-Request messages. 3614 /rt:routing/rt:control-plane-protocols/rt:control-plane- 3615 protocol/lisp:lisp/lisp:itr 3617 Access to the rloc-probing node can increase the control-plane 3618 overhead in the device or affect the capability of the device to 3619 detect failures on the underlay. Access to the itr-rlocs node may 3620 prevent the device from getting Map-Reply messages. Access to the 3621 map-resolvers node can prevent the device from sending its Map- 3622 Request messages to valid Map-Resolvers. Access to the proxy-etrs 3623 nodes can affect the capability of the device to send data-plane 3624 traffic towards non-LISP destinations. Access to the map-cache node 3625 can result in forwarding of data-plane traffic to arbitrary 3626 destinations and general disruption of data-plane operation. 3628 /rt:routing/rt:control-plane-protocols/rt:control-plane- 3629 protocol/lisp:lisp/lisp:etr 3631 Access to the map-servers node can prevent the device from 3632 registering its local mappings into the Mapping System. Access to 3633 the local-eids node can disrupt data-plane operation on the device 3634 and/or result in the device registering corrupted mappings into the 3635 Mapping System. 3637 Some of the readable data nodes in this YANG module may be considered 3638 sensitive or vulnerable in some network environments. It is thus 3639 important to control read access (e.g., via get, get-config, or 3640 notification) to these data nodes. These are the subtrees and data 3641 nodes and their sensitivity/vulnerability: 3643 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 3644 lisp:lisp 3646 Access to the locator-sets node can expose the locators the device is 3647 using for its control and/or data operation. Access to the lisp-role 3648 node can disclose the LISP roles instantiated at the device which 3649 facilitates mounting attacks against the device. Access to the 3650 router-id node can expose the unique identifier of device which may 3651 allow a third party to track its control-plane operation and/or 3652 impersonate the device. Access to the vpn node can leak the local 3653 mapping between LISP Instance IDs and local network instances. 3655 /rt:routing/rt:control-plane-protocols/rt:control-plane- 3656 protocol/lisp:lisp/lisp:map-server 3658 Access to the sites node can expose the credentials used to register 3659 mappings and allow unauthorized devices to do so. Access to the vpn 3660 node can expose the mappings currently registered in the device, 3661 which has privacy implications. Access to the mapping-system-type 3662 node may reveal the Mapping System in use which can be used to mount 3663 attacks against the device and/or the Mapping System. Access to the 3664 summary and counters nodes may expose operational statistics of the 3665 device. 3667 /rt:routing/rt:control-plane-protocols/rt:control-plane- 3668 protocol/lisp:lisp/lisp:map-resolver 3670 Access to the mapping-system-type node may reveal the Mapping System 3671 in use which can be used to mount attacks against the device and/or 3672 the Mapping System. Access to the ms-address and/or ddt-mapping- 3673 system nodes can leak the information about the Mapping System 3674 infrastructure used by the device, which can be used to block 3675 communication and/or mount attacks against it. 3677 /rt:routing/rt:control-plane-protocols/rt:control-plane- 3678 protocol/lisp:lisp/lisp:itr 3680 Access to the rloc-probing node can expose if and how the device is 3681 using control-plane signaling to probe underlay locators. Access to 3682 the itr-rlocs node may disclose the addresses the device is using to 3683 receive Map-Reply messages. Access to the map-resolvers node can 3684 expose the Map-Resolvers used by the device, which can be used to 3685 mount attacks against the device and/or the Mapping System. Access 3686 to the proxy-etrs node can disclose the PETRs used by the device, 3687 which can be used to mount attacks against the device and/or PETRs. 3688 Access to the map-cache node can expose the mappings currently cached 3689 in the device, which has privacy implications. 3691 /rt:routing/rt:control-plane-protocols/rt:control-plane- 3692 protocol/lisp:lisp/lisp:etr 3693 Access to the map-servers node can expose the credentials used by the 3694 device to register mappings into the Mapping System allowing an 3695 unauthorized device to impersonate and register mappings on behalf 3696 the authorized device. Access to the local-eids node can expose the 3697 local EIDs currently being served by the device, which has privacy 3698 implications. 3700 11. Normative References 3702 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 3703 Requirement Levels", BCP 14, RFC 2119, 3704 DOI 10.17487/RFC2119, March 1997, 3705 . 3707 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 3708 DOI 10.17487/RFC3688, January 2004, 3709 . 3711 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 3712 the Network Configuration Protocol (NETCONF)", RFC 6020, 3713 DOI 10.17487/RFC6020, October 2010, 3714 . 3716 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 3717 and A. Bierman, Ed., "Network Configuration Protocol 3718 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 3719 . 3721 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 3722 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 3723 . 3725 [RFC6830] Farinacci, D., Fuller, V., Meyer, D., and D. Lewis, "The 3726 Locator/ID Separation Protocol (LISP)", RFC 6830, 3727 DOI 10.17487/RFC6830, January 2013, 3728 . 3730 [RFC6832] Lewis, D., Meyer, D., Farinacci, D., and V. Fuller, 3731 "Interworking between Locator/ID Separation Protocol 3732 (LISP) and Non-LISP Sites", RFC 6832, 3733 DOI 10.17487/RFC6832, January 2013, 3734 . 3736 [RFC6833] Fuller, V. and D. Farinacci, "Locator/ID Separation 3737 Protocol (LISP) Map-Server Interface", RFC 6833, 3738 DOI 10.17487/RFC6833, January 2013, 3739 . 3741 [RFC6836] Fuller, V., Farinacci, D., Meyer, D., and D. Lewis, 3742 "Locator/ID Separation Protocol Alternative Logical 3743 Topology (LISP+ALT)", RFC 6836, DOI 10.17487/RFC6836, 3744 January 2013, . 3746 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 3747 RFC 6991, DOI 10.17487/RFC6991, July 2013, 3748 . 3750 [RFC7835] Saucez, D., Iannone, L., and O. Bonaventure, "Locator/ID 3751 Separation Protocol (LISP) Threat Analysis", RFC 7835, 3752 DOI 10.17487/RFC7835, April 2016, 3753 . 3755 [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 3756 Management", RFC 8022, DOI 10.17487/RFC8022, November 3757 2016, . 3759 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 3760 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 3761 . 3763 [RFC8060] Farinacci, D., Meyer, D., and J. Snijders, "LISP Canonical 3764 Address Format (LCAF)", RFC 8060, DOI 10.17487/RFC8060, 3765 February 2017, . 3767 [RFC8111] Fuller, V., Lewis, D., Ermagan, V., Jain, A., and A. 3768 Smirnov, "Locator/ID Separation Protocol Delegated 3769 Database Tree (LISP-DDT)", RFC 8111, DOI 10.17487/RFC8111, 3770 May 2017, . 3772 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 3773 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 3774 May 2017, . 3776 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 3777 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 3778 . 3780 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 3781 Access Control Model", STD 91, RFC 8341, 3782 DOI 10.17487/RFC8341, March 2018, 3783 . 3785 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface 3786 Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, 3787 . 3789 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 3790 Routing Management (NMDA Version)", RFC 8349, 3791 DOI 10.17487/RFC8349, March 2018, 3792 . 3794 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 3795 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 3796 . 3798 [RFC8529] Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X. 3799 Liu, "YANG Data Model for Network Instances", RFC 8529, 3800 DOI 10.17487/RFC8529, March 2019, 3801 . 3803 Authors' Addresses 3805 Vina Ermagan 3806 Google 3807 United States of America 3809 Email: ermagan@gmail.com 3811 Alberto Rodriguez-Natal 3812 Cisco Systems 3813 San Jose, CA 3814 United States of America 3816 Email: natal@cisco.com 3818 Florin Coras 3819 Cisco Systems 3820 San Jose, CA 3821 United States of America 3823 Email: fcoras@cisco.com 3825 Carl Moberg 3826 Avassa 3828 Email: calle@avassa.io 3830 Reshad Rahman 3831 Canada 3832 Email: reshad@yahoo.com 3834 Albert Cabellos-Aparicio 3835 Technical University of Catalonia 3836 Barcelona 3837 Spain 3839 Email: acabello@ac.upc.edu 3841 Fabio Maino 3842 Cisco Systems 3843 San Jose, CA 3844 United States of America 3846 Email: fmaino@cisco.com