idnits 2.17.1 draft-ietf-babel-yang-model-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == The document 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 (December 18, 2018) is 1954 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-04 -- Obsolete informational reference (is this intentional?): RFC 5246 (Obsoleted by RFC 8446) Summary: 0 errors (**), 0 flaws (~~), 4 warnings (==), 2 comments (--). 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: June 21, 2019 AT&T 6 December 18, 2018 8 YANG Data Model for Babel 9 draft-ietf-babel-yang-model-00 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 June 21, 2019. 41 Copyright Notice 43 Copyright (c) 2018 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. Definitions and Acronyms . . . . . . . . . . . . . . . . 2 60 1.2. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 3 61 2. Babel Module . . . . . . . . . . . . . . . . . . . . . . . . 3 62 2.1. Information Model . . . . . . . . . . . . . . . . . . . . 3 63 2.2. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 3 64 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 65 3.1. URI Registrations . . . . . . . . . . . . . . . . . . . . 21 66 3.2. YANG Module Name Registration . . . . . . . . . . . . . . 21 67 4. Security Considerations . . . . . . . . . . . . . . . . . . . 22 68 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 22 69 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 70 6.1. Normative References . . . . . . . . . . . . . . . . . . 22 71 6.2. Informative References . . . . . . . . . . . . . . . . . 23 72 Appendix A. An Appendix . . . . . . . . . . . . . . . . . . . . 24 73 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 24 75 1. Introduction 77 This document defines a data model for the Babel routing protocol 78 [I-D.ietf-babel-rfc6126bis]. The data model is defined using the 79 YANG [RFC7950] data modeling language. It is based on the Babel 80 Information Model [I-D.ietf-babel-information-model]. 82 Artwork in this document contains shorthand references to drafts in 83 progress. Please apply the following replacements 85 o "XXXX" --> the assigned RFC value for this draft both in this 86 draft and in the YANG models under the revision statement. 88 o Revision date in model, in the format 2018-04-27 needs to get 89 updated with the date the draft gets approved. The date also 90 needs to get reflected on the line with . 92 1.1. Definitions and Acronyms 94 o 96 1.2. Tree Diagram 98 For a reference to the annotations used in tree diagrams included in 99 this draft, please see YANG Tree Diagrams [RFC8340]. 101 2. Babel Module 103 This document defines a YANG 1.1 [RFC7950] data model for the 104 configuration and management of Babel. The YANG module is based on 105 the Babel Information Model [I-D.ietf-babel-information-model]. 107 2.1. Information Model 109 2.2. YANG Module 111 This module imports definitions from Common YANG Data Types 112 [RFC6991]. 114 module: ietf-babel 115 +--rw babel! 116 +--rw version? string 117 +--rw enable? boolean 118 +--rw router-id binary 119 +--rw link-type* identityref 120 +--ro sequence-number? yang:counter32 121 +--rw cost-compute-algorithm* identityref 122 +--rw security-supported* identityref 123 +--rw transport 124 | +--rw udp-port? inet:port-number 125 | +--rw mcast-group? inet:ip-address 126 +--rw interfaces* [reference] 127 | +--rw reference if:interface-ref 128 | +--rw enable? boolean 129 | +--rw link-type? identityref 130 | +--ro mcast-hello-seqno? int16 131 | +--ro ucast-hello-seqno? int16 132 | +--ro mcast-hello-interval? int16 133 | +--ro ucast-hello-interval? int16 134 | +--rw update-interval? uint32 135 | +--rw external-cost? uint32 136 | +--rw message-log-enable? boolean 137 | +--rw message-log* [log-time] 138 | | +--rw log-time yang:timestamp 139 | | +--rw log-entry? string 140 | +--rw neighbor-objects* [neighbor-address] 141 | | +--rw neighbor-address inet:ip-address 142 | | +--rw hello-mcast-history? string 143 | | +--rw hello-ucast-history? string 144 | | +--rw txcost? int32 145 | | +--rw exp-mcast-hello-seqno? int32 146 | | +--rw exp-ucast-hello-seqno? int32 147 | | +--rw neighbor-ihu-interval? int32 148 | | +--rw rxcost? int32 149 | | +--rw cost? int32 150 | +--rw security* [mechanism] 151 | +--rw mechanism string 152 | +--rw enable? boolean 153 | +--rw self-cred* [id] 154 | | +--rw id string 155 | | +--rw cred? binary 156 | +--rw trust* [id] 157 | | +--rw id string 158 | | +--rw cred? binary 159 | +--rw credvalid-log-enable? boolean 160 | +--rw credvalid-log* [log-time] 161 | +--rw log-time yang:timestamp 162 | +--rw log-entry? string 163 +--rw routes* [prefix] 164 | +--rw prefix inet:ip-address 165 | +--rw prefix-length? inet:ip-prefix 166 | +--rw router-id? binary 167 | +--rw neighbor? 168 | | -> ../../interfaces/neighbor-objects/neighbor-address 169 | +--rw (metric) 170 | | +--:(received-metric) 171 | | | +--rw received-metric? int32 172 | | +--:(calcuated-metric) 173 | | +--rw calcuated-metric? int32 174 | +--rw seqno? int32 175 | +--rw next-hop? inet:ip-address 176 | +--rw feasible? boolean 177 | +--rw selected? boolean 178 +--rw security* [mechanism] 179 +--rw mechanism string 180 +--rw enable? boolean 181 +--rw self-cred* [id] 182 | +--rw id string 183 | +--rw cred? binary 184 +--rw trust* [id] 185 | +--rw id string 186 | +--rw cred? binary 187 +--rw credvalid-log-enable? boolean 188 +--rw credvalid-log* [log-time] 189 +--rw log-time yang:timestamp 190 +--rw log-entry? string 192 file "ietf-babel@2018-12-18.yang" 194 module ietf-babel { 195 yang-version 1.1; 196 namespace "urn:ietf:params:xml:ns:yang:ietf-babel"; 197 prefix babel; 199 import ietf-yang-types { 200 prefix yang; 201 reference 202 "RFC 6991 - Common YANG Data Types."; 203 } 204 import ietf-inet-types { 205 prefix inet; 206 reference 207 "RFC 6991 - Common YANG Data Types."; 208 } 209 import ietf-interfaces { 210 prefix if; 211 reference 212 "RFC 8343 - A YANG Data Model for Interface Management"; 213 } 215 organization 216 "IETF Babel routing protocl Working Group"; 218 contact 219 "WG Web: http://tools.ietf.org/wg/babel/ 220 WG List: babel@ietf.org 222 Editor: Mahesh Jethanandani 223 mjethanandani@gmail.com 224 Editor: Barbara Stark 225 bs7652@att.com"; 227 description 228 "This YANG module defines a model for the Babel routing 229 protocol. 231 Copyright (c) 2018 IETF Trust and the persons identified as 232 the document authors. All rights reserved. 233 Redistribution and use in source and binary forms, with or 234 without modification, is permitted pursuant to, and subject 235 to the license terms contained in, the Simplified BSD 236 License set forth in Section 4.c of the IETF Trust's Legal 237 Provisions Relating to IETF Documents 238 (http://trustee.ietf.org/license-info). 239 This version of this YANG module is part of RFC XXXX; see 240 the RFC itself for full legal notices."; 242 revision 2018-12-18 { 243 description 244 "Initial version."; 245 reference 246 "RFC XXX: Babel YANG Data Model."; 247 } 249 /* 250 * Identities 251 */ 252 identity babel-link-type { 253 description 254 "Base identity from which all Babel Link Types are derived."; 255 } 257 identity ethernet { 258 base "babel-link-type"; 259 description 260 "Ethernet link type for Babel Routing Protocol."; 261 } 262 identity other { 263 base "babel-link-type"; 264 description 265 "Other link type for Babel Routing Protocol."; 266 } 267 identity tunnel { 268 base "babel-link-type"; 269 description 270 "Tunnel link type for Babel Routing Protocol."; 271 } 272 identity wireless { 273 base "babel-link-type"; 274 description 275 "Wireless link type for Babel Routing Protocol."; 276 } 277 identity moca { 278 base "babel-link-type"; 279 description 280 "Multimedia over Coax Alliance."; 281 } 282 identity g-hn-over-coax { 283 base "babel-link-type"; 284 description 285 "G.hn over coax."; 286 reference 287 "G.9960: Unified high-speed wireline-base home networking 288 transceivers."; 289 } 290 identity g-hn-over-powerline { 291 base "babel-link-type"; 292 description 293 "G.hn over powerline."; 294 reference 295 "G.9960: Unified high-speed wireline-base home networking 296 transceivers."; 297 } 298 identity home-plug { 299 base "babel-link-type"; 300 description 301 "HomePlug Power Alliance."; 302 reference 303 "IEEE 1901: HD-PC"; 304 } 305 identity ieee-802-15 { 306 base "babel-link-type"; 307 description 308 "Wireless Personal Area Networks (WPAN)."; 309 reference 310 "IEEE 802.15: Wireless Personal Area Networks (WPAN)."; 311 } 313 identity babel-cost-compute-algorithm { 314 description 315 "Base identity from which all Babel cost compute algorithms 316 are derived."; 317 } 318 identity k-out-of-j { 319 base "babel-cost-compute-algorithm"; 320 description 321 "k-out-of-j algorithm."; 322 } 323 identity etx { 324 base "babel-cost-compute-algorithm"; 325 description 326 "Expected Transmission Count."; 327 } 329 /* 330 * Babel type identities 331 */ 332 identity babel-security-supported { 333 description 334 "Base identity from which all Babel security types are 335 derived."; 336 } 338 /* 339 * Features 340 */ 342 /* 343 * Features supported 344 */ 346 /* 347 * Typedefs 348 */ 349 typedef base64 { 350 type string { 351 pattern '(([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{3}=|' 352 + '[A-Za-z0-9+/]{2}==)?){1}'; 353 } 354 description 355 "A binary-to-text encoding scheme to represent binary data in 356 an ASCII string format."; 357 reference 358 "RFC 4648, The Base16, Base32, and Base64 Data Encodings"; 359 } 361 /* 362 * Groupings 363 */ 364 grouping log { 365 leaf log-time { 366 type yang:timestamp; 367 description 368 "The date and time (according to the device internal 369 clock setting, which may be a time relative to boot 370 time, acquired from NTP, configured by the user, etc.) 371 when this log entry was created."; 372 reference 373 "RFC YYYY, Babel Information Model, Section 4.2."; 374 } 376 leaf log-entry { 377 type string; 378 description 379 "The logged message, as a string of utf-8 encoded hex 380 characters."; 381 reference 382 "RFC YYYY, Babel Information Model, Section 4.2."; 384 } 385 description 386 "A babel-log-obj list."; 387 reference 388 "RFC YYYY, Babel Information Model, Section 4.2."; 389 } 391 grouping credential { 392 leaf id { 393 type string; 394 description 395 "An identifier that identifies this credential uniquely."; 396 } 398 leaf cred { 399 type binary; 400 description 401 "A credential, such as an X.509 certificate, a public key, 402 etc. used for signing and/or encrypting babel messages."; 403 reference 404 "RFC YYYY, Babel Information Model, Section 4.1."; 405 } 406 description 407 "A babel-credential-obj list."; 408 reference 409 "RFC YYYY, Babel Information Model, Section 4.1."; 410 } 412 grouping security { 413 leaf mechanism { 414 type string; 415 description 416 "The name of the security mechanism this object instance 417 is about. The value MUST be the same as one of the 418 identities listed as the babel-security-supported 419 parameter."; 420 reference 421 "RFC YYYY, Babel Information Model, Section 3.5."; 422 } 424 leaf enable { 425 type boolean; 426 description 427 "If true, the security mechanism is running. If false, 428 the security mechanism is not currently running."; 429 reference 430 "RFC YYYY, Babel Information Model, Section 3.5."; 431 } 432 list self-cred { 433 key "id"; 435 uses credential; 436 description 437 "Credentials this router presents to participate in the 438 enabled security mechanism. Any private key component of 439 a credential MUST NOT be readable. Adding and deleting 440 credentials MAY be allowed."; 441 reference 442 "RFC YYYY, Babel Information Model, Section 3.5."; 443 } 445 list trust { 446 key "id"; 448 uses credential; 449 description 450 "A list of credential-obj objects that identify the 451 credentials of routers whose babel messages may be 452 trusted or of a certificate authority (CA) whose signing 453 of a router's credentials implies the router credentials 454 can be trusted, in the context of this security 455 mechanism. How a security mechanism interacts with this 456 list is determined by the mechanism. A security algorithm 457 may do additional validation of credentials, such as 458 checking validity dates or revocation lists, so presence 459 in this list may not be sufficient to determine trust. 460 Adding and deleting credentials MAY be allowed."; 461 reference 462 "RFC YYYY, Babel Information Model, Section 3.5."; 463 } 465 leaf credvalid-log-enable { 466 type boolean; 467 description 468 "If true, logging of messages that include credentials 469 used for authentication is enabled. If false, these 470 messages are not logged."; 471 reference 472 "RFC YYYY, Babel Information Model, Section 3.5."; 473 } 475 list credvalid-log { 476 key "log-time"; 478 uses log; 479 description 480 "Log entries that have the timestamp a message containing 481 credentials used for peer authentication (e.g., DTLS 482 Server Hello) was received on a Babel port, and the 483 entire received message (including Ethernet frame and IP 484 headers, if possible); an implementation must restrict 485 the size of this log, but how and what size is 486 implementation-specific."; 487 reference 488 "RFC YYYY, Babel Information Model, Section 3.5."; 489 } 490 description 491 "A babel-security-obj list."; 492 reference 493 "RFC YYYY, Babel Information Model, Section 3.5."; 494 } 496 /* 497 * Data model 498 */ 499 container babel { 500 presence "A Babel container."; 501 description 502 "This is a top level container for the Babel routing protocol."; 504 leaf version { 505 type string; 506 description 507 "This is the version of the babel protocol implemented."; 508 reference 509 "RFC YYYY, Babel Information Model, Section 3.1."; 510 } 512 leaf enable { 513 type boolean; 514 default false; 515 description 516 "When written, it configures whether the protocol should be 517 enabled. A read from the or datastore 518 therefore indicates the configured adminstrative value of 519 whether the protocol is enabled or not. 521 A read from the datastore indicates whether 522 the protocol is actually running or not, i.e. it indicates 523 the operational state of the protocol."; 524 reference 525 "RFC YYYY, Babel Information Model, Section 3.1."; 526 } 527 leaf router-id { 528 type binary; 529 mandatory "true"; 530 description 531 "Every Babel speaker is assigned a router-id, which is an 532 arbitrary string of 8 octets that is assumed to be unique 533 across the routing domain"; 534 reference 535 "RFC YYYY, Babel Information Model, Section 3.1, 536 rfc6126bis, The Babel Routing Protocol. Section 3."; 537 } 539 leaf-list link-type { 540 type identityref { 541 base "babel-link-type"; 542 } 543 description 544 "Link types supported by this implementation of Babel."; 545 reference 546 "RFC YYYY, Babel Information Model, Section 3.1."; 547 } 549 leaf sequence-number { 550 type yang:counter32; 551 config false; 552 description 553 "Sequence number included in route updates for routes 554 originated by this node."; 555 reference 556 "RFC YYYY, Babel Information Model, Section 3.1."; 557 } 559 leaf-list cost-compute-algorithm { 560 type identityref { 561 base "babel-cost-compute-algorithm"; 562 } 563 description 564 "List of cost compute algorithms supported by this 565 implementation of Babel."; 566 reference 567 "RFC YYYY, Babel Information Model, Section 3.1."; 568 } 570 leaf-list security-supported { 571 type identityref { 572 base "babel-security-supported"; 573 } 574 description 575 "Babel security mechanism used by this implementation or 576 per interface."; 577 reference 578 "RFC YYYY, Babel Information Model, Section 3.1."; 579 } 581 container transport { 582 leaf udp-port { 583 type inet:port-number; 584 default "6696"; 585 description 586 "UDP port for sending and receiving Babel messages. The 587 default port is 6696."; 588 reference 589 "RFC YYYY, Babel Information Model, Section 3.2."; 590 } 592 leaf mcast-group { 593 type inet:ip-address; 594 default "ff02:0:0:0:0:0:1:6"; 595 description 596 "Multicast group for sending and receiving multicast 597 announcements on IPv6."; 598 reference 599 "RFC YYYY, Babel Information Model, Section 3.2."; 600 } 601 description 602 "Babel Transport object."; 603 reference 604 "RFC YYYY, Babel Information Model, Section 3.1."; 605 } 606 list interfaces { 607 key "reference"; 609 leaf reference { 610 type if:interface-ref; 611 description 612 "Reference to an interface object as defined by the data 613 model (e.g., YANG, BBF TR-181); data model is assumed to 614 allow for referencing of interface objects which may be at 615 any layer (physical, Ethernet MAC, IP, tunneled IP, etc.). 616 Referencing syntax will be specific to the data model. If 617 there is no set of interface objects available, this should 618 be a string that indicates the interface name used by the 619 underlying operating system."; 620 reference 621 "RFC YYYY, Babel Information Model, Section 3.3."; 622 } 623 leaf enable { 624 type boolean; 625 default "true"; 626 description 627 "If true, babel sends and receives messages on this 628 interface. If false, babel messages received on this 629 interface are ignored and none are sent."; 630 reference 631 "RFC YYYY, Babel Information Model, Section 3.3."; 632 } 633 leaf link-type { 634 type identityref { 635 base babel-link-type; 636 } 637 description 638 "Indicates the type of link. Set of values of supported 639 link types where the following enumeration values MUST 640 be supported when applicable: 'ethernet', 'wireless', 641 'tunnel', and 'other'. Additional values MAY be 642 supported."; 643 reference 644 "RFC YYYY, Babel Information Model, Section 3.3."; 645 } 646 leaf mcast-hello-seqno { 647 type int16; 648 config false; 649 description 650 "The current sequence number in use for multicast hellos 651 sent on this interface."; 652 reference 653 "RFC YYYY, Babel Information Model, Section 3.3."; 654 } 655 leaf ucast-hello-seqno { 656 type int16; 657 config false; 658 description 659 "The current sequence number in use for unicast hellos 660 sent on this interface."; 661 reference 662 "RFC YYYY, Babel Information Model, Section 3.3."; 663 } 664 leaf mcast-hello-interval { 665 type int16; 666 config false; 667 description 668 "The current multicast hello interval in use for hellos 669 sent on this interface."; 670 reference 671 "RFC YYYY, Babel Information Model, Section 3.3."; 672 } 673 leaf ucast-hello-interval { 674 type int16; 675 config false; 676 description 677 "The current unicast hello interval in use for hellos sent 678 on this interface."; 679 reference 680 "RFC YYYY, Babel Information Model, Section 3.3."; 681 } 682 leaf update-interval { 683 type uint32; 684 description 685 "The current update interval in use for this interface."; 686 reference 687 "RFC YYYY, Babel Information Model, Section 3.3."; 688 } 689 leaf external-cost { 690 type uint32; 691 description 692 "External input to cost of link of this interface. If 693 supported, this is a value that is added to the metrics 694 of routes learned over this interface. How an 695 implementation uses the value is up to the implementation, 696 which means the use may not be consistent across 697 implementations."; 698 reference 699 "RFC YYYY, Babel Information Model, Section 3.3."; 700 } 701 leaf message-log-enable { 702 type boolean; 703 description 704 "If true, logging of babel messages received on this 705 interface is enabled; if false, babel messages are not 706 logged."; 707 reference 708 "RFC YYYY, Babel Information Model, Section 3.3."; 709 } 711 list message-log { 712 key "log-time"; 714 uses log; 715 description 716 "Log entries that have timestamp of a received Babel 717 message and the entire received Babel message (including 718 Ethernet frame and IP headers, if possible). An 719 implementation must restrict the size of this log, but how 720 and what size is implementation specific."; 721 reference 722 "RFC YYYY, Babel Information Model, Section 3.3."; 723 } 725 list neighbor-objects { 726 key "neighbor-address"; 728 leaf neighbor-address { 729 type inet:ip-address; 730 description 731 "IPv4 or v6 address the neighbor sends messages from."; 732 reference 733 "RFC YYYY, Babel Information Model, Section 3.4."; 734 } 736 leaf hello-mcast-history { 737 type string; 738 description 739 "The multicast Hello history of whether or not the 740 multicast Hello messages prior to babel-exp-mcast- 741 hello-seqno were received, with a '1' for the most 742 recent Hello placed in the most significant bit and 743 prior Hellos shifted right (with '0' bits placed 744 between prior Hellos and most recent Hello for any 745 not-received Hellos); represented as a string using 746 utf-8 encoded hex digits where a '1' bit = Hello 747 received and a '0' bit = Hello not received."; 748 reference 749 "RFC YYYY, Babel Information Model, Section 3.4."; 750 } 752 leaf hello-ucast-history { 753 type string; 754 description 755 "The unicast Hello history of whether or not the 756 unicast Hello messages prior to babel-exp-ucast- 757 hello-seqno were received, with a '1' for the most 758 recent Hello placed in the most significant bit and 759 prior Hellos shifted right (with '0' bits placed 760 between prior Hellos and most recent Hello for any 761 not-received Hellos); represented as a string using 762 utf-8 encoded hex digits where a '1' bit = Hello 763 received and a '0' bit = Hello not received."; 764 reference 765 "RFC YYYY, Babel Information Model, Section 3.4."; 766 } 767 leaf txcost { 768 type int32; 769 description 770 "Transmission cost value from the last IHU packet 771 received from this neighbor, or maximum value 772 (infinity) to indicates the IHU hold timer for this 773 neighbor has expired description."; 774 reference 775 "RFC YYYY, Babel Information Model, Section 3.4."; 776 } 778 leaf exp-mcast-hello-seqno { 779 type int32; 780 description 781 "Expected multicast Hello sequence number of next Hello 782 to be received from this neighbor; if multicast Hello 783 messages are not expected, or processing of multicast 784 messages is not enabled, this MUST be 0."; 785 reference 786 "RFC YYYY, Babel Information Model, Section 3.4."; 787 } 789 leaf exp-ucast-hello-seqno { 790 type int32; 791 description 792 "Expected unicast Hello sequence number of next Hello to 793 be received from this neighbor; if unicast Hello 794 messages are not expected, or processing of unicast 795 messages is not enabled, this MUST be 0."; 796 reference 797 "RFC YYYY, Babel Information Model, Section 3.4."; 798 } 800 leaf neighbor-ihu-interval { 801 type int32; 802 description 803 "Current IHU interval for this neighbor."; 804 reference 805 "RFC YYYY, Babel Information Model, Section 3.4."; 806 } 808 leaf rxcost { 809 type int32; 810 description 811 "Reception cost calculated for this neighbor. This value 812 is usually derived from the Hello history, which may be 813 combined with other data, such as statistics maintained 814 by the link layer. The rxcost is sent to a neighbour in 815 each IHU."; 816 reference 817 "RFC YYYY, Babel Information Model, Section 3.4."; 818 } 820 leaf cost { 821 type int32; 822 description 823 "Link cost is computed from the values maintained in 824 the neighbour table. The statistics kept in the neighbour 825 table about the reception of Hellos, and the txcost 826 computed from received IHU packets."; 827 reference 828 "RFC YYYY, Babel Information Model, Section 3.4."; 829 } 830 description 831 "A set of Babel Neighbor Object."; 832 reference 833 "RFC YYYY, Babel Information Model, Section 3.3."; 834 } 836 list security { 837 key "mechanism"; 839 uses security; 840 description 841 "A security-obj object that applies to this interface. If 842 implemented, this allows security to be enabled only on 843 specific interfaces or allows different security mechanisms 844 to be enabled on different interfaces."; 845 reference 846 "RFC YYYY, Babel Information Model, Section 3.3."; 847 } 848 description 849 "A set of Babel Interface objects."; 850 reference 851 "RFC YYYY, Babel Information Model, Section 3.1."; 852 } 854 list routes { 855 key "prefix"; 857 leaf prefix { 858 type inet:ip-address; 859 description 860 "Prefix (expressed in IP address format) for which this 861 route is advertised."; 862 reference 863 "RFC YYYY, Babel Information Model, Section 3.6."; 864 } 866 leaf prefix-length { 867 type inet:ip-prefix; 868 description 869 "Length of the prefix for which this route is advertised."; 870 reference 871 "RFC YYYY, Babel Information Model, Section 3.6."; 872 } 874 leaf router-id { 875 type binary; 876 description 877 "router-id of the source router for which this route is 878 advertised."; 879 reference 880 "RFC YYYY, Babel Information Model, Section 3.6."; 881 } 883 leaf neighbor { 884 type leafref { 885 path "../../interfaces/neighbor-objects/neighbor-address"; 886 } 887 description 888 "Reference to the babel-neighbors entry for the neighbor 889 that advertised this route."; 890 reference 891 "RFC YYYY, Babel Information Model, Section 3.6."; 892 } 894 choice metric { 895 mandatory "true"; 896 leaf received-metric { 897 type int32; 898 description 899 "The metric with which this route was advertised by the 900 neighbor, or maximum value (infinity) to indicate a the 901 route was recently retracted and is temporarily 902 unreachable. this metric will be 0 (zero) if the route 903 was not received from a neighbor but was generated 904 through other means. Either babel-route-calculated-metric 905 or babel-route-received-metric MUST be provided."; 906 reference 907 "RFC YYYY, Babel Information Model, Section 3.6, 908 draft-ietf-babel-rfc6126bis, The Babel Routing Protocol, 909 Section 3.5.5."; 910 } 911 leaf calcuated-metric { 912 type int32; 913 description 914 "A calculated metric for this route. How the metric is 915 calculated is implementation-specific. Maximum value 916 (infinity) indicates the route was recently retracted 917 and is temporarily unreachable. Either 918 babel-route-calculated-metric or 919 babel-route-received-metric MUST be provided."; 920 reference 921 "RFC YYYY, Babel Information Model, Section 3.6, 922 draft-ietf-babel-rfc6126bis, The Babel Routing Protocol, 923 Section 3.5.5."; 924 } 925 description 926 "Either babel-route-calculated-metric or 927 babel-route-received-metric MUST be provided."; 928 reference 929 "RFC YYYY, Babel Information Model, Section 3.6, 930 draft-ietf-babel-rfc6126bis, The Babel Routing Protocol, 931 Section 3.5.5."; 932 } 934 leaf seqno { 935 type int32; 936 description 937 "The sequence number with which this route was advertised."; 938 reference 939 "RFC YYYY, Babel Information Model, Section 3.6."; 940 } 942 leaf next-hop { 943 type inet:ip-address; 944 description 945 "The next-hop address of this route. This will be empty if 946 this route has no next-hop address."; 947 reference 948 "RFC YYYY, Babel Information Model, Section 3.6."; 949 } 951 leaf feasible { 952 type boolean; 953 description 954 "A boolean flag indicating whether this route is feasible."; 955 reference 956 "RFC YYYY, Babel Information Model, Section 3.6, 957 draft-ietf-babel-rfc6126bis, The Babel Routing Protocol, 958 Section 3.5.1."; 960 } 962 leaf selected { 963 type boolean; 964 description 965 "A boolean flag indicating whether this route is selected, 966 i.e., whether it is currently being used for forwarding and 967 is being advertised."; 968 reference 969 "RFC YYYY, Babel Information Model, Section 3.6."; 970 } 971 description 972 "A set of babel-route-obj objects. Includes received and 973 routes routes."; 974 reference 975 "RFC YYYY, Babel Information Model, Section 3.1."; 976 } 978 list security { 979 key "mechanism"; 981 uses security; 982 description 983 "A security-obj object that applies to all interfaces. If this 984 object is implemented, it allows a security mechanism to be 985 enabled or disabled in a manner that applies to all Babel 986 messages on all interfaces"; 987 reference 988 "RFC YYYY, Babel Information Model, Section 3.1."; 989 } 990 } 991 } 993 995 3. IANA Considerations 997 This document registers ?? URIs and ?? YANG modules. 999 3.1. URI Registrations 1001 3.2. YANG Module Name Registration 1003 This document registers ?? YANG module in the YANG Module Names 1004 registry YANG [RFC6020]. 1006 name: 1007 namespace: urn:ietf:params:xml:ns:yang: 1008 prefix: babel 1009 reference: RFC XXXX 1011 4. Security Considerations 1013 The YANG module specified in this document defines a schema for data 1014 that is designed to be accessed via network management protocol such 1015 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 1016 is the secure transport layer and the mandatory-to-implement secure 1017 transport is SSH [RFC6242]. The lowest RESTCONF layer is HTTPS, and 1018 the mandatory-to-implement secure transport is TLS [RFC5246]. 1020 The NETCONF Access Control Model (NACM [RFC8341]) provides the means 1021 to restrict access for particular NETCONF users to a pre-configured 1022 subset of all available NETCONF protocol operations and content. 1024 There are a number of data nodes defined in the YANG module which are 1025 writable/creatable/deletable (i.e., config true, which is the 1026 default). These data nodes may be considered sensitive or vulnerable 1027 in some network environments. Write operations (e.g., ) 1028 to these data nodes without proper protection can have a negative 1029 effect on network operations. 1031 These are the subtrees and data nodes and their sensitivity/ 1032 vulnerability: 1034 5. Acknowledgements 1036 6. References 1038 6.1. Normative References 1040 [I-D.ietf-babel-rfc6126bis] 1041 Chroboczek, J. and D. Schinazi, "The Babel Routing 1042 Protocol", draft-ietf-babel-rfc6126bis-07 (work in 1043 progress), November 2018. 1045 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1046 Requirement Levels", BCP 14, RFC 2119, 1047 DOI 10.17487/RFC2119, March 1997, 1048 . 1050 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 1051 RFC 6991, DOI 10.17487/RFC6991, July 2013, 1052 . 1054 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1055 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1056 . 1058 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1059 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1060 May 2017, . 1062 6.2. Informative References 1064 [I-D.ietf-babel-information-model] 1065 Stark, B., "Babel Information Model", draft-ietf-babel- 1066 information-model-04 (work in progress), October 2018. 1068 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 1069 (TLS) Protocol Version 1.2", RFC 5246, 1070 DOI 10.17487/RFC5246, August 2008, 1071 . 1073 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1074 the Network Configuration Protocol (NETCONF)", RFC 6020, 1075 DOI 10.17487/RFC6020, October 2010, 1076 . 1078 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1079 and A. Bierman, Ed., "Network Configuration Protocol 1080 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1081 . 1083 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1084 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 1085 . 1087 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 1088 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 1089 . 1091 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1092 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 1093 . 1095 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 1096 Access Control Model", STD 91, RFC 8341, 1097 DOI 10.17487/RFC8341, March 2018, 1098 . 1100 Appendix A. An Appendix 1102 Authors' Addresses 1104 Mahesh Jethanandani 1105 VMware 1106 California 1107 USA 1109 Email: mjethanandani@gmail.com 1111 Barbara Stark 1112 AT&T 1113 Atlanta, GA 1114 USA 1116 Email: barbara.stark@att.com