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