idnits 2.17.1 draft-ietf-lsr-isis-yang-augmentation-v1-01.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 : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (June 21, 2021) is 1040 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Unused Reference: 'RFC5329' is defined on line 1289, but no explicit reference was found in the text == Outdated reference: A later version (-26) exists of draft-ietf-lsr-flex-algo-15 ** Obsolete normative reference: RFC 5246 (Obsoleted by RFC 8446) ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) ** Obsolete normative reference: RFC 8919 (Obsoleted by RFC 9479) Summary: 3 errors (**), 0 flaws (~~), 3 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Internet A. Lindem 3 Internet-Draft S. Litkowski 4 Intended status: Standards Track Cisco Systems 5 Expires: December 23, 2021 Y. Qu 6 Futurewei 7 June 21, 2021 9 IS-IS YANG Model Augmentations for Additional Features - Version 1 10 draft-ietf-lsr-isis-yang-augmentation-v1-01 12 Abstract 14 This document defines YANG data modules augmenting the IETF IS-IS 15 YANG model to provide support for IS-IS Minimum Remaining Lifetime as 16 defined in RFC 7987, ,IS-IS Application-Specific Link Attributes as 17 defined in RFC 8919, and IS-IS Flexible Algorithm. 19 Status of This Memo 21 This Internet-Draft is submitted in full conformance with the 22 provisions of BCP 78 and BCP 79. 24 Internet-Drafts are working documents of the Internet Engineering 25 Task Force (IETF). Note that other groups may also distribute 26 working documents as Internet-Drafts. The list of current Internet- 27 Drafts is at https://datatracker.ietf.org/drafts/current/. 29 Internet-Drafts are draft documents valid for a maximum of six months 30 and may be updated, replaced, or obsoleted by other documents at any 31 time. It is inappropriate to use Internet-Drafts as reference 32 material or to cite them other than as "work in progress." 34 This Internet-Draft will expire on December 23, 2021. 36 Copyright Notice 38 Copyright (c) 2021 IETF Trust and the persons identified as the 39 document authors. All rights reserved. 41 This document is subject to BCP 78 and the IETF Trust's Legal 42 Provisions Relating to IETF Documents 43 (https://trustee.ietf.org/license-info) in effect on the date of 44 publication of this document. Please review these documents 45 carefully, as they describe your rights and restrictions with respect 46 to this document. Code Components extracted from this document must 47 include Simplified BSD License text as described in Section 4.e of 48 the Trust Legal Provisions and are provided without warranty as 49 described in the Simplified BSD License. 51 Table of Contents 53 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 54 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 55 1.2. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 3 56 2. YANG Module for IS-IS Minimum Remaining Lifetime . . . . . . 3 57 3. YANG Module for IS-IS Application-Specific Link Attributes . 5 58 4. YANG Module for IS-IS Flexible Algorithm . . . . . . . . . . 14 59 5. Security Considerations . . . . . . . . . . . . . . . . . . . 25 60 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26 61 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 27 62 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 27 63 8.1. Normative References . . . . . . . . . . . . . . . . . . 27 64 8.2. Informative References . . . . . . . . . . . . . . . . . 29 65 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29 67 1. Overview 69 YANG [RFC6020] [RFC7950] is a data definition language used to define 70 the contents of a conceptual data store that allows networked devices 71 to be managed using NETCONF [RFC6241]. YANG is proving relevant 72 beyond its initial confines, as bindings to other interfaces (e.g., 73 ReST) and encodings other than XML (e.g., JSON) are being defined. 74 Furthermore, YANG data models can be used as the basis for 75 implementation of other interfaces, such as CLI and programmatic 76 APIs. 78 This document defines YANG data modules augmenting the IETF IS-IS 79 YANG model [I-D.ietf-isis-yang-isis-cfg], which itself augments 80 [RFC8349], to provide support for configuration and operational state 81 for the following IS-IS features: 83 RFC7987: IS-IS Minimum Remaining Lifetime[RFC7987]. 85 RFC8919: IS-IS Application-Specific Link Attributes[RFC8919]. 87 RFCxxxx: IGP Flexible Algorithm [I-D.ietf-lsr-flex-algo]. 89 The augmentations defined in this document requires support for the 90 IS-IS base model[I-D.ietf-isis-yang-isis-cfg] which defines basic IS- 91 IS configuration and state. The IS-IS YANG model augments the ietf- 92 routing YANG model defined in [RFC8349]. 94 1.1. Requirements Language 96 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 97 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 98 "OPTIONAL" in this document are to be interpreted as described in BCP 99 14 [RFC2119] [RFC8174] when, and only when, they appear in all 100 capitals, as shown here. 102 1.2. Tree diagram 104 Tree diagrams used in this document follow the notation defined in 105 [RFC8340]. 107 2. YANG Module for IS-IS Minimum Remaining Lifetime 109 This document defines a YANG module for IS-IS Minimum Remaining 110 Lifetime as defined in [RFC7987]. It is an augmentation of the IS-IS 111 base model. 113 module: ietf-isis-remaining-lifetime 115 notifications: 116 +---n corrupt-remaining-lifetime 117 +--ro routing-protocol-name? -> /rt:routing 118 /control-plane-protocols 119 /control-plane-protocol/name 120 +--ro isis-level? level 121 +--ro lsp-id? isis:lsp-id 123 file "ietf-isis-remaining-lifetime@2021-01-05.yang" 124 module ietf-isis-remaining-lifetime { 125 yang-version 1.1; 126 namespace "urn:ietf:params:xml:ns:yang:ietf-isis-remaining-lifetime"; 128 prefix isis-remaining-lifetime; 130 import ietf-isis { 131 prefix "isis"; 132 } 134 organization 135 "IETF LSR - Link State Routing Working Group"; 137 contact 138 "WG Web: 139 WG List: 140 Author: Yingzhen Qu 141 142 Author: Acee Lindem 143 144 Author: Stephane Litkowski 145 "; 147 description 148 "This YANG module defines the configuration and operational 149 state for IS-IS Minimum Remaining Lifetime feature as defined 150 in RFC 7987. 152 Copyright (c) 2021 IETF Trust and the persons identified as 153 authors of the code. All rights reserved. 155 Redistribution and use in source and binary forms, with or 156 without modification, is permitted pursuant to, and subject 157 to the license terms contained in, the Simplified BSD License 158 set forth in Section 4.c of the IETF Trust's Legal Provisions 159 Relating to IETF Documents 160 (http://trustee.ietf.org/license-info). 162 This version of this YANG module is part of RFC XXXX; 163 see the RFC itself for full legal notices."; 165 reference "RFC XXXX"; 167 revision 2021-01-05 { 168 description 169 "Initial version"; 170 reference 171 "RFC XXXX: A YANG Data Model for IS-IS."; 172 } 174 notification corrupt-remaining-lifetime { 175 uses isis:notification-instance-hdr; 176 leaf lsp-id { 177 type isis:lsp-id; 178 description "LSP ID"; 179 } 180 description 181 "This notification is sent when the system 182 detects correpted lifetime of an LSP."; 183 reference "RFC 7987: IS-IS Minimum Remaining Lifetime"; 184 } 185 } 186 188 3. YANG Module for IS-IS Application-Specific Link Attributes 190 This document defines a YANG module for IS-IS Application-Specific 191 Link Attributes [RFC8919]. It is an augmentation of the IS-IS base 192 model. 194 module: ietf-isis-link-attr 195 augment /rt:routing/rt:control-plane-protocols 196 /rt:control-plane-protocol/isis:isis/isis:interfaces 197 /isis:interface: 198 +--rw isis-link-attr 199 +--rw (link-attr-op-mode) 200 +--:(legacy) 201 | +--rw legacy? empty 202 +--:(transition) 203 | +--rw transition? empty 204 +--:(app-specific) 205 +--rw app-specific? empty 206 augment /rt:routing/rt:control-plane-protocols 207 /rt:control-plane-protocol/isis:isis/isis:database 208 /isis:levels/isis:lsp/isis:extended-is-neighbor 209 /isis:neighbor/isis:instances/isis:instance: 210 +--ro application-specific-link-attributes-sub-tlvs 211 +--ro asla-sub-tlvs* [] 212 +--ro l-flag? boolean 213 +--ro sabm-length? uint8 214 +--ro r-flag? boolean 215 +--ro udabm-length? uint8 216 +--ro sabm 217 | +--ro sabm-bits* identityref 218 +--ro udabm 219 +--ro unknown-tlvs 220 +--ro unknown-tlv* [] 221 +--ro type? uint16 222 +--ro length? uint16 223 +--ro value? yang:hex-string 224 augment /rt:routing/rt:control-plane-protocols 225 /rt:control-plane-protocol/isis:isis/isis:database 226 /isis:levels/isis:lsp/isis:mt-is-neighbor/isis:neighbor 227 /isis:instances/isis:instance: 228 +--ro application-specific-link-attributes-sub-tlvs 229 +--ro asla-sub-tlvs* [] 230 +--ro l-flag? boolean 231 +--ro sabm-length? uint8 232 +--ro r-flag? boolean 233 +--ro udabm-length? uint8 234 +--ro sabm 235 | +--ro sabm-bits* identityref 236 +--ro udabm 237 +--ro unknown-tlvs 238 +--ro unknown-tlv* [] 239 +--ro type? uint16 240 +--ro length? uint16 241 +--ro value? yang:hex-string 242 augment /rt:routing/rt:control-plane-protocols 243 /rt:control-plane-protocol/isis:isis/isis:database 244 /isis:levels/isis:lsp: 245 +--ro application-specific-srlg-tlv 246 +--ro as-srlg-tlvs* [] 247 +--ro neighbor-system-id? isis:system-id 248 +--ro pseudo-node-id? uint8 249 +--ro l-flag? boolean 250 +--ro sabm-length? uint8 251 +--ro r-flag? boolean 252 +--ro udabm-length? uint8 253 +--ro sabm 254 | +--ro sabm-bits* identityref 255 +--ro udabm 256 +--ro length-of-sub-tlvs? uint8 257 +--ro link-id-sub-tlvs 258 | +--ro link-local-remote-ids 259 | | +--ro link-local-id? union 260 | | +--ro link-remote-id? union 261 | +--ro ipv4-interface-addr 262 | | +--ro ipv4-int-addr? inet:ipv4-address 263 | +--ro ipv4-neighbor-addr 264 | | +--ro ipv4-neighbor-addr? inet:ipv4-address 265 | +--ro ipv6-interface-addr 266 | | +--ro ipv6-int-addr? inet:ipv6-address 267 | +--ro ipv6-neighbor-addr 268 | +--ro ipv6-neighbor-addr? inet:ipv6-address 269 +--ro srlgs 270 +--ro srlg* uint32 272 file "ietf-isis-link-attr@2021-01-05.yang" 273 module ietf-isis-link-attr { 274 yang-version 1.1; 275 namespace "urn:ietf:params:xml:ns:yang:ietf-isis-link-attr"; 277 prefix isis-link-attr; 279 import ietf-inet-types { 280 prefix inet; 281 reference "RFC 6991 - Common YANG Data Types"; 282 } 283 import ietf-routing { 284 prefix "rt"; 285 } 287 import ietf-isis { 288 prefix "isis"; 289 } 291 organization 292 "IETF LSR - Link State Routing Working Group"; 294 contact 295 "WG Web: 296 WG List: 298 Author: Yingzhen Qu 299 300 Author: Acee Lindem 301 302 Author: Stephane Litkowski 303 "; 305 description 306 "This YANG module defines the configuration and operational 307 state for IS-IS application specific link attributes feature as 308 defined in RFC 8919. 310 This YANG model conforms to the Network Management 311 Datastore Architecture (NMDA) as described in RFC 8342. 313 Copyright (c) 2021 IETF Trust and the persons identified as 314 authors of the code. All rights reserved. 316 Redistribution and use in source and binary forms, with or 317 without modification, is permitted pursuant to, and subject 318 to the license terms contained in, the Simplified BSD License 319 set forth in Section 4.c of the IETF Trust's Legal Provisions 320 Relating to IETF Documents 321 (http://trustee.ietf.org/license-info). 323 This version of this YANG module is part of RFC XXXX; 324 see the RFC itself for full legal notices. 326 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL 327 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 328 'MAY', and 'OPTIONAL' in this document are to be interpreted as 329 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, 330 they appear in all capitals, as shown here."; 332 reference "RFC XXXX"; 334 revision 2021-01-05 { 335 description 336 "Initial version"; 337 reference 338 "RFC XXXX: A YANG Data Model for IS-IS."; 339 } 341 identity sabm-bit { 342 description 343 "Base identity for sabm bits."; 344 reference "RFC 8919: IS-IS Application-Specific Link Attributes"; 345 } 347 identity rsvp-te-bit { 348 base sabm-bit; 349 description 350 "R bit, RSVP-TE."; 351 } 353 identity sr-policy-bit { 354 base sabm-bit; 355 description 356 "S bit, Segment Routing Policy."; 357 } 359 identity lfa-bit { 360 base sabm-bit; 361 description 362 "F bit, Loop Free Alternate (LFA). Includes all LFA types."; 363 } 365 grouping application-identifier-bit-mask { 366 description 367 "Identification of the set of applications associated with link 368 attribute advertisements"; 370 leaf l-flag { 371 type boolean; 372 description 373 "Legacy Flag. When set, all of the applications 374 specified in the bit mask MUST use the legacy 375 advertisements."; 376 } 377 leaf sabm-length { 378 type uint8; 379 description 380 "Standard Application Identifier Bit Mask Length in 381 octets."; 382 } 383 leaf r-flag { 384 type boolean; 385 default false; 386 description 387 "Reserved."; 388 } 389 leaf udabm-length { 390 type uint8; 391 description 392 "User Defined Application Identifier Bit Mask Length 393 in octets."; 394 } 395 container sabm { 396 leaf-list sabm-bits { 397 type identityref { 398 base sabm-bit; 399 } 400 description 401 "SABM bits list. This list will contain 402 identities for the bits which are set in the 403 SABA bits."; 404 } 405 description 406 "Standard Application Identifier Bit Mask."; 407 } 408 container udabm { 409 description 410 "User Defined Application Identifier Bit Mask. 411 This container is to be augmented by user defined 412 applications."; 413 } 414 } 416 grouping application-specific-link-attributes-sub-tlv { 417 description 418 "Grouping for specification of the applications and 419 application-specific attribute values."; 421 container application-specific-link-attributes-sub-tlvs { 422 list asla-sub-tlvs { 423 uses application-identifier-bit-mask; 424 uses isis:unknown-tlvs; 425 description 426 "List of application specific link attributes sub-tlvs."; 427 } 428 description 429 "Application specific link attributes sub-tlv."; 430 } 431 } 433 grouping application-specific-srlg-tlv { 434 description 435 "Grouping of a TLV to advertise application-specific 436 SRLGs for a given link."; 437 container application-specific-srlg-tlv { 438 list as-srlg-tlvs { 439 leaf neighbor-system-id { 440 type isis:system-id; 441 description 442 "Neighbor System-ID."; 443 } 444 leaf pseudo-node-id { 445 type uint8; 446 description 447 "Pseudo-node ID."; 448 } 449 uses application-identifier-bit-mask; 450 leaf length-of-sub-tlvs { 451 type uint8; 452 description 453 "Length of sub-tlvs."; 454 } 456 container link-id-sub-tlvs { 457 description 458 "Link Identifier sub-TLVs."; 459 container link-local-remote-ids { 460 description 461 "Link local/remote identifier sub-tlv."; 462 leaf link-local-id { 463 type union { 464 type inet:ipv4-address; 465 type uint32; 466 } 467 description 468 "Local identifier of the link. 469 It could be an IPv4 address or a local identifier."; 470 } 471 leaf link-remote-id { 472 type union { 473 type inet:ipv4-address; 474 type uint32; 475 } 476 description 477 "Remote identifier of the link. 478 It could be an IPv4 address or a remotely learned 479 identifier."; 480 } 481 } 482 container ipv4-interface-addr { 483 leaf ipv4-int-addr { 484 type inet:ipv4-address; 485 description 486 "IPv4 address for the interface."; 487 } 488 description 489 "IPv4 interface address sub-tlv."; 490 } 491 container ipv4-neighbor-addr { 492 leaf ipv4-neighbor-addr { 493 type inet:ipv4-address; 494 description 495 "IPv4 address for a neighboring router 496 on this link."; 497 } 498 description 499 "IPv4 neighbor address sub-tlv."; 500 } 501 container ipv6-interface-addr { 502 leaf ipv6-int-addr { 503 type inet:ipv6-address; 504 description 505 "IPv6 address for the interface."; 506 } 507 description 508 "IPv6 interface address sub-tlv."; 509 } 510 container ipv6-neighbor-addr { 511 leaf ipv6-neighbor-addr { 512 type inet:ipv6-address; 513 description 514 "IPv6 address for a neighboring router 515 on this link."; 516 } 517 description 518 "IPv6 neighbor address sub-tlv."; 519 } 520 } 522 container srlgs { 523 description "List of SRLGs."; 524 leaf-list srlg { 525 type uint32; 526 description 527 "SRLG value of the link."; 528 } 529 } 531 description 532 "List of application specific SRLG tlvs."; 533 } 534 description 535 "Application specific SRLG tlv."; 536 } 537 } 539 augment "/rt:routing/" + 540 "rt:control-plane-protocols/rt:control-plane-protocol"+ 541 "/isis:isis/isis:interfaces/isis:interface" { 542 when "/rt:routing/rt:control-plane-protocols/"+ 543 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 544 description 545 "This augment ISIS routing protocol when used."; 546 } 547 description 548 "This augments ISIS protocol configuration 549 with TE attributes per application."; 551 container isis-link-attr { 552 choice link-attr-op-mode { 553 mandatory "true"; 554 leaf legacy { 555 type empty; 556 description 557 "Only send legacy advertisements."; 558 } 559 leaf transition { 560 type empty; 561 description 562 "Send both application-specific and legacy advertisements."; 563 } 564 leaf app-specific{ 565 type empty; 566 description 567 "Only send application-specific advertisements."; 568 } 569 description 570 "Link attributes mode"; 571 } 572 description 573 "Link attributes operation mode."; 574 } 575 } 577 /* TLV 22 */ 578 augment "/rt:routing/" + 579 "rt:control-plane-protocols/rt:control-plane-protocol"+ 580 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 581 "/isis:extended-is-neighbor/isis:neighbor"+ 582 "/isis:instances/isis:instance" { 583 when "/rt:routing/rt:control-plane-protocols/"+ 584 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 585 description 586 "This augment ISIS routing protocol when used"; 587 } 588 description 589 "This augments ISIS protocol LSDB TLV22."; 591 uses application-specific-link-attributes-sub-tlv; 592 } 594 /* TLV 223 */ 595 augment "/rt:routing/" + 596 "rt:control-plane-protocols/rt:control-plane-protocol"+ 597 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 598 "/isis:mt-is-neighbor/isis:neighbor"+ 599 "/isis:instances/isis:instance" { 600 when "/rt:routing/rt:control-plane-protocols/"+ 601 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 602 description 603 "This augment ISIS routing protocol when used"; 604 } 605 description 606 "This augments ISIS protocol LSDB TLV22."; 608 uses application-specific-link-attributes-sub-tlv; 609 } 611 /* application-specific SRLG TLV 238 */ 612 augment "/rt:routing/" + 613 "rt:control-plane-protocols/rt:control-plane-protocol"+ 614 "/isis:isis/isis:database/isis:levels/isis:lsp" { 615 when "/rt:routing/rt:control-plane-protocols/"+ 616 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 617 description 618 "This augment ISIS routing protocol when used"; 619 } 620 description 621 "This augments ISIS protocol LSDB router capability."; 623 uses application-specific-srlg-tlv; 624 } 625 } 626 628 4. YANG Module for IS-IS Flexible Algorithm 630 This document defines a YANG module for IS-IS Flexible Algorithm 631 [I-D.ietf-lsr-flex-algo]. It is an augmentation of the IS-IS base 632 model. 634 module: ietf-isis-flex-algo 635 augment /rt:routing/rt:control-plane-protocols 636 /rt:control-plane-protocol/isis:isis: 637 +--rw isis-flex-algo 638 +--rw flex-algo* [algo-number] 639 +--rw algo-number uint8 640 +--rw advertise-definition? boolean 641 +--rw admin-groups {te-types:extended-admin-groups, 642 te-types:named-extended-admin-groups}? 643 | +--rw exclude-admin-groups* -> /te:te/globals 644 /named-admin-groups 645 /named-admin-group/name 646 | +--rw include-any-admin-groups* -> /te:te/globals 647 /named-admin-groups 648 /named-admin-group/name 649 | +--rw include-all-admin-groups* -> /te:te/globals 650 /named-admin-groups 651 /named-admin-group/name 652 +--rw exclude-srlgs* -> /te:te/globals 653 /named-srlgs/named-srlg/name 654 {te-types:named-srlg-groups}? 655 +--rw fast-reroute? boolean 656 +--rw metric-type? identityref 657 +--rw microloop-avoidance? boolean 658 +--rw prefix-metric! 659 +--rw priority? uint8 660 augment /rt:routing/rt:control-plane-protocols 661 /rt:control-plane-protocol/isis:isis/isis:database 662 /isis:levels/isis:lsp/isis:router-capabilities: 663 +--ro fad-tlvs 664 +--ro fad-tlv* [] 665 +--ro flex-algo? uint8 666 +--ro metric-type? identityref 667 +--ro calc-type? uint8 668 +--ro priority? uint8 669 +--ro fa-ex-ag-sub-tlv 670 | +--ro extended-admin-groups* uint64 671 +--ro fa-in-any-ag-sub-tlv 672 | +--ro extended-admin-groups* uint64 673 +--ro fa-in-all-ag-sub-tlv 674 | +--ro extended-admin-groups* uint64 675 +--ro fad-flags-sub-tlv 676 | +--ro fad-flags* identityref 677 +--ro fa-ex-srlg-sub-tlv 678 | +--ro srlgs* uint32 679 +--ro unknown-tlvs 680 +--ro unknown-tlv* [] 681 +--ro type? uint16 682 +--ro length? uint16 683 +--ro value? yang:hex-string 684 augment /rt:routing/rt:control-plane-protocols 685 /rt:control-plane-protocol/isis:isis/isis:database 686 /isis:levels/isis:lsp/isis:extended-ipv4-reachability 687 /isis:prefixes: 688 +--ro fapm-sub-tlvs 689 +--ro fapm-sub-tlv* [] 690 +--ro flex-algo? uint8 691 +--ro metric? uint32 692 augment /rt:routing/rt:control-plane-protocols 693 /rt:control-plane-protocol/isis:isis/isis:database 694 /isis:levels/isis:lsp/isis:mt-extended-ipv4-reachability 695 /isis:prefixes: 696 +--ro fapm-sub-tlvs 697 +--ro fapm-sub-tlv* [] 698 +--ro flex-algo? uint8 699 +--ro metric? uint32 700 augment /rt:routing/rt:control-plane-protocols 701 /rt:control-plane-protocol/isis:isis/isis:database 702 /isis:levels/isis:lsp/isis:ipv6-reachability/isis:prefixes: 703 +--ro fapm-sub-tlvs 704 +--ro fapm-sub-tlv* [] 705 +--ro flex-algo? uint8 706 +--ro metric? uint32 707 augment /rt:routing/rt:control-plane-protocols 708 /rt:control-plane-protocol/isis:isis/isis:database 709 /isis:levels/isis:lsp/isis:mt-ipv6-reachability 710 /isis:prefixes: 711 +--ro fapm-sub-tlvs 712 +--ro fapm-sub-tlv* [] 713 +--ro flex-algo? uint8 714 +--ro metric? uint32 716 file "ietf-isis-flex-algo@2021-06-18.yang" 717 module ietf-isis-flex-algo { 718 yang-version 1.1; 719 namespace "urn:ietf:params:xml:ns:yang:ietf-isis-flex-algo"; 720 prefix isis-flex-algo; 722 import ietf-routing { 723 prefix rt; 724 reference "RFC 8349: A YANG Data Model for Routing 725 Management (NMDA Version)"; 726 } 728 import ietf-te-types { 729 prefix te-types; 730 reference 731 "RFC8776: Common YANG Data Types for Traffic Engineering."; 732 } 734 import ietf-isis { 735 prefix "isis"; 736 } 738 import ietf-te { 739 prefix "te"; 740 } 742 organization 743 "IETF LSR - Link State Routing Working Group"; 744 contact 745 "WG Web: 746 WG List: 748 Author: Yingzhen Qu 749 750 Author: Acee Lindem 751 752 Author: Stephane Litkowski 753 754 "; 756 description 757 "The YANG module defines the configuration and operational 758 state for ISIS Flexible Algorithm as defined in RFC xxxx. 760 This YANG model conforms to the Network Management 761 Datastore Architecture (NMDA) as described in RFC 8342. 763 Copyright (c) 2021 IETF Trust and the persons identified as 764 authors of the code. All rights reserved. 766 Redistribution and use in source and binary forms, with or 767 without modification, is permitted pursuant to, and subject 768 to the license terms contained in, the Simplified BSD License 769 set forth in Section 4.c of the IETF Trust's Legal Provisions 770 Relating to IETF Documents 771 (https://trustee.ietf.org/license-info). 773 This version of this YANG module is part of RFC XXXX; 774 see the RFC itself for full legal notices. 776 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL 777 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 778 'MAY', and 'OPTIONAL' in this document are to be interpreted as 779 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, 780 they appear in all capitals, as shown here."; 782 reference "RFC XXXX: YANG Data Model for ISIS Flexible Algorithm."; 784 revision 2021-06-18 { 785 description 786 "Initial Version"; 787 reference "RFC XXXX: YANG Data Model for ISIS Flexible Algorithm."; 788 } 790 /* Identities */ 792 identity metric-type { 793 description 794 "Base identity for route metric types."; 795 } 797 identity igp-metric { 798 base metric-type; 799 description 800 "Identity for the IGP metric type."; 801 } 803 identity min-uni-delay { 804 base metric-type; 805 description 806 "Min unidirectional link delay metric type."; 807 reference 808 "RFC 8570 - IS-IS Traffic Engineering (TE) Metric Extensions"; 809 } 810 identity te-metric { 811 base metric-type; 812 description 813 "Traffic engineering metric type."; 814 reference 815 "RFC 5305 - IS-IS Extensions for Traffic Engineering (TE)"; 816 } 818 identity fad-flags { 819 description 820 "Base identity for ISIS FAD flags."; 821 } 823 identity m-bit { 824 base fad-flags; 825 description 826 "M bit, when set, the fex-algo specific prefix and ASBR 827 metric MUST be used for inter-area and external prefix 828 calculation."; 829 } 831 /* Groupings */ 832 grouping fa-ex-ag-sub-tlv { 833 container fa-ex-ag-sub-tlv { 834 leaf-list extended-admin-groups { 835 type uint64; 836 description 837 "Extended administrative group as defined in RFC 7308."; 838 } 839 description 840 "The flex-algo exclude admin group sub-tlv."; 841 } 842 description 843 "The flex-algo exclude admin group sub-tlv."; 844 } 846 grouping fa-in-any-ag-sub-tlv { 847 container fa-in-any-ag-sub-tlv { 848 leaf-list extended-admin-groups { 849 type uint64; 850 description 851 "Extended administrative group as defined in RFC 7308."; 852 } 853 description 854 "The flex-algo include-any admin group sub-tlv."; 855 } 856 description 857 "The flex-algo include-any admin group sub-tlv."; 859 } 861 grouping fa-in-all-ag-sub-tlv { 862 container fa-in-all-ag-sub-tlv { 863 leaf-list extended-admin-groups { 864 type uint64; 865 description 866 "Extended administrative group as defined in RFC 7308."; 867 } 868 description 869 "The flex-algo include-all admin group sub-tlv."; 870 } 871 description 872 "The flex-algo include-all admin group sub-tlv."; 873 } 875 grouping fad-flags-sub-tlv { 876 container fad-flags-sub-tlv { 877 leaf-list fad-flags { 878 type identityref { 879 base fad-flags; 880 } 881 description 882 "Flex-algo definition flags list."; 883 } 884 description 885 "ISIS flex-algo definition flags."; 886 } 887 description 888 "The flex-algo definition flags sub-tlv."; 889 } 891 grouping fa-ex-srlg-sub-tlv { 892 container fa-ex-srlg-sub-tlv { 893 leaf-list srlgs { 894 type uint32; 895 description 896 "SRLG value as defined in RFC 4203."; 897 } 898 description 899 "The flex-algo exclude SRLG sub-tlv."; 900 } 901 description 902 "The flex-algo exclude SRLG sub-tlv."; 903 } 905 grouping fad-tlvs { 906 container fad-tlvs { 907 list fad-tlv { 908 leaf flex-algo { 909 type uint8; 910 description 911 "Flex-algo number, value between 128 and 255 inclusive."; 912 } 913 leaf metric-type { 914 type identityref { 915 base metric-type; 916 } 917 description 918 "Type of metric to be used during the calculation."; 919 } 920 leaf calc-type { 921 type uint8 { 922 range "0..127"; 923 } 924 description 925 "IGP algorithm types, value from 0 to 127 as 926 defined under 'Interior Gateway Protocol (IGP) 927 Parameter' by IANA."; 928 } 929 leaf priority { 930 type uint8; 931 description 932 "Priority of the advertisement."; 933 } 935 uses fa-ex-ag-sub-tlv; 936 uses fa-in-any-ag-sub-tlv; 937 uses fa-in-all-ag-sub-tlv; 938 uses fad-flags-sub-tlv; 939 uses fa-ex-srlg-sub-tlv; 940 uses isis:unknown-tlvs; 942 description 943 "List of flex-algo definition TLVs."; 944 } 945 description 946 "ISIS Flexible Algorithm Definition TLV."; 947 } 948 description 949 "ISIS Flexible Algorithm Definition (FAD) TLV."; 950 } 952 grouping fapm-sub-tlvs { 953 container fapm-sub-tlvs { 954 list fapm-sub-tlv { 955 leaf flex-algo { 956 type uint8; 957 description 958 "Flex-algo number, value between 128 and 255 959 inclusive."; 960 } 961 leaf metric { 962 type uint32; 963 description 964 "Prefix metric."; 965 } 966 description 967 "List of flex-algo prefix sub-tlvs."; 968 } 969 description 970 "Flex-algo prefix metric sub-tlvs."; 971 } 972 description 973 "Flexible Algorithm Prefix Metric (FAPM) sub TLVs."; 974 } 976 /* Configurations */ 978 augment "/rt:routing/" + 979 "rt:control-plane-protocols/rt:control-plane-protocol"+ 980 "/isis:isis" { 981 when "/rt:routing/rt:control-plane-protocols/"+ 982 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 983 description 984 "This augment ISIS routing protocol when used"; 985 } 986 description 987 "This augments ISIS protocol configuration 988 with flexible algorithm."; 990 container isis-flex-algo { 991 list flex-algo { 992 key "algo-number"; 994 leaf algo-number { 995 type uint8 { 996 range "128..255"; 997 } 998 description 999 "An identifier in the range 128-255 that's associated 1000 with the Flexible Algorithm Definition."; 1002 } 1004 leaf advertise-definition { 1005 type boolean; 1006 default true; 1007 description 1008 "Enable to advertise the flex-algo definition."; 1009 } 1011 container admin-groups { 1012 if-feature "te-types:extended-admin-groups"; 1013 if-feature "te-types:named-extended-admin-groups"; 1014 leaf-list exclude-admin-groups { 1015 type leafref { 1016 path "/te:te/te:globals/te:named-admin-groups/" 1017 + "te:named-admin-group/te:name"; 1018 } 1019 description 1020 "Exclude rule used during the flex-algo 1021 path computation."; 1022 } 1023 leaf-list include-any-admin-groups { 1024 type leafref { 1025 path "/te:te/te:globals/te:named-admin-groups/" 1026 + "te:named-admin-group/te:name"; 1027 } 1028 description 1029 "Include-any rule used during the flex-algo 1030 path computation."; 1031 } 1032 leaf-list include-all-admin-groups { 1033 type leafref { 1034 path "/te:te/te:globals/te:named-admin-groups/" 1035 + "te:named-admin-group/te:name"; 1036 } 1037 description 1038 "Include-all rule used during the flex-algo 1039 path computation."; 1040 } 1041 description 1042 "Specify links for the flex-algo path computation."; 1043 } 1045 leaf-list exclude-srlgs { 1046 if-feature "te-types:named-srlg-groups"; 1047 type leafref { 1048 path "/te:te/te:globals/te:named-srlgs/te:named-srlg/" 1049 + "te:name"; 1051 } 1052 description 1053 "Shared Risk Link Groups (SRLGs) to be excluded during 1054 the flex-algo path computation."; 1055 } 1057 leaf fast-reroute { 1058 type boolean; 1059 default true; 1060 description 1061 "Enable fast reroute."; 1062 } 1064 leaf metric-type { 1065 type identityref { 1066 base metric-type; 1067 } 1068 description 1069 "Type of metric to be used during the calculation."; 1070 } 1072 leaf microloop-avoidance { 1073 type boolean; 1074 default true; 1075 description 1076 "Enable microloop avoidance."; 1077 } 1079 container prefix-metric { 1080 presence 1081 "Use flex-algo specific prefix metric."; 1082 description 1083 "Use flex-algo prefix metric."; 1084 } 1086 leaf priority { 1087 type uint8; 1088 description 1089 "Priority of the advertisement."; 1090 } 1092 description 1093 "List of flex-algo configurations."; 1094 } 1095 description 1096 "Flexible Algorithm configuration."; 1097 } 1098 } 1099 /* Database */ 1101 augment "/rt:routing/" + 1102 "rt:control-plane-protocols/rt:control-plane-protocol"+ 1103 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 1104 "/isis:router-capabilities" { 1105 when "/rt:routing/rt:control-plane-protocols/"+ 1106 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 1107 description 1108 "This augment ISIS routing protocol when used"; 1109 } 1110 description 1111 "This augments ISIS protocol LSDB router capability."; 1113 uses fad-tlvs; 1114 } 1116 augment "/rt:routing/" + 1117 "rt:control-plane-protocols/rt:control-plane-protocol"+ 1118 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 1119 "/isis:extended-ipv4-reachability/isis:prefixes" { 1120 when "/rt:routing/rt:control-plane-protocols/"+ 1121 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 1122 description 1123 "This augment ISIS routing protocol when used"; 1124 } 1125 description 1126 "This augments ISIS protocol LSDB prefix."; 1127 uses fapm-sub-tlvs; 1128 } 1130 augment "/rt:routing/" + 1131 "rt:control-plane-protocols/rt:control-plane-protocol"+ 1132 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 1133 "/isis:mt-extended-ipv4-reachability/isis:prefixes" { 1134 when "/rt:routing/rt:control-plane-protocols/"+ 1135 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 1136 description 1137 "This augment ISIS routing protocol when used"; 1138 } 1139 description 1140 "This augments ISIS protocol LSDB prefix."; 1141 uses fapm-sub-tlvs; 1142 } 1144 augment "/rt:routing/" + 1145 "rt:control-plane-protocols/rt:control-plane-protocol"+ 1146 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 1147 "/isis:ipv6-reachability/isis:prefixes" { 1148 when "/rt:routing/rt:control-plane-protocols/"+ 1149 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 1150 description 1151 "This augment ISIS routing protocol when used"; 1152 } 1153 description 1154 "This augments ISIS protocol LSDB prefix."; 1155 uses fapm-sub-tlvs; 1156 } 1158 augment "/rt:routing/" + 1159 "rt:control-plane-protocols/rt:control-plane-protocol"+ 1160 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 1161 "/isis:mt-ipv6-reachability/isis:prefixes" { 1162 when "/rt:routing/rt:control-plane-protocols/"+ 1163 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 1164 description 1165 "This augment ISIS routing protocol when used"; 1166 } 1167 description 1168 "This augments ISIS protocol LSDB prefix."; 1169 uses fapm-sub-tlvs; 1170 } 1171 } 1172 1174 5. Security Considerations 1176 The YANG modules specified in this document define a schema for data 1177 that is designed to be accessed via network management protocols such 1178 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 1179 is the secure transport layer, and the mandatory-to-implement secure 1180 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 1181 is HTTPS, and the mandatory-to-implement secure transport is TLS 1182 [RFC5246]. 1184 The NETCONF access control model [RFC6536] provides the means to 1185 restrict access for particular NETCONF or RESTCONF users to a pre- 1186 configured subset of all available NETCONF or RESTCONF protocol 1187 operations and content. 1189 There are a number of data nodes defined in the modules that are 1190 writable/creatable/deletable (i.e., config true, which is the 1191 default). These data nodes may be considered sensitive or vulnerable 1192 in some network environments. Write operations (e.g., edit-config) 1193 to these data nodes without proper protection can have a negative 1194 effect on network operations. These correspond to the following 1195 schema nodes: 1197 /isis:isis/isis:interfaces/isis:interface/isis-link-attr - 1198 Modification of link attributes operation mode could result in 1199 traffic being redirected or DoS attack. 1201 Some of the readable data nodes in the modules may be considered 1202 sensitive or vulnerable in some network environments. It is thus 1203 important to control read access (e.g., via get, get-config, or 1204 notification) to these data nodes. The exposure of the Link State 1205 Database (LSDB) will expose the detailed topology of the network. 1206 This may be undesirable since both due to the fact that exposure may 1207 facilitate other attacks. Additionally, network operators may 1208 consider their topologies to be sensitive confidential data.These 1209 correspond to the following schema nodes: 1211 /isis:isis/isis:database/isis:levels/isis:lsp/isis:mt-is- 1212 neighbor/isis:neighbor/isis:instances/isis:instance/application- 1213 specific-link-attributes-sub-tlvs 1215 /isis:isis/isis:database/isis:levels/isis:lsp/application- 1216 specific-srlg-tlv 1218 6. IANA Considerations 1220 This document registers URIs in the IETF XML registry [RFC3688]. 1221 Following the format in [RFC3688], the following registrations is 1222 requested to be made: 1224 URI: urn:ietf:params:xml:ns:yang:ietf-isis-remaining-lifetime 1225 Registrant Contact: The IESG. 1226 XML: N/A, the requested URI is an XML namespace. 1228 URI: urn:ietf:params:xml:ns:yang:ietf-isis-link-attr 1229 Registrant Contact: The IESG. 1230 XML: N/A, the requested URI is an XML namespace. 1232 URI: urn:ietf:params:xml:ns:yang:ietf-isis-flex-algo 1233 Registrant Contact: The IESG. 1234 XML: N/A, the requested URI is an XML namespace. 1236 This document registers the YANG modules in the YANG Module Names 1237 registry [RFC6020]. 1239 name: ietf-isis-remaining-lifetime 1240 namespace: urn:ietf:params:xml:ns:yang:ietf-isis-remaining-lifetime 1241 prefix: isis-remaining-lifetime 1242 reference: RFC XXXX 1244 name: ietf-isis-link-attr 1245 namespace: urn:ietf:params:xml:ns:yang:ietf-isis-link-attr 1246 prefix: isis-link-attr 1247 reference: RFC XXXX 1249 name: ietf-isis-flex-algo 1250 namespace: urn:ietf:params:xml:ns:yang:ietf-isis-flex-algo 1251 prefix: isis-flex-algo 1252 reference: RFC XXXX 1254 7. Acknowledgements 1256 This document was produced using Marshall Rose's xml2rfc tool. 1258 The YANG model was developed using the suite of YANG tools written 1259 and maintained by numerous authors. 1261 8. References 1263 8.1. Normative References 1265 [I-D.ietf-isis-yang-isis-cfg] 1266 Litkowski, S., Yeung, D., Lindem, A., Zhang, J., and L. 1267 Lhotka, "YANG Data Model for IS-IS Protocol", draft-ietf- 1268 isis-yang-isis-cfg-42 (work in progress), October 2019. 1270 [I-D.ietf-lsr-flex-algo] 1271 Psenak, P., Hegde, S., Filsfils, C., Talaulikar, K., and 1272 A. Gulko, "IGP Flexible Algorithm", draft-ietf-lsr-flex- 1273 algo-15 (work in progress), April 2021. 1275 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1276 Requirement Levels", BCP 14, RFC 2119, 1277 DOI 10.17487/RFC2119, March 1997, 1278 . 1280 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1281 DOI 10.17487/RFC3688, January 2004, 1282 . 1284 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 1285 (TLS) Protocol Version 1.2", RFC 5246, 1286 DOI 10.17487/RFC5246, August 2008, 1287 . 1289 [RFC5329] Ishiguro, K., Manral, V., Davey, A., and A. Lindem, Ed., 1290 "Traffic Engineering Extensions to OSPF Version 3", 1291 RFC 5329, DOI 10.17487/RFC5329, September 2008, 1292 . 1294 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1295 the Network Configuration Protocol (NETCONF)", RFC 6020, 1296 DOI 10.17487/RFC6020, October 2010, 1297 . 1299 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1300 and A. Bierman, Ed., "Network Configuration Protocol 1301 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1302 . 1304 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1305 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 1306 . 1308 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1309 Protocol (NETCONF) Access Control Model", RFC 6536, 1310 DOI 10.17487/RFC6536, March 2012, 1311 . 1313 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1314 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1315 . 1317 [RFC7987] Ginsberg, L., Wells, P., Decraene, B., Przygienda, T., and 1318 H. Gredler, "IS-IS Minimum Remaining Lifetime", RFC 7987, 1319 DOI 10.17487/RFC7987, October 2016, 1320 . 1322 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 1323 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 1324 . 1326 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1327 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1328 May 2017, . 1330 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 1331 Routing Management (NMDA Version)", RFC 8349, 1332 DOI 10.17487/RFC8349, March 2018, 1333 . 1335 [RFC8919] Ginsberg, L., Psenak, P., Previdi, S., Henderickx, W., and 1336 J. Drake, "IS-IS Application-Specific Link Attributes", 1337 RFC 8919, DOI 10.17487/RFC8919, October 2020, 1338 . 1340 8.2. Informative References 1342 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1343 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 1344 . 1346 Authors' Addresses 1348 Acee Lindem 1349 Cisco Systems 1350 301 Midenhall Way 1351 Cary, NC 27513 1353 EMail: acee@cisco.com 1355 Stephane Litkowski 1356 Cisco Systems 1358 EMail: slitkows.ietf@gmail.com 1360 Yingzhen Qu 1361 Futurewei 1362 2330 Central Expressway 1363 Santa Clara, CA 95050 1364 USA 1366 EMail: yingzhen.qu@futurewei.com