idnits 2.17.1 draft-ietf-babel-yang-model-01.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 255 has weird spacing: '...-verify boo...' == Line 259 has weird spacing: '...-string bin...' == Line 261 has weird spacing: '...ng-hash bin...' == Line 272 has weird spacing: '...ate-key bin...' == Line 275 has weird spacing: '...-string bin...' == (1 more instance...) == The document seems to lack the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords -- however, there's a paragraph with a matching beginning. Boilerplate error? (The document does seem to have the reference to RFC 2119 which the ID-Checklist requires). -- The document date (March 5, 2019) is 1880 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) == Outdated reference: A later version (-20) exists of draft-ietf-babel-rfc6126bis-07 == Outdated reference: A later version (-14) exists of draft-ietf-babel-information-model-05 Summary: 0 errors (**), 0 flaws (~~), 10 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Babel Working Group M. Jethanandani 3 Internet-Draft VMware 4 Intended status: Standards Track B. Stark 5 Expires: September 6, 2019 AT&T 6 March 5, 2019 8 YANG Data Model for Babel 9 draft-ietf-babel-yang-model-01 11 Abstract 13 This document defines a data model for the Babel routing protocol. 14 The data model is defined using the YANG data modeling language. 16 Requirements Language 18 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 19 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 20 document are to be interpreted as described in BCP 14 21 [RFC2119][RFC8174] when, and only when, they appear in all capitals, 22 as shown here.. 24 Status of This Memo 26 This Internet-Draft is submitted in full conformance with the 27 provisions of BCP 78 and BCP 79. 29 Internet-Drafts are working documents of the Internet Engineering 30 Task Force (IETF). Note that other groups may also distribute 31 working documents as Internet-Drafts. The list of current Internet- 32 Drafts is at https://datatracker.ietf.org/drafts/current/. 34 Internet-Drafts are draft documents valid for a maximum of six months 35 and may be updated, replaced, or obsoleted by other documents at any 36 time. It is inappropriate to use Internet-Drafts as reference 37 material or to cite them other than as "work in progress." 39 This Internet-Draft will expire on September 6, 2019. 41 Copyright Notice 43 Copyright (c) 2019 IETF Trust and the persons identified as the 44 document authors. All rights reserved. 46 This document is subject to BCP 78 and the IETF Trust's Legal 47 Provisions Relating to IETF Documents 48 (https://trustee.ietf.org/license-info) in effect on the date of 49 publication of this document. Please review these documents 50 carefully, as they describe your rights and restrictions with respect 51 to this document. Code Components extracted from this document must 52 include Simplified BSD License text as described in Section 4.e of 53 the Trust Legal Provisions and are provided without warranty as 54 described in the Simplified BSD License. 56 Table of Contents 58 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 59 1.1. Note to RFC Editor . . . . . . . . . . . . . . . . . . . 2 60 1.2. Definitions and Acronyms . . . . . . . . . . . . . . . . 3 61 1.3. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 3 62 2. Babel Module . . . . . . . . . . . . . . . . . . . . . . . . 3 63 2.1. Information Model . . . . . . . . . . . . . . . . . . . . 3 64 2.2. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 5 65 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 33 66 3.1. URI Registrations . . . . . . . . . . . . . . . . . . . . 33 67 3.2. YANG Module Name Registration . . . . . . . . . . . . . . 33 68 4. Security Considerations . . . . . . . . . . . . . . . . . . . 33 69 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 34 70 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 34 71 6.1. Normative References . . . . . . . . . . . . . . . . . . 34 72 6.2. Informative References . . . . . . . . . . . . . . . . . 34 73 Appendix A. An Appendix . . . . . . . . . . . . . . . . . . . . 35 74 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35 76 1. Introduction 78 This document defines a data model for the Babel routing protocol 79 [I-D.ietf-babel-rfc6126bis]. The data model is defined using YANG 80 1.1 [RFC7950] data modeling language and is Network Management 81 Datastore Architecture (NDMA) [RFC8342] compatible. It is based on 82 the Babel Information Model [I-D.ietf-babel-information-model]. 84 1.1. Note to RFC Editor 86 Artwork in this document contains shorthand references to drafts in 87 progress. Please apply the following replacements and remove this 88 note before publication. 90 o "XXXX" --> the assigned RFC value for this draft both in this 91 draft and in the YANG models under the revision statement. 93 o "ZZZZ" --> the assigned RFC value for Babel Information Model 94 [I-D.ietf-babel-information-model] 96 o Revision date in model, in the format 2019-03-07 needs to get 97 updated with the date the draft gets approved. The date also 98 needs to get reflected on the line with . 100 1.2. Definitions and Acronyms 102 o 104 1.3. Tree Diagram 106 For a reference to the annotations used in tree diagrams included in 107 this draft, please see YANG Tree Diagrams [RFC8340]. 109 2. Babel Module 111 This document defines a YANG 1.1 [RFC7950] data model for the 112 configuration and management of Babel. The YANG module is based on 113 the Babel Information Model [I-D.ietf-babel-information-model]. 115 2.1. Information Model 117 The following diagram illustrates a top level hierarchy of the model. 118 In addition to information like the version number implemented by 119 this device, the model contains subtrees on constants, interfaces, 120 routes and security. 122 module: ietf-babel 123 augment /rt:routing/rt:control-plane-protocols 124 /rt:control-plane-protocol: 125 +--rw babel! 126 +--ro version? string 127 +--rw enable? boolean 128 +--ro router-id binary 129 +--rw link-type* identityref 130 +--ro sequence-number? uint16 131 +--rw metric-comp-algorithms* identityref 132 +--rw security-supported* identityref 133 +--rw hmac-enable? boolean 134 +--rw hmac-algorithms* identityref 135 +--rw dtls-enable? boolean 136 +--rw dtls-cert-types* identityref 137 +--rw stats-enable? boolean 138 +--rw constants 139 | ... 140 +--rw interfaces* [reference] 141 | ... 142 +--rw hmac* [algorithm] 143 | ... 144 +--rw dtls* [name] 145 ... 146 augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route: 147 +--ro routes* [prefix] 148 +--ro prefix inet:ip-prefix 149 +--ro router-id? binary 150 +--ro neighbor? leafref 151 +--ro (metric) 152 | ... 153 +--ro seqno? uint16 154 +--ro next-hop? inet:ip-address 155 +--ro feasible? boolean 156 +--ro selected? boolean 158 The interfaces subtree describes attributes such as interface object 159 that is being referenced, the type of link as enumerated by Babel 160 Link Types, and whether the interface is enabled or not. 162 The constants subtree describes the UDP port used for sending and 163 receiving Babel messages, and the multicast group used to send and 164 receive announcements on IPv6. 166 The routes subtree describes objects such as the prefix for which the 167 route is advertised, a reference to the neighboring route, and next- 168 hop address. 170 Finally, for security two subtree are defined. The hmac subtree 171 which refers to parameters related to HMAC security mechanism. The 172 boolean flag apply-all indicates whether HMAC mechanism is applicable 173 for all interfaces or just for interfaces listed in the leaf-list 174 'interfaces'. The dtls subtree refers to parameters related to DTLS 175 security mechanism. Similar to the HMAC mechanism, the boolean flag 176 apply-all indicates whether DTLS mechanism is applicable for all 177 interfaces or just for interfaces listed in the leaf-list 178 'interfaces'. 180 2.2. YANG Module 182 This module augments A YANG Data Model for Interface Management 183 [RFC8343], YANG Routing Management [RFC8349], and imports definitions 184 from Common YANG Data Types [RFC6991]. 186 module: ietf-babel 187 augment /rt:routing/rt:control-plane-protocols 188 /rt:control-plane-protocol: 189 +--rw babel! 190 +--ro version? string 191 +--rw enable? boolean 192 +--ro router-id binary 193 +--rw link-type* identityref 194 +--ro sequence-number? uint16 195 +--rw metric-comp-algorithms* identityref 196 +--rw security-supported* identityref 197 +--rw hmac-enable? boolean 198 +--rw hmac-algorithms* identityref 199 +--rw dtls-enable? boolean 200 +--rw dtls-cert-types* identityref 201 +--rw stats-enable? boolean 202 +--rw constants 203 | +--rw udp-port? inet:port-number 204 | +--rw mcast-group? inet:ip-address 205 +--rw interfaces* [reference] 206 | +--rw reference if:interface-ref 207 | +--rw enable? boolean 208 | +--rw link-type? identityref 209 | +--rw metric-algorithm? identityref 210 | +--ro mcast-hello-seqno? uint16 211 | +--ro mcast-hello-interval? uint16 212 | +--rw update-interval? uint16 213 | +--rw packet-log-enable? boolean 214 | +--rw packet-log? inet:uri 215 | +--ro stats 216 | | +--ro sent-mcast-hello? yt:counter32 217 | | +--ro sent-mcast-update? yt:counter32 218 | | +--ro received-packets? yt:counter32 219 | | +---x reset 220 | | +---w input 221 | | | +---w reset-at? yt:date-and-time 222 | | +--ro output 223 | | +--ro reset-finished-at? yt:date-and-time 224 | +--rw neighbor-objects* [neighbor-address] 225 | +--rw neighbor-address inet:ip-address 226 | +--rw hello-mcast-history? string 227 | +--rw hello-ucast-history? string 228 | +--rw txcost? int32 229 | +--rw exp-mcast-hello-seqno? uint16 230 | +--rw exp-ucast-hello-seqno? uint16 231 | +--rw ucast-hello-seqno? uint16 232 | +--rw ucast-hello-interval? uint16 233 | +--rw rxcost? int32 234 | +--rw cost? int32 235 | +--ro stats 236 | +--ro sent-ucast-hello? yt:counter32 237 | +--ro sent-ucast-update? yt:counter32 238 | +--ro sent-ihu? yt:counter32 239 | +--ro received-hello? yt:counter32 240 | +--ro received-update? yt:counter32 241 | +--ro received-ihu? yt:counter32 242 | +---x reset 243 | +---w input 244 | | +---w reset-at? yt:date-and-time 245 | +--ro output 246 | +--ro reset-finished-at? yt:date-and-time 247 +--rw hmac* [algorithm] 248 | +--rw algorithm identityref 249 | +--rw verify boolean 250 | +--rw apply-all boolean 251 | +--rw interfaces* if:interface-ref 252 | +--rw hmac-keys* [name] 253 | +--rw name string 254 | +--rw use-sign boolean 255 | +--rw use-verify boolean 256 | +--rw value binary 257 | +---x test 258 | +---w input 259 | | +---w test-string binary 260 | +--ro output 261 | +--ro resulting-hash binary 262 +--rw dtls* [name] 263 +--rw name string 264 +--rw apply-all boolean 265 +--rw interfaces* if:interface-ref 266 +--rw cached-info? boolean 267 +--rw cert-prefer* identityref 268 +--rw certs* [name] 269 +--rw name string 270 +--rw value string 271 +--rw type identityref 272 +--rw private-key binary 273 +---x test 274 +---w input 275 | +---w test-string binary 276 +--ro output 277 +--ro resulting-hash binary 278 augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route: 279 +--ro routes* [prefix] 280 +--ro prefix inet:ip-prefix 281 +--ro router-id? binary 282 +--ro neighbor? leafref 283 +--ro (metric) 284 | +--:(received-metric) 285 | | +--ro received-metric? uint16 286 | +--:(calculated-metric) 287 | +--ro calculated-metric? uint16 288 +--ro seqno? uint16 289 +--ro next-hop? inet:ip-address 290 +--ro feasible? boolean 291 +--ro selected? boolean 293 file "ietf-babel@2019-03-07.yang" 295 module ietf-babel { 296 yang-version 1.1; 297 namespace "urn:ietf:params:xml:ns:yang:ietf-babel"; 298 prefix babel; 300 import ietf-yang-types { 301 prefix yt; 302 reference 303 "RFC 6991 - Common YANG Data Types."; 304 } 305 import ietf-inet-types { 306 prefix inet; 307 reference 308 "RFC 6991 - Common YANG Data Types."; 309 } 310 import ietf-interfaces { 311 prefix if; 312 reference 313 "RFC 8343 - A YANG Data Model for Interface Management"; 314 } 315 import ietf-routing { 316 prefix "rt"; 317 reference 318 "RFC 8349 - YANG Routing Management"; 319 } 321 organization 322 "IETF Babel routing protocol Working Group"; 324 contact 325 "WG Web: http://tools.ietf.org/wg/babel/ 326 WG List: babel@ietf.org 328 Editor: Mahesh Jethanandani 329 mjethanandani@gmail.com 330 Editor: Barbara Stark 331 bs7652@att.com"; 333 description 334 "This YANG module defines a model for the Babel routing 335 protocol. 337 Copyright (c) 2018 IETF Trust and the persons identified as 338 the document authors. All rights reserved. 339 Redistribution and use in source and binary forms, with or 340 without modification, is permitted pursuant to, and subject 341 to the license terms contained in, the Simplified BSD 342 License set forth in Section 4.c of the IETF Trust's Legal 343 Provisions Relating to IETF Documents 344 (http://trustee.ietf.org/license-info). 346 This version of this YANG module is part of RFC XXXX; see 347 the RFC itself for full legal notices."; 349 revision 2019-03-07 { 350 description 351 "Initial version."; 352 reference 353 "RFC XXX: Babel YANG Data Model."; 354 } 356 /* 357 * Identities 358 */ 359 identity link-type { 360 description 361 "Base identity from which all Babel Link Types are derived."; 362 } 364 identity ethernet { 365 base "link-type"; 366 description 367 "Ethernet link type for Babel Routing Protocol."; 368 } 369 identity other { 370 base "link-type"; 371 description 372 "Other link type for Babel Routing Protocol."; 373 } 374 identity tunnel { 375 base "link-type"; 376 description 377 "Tunnel link type for Babel Routing Protocol."; 378 } 379 identity wireless { 380 base "link-type"; 381 description 382 "Wireless link type for Babel Routing Protocol."; 383 } 384 identity moca { 385 base "link-type"; 386 description 387 "Multimedia over Coax Alliance."; 388 } 389 identity g-hn-over-coax { 390 base "link-type"; 391 description 392 "G.hn over coax."; 393 reference 394 "G.9960: Unified high-speed wireline-base home networking 395 transceivers."; 396 } 397 identity g-hn-over-powerline { 398 base "link-type"; 399 description 400 "G.hn over powerline."; 401 reference 402 "G.9960: Unified high-speed wireline-base home networking 403 transceivers."; 404 } 405 identity home-plug { 406 base "link-type"; 407 description 408 "HomePlug Power Alliance."; 410 reference 411 "IEEE 1901: HD-PC"; 412 } 413 identity ieee-802-15 { 414 base "link-type"; 415 description 416 "Wireless Personal Area Networks (WPAN)."; 417 reference 418 "IEEE 802.15: Wireless Personal Area Networks (WPAN)."; 419 } 421 identity metric-comp-algorithms { 422 description 423 "Base identity from which all Babel metric comp algorithms 424 are derived."; 425 } 426 identity k-out-of-j { 427 base "metric-comp-algorithms"; 428 description 429 "k-out-of-j algorithm."; 430 } 431 identity etx { 432 base "metric-comp-algorithms"; 433 description 434 "Expected Transmission Count."; 435 } 437 /* 438 * Babel security type identities 439 */ 440 identity security-supported { 441 description 442 "Base identity from which all Babel security types are 443 derived."; 444 } 446 identity hmac { 447 base security-supported; 448 description 449 "HMAC supported."; 450 } 452 identity dtls { 453 base security-supported; 454 description 455 "Datagram Transport Layer Security (DTLS) supported."; 456 reference 457 "RFC 6347, Datagram Transport Layer Security Version 1.2."; 459 } 461 /* 462 * Babel HMAC algorithms identities. 463 */ 464 identity hmac-algorithms { 465 description 466 "Base identity for all Babel HMAC algorithms."; 467 } 469 identity hmac-sha256 { 470 base hmac-algorithms; 471 description 472 "HMAC-SHA256 algorithm supported."; 473 } 475 identity blake2s { 476 base hmac-algorithms; 477 description 478 "BLAKE2s algorithm supported."; 479 reference 480 "RFC 7693, The BLAKE2 Cryptographic Hash and Message 481 Authentication Code (MAC)."; 482 } 484 /* 485 * Babel Cert Types 486 */ 487 identity dtls-cert-types { 488 description 489 "Base identity for Babel DTLS certificate types."; 490 } 492 identity x-509 { 493 base dtls-cert-types; 494 description 495 "X.509 certificate type."; 496 } 498 identity raw-public-key { 499 base dtls-cert-types; 500 description 501 "Raw Public Key type."; 502 } 504 /* 505 * Babel routing protocol identity. 506 */ 508 identity babel { 509 base "rt:control-plane-protocol"; 510 description 511 "Babel routing protocol"; 512 } 514 /* 515 * Features 516 */ 518 /* 519 * Features supported 520 */ 522 /* 523 * Typedefs 524 */ 526 /* 527 * Groupings 528 */ 529 grouping routes { 530 list routes { 531 key "prefix"; 533 leaf prefix { 534 type inet:ip-prefix; 535 description 536 "Prefix (expressed in ip-address/prefix-length format) for 537 which this route is advertised."; 538 reference 539 "RFC ZZZZ, Babel Information Model, Section 3.6."; 540 } 542 leaf router-id { 543 type binary; 544 description 545 "router-id of the source router for which this route is 546 advertised."; 547 reference 548 "RFC ZZZZ, Babel Information Model, Section 3.6."; 549 } 551 leaf neighbor { 552 type leafref { 553 path "/rt:routing/rt:control-plane-protocols/" + 554 "rt:control-plane-protocol/babel/interfaces/" + 555 "neighbor-objects/neighbor-address"; 557 } 558 description 559 "Reference to the babel-neighbors entry for the neighbor 560 that advertised this route."; 561 reference 562 "RFC ZZZZ, Babel Information Model, Section 3.6."; 563 } 565 choice metric { 566 mandatory "true"; 567 leaf received-metric { 568 type uint16; 569 description 570 "The metric with which this route was advertised by the 571 neighbor, or maximum value (infinity) to indicate a the 572 route was recently retracted and is temporarily 573 unreachable. this metric will be 0 (zero) if the route 574 was not received from a neighbor but was generated 575 through other means. Either babel-route-calculated-metric 576 or babel-route-received-metric MUST be provided."; 577 reference 578 "RFC ZZZZ, Babel Information Model, Section 3.6, 579 draft-ietf-babel-rfc6126bis, The Babel Routing Protocol, 580 Section 3.5.5."; 581 } 583 leaf calculated-metric { 584 type uint16; 585 description 586 "A calculated metric for this route. How the metric is 587 calculated is implementation-specific. Maximum value 588 (infinity) indicates the route was recently retracted 589 and is temporarily unreachable. Either 590 babel-route-calculated-metric or 591 babel-route-received-metric MUST be provided."; 592 reference 593 "RFC ZZZZ, Babel Information Model, Section 3.6, 594 draft-ietf-babel-rfc6126bis, The Babel Routing Protocol, 595 Section 3.5.5."; 596 } 597 description 598 "Either babel-route-calculated-metric or 599 babel-route-received-metric MUST be provided."; 600 reference 601 "RFC ZZZZ, Babel Information Model, Section 3.6, 602 draft-ietf-babel-rfc6126bis, The Babel Routing Protocol, 603 Section 3.5.5."; 604 } 605 leaf seqno { 606 type uint16; 607 description 608 "The sequence number with which this route was advertised."; 609 reference 610 "RFC ZZZZ, Babel Information Model, Section 3.6."; 611 } 613 leaf next-hop { 614 type inet:ip-address; 615 description 616 "The next-hop address of this route. This will be empty if 617 this route has no next-hop address."; 618 reference 619 "RFC ZZZZ, Babel Information Model, Section 3.6."; 620 } 622 leaf feasible { 623 type boolean; 624 description 625 "A boolean flag indicating whether this route is feasible."; 626 reference 627 "RFC ZZZZ, Babel Information Model, Section 3.6, 628 draft-ietf-babel-rfc6126bis, The Babel Routing Protocol, 629 Section 3.5.1."; 630 } 632 leaf selected { 633 type boolean; 634 description 635 "A boolean flag indicating whether this route is selected, 636 i.e., whether it is currently being used for forwarding and 637 is being advertised."; 638 reference 639 "RFC ZZZZ, Babel Information Model, Section 3.6."; 640 } 641 description 642 "A set of babel-route-obj objects. Includes received and 643 routes routes."; 644 reference 645 "RFC ZZZZ, Babel Information Model, Section 3.1."; 646 } 647 description 648 "Common grouping for routing used in RIB augmentation."; 649 } 651 /* 652 * Data model 653 */ 655 augment "/rt:routing/rt:control-plane-protocols/" + 656 "rt:control-plane-protocol" { 657 when "derived-from-or-self(rt:type, 'babel')" { 658 description 659 "Augmentation is valid only when the instance of routing type 660 is of type 'babel'."; 661 } 662 description 663 "Augment the routing module to support features such as VRF."; 664 reference 665 "YANG Routing Management, RFC 8349, Lhotka & Lindem, March 666 2018."; 668 container babel { 669 presence "A Babel container."; 671 leaf version { 672 type string; 673 config false; 674 description 675 "The name and version of this implementation of the Babel 676 protocol."; 677 reference 678 "RFC ZZZZ, Babel Information Model, Section 3.1."; 679 } 681 leaf enable { 682 type boolean; 683 default false; 684 description 685 "When written, it configures whether the protocol should be 686 enabled. A read from the or datastore 687 therefore indicates the configured administrative value of 688 whether the protocol is enabled or not. 690 A read from the datastore indicates whether 691 the protocol is actually running or not, i.e. it indicates 692 the operational state of the protocol."; 693 reference 694 "RFC ZZZZ, Babel Information Model, Section 3.1."; 695 } 697 leaf router-id { 698 type binary; 699 config false; 700 mandatory "true"; 701 description 702 "Every Babel speaker is assigned a router-id, which is an 703 arbitrary string of 8 octets that is assumed to be unique 704 across the routing domain"; 705 reference 706 "RFC ZZZZ, Babel Information Model, Section 3.1, 707 rfc6126bis, The Babel Routing Protocol. Section 3."; 708 } 710 leaf-list link-type { 711 type identityref { 712 base "link-type"; 713 } 714 description 715 "Link types supported by this implementation of Babel."; 716 reference 717 "RFC ZZZZ, Babel Information Model, Section 3.1."; 718 } 720 leaf sequence-number { 721 type uint16; 722 config false; 723 description 724 "Sequence number included in route updates for routes 725 originated by this node."; 726 reference 727 "RFC ZZZZ, Babel Information Model, Section 3.1."; 728 } 730 leaf-list metric-comp-algorithms { 731 type identityref { 732 base "metric-comp-algorithms"; 733 } 734 description 735 "List of cost compute algorithms supported by this 736 implementation of Babel."; 737 reference 738 "RFC ZZZZ, Babel Information Model, Section 3.1."; 739 } 741 leaf-list security-supported { 742 type identityref { 743 base "security-supported"; 744 } 745 description 746 "Babel security mechanism used by this implementation or 747 per interface."; 748 reference 749 "RFC ZZZZ, Babel Information Model, Section 3.1."; 750 } 752 leaf hmac-enable { 753 type boolean; 754 description 755 "Indicates whether the HMAC security mechanism is enabled 756 (true) or disabled (false)."; 757 reference 758 "RFC ZZZZ, Babel Information Model, Section 3.1."; 759 } 761 leaf-list hmac-algorithms { 762 type identityref { 763 base hmac-algorithms; 764 } 765 description 766 "List of supported HMAC computation algorithms. Possible 767 values include 'HMAC-SHA256', 'BLAKE2s'."; 768 reference 769 "RFC ZZZZ, Babel Information Model, Section 3.1."; 770 } 772 leaf dtls-enable { 773 type boolean; 774 description 775 "Indicates whether the DTLS security mechanism is enabled 776 (true) or disabled (false)."; 777 reference 778 "RFC ZZZZ, Babel Information Model, Section 3.1."; 779 } 781 leaf-list dtls-cert-types { 782 type identityref { 783 base dtls-cert-types; 784 } 785 description 786 "List of supported DTLS certificate types. Possible values 787 include 'X.509' and 'RawPublicKey'."; 788 reference 789 "RFC ZZZZ, Babel Information Model, Section 3.1."; 790 } 792 leaf stats-enable { 793 type boolean; 794 description 795 "Indicates whether statistics collection is enabled (true) 796 or disabled (false) on all interfaces, including 797 neighbor-specific statistics (babel-nbr-stats)."; 798 } 800 container constants { 801 leaf udp-port { 802 type inet:port-number; 803 default "6696"; 804 description 805 "UDP port for sending and receiving Babel messages. The 806 default port is 6696."; 807 reference 808 "RFC ZZZZ, Babel Information Model, Section 3.2."; 809 } 811 leaf mcast-group { 812 type inet:ip-address; 813 default "ff02:0:0:0:0:0:1:6"; 814 description 815 "Multicast group for sending and receiving multicast 816 announcements on IPv6."; 817 reference 818 "RFC ZZZZ, Babel Information Model, Section 3.2."; 819 } 820 description 821 "Babel Constants object."; 822 reference 823 "RFC ZZZZ, Babel Information Model, Section 3.1."; 824 } 826 list interfaces { 827 key "reference"; 829 leaf reference { 830 type if:interface-ref; 831 description 832 "Reference to an interface object as defined by the data 833 model (e.g., YANG, BBF TR-181); data model is assumed to 834 allow for referencing of interface objects which may be at 835 any layer (physical, Ethernet MAC, IP, tunneled IP, etc.). 836 Referencing syntax will be specific to the data model. If 837 there is no set of interface objects available, this should 838 be a string that indicates the interface name used by the 839 underlying operating system."; 840 reference 841 "RFC ZZZZ, Babel Information Model, Section 3.3."; 842 } 844 leaf enable { 845 type boolean; 846 default "true"; 847 description 848 "If true, babel sends and receives messages on this 849 interface. If false, babel messages received on this 850 interface are ignored and none are sent."; 851 reference 852 "RFC ZZZZ, Babel Information Model, Section 3.3."; 853 } 855 leaf link-type { 856 type identityref { 857 base link-type; 858 } 859 default "ethernet"; 860 description 861 "Indicates the type of link. Set of values of supported 862 link types where the following enumeration values MUST 863 be supported when applicable: 'ethernet', 'wireless', 864 'tunnel', and 'other'. Additional values MAY be 865 supported."; 866 reference 867 "RFC ZZZZ, Babel Information Model, Section 3.3."; 868 } 870 leaf metric-algorithm { 871 type identityref { 872 base metric-comp-algorithms; 873 } 874 default "k-out-of-j"; 875 description 876 "Indicates the metric computation algorithm used on this 877 interface. The value MUST be one of those listed in the 878 babel-information-obj babel-metric-comp-algorithms 879 parameter."; 880 } 882 leaf mcast-hello-seqno { 883 type uint16; 884 config false; 885 description 886 "The current sequence number in use for multicast hellos 887 sent on this interface."; 888 reference 889 "RFC ZZZZ, Babel Information Model, Section 3.3."; 890 } 892 leaf mcast-hello-interval { 893 type uint16; 894 config false; 895 description 896 "The current multicast hello interval in use for hellos 897 sent on this interface."; 898 reference 899 "RFC ZZZZ, Babel Information Model, Section 3.3."; 900 } 902 leaf update-interval { 903 type uint16; 904 units centiseconds; 905 description 906 "The current update interval in use for this interface. 907 Units are centiseconds."; 908 reference 909 "RFC ZZZZ, Babel Information Model, Section 3.3."; 910 } 912 leaf packet-log-enable { 913 type boolean; 914 description 915 "If true, logging of babel packets received on this 916 interface is enabled; if false, babel packets are not 917 logged."; 918 reference 919 "RFC ZZZZ, Babel Information Model, Section 3.3."; 920 } 922 leaf packet-log { 923 type inet:uri; 924 description 925 "A reference or url link to a file that contains a 926 timestamped log of packets received and sent on 927 babel-udp-port on this interface. The [libpcap] file 928 format with .pcap file extension SHOULD be supported for 929 packet log files. Logging is enabled / disabled by 930 packet-log-enable."; 931 reference 932 "RFC ZZZZ, Babel Information Model, Section 3.3."; 933 } 935 container stats { 936 config false; 937 leaf sent-mcast-hello { 938 type yt:counter32; 939 description 940 "A count of the number of multicast Hello packets sent 941 on this interface."; 942 reference 943 "RFC ZZZZ, Babel Information Model, Section 3.4."; 944 } 946 leaf sent-mcast-update { 947 type yt:counter32; 948 description 949 "A count of the number of multicast update packets sent 950 on this interface."; 951 reference 952 "RFC ZZZZ, Babel Information Model, Section 3.4."; 953 } 955 leaf received-packets { 956 type yt:counter32; 957 description 958 "A count of the number of Babel packets received on 959 this interface."; 960 reference 961 "RFC ZZZZ, Babel Information Model, Section 3.4."; 962 } 963 action reset { 964 input { 965 leaf reset-at { 966 type yt:date-and-time; 967 description 968 "The time when the reset was issued."; 969 } 970 } 971 output { 972 leaf reset-finished-at { 973 type yt:date-and-time; 974 description 975 "The time when the reset finished."; 976 } 977 } 978 } 979 description 980 "Statistics collection object for this interface."; 981 reference 982 "RFC ZZZZ, Babel Information Model, Section 3.3."; 983 } 985 list neighbor-objects { 986 key "neighbor-address"; 988 leaf neighbor-address { 989 type inet:ip-address; 990 description 991 "IPv4 or v6 address the neighbor sends packets from."; 992 reference 993 "RFC ZZZZ, Babel Information Model, Section 3.5."; 994 } 996 leaf hello-mcast-history { 997 type string; 998 description 999 "The multicast Hello history of whether or not the 1000 multicast Hello packets prior to babel-exp-mcast- 1001 hello-seqno were received, with a '1' for the most 1002 recent Hello placed in the most significant bit and 1003 prior Hellos shifted right (with '0' bits placed 1004 between prior Hellos and most recent Hello for any 1005 not-received Hellos); represented as a string using 1006 utf-8 encoded hex digits where a '1' bit = Hello 1007 received and a '0' bit = Hello not received."; 1008 reference 1009 "RFC ZZZZ, Babel Information Model, Section 3.5."; 1010 } 1012 leaf hello-ucast-history { 1013 type string; 1014 description 1015 "The unicast Hello history of whether or not the 1016 unicast Hello packets prior to babel-exp-ucast- 1017 hello-seqno were received, with a '1' for the most 1018 recent Hello placed in the most significant bit and 1019 prior Hellos shifted right (with '0' bits placed 1020 between prior Hellos and most recent Hello for any 1021 not-received Hellos); represented as a string using 1022 utf-8 encoded hex digits where a '1' bit = Hello 1023 received and a '0' bit = Hello not received."; 1024 reference 1025 "RFC ZZZZ, Babel Information Model, Section 3.5."; 1026 } 1028 leaf txcost { 1029 type int32; 1030 default "0"; 1031 description 1032 "Transmission cost value from the last IHU packet 1033 received from this neighbor, or maximum value 1034 (infinity) to indicates the IHU hold timer for this 1035 neighbor has expired description."; 1036 reference 1037 "RFC ZZZZ, Babel Information Model, Section 3.5."; 1038 } 1040 leaf exp-mcast-hello-seqno { 1041 type uint16; 1042 default "0"; 1043 description 1044 "Expected multicast Hello sequence number of next Hello 1045 to be received from this neighbor; if multicast Hello 1046 packets are not expected, or processing of multicast 1047 packets is not enabled, this MUST be 0."; 1048 reference 1049 "RFC ZZZZ, Babel Information Model, Section 3.5."; 1050 } 1052 leaf exp-ucast-hello-seqno { 1053 type uint16; 1054 default "0"; 1055 description 1056 "Expected unicast Hello sequence number of next Hello to 1057 be received from this neighbor; if unicast Hello 1058 packets are not expected, or processing of unicast 1059 packets is not enabled, this MUST be 0."; 1060 reference 1061 "RFC ZZZZ, Babel Information Model, Section 3.5."; 1062 } 1064 leaf ucast-hello-seqno { 1065 type uint16; 1066 description 1067 "Expected unicast Hello sequence number of next Hello 1068 to be received from this neighbor. If unicast Hello 1069 packets are not expected, or processing of unicast 1070 packets is not enabled, this MUST be 0."; 1071 reference 1072 "RFC ZZZZ, Babel Information Model, Section 3.5."; 1073 } 1075 leaf ucast-hello-interval { 1076 type uint16; 1077 units centiseconds; 1078 description 1079 "The current interval in use for unicast hellos sent to 1080 this neighbor. Units are centiseconds."; 1081 reference 1082 "RFC ZZZZ, Babel Information Model, Section 3.5."; 1083 } 1084 leaf rxcost { 1085 type int32; 1086 description 1087 "Reception cost calculated for this neighbor. This value 1088 is usually derived from the Hello history, which may be 1089 combined with other data, such as statistics maintained 1090 by the link layer. The rxcost is sent to a neighbor in 1091 each IHU."; 1092 reference 1093 "RFC ZZZZ, Babel Information Model, Section 3.5."; 1094 } 1096 leaf cost { 1097 type int32; 1098 description 1099 "Link cost is computed from the values maintained in 1100 the neighbor table. The statistics kept in the neighbor 1101 table about the reception of Hellos, and the txcost 1102 computed from received IHU packets."; 1103 reference 1104 "RFC ZZZZ, Babel Information Model, Section 3.5."; 1105 } 1107 container stats { 1108 config false; 1109 leaf sent-ucast-hello { 1110 type yt:counter32; 1111 description 1112 "A count of the number of unicast Hello packets sent 1113 to this neighbor."; 1114 reference 1115 "RFC ZZZZ, Babel Information Model, Section 3.6."; 1116 } 1118 leaf sent-ucast-update { 1119 type yt:counter32; 1120 description 1121 "A count of the number of unicast update packets sent 1122 to this neighbor."; 1123 reference 1124 "RFC ZZZZ, Babel Information Model, Section 3.6."; 1125 } 1127 leaf sent-ihu { 1128 type yt:counter32; 1129 description 1130 "A count of the number of IHU packets sent to this 1131 neighbor."; 1133 reference 1134 "RFC ZZZZ, Babel Information Model, Section 3.6."; 1135 } 1137 leaf received-hello { 1138 type yt:counter32; 1139 description 1140 "A count of the number of Hello packets received from 1141 this neighbor."; 1142 reference 1143 "RFC ZZZZ, Babel Information Model, Section 3.6."; 1144 } 1146 leaf received-update { 1147 type yt:counter32; 1148 description 1149 "A count of the number of update packets received 1150 from this neighbor."; 1151 reference 1152 "RFC ZZZZ, Babel Information Model, Section 3.6."; 1153 } 1155 leaf received-ihu { 1156 type yt:counter32; 1157 description 1158 "A count of the number of IHU packets received from 1159 this neighbor."; 1160 reference 1161 "RFC ZZZZ, Babel Information Model, Section 3.6."; 1162 } 1164 action reset { 1165 input { 1166 leaf reset-at { 1167 type yt:date-and-time; 1168 description 1169 "The time the reset was issued."; 1170 } 1171 } 1172 output { 1173 leaf reset-finished-at { 1174 type yt:date-and-time; 1175 description 1176 "The time when the reset operation finished."; 1177 } 1178 } 1179 } 1180 description 1181 "Statistics collection object for this neighbor."; 1182 reference 1183 "RFC ZZZZ, Babel Information Model, Section 3.6."; 1184 } 1185 description 1186 "A set of Babel Neighbor Object."; 1187 reference 1188 "RFC ZZZZ, Babel Information Model, Section 3.5."; 1189 } 1190 description 1191 "A set of Babel Interface objects."; 1192 reference 1193 "RFC ZZZZ, Babel Information Model, Section 3.3."; 1194 } 1196 list hmac { 1197 key "algorithm"; 1199 leaf algorithm { 1200 type identityref { 1201 base hmac-algorithms; 1202 } 1203 description 1204 "The name of the HMAC algorithm this object instance uses. 1205 The value MUST be the same as one of the enumerations 1206 listed in the babel-hmac-algorithms parameter."; 1207 reference 1208 "RFC ZZZZ, Babel Information Model, Section 3.8."; 1209 } 1211 leaf verify { 1212 type boolean; 1213 mandatory "true"; 1214 description 1215 "A Boolean flag indicating whether HMAC hashes in incoming 1216 Babel packets are required to be present and are 1217 verified. If this parameter is 'true', incoming packets 1218 are required to have a valid HMAC hash."; 1219 reference 1220 "RFC ZZZZ, Babel Information Model, Section 3.8."; 1221 } 1223 leaf apply-all { 1224 type boolean; 1225 mandatory "true"; 1226 description 1227 "A Boolean flag indicating whether this babel-hmac 1228 instance is to be used for all interfaces. If 'true', 1229 this instance applies to all interfaces and the 1230 babel-hmac-interfaces parameter is ignored. If 1231 babel-hmac-apply-all is 'true', there MUST NOT be other 1232 instances of the babel-hmac object. If 'false', the 1233 babel-hmac-interfaces parameter determines which 1234 interfaces this instance applies to."; 1235 reference 1236 "RFC ZZZZ, Babel Information Model, Section 3.8."; 1237 } 1239 leaf-list interfaces { 1240 type if:interface-ref; 1241 min-elements "1"; 1242 description 1243 "List of references to the babel-interfaces entries this 1244 babel-hmac entry applies to. This parameter is ignored 1245 if babel-hmac-apply-all is 'true'. An interface MUST NOT 1246 be listed in multiple instances of the babel-hmac 1247 object."; 1248 reference 1249 "RFC ZZZZ, Babel Information Model, Section 3.8."; 1250 } 1252 list hmac-keys { 1253 key "name"; 1254 min-elements "1"; 1256 leaf name { 1257 type string; 1258 mandatory "true"; 1259 description 1260 "A unique name for this HMAC key that can be used to 1261 identify the key in this object instance, since the key 1262 value is not allowed to be read. This value can only be 1263 provided when this instance is created, and is not 1264 subsequently writable."; 1265 reference 1266 "RFC ZZZZ, Babel Information Model, Section 3.9."; 1267 } 1269 leaf use-sign { 1270 type boolean; 1271 mandatory "true"; 1272 description 1273 "Indicates whether this key value is used to sign sent 1274 Babel packets. Sent packets are signed using this key 1275 if the value is 'true'. If the value is 'false', this 1276 key is not used to sign sent Babel packets."; 1278 reference 1279 "RFC ZZZZ, Babel Information Model, Section 3.9."; 1280 } 1282 leaf use-verify { 1283 type boolean; 1284 mandatory "true"; 1285 description 1286 "Indicates whether this key value is used to verify 1287 incoming Babel packets. This key is used to verify 1288 incoming packets if the value is 'true'. If the value 1289 is 'false', no HMAC is computed from this key for 1290 comparing an incoming packet."; 1291 reference 1292 "RFC ZZZZ, Babel Information Model, Section 3.9."; 1293 } 1295 leaf value { 1296 type binary; 1297 mandatory "true"; 1298 description 1299 "The value of the HMAC key. An implementation MUST NOT 1300 allow this parameter to be read. This can be done by 1301 always providing an empty string, or through 1302 permissions, or other means. This value can only be 1303 provided when this instance is created, and is not 1304 subsequently writable."; 1305 reference 1306 "RFC ZZZZ, Babel Information Model, Section 3.9."; 1307 } 1309 action test { 1310 input { 1311 leaf test-string { 1312 type binary; 1313 mandatory "true"; 1314 description 1315 "The test string on which this test has to be 1316 performed."; 1317 } 1318 } 1319 output { 1320 leaf resulting-hash { 1321 type binary; 1322 mandatory "true"; 1323 description 1324 "An operation that allows the HMAC key and hash 1325 algorithm to be tested to see if they produce an 1326 expected outcome. Input to this operation is a 1327 binary string. The implementation is expected to 1328 create a hash of this string using the 1329 babel-hmac-key-value and the babel-hmac-algorithm. 1330 The output of this operation is the resulting hash, 1331 as a binary string."; 1332 reference 1333 "RFC ZZZZ, Babel Information Model, Section 3.9."; 1334 } 1335 } 1336 } 1337 description 1338 "A set of babel-hmac-keys-obj objects."; 1339 reference 1340 "RFC ZZZZ, Babel Information Model, Section 3.8."; 1341 } 1342 description 1343 "A babel-hmac-obj object. If this object is implemented, it 1344 provides access to parameters related to the HMAC security 1345 mechanism."; 1346 reference 1347 "RFC ZZZZ, Babel Information Model, Section 3.1."; 1348 } 1350 list dtls { 1351 key "name"; 1353 leaf name { 1354 type string; 1355 description 1356 "TODO: This attribute does not exist in the model, but is 1357 needed for this model to work."; 1358 } 1360 leaf apply-all { 1361 type boolean; 1362 mandatory "true"; 1363 description 1364 "A Boolean flag indicating whether this babel-dtls 1365 instance is to be used for all interfaces. If 'true', 1366 this instance applies to all interfaces and the 1367 babel-dtls-interfaces parameter is ignored. If 1368 babel-dtls-apply-all is 'true', there MUST NOT be other 1369 instances of the babel-dtls object. If 'false', the 1370 babel-dtls-interfaces parameter determines which 1371 interfaces this instance applies to."; 1372 reference 1373 "RFC ZZZZ, Babel Information Model, Section 3.10."; 1375 } 1377 leaf-list interfaces { 1378 type if:interface-ref; 1379 min-elements "1"; 1380 description 1381 "List of references to the babel-interfaces entries this 1382 babel-dtls entry applies to. This parameter is ignored 1383 if babel-dtls-apply-all is 'true'. An interface MUST NOT 1384 be listed in multiple instances of the babel-dtls object. 1385 If this list is empty, then it applies to all 1386 interfaces."; 1387 reference 1388 "RFC ZZZZ, Babel Information Model, Section 3.10."; 1389 } 1391 leaf cached-info { 1392 type boolean; 1393 description 1394 "Indicates whether the cached_info extension is included 1395 in ClientHello and ServerHello packets. The extension 1396 is included if the value is 'true'."; 1397 reference 1398 "RFC ZZZZ, Babel Information Model, Section 3.10."; 1399 } 1401 leaf-list cert-prefer { 1402 type identityref { 1403 base dtls-cert-types; 1404 } 1405 ordered-by user; 1406 description 1407 "List of supported certificate types, in order of 1408 preference. The values MUST be among those listed in 1409 the babel-dtls-cert-types parameter. This list is used 1410 to populate the server_certificate_type extension in 1411 a Client Hello. Values that are present in at least one 1412 instance in the babel-dtls-certs object with a non-empty 1413 babel-cert-private-key will be used bto populate the 1414 client_certificate_type extension in a Client Hello."; 1415 reference 1416 "RFC ZZZZ, Babel Information Model, Section 3.10."; 1417 } 1419 list certs { 1420 key "name"; 1421 min-elements "1"; 1422 leaf name { 1423 type string; 1424 description 1425 "A unique name that identifies the cert in the list."; 1426 } 1428 leaf value { 1429 type string; 1430 mandatory "true"; 1431 description 1432 "The DTLS certificate in PEM format [RFC7468]. This 1433 value can only be provided when this instance is 1434 created, and is not subsequently writable."; 1435 reference 1436 "RFC ZZZZ, Babel Information Model, Section 3.11."; 1437 } 1439 leaf type { 1440 type identityref { 1441 base dtls-cert-types; 1442 } 1443 mandatory "true"; 1444 description 1445 "The name of the certificate type of this object 1446 instance. The value MUST be the same as one of the 1447 enumerations listed in the babel-dtls-cert-types 1448 parameter. This value can only be provided when this 1449 instance is created, and is not subsequently writable."; 1450 reference 1451 "RFC ZZZZ, Babel Information Model, Section 3.11."; 1452 } 1454 leaf private-key { 1455 type binary; 1456 mandatory "true"; 1457 description 1458 "The value of the private key. If this is non-empty, 1459 this certificate can be used by this implementation to 1460 provide a certificate during DTLS handshaking. An 1461 implementation MUST NOT allow this parameter to be 1462 read. This can be done by always providing an empty 1463 string, or through permissions, or other means. This 1464 value can only be provided when this instance is 1465 created, and is not subsequently writable."; 1466 reference 1467 "RFC ZZZZ, Babel Information Model, Section 3.11."; 1468 } 1469 action test { 1470 input { 1471 leaf test-string { 1472 type binary; 1473 mandatory "true"; 1474 description 1475 "The test string on which this test has to be 1476 performed."; 1477 } 1478 } 1479 output { 1480 leaf resulting-hash { 1481 type binary; 1482 mandatory "true"; 1483 description 1484 "The output of this operation is a binary string, 1485 and is the resulting hash computed using the 1486 certificate public key, and the SHA-256 1487 hash algorithm."; 1488 } 1489 } 1490 } 1491 description 1492 "A set of babel-dtls-keys-obj objects. This contains 1493 both certificates for this implementation to present 1494 for authentication, and to accept from others. 1495 Certificates with a non-empty babel-cert-private-key 1496 can be presented by this implementation for 1497 authentication."; 1498 reference 1499 "RFC ZZZZ, Babel Information Model, Section 3.10."; 1500 } 1501 description 1502 "A babel-dtls-obj object. If this object is implemented, 1503 it provides access to parameters related to the DTLS 1504 security mechanism."; 1505 reference 1506 "RFC ZZZZ, Babel Information Model, Section 3.1"; 1507 } 1508 description 1509 "Babel Information Objects."; 1510 reference 1511 "RFC ZZZZ, Babel Information Model, Section 3."; 1512 } 1513 } 1514 augment "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route" { 1515 when "derived-from(rt:source-protocol, 'babel')" { 1516 description 1517 "Augmentation is valid for a routes whose source protocol 1518 is Babel."; 1519 } 1520 description 1521 "Babel specific route attributes."; 1522 uses routes; 1523 } 1524 } 1526 1528 3. IANA Considerations 1530 This document registers one URIs and one YANG module. 1532 3.1. URI Registrations 1534 URI: urn:ietf:params:xml:ns:yang:ietf-babel 1536 3.2. YANG Module Name Registration 1538 This document registers one YANG module in the YANG Module Names 1539 registry YANG [RFC6020]. 1541 Name:ietf-babel 1542 Namespace: urn:ietf:params:xml:ns:yang:ietf-babel 1543 prefix: babel 1544 reference: RFC XXXX 1546 4. Security Considerations 1548 The YANG module specified in this document defines a schema for data 1549 that is designed to be accessed via network management protocol such 1550 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 1551 is the secure transport layer and the mandatory-to-implement secure 1552 transport is SSH [RFC6242]. The lowest RESTCONF layer is HTTPS, and 1553 the mandatory-to-implement secure transport is TLS [RFC8446]. 1555 The NETCONF Access Control Model (NACM [RFC8341]) provides the means 1556 to restrict access for particular NETCONF users to a pre-configured 1557 subset of all available NETCONF protocol operations and content. 1559 There are a number of data nodes defined in the YANG module which are 1560 writable/created/deleted (i.e., config true, which is the default). 1561 These data nodes may be considered sensitive or vulnerable in some 1562 network environments. Write operations (e.g., ) to 1563 these data nodes without proper protection can have a negative effect 1564 on network operations. 1566 These are the subtrees and data nodes and their sensitivity/ 1567 vulnerability: 1569 5. Acknowledgements 1571 6. References 1573 6.1. Normative References 1575 [I-D.ietf-babel-rfc6126bis] 1576 Chroboczek, J. and D. Schinazi, "The Babel Routing 1577 Protocol", draft-ietf-babel-rfc6126bis-07 (work in 1578 progress), November 2018. 1580 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1581 Requirement Levels", BCP 14, RFC 2119, 1582 DOI 10.17487/RFC2119, March 1997, 1583 . 1585 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 1586 RFC 6991, DOI 10.17487/RFC6991, July 2013, 1587 . 1589 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1590 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1591 . 1593 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1594 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1595 May 2017, . 1597 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface 1598 Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, 1599 . 1601 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 1602 Routing Management (NMDA Version)", RFC 8349, 1603 DOI 10.17487/RFC8349, March 2018, 1604 . 1606 6.2. Informative References 1608 [I-D.ietf-babel-information-model] 1609 Stark, B. and M. Jethanandani, "Babel Information Model", 1610 draft-ietf-babel-information-model-05 (work in progress), 1611 March 2019. 1613 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1614 the Network Configuration Protocol (NETCONF)", RFC 6020, 1615 DOI 10.17487/RFC6020, October 2010, 1616 . 1618 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1619 and A. Bierman, Ed., "Network Configuration Protocol 1620 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1621 . 1623 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1624 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 1625 . 1627 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 1628 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 1629 . 1631 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1632 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 1633 . 1635 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 1636 Access Control Model", STD 91, RFC 8341, 1637 DOI 10.17487/RFC8341, March 2018, 1638 . 1640 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1641 and R. Wilton, "Network Management Datastore Architecture 1642 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 1643 . 1645 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 1646 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 1647 . 1649 Appendix A. An Appendix 1651 Authors' Addresses 1653 Mahesh Jethanandani 1654 VMware 1655 California 1656 USA 1658 Email: mjethanandani@gmail.com 1659 Barbara Stark 1660 AT&T 1661 Atlanta, GA 1662 USA 1664 Email: barbara.stark@att.com