idnits 2.17.1 draft-ietf-rift-yang-02.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 == Line 244 has weird spacing: '...-family ian...' == Line 288 has weird spacing: '...mote-id uin...' == Line 328 has weird spacing: '...mote-id uin...' == Line 394 has weird spacing: '...mote-id uin...' -- The document date (February 22, 2021) is 1159 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: 'RFC7951' is defined on line 1520, but no explicit reference was found in the text == Outdated reference: A later version (-21) exists of draft-ietf-rift-rift-12 Summary: 0 errors (**), 0 flaws (~~), 7 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 RIFT WG B. Rijsman 3 Internet-Draft Individual 4 Intended status: Standards Track Z. Zhang, Ed. 5 Expires: August 26, 2021 Y. Wei 6 ZTE Corporation 7 S. Ma 8 Google 9 X. Liu 10 Volta Networks 11 February 22, 2021 13 A YANG Data Model for Routing in Fat Trees (RIFT) 14 draft-ietf-rift-yang-02 16 Abstract 18 This document defines a YANG data model for the configuration and 19 management of Routing in Fat Trees (RIFT) Protocol. 21 Status of This Memo 23 This Internet-Draft is submitted in full conformance with the 24 provisions of BCP 78 and BCP 79. 26 Internet-Drafts are working documents of the Internet Engineering 27 Task Force (IETF). Note that other groups may also distribute 28 working documents as Internet-Drafts. The list of current Internet- 29 Drafts is at https://datatracker.ietf.org/drafts/current/. 31 Internet-Drafts are draft documents valid for a maximum of six months 32 and may be updated, replaced, or obsoleted by other documents at any 33 time. It is inappropriate to use Internet-Drafts as reference 34 material or to cite them other than as "work in progress." 36 This Internet-Draft will expire on August 26, 2021. 38 Copyright Notice 40 Copyright (c) 2021 IETF Trust and the persons identified as the 41 document authors. All rights reserved. 43 This document is subject to BCP 78 and the IETF Trust's Legal 44 Provisions Relating to IETF Documents 45 (https://trustee.ietf.org/license-info) in effect on the date of 46 publication of this document. Please review these documents 47 carefully, as they describe your rights and restrictions with respect 48 to this document. Code Components extracted from this document must 49 include Simplified BSD License text as described in Section 4.e of 50 the Trust Legal Provisions and are provided without warranty as 51 described in the Simplified BSD License. 53 Table of Contents 55 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 56 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 2 57 1.2. Conventions Used in This Document . . . . . . . . . . . . 3 58 1.3. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 59 1.4. Prefixes in Data Node Names . . . . . . . . . . . . . . . 3 60 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 4 61 2.1. Scope of Model . . . . . . . . . . . . . . . . . . . . . 4 62 2.2. Specification . . . . . . . . . . . . . . . . . . . . . . 4 63 2.3. Overview . . . . . . . . . . . . . . . . . . . . . . . . 5 64 2.4. RIFT configuration . . . . . . . . . . . . . . . . . . . 9 65 2.5. RIFT State . . . . . . . . . . . . . . . . . . . . . . . 9 66 2.6. Notifications . . . . . . . . . . . . . . . . . . . . . . 10 67 3. RIFT YANG model . . . . . . . . . . . . . . . . . . . . . . . 10 68 4. Security Considerations . . . . . . . . . . . . . . . . . . . 30 69 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 31 70 6. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 31 71 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 32 72 7.1. Normative References . . . . . . . . . . . . . . . . . . 32 73 7.2. Informative References . . . . . . . . . . . . . . . . . 34 74 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 34 76 1. Introduction 78 [I-D.ietf-rift-rift] introduces the protocol definition of RIFT. 79 This document defines a YANG data model that can be used to configure 80 and manage the RIFT protocol. The model is based on YANG 1.1 as 81 defined in [RFC7950] and conforms to the Network Management Datastore 82 Architecture (NDMA) as described in [RFC8342] 84 1.1. Terminology 86 The terminology for describing YANG data models is found in [RFC6020] 87 and [RFC7950], including: 89 o augment 91 o container 93 o choice 95 o data model 96 o data node 98 o grouping 100 o identity 102 o leaf 104 o leaf-list 106 o list 108 o module 110 o uses 112 The following abbreviations are used in this document and the defined 113 model: 115 RIFT: Routing in Fat Trees [I-D.ietf-rift-rift]. 117 1.2. Conventions Used in This Document 119 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 120 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 121 "OPTIONAL" in this document are to be interpreted as described in BCP 122 14 [RFC2119] [RFC8174] when, and only when, they appear in all 123 capitals, as shown here. 125 1.3. Tree Diagrams 127 Tree diagrams used in this document follow the notation defined in 128 [RFC8340]. 130 1.4. Prefixes in Data Node Names 132 In this document, names of data nodes, actions, and other data model 133 objects are often used without a prefix, as long as it is clear from 134 the context in which YANG module each name is defined. Otherwise, 135 names are prefixed using the standard prefix associated with the 136 corresponding YANG module, as shown in Table 1. 138 +---------------+--------------------+-----------+ 139 | Prefix | YANG module | Reference | 140 +---------------+--------------------+-----------+ 141 | yang | ietf-yang-types | [RFC6991] | 142 | | | | 143 | inet | ietf-inet-types | [RFC6991] | 144 | | | | 145 | rt | ietf-routing | [RFC8349] | 146 | | | | 147 | if | ietf-interfaces | [RFC8343] | 148 | | | | 149 | rt-types | ietf-routing-types | [RFC8294] | 150 | | | | 151 | iana-rt-types | iana-routing-types | [RFC8294] | 152 +---------------+--------------------+-----------+ 154 Table 1 156 2. Design of the Data Model 158 2.1. Scope of Model 160 The model covers RIFT [I-D.ietf-rift-rift]. 162 This model can be used to configure and manage the RIFT protocol. 163 The operational state data and statistics can be retrieved by this 164 model. The subscription and push mechanism defined in [RFC8639] and 165 [RFC8641] can be implemented by the user to subscribe to 166 notifications on the data nodes in this model. 168 The model contains all the basic configuration parameters to operate 169 the protocol. Depending on the implementation choices, some systems 170 may not allow some of the advanced parameters to be configurable. 171 The occasionally implemented parameters are modeled as optional 172 features in this model. This model can be extended, and it has been 173 structured in a way that such extensions can be conveniently made. 175 The RIFT YANG module augments the /routing/control-plane-protocols/ 176 control-plane-protocol path defined in the ietf-routing module. The 177 ietf-rift model defines a single instance of RIFT. Multiple 178 instances are instantiated as multiple control-plane protocols 179 instances. 181 2.2. Specification 183 This model imports and augments ietf-routing YANG model defined in 184 [RFC8349]. Both configuration branch and state branch of [RFC8349] 185 are augmented. The configuration branch covers node base and policy 186 configuration. The container "rift" is the top level container in 187 this data model. The presence of this container is expected to 188 enable RIFT protocol functionality. 190 The YANG data model defined in this document conforms to the Network 191 Management Datastore Architecture (NMDA) [RFC8342]. The operational 192 state data is combined with the associated configuration data in the 193 same hierarchy [RFC8407]. 195 2.3. Overview 197 The RIFT YANG module defined in this document has all the common 198 building blocks for the RIFT protocol. 200 The RIFT YANG module augments the /routing/control-plane-protocols/ 201 control-plane-protocol path defined in the ietf-routing module. The 202 ietf-rift model defines a single instance of RIFT. Multiple 203 instances are instantiated as multiple control-plane protocols 204 instances. 206 module: ietf-rift 207 augment /rt:routing/rt:control-plane-protocols 208 /rt:control-plane-protocol: 209 +--rw rift 210 +--rw name? string 211 +--ro level? level 212 +--rw system-id system-id 213 +--rw pod? uint32 214 +--rw configured-level? level 215 +--rw overload? boolean 216 +--ro protocol-major-version uint8 217 +--ro protocol-minor-version uint16 218 +--ro hierarchy-indications? enumeration 219 +--rw flood-reduction? boolean 220 +--rw nonce-increasing-interval? uint16 221 +--rw maximum-nonce-delta? uint8 {nonce-delta-adjust}? 222 +--rw rx-lie-multicast-address 223 | +--rw ipv4? inet:ipv4-address 224 | +--rw ipv6? inet:ipv6-address 225 +--rw tx-lie-multicast-address 226 | +--rw ipv4? inet:ipv4-address 227 | +--rw ipv6? inet:ipv6-address 228 +--rw lie-tx-port? inet:port-number 229 +--rw global-link-capabilities 230 | +--rw bfd? boolean 231 | +--rw v4-forwarding-capable? boolean 232 +--rw rx-flood-port? inet:port-number 233 +--rw holdtime? 234 | rt-types:timer-value-seconds16 235 +--rw tide-generation-interval? 236 | rt-types:timer-value-seconds16 237 +--rw tie-security-key-id? uint32 238 +--rw interface* [name] 239 | +--ro link-id? linkid-type 240 | +--rw name if:interface-ref 241 | +--rw cost? uint32 242 | +--rw address-families 243 | | +--rw address-family* [address-family] 244 | | +--rw address-family iana-rt-types:address-family 245 | +--rw advertised-source-addresses 246 | | +--rw ipv4? inet:ipv4-address 247 | | +--rw ipv6? inet:ipv6-address 248 | +--ro direction-type? enumeration 249 | +--ro was-the-last-lie-accepted? boolean 250 | +--ro last-lie-reject-reason? string 251 | +--ro advertised-in-lies 252 | | +--ro you-are-flood-repeater? boolean 253 | | +--ro not-a-ztp-offer? boolean 254 | | +--ro you-are-sending-too-quickly? boolean 255 | +--rw link-capabilities 256 | | +--rw bfd? boolean 257 | | +--rw v4-forwarding-capable? boolean 258 | +--ro state enumeration 259 | +--ro number-of-flaps? uint32 260 | +--ro last-state-change? yang:date-and-time 261 +--ro miscabled-links* linkid-type 262 +--rw (algorithm-type)? 263 | +--:(spf) 264 | +--:(all-path) 265 +--ro hal? level 266 +--rw instance-label? uint32 {label-switching}? 267 +--ro neighbor* [system-id] 268 | +--ro name? string 269 | +--ro level? level 270 | +--ro system-id system-id 271 | +--ro pod? uint32 272 | +--ro protocol-version? uint16 273 | +--ro protocol-minor-version? uint16 274 | +--ro sent-offer 275 | | +--ro level? level 276 | | +--ro not-a-ztp-offer? boolean 277 | +--ro received-offer 278 | | +--ro level? level 279 | | +--ro not-a-ztp-offer? boolean 280 | | +--ro best? boolean 281 | | +--ro removed-from-consideration? boolean 282 | | +--ro removal-reason? string 283 | +--ro received-source-addresses 284 | | +--ro ipv4? inet:ipv4-address 285 | | +--ro ipv6? inet:ipv6-address 286 | +--ro link-id-pair* [remote-id] 287 | | +--ro local-id? uint32 288 | | +--ro remote-id uint32 289 | | +--ro if-index? uint32 290 | | +--ro if-name? if:interface-ref 291 | +--ro cost? uint32 292 | +--ro bandwidth? uint32 293 | +--ro flood-reduction? boolean 294 | +--ro received-link-capabilities 295 | | +--ro bfd? boolean 296 | | +--ro v4-forwarding-capable? boolean 297 | +--ro received-in-lies 298 | | +--ro you-are-flood-repeater? boolean 299 | | +--ro not-a-ztp-offer? boolean 300 | | +--ro you-are-sending-too-quickly? boolean 301 | +--ro tx-flood-port? inet:port-number 302 | +--ro bfd-up? boolean 303 | +--ro outer-security-key-id? uint8 304 +--ro database 305 +--ro tie* [direction-type originator tie-type tie-number] 306 +--ro direction-type enumeration 307 +--ro originator system-id 308 +--ro tie-type enumeration 309 +--ro tie-number uint32 310 +--ro seq? uint64 311 +--ro origination-time? uint32 312 +--ro origination-lifetime? uint32 313 +--ro node 314 | +--ro name? string 315 | +--ro level? level 316 | +--ro system-id system-id 317 | +--ro pod? uint32 318 | +--ro flood-reduction? boolean 319 | +--ro overload? boolean 320 | +--ro startup-time? uint64 321 | +--ro neighbor* [system-id] 322 | | +--ro name? string 323 | | +--ro level? level 324 | | +--ro system-id system-id 325 | | +--ro pod? uint32 326 | | +--ro link-id-pair* [remote-id] 327 | | | +--ro local-id? uint32 328 | | | +--ro remote-id uint32 329 | | | +--ro if-index? uint32 330 | | | +--ro if-name? if:interface-ref 331 | | +--ro cost? uint32 332 | | +--ro bandwidth? uint32 333 | | +--ro flood-reduction? boolean 334 | | +--ro received-link-capabilities 335 | | +--ro bfd? boolean 336 | | +--ro v4-forwarding-capable? boolean 337 | +--ro miscabled-links* linkid-type 338 +--ro prefix 339 | +--ro prefix? inet:ip-prefix 340 | +--ro (type)? 341 | | +--:(prefix) 342 | | +--:(positive-disaggregation) 343 | | +--:(negative-disaggregation) 344 | | +--:(external) 345 | | +--:(positive-external-disaggregation) 346 | | +--:(pgp) 347 | +--ro metric? uint32 348 | +--ro tags* uint64 349 | +--ro monotonic-clock 350 | | +--ro prefix-sequence-type 351 | | +--ro timestamp 352 | | | ieee802-1as-timestamp-type 353 | | +--ro transaction-id? uint8 354 | +--ro loopback? boolean 355 | +--ro directly-attached? boolean 356 | +--ro from-link? linkid-type 357 +--ro key-value 358 +--ro key? binary 359 +--ro value? binary 361 notifications: 362 +---n error-set 363 +--ro tie-level-error 364 | +--ro tie* [originator] 365 | +--ro direction-type? enumeration 366 | +--ro originator system-id 367 | +--ro tie-type? enumeration 368 | +--ro tie-number? uint32 369 | +--ro seq? uint64 370 | +--ro origination-time? uint32 371 | +--ro origination-lifetime? uint32 372 +--ro neighbor-error 373 +--ro neighbor* [system-id] 374 +--ro name? string 375 +--ro level? level 376 +--ro system-id system-id 377 +--ro pod? uint32 378 +--ro protocol-version? uint16 379 +--ro protocol-minor-version? uint16 380 +--ro sent-offer 381 | +--ro level? level 382 | +--ro not-a-ztp-offer? boolean 383 +--ro received-offer 384 | +--ro level? level 385 | +--ro not-a-ztp-offer? boolean 386 | +--ro best? boolean 387 | +--ro removed-from-consideration? boolean 388 | +--ro removal-reason? string 389 +--ro received-source-addresses 390 | +--ro ipv4? inet:ipv4-address 391 | +--ro ipv6? inet:ipv6-address 392 +--ro link-id-pair* [remote-id] 393 | +--ro local-id? uint32 394 | +--ro remote-id uint32 395 | +--ro if-index? uint32 396 | +--ro if-name? if:interface-ref 397 +--ro cost? uint32 398 +--ro bandwidth? uint32 399 +--ro flood-reduction? boolean 400 +--ro received-link-capabilities 401 | +--ro bfd? boolean 402 | +--ro v4-forwarding-capable? boolean 403 +--ro received-in-lies 404 | +--ro you-are-flood-repeater? boolean 405 | +--ro not-a-ztp-offer? boolean 406 | +--ro you-are-sending-too-quickly? boolean 407 +--ro tx-flood-port? inet:port-number 408 +--ro bfd-up? boolean 409 +--ro outer-security-key-id? uint8 411 2.4. RIFT configuration 413 The configuration data nodes cover node configuration attributes. 414 RIFT configurations require node base information configurations. 415 Some features can be used to enhance protocol, such as BFD, flooding- 416 reducing, community attribute. 418 2.5. RIFT State 420 The state data nodes include node, neighbor, database and kv-store 421 information. 423 2.6. Notifications 425 Unexpected TIE and neighbor's layer error should be notified. 427 3. RIFT YANG model 429 This module references [I-D.ietf-rift-rift], [RFC5881], [RFC6991], 430 [RFC8177], [RFC8294], [RFC8343], [RFC8349], [RFC8505]. 432 file "ietf-rift@2021-02-20.yang" 433 module ietf-rift { 435 yang-version 1.1; 437 namespace "urn:ietf:params:xml:ns:yang:ietf-rift"; 438 prefix rift; 440 import ietf-inet-types { 441 prefix "inet"; 442 reference "RFC 6991: Common YANG Data Types"; 443 } 445 import ietf-yang-types { 446 prefix "yang"; 447 reference "RFC 6991: Common YANG Data Types"; 448 } 450 import ietf-routing { 451 prefix "rt"; 452 reference 453 "RFC 8349: A YANG Data Model for Routing Management 454 (NMDA Version)"; 455 } 457 import ietf-interfaces { 458 prefix "if"; 459 reference 460 "RFC 8343: A YANG Data Model for Interface Management"; 461 } 463 import ietf-routing-types { 464 prefix "rt-types"; 465 reference 466 "RFC 8294: Common YANG Data Types for the Routing Area"; 467 } 469 import iana-routing-types { 470 prefix "iana-rt-types"; 471 reference 472 "RFC 8294: Common YANG Data Types for the Routing Area"; 473 } 475 organization 476 "IETF RIFT (Routing In Fat Trees) Working Group"; 478 contact 479 "WG Web: 480 WG List: 482 Editor: Zheng Zhang 483 485 Editor: Yuehua Wei 486 488 Editor: Shaowen Ma 489 491 Editor: Xufeng Liu 492 "; 494 // RFC Ed.: replace XXXX with actual RFC number and remove 495 // this note 497 description 498 "The module defines the YANG definitions for Routing in Fat 499 Trees (RIFT). 501 Copyright (c) 2020 IETF Trust and the persons identified as 502 authors of the code. All rights reserved. 504 Redistribution and use in source and binary forms, with or 505 without modification, is permitted pursuant to, and subject 506 to the license terms contained in, the Simplified BSD 507 License set forth in Section 4.c of the IETF Trust's Legal 508 Provisions Relating to IETF Documents 509 (https://trustee.ietf.org/license-info). 511 This version of this YANG module is part of RFC XXXX 512 (https://www.rfc-editor.org/info/rfcXXXX); see the RFC 513 itself for full legal notices. 515 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 516 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 517 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document 518 are to be interpreted as described in BCP 14 (RFC 2119) 519 (RFC 8174) when, and only when, they appear in all 520 capitals, as shown here."; 522 revision 2021-02-20 { 523 description "Initial revision."; 524 reference "RFC XXXX: A YANG Data Model for RIFT."; 525 } 527 /* 528 * Features 529 */ 531 feature nonce-delta-adjust { 532 description 533 "Support weak nonce delta adjusting which is used in security 534 in section 4.4."; 535 } 537 feature label-switching { 538 description 539 "Support label switching for instance distinguishing in 540 section 4.3.7."; 541 } 543 typedef system-id { 544 type string { 545 pattern 546 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}'; 547 } 548 description 549 "This type defines RIFT system id using pattern, 550 the system id looks like: 0143.0438.0100.AeF0"; 551 } 553 typedef level { 554 type uint8 { 555 range "0 .. 24"; 556 } 557 default "0"; 558 description "The value of node level. The max value is 24."; 559 } 561 typedef linkid-type { 562 type uint32; 563 description "This type defines the link id of an interface."; 564 } 566 typedef ieee802-1as-timestamp-type { 567 type uint64; 568 description 569 "Timestamp per 802.1AS. It is advertised with prefix to 570 achieve mobility as described in section 4.3.3."; 571 } 573 /* 574 * Identity 575 */ 576 identity rift { 577 base rt:routing-protocol; 578 description "Identity for the RIFT routing protocol."; 579 } 581 /* 582 * Groupings 583 */ 585 grouping base-node-info { 586 leaf name { 587 type string; 588 description 589 "The name of this node. It won't be used as the key of node, 590 just used for description."; 591 } 592 leaf level { 593 type level; 594 config false; 595 description "The level of this node."; 596 } 597 leaf system-id { 598 type system-id; 599 mandatory true; 600 description 601 "Each node is identified via a system-id which is 64 bits 602 wide."; 603 } 604 leaf pod { 605 type uint32; 606 description 607 "Point of Delivery. The self-contained vertical slice of a 608 Clos or Fat Tree network containing normally only level 0 609 and level 1 nodes. It communicates with nodes in other PoDs 610 via the spine. We number PoDs to distinguish them and use 611 PoD #0 to denote 'undefined' PoD."; 612 } 613 description "The base information of a node."; 614 } // base-node-info 615 grouping node-flag { 616 leaf overload { 617 type boolean; 618 description "If the overload bit in TIEs can be set."; 619 } 620 description "The node flag information."; 621 } 623 grouping link-capabilities { 624 leaf bfd { 625 type boolean; 626 description 627 "If this value is set to true, it means that 628 BFD [RFC5881] function is enabled on the neighbor."; 629 } 630 leaf v4-forwarding-capable { 631 type boolean; 632 description 633 "If this value is set to true, it means that 634 the neighbor supports v4 forwarding."; 635 } 636 description "The features of neighbor."; 637 } // link-capabilities 639 grouping addresses { 640 leaf ipv4 { 641 type inet:ipv4-address; 642 description "IPv4 address to be used."; 643 } 644 leaf ipv6 { 645 type inet:ipv6-address; 646 description "IPv6 address to be used."; 647 } 648 description "IPv4 or IPv6 address to be used."; 649 } 651 grouping lie-elements{ 652 leaf you-are-flood-repeater { 653 type boolean; 654 description 655 "If the neighbor on this link is flooding repeater 656 described in section 4.2.3.9. When this value is set 657 to true, the value can be carried in exchanged 658 packet."; 659 } 660 leaf not-a-ztp-offer { 661 type boolean; 662 description 663 "As described in section 4.2.7. When this value is 664 set to true, the flag can be carried in the LIE 665 packet. When the value received in the LIE from 666 neighbor, it indicates the level on the LIE MUST 667 NOT be used to derive a ZTP level by the receiving 668 node."; 669 } 670 leaf you-are-sending-too-quickly { 671 type boolean; 672 description 673 "Can be optionally set to indicate to neighbor that 674 packet losses are seen on reception based on packet 675 numbers or the rate is too high. The receiver SHOULD 676 temporarily slow down flooding rates. When this value 677 is set to true, the flag can be carried in packet."; 678 } 679 description "The elements set in the LIEs."; 680 } // lie-elements 682 grouping link-id-pair { 683 leaf local-id { 684 type uint32; 685 description "The local-id of link connect to this neighbor."; 686 } 687 leaf remote-id { 688 type uint32; 689 description "The remote-id to reach this neighbor."; 690 } 691 leaf if-index { 692 type uint32; 693 description "The local index of this interface."; 694 } 695 leaf if-name { 696 type if:interface-ref; 697 description "The name of this interface."; 698 } 699 description 700 "A pair of local and remote link IDs to identify a link between 701 two nodes."; 702 } // link-id-pair 704 grouping neighbor-node { 705 list link-id-pair { 706 key "remote-id"; 707 uses link-id-pair; 708 description 709 "The Multiple parallel links to this neighbor."; 710 } 711 leaf cost { 712 type uint32; 713 description "The cost value advertised by the neighbor."; 714 } 715 leaf bandwidth { 716 type uint32; 717 description 718 "Total bits bandwith to neighbor, this will be 719 normally sum of the bandwidths of all the 720 parallel links."; 721 } 722 leaf flood-reduction { 723 type boolean; 724 description 725 "If this neighbor enables the flood reduction function."; 726 } 727 container received-link-capabilities { 728 uses link-capabilities; 729 description 730 "The link capabilities advertised by the neighbor."; 731 } 732 description "The neighbor information indicated in node TIE."; 733 } // neighbor-node 735 grouping neighbor { 736 leaf protocol-version { 737 type uint16; 738 description 739 "Represents the protocol encoding schema version of 740 this neighbor."; 741 } 742 leaf protocol-minor-version { 743 type uint16; 744 description 745 "Represents the minor protocol encoding schema 746 version of this neighbor."; 747 } 748 container sent-offer { 749 leaf level { 750 type level; 751 description "The level value."; 752 } 753 leaf not-a-ztp-offer { 754 type boolean; 755 description "If the neighbor needs to be offer a level."; 756 } 757 description 758 "The level sent to the neighbor in case the neighbor 759 needs to be offered."; 760 } 761 container received-offer { 762 leaf level { 763 type level; 764 description "The level value."; 765 } 766 leaf not-a-ztp-offer { 767 type boolean; 768 description 769 "If this interface needs to be offered a level."; 770 } 771 leaf best { 772 type boolean; 773 description 774 "If level is the best level received from all 775 the neighbors."; 776 } 777 leaf removed-from-consideration { 778 type boolean; 779 description 780 "If the level value is considered to be used. 781 If the value is not considered to be used, 782 this value is set to 'TRUE'."; 783 } 784 leaf removal-reason { 785 type string; 786 description 787 "The reason why this value is not considered to 788 be used."; 789 } 790 description 791 "The level offered to the interface from the neighbor. 792 And if the level value is considered to be used."; 793 } 794 container received-source-addresses { 795 uses addresses; 796 description 797 "The source address of LIE and TIE packets from 798 the neighbor."; 799 } // received-offer 800 uses neighbor-node; 801 container received-in-lies { 802 uses lie-elements; 803 description "The attributes received from this neighbor."; 804 } 805 leaf tx-flood-port { 806 type inet:port-number; 807 default "915"; 808 description 809 "The UDP port which is used by the neighbor to flood TIEs."; 810 } 811 leaf bfd-up { 812 type boolean; 813 description 814 "Indication whether the link is protected by established 815 BFD session."; 816 } 817 leaf outer-security-key-id { 818 type uint8; 819 description 820 "As described in section 4.4.3, the received security 821 key id from the neighbor."; 822 } 823 description "The neighbor information."; 824 } // neighbor 826 grouping direction-type { 827 leaf direction-type { 828 type enumeration { 829 enum illegal { 830 description "Illegal direction."; 831 } 832 enum south { 833 description "A link to a node one level down."; 834 } 835 enum north { 836 description "A link to a node one level up."; 837 } 838 enum east-west { 839 description "A link to a node in the same level."; 840 } 841 enum max { 842 description "The max value of direction."; 843 } 844 } 845 config false; 846 description "The type of a link."; 847 } 848 description "The type of a link."; 849 } // direction-type 851 grouping tie-header { 852 uses direction-type; 853 leaf originator { 854 type system-id; 855 description "The originator's system-id of this TIE."; 856 } 858 leaf tie-type { 859 type enumeration { 860 enum "node" { 861 description "The node TIE."; 862 } 863 enum "prefix" { 864 description "The prefix TIE."; 865 } 866 enum "positive-disaggregation-prefix" { 867 description "The positive disaggregation prefix TIE."; 868 } 869 enum "negative-disaggregation-prefix" { 870 description "The negative disaggregation prefix TIE."; 871 } 872 enum "pgp-prefix" { 873 description "The policy guide prefix TIE."; 874 } 875 enum "key-value" { 876 description "The key value TIE."; 877 } 878 enum "external-prefix" { 879 description "The external prefix TIE."; 880 } 881 enum "positive-external-disaggregation-prefix" { 882 description 883 "The positive external disaggregation prefix TIE."; 884 } 885 } 886 description "The types of TIE."; 887 } 889 leaf tie-number { 890 type uint32; 891 description "The number of this TIE"; 892 } 894 leaf seq { 895 type uint64; 896 description 897 "As described in section 4.2.3.1, the sequence number 898 of a TIE."; 899 } 900 leaf origination-time { 901 type uint32; 902 description 903 "Absolute timestamp when the TIE was generated. This can 904 be used on fabrics with synchronized clock to prevent 905 lifetime modification attacks."; 906 } 907 leaf origination-lifetime { 908 type uint32; 909 description 910 "Original lifetime when the TIE was generated. 911 This can be used on fabrics with synchronized clock to 912 prevent lifetime modification attacks."; 913 } 915 description 916 "TIE is the acronym for 'Topology Information Element'. 917 TIEs are exchanged between RIFT nodes to describe parts 918 of a network such as links and address prefixes. 919 This is the TIE header information."; 920 } // tie-header 922 /* 923 * Data nodes 924 */ 925 augment "/rt:routing/rt:control-plane-protocols" 926 + "/rt:control-plane-protocol" { 927 when "derived-from-or-self(rt:type, 'rift:rift')" { 928 description 929 "This augment is only valid when routing protocol 930 instance type is 'RIFT'."; 931 } 932 description "RIFT ( Routing in Fat Trees ) YANG model."; 934 container rift { 935 description "RIFT configuration and state data."; 937 uses base-node-info; 938 leaf configured-level { 939 type level; 940 description 941 "The configured level value of this node."; 942 } 943 uses node-flag; 945 leaf protocol-major-version { 946 type uint8; 947 config false; 948 mandatory true; 949 description 950 "Represents protocol encoding schema major version."; 952 } 953 leaf protocol-minor-version { 954 type uint16; 955 config false; 956 mandatory true; 957 description 958 "Represents protocol encoding schema minor version."; 959 } 960 leaf hierarchy-indications { 961 type enumeration { 962 enum "leaf-only" { 963 description 964 "The node will never leave the 965 'bottom of the hierarchy'."; 966 } 967 enum "leaf-only-and-leaf-2-leaf-procedures" { 968 description "This means leaf to leaf."; 969 } 970 enum "top-of-fabric" { 971 description "The node is 'top of fabric'."; 972 } 973 } 974 config false; 975 description "The hierarchy indications of this node."; 976 } 978 leaf flood-reduction { 979 type boolean; 980 description 981 "If the node supports flood reduction function defined in 982 section 4.2.3.8. If this value is set to 'FALSE', it 983 means that the flood reduction function is disabled."; 984 } 986 leaf nonce-increasing-interval { 987 type uint16; 988 units seconds; 989 description 990 "The configurable nonce increasing interval."; 991 } 992 leaf maximum-nonce-delta { 993 if-feature nonce-delta-adjust; 994 type uint8 { 995 range "1..5"; 996 } 997 description 998 "The configurable valid nonce delta value used for 999 security. It is used as vulnerability window defined 1000 in section 4.4.7. 1001 If the nonces in received packet exceeds the range 1002 indicated by this value, the packet MUST be discarded."; 1003 } 1004 container rx-lie-multicast-address { 1005 uses addresses; 1006 description 1007 "The configurable LIE receiving IPv4/IPv6 multicast 1008 address. '224.0.0.120' is default address value. 1009 Different multicast addresses can be used for receiving 1010 and sending."; 1011 } 1012 container tx-lie-multicast-address { 1013 uses addresses; 1014 description 1015 "The configurable LIE sending IPv4/IPv6 multicast 1016 address. 'FF02::A1F7' is default address value. 1017 Different multicast addresses can be used for receiving 1018 and sending."; 1019 } 1020 leaf lie-tx-port { 1021 type inet:port-number; 1022 description 1023 "The UDP port of LIE packet sending. The default port 1024 number is 914. The value can be set to other value 1025 associated with different RIFT instance."; 1026 } 1028 container global-link-capabilities { 1029 uses link-capabilities; 1030 description 1031 "The node default link capabilities. It can be overwrite 1032 by the configuration underneath interface and neighbor."; 1033 } 1035 leaf rx-flood-port { 1036 type inet:port-number; 1037 default "915"; 1038 description 1039 "The UDP port which can be used to receive flooded 1040 TIEs. The default port number is 915. The value can 1041 be set to other value associated with different 1042 RIFT instance."; 1043 } 1044 leaf holdtime { 1045 type rt-types:timer-value-seconds16; 1046 units seconds; 1047 default "3"; 1048 description "The holding time of LIE."; 1049 } 1050 leaf tide-generation-interval { 1051 type rt-types:timer-value-seconds16; 1052 units seconds; 1053 default "5"; 1054 description "The TIDE generation interval."; 1055 } 1057 leaf tie-security-key-id { 1058 type uint32; 1059 description 1060 "As described in section 4.4.3, this value implies key 1061 type and algorithm. Value 0 means that no valid 1062 fingerprint was computed. This key ID scope is local 1063 to the nodes on both ends of the adjacency."; 1064 } 1066 list interface { 1067 key "name"; 1068 leaf link-id { 1069 type linkid-type; 1070 config false; 1071 description "The local id of this interface."; 1072 } 1073 leaf name { 1074 type if:interface-ref; 1075 description "The interface's name."; 1076 } 1077 leaf cost { 1078 type uint32; 1079 description 1080 "The cost from this interface to the neighbor."; 1081 } 1082 container address-families { 1083 description 1084 "Containing address families on the interface."; 1085 list address-family { 1086 key address-family; 1087 description 1088 "A list of address families enabled on the 1089 interface."; 1090 leaf address-family { 1091 type iana-rt-types:address-family; 1092 description 1093 "Indication which address families are up on the 1094 interface."; 1095 } 1097 } 1098 } 1099 container advertised-source-addresses { 1100 uses addresses; 1101 description 1102 "The address used in the advertised LIE and TIE 1103 packets."; 1104 } 1105 uses direction-type; 1107 leaf was-the-last-lie-accepted { 1108 type boolean; 1109 config false; 1110 description 1111 "If the most recently received LIE was accepted or 1112 rejected. If the LIE was rejected, the neighbor error 1113 notifications should be used to find the reason."; 1114 } 1115 leaf last-lie-reject-reason { 1116 type string; 1117 config false; 1118 description 1119 "Description for the reject reason of the last LIE."; 1120 } 1121 container advertised-in-lies { 1122 config false; 1123 uses lie-elements; 1124 description 1125 "The attributes advertised in the LIEs from 1126 this interface."; 1127 } 1128 container link-capabilities { 1129 uses link-capabilities; 1130 description 1131 "The interface's link capabilities."; 1132 } 1133 leaf state { 1134 type enumeration { 1135 enum "OneWay" { 1136 description "The initial state of neighbor."; 1137 } 1138 enum "TwoWay" { 1139 description "This means leaf to leaf."; 1140 } 1141 enum "ThreeWay" { 1142 description "The node is 'top of fabric'."; 1143 } 1144 enum "Multiple-Neighbors-Wait" { 1145 description "The node is 'top of fabric'."; 1146 } 1147 } 1148 config false; 1149 mandatory true; 1150 description "The hierarchy indications of this node."; 1151 } 1152 leaf number-of-flaps { 1153 type uint32; 1154 config false; 1155 description 1156 "The number of interface state flaps."; 1157 } 1158 leaf last-state-change { 1159 type yang:date-and-time; 1160 config false; 1161 description "Time duration in the current state."; 1162 } 1164 description "The interface information on this node."; 1165 } // list interface 1167 leaf-list miscabled-links { 1168 type linkid-type; 1169 config false; 1170 description "List of miscabled links."; 1171 } 1173 choice algorithm-type { 1174 case spf { 1175 description "The algorithm is SPF."; 1176 } 1177 case all-path { 1178 description "The algorithm is all-path."; 1179 } 1180 description "The possible algorithm types."; 1181 } 1183 leaf hal { 1184 type level; 1185 config false; 1186 description 1187 "The highest defined level value seen from all valid 1188 level offers received."; 1189 } 1191 leaf instance-label { 1192 if-feature label-switching; 1193 type uint32; 1194 description 1195 "As per section 4.3.7, a locally significant, downstream 1196 assigned, interface specific label may be advertised in 1197 its LIEs. This value can be used to distinguish among 1198 multiple RIFT instances."; 1199 } 1201 list neighbor { 1202 key "system-id"; 1203 config false; 1204 uses base-node-info; 1205 uses neighbor; 1206 description "The neighbor's information."; 1207 } 1209 container database { 1210 config false; 1211 list tie { 1212 key "direction-type originator tie-type tie-number"; 1213 description 1214 "A list of TIEs (Topology Information Elements)."; 1215 uses tie-header; 1217 container node { 1218 uses base-node-info; 1219 leaf flood-reduction { 1220 type boolean; 1221 description 1222 "If the node enable the flood reduction function."; 1223 } 1224 uses node-flag; 1225 leaf startup-time { 1226 type uint64; 1227 description "Startup time of the node."; 1228 } 1229 list neighbor { 1230 key "system-id"; 1231 uses base-node-info; 1232 uses neighbor-node; 1233 description "The node TIE information of a neighbor."; 1234 } 1236 leaf-list miscabled-links { 1237 type linkid-type; 1238 config false; 1239 description "List of miscabled links."; 1240 } 1241 description "The node element information in this TIE."; 1242 } // node 1244 container prefix { 1245 leaf prefix { 1246 type inet:ip-prefix; 1247 description "The prefix information."; 1248 } 1250 choice type { 1251 case prefix { 1252 description "It is the prefixes TIE element."; 1253 } 1254 case positive-disaggregation { 1255 description 1256 "It is the positive disaggregation prefixes 1257 TIE element."; 1258 } 1259 case negative-disaggregation { 1260 description 1261 "It is the negative disaggregation prefixes 1262 TIE element."; 1263 } 1264 case external { 1265 description 1266 "It is the external prefixes TIE element."; 1267 } 1268 case positive-external-disaggregation { 1269 description 1270 "It is the positive external disaggregation 1271 prefixes TIE element."; 1272 } 1273 case pgp { 1274 description 1275 "It is the policy guide prefixes TIE element."; 1276 } 1277 description "The type of prefix TIE."; 1278 } 1280 leaf metric { 1281 type uint32; 1282 description "The metric of this prefix."; 1283 } 1284 leaf-list tags { 1285 type uint64; 1286 description "The tags of this prefix."; 1287 } 1288 container monotonic-clock { 1289 container prefix-sequence-type { 1290 leaf timestamp { 1291 type ieee802-1as-timestamp-type; 1292 mandatory true; 1293 description 1294 "The timestamp per 802.1AS can be advertised 1295 with the desired prefix North TIEs."; 1296 } 1297 leaf transaction-id { 1298 type uint8; 1299 description 1300 "As per RFC 8505, a sequence number called a 1301 Transaction ID (TID) with a prefix can be 1302 advertised."; 1303 } 1304 description 1305 "As described in section 4.3.3, the prefix 1306 sequence attribute which can be advertised 1307 for mobility."; 1308 } 1309 description 1310 "The monotonic clock for mobile addresses."; 1311 } 1312 leaf loopback { 1313 type boolean; 1314 description 1315 "Indicates if the interface is a node loopback. 1316 According to section 4.3.10, the node's loopback 1317 address can be injected into North and South 1318 Prefix TIEs for node reachability."; 1319 } 1320 leaf directly-attached { 1321 type boolean; 1322 description 1323 "Indicates that the prefix is directly attached, 1324 i.e. should be routed to even if the node is 1325 in overload."; 1326 } 1327 leaf from-link { 1328 type linkid-type; 1329 description 1330 "In case of locally originated prefixes, 1331 i.e. interface addresses this can describe which 1332 link the address belongs to."; 1333 } 1334 description "The detail information of a prefix."; 1335 } // prefix 1336 container key-value { 1337 leaf key { 1338 type binary; 1339 description "The type of key value combination."; 1340 } 1341 leaf value { 1342 type binary; 1343 description "The value of key value combination."; 1344 } 1345 description 1346 "The information used to distinguish a Key/Value 1347 pair. When the type of kv is set to 'node', 1348 node-element is making sense. When the type of 1349 kv is set to other values except 'node', 1350 prefix-info is making sense."; 1351 } // kv-store 1352 } // ties 1353 description "The TIEs information in database."; 1354 }// container database 1355 }//rift 1356 }//augment 1358 /* 1359 * Notifications 1360 */ 1361 notification error-set { 1362 description "The errors notification of RIFT."; 1363 container tie-level-error { 1364 list tie { 1365 key "originator"; 1366 uses tie-header; 1367 description "The level is undefined in the LIEs."; 1368 } 1369 description "The TIE errors set."; 1370 } 1371 container neighbor-error { 1372 list neighbor { 1373 key "system-id"; 1374 uses base-node-info; 1375 uses neighbor; 1376 description "The information of a neighbor."; 1377 } 1378 description "The neighbor errors set."; 1379 } 1380 } 1381 } 1382 1384 4. Security Considerations 1386 The YANG module specified in this document defines a schema for data 1387 that is designed to be accessed via network management protocols such 1388 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 1389 is the secure transport layer, and the mandatory-to-implement secure 1390 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 1391 is HTTPS, and the mandatory-to-implement secure transport is TLS 1392 [RFC8446]. 1394 The NETCONF access control model [RFC8341] provides the means to 1395 restrict access for particular NETCONF or RESTCONF users to a 1396 preconfigured subset of all available NETCONF or RESTCONF protocol 1397 operations and content. 1399 There are a number of data nodes defined in this YANG module that are 1400 writable/creatable/deletable (i.e., config true, which is the 1401 default). These data nodes may be considered sensitive or vulnerable 1402 in some network environments. Write operations (e.g., edit-config) 1403 to these data nodes without proper protection can have a negative 1404 effect on network operations. Writable data node represent 1405 configuration of each instance, node, interface, etc. These 1406 correspond to the following schema nodes: 1408 o /rift 1410 o /rift/node/ 1412 Modifying the configuration may cause all the RIFT neighborship to be 1413 rebuilt. For example, the configuration changing of level or 1414 systemid, will lead to all the neighbor connections of this node 1415 rebuilt. The incorrect modification of authentication, except for 1416 the neighbor connection broken, will lead to the permanent connection 1417 broken. The modification of interface, will lead to the neighbor 1418 state changing. In general, unauthorized modification of most RIFT 1419 configurations will pose there own set of security risks and the 1420 "Security Considerations" in the respective reference RFCs should be 1421 consulted. 1423 Some of the readable data nodes in this YANG module may be considered 1424 sensitive or vulnerable in some network environments. It is thus 1425 important to control read access (e.g., via get, get-config, or 1426 notification) to these data nodes. These are the subtrees and data 1427 nodes and their sensitivity/vulnerability: 1429 o /rift 1431 o /rift/interface 1432 o /rift/database 1434 o /rift/kv-store 1436 The exposure of the database will expose the detailed topology of the 1437 network. Network operators may consider their topologies to be 1438 sensitive confidential data. 1440 For RIFT authentication, configuration is supported via the 1441 specification of key-chains [RFC8177] or the direct specification of 1442 key and authentication algorithm. Hence, authentication 1443 configuration inherits the security considerations of [RFC8177]. 1444 This includes the considerations with respect to the local storage 1445 and handling of authentication keys. 1447 5. IANA Considerations 1449 RFC Ed.: Please replace all occurrences of 'XXXX' with the actual RFC 1450 number (and remove this note). 1452 This document registers a URI in the IETF XML registry [RFC3688]. 1453 Following the format in [RFC3688], the following registration is 1454 requested to be made: 1456 URI: urn:ietf:params:xml:ns:yang:ietf-rift 1458 Registrant Contact: The IESG 1460 XML: N/A, the requested URI is an XML namespace. 1462 This document also requests one new YANG module name in the YANG 1463 Module Names registry [RFC6020] with the following suggestion: 1465 name: ietf-rift 1467 namespace: urn:ietf:params:xml:ns:yang:ietf-rift 1469 prefix: rift 1471 reference: RFC XXXX 1473 6. Acknowledgement 1475 The authors would like to thank Tony Przygienda, Benchong Xu 1476 (xu.benchong@zte.com.cn), for their review, valuable comments and 1477 suggestions. 1479 7. References 1481 7.1. Normative References 1483 [I-D.ietf-rift-rift] 1484 Przygienda, T., Sharma, A., Thubert, P., Rijsman, B., and 1485 D. Afanasiev, "RIFT: Routing in Fat Trees", draft-ietf- 1486 rift-rift-12 (work in progress), May 2020. 1488 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1489 Requirement Levels", BCP 14, RFC 2119, 1490 DOI 10.17487/RFC2119, March 1997, 1491 . 1493 [RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 1494 (BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881, 1495 DOI 10.17487/RFC5881, June 2010, 1496 . 1498 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1499 the Network Configuration Protocol (NETCONF)", RFC 6020, 1500 DOI 10.17487/RFC6020, October 2010, 1501 . 1503 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1504 and A. Bierman, Ed., "Network Configuration Protocol 1505 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1506 . 1508 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1509 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 1510 . 1512 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 1513 RFC 6991, DOI 10.17487/RFC6991, July 2013, 1514 . 1516 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1517 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1518 . 1520 [RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG", 1521 RFC 7951, DOI 10.17487/RFC7951, August 2016, 1522 . 1524 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 1525 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 1526 . 1528 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1529 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1530 May 2017, . 1532 [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. 1533 Zhang, "YANG Data Model for Key Chains", RFC 8177, 1534 DOI 10.17487/RFC8177, June 2017, 1535 . 1537 [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, 1538 "Common YANG Data Types for the Routing Area", RFC 8294, 1539 DOI 10.17487/RFC8294, December 2017, 1540 . 1542 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1543 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 1544 . 1546 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 1547 Access Control Model", STD 91, RFC 8341, 1548 DOI 10.17487/RFC8341, March 2018, 1549 . 1551 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1552 and R. Wilton, "Network Management Datastore Architecture 1553 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 1554 . 1556 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface 1557 Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, 1558 . 1560 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 1561 Routing Management (NMDA Version)", RFC 8349, 1562 DOI 10.17487/RFC8349, March 2018, 1563 . 1565 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 1566 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 1567 . 1569 [RFC8505] Thubert, P., Ed., Nordmark, E., Chakrabarti, S., and C. 1570 Perkins, "Registration Extensions for IPv6 over Low-Power 1571 Wireless Personal Area Network (6LoWPAN) Neighbor 1572 Discovery", RFC 8505, DOI 10.17487/RFC8505, November 2018, 1573 . 1575 7.2. Informative References 1577 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1578 DOI 10.17487/RFC3688, January 2004, 1579 . 1581 [RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of 1582 Documents Containing YANG Data Models", BCP 216, RFC 8407, 1583 DOI 10.17487/RFC8407, October 2018, 1584 . 1586 [RFC8639] Voit, E., Clemm, A., Gonzalez Prieto, A., Nilsen-Nygaard, 1587 E., and A. Tripathy, "Subscription to YANG Notifications", 1588 RFC 8639, DOI 10.17487/RFC8639, September 2019, 1589 . 1591 [RFC8641] Clemm, A. and E. Voit, "Subscription to YANG Notifications 1592 for Datastore Updates", RFC 8641, DOI 10.17487/RFC8641, 1593 September 2019, . 1595 Authors' Addresses 1597 Bruno Rijsman 1598 Individual 1600 Email: brunorijsman@gmail.com 1602 Zheng Zhang (editor) 1603 ZTE Corporation 1605 Email: zhang.zheng@zte.com.cn 1607 Yuehua Wei 1608 ZTE Corporation 1610 Email: wei.yuehua@zte.com.cn 1612 Shaowen Ma 1613 Google 1615 Email: mashaowen@gmail.com 1616 Xufeng Liu 1617 Volta Networks 1619 Email: xufeng.liu.ietf@gmail.com