idnits 2.17.1 draft-ietf-lisp-yang-15.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 4 instances of too long lines in the document, the longest one being 1 character in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 151 has weird spacing: '...et-name str...' == Line 270 has weird spacing: '...le-type lis...' == Line 276 has weird spacing: '...ance-id lis...' == Line 851 has weird spacing: '...ance-id lea...' == Line 1283 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 (February 22, 2021) is 1151 days in the past. Is this intentional? Checking references for intended status: Experimental ---------------------------------------------------------------------------- == Unused Reference: 'RFC6832' is defined on line 3728, but no explicit reference was found in the text == Unused Reference: 'RFC6836' is defined on line 3739, but no explicit reference was found in the text == Unused Reference: 'RFC8060' is defined on line 3761, but no explicit reference was found in the text == Unused Reference: 'RFC8111' is defined on line 3765, but no explicit reference was found in the text == Unused Reference: 'RFC8349' is defined on line 3787, 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: August 26, 2021 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 February 22, 2021 17 LISP YANG Model 18 draft-ietf-lisp-yang-15 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 August 26, 2021. 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 52 (https://trustee.ietf.org/license-info) in effect on the date of 53 publication of this document. Please review these documents 54 carefully, as they describe your rights and restrictions with respect 55 to this document. Code Components extracted from this document must 56 include Simplified BSD License text as described in Section 4.e of 57 the Trust Legal Provisions and are provided without warranty as 58 described in the Simplified BSD License. 60 Table of Contents 62 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 63 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 64 1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 65 1.3. Prefixes . . . . . . . . . . . . . . . . . . . . . . . . 3 66 2. LISP Module . . . . . . . . . . . . . . . . . . . . . . . . . 4 67 2.1. Module Structure . . . . . . . . . . . . . . . . . . . . 4 68 2.2. Module Definition . . . . . . . . . . . . . . . . . . . . 7 69 3. LISP-ITR Module . . . . . . . . . . . . . . . . . . . . . . . 18 70 3.1. Module Structure . . . . . . . . . . . . . . . . . . . . 18 71 3.2. Module Definition . . . . . . . . . . . . . . . . . . . . 24 72 4. LISP-ETR Module . . . . . . . . . . . . . . . . . . . . . . . 27 73 4.1. Module Structure . . . . . . . . . . . . . . . . . . . . 27 74 4.2. Module Definition . . . . . . . . . . . . . . . . . . . . 30 75 5. LISP-Map-Server Module . . . . . . . . . . . . . . . . . . . 34 76 5.1. Module Structure . . . . . . . . . . . . . . . . . . . . 34 77 5.2. Module Definition . . . . . . . . . . . . . . . . . . . . 43 78 6. LISP-Map-Resolver Module . . . . . . . . . . . . . . . . . . 49 79 6.1. Module Structure . . . . . . . . . . . . . . . . . . . . 49 80 6.2. Module Definition . . . . . . . . . . . . . . . . . . . . 49 81 7. LISP-Address-Types Module . . . . . . . . . . . . . . . . . . 51 82 7.1. Module Definition . . . . . . . . . . . . . . . . . . . . 51 83 7.2. Data Model examples . . . . . . . . . . . . . . . . . . . 66 84 7.2.1. LISP protocol instance . . . . . . . . . . . . . . . 66 85 7.2.2. LISP ITR . . . . . . . . . . . . . . . . . . . . . . 68 86 7.2.3. LISP ETR . . . . . . . . . . . . . . . . . . . . . . 68 87 7.2.4. LISP Map-Server . . . . . . . . . . . . . . . . . . . 71 88 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 72 89 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 72 90 10. Security Considerations . . . . . . . . . . . . . . . . . . . 75 91 11. Normative References . . . . . . . . . . . . . . . . . . . . 78 92 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 81 94 1. Introduction 96 The Locator/ID Separation Protocol (LISP) defines several network 97 elements subject to be configured. This document presents the YANG 98 data models required for basic configuration of all major LISP 99 [RFC6830] elements. The models also capture some essential 100 operational data elements as well. 102 1.1. Requirements Language 104 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 105 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 106 document are to be interpreted as described in BCP 14 [RFC2119] 107 [RFC8174] when, and only when, they appear in all capitals, as shown 108 here. 110 1.2. Tree Diagrams 112 This document uses the graphical representation of data models 113 defined in [RFC8340]. 115 1.3. Prefixes 117 The table below provides a summary of the prefixes used by this 118 document. 120 +----------+-------------------------+------------------------------+ 121 | Prefix | YANG module | Reference | 122 +----------+-------------------------+------------------------------+ 123 | lisp | ietf-lisp | Section 2 | 124 | if | ietf-interfaces | [RFC8343] | 125 | lisp-at | ietf-lisp-address-types | Section 7 | 126 | yang | ietf-yang-types | [RFC6991] | 127 | rt | ietf-routing | [RFC8022] | 128 | ni | ietf-network-instance | [RFC8529] | 129 | lisp-itr | ietf-lisp-itr | Section 3 | 130 | inet | ietf-inet-types | [RFC6991] | 131 | lisp-etr | ietf-lisp-etr | Section 4 | 132 | lisp-ms | ietf-lisp-mapserver | Section 5 | 133 | lisp-mr | ietf-lisp-mapresolver | Section 6 | 134 +----------+-------------------------+------------------------------+ 136 Table 1: Prefixes and corresponding YANG modules 138 2. LISP Module 140 This is the base LISP module. It is further augmented by the LISP 141 device role specific modules defined elsewhere in this document. 143 2.1. Module Structure 145 module: ietf-lisp 146 augment /rt:routing/rt:control-plane-protocols 147 /rt:control-plane-protocol: 148 +--rw lisp 149 +--rw locator-sets 150 | +--rw locator-set* [locator-set-name] 151 | +--rw locator-set-name string 152 | +--rw (locator-type)? 153 | +--:(local-interface) 154 | | +--rw interface* [interface-ref] 155 | | +--rw interface-ref if:interface-ref 156 | | +--rw priority? uint8 157 | | +--rw weight? uint8 158 | | +--rw multicast-priority? uint8 159 | | +--rw multicast-weight? uint8 160 | +--:(general-locator) 161 | +--rw locator* [locator-id] 162 | +--rw locator-id string 163 | +--rw locator-address 164 | | +--rw address-type 165 | | | lisp-address-family-ref 166 | | +--rw (address)? 167 | | +--:(no-address) 168 | | | +--rw no-address? empty 169 | | +--:(ipv4) 170 | | | +--rw ipv4? 171 | | | inet:ipv4-address 172 | | +--:(ipv4-prefix) 173 | | | +--rw ipv4-prefix? 174 | | | inet:ipv4-prefix 175 | | +--:(ipv6) 176 | | | +--rw ipv6? 177 | | | inet:ipv6-address 178 | | +--:(ipv6-prefix) 179 | | | +--rw ipv6-prefix? 180 | | | inet:ipv6-prefix 181 | | +--:(mac) 182 | | | +--rw mac? 183 | | | yang:mac-address 184 | | +--:(distinguished-name) 185 | | | +--rw distinguished-name? 186 | | | distinguished-name-type 187 | | +--:(as-number) 188 | | | +--rw as-number? 189 | | | inet:as-number 190 | | +--:(null-address) 191 | | | +--rw null-address 192 | | | +--rw address? empty 193 | | +--:(afi-list) 194 | | | +--rw afi-list 195 | | | +--rw address-list* 196 | | | simple-address 197 | | +--:(instance-id) 198 | | | +--rw instance-id 199 | | | +--rw instance-id? 200 | | | | instance-id-type 201 | | | +--rw mask-length? uint8 202 | | | +--rw address? simple-address 203 | | +--:(as-number-lcaf) 204 | | | +--rw as-number-lcaf 205 | | | +--rw as? inet:as-number 206 | | | +--rw address? simple-address 207 | | +--:(application-data) 208 | | | +--rw application-data 209 | | | +--rw address? 210 | | | | simple-address 211 | | | +--rw protocol? uint8 212 | | | +--rw ip-tos? int32 213 | | | +--rw local-port-low? 214 | | | | inet:port-number 215 | | | +--rw local-port-high? 216 | | | | inet:port-number 217 | | | +--rw remote-port-low? 218 | | | | inet:port-number 219 | | | +--rw remote-port-high? 220 | | | inet:port-number 221 | | +--:(geo-coordinates) 222 | | | +--rw geo-coordinates 223 | | | +--rw latitude? bits 224 | | | +--rw latitude-degrees? uint8 225 | | | +--rw latitude-minutes? uint8 226 | | | +--rw latitude-seconds? uint8 227 | | | +--rw longitude? bits 228 | | | +--rw longitude-degrees? uint16 229 | | | +--rw longitude-minutes? uint8 230 | | | +--rw longitude-seconds? uint8 231 | | | +--rw altitude? int32 232 | | | +--rw address? 233 | | | simple-address 234 | | +--:(nat-traversal) 235 | | | +--rw nat-traversal 236 | | | +--rw ms-udp-port? uint16 237 | | | +--rw etr-udp-port? uint16 238 | | | +--rw global-etr-rloc? 239 | | | | simple-address 240 | | | +--rw ms-rloc? 241 | | | | simple-address 242 | | | +--rw private-etr-rloc? 243 | | | | simple-address 244 | | | +--rw rtr-rlocs* 245 | | | simple-address 246 | | +--:(explicit-locator-path) 247 | | | +--rw explicit-locator-path 248 | | | +--rw hop* [hop-id] 249 | | | +--rw hop-id string 250 | | | +--rw address? simple-address 251 | | | +--rw lrs-bits? bits 252 | | +--:(source-dest-key) 253 | | | +--rw source-dest-key 254 | | | +--rw source? simple-address 255 | | | +--rw dest? simple-address 256 | | +--:(key-value-address) 257 | | | +--rw key-value-address 258 | | | +--rw key? simple-address 259 | | | +--rw value? simple-address 260 | | +--:(service-path) 261 | | +--rw service-path 262 | | +--rw service-path-id? 263 | | | service-path-id-type 264 | | +--rw service-index? uint8 265 | +--rw priority? uint8 266 | +--rw weight? uint8 267 | +--rw multicast-priority? uint8 268 | +--rw multicast-weight? uint8 269 +--rw lisp-role* [lisp-role-type] 270 | +--rw lisp-role-type lisp-role-ref 271 +--rw lisp-router-id 272 | +--rw site-id? uint64 273 | +--rw xtr-id? lisp:xtr-id-type 274 +--rw vpns 275 +--rw vpn* [instance-id] 276 +--rw instance-id lisp-at:instance-id-type 277 +--rw iid-name 278 -> /ni:network-instances/network-instance/name 280 2.2. Module Definition 282 file "ietf-lisp@2021-02-22.yang" 283 module ietf-lisp { 284 yang-version 1.1; 286 namespace "urn:ietf:params:xml:ns:yang:ietf-lisp"; 288 prefix lisp; 290 import ietf-interfaces { 291 prefix if; 292 reference 293 "RFC 8343: A YANG Data Model for Interface Management"; 294 } 295 // RFC Ed.: replace occurrences of XXXX with actual RFC number 296 // and remove this note 297 import ietf-lisp-address-types { 298 prefix lisp-at; 299 reference "RFC XXXX: LISP YANG model"; 300 } 301 import ietf-yang-types { 302 prefix yang; 303 reference "RFC 6991: Common YANG Data Types"; 304 } 305 import ietf-routing { 306 prefix "rt"; 307 reference 308 "RFC 8349: A YANG Data Model for Routing Management 309 (NMDA version)"; 310 } 311 import ietf-network-instance { 312 prefix "ni"; 313 reference 314 "RFC 8529: YANG Model for Network Instances"; 315 } 317 organization 318 "IETF LISP (Locator/ID Separation Protocol) Working Group"; 319 contact 320 "WG Web: 321 WG List: 323 Editor: Vina Ermagan 324 326 Editor: Alberto Rodriguez-Natal 327 329 Editor: Reshad Rahman 330 "; 331 description 332 "This YANG module defines the generic parameters for LISP. 333 The module can be extended by vendors to define vendor-specific 334 LISP parameters and policies. 336 Copyright (c) 2018 IETF Trust and the persons identified as 337 authors of the code. All rights reserved. 339 Redistribution and use in source and binary forms, with or 340 without modification, is permitted pursuant to, and subject 341 to the license terms contained in, the Simplified BSD License 342 set forth in Section 4.c of the IETF Trust's Legal Provisions 343 Relating to IETF Documents 344 (http://trustee.ietf.org/license-info). 346 This version of this YANG module is part of RFC XXXX; see 347 the RFC itself for full legal notices. 348 "; 350 reference "RFC XXXX"; 352 revision 2021-02-22 { 353 description 354 "Initial revision."; 355 reference 356 "https://tools.ietf.org/html/rfc6830"; 357 } 359 /* 360 * Identity definitions 361 */ 362 identity lisp { 363 base "rt:control-plane-protocol"; 364 description "LISP protocol."; 365 reference 366 "RFC 6830: The Locator/ID Separation Protocol (LISP)."; 367 } 369 identity lisp-role { 370 description 371 "LISP router role."; 372 } 373 identity itr { 374 base lisp-role; 375 description 376 "LISP ITR."; 378 } 379 identity pitr { 380 base lisp-role; 381 description 382 "LISP PITR."; 383 } 384 identity etr { 385 base lisp-role; 386 description 387 "LISP ETR."; 388 } 389 identity petr { 390 base lisp-role; 391 description 392 "LISP PETR."; 393 } 395 identity mapping-system { 396 description 397 "Mapping System interface"; 398 } 399 identity single-node-mapping-system { 400 base mapping-system; 401 description 402 "logically singular Map Server"; 403 } 405 identity map-reply-act { 406 description 407 "Defines the lisp map-cache ACT type"; 408 reference 409 "https://www.iana.org/assignments/lisp-parameters" 410 + "/lisp-parameters.xhtml#lisp-act-value"; 411 } 412 identity no-action { 413 base map-reply-act; 414 description 415 "Mapping is kept alive and no encapsulation 416 occurs."; 417 } 418 identity natively-forward { 419 base map-reply-act; 420 description 421 "Matching packets are not encapsulated or 422 dropped but natively forwarded."; 423 } 424 identity send-map-request { 425 base map-reply-act; 426 description 427 "Matching packets invoke Map-Requests."; 428 } 429 identity drop-no-reason { 430 base map-reply-act; 431 description 432 "Matching packets are dropped."; 433 } 434 identity drop-policy-denied { 435 base map-reply-act; 436 description 437 "Matching packets are dropped (due to policy)."; 438 } 439 identity drop-auth-failure { 440 base map-reply-act; 441 description 442 "Matching packets are dropped (due to authentication 443 failure)."; 444 } 446 identity auth-algorithm { 447 description 448 "Base identity for the authentication mechanisms supported by 449 LISP."; 450 reference 451 "https://www.iana.org/assignments/lisp-parameters" 452 + "/lisp-parameters.xhtml#lisp-key-id-numbers"; 453 } 454 identity no-auth-algorithm { 455 base auth-algorithm; 456 description 457 "No authentication."; 458 } 459 identity hmac-sha-1-96-none { 460 base auth-algorithm; 461 description 462 "MAC = HMAC-SHA-1-96 (RFC2404), KDF = none"; 463 } 464 identity hmac-sha-256-128-none { 465 base auth-algorithm; 466 description 467 "MAC = HMAC-SHA-256-128 (RFC4868), KDF = none"; 468 } 469 identity hmac-sha-256-128-HKDF-SHA2562 { 470 base auth-algorithm; 471 description 472 "MAC = HMAC-SHA-256-128, KDF = HKDF-SHA2562 (RFC4868)"; 473 } 474 typedef mapping-system-ref { 475 type identityref { 476 base mapping-system; 477 } 478 description 479 "Mapping System reference"; 480 } 482 typedef lisp-role-ref { 483 type identityref { 484 base lisp-role; 485 } 486 description 487 "LISP role reference"; 488 } 489 typedef map-reply-action { 490 type identityref { 491 base map-reply-act; 492 } 493 description 494 "Map-Reply action reference"; 495 } 496 typedef eid-id { 497 type string { 498 pattern '[a-zA-Z0-9\-_.:]*'; 499 } 500 description 501 "Type encoding of lisp-addresses to be generally used in EID 502 keyed lists."; 503 } 504 typedef auth-algorithm-type { 505 type identityref { 506 base auth-algorithm; 507 } 508 description 509 "Authentication algorithm reference"; 510 } 511 typedef xtr-id-type { 512 type binary { 513 length "16"; 514 } 515 description 516 "128-bit xTR identifier."; 517 } 519 grouping locator-properties { 520 description 521 "Properties of a RLOC"; 523 leaf priority { 524 type uint8; 525 description 526 "Locator priority."; 527 } 528 leaf weight { 529 type uint8; 530 description 531 "Locator weight."; 532 } 533 leaf multicast-priority { 534 type uint8; 535 description 536 "Locator's multicast priority"; 537 } 538 leaf multicast-weight { 539 type uint8; 540 description 541 "Locator's multicast weight"; 542 } 543 } 545 grouping locators-grouping { 546 description 547 "Grouping that defines a list of LISP locators."; 548 list locator { 549 key "locator-id"; 550 description 551 "List of routing locators"; 552 leaf locator-id { 553 type string { 554 length "1..64"; 555 pattern '[a-zA-Z0-9\-_.:]*'; 556 } 557 description 558 "Locator id"; 559 } 560 container locator-address { 561 uses lisp-at:lisp-address; 562 description 563 "The locator address provided in LISP canonincal 564 address format."; 565 } 566 uses locator-properties; 567 } 569 } 570 grouping local-locators-grouping { 571 description 572 "Grouping that defines a list of LISP locators."; 573 list interface { 574 key "interface-ref"; 575 description 576 "The address type of the locator"; 577 leaf interface-ref { 578 type if:interface-ref; 579 description 580 "The name of the interface supporting the locator."; 581 } 582 uses locator-properties; 583 } 584 } 586 grouping mapping { 587 description 588 "Grouping that defines a LISP mapping."; 589 container eid { 590 uses lisp-at:lisp-address; 591 description 592 "End-host Identifier (EID) to be mapped to a list of 593 locators"; 594 } 595 leaf time-to-live { 596 type uint32; 597 units minutes; 598 description 599 "Mapping validity period in minutes (as per RF6830)."; 600 } 601 leaf creation-time { 602 type yang:date-and-time; 603 config false; 604 description 605 "Time when the mapping was created."; 606 } 607 leaf authoritative { 608 type bits { 609 bit A { 610 description 611 "Authoritative bit."; 612 } 613 } 614 description 615 "Bit that indicates if mapping comes from an 616 authoritative source."; 617 } 618 leaf static { 619 type boolean; 620 default "false"; 621 description 622 "This leaf should be true if the mapping is static."; 623 } 624 choice locator-list { 625 description 626 "list of locartors are either negative, or positive."; 627 case negative-mapping { 628 leaf map-reply-action { 629 type map-reply-action; 630 description 631 "Forwarding action for a negative mapping."; 632 } 633 } 634 case positive-mapping { 635 container rlocs { 636 uses locators-grouping; 637 description 638 "List of locators for a positive mapping."; 639 } 640 } 641 } 642 } 644 grouping mappings { 645 description 646 "Grouping that defines a list of LISP mappings."; 647 list vpn { 648 key "instance-id"; 649 description 650 "VPN to which the mappings belong."; 651 leaf instance-id { 652 type leafref { 653 path "/rt:routing/rt:control-plane-protocols" 654 + "/rt:control-plane-protocol/lisp:lisp" 655 + "/lisp:vpns/lisp:vpn" 656 + "/lisp:instance-id"; 657 } 658 description 659 "VPN identifier."; 660 } 661 container mappings { 662 description 663 "Mappings within the VPN."; 664 list mapping { 665 key "eid-id"; 666 description 667 "List of EID to RLOCs mappings."; 668 leaf eid-id { 669 type eid-id; 670 description 671 "Id that uniquely identifies a mapping."; 672 } 673 uses mapping; 674 } 675 } 676 } 677 } 679 grouping auth-key { 680 description "Grouping that defines authentication keys."; 681 container authentication-keys { 682 description "Multiple authentication keys can be defined."; 683 list authentication-key { 684 key "auth-key-id"; 685 description 686 "Authentication key parameters."; 687 leaf auth-key-id { 688 type string { 689 pattern '[a-zA-Z0-9\-_.:]*'; 690 } 691 description 692 "Identifier of the authentication key."; 693 } 694 leaf-list auth-algorithm-id { 695 type lisp:auth-algorithm-type; 696 description 697 "Authentication algorithm used with the key."; 698 } 699 leaf auth-key-value { 700 type string; 701 description 702 "Clear text authentication key."; 703 } 704 } 705 } 706 } 708 augment "/rt:routing/rt:control-plane-protocols" 709 + "/rt:control-plane-protocol" { 710 when "derived-from-or-self(rt:type, 'lisp:lisp')" { 711 description 712 "This augmentation is only valid for a control-plane protocol 713 instance of LISP."; 715 } 716 description "LISP protocol ietf-routing module 717 control-plane-protocol augmentation."; 719 container lisp { 720 description 721 "Parameters for the LISP subsystem."; 723 container locator-sets { 724 description 725 "Container that defines a named locator set which can be 726 referenced elsewhere."; 727 list locator-set { 728 key "locator-set-name"; 729 description 730 "Multiple locator sets can be defined."; 731 leaf locator-set-name { 732 type string { 733 length "1..64"; 734 pattern '[a-zA-Z0-9\-_.:]*'; 735 } 736 description 737 "Locator set name"; 738 } 739 choice locator-type { 740 description 741 "Locator sets can be based on local interfaces, or 742 general locators."; 743 case local-interface { 744 uses local-locators-grouping; 745 description 746 "List of locators in this set based on local 747 interfaces."; 748 } 749 case general-locator { 750 uses locators-grouping; 751 description 752 "List of locators in this set based on 753 lisp-address."; 754 } 755 } 756 } 757 } 759 list lisp-role { 760 key lisp-role-type; 761 description 762 "List of lisp device roles such as MS, MR, ITR, 763 PITR, ETR or PETR."; 764 leaf lisp-role-type { 765 type lisp-role-ref; 766 description 767 "The type of LISP device - identity derived from the 768 'lisp-device' base identity."; 769 } 770 } 772 container lisp-router-id { 773 when "../lisp-role/lisp-role-type = 'lisp:itr' or 774 ../lisp-role/lisp-role-type = 'lisp:pitr' or 775 ../lisp-role/lisp-role-type = 'lisp:etr' or 776 ../lisp-role/lisp-role-type = 'lisp:petr'" { 777 description "Only when ITR, PITR, ETR or PETR."; 778 } 779 description 780 "Site-ID and xTR-ID of the device."; 781 leaf site-id { 782 type uint64; 783 description "Site ID"; 784 } 785 leaf xtr-id { 786 type lisp:xtr-id-type; 787 description "xTR ID"; 788 } 789 } 791 container vpns { 792 when "../lisp-role/lisp-role-type = 'lisp:itr' or 793 ../lisp-role/lisp-role-type = 'lisp:pitr' or 794 ../lisp-role/lisp-role-type = 'lisp:etr' or 795 ../lisp-role/lisp-role-type = 'lisp:petr'" { 796 description "Only when ITR, PITR, ETR or PETR."; 797 } 798 description "VPNs"; 799 list vpn { 800 key instance-id; 801 unique "iid-name"; 802 description "List of VPNs"; 804 leaf instance-id { 805 type lisp-at:instance-id-type; 806 description 807 "VPN identifier. The value 0 for instance-id must be 808 used for the default VRF."; 809 } 810 leaf iid-name { 811 type leafref { 812 path "/ni:network-instances/ni:network-instance" 813 + "/ni:name"; 814 } 815 mandatory true; 816 description 817 "Name of VPN (e.g. VRF) to which an instance-id is 818 bound. Each instance-id is bound to a different VPN"; 819 } 820 } 821 } 822 } 823 } 824 } 825 827 3. LISP-ITR Module 829 This module captures the configuration data model of a LISP ITR. The 830 model also captures some operational data elements. 832 3.1. Module Structure 834 module: ietf-lisp-itr 835 augment /rt:routing/rt:control-plane-protocols 836 /rt:control-plane-protocol/lisp:lisp: 837 +--rw itr! 838 +--rw rloc-probing! 839 | +--rw interval? uint16 840 | +--rw retries? uint8 841 | +--rw retries-interval? uint16 842 +--rw itr-rlocs? leafref 843 +--rw map-resolvers 844 | +--rw map-resolver* inet:ip-address 845 +--rw proxy-etrs 846 | +--rw proxy-etr-address* inet:ip-address 847 +--rw map-cache 848 +--ro size? uint32 849 +--ro limit? uint32 850 +--rw vpn* [instance-id] 851 +--rw instance-id leafref 852 +--rw mappings 853 +--rw mapping* [eid-id] 854 +--rw eid-id eid-id 855 +--rw eid 856 | +--rw address-type 857 | | lisp-address-family-ref 858 | +--rw (address)? 859 | +--:(no-address) 860 | | +--rw no-address? empty 861 | +--:(ipv4) 862 | | +--rw ipv4? 863 | | inet:ipv4-address 864 | +--:(ipv4-prefix) 865 | | +--rw ipv4-prefix? 866 | | inet:ipv4-prefix 867 | +--:(ipv6) 868 | | +--rw ipv6? 869 | | inet:ipv6-address 870 | +--:(ipv6-prefix) 871 | | +--rw ipv6-prefix? 872 | | inet:ipv6-prefix 873 | +--:(mac) 874 | | +--rw mac? 875 | | yang:mac-address 876 | +--:(distinguished-name) 877 | | +--rw distinguished-name? 878 | | distinguished-name-type 879 | +--:(as-number) 880 | | +--rw as-number? 881 | | inet:as-number 882 | +--:(null-address) 883 | | +--rw null-address 884 | | +--rw address? empty 885 | +--:(afi-list) 886 | | +--rw afi-list 887 | | +--rw address-list* simple-address 888 | +--:(instance-id) 889 | | +--rw instance-id 890 | | +--rw instance-id? instance-id-type 891 | | +--rw mask-length? uint8 892 | | +--rw address? simple-address 893 | +--:(as-number-lcaf) 894 | | +--rw as-number-lcaf 895 | | +--rw as? inet:as-number 896 | | +--rw address? simple-address 897 | +--:(application-data) 898 | | +--rw application-data 899 | | +--rw address? 900 | | | simple-address 901 | | +--rw protocol? uint8 902 | | +--rw ip-tos? int32 903 | | +--rw local-port-low? 904 | | | inet:port-number 905 | | +--rw local-port-high? 906 | | | inet:port-number 907 | | +--rw remote-port-low? 908 | | | inet:port-number 909 | | +--rw remote-port-high? 910 | | inet:port-number 911 | +--:(geo-coordinates) 912 | | +--rw geo-coordinates 913 | | +--rw latitude? bits 914 | | +--rw latitude-degrees? uint8 915 | | +--rw latitude-minutes? uint8 916 | | +--rw latitude-seconds? uint8 917 | | +--rw longitude? bits 918 | | +--rw longitude-degrees? uint16 919 | | +--rw longitude-minutes? uint8 920 | | +--rw longitude-seconds? uint8 921 | | +--rw altitude? int32 922 | | +--rw address? 923 | | simple-address 924 | +--:(nat-traversal) 925 | | +--rw nat-traversal 926 | | +--rw ms-udp-port? uint16 927 | | +--rw etr-udp-port? uint16 928 | | +--rw global-etr-rloc? 929 | | | simple-address 930 | | +--rw ms-rloc? 931 | | | simple-address 932 | | +--rw private-etr-rloc? 933 | | | simple-address 934 | | +--rw rtr-rlocs* 935 | | simple-address 936 | +--:(explicit-locator-path) 937 | | +--rw explicit-locator-path 938 | | +--rw hop* [hop-id] 939 | | +--rw hop-id string 940 | | +--rw address? simple-address 941 | | +--rw lrs-bits? bits 942 | +--:(source-dest-key) 943 | | +--rw source-dest-key 944 | | +--rw source? simple-address 945 | | +--rw dest? simple-address 946 | +--:(key-value-address) 947 | | +--rw key-value-address 948 | | +--rw key? simple-address 949 | | +--rw value? simple-address 950 | +--:(service-path) 951 | +--rw service-path 952 | +--rw service-path-id? 953 | | service-path-id-type 954 | +--rw service-index? uint8 955 +--rw time-to-live? uint32 956 +--ro creation-time? yang:date-and-time 957 +--rw authoritative? bits 958 +--rw static? boolean 959 +--rw (locator-list)? 960 +--:(negative-mapping) 961 | +--rw map-reply-action? map-reply-action 962 +--:(positive-mapping) 963 +--rw rlocs 964 +--rw locator* [locator-id] 965 +--rw locator-id string 966 +--rw locator-address 967 | +--rw address-type 968 | | lisp-address-family-ref 969 | +--rw (address)? 970 | +--:(no-address) 971 | | +--rw no-address? 972 | | empty 973 | +--:(ipv4) 974 | | +--rw ipv4? 975 | | inet:ipv4-address 976 | +--:(ipv4-prefix) 977 | | +--rw ipv4-prefix? 978 | | inet:ipv4-prefix 979 | +--:(ipv6) 980 | | +--rw ipv6? 981 | | inet:ipv6-address 982 | +--:(ipv6-prefix) 983 | | +--rw ipv6-prefix? 984 | | inet:ipv6-prefix 985 | +--:(mac) 986 | | +--rw mac? 987 | | yang:mac-address 988 | +--:(distinguished-name) 989 | | +--rw distinguished-name? 990 | | distinguished-name-type 991 | +--:(as-number) 992 | | +--rw as-number? 993 | | inet:as-number 994 | +--:(null-address) 995 | | +--rw null-address 996 | | +--rw address? empty 997 | +--:(afi-list) 998 | | +--rw afi-list 999 | | +--rw address-list* 1000 | | simple-address 1001 | +--:(instance-id) 1002 | | +--rw instance-id 1003 | | +--rw instance-id? 1004 | | | instance-id-type 1005 | | +--rw mask-length? uint8 1006 | | +--rw address? 1007 | | simple-address 1008 | +--:(as-number-lcaf) 1009 | | +--rw as-number-lcaf 1010 | | +--rw as? 1011 | | | inet:as-number 1012 | | +--rw address? 1013 | | simple-address 1014 | +--:(application-data) 1015 | | +--rw application-data 1016 | | +--rw address? 1017 | | | simple-address 1018 | | +--rw protocol? 1019 | | | uint8 1020 | | +--rw ip-tos? 1021 | | | int32 1022 | | +--rw local-port-low? 1023 | | | inet:port-number 1024 | | +--rw local-port-high? 1025 | | | inet:port-number 1026 | | +--rw remote-port-low? 1027 | | | inet:port-number 1028 | | +--rw remote-port-high? 1029 | | inet:port-number 1030 | +--:(geo-coordinates) 1031 | | +--rw geo-coordinates 1032 | | +--rw latitude? 1033 | | | bits 1034 | | +--rw latitude-degrees? 1035 | | | uint8 1036 | | +--rw latitude-minutes? 1037 | | | uint8 1038 | | +--rw latitude-seconds? 1039 | | | uint8 1040 | | +--rw longitude? 1041 | | | bits 1042 | | +--rw longitude-degrees? 1043 | | | uint16 1044 | | +--rw longitude-minutes? 1045 | | | uint8 1046 | | +--rw longitude-seconds? 1047 | | | uint8 1048 | | +--rw altitude? 1049 | | | int32 1050 | | +--rw address? 1051 | | simple-address 1052 | +--:(nat-traversal) 1053 | | +--rw nat-traversal 1054 | | +--rw ms-udp-port? 1055 | | | uint16 1056 | | +--rw etr-udp-port? 1057 | | | uint16 1058 | | +--rw global-etr-rloc? 1059 | | | simple-address 1060 | | +--rw ms-rloc? 1061 | | | simple-address 1062 | | +--rw private-etr-rloc? 1063 | | | simple-address 1064 | | +--rw rtr-rlocs* 1065 | | simple-address 1066 | +--:(explicit-locator-path) 1067 | | +--rw explicit-locator-path 1068 | | +--rw hop* [hop-id] 1069 | | +--rw hop-id 1070 | | | string 1071 | | +--rw address? 1072 | | | simple-address 1073 | | +--rw lrs-bits? bits 1074 | +--:(source-dest-key) 1075 | | +--rw source-dest-key 1076 | | +--rw source? 1077 | | | simple-address 1078 | | +--rw dest? 1079 | | simple-address 1080 | +--:(key-value-address) 1081 | | +--rw key-value-address 1082 | | +--rw key? 1083 | | | simple-address 1084 | | +--rw value? 1085 | | simple-address 1086 | +--:(service-path) 1087 | +--rw service-path 1088 | +--rw service-path-id? 1089 | | service-path-id-type 1090 | +--rw service-index? 1091 | uint8 1092 +--rw priority? uint8 1093 +--rw weight? uint8 1094 +--rw multicast-priority? uint8 1095 +--rw multicast-weight? uint8 1097 3.2. Module Definition 1099 file "ietf-lisp-itr@2019-02-23.yang" 1100 module ietf-lisp-itr { 1101 yang-version 1.1; 1103 namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-itr"; 1105 prefix lisp-itr; 1107 // RFC Ed.: replace occurrences of XXXX with actual RFC number 1108 // and remove this note 1109 import ietf-lisp { 1110 prefix lisp; 1111 reference "RFC XXXX: LISP YANG model"; 1112 } 1113 import ietf-inet-types { 1114 prefix inet; 1115 reference "RFC 6991: Common YANG Data Types"; 1116 } 1117 import ietf-routing { 1118 prefix "rt"; 1119 reference 1120 "RFC 8349: A YANG Data Model for Routing Management 1121 (NMDA version)"; 1122 } 1124 organization 1125 "IETF LISP (Locator/ID Separation Protocol) Working Group"; 1126 contact 1127 "WG Web: 1128 WG List: 1130 Editor: Vina Ermagan 1131 1133 Editor: Alberto Rodriguez-Natal 1134 1136 Editor: Reshad Rahman 1137 "; 1138 description 1139 "This YANG module defines the generic parameters for a LISP 1140 ITR. The module can be extended by vendors to define 1141 vendor-specific parameters and policies. 1143 Copyright (c) 2018 IETF Trust and the persons identified as 1144 authors of the code. All rights reserved. 1146 Redistribution and use in source and binary forms, with or 1147 without modification, is permitted pursuant to, and subject 1148 to the license terms contained in, the Simplified BSD License 1149 set forth in Section 4.c of the IETF Trust's Legal Provisions 1150 Relating to IETF Documents 1151 (http://trustee.ietf.org/license-info). 1153 This version of this YANG module is part of RFC XXXX; see 1154 the RFC itself for full legal notices. 1155 "; 1157 reference "RFC XXXX"; 1159 revision 2019-02-23 { 1160 description 1161 "Initial revision."; 1162 reference 1163 "https://tools.ietf.org/html/rfc6830"; 1164 } 1165 augment "/rt:routing/rt:control-plane-protocols" 1166 + "/rt:control-plane-protocol/lisp:lisp" { 1167 when "lisp:lisp-role/lisp:lisp-role-type = 'lisp:itr' or 1168 lisp:lisp-role/lisp:lisp-role-type = 'lisp:pitr'" { 1169 description 1170 "Augment is valid when LISP role type is ITR or PITR."; 1171 } 1172 description 1173 "This augments the LISP devices list with (P)ITR specific 1174 parameters."; 1175 container itr { 1176 presence "LISP (P)ITR operation enabled"; 1177 description 1178 "ITR parameters"; 1179 container rloc-probing { 1180 presence "RLOC probing active"; 1181 description 1182 "RLOC-probing parameters"; 1183 leaf interval { 1184 type uint16; 1185 units "seconds"; 1186 description 1187 "Interval in seconds for resending the probes"; 1188 } 1189 leaf retries { 1190 type uint8; 1191 description 1192 "Number of retries for sending the probes"; 1193 } 1194 leaf retries-interval { 1195 type uint16; 1196 units "seconds"; 1197 description 1198 "Interval in seconds between retries when sending probes. 1199 The action taken if all retries fail to receive is 1200 implementation specific."; 1201 } 1202 } 1203 leaf itr-rlocs { 1204 type leafref { 1205 path "/rt:routing/rt:control-plane-protocols" 1206 + "/rt:control-plane-protocol/lisp:lisp" 1207 + "/lisp:locator-sets/lisp:locator-set" 1208 + "/lisp:locator-set-name"; 1209 } 1210 description 1211 "Reference to a locator set that the (P)ITR includes in 1212 Map-Requests"; 1213 } 1214 container map-resolvers { 1215 description 1216 "Map-Resolvers that the (P)ITR uses."; 1217 leaf-list map-resolver { 1218 type inet:ip-address; 1219 description 1220 "Each Map-Resolver within the list of Map-Resolvers."; 1221 } 1222 } 1223 container proxy-etrs { 1224 when "../../lisp:lisp-role/lisp:lisp-role-type='lisp:itr'" { 1225 description 1226 "Container exists only when LISP role type is ITR"; 1227 } 1228 description 1229 "Proxy ETRs that the ITR uses."; 1230 leaf-list proxy-etr-address{ 1231 type inet:ip-address; 1232 description 1233 "Proxy ETR RLOC address."; 1234 } 1235 } 1236 container map-cache { 1237 leaf size { 1238 type uint32; 1239 config false; 1240 description 1241 "Current number of entries in the EID-to-RLOC map-cache"; 1243 } 1244 leaf limit { 1245 type uint32; 1246 config false; 1247 description 1248 "Maximum permissible number of entries in the EID-to-RLOC 1249 map-cache"; 1250 } 1252 uses lisp:mappings; 1253 description 1254 "EID to RLOCs mappings cache."; 1255 } 1256 } 1257 } 1258 } 1259 1261 4. LISP-ETR Module 1263 This module captures the configuration data model of a LISP ETR. The 1264 model also captures some operational data elements. 1266 4.1. Module Structure 1268 module: ietf-lisp-etr 1269 augment /rt:routing/rt:control-plane-protocols 1270 /rt:control-plane-protocol/lisp:lisp: 1271 +--rw etr! 1272 +--rw map-servers 1273 | +--rw map-server* [ms-address] 1274 | +--rw ms-address inet:ip-address 1275 | +--rw authentication-keys 1276 | +--rw authentication-key* [auth-key-id] 1277 | +--rw auth-key-id string 1278 | +--rw auth-algorithm-id* 1279 | | lisp:auth-algorithm-type 1280 | +--rw auth-key-value? string 1281 +--rw local-eids 1282 +--rw vpn* [instance-id] 1283 +--rw instance-id leafref 1284 +--rw eids 1285 +--rw local-eid* [eid-id] 1286 +--rw eid-id lisp:eid-id 1287 +--rw eid-address 1288 | +--rw address-type 1289 | | lisp-address-family-ref 1290 | +--rw (address)? 1291 | +--:(no-address) 1292 | | +--rw no-address? empty 1293 | +--:(ipv4) 1294 | | +--rw ipv4? 1295 | | inet:ipv4-address 1296 | +--:(ipv4-prefix) 1297 | | +--rw ipv4-prefix? 1298 | | inet:ipv4-prefix 1299 | +--:(ipv6) 1300 | | +--rw ipv6? 1301 | | inet:ipv6-address 1302 | +--:(ipv6-prefix) 1303 | | +--rw ipv6-prefix? 1304 | | inet:ipv6-prefix 1305 | +--:(mac) 1306 | | +--rw mac? 1307 | | yang:mac-address 1308 | +--:(distinguished-name) 1309 | | +--rw distinguished-name? 1310 | | distinguished-name-type 1311 | +--:(as-number) 1312 | | +--rw as-number? 1313 | | inet:as-number 1314 | +--:(null-address) 1315 | | +--rw null-address 1316 | | +--rw address? empty 1317 | +--:(afi-list) 1318 | | +--rw afi-list 1319 | | +--rw address-list* simple-address 1320 | +--:(instance-id) 1321 | | +--rw instance-id 1322 | | +--rw instance-id? instance-id-type 1323 | | +--rw mask-length? uint8 1324 | | +--rw address? simple-address 1325 | +--:(as-number-lcaf) 1326 | | +--rw as-number-lcaf 1327 | | +--rw as? inet:as-number 1328 | | +--rw address? simple-address 1329 | +--:(application-data) 1330 | | +--rw application-data 1331 | | +--rw address? 1332 | | | simple-address 1333 | | +--rw protocol? uint8 1334 | | +--rw ip-tos? int32 1335 | | +--rw local-port-low? 1336 | | | inet:port-number 1337 | | +--rw local-port-high? 1338 | | | inet:port-number 1339 | | +--rw remote-port-low? 1340 | | | inet:port-number 1341 | | +--rw remote-port-high? 1342 | | inet:port-number 1343 | +--:(geo-coordinates) 1344 | | +--rw geo-coordinates 1345 | | +--rw latitude? bits 1346 | | +--rw latitude-degrees? uint8 1347 | | +--rw latitude-minutes? uint8 1348 | | +--rw latitude-seconds? uint8 1349 | | +--rw longitude? bits 1350 | | +--rw longitude-degrees? uint16 1351 | | +--rw longitude-minutes? uint8 1352 | | +--rw longitude-seconds? uint8 1353 | | +--rw altitude? int32 1354 | | +--rw address? 1355 | | simple-address 1356 | +--:(nat-traversal) 1357 | | +--rw nat-traversal 1358 | | +--rw ms-udp-port? uint16 1359 | | +--rw etr-udp-port? uint16 1360 | | +--rw global-etr-rloc? 1361 | | | simple-address 1362 | | +--rw ms-rloc? 1363 | | | simple-address 1364 | | +--rw private-etr-rloc? 1365 | | | simple-address 1366 | | +--rw rtr-rlocs* 1367 | | simple-address 1368 | +--:(explicit-locator-path) 1369 | | +--rw explicit-locator-path 1370 | | +--rw hop* [hop-id] 1371 | | +--rw hop-id string 1372 | | +--rw address? simple-address 1373 | | +--rw lrs-bits? bits 1374 | +--:(source-dest-key) 1375 | | +--rw source-dest-key 1376 | | +--rw source? simple-address 1377 | | +--rw dest? simple-address 1378 | +--:(key-value-address) 1379 | | +--rw key-value-address 1380 | | +--rw key? simple-address 1381 | | +--rw value? simple-address 1382 | +--:(service-path) 1383 | +--rw service-path 1384 | +--rw service-path-id? 1385 | | service-path-id-type 1386 | +--rw service-index? uint8 1387 +--rw rlocs? leafref 1388 +--rw record-ttl? uint32 1389 +--rw want-map-notify? boolean 1390 +--rw proxy-reply? boolean 1391 +--rw registration-interval? uint16 1393 4.2. Module Definition 1395 file "ietf-lisp-etr@2021-02-22.yang" 1396 module ietf-lisp-etr { 1397 yang-version 1.1; 1399 namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-etr"; 1401 prefix lisp-etr; 1403 // RFC Ed.: replace occurrences of XXXX with actual RFC number 1404 // and remove this note 1405 import ietf-lisp { 1406 prefix lisp; 1407 reference "RFC XXXX: LISP YANG model"; 1408 } 1409 import ietf-lisp-address-types { 1410 prefix lisp-at; 1411 reference "RFC XXXX: LISP YANG model"; 1412 } 1413 import ietf-inet-types { 1414 prefix inet; 1415 reference "RFC 6991: Common YANG Data Types"; 1416 } 1417 import ietf-routing { 1418 prefix "rt"; 1419 reference 1420 "RFC 8349: A YANG Data Model for Routing Management 1421 (NMDA version)"; 1422 } 1424 organization 1425 "IETF LISP (Locator/ID Separation Protocol) Working Group"; 1426 contact 1427 "WG Web: 1428 WG List: 1430 Editor: Vina Ermagan 1431 1433 Editor: Alberto Rodriguez-Natal 1434 1436 Editor: Reshad Rahman 1437 "; 1438 description 1439 "This YANG module defines the generic parameters for a LISP 1440 ETR. The module can be extended by vendors to define 1441 vendor-specific parameters and policies. 1443 Copyright (c) 2018 IETF Trust and the persons identified as 1444 authors of the code. All rights reserved. 1446 Redistribution and use in source and binary forms, with or 1447 without modification, is permitted pursuant to, and subject 1448 to the license terms contained in, the Simplified BSD License 1449 set forth in Section 4.c of the IETF Trust's Legal Provisions 1450 Relating to IETF Documents 1451 (http://trustee.ietf.org/license-info). 1453 This version of this YANG module is part of RFC XXXX; see 1454 the RFC itself for full legal notices. 1455 "; 1457 reference "RFC XXXX"; 1459 revision 2021-02-22 { 1460 description 1461 "Initial revision."; 1462 reference 1463 "https://tools.ietf.org/html/rfc6830"; 1464 } 1465 augment "/rt:routing/rt:control-plane-protocols" 1466 + "/rt:control-plane-protocol/lisp:lisp" { 1467 when "lisp:lisp-role/lisp:lisp-role-type = 'lisp:etr' or 1468 lisp:lisp-role/lisp:lisp-role-type = 'lisp:petr'" { 1469 description 1470 "Augment is valid when LISP device type is (P)ETR."; 1471 } 1472 description 1473 "This augments the LISP devices list with (P)ETR specific 1474 parameters."; 1475 container etr { 1476 presence "LISP (P)ETR operation enabled"; 1477 description 1478 "(P)ETR parameters."; 1480 container map-servers { 1481 when "../../lisp:lisp-role/lisp:lisp-role-type='lisp:etr'" { 1482 description 1483 "Container exists only when LISP device type is ETR."; 1485 } 1486 description 1487 "Map-Servers that the ETR uses."; 1488 list map-server { 1489 key "ms-address"; 1490 description 1491 "Each Map-Server within the list of Map-Servers."; 1492 leaf ms-address { 1493 type inet:ip-address; 1494 description 1495 "Map-Server address."; 1496 } 1497 uses lisp:auth-key; 1498 } 1499 } 1501 container local-eids { 1502 when "../../lisp:lisp-role/lisp:lisp-role-type='lisp:etr'" { 1503 description 1504 "Container exists only when LISP device type is ETR."; 1505 } 1506 description 1507 "VPNs served by the ETR."; 1508 list vpn { 1509 key "instance-id"; 1510 description 1511 "VPN for local-EIDs."; 1512 leaf instance-id { 1513 type leafref { 1514 path "/rt:routing/rt:control-plane-protocols" 1515 + "/rt:control-plane-protocol/lisp:lisp" 1516 + "/lisp:vpns/lisp:vpn" 1517 + "/lisp:instance-id"; 1518 } 1519 description 1520 "VPN identifier."; 1521 } 1522 container eids { 1523 description 1524 "EIDs served by the ETR."; 1525 list local-eid { 1526 key "eid-id"; 1527 description 1528 "List of local EIDs."; 1529 leaf eid-id { 1530 type lisp:eid-id; 1531 description 1532 "Unique id of local EID."; 1534 } 1535 container eid-address { 1536 uses lisp-at:lisp-address; 1537 description 1538 "EID address in generic LISP address format."; 1539 } 1540 leaf rlocs { 1541 type leafref { 1542 path "/rt:routing/rt:control-plane-protocols" 1543 + "/rt:control-plane-protocol/lisp:lisp" 1544 + "/lisp:locator-sets/lisp:locator-set" 1545 + "/lisp:locator-set-name"; 1546 } 1547 description 1548 "Locator set mapped to this local EID."; 1549 } 1550 leaf record-ttl { 1551 type uint32; 1552 units minutes; 1553 description 1554 "Validity period of the EID to RLOCs mapping 1555 provided in Map-Replies."; 1556 } 1557 leaf want-map-notify { 1558 type boolean; 1559 default "true"; 1560 description 1561 "Flag which if set in a Map-Register requests that 1562 a Map-Notify be sent in response."; 1563 } 1564 leaf proxy-reply { 1565 type boolean; 1566 default "false"; 1567 description 1568 "Flag which if set in a Map-Register requests that 1569 the Map-Server proxy Map-Replies for the ETR."; 1570 } 1571 leaf registration-interval { 1572 type uint16; 1573 units "seconds"; 1574 default "60"; 1575 description 1576 "Interval between consecutive Map-Registers."; 1577 } 1578 } 1579 } 1580 } 1581 } 1583 } 1584 } 1585 } 1586 1588 5. LISP-Map-Server Module 1590 This module captures the configuration data model of a LISP Map 1591 Server [RFC6833]. The model also captures some operational data 1592 elements. 1594 5.1. Module Structure 1596 module: ietf-lisp-mapserver 1597 augment /rt:routing/rt:control-plane-protocols 1598 /rt:control-plane-protocol/lisp:lisp: 1599 +--rw map-server! 1600 +--rw sites 1601 | +--rw site* [site-id] 1602 | +--rw site-id uint64 1603 | +--rw authentication-keys 1604 | | +--rw authentication-key* [auth-key-id] 1605 | | +--rw auth-key-id string 1606 | | +--rw auth-algorithm-id* 1607 | | | lisp:auth-algorithm-type 1608 | | +--rw auth-key-value? string 1609 | +--rw xtr-ids* [xtr-id] 1610 | +--rw xtr-id uint64 1611 | +--rw authentication-keys 1612 | +--rw authentication-key* [auth-key-id] 1613 | +--rw auth-key-id string 1614 | +--rw auth-algorithm-id* 1615 | | lisp:auth-algorithm-type 1616 | +--rw auth-key-value? string 1617 +--rw vpns 1618 | +--rw vpn* [instance-id] 1619 | +--rw instance-id lisp-at:instance-id-type 1620 | +--rw mappings 1621 | | +--rw mapping* [eid-id] 1622 | | +--rw eid-id lisp:eid-id 1623 | | +--rw eid-address 1624 | | | +--rw address-type 1625 | | | | lisp-address-family-ref 1626 | | | +--rw (address)? 1627 | | | +--:(no-address) 1628 | | | | +--rw no-address? empty 1629 | | | +--:(ipv4) 1630 | | | | +--rw ipv4? 1631 | | | | inet:ipv4-address 1632 | | | +--:(ipv4-prefix) 1633 | | | | +--rw ipv4-prefix? 1634 | | | | inet:ipv4-prefix 1635 | | | +--:(ipv6) 1636 | | | | +--rw ipv6? 1637 | | | | inet:ipv6-address 1638 | | | +--:(ipv6-prefix) 1639 | | | | +--rw ipv6-prefix? 1640 | | | | inet:ipv6-prefix 1641 | | | +--:(mac) 1642 | | | | +--rw mac? 1643 | | | | yang:mac-address 1644 | | | +--:(distinguished-name) 1645 | | | | +--rw distinguished-name? 1646 | | | | distinguished-name-type 1647 | | | +--:(as-number) 1648 | | | | +--rw as-number? 1649 | | | | inet:as-number 1650 | | | +--:(null-address) 1651 | | | | +--rw null-address 1652 | | | | +--rw address? empty 1653 | | | +--:(afi-list) 1654 | | | | +--rw afi-list 1655 | | | | +--rw address-list* simple-address 1656 | | | +--:(instance-id) 1657 | | | | +--rw instance-id 1658 | | | | +--rw instance-id? instance-id-type 1659 | | | | +--rw mask-length? uint8 1660 | | | | +--rw address? simple-address 1661 | | | +--:(as-number-lcaf) 1662 | | | | +--rw as-number-lcaf 1663 | | | | +--rw as? inet:as-number 1664 | | | | +--rw address? simple-address 1665 | | | +--:(application-data) 1666 | | | | +--rw application-data 1667 | | | | +--rw address? 1668 | | | | | simple-address 1669 | | | | +--rw protocol? uint8 1670 | | | | +--rw ip-tos? int32 1671 | | | | +--rw local-port-low? 1672 | | | | | inet:port-number 1673 | | | | +--rw local-port-high? 1674 | | | | | inet:port-number 1675 | | | | +--rw remote-port-low? 1676 | | | | | inet:port-number 1677 | | | | +--rw remote-port-high? 1678 | | | | inet:port-number 1679 | | | +--:(geo-coordinates) 1680 | | | | +--rw geo-coordinates 1681 | | | | +--rw latitude? bits 1682 | | | | +--rw latitude-degrees? uint8 1683 | | | | +--rw latitude-minutes? uint8 1684 | | | | +--rw latitude-seconds? uint8 1685 | | | | +--rw longitude? bits 1686 | | | | +--rw longitude-degrees? uint16 1687 | | | | +--rw longitude-minutes? uint8 1688 | | | | +--rw longitude-seconds? uint8 1689 | | | | +--rw altitude? int32 1690 | | | | +--rw address? 1691 | | | | simple-address 1692 | | | +--:(nat-traversal) 1693 | | | | +--rw nat-traversal 1694 | | | | +--rw ms-udp-port? uint16 1695 | | | | +--rw etr-udp-port? uint16 1696 | | | | +--rw global-etr-rloc? 1697 | | | | | simple-address 1698 | | | | +--rw ms-rloc? 1699 | | | | | simple-address 1700 | | | | +--rw private-etr-rloc? 1701 | | | | | simple-address 1702 | | | | +--rw rtr-rlocs* 1703 | | | | simple-address 1704 | | | +--:(explicit-locator-path) 1705 | | | | +--rw explicit-locator-path 1706 | | | | +--rw hop* [hop-id] 1707 | | | | +--rw hop-id string 1708 | | | | +--rw address? simple-address 1709 | | | | +--rw lrs-bits? bits 1710 | | | +--:(source-dest-key) 1711 | | | | +--rw source-dest-key 1712 | | | | +--rw source? simple-address 1713 | | | | +--rw dest? simple-address 1714 | | | +--:(key-value-address) 1715 | | | | +--rw key-value-address 1716 | | | | +--rw key? simple-address 1717 | | | | +--rw value? simple-address 1718 | | | +--:(service-path) 1719 | | | +--rw service-path 1720 | | | +--rw service-path-id? 1721 | | | | service-path-id-type 1722 | | | +--rw service-index? uint8 1723 | | +--rw site-id* uint64 1724 | | +--rw more-specifics-accepted? boolean 1725 | | +--rw mapping-expiration-timeout? int16 1726 | | +--ro first-registration-time? 1727 | | | yang:date-and-time 1728 | | +--ro last-registration-time? 1729 | | | yang:date-and-time 1730 | | +--rw mapping-records 1731 | | +--rw mapping-record* [xtr-id] 1732 | | +--rw xtr-id 1733 | | | lisp:xtr-id-type 1734 | | +--rw site-id? uint64 1735 | | +--rw eid 1736 | | | +--rw address-type 1737 | | | | lisp-address-family-ref 1738 | | | +--rw (address)? 1739 | | | +--:(no-address) 1740 | | | | +--rw no-address? 1741 | | | | empty 1742 | | | +--:(ipv4) 1743 | | | | +--rw ipv4? 1744 | | | | inet:ipv4-address 1745 | | | +--:(ipv4-prefix) 1746 | | | | +--rw ipv4-prefix? 1747 | | | | inet:ipv4-prefix 1748 | | | +--:(ipv6) 1749 | | | | +--rw ipv6? 1750 | | | | inet:ipv6-address 1751 | | | +--:(ipv6-prefix) 1752 | | | | +--rw ipv6-prefix? 1753 | | | | inet:ipv6-prefix 1754 | | | +--:(mac) 1755 | | | | +--rw mac? 1756 | | | | yang:mac-address 1757 | | | +--:(distinguished-name) 1758 | | | | +--rw distinguished-name? 1759 | | | | distinguished-name-type 1760 | | | +--:(as-number) 1761 | | | | +--rw as-number? 1762 | | | | inet:as-number 1763 | | | +--:(null-address) 1764 | | | | +--rw null-address 1765 | | | | +--rw address? empty 1766 | | | +--:(afi-list) 1767 | | | | +--rw afi-list 1768 | | | | +--rw address-list* 1769 | | | | simple-address 1770 | | | +--:(instance-id) 1771 | | | | +--rw instance-id 1772 | | | | +--rw instance-id? 1773 | | | | | instance-id-type 1774 | | | | +--rw mask-length? uint8 1775 | | | | +--rw address? 1776 | | | | simple-address 1777 | | | +--:(as-number-lcaf) 1778 | | | | +--rw as-number-lcaf 1779 | | | | +--rw as? inet:as-number 1780 | | | | +--rw address? simple-address 1781 | | | +--:(application-data) 1782 | | | | +--rw application-data 1783 | | | | +--rw address? 1784 | | | | | simple-address 1785 | | | | +--rw protocol? uint8 1786 | | | | +--rw ip-tos? int32 1787 | | | | +--rw local-port-low? 1788 | | | | | inet:port-number 1789 | | | | +--rw local-port-high? 1790 | | | | | inet:port-number 1791 | | | | +--rw remote-port-low? 1792 | | | | | inet:port-number 1793 | | | | +--rw remote-port-high? 1794 | | | | inet:port-number 1795 | | | +--:(geo-coordinates) 1796 | | | | +--rw geo-coordinates 1797 | | | | +--rw latitude? bits 1798 | | | | +--rw latitude-degrees? 1799 | | | | | uint8 1800 | | | | +--rw latitude-minutes? 1801 | | | | | uint8 1802 | | | | +--rw latitude-seconds? 1803 | | | | | uint8 1804 | | | | +--rw longitude? bits 1805 | | | | +--rw longitude-degrees? 1806 | | | | | uint16 1807 | | | | +--rw longitude-minutes? 1808 | | | | | uint8 1809 | | | | +--rw longitude-seconds? 1810 | | | | | uint8 1811 | | | | +--rw altitude? 1812 | | | | | int32 1813 | | | | +--rw address? 1814 | | | | simple-address 1815 | | | +--:(nat-traversal) 1816 | | | | +--rw nat-traversal 1817 | | | | +--rw ms-udp-port? 1818 | | | | | uint16 1819 | | | | +--rw etr-udp-port? 1820 | | | | | uint16 1821 | | | | +--rw global-etr-rloc? 1822 | | | | | simple-address 1823 | | | | +--rw ms-rloc? 1824 | | | | | simple-address 1825 | | | | +--rw private-etr-rloc? 1826 | | | | | simple-address 1827 | | | | +--rw rtr-rlocs* 1828 | | | | simple-address 1829 | | | +--:(explicit-locator-path) 1830 | | | | +--rw explicit-locator-path 1831 | | | | +--rw hop* [hop-id] 1832 | | | | +--rw hop-id string 1833 | | | | +--rw address? 1834 | | | | | simple-address 1835 | | | | +--rw lrs-bits? bits 1836 | | | +--:(source-dest-key) 1837 | | | | +--rw source-dest-key 1838 | | | | +--rw source? simple-address 1839 | | | | +--rw dest? simple-address 1840 | | | +--:(key-value-address) 1841 | | | | +--rw key-value-address 1842 | | | | +--rw key? simple-address 1843 | | | | +--rw value? simple-address 1844 | | | +--:(service-path) 1845 | | | +--rw service-path 1846 | | | +--rw service-path-id? 1847 | | | | service-path-id-type 1848 | | | +--rw service-index? uint8 1849 | | +--rw time-to-live? uint32 1850 | | +--ro creation-time? 1851 | | | yang:date-and-time 1852 | | +--rw authoritative? bits 1853 | | +--rw static? boolean 1854 | | +--rw (locator-list)? 1855 | | +--:(negative-mapping) 1856 | | | +--rw map-reply-action? 1857 | | | map-reply-action 1858 | | +--:(positive-mapping) 1859 | | +--rw rlocs 1860 | | +--rw locator* [locator-id] 1861 | | +--rw locator-id 1862 | | | string 1863 | | +--rw locator-address 1864 | | | +--rw address-type 1865 | | | | lisp-address-family-ref 1866 | | | +--rw (address)? 1867 | | | +--:(no-address) 1868 | | | | +--rw no-address? 1869 | | | | empty 1870 | | | +--:(ipv4) 1871 | | | | +--rw ipv4? 1872 | | | | inet:ipv4-address 1873 | | | +--:(ipv4-prefix) 1874 | | | | +--rw ipv4-prefix? 1875 | | | | inet:ipv4-prefix 1876 | | | +--:(ipv6) 1877 | | | | +--rw ipv6? 1878 | | | | inet:ipv6-address 1879 | | | +--:(ipv6-prefix) 1880 | | | | +--rw ipv6-prefix? 1881 | | | | inet:ipv6-prefix 1882 | | | +--:(mac) 1883 | | | | +--rw mac? 1884 | | | | yang:mac-address 1885 | | | +--:(distinguished-name) 1886 | | | | +--rw distinguished-name? 1887 | | | | distinguished-name-type 1888 | | | +--:(as-number) 1889 | | | | +--rw as-number? 1890 | | | | inet:as-number 1891 | | | +--:(null-address) 1892 | | | | +--rw null-address 1893 | | | | +--rw address? 1894 | | | | empty 1895 | | | +--:(afi-list) 1896 | | | | +--rw afi-list 1897 | | | | +--rw address-list* 1898 | | | | simple-address 1899 | | | +--:(instance-id) 1900 | | | | +--rw instance-id 1901 | | | | +--rw instance-id? 1902 | | | | | instance-id-type 1903 | | | | +--rw mask-length? 1904 | | | | | uint8 1905 | | | | +--rw address? 1906 | | | | simple-address 1907 | | | +--:(as-number-lcaf) 1908 | | | | +--rw as-number-lcaf 1909 | | | | +--rw as? 1910 | | | | | inet:as-number 1911 | | | | +--rw address? 1912 | | | | simple-address 1913 | | | +--:(application-data) 1914 | | | | +--rw application-data 1915 | | | | +--rw address? 1916 | | | | | simple-address 1917 | | | | +--rw protocol? 1918 | | | | | uint8 1919 | | | | +--rw ip-tos? 1920 | | | | | int32 1921 | | | | +--rw local-port-low? 1922 | | | | | inet:port-number 1923 | | | | +--rw local-port-high? 1924 | | | | | inet:port-number 1925 | | | | +--rw remote-port-low? 1926 | | | | | inet:port-number 1927 | | | | +--rw remote-port-high? 1928 | | | | inet:port-number 1929 | | | +--:(geo-coordinates) 1930 | | | | +--rw geo-coordinates 1931 | | | | +--rw latitude? 1932 | | | | | bits 1933 | | | | +--rw latitude-degrees? 1934 | | | | | uint8 1935 | | | | +--rw latitude-minutes? 1936 | | | | | uint8 1937 | | | | +--rw latitude-seconds? 1938 | | | | | uint8 1939 | | | | +--rw longitude? 1940 | | | | | bits 1941 | | | | +--rw longitude-degrees? 1942 | | | | | uint16 1943 | | | | +--rw longitude-minutes? 1944 | | | | | uint8 1945 | | | | +--rw longitude-seconds? 1946 | | | | | uint8 1947 | | | | +--rw altitude? 1948 | | | | | int32 1949 | | | | +--rw address? 1950 | | | | simple-address 1951 | | | +--:(nat-traversal) 1952 | | | | +--rw nat-traversal 1953 | | | | +--rw ms-udp-port? 1954 | | | | | uint16 1955 | | | | +--rw etr-udp-port? 1956 | | | | | uint16 1957 | | | | +--rw global-etr-rloc? 1958 | | | | | simple-address 1959 | | | | +--rw ms-rloc? 1960 | | | | | simple-address 1961 | | | | +--rw private-etr-rloc? 1962 | | | | | simple-address 1963 | | | | +--rw rtr-rlocs* 1964 | | | | simple-address 1965 | | | +--:(explicit-locator-path) 1966 | | | | +--rw explicit-locator-path 1967 | | | | +--rw hop* [hop-id] 1968 | | | | +--rw hop-id 1969 | | | | | string 1970 | | | | +--rw address? 1971 | | | | | simple-address 1972 | | | | +--rw lrs-bits? 1973 | | | | bits 1974 | | | +--:(source-dest-key) 1975 | | | | +--rw source-dest-key 1976 | | | | +--rw source? 1977 | | | | | simple-address 1978 | | | | +--rw dest? 1979 | | | | simple-address 1980 | | | +--:(key-value-address) 1981 | | | | +--rw key-value-address 1982 | | | | +--rw key? 1983 | | | | | simple-address 1984 | | | | +--rw value? 1985 | | | | simple-address 1986 | | | +--:(service-path) 1987 | | | +--rw service-path 1988 | | | +--rw service-path-id? 1989 | | | | service-path-id-type 1990 | | | +--rw service-index? 1991 | | | uint8 1992 | | +--rw priority? 1993 | | | uint8 1994 | | +--rw weight? 1995 | | | uint8 1996 | | +--rw multicast-priority? 1997 | | | uint8 1998 | | +--rw multicast-weight? 1999 | | uint8 2000 | +--ro counters 2001 | +--ro map-registers-in? yang:counter64 2002 | +--ro map-registers-in-auth-failed? yang:counter64 2003 | +--ro map-notify-records-out? yang:counter64 2004 | +--ro proxy-reply-records-out? yang:counter64 2005 | +--ro map-requests-forwarded-out? yang:counter64 2006 +--rw mapping-system-type? lisp:mapping-system-ref 2007 +--ro summary 2008 | +--ro number-configured-sites? uint32 2009 | +--ro number-registered-sites? uint32 2010 | +--ro af-datum 2011 | +--ro af-data* [address-type] 2012 | +--ro address-type 2013 | | lisp-at:lisp-address-family-ref 2014 | +--ro number-configured-eids? uint32 2015 | +--ro number-registered-eids? uint32 2016 +--ro counters 2017 +--ro map-registers-in? yang:counter64 2018 +--ro map-registers-in-auth-failed? yang:counter64 2019 +--ro map-notify-records-out? yang:counter64 2020 +--ro proxy-reply-records-out? yang:counter64 2021 +--ro map-requests-forwarded-out? yang:counter64 2023 5.2. Module Definition 2025 file "ietf-lisp-mapserver@2021-02-22.yang" 2026 module ietf-lisp-mapserver { 2027 yang-version 1.1; 2029 namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-mapserver"; 2031 prefix lisp-ms; 2033 // RFC Ed.: replace occurrences of XXXX with actual RFC number 2034 // and remove this note 2035 import ietf-lisp { 2036 prefix lisp; 2037 reference "RFC XXXX: LISP YANG model"; 2038 } 2039 import ietf-lisp-address-types { 2040 prefix lisp-at; 2041 reference "RFC XXXX: LISP YANG model"; 2042 } 2043 import ietf-yang-types { 2044 prefix yang; 2045 reference "RFC 6991: Common YANG Data Types"; 2046 } 2047 import ietf-routing { 2048 prefix "rt"; 2049 reference 2050 "RFC 8349: A YANG Data Model for Routing Management 2051 (NMDA version)"; 2052 } 2054 organization 2055 "IETF LISP (Locator/ID Separation Protocol) Working Group"; 2056 contact 2057 "WG Web: 2058 WG List: 2060 Editor: Vina Ermagan 2061 2063 Editor: Alberto Rodriguez-Natal 2064 2066 Editor: Reshad Rahman 2067 "; 2068 description 2069 "This YANG module defines the generic parameters for a LISP 2070 Map-Server. The module can be extended by vendors to define 2071 vendor-specific parameters and policies. 2073 Copyright (c) 2018 IETF Trust and the persons identified as 2074 authors of the code. All rights reserved. 2076 Redistribution and use in source and binary forms, with or 2077 without modification, is permitted pursuant to, and subject 2078 to the license terms contained in, the Simplified BSD License 2079 set forth in Section 4.c of the IETF Trust's Legal Provisions 2080 Relating to IETF Documents 2081 (http://trustee.ietf.org/license-info). 2083 This version of this YANG module is part of RFC XXXX; see 2084 the RFC itself for full legal notices. 2085 "; 2087 reference "RFC XXXX"; 2089 revision 2021-02-22 { 2090 description 2091 "Initial revision."; 2092 reference 2093 "https://tools.ietf.org/html/rfc6833"; 2094 } 2096 identity ms { 2097 base lisp:lisp-role; 2098 description 2099 "LISP Map-Server."; 2100 } 2102 grouping ms-counters { 2103 description "Grouping that defines map-server counters."; 2104 container counters { 2105 config false; 2106 description "Container for the counters"; 2108 leaf map-registers-in { 2109 type yang:counter64; 2110 description "Number of incoming Map-Register messages"; 2112 } 2114 leaf map-registers-in-auth-failed { 2115 type yang:counter64; 2116 description 2117 "Number of incoming Map-Register messages failed 2118 authentication"; 2119 } 2121 leaf map-notify-records-out { 2122 type yang:counter64; 2123 description 2124 "Number of outgoing Map-Notify records"; 2125 } 2127 leaf proxy-reply-records-out { 2128 type yang:counter64; 2129 description 2130 "Number of outgoing proxy Map-Reply records"; 2131 } 2133 leaf map-requests-forwarded-out { 2134 type yang:counter64; 2135 description 2136 "Number of outgoing Map-Requests forwarded to ETR"; 2137 } 2138 } 2139 } 2141 augment "/rt:routing/rt:control-plane-protocols" 2142 + "/rt:control-plane-protocol/lisp:lisp" { 2143 when "lisp:lisp-role/lisp:lisp-role-type = 'lisp-ms:ms'" { 2144 description 2145 "Augment is valid when LISP device type is Map-Server."; 2146 } 2147 description 2148 "This augments the LISP devices list with Map-Server 2149 specific parameters."; 2150 container map-server { 2151 presence "LISP Map-Server operation enabled"; 2152 description 2153 "Map-Server parameters."; 2154 container sites{ 2155 description 2156 "Sites to accept registrations from."; 2157 list site { 2158 key site-id; 2159 description 2160 "Site that can send registrations."; 2161 leaf site-id { 2162 type uint64; 2163 description "Site ID"; 2164 } 2165 uses lisp:auth-key; 2166 list xtr-ids { 2167 key xtr-id; 2168 description "xTR-ID specific configuration."; 2169 leaf xtr-id { 2170 type uint64; 2171 description "xTR ID"; 2172 } 2173 uses lisp:auth-key; 2174 } 2175 } 2176 } 2177 container vpns { 2178 description 2179 "VPNs for which the Map-Server accepts registrations."; 2180 list vpn { 2181 key "instance-id"; 2182 description 2183 "VPN instances in the Map-Server."; 2184 leaf instance-id { 2185 type lisp-at:instance-id-type; 2186 description 2187 "VPN identifier."; 2188 } 2189 container mappings { 2190 description 2191 "EIDs registered by device."; 2192 list mapping { 2193 key "eid-id"; 2194 description 2195 "List of EIDs registered by device."; 2196 leaf eid-id { 2197 type lisp:eid-id; 2198 description 2199 "Id of the EID registered."; 2200 } 2201 container eid-address { 2202 uses lisp-at:lisp-address; 2203 description 2204 "EID in generic LISP address format registered 2205 with the Map-Server."; 2206 } 2207 leaf-list site-id { 2208 type uint64; 2209 description "Site ID"; 2210 } 2211 leaf more-specifics-accepted { 2212 type boolean; 2213 default "false"; 2214 description 2215 "Flag indicating if more specific prefixes 2216 can be registered."; 2217 } 2218 leaf mapping-expiration-timeout { 2219 type int16; 2220 units "seconds"; 2221 default "180"; //3 times the mapregister int 2222 description 2223 "Time before mapping is expired if no new 2224 registrations are received."; 2225 } 2226 leaf first-registration-time { 2227 type yang:date-and-time; 2228 config false; 2229 description 2230 "Time at which the first registration for this 2231 EID was received"; 2232 } 2233 leaf last-registration-time { 2234 type yang:date-and-time; 2235 config false; 2236 description 2237 "Time at which the last registration for this EID 2238 was received"; 2239 } 2240 container mapping-records { 2241 description 2242 "Datastore of registered mappings."; 2243 list mapping-record { 2244 key xtr-id; 2245 description 2246 "Registered mapping."; 2247 leaf xtr-id { 2248 type lisp:xtr-id-type; 2249 description "xTR ID"; 2250 } 2251 leaf site-id { 2252 type uint64; 2253 description "Site ID"; 2254 } 2255 uses lisp:mapping; 2257 } 2258 } 2259 } 2260 } 2261 uses ms-counters; 2262 } 2263 } 2264 leaf mapping-system-type { 2265 type lisp:mapping-system-ref; 2266 description 2267 "A reference to the mapping system"; 2268 } 2270 container summary { 2271 config false; 2272 description "Summary state information"; 2274 leaf number-configured-sites { 2275 type uint32; 2276 description "Number of configured LISP sites"; 2277 } 2278 leaf number-registered-sites { 2279 type uint32; 2280 description "Number of registered LISP sites"; 2281 } 2282 container af-datum { 2283 description "Number of configured EIDs per each AF"; 2285 list af-data { 2286 key "address-type"; 2287 description "Number of configured EIDs for this AF"; 2288 leaf address-type { 2289 type lisp-at:lisp-address-family-ref; 2290 description "AF type"; 2291 } 2292 leaf number-configured-eids { 2293 type uint32; 2294 description "Number of configured EIDs for this AF"; 2295 } 2296 leaf number-registered-eids { 2297 type uint32; 2298 description "Number of registered EIDs for this AF"; 2299 } 2300 } 2301 } 2302 } 2303 uses ms-counters; 2304 } 2306 } 2307 } 2308 2310 6. LISP-Map-Resolver Module 2312 This module captures the configuration data model of a LISP Map 2313 Resolver [RFC6833]. The model also captures some operational data 2314 elements. 2316 6.1. Module Structure 2318 module: ietf-lisp-mapresolver 2319 augment /rt:routing/rt:control-plane-protocols 2320 /rt:control-plane-protocol/lisp:lisp: 2321 +--rw map-resolver! 2322 +--rw mapping-system-type? lisp:mapping-system-ref 2323 +--rw ms-address? inet:ip-address 2325 6.2. Module Definition 2327 file "ietf-lisp-mapresolver@2019-02-23.yang" 2328 module ietf-lisp-mapresolver { 2329 yang-version 1.1; 2331 namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-mapresolver"; 2333 prefix lisp-mr; 2335 // RFC Ed.: replace occurrences of XXXX with actual RFC number 2336 // and remove this note 2337 import ietf-lisp { 2338 prefix lisp; 2339 reference "RFC XXXX: LISP YANG model"; 2340 } 2341 import ietf-inet-types { 2342 prefix inet; 2343 reference "RFC 6991: Common YANG Data Types"; 2344 } 2345 import ietf-routing { 2346 prefix "rt"; 2347 reference 2348 "RFC 8349: A YANG Data Model for Routing Management 2349 (NMDA version)"; 2350 } 2352 organization 2353 "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."; 2413 leaf mapping-system-type { 2414 type lisp:mapping-system-ref; 2415 description 2416 "A reference to the mapping system"; 2417 } 2418 leaf ms-address { 2419 when "../mapping-system-type=" 2420 + "'lisp:single-node-mapping-system'"; 2421 type inet:ip-address; 2422 description 2423 "address to reach the Map Server when " 2424 + "lisp-mr:single-node-mapping-system is being used."; 2425 } 2426 } 2427 } 2428 } 2429 2431 7. LISP-Address-Types Module 2433 This module captures the various LISP address types, and is an 2434 essential building block used in other LISP modules. 2436 7.1. Module Definition 2438 file "ietf-lisp-address-types@2021-02-22.yang" 2439 module ietf-lisp-address-types { 2440 yang-version 1.1; 2442 namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-address-types"; 2444 prefix lisp-at; 2446 import ietf-inet-types { 2447 prefix inet; 2448 reference "RFC 6991: Common YANG Data Types"; 2449 } 2450 import ietf-yang-types { 2451 prefix yang; 2452 reference "RFC 6991: Common YANG Data Types"; 2453 } 2455 organization 2456 "IETF LISP (Locator/ID Separation Protocol) Working Group"; 2457 contact 2458 "WG Web: 2459 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."; 2548 } 2549 identity null-address-lcaf { 2550 base lcaf; 2551 description 2552 "Null body LCAF type."; 2553 } 2554 identity afi-list-lcaf { 2555 base lcaf; 2556 description 2557 "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."; 2741 } 2742 type inet:ipv6-prefix; 2743 description 2744 "IPv6 address."; 2745 } 2746 leaf mac { 2747 when "../address-type = 'lisp-at:mac-afi'" { 2748 description 2749 "When AFI is MAC."; 2750 } 2751 type yang:mac-address; 2752 description 2753 "MAC address."; 2754 } 2755 leaf distinguished-name { 2756 when "../address-type = 'lisp-at:distinguished-name-afi'" { 2757 description 2758 "When AFI is distinguished-name."; 2759 } 2760 type distinguished-name-type; 2761 description 2762 "Distinguished Name address."; 2763 } 2764 leaf as-number { 2765 when "../address-type = 'lisp-at:as-number-afi'" { 2766 description 2767 "When AFI is as-number."; 2768 } 2769 type inet:as-number; 2770 description 2771 "AS Number."; 2772 } 2773 container null-address { 2774 when "../address-type = 'lisp-at:null-address-lcaf'" { 2775 description 2776 "When LCAF type is null."; 2777 } 2778 description 2779 "Null body LCAF type"; 2780 leaf address { 2781 type empty; 2782 description 2783 "AFI address."; 2784 } 2785 } 2786 container afi-list { 2787 when "../address-type = 'lisp-at:afi-list-lcaf'" { 2788 description 2789 "When LCAF type is AFI-List."; 2790 } 2791 description 2792 "AFI-List LCAF type."; 2793 reference 2794 "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 2795 #section-4.16.1"; 2796 leaf-list address-list { 2797 type simple-address; 2798 description 2799 "List of AFI addresses."; 2800 } 2801 } 2802 container instance-id { 2803 when "../address-type = 'lisp-at:instance-id-lcaf'" { 2804 description 2805 "When LCAF type is Instance ID as per RFC8060."; 2806 } 2807 description 2808 "Instance ID LCAF type."; 2809 reference 2810 "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 2811 #section-4.2"; 2812 leaf instance-id { 2813 type instance-id-type; 2814 description 2815 "Instance ID value."; 2816 } 2817 leaf mask-length { 2818 type uint8; 2819 description 2820 "Mask length."; 2821 } 2822 leaf address { 2823 type simple-address; 2824 description 2825 "AFI address."; 2826 } 2827 } 2828 container as-number-lcaf { 2829 when "../address-type = 'lisp-at:as-number-lcaf'" { 2830 description 2831 "When LCAF type is AS-Number."; 2832 } 2833 description 2834 "AS Number LCAF type."; 2835 reference 2836 "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 2837 #section-4.3"; 2838 leaf as { 2839 type inet:as-number; 2840 description 2841 "AS number."; 2842 } 2843 leaf address { 2844 type simple-address; 2845 description 2846 "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."; 2943 } 2944 } 2945 description 2946 "Bit that selects between East and West longitude."; 2947 } 2948 leaf longitude-degrees { 2949 type uint16 { 2950 range "0 .. 180"; 2951 } 2952 description 2953 "Degrees of longitude."; 2954 } 2955 leaf longitude-minutes { 2956 type uint8 { 2957 range "0..59"; 2958 } 2959 description 2960 "Minutes of longitude."; 2961 } 2962 leaf longitude-seconds { 2963 type uint8 { 2964 range "0..59"; 2965 } 2966 description 2967 "Seconds of longitude."; 2968 } 2969 leaf altitude { 2970 type int32; 2971 description 2972 "Height relative to sea level in meters."; 2973 } 2974 leaf address { 2975 type simple-address; 2976 description 2977 "AFI address."; 2978 } 2979 } 2980 container nat-traversal { 2981 when "../address-type = 'lisp-at:nat-traversal-lcaf'" { 2982 description 2983 "When LCAF type is NAT-Traversal."; 2984 } 2985 description 2986 "NAT-Traversal LCAF type."; 2987 reference 2988 "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 2989 #section-4.6"; 2990 leaf ms-udp-port { 2991 type uint16; 2992 description 2993 "Map-Server UDP port (set to 4342)."; 2994 } 2995 leaf etr-udp-port { 2996 type uint16; 2997 description 2998 "ETR UDP port."; 2999 } 3000 leaf global-etr-rloc { 3001 type simple-address; 3002 description 3003 "Global ETR RLOC address."; 3004 } 3005 leaf ms-rloc { 3006 type simple-address; 3007 description 3008 "Map-Server RLOC address."; 3009 } 3010 leaf private-etr-rloc { 3011 type simple-address; 3012 description 3013 "Private ETR RLOC address."; 3014 } 3015 leaf-list rtr-rlocs { 3016 type simple-address; 3017 description 3018 "List of RTR RLOC addresses."; 3019 } 3020 } 3021 container explicit-locator-path { 3022 when "../address-type = 'lisp-at:explicit-locator-path-lcaf'" { 3023 description 3024 "When LCAF type type is Explicit Locator Path."; 3025 } 3026 description 3027 "Explicit Locator Path LCAF type."; 3028 reference 3029 "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 3030 #section-4.9"; 3031 list hop { 3032 key "hop-id"; 3033 ordered-by user; 3034 description 3035 "List of locator hops forming the explicit path."; 3036 leaf hop-id { 3037 type string { 3038 length "1..64"; 3039 pattern '[a-zA-Z0-9\-_.:]*'; 3040 } 3041 description 3042 "Unique identifier for the hop."; 3043 } 3044 leaf address { 3045 type simple-address; 3046 description 3047 "AFI address."; 3048 } 3049 leaf lrs-bits { 3050 type bits{ 3051 bit lookup { 3052 description 3053 "Lookup bit."; 3054 } 3055 bit rloc-probe { 3056 description 3057 "RLOC-probe bit."; 3058 } 3059 bit strict { 3060 description 3061 "Strict bit."; 3062 } 3063 } 3064 description 3065 "Flag bits per hop."; 3066 } 3067 } 3068 } 3069 container source-dest-key { 3070 when "../address-type = 'lisp-at:source-dest-key-lcaf'" { 3071 description 3072 "When LCAF type type is Source/Dest."; 3073 } 3074 description 3075 "Source/Dest LCAF type."; 3076 reference 3077 "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 3078 #section-4.11"; 3079 leaf source { 3080 type simple-address; 3081 description 3082 "Source address."; 3083 } 3084 leaf dest { 3085 type simple-address; 3086 description 3087 "Destination address."; 3088 } 3089 } 3090 container key-value-address { 3091 when "../address-type = 'lisp-at:key-value-address-lcaf'" { 3092 description 3093 "When LCAF type type is Key/Value Address."; 3094 } 3095 description 3096 "Key/Value Address LCAF type."; 3097 reference 3098 "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10 3099 #section-4.11"; 3100 leaf key { 3101 type simple-address; 3102 description 3103 "Address as Key."; 3104 } 3105 leaf value { 3106 type simple-address; 3107 description 3108 "Address as Value."; 3109 } 3110 } 3111 container service-path { 3112 when "../address-type = 'lisp-at:service-path-lcaf'" { 3113 description 3114 "When LCAF type service path identifier."; 3115 } 3116 description 3117 "Service Path LCAF type."; 3118 reference 3119 "http://tools.ietf.org/html/draft-ermagan-lisp-nsh-00"; 3120 leaf service-path-id { 3121 type service-path-id-type; 3122 description 3123 "Service path identifier for the path for NSH header"; 3124 } 3125 leaf service-index { 3126 type uint8; 3127 description 3128 "Service path index for NSH header"; 3129 } 3130 } 3131 } 3132 } 3133 } 3134 3136 7.2. Data Model examples 3138 This section presents some simple and illustrative examples on how to 3139 configure LISP. 3141 7.2.1. LISP protocol instance 3143 The following is an example configuration for a LISP protocol 3144 instance with the name "LISP1". There are also 2 VNIs configured. 3146 3147 3148 3150 3151 VRF-BLUE 3152 3153 true 3154 3155 3156 VRF-RED 3157 3158 true 3159 3160 3161 3162 3163 3164 3165 lisp:lisp 3166 3167 LISP1 3168 3169 3170 etr 3171 3172 3173 itr 3174 3175 3176 3177 1000 3178 VRF-BLUE 3179 3180 3181 2000 3182 VRF-RED 3183 3184 3185 3186 3187 3188 3189 3191 7.2.2. LISP ITR 3193 The following is an example configuration for ITR functionality under 3194 "LISP1". There are 2 Map-Resolvers configured. 3196 3197 3198 3199 3200 3201 3202 lisp:lisp 3203 3204 LISP1 3205 3206 3207 itr 3208 3209 3210 3211 2001:db8:203:0:113::1 3212 2001:db8:204:0:113::1 3213 3214 3215 3216 3217 3218 3219 3221 7.2.3. LISP ETR 3223 The following is an example configuration for ETR functionality under 3224 "LISP1". There are 2 Map-Servers and 2 local EIDs configured. 3226 3227 3228 3230 3231 VRF-BLUE 3232 3233 true 3234 3235 3236 VRF-RED 3237 3238 true 3239 3240 3241 3242 3243 3244 3245 lisp:lisp 3246 3247 LISP1 3248 3249 3250 etr 3251 3252 3253 1 3254 3255 3256 3257 1000 3258 VRF-BLUE 3259 3260 3261 2000 3262 VRF-RED 3263 3264 3265 3266 3267 3268 2001:db8:203:0:113::1 3269 3270 3271 key1 3272 3273 hmac-sha-256-128 3274 3275 *Kye^$$1#gb91U04zpa 3276 3277 3278 3279 3280 2001:db8:204:0:113::1 3281 3282 3283 key1 3284 3285 hmac-sha-256-128 3286 3287 *Kye^$$1#gb91U04zpa 3288 3289 3290 3291 3292 3293 3294 1000 3295 3296 3297 2001:db8:400:0:100::0 3298 3299 3301 lisp-at:ipv6-prefix-afi 3302 3303 2001:db8:400:0:100::/80 3304 3305 3306 3307 3308 3309 2000 3310 3311 3312 2001:db8:800:0:200::0 3313 3314 3316 lisp-at:ipv6-prefix-afi 3317 3318 2001:db8:800:0:200::/80 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 7.2.4. LISP Map-Server 3332 The following is an example configuration for Map-Server 3333 functionality under "LISP1". There are 2 mappings configured. 3335 3336 3337 3338 3339 3340 3341 lisp:lisp 3342 3343 LISP1 3344 3345 3346 3348 lisp-ms:ms 3349 3350 3351 3353 3354 3355 1 3356 3357 3358 key1 3359 3360 hmac-sha-256-128 3361 3362 *Kye^$$1#gb91U04zpa 3363 3364 3365 3366 3367 3368 3369 1000 3370 3371 3372 1 3373 3374 3376 lisp-at:ipv6-prefix-afi 3378 3379 2001:db8:400:0:100::/80 3380 3381 3382 3383 3384 3385 2000 3386 3387 3388 1 3389 3390 3392 lisp-at:ipv6-prefix-afi 3393 3394 2001:db8:800:0:200::/80 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3407 8. Acknowledgments 3409 The tree view and the YANG model shown in this document have been 3410 formated with the 'pyang' tool. 3412 9. IANA Considerations 3414 The IANA is requested to as assign a new namespace URI from the IETF 3415 XML registry. 3417 This document registers the following namesace URIs in the IETF XML 3418 registry [RFC3688]: 3420 -------------------------------------------------------------------- 3422 URI: urn:ietf:params:xml:ns:yang:ietf-lisp 3423 Registrant Contact: The IESG. 3425 XML: N/A, the requested URI is an XML namespace. 3427 -------------------------------------------------------------------- 3429 -------------------------------------------------------------------- 3431 URI: urn:ietf:params:xml:ns:yang:ietf-lisp-itr 3433 Registrant Contact: The IESG. 3435 XML: N/A, the requested URI is an XML namespace. 3437 -------------------------------------------------------------------- 3439 -------------------------------------------------------------------- 3441 URI: urn:ietf:params:xml:ns:yang:ietf-lisp-etr 3443 Registrant Contact: The IESG. 3445 XML: N/A, the requested URI is an XML namespace. 3447 -------------------------------------------------------------------- 3449 -------------------------------------------------------------------- 3451 URI: urn:ietf:params:xml:ns:yang:ietf-lisp-mapserver 3453 Registrant Contact: The IESG. 3455 XML: N/A, the requested URI is an XML namespace. 3457 -------------------------------------------------------------------- 3459 -------------------------------------------------------------------- 3461 URI: urn:ietf:params:xml:ns:yang:ietf-lisp-mapresolver 3463 Registrant Contact: The IESG. 3465 XML: N/A, the requested URI is an XML namespace. 3467 -------------------------------------------------------------------- 3469 -------------------------------------------------------------------- 3470 URI: urn:ietf:params:xml:ns:yang:ietf-lisp-address-types 3472 Registrant Contact: The IESG. 3474 XML: N/A, the requested URI is an XML namespace. 3476 -------------------------------------------------------------------- 3478 This document registers the following YANG modules in the "YANG 3479 Module Names" registry [RFC6020]: 3481 -------------------------------------------------------------------- 3483 Name: ietf-lisp 3485 Namespace: urn:ietf:params:xml:ns:yang:ietf-lisp 3487 Prefix: lisp 3489 Reference: RFC XXX 3491 -------------------------------------------------------------------- 3493 -------------------------------------------------------------------- 3495 Name: ietf-lisp-itr 3497 Namespace: urn:ietf:params:xml:ns:yang:ietf-lisp-itr 3499 Prefix: lisp-itr 3501 Reference: RFC XXX 3503 -------------------------------------------------------------------- 3505 -------------------------------------------------------------------- 3507 Name: ietf-lisp-etr 3509 Namespace: urn:ietf:params:xml:ns:yang:ietf-lisp-etr 3511 Prefix: lisp-etr 3513 Reference: RFC XXX 3515 -------------------------------------------------------------------- 3517 -------------------------------------------------------------------- 3518 Name: ietf-lisp-mapserver 3520 Namespace: urn:ietf:params:xml:ns:yang:ietf-lisp-mapserver 3522 Prefix: lisp-ms 3524 Reference: RFC XXX 3526 -------------------------------------------------------------------- 3528 -------------------------------------------------------------------- 3530 Name: ietf-lisp-mapresolver 3532 Namespace: urn:ietf:params:xml:ns:yang:ietf-lisp-mapresolver 3534 Prefix: lisp-mr 3536 Reference: RFC XXX 3538 -------------------------------------------------------------------- 3540 -------------------------------------------------------------------- 3542 Name: ietf-lisp-address-types 3544 Namespace: urn:ietf:params:xml:ns:yang:ietf-lisp-address-types 3546 Prefix: lisp-at 3548 Reference: RFC XXX 3550 -------------------------------------------------------------------- 3552 10. Security Considerations 3554 The YANG modules specified in this document define a schema for data 3555 that is designed to be accessed via network management protocols such 3556 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 3557 is the secure transport layer, and the mandatory-to-implement secure 3558 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 3559 is HTTPS, and the mandatory-to-implement secure transport is TLS 3560 [RFC8446]. 3562 The NETCONF access control model [RFC8341] provides the means to 3563 restrict access for particular NETCONF or RESTCONF users to a pre- 3564 configured subset of all available NETCONF or RESTCONF protocol 3565 operations and content. 3567 The security considerations of LISP control-plane [RFC6833] and LISP 3568 data-plane [RFC6830] as well as the LISP threat analysis [RFC7835] 3569 apply to this YANG model. 3571 There are a number of data nodes defined in this YANG module that are 3572 writable/creatable/deletable (i.e., config true, which is the 3573 default). These data nodes may be considered sensitive or vulnerable 3574 in some network environments. Write operations (e.g., edit-config) 3575 to these data nodes without proper protection can have a negative 3576 effect on network operations. These are the subtrees and data nodes 3577 and their sensitivity/vulnerability: 3579 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 3580 lisp:lisp/ 3582 Access to the locator-sets node may modify which interfaces are used 3583 for data and/or control traffic as well as affect the load balancing 3584 of data-plane traffic. Access to the lisp-role node may prevent the 3585 device from perform its intended data-plane and/or control-plane 3586 operation. Access to the router-id node allows to modify the unique 3587 identifier of the device, which may result in disruption of its LISP 3588 control-plane operation. Access to the vpn node may allow to 3589 redirect data-plane traffic to erroneous local or remote network 3590 instances. 3592 /rt:routing/rt:control-plane-protocols/rt:control-plane- 3593 protocol/lisp:lisp/lisp:map-server 3595 Access to the sites node can prevent authorized devices from 3596 registering mappings in the Map-Server and/or allow unauthorized 3597 devices to so. Access to the vpn node can result in corrupted 3598 mapping sate that may propagate across the LISP network, potentially 3599 resulting in forwarding of data-plane traffic to arbitrary 3600 destinations and general disruption of the data-plane operation. 3601 Access to mapping-system-type and/or ddt-mapping-system nodes may 3602 prevent the device to connect to the Mapping System infrastructure 3603 and consequentially to attract Map-Request messages. 3605 /rt:routing/rt:control-plane-protocols/rt:control-plane- 3606 protocol/lisp:lisp/lisp:map-resolver 3608 Access to mapping-system-type, ms-address and/or ddt-mapping-system 3609 nodes may prevent the device to connect to the Mapping System 3610 infrastructure and forward Map-Request messages. 3612 /rt:routing/rt:control-plane-protocols/rt:control-plane- 3613 protocol/lisp:lisp/lisp:itr 3614 Access to the rloc-probing node can increase the control-plane 3615 overhead in the device or affect the capability of the device to 3616 detect failures on the underlay. Access to the itr-rlocs node may 3617 prevent the device from getting Map-Reply messages. Access to the 3618 map-resolvers node can prevent the device from sending its Map- 3619 Request messages to valid Map-Resolvers. Access to the proxy-etrs 3620 nodes can affect the capability of the device to send data-plane 3621 traffic towards non-LISP destinations. Access to the map-cache node 3622 can result in forwarding of data-plane traffic to arbitrary 3623 destinations and general disruption of data-plane operation. 3625 /rt:routing/rt:control-plane-protocols/rt:control-plane- 3626 protocol/lisp:lisp/lisp:etr 3628 Access to the map-servers node can prevent the device from 3629 registering its local mappings into the Mapping System. Access to 3630 the local-eids node can disrupt data-plane operation on the device 3631 and/or result in the device registering corrupted mappings into the 3632 Mapping System. 3634 Some of the readable data nodes in this YANG module may be considered 3635 sensitive or vulnerable in some network environments. It is thus 3636 important to control read access (e.g., via get, get-config, or 3637 notification) to these data nodes. These are the subtrees and data 3638 nodes and their sensitivity/vulnerability: 3640 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 3641 lisp:lisp 3643 Access to the locator-sets node can expose the locators the device is 3644 using for its control and/or data operation. Access to the lisp-role 3645 node can disclose the LISP roles instantiated at the device which 3646 facilitates mounting attacks against the device. Access to the 3647 router-id node can expose the unique identifier of device which may 3648 allow a third party to track its control-plane operation and/or 3649 impersonate the device. Access to the vpn node can leak the local 3650 mapping between LISP Instance IDs and local network instances. 3652 /rt:routing/rt:control-plane-protocols/rt:control-plane- 3653 protocol/lisp:lisp/lisp:map-server 3655 Access to the sites node can expose the credentials used to register 3656 mappings and allow unauthorized devices to do so. Access to the vpn 3657 node can expose the mappings currently registered in the device, 3658 which has privacy implications. Access to the mapping-system-type 3659 node may reveal the Mapping System in use which can be used to mount 3660 attacks against the device and/or the Mapping System. Access to the 3661 summary and counters nodes may expose operational statistics of the 3662 device. 3664 /rt:routing/rt:control-plane-protocols/rt:control-plane- 3665 protocol/lisp:lisp/lisp:map-resolver 3667 Access to the mapping-system-type node may reveal the Mapping System 3668 in use which can be used to mount attacks against the device and/or 3669 the Mapping System. Access to the ms-address and/or ddt-mapping- 3670 system nodes can leak the information about the Mapping System 3671 infrastructure used by the device, which can be used to block 3672 communication and/or mount attacks against it. 3674 /rt:routing/rt:control-plane-protocols/rt:control-plane- 3675 protocol/lisp:lisp/lisp:itr 3677 Access to the rloc-probing node can expose if and how the device is 3678 using control-plane signaling to probe underlay locators. Access to 3679 the itr-rlocs node may disclose the addresses the device is using to 3680 receive Map-Reply messages. Access to the map-resolvers node can 3681 expose the Map-Resolvers used by the device, which can be used to 3682 mount attacks against the device and/or the Mapping System. Access 3683 to the proxy-etrs node can disclose the PETRs used by the device, 3684 which can be used to mount attacks against the device and/or PETRs. 3685 Access to the map-cache node can expose the mappings currently cached 3686 in the device, which has privacy implications. 3688 /rt:routing/rt:control-plane-protocols/rt:control-plane- 3689 protocol/lisp:lisp/lisp:etr 3691 Access to the map-servers node can expose the credentials used by the 3692 device to register mappings into the Mapping System allowing an 3693 unauthorized device to impersonate and register mappings on behalf 3694 the authorized device. Access to the local-eids node can expose the 3695 local EIDs currently being served by the device, which has privacy 3696 implications. 3698 11. Normative References 3700 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 3701 Requirement Levels", BCP 14, RFC 2119, 3702 DOI 10.17487/RFC2119, March 1997, 3703 . 3705 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 3706 DOI 10.17487/RFC3688, January 2004, 3707 . 3709 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 3710 the Network Configuration Protocol (NETCONF)", RFC 6020, 3711 DOI 10.17487/RFC6020, October 2010, 3712 . 3714 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 3715 and A. Bierman, Ed., "Network Configuration Protocol 3716 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 3717 . 3719 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 3720 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 3721 . 3723 [RFC6830] Farinacci, D., Fuller, V., Meyer, D., and D. Lewis, "The 3724 Locator/ID Separation Protocol (LISP)", RFC 6830, 3725 DOI 10.17487/RFC6830, January 2013, 3726 . 3728 [RFC6832] Lewis, D., Meyer, D., Farinacci, D., and V. Fuller, 3729 "Interworking between Locator/ID Separation Protocol 3730 (LISP) and Non-LISP Sites", RFC 6832, 3731 DOI 10.17487/RFC6832, January 2013, 3732 . 3734 [RFC6833] Fuller, V. and D. Farinacci, "Locator/ID Separation 3735 Protocol (LISP) Map-Server Interface", RFC 6833, 3736 DOI 10.17487/RFC6833, January 2013, 3737 . 3739 [RFC6836] Fuller, V., Farinacci, D., Meyer, D., and D. Lewis, 3740 "Locator/ID Separation Protocol Alternative Logical 3741 Topology (LISP+ALT)", RFC 6836, DOI 10.17487/RFC6836, 3742 January 2013, . 3744 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 3745 RFC 6991, DOI 10.17487/RFC6991, July 2013, 3746 . 3748 [RFC7835] Saucez, D., Iannone, L., and O. Bonaventure, "Locator/ID 3749 Separation Protocol (LISP) Threat Analysis", RFC 7835, 3750 DOI 10.17487/RFC7835, April 2016, 3751 . 3753 [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 3754 Management", RFC 8022, DOI 10.17487/RFC8022, November 3755 2016, . 3757 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 3758 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 3759 . 3761 [RFC8060] Farinacci, D., Meyer, D., and J. Snijders, "LISP Canonical 3762 Address Format (LCAF)", RFC 8060, DOI 10.17487/RFC8060, 3763 February 2017, . 3765 [RFC8111] Fuller, V., Lewis, D., Ermagan, V., Jain, A., and A. 3766 Smirnov, "Locator/ID Separation Protocol Delegated 3767 Database Tree (LISP-DDT)", RFC 8111, DOI 10.17487/RFC8111, 3768 May 2017, . 3770 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 3771 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 3772 May 2017, . 3774 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 3775 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 3776 . 3778 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 3779 Access Control Model", STD 91, RFC 8341, 3780 DOI 10.17487/RFC8341, March 2018, 3781 . 3783 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface 3784 Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, 3785 . 3787 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 3788 Routing Management (NMDA Version)", RFC 8349, 3789 DOI 10.17487/RFC8349, March 2018, 3790 . 3792 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 3793 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 3794 . 3796 [RFC8529] Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X. 3797 Liu, "YANG Data Model for Network Instances", RFC 8529, 3798 DOI 10.17487/RFC8529, March 2019, 3799 . 3801 Authors' Addresses 3803 Vina Ermagan 3804 Google 3805 USA 3807 Email: ermagan@gmail.com 3809 Alberto Rodriguez-Natal 3810 Cisco Systems 3811 San Jose, CA 3812 USA 3814 Email: natal@cisco.com 3816 Florin Coras 3817 Cisco Systems 3818 San Jose, CA 3819 USA 3821 Email: fcoras@cisco.com 3823 Carl Moberg 3824 Avassa 3826 Email: calle@avassa.io 3828 Reshad Rahman 3829 Canada 3831 Email: reshad@yahoo.com 3833 Albert Cabellos-Aparicio 3834 Technical University of Catalonia 3835 Barcelona 3836 Spain 3838 Email: acabello@ac.upc.edu 3839 Fabio Maino 3840 Cisco Systems 3841 San Jose, CA 3842 USA 3844 Email: fmaino@cisco.com