idnits 2.17.1 draft-ietf-rtgwg-yang-rip-07.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 194 has weird spacing: '...address ine...' == Line 297 has weird spacing: '...et-name pre...' == Line 370 has weird spacing: '...nterval uin...' == Line 376 has weird spacing: '...address ine...' -- The document date (December 13, 2017) is 2320 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) -- Possible downref: Normative reference to a draft: ref. 'I-D.bjorklund-netmod-rfc7223bis' -- Possible downref: Normative reference to a draft: ref. 'I-D.bjorklund-netmod-rfc7277bis' == Outdated reference: A later version (-17) exists of draft-ietf-bfd-yang-07 == Outdated reference: A later version (-42) exists of draft-ietf-isis-yang-isis-cfg-19 == Outdated reference: A later version (-29) exists of draft-ietf-ospf-yang-09 == Outdated reference: A later version (-10) exists of draft-ietf-netmod-revised-datastores-07 -- Obsolete informational reference (is this intentional?): RFC 6536 (Obsoleted by RFC 8341) == Outdated reference: A later version (-25) exists of draft-ietf-netconf-yang-push-11 == Outdated reference: A later version (-20) exists of draft-ietf-netmod-rfc6087bis-14 Summary: 0 errors (**), 0 flaws (~~), 11 warnings (==), 4 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group X. Liu 3 Internet-Draft Jabil 4 Intended status: Standards Track P. Sarda 5 Expires: June 16, 2018 Ericsson 6 V. Choudhary 7 Individual 8 December 13, 2017 10 A YANG Data Model for Routing Information Protocol (RIP) 11 draft-ietf-rtgwg-yang-rip-07 13 Abstract 15 This document describes a data model for the Routing Information 16 Protocol (RIP). Both RIP version 2 and RIPng are covered. 18 Status of This Memo 20 This Internet-Draft is submitted in full conformance with the 21 provisions of BCP 78 and BCP 79. 23 Internet-Drafts are working documents of the Internet Engineering 24 Task Force (IETF). Note that other groups may also distribute 25 working documents as Internet-Drafts. The list of current Internet- 26 Drafts is at http://datatracker.ietf.org/drafts/current/. 28 Internet-Drafts are draft documents valid for a maximum of six months 29 and may be updated, replaced, or obsoleted by other documents at any 30 time. It is inappropriate to use Internet-Drafts as reference 31 material or to cite them other than as "work in progress." 33 This Internet-Draft will expire on June 16, 2018. 35 Copyright Notice 37 Copyright (c) 2017 IETF Trust and the persons identified as the 38 document authors. All rights reserved. 40 This document is subject to BCP 78 and the IETF Trust's Legal 41 Provisions Relating to IETF Documents 42 (http://trustee.ietf.org/license-info) in effect on the date of 43 publication of this document. Please review these documents 44 carefully, as they describe your rights and restrictions with respect 45 to this document. Code Components extracted from this document must 46 include Simplified BSD License text as described in Section 4.e of 47 the Trust Legal Provisions and are provided without warranty as 48 described in the Simplified BSD License. 50 Table of Contents 52 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 53 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 2 54 1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 55 1.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 3 56 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 4 57 2.1. Scope of the Model . . . . . . . . . . . . . . . . . . . 4 58 2.2. Relation with Core Routing Framework . . . . . . . . . . 4 59 2.3. Protocol Configuration . . . . . . . . . . . . . . . . . 4 60 2.4. Protocol States . . . . . . . . . . . . . . . . . . . . . 5 61 2.5. RPC Operations . . . . . . . . . . . . . . . . . . . . . 7 62 2.6. Notifications . . . . . . . . . . . . . . . . . . . . . . 7 63 2.7. Optional Features . . . . . . . . . . . . . . . . . . . . 7 64 3. Tree Structure . . . . . . . . . . . . . . . . . . . . . . . 7 65 4. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 11 66 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 35 67 6. Security Considerations . . . . . . . . . . . . . . . . . . . 35 68 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 36 69 7.1. Normative References . . . . . . . . . . . . . . . . . . 36 70 7.2. Informative References . . . . . . . . . . . . . . . . . 37 71 Appendix A. Data Tree Example . . . . . . . . . . . . . . . . . 39 72 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 43 74 1. Introduction 76 This document introduces a YANG [RFC7950] data model for the Routing 77 Information Protocol (RIP) [RFC2453][RFC2080]. RIP was designed to 78 work as an Interior Gateway Protocol (IGP) in moderate-size 79 Autonomous Systems (AS). 81 This YANG model supports both RIP version 2 and RIPng. RIP version 2 82 (defined in [RFC2453]) supports IPv4. RIPng (defined in [RFC2080]) 83 supports IPv6. 85 1.1. Terminology 87 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 88 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 89 document are to be interpreted as described in [RFC2119]. 91 The following terms are defined in [RFC7950] and are not redefined 92 here: 94 o augment 96 o data model 97 o data node 99 1.2. Tree Diagrams 101 A simplified graphical representation of the data model is used in 102 this document. The meaning of the symbols in these diagrams is as 103 follows: 105 o Brackets "[" and "]" enclose list keys. 107 o Curly braces "{" and "}" contain names of optional features that 108 make the corresponding node conditional. 110 o Abbreviations before data node names: "rw" means configuration 111 (read-write), and "ro" means state data (read-only). 113 o Symbols after data node names: "?" means an optional node, "!" 114 means a presence container, and "*" denotes a list and leaf-list. 116 o Parentheses enclose choice and case nodes, and case nodes are also 117 marked with a colon (":"). 119 o Ellipsis ("...") stands for contents of subtrees that are not 120 shown. 122 1.3. Prefixes in Data Node Names 124 In this document, names of data nodes, actions, and other data model 125 objects are often used without a prefix, as long as it is clear from 126 the context in which YANG module each name is defined. Otherwise, 127 names are prefixed using the standard prefix associated with the 128 corresponding YANG module, as shown in Table 1. 130 +-----------+-----------------+-----------------------------------+ 131 | Prefix | YANG module | Reference | 132 +-----------+-----------------+-----------------------------------+ 133 | yang | ietf-yang-types | [RFC6991] | 134 | inet | ietf-inet-types | [RFC6991] | 135 | if | ietf-interfaces | [I-D.bjorklund-netmod-rfc7223bis] | 136 | ip | ietf-ip | [I-D.bjorklund-netmod-rfc7277bis] | 137 | rt | ietf-routing | [I-D.acee-netmod-rfc8022bis] | 138 | bfd-types | ietf-bfd-types | [I-D.ietf-bfd-yang] | 139 | isis | ietf-isis | [I-D.ietf-isis-yang-isis-cfg] | 140 | key-chain | ietf-key-chain | [RFC8177] | 141 | ospf | ietf-ospf | [I-D.ietf-ospf-yang] | 142 +-----------+-----------------+-----------------------------------+ 144 Table 1: Prefixes and Corresponding YANG Modules 146 2. Design of the Data Model 148 2.1. Scope of the Model 150 The model covers RIP version 2 [RFC2453] and RIPng [RFC2080] 151 protocols. The model is designed to be implemented on a device where 152 RIP version 2 or RIPng is implemented, and can be used to: 154 o Configure the RIP version 2 or RIPng protocol. 156 o Manage the protocol operational behaviors. 158 o Retrieve the protocol operational status. 160 The capabilities describe in [RFC1724] are covered. 162 2.2. Relation with Core Routing Framework 164 This model augments the core routing data model "ietf-routing" 165 specified in [I-D.acee-netmod-rfc8022bis]. 167 +--rw routing 168 +--rw router-id? 169 +--rw control-plane-protocols 170 | +--rw control-plane-protocol* [type name] 171 | +--rw type 172 | +--rw name 173 | +--rw rip <= Augmented by this Model 174 ... 176 The "rip" container instantiates a RIP protocol entity that supports 177 RIP version 2 or RIPng. Depending on the implementation of "ietf- 178 routing", a RIP instance MAY belong to a logical router or network 179 instance. 181 2.3. Protocol Configuration 183 The model structure for the protocol configuration is as shown below: 185 augment /rt:routing/rt:control-plane-protocols/ 186 rt:control-plane-protocol: 187 +--rw rip 188 +--rw 189 +--rw interface* [interface] 190 +--rw interface if:interface-ref 191 +--rw 192 +--rw neighbors {explicit-neighbors}? 193 | +--rw neighbor* [address] 194 | +--rw address inet:ip-address 195 | +--rw 197 The model allows to configure the following protocol entities: 199 o Protocol instance (RIP version 2 or RIPng) 201 o Interface 203 o Neighbor 205 2.4. Protocol States 207 The model structure for the protocol states is as shown below: 209 augment /rt:routing/rt:control-plane-protocols/ 210 rt:control-plane-protocol: 211 +--rw rip 212 +--ro 213 +--rw interface* [interface] 214 | +--rw interface if:interface-ref 215 | +--ro 216 | +--ro statistics {interface-statistics}? 217 | +--ro 218 +--ro ipv4 219 | +--ro neighbors 220 | | +--ro neighbor* [ipv4-address] 221 | | +--ro 222 | +--ro routes 223 | +--ro route* [ipv4-prefix] 224 | +--ro 225 +--ro ipv6 226 | +--ro neighbors 227 | | +--ro neighbor* [ipv6-address] 228 | | +--ro 229 | +--ro routes 230 | +--ro route* [ipv6-prefix] 231 | +--ro ipv6-prefix inet:ipv6-prefix 232 | +--ro 233 +--ro statistics {global-statistics}? 234 +--ro 236 This model conforms to the Network Management Datastore Architecture 237 (NMDA) [I-D.ietf-netmod-revised-datastores]. The operational state 238 data is combined with the associated configuration data in the same 239 hierarchy [I-D.ietf-netmod-rfc6087bis]. When protocol states are 240 retrieved from the NMDA operational state datastore, the returned 241 states cover all "config true" (rw) and "config false" (ro) nodes 242 defined in the schema. 244 The model allows to retrieve protocol states at the following levels: 246 o Protocol instance (RIP version 2 or RIPng) 248 o Interface 250 o Neighbor 252 o Route 254 2.5. RPC Operations 256 This model defines one RPC "clear-rip-route" that can be used to 257 clear RIP routes from the routing table. 259 2.6. Notifications 261 This model does not define RIP specific notifications. To enable 262 notifications, the mechanism defined in [I-D.ietf-netconf-yang-push] 263 and [I-D.ietf-netconf-rfc5277bis] can be used. This mechanism 264 currently allows the user to: 266 o Subscribe notifications on a per client basis. 268 o Specify subtree filters or xpath filters so that only interested 269 contents will be sent. 271 o Specify either periodic or on-demand notifications. 273 2.7. Optional Features 275 This model defines several features are beyond the basic RIP 276 configuration and it is the responsibility of each vendor to decide 277 whether to support a given feature on a device. 279 3. Tree Structure 281 This document defines the YANG module "ietf-rip", which has the 282 following tree structure: 284 module: ietf-rip 285 augment /rt:routing/rt:control-plane-protocols 286 /rt:control-plane-protocol: 287 +--rw rip 288 +--rw originate-default-route 289 | +--rw enabled? boolean 290 | +--rw route-policy? route-policy-ref 291 +--rw default-metric? uint8 292 +--rw distance? uint8 293 +--rw triggered-update-threshold? uint8 294 +--rw maximum-paths? uint8 295 +--rw output-delay? uint8 296 +--rw distribute-list* [prefix-set-name direction] 297 | +--rw prefix-set-name prefix-set-ref 298 | +--rw direction enumeration 299 | +--rw if-name? if:interface-ref 300 +--rw redistribute 301 | +--rw bgp* [asn] 302 | | +--rw asn inet:as-number 303 | | +--rw metric? uint8 304 | | +--rw route-policy? route-policy-ref 305 | +--rw cg-nat! 306 | | +--rw metric? uint8 307 | | +--rw route-policy? route-policy-ref 308 | +--rw connected! 309 | | +--rw metric? uint8 310 | | +--rw route-policy? route-policy-ref 311 | +--rw ipsec! 312 | | +--rw metric? uint8 313 | | +--rw route-policy? route-policy-ref 314 | +--rw isis* [instance] 315 | | +--rw instance -> ../../../../.. 316 /rt:control-plane-protocol/name 317 | | +--rw level? enumeration 318 | | +--rw metric? uint8 319 | | +--rw route-policy? route-policy-ref 320 | +--rw nat! 321 | | +--rw metric? uint8 322 | | +--rw route-policy? route-policy-ref 323 | +--rw ospfv2* [instance] 324 | | +--rw instance -> ../../../../.. 325 /rt:control-plane-protocol/name 326 | | +--rw route-type? ospf:route-type 327 | | +--rw metric? uint8 328 | | +--rw route-policy? route-policy-ref 329 | +--rw ospfv3* [instance] 330 | | +--rw instance -> ../../../../.. 331 /rt:control-plane-protocol/name 332 | | +--rw route-type? ospf:route-type 333 | | +--rw metric? uint8 334 | | +--rw route-policy? route-policy-ref 335 | +--rw ripv2* [instance] 336 | | +--rw instance -> ../../../../.. 337 /rt:control-plane-protocol/name 338 | | +--rw metric? uint8 339 | | +--rw route-policy? route-policy-ref 340 | +--rw ripng* [instance] 341 | | +--rw instance -> ../../../../.. 342 /rt:control-plane-protocol/name 343 | | +--rw metric? uint8 344 | | +--rw route-policy? route-policy-ref 345 | +--rw static! 346 | +--rw metric? uint8 347 | +--rw route-policy? route-policy-ref 348 +--rw timers 349 | +--rw update-interval? uint16 350 | +--rw invalid-interval? uint16 351 | +--rw holddown-interval? uint16 352 | +--rw flush-interval? uint16 353 +--rw interfaces 354 | +--rw interface* [interface] 355 | +--rw interface if:interface-ref 356 | +--rw authentication 357 | | +--rw (auth-type-selection)? 358 | | +--:(auth-key-chain) 359 | | | +--rw key-chain? 360 key-chain:key-chain-ref 361 | | +--:(auth-key) 362 | | +--rw key? string 363 | | +--rw crypto-algorithm? identityref 364 | +--rw bfd {bfd}? 365 | | +--rw enable? boolean 366 | | +--rw local-multiplier? multiplier 367 | | +--rw (interval-config-type)? 368 | | +--:(tx-rx-intervals) 369 | | | +--rw desired-min-tx-interval uint32 370 | | | +--rw required-min-rx-interval uint32 371 | | +--:(single-interval) 372 | | +--rw min-interval uint32 373 | +--rw cost? uint8 374 | +--rw neighbors {explicit-neighbors}? 375 | | +--rw neighbor* [address] 376 | | +--rw address inet:ip-address 377 | +--rw no-listen? empty 378 | +--rw originate-default-route 379 | | +--rw enabled? boolean 380 | | +--rw route-policy? route-policy-ref 381 | +--rw passive? empty 382 | +--rw split-horizon? enumeration 383 | +--rw summary-address 384 | | +--rw address? inet:ip-prefix 385 | | +--rw metric? uint8 386 | +--rw timers 387 | | +--rw update-interval? uint16 388 | | +--rw invalid-interval? uint16 389 | | +--rw holddown-interval? uint16 390 | | +--rw flush-interval? uint16 391 | +--ro oper-status? enumeration 392 | +--ro next-full-update? uint32 393 | +--ro valid-address? boolean 394 | +--ro statistics {interface-statistics}? 395 | +--ro discontinuity-time? yang:date-and-time 396 | +--ro bad-packets-rcvd? yang:counter32 397 | +--ro bad-routes-rcvd? yang:counter32 398 | +--ro updates-sent? yang:counter32 399 +--ro next-triggered-update? uint32 400 +--ro num-of-routes? uint32 401 +--ro ipv4 402 | +--ro neighbors 403 | | +--ro neighbor* [ipv4-address] 404 | | +--ro ipv4-address inet:ipv4-address 405 | | +--ro last-update? yang:date-and-time 406 | | +--ro bad-packets-rcvd? yang:counter32 407 | | +--ro bad-routes-rcvd? yang:counter32 408 | +--ro routes 409 | +--ro route* [ipv4-prefix] 410 | +--ro ipv4-prefix 411 inet:ipv4-prefix 412 | +--ro next-hop? 413 inet:ipv4-address 414 | +--ro interface? 415 if:interface-ref 416 | +--ro redistributed? boolean 417 | +--ro route-type? enumeration 418 | +--ro metric? uint8 419 | +--ro expire-time? uint16 420 | +--ro deleted? boolean 421 | +--ro holddown? boolean 422 | +--ro need-triggered-update? boolean 423 | +--ro inactive? boolean 424 | +--ro flush-expire-before-holddown? boolean 425 +--ro ipv6 426 | +--ro neighbors 427 | | +--ro neighbor* [ipv6-address] 428 | | +--ro ipv6-address inet:ipv6-address 429 | | +--ro last-update? yang:date-and-time 430 | | +--ro bad-packets-rcvd? yang:counter32 431 | | +--ro bad-routes-rcvd? yang:counter32 432 | +--ro routes 433 | +--ro route* [ipv6-prefix] 434 | +--ro ipv6-prefix 435 inet:ipv6-prefix 436 | +--ro next-hop? 437 inet:ipv6-address 438 | +--ro interface? 439 if:interface-ref 440 | +--ro redistributed? boolean 441 | +--ro route-type? enumeration 442 | +--ro metric? uint8 443 | +--ro expire-time? uint16 444 | +--ro deleted? boolean 445 | +--ro holddown? boolean 446 | +--ro need-triggered-update? boolean 447 | +--ro inactive? boolean 448 | +--ro flush-expire-before-holddown? boolean 449 +--ro statistics {global-statistics}? 450 +--ro discontinuity-time? yang:date-and-time 451 +--ro requests-rcvd? yang:counter32 452 +--ro requests-sent? yang:counter32 453 +--ro responses-rcvd? yang:counter32 454 +--ro responses-sent? yang:counter32 456 rpcs: 457 +---x clear-rip-route 458 +---w input 459 +---w rip-instance? -> /rt:routing 460 /control-plane-protocols/control-plane-protocol/name 462 4. YANG Module 464 file "ietf-rip@2017-12-05.yang" 465 module ietf-rip { 466 yang-version 1.1; 467 namespace "urn:ietf:params:xml:ns:yang:ietf-rip"; 469 prefix rip; 471 import ietf-inet-types { 472 prefix "inet"; 473 } 475 import ietf-yang-types { 476 prefix "yang"; 477 } 479 import ietf-interfaces { 480 prefix "if"; 481 } 483 import ietf-ip { 484 prefix "ip"; 485 } 487 import ietf-routing { 488 prefix "rt"; 489 } 491 import ietf-key-chain { 492 prefix "key-chain"; 493 } 495 import ietf-bfd-types { 496 prefix "bfd-types"; 497 } 499 import ietf-ospf { 500 prefix "ospf"; 501 } 503 import ietf-isis { 504 prefix "isis"; 505 } 507 organization "IETF Routing Area Working Group (rtgwg)"; 509 contact 510 "WG Web: 511 WG List: 513 WG Chair: Jeff Tantsura 514 516 WG Chair: Chris Bowers 517 519 Editor: Xufeng Liu 520 522 Editor: Prateek Sarda 523 525 Editor: Vikram Choudhary 526 "; 528 description 529 "This YANG module defines a model for managing Routing 530 Information Protocol (RIP), including RIP version 2 and RIPng. 532 Copyright (c) 2016 IETF Trust and the persons identified as 533 authors of the code. All rights reserved. 535 Redistribution and use in source and binary forms, with or 536 without modification, is permitted pursuant to, and subject to 537 the license terms contained in, the Simplified BSD License set 538 forth in Section 4.c of the IETF Trust's Legal Provisions 539 Relating to IETF Documents 540 (http://trustee.ietf.org/license-info)."; 542 revision 2017-12-05 { 543 description 544 "Initial revision."; 545 reference 546 "RFC 2453: RIP Version 2. 547 RFC 2080: RIPng for IPv6. 548 RFC 1724: RIP Version 2 MIB Extension."; 549 } 551 /* 552 * Features 553 */ 554 feature bfd { 555 description 556 "This feature indicates that the RIP implementation on the 557 system supports BFD (Bidirectional Forwarding Detection)."; 558 } 560 feature explicit-neighbors { 561 description 562 "This feature indicates that the system supports explicit 563 neighbor configuration on a RIP interface."; 564 } 566 feature global-statistics { 567 description 568 "This feature indicates that the system supports collecting 569 global statistic data related to RIP."; 570 } 572 feature interface-statistics { 573 description 574 "This feature indicates that the system supports collecting 575 per-interface statistic data related to RIP."; 576 } 578 /* 579 * Typedefs 580 */ 582 typedef prefix-set-ref { 583 type string; 584 description 585 "A type for a reference to a prefix set. 586 The string value is the name identifier for uniquely 587 identifying the referenced prefix set, which contains a list 588 of prefixes that a routing policy can applied. The definition 589 of such a prefix set is outside the scope of this document."; 590 } 592 typedef route-policy-ref { 593 type string; 594 description 595 "A type for a reference to a route policy. 596 The string value is the name identifier for uniquely 597 identifying the referenced routing policy, which contains one 598 or more policy rules that can be used for a routing decision. 599 The definition of such a routing policy is outside the scope 600 of this document."; 601 } 603 /* 604 * Identities 605 */ 607 identity rip { 608 base rt:routing-protocol; 609 description "Identity for the RIP routing protocol."; 610 } 612 identity ripv2 { 613 base rip:rip; 614 description "Identity for RIPv2 (RIP version 2)."; 615 } 617 identity ripng { 618 base rip:rip; 619 description "Identity for RIPng."; 620 } 622 /* 623 * Groupings 624 */ 626 grouping originate-default-route-container { 627 description 628 "Containing settings whether to originate the default route 629 in RIP routing instance."; 630 container originate-default-route { 631 description 632 "Injects the default route into the RIP (RIPv2 or RIPng) 633 routing instance."; 634 leaf enabled { 635 type boolean; 636 default false; 637 description 638 "'true' if originating default route is enabled."; 639 } 640 leaf route-policy { 641 type route-policy-ref; 642 description 643 "The conditions of the route policy are applied to the 644 default route."; 645 } 646 } 647 } 649 grouping redistribute-container { 650 description 651 "Container of redistribute attributes."; 653 container redistribute { 654 description 655 "Redistributes routes learned from other routing protocols 656 into the RIP routing instance."; 657 list bgp { 658 key "asn"; 659 description 660 "Redistributes routes from the specified BGP (Border 661 Gateway Protocol) autonomous system (AS) into the RIP 662 routing instance."; 663 leaf asn { 664 type inet:as-number; 665 description 666 "BGP autonomous system (AS) number."; 667 } 668 uses redistribute-route-policy-attributes; 669 } 670 container cg-nat { 671 presence 672 "Present if Carrier Grade Network Address Translation 673 (CGNAT) routes are redistributed."; 674 description 675 "Carrier Grade Network Address Translation (CGNAT) 676 routes."; 677 uses redistribute-route-policy-attributes; 678 } 679 container connected { 680 presence 681 "Present if directly attached network routes are 682 redistributed."; 683 description 684 "Redistributes directly attached networks into the RIP 685 routing instance."; 686 uses redistribute-route-policy-attributes; 687 } 688 container ipsec { 689 presence 690 "Present if IP security routing instance routes 691 are redistributed."; 692 description 693 "Redistributes routes from the IP security routing 694 instance into the RIP routing instance."; 695 uses redistribute-route-policy-attributes; 696 } 697 list isis { 698 key "instance"; 699 description 700 "Redistributes IS-IS routes."; 701 leaf instance { 702 type leafref { 703 path "../../../../../rt:control-plane-protocol/rt:name"; 704 } 705 must "derived-from-or-self(" 706 + "../../../../../rt:control-plane-protocol" 707 + "[rt:name = current()]/rt:type, 'isis:isis')" { 708 description 709 "The type of the routing protocol must be 'isis'"; 710 } 711 description 712 "Redistributes routes from the specified IS-IS routing 713 instance into the RIP routing instance."; 714 } 715 leaf level { 716 type enumeration { 717 enum 1 { 718 description "IS-IS level 1 routes."; 719 } 720 enum 2 { 721 description "IS-IS level 2 routes."; 722 } 723 enum 1-2 { 724 description "IS-IS level 1-2 routes."; 725 } 726 } 727 description 728 "IS-IS level."; 729 } 730 uses redistribute-route-policy-attributes; 731 } 732 container nat { 733 presence 734 "Present if Network Address Translation (NAT) routes 735 are redistributed."; 736 description 737 "Redistributes Network Address Translation (NAT) 738 routes into the RIP routing instance."; 739 uses redistribute-route-policy-attributes; 740 } 741 list ospfv2 { 742 when "derived-from-or-self(../../../rt:type, 'rip:ripv2')" { 743 description 744 "Applicable to RIPv2."; 745 } 746 key "instance"; 747 description 748 "Redistributes routes from the specified OSPFv2 routing 749 instance into the RIPv2 routing instance."; 750 leaf instance { 751 type leafref { 752 path "../../../../../rt:control-plane-protocol/rt:name"; 753 } 754 must "derived-from-or-self(" 755 + "../../../../../rt:control-plane-protocol" 756 + "[rt:name = current()]/rt:type, 'ospf:ospfv2')" { 757 description 758 "The type of the routing protocol must be 'ospfv2'"; 759 } 760 description 761 "OSPFv2 instance ID. Redistributes routes from the 762 specified OSPFv2 routing instance into the RIPv2 routing 763 instance. "; 764 } 765 leaf route-type { 766 type ospf:route-type; 767 description 768 "Redistributes only those OSPFv2 routes matching the 769 specified route type into the RIPv2 routing instance."; 770 } 771 uses redistribute-route-policy-attributes; 772 } 773 list ospfv3 { 774 when "derived-from-or-self(../../../rt:type, 'rip:ripng')" { 775 description 776 "Applicable to RIPng."; 777 } 778 key "instance"; 779 description 780 "Redistributes routes from the specified OSPFv3 routing 781 instance into the RIPng routing instance."; 782 leaf instance { 783 type leafref { 784 path "../../../../../rt:control-plane-protocol/rt:name"; 785 } 786 must "derived-from-or-self(" 787 + "../../../../../rt:control-plane-protocol" 788 + "[rt:name = current()]/rt:type, 'ospf:ospfv3')" { 789 description 790 "The type of the routing protocol must be 'ospfv3'"; 791 } 792 description 793 "OSPFv3 instance ID. Redistributes routes from the 794 specified OSPFv3 routing instance into the RIPng routing 795 instance. "; 796 } 797 leaf route-type { 798 type ospf:route-type; 799 description 800 "Redistributes only those OSPFv3 routes matching the 801 specified route type into the RIPng routing instance."; 802 } 803 uses redistribute-route-policy-attributes; 804 } 805 list ripv2 { 806 when "derived-from-or-self(../../../rt:type, 'rip:ripv2')" { 807 description 808 "Applicable to RIPv2."; 809 } 810 key "instance"; 811 description 812 "Redistributes routes from another RIPv2 routing instance 813 into the current RIPv2 routing instance."; 814 leaf instance { 815 type leafref { 816 path "../../../../../rt:control-plane-protocol/rt:name"; 817 } 818 must "derived-from-or-self(" 819 + "../../../../../rt:control-plane-protocol" 820 + "[rt:name = current()]/rt:type, 'rip:ripv2')" { 821 description 822 "The type of the routing protocol must be 'ripv2'"; 823 } 824 description 825 "Redistributes routes from the specified RIPv2 routing 826 instance into the RIPv2 routing instance."; 827 } 828 uses redistribute-route-policy-attributes; 829 } 830 list ripng { 831 when "derived-from-or-self(../../../rt:type, 'rip:ripng')" { 832 description 833 "Applicable to RIPng."; 834 } 835 key "instance"; 836 description 837 "Redistributes routes from another RIPng routing instance 838 into the current RIPng routing instance."; 839 leaf instance { 840 type leafref { 841 path "../../../../../rt:control-plane-protocol/rt:name"; 842 } 843 must "derived-from-or-self(" 844 + "../../../../../rt:control-plane-protocol" 845 + "[rt:name = current()]/rt:type, 'rip:ripng')" { 846 description 847 "The type of the routing protocol must be 'ripng'"; 848 } 849 description 850 "Redistributes routes from the specified RIPng routing 851 instance into the RIPng routing instance."; 852 } 853 uses redistribute-route-policy-attributes; 854 } 855 container static { 856 presence "Present if redistributing static routes."; 857 description 858 "Redistributes static routes into the RIP routing 859 instance."; 860 uses redistribute-route-policy-attributes; 861 } 862 } // redistribute 863 } // redistribute-container 865 grouping redistribute-route-policy-attributes { 866 description 867 "Attributes for redistributing a route policy."; 868 leaf metric { 869 type uint8 { 870 range 0..16; 871 } 872 description 873 "Metric used for the redistributed route. If a metric is 874 not specified, the metric configured with the 875 default-metric attribute in RIP router configuration is 876 used. If the default-metric attribute has not been 877 configured, the default metric for redistributed routes 878 is 0."; 879 } 880 leaf route-policy { 881 type route-policy-ref; 882 description 883 "Applies the conditions of the specified route policy to 884 routes that are redistributed into the RIP routing 885 instance."; 886 } 887 } // redistribute-route-policy-attributes 889 grouping timers-container { 890 description 891 "Container for settings of basic timers"; 892 container timers { 893 must "invalid-interval >= (update-interval * 3)" { 894 description 895 "invalid-interval must be at least three times the value 896 for the update-interval argument."; 897 } 898 must "flush-interval > invalid-interval" { 899 description 900 "flush-interval must be larger than the value for the 901 invalid-interval argument"; 902 } 903 description 904 "Timers for the specified RIPv2 or RIPng instance or 905 interface."; 906 leaf update-interval { 907 type uint16 { 908 range 1..32767; 909 } 910 units seconds; 911 default 30; 912 description 913 "Interval at which RIPv2 or RIPng updates are sent."; 914 } 915 leaf invalid-interval { 916 type uint16 { 917 range 1..32767; 918 } 919 units seconds; 920 default 180; 921 description 922 "Interval before a route is declared invalid after no 923 updates are received. This value is at least three times 924 the value for the update-interval argument."; 925 } 926 leaf holddown-interval { 927 type uint16 { 928 range 1..32767; 929 } 930 units seconds; 931 default 180; 932 description 933 "Interval before better routes are released."; 934 } 935 leaf flush-interval { 936 type uint16 { 937 range 1..32767; 938 } 939 units seconds; 940 default 240; 941 description 942 "Interval before a route is flushed from the routing 943 table. This value must be larger than the value for the 944 invalid-interval argument."; 945 } 946 } // timers 947 } 949 grouping global-attributes { 950 description 951 "Global configuration and state attributes."; 952 uses originate-default-route-container; 954 leaf default-metric { 955 type uint8 { 956 range 0..16; 957 } 958 default 0; 959 description 960 "Set the default metric."; 961 } 963 leaf distance { 964 type uint8 { 965 range 1..255; 966 } 967 default 120; 968 description 969 "The administrative distance of the RIPv2 or RIPng for the 970 current RIPv2 or RIPng instance."; 971 } 972 leaf triggered-update-threshold { 973 type uint8 { 974 range 1..30; 975 } 976 units seconds; 977 default 5; 978 description 979 "This attribute is used to suppress triggered updates. 980 When the arrival of a regularly scheduled update matches the 981 number of seconds or is less than the number seconds 982 configured with this attribute, the triggered update is 983 suppressed."; 984 } 986 leaf maximum-paths { 987 type uint8 { 988 range 1..16; 989 } 990 default 8; 991 description 992 "The number of multiple equal-cost RIPv2 or RIPng routes 993 that can be used as the best paths for balancing the load 994 of outgoing traffic packets."; 995 } 997 leaf output-delay { 998 type uint8 { 999 range 1..50; 1000 } 1001 units milliseconds; 1002 description 1003 "A delay time between packets sent in multipacket 1004 RIPv2 or RIPng updates."; 1005 } 1006 } // global-attributes 1008 grouping distribute-lists { 1009 description 1010 "Grouping for distribute lists."; 1011 list distribute-list { 1012 key "prefix-set-name direction"; 1013 description 1014 "List of distribute-lists, which are used to filter in-coming 1015 or out-going routing updates."; 1017 leaf prefix-set-name { 1018 type prefix-set-ref; 1019 description 1020 "Reference to a prefix list to be applied to RIPv2 or 1021 RIPng packets."; 1022 } 1024 leaf direction { 1025 type enumeration { 1026 enum "in" { 1027 description 1028 "Apply the distribute-list to in-coming routes."; 1029 } 1030 enum "out" { 1031 description 1032 "Apply the distribute-list to out-going routes."; 1033 } 1034 } 1035 description 1036 "Direction of the routing updates."; 1037 } 1039 leaf if-name { 1040 type if:interface-ref; 1041 description 1042 "Reference to an interface to which the prefix list is 1043 applied."; 1044 } 1045 } 1046 } // distribute-lists 1048 grouping route-attributes { 1049 description 1050 "Grouping for route attributes."; 1051 leaf redistributed { 1052 type boolean; 1053 description 1054 "Redistributed routes"; 1055 } 1057 leaf route-type { 1058 type enumeration { 1059 enum connected { 1060 description "Connected route."; 1061 } 1062 enum external { 1063 description "External route."; 1064 } 1065 enum external-backup { 1066 description "External backup route."; 1067 } 1068 enum rip { 1069 description "RIP route."; 1070 } 1071 } 1072 description 1073 "Route type."; 1074 } 1075 leaf metric { 1076 type uint8 { 1077 range 0..16; 1078 } 1079 description "Route metric."; 1080 } 1081 leaf expire-time { 1082 type uint16; 1083 description "Expiration time."; 1084 } 1085 leaf deleted { 1086 type boolean; 1087 description "Deleted route."; 1088 } 1089 leaf holddown { 1090 type boolean; 1091 description "Holddown route."; 1092 } 1093 leaf need-triggered-update { 1094 type boolean; 1095 description "The route needs triggered update."; 1096 } 1097 leaf inactive { 1098 type boolean; 1099 description "The route is inactive."; 1100 } 1101 leaf flush-expire-before-holddown { 1102 type boolean; 1103 description 1104 "The flush timer expired before holddown time."; 1105 } 1106 } // route-attribute 1108 /* 1109 * Configuration data and operational state data nodes 1110 */ 1112 augment "/rt:routing/rt:control-plane-protocols/" 1113 + "rt:control-plane-protocol" { 1114 when "derived-from(rt:type, 'rip:rip')" { 1115 description 1116 "This augment is only valid for a routing protocol instance 1117 of RIP (type 'ripv2' or 'ripng')."; 1118 } 1119 description "RIP augmentation."; 1121 container rip { 1122 description 1123 "RIP data."; 1125 uses global-attributes; 1126 uses distribute-lists; 1127 uses redistribute-container; 1128 uses timers-container; 1130 container interfaces { 1131 description 1132 "Containing a list of RIP interfaces."; 1133 list interface { 1134 key "interface"; 1135 description 1136 "List of RIP interfaces."; 1137 leaf interface { 1138 type if:interface-ref; 1139 must "(derived-from-or-self(" 1140 + "../../../../rt:type, 'rip:ripv2') and " 1141 + "/if:interfaces/if:interface[if:name=current()]/" 1142 + "ip:ipv4) or " 1143 + "(derived-from-or-self(" 1144 + "../../../../rt:type, 'rip:ripng') and " 1145 + "/if:interfaces/if:interface[if:name=current()]/" 1146 + "ip:ipv6)" { 1147 error-message "Invalid interface type."; 1148 description 1149 "RIPv2 can be enabled on IPv4 interfae, and 1150 RIPng can be enabled on IPv6 interface."; 1151 } 1152 description 1153 "Enable RIP on this interface."; 1154 } 1156 container authentication { 1157 when "derived-from-or-self(" 1158 + "../../../../rt:type, 'rip:ripv2')" { 1159 description "Only applicable to RIPv2."; 1160 } 1161 description 1162 "Enables authentication and specifies the 1163 authentication scheme for the RIP interface"; 1165 choice auth-type-selection { 1166 description 1167 "Specify the authentication scheme."; 1168 reference 1169 "RFC8177: YANG Data Model for Key Chains."; 1170 case auth-key-chain { 1171 leaf key-chain { 1172 type key-chain:key-chain-ref; 1173 description 1174 "key-chain name."; 1175 } 1176 } 1177 case auth-key { 1178 leaf key { 1179 type string; 1180 description 1181 "Key string in ASCII format."; 1182 } 1183 leaf crypto-algorithm { 1184 type identityref { 1185 base key-chain:crypto-algorithm; 1186 } 1187 description 1188 "Cryptographic algorithm associated with key."; 1189 } 1190 } 1191 } 1192 } 1194 container bfd { 1195 if-feature bfd; 1196 description "BFD configuration."; 1197 uses bfd-types:client-cfg-parms; 1198 } 1200 leaf cost { 1201 type uint8 { 1202 range 1..16; 1203 } 1204 default 1; 1205 description 1206 "Interface cost."; 1207 } 1209 container neighbors { 1210 if-feature explicit-neighbors; 1211 description 1212 "Specifies the RIP neighbors. Useful for a 1213 non-broadcast multiple access (NBMA) network."; 1214 list neighbor { 1215 key "address"; 1216 description 1217 "Specify a RIP neighbor on a non-broadcast network."; 1218 leaf address { 1219 type inet:ip-address; 1220 description "Neighbor IP address."; 1221 } 1222 } 1223 } 1225 leaf no-listen { 1226 type empty; 1227 description 1228 "Disables listening to and processing of RIPv2 or RIPng 1229 packets on the specified interface."; 1230 } 1232 uses originate-default-route-container; 1234 leaf passive { 1235 type empty; 1236 description 1237 "Disables sending of RIPv2 or RIPng packets on the 1238 specified interface."; 1239 } 1241 leaf split-horizon { 1242 type enumeration { 1243 enum disabled { 1244 description 1245 "Disables split-horizon processing."; 1246 } 1247 enum simple { 1248 description 1249 "Enables simple split-horizon processing."; 1250 } 1251 enum poison-reverse { 1252 description 1253 "Enables split-horizon processing with poison 1254 reverse."; 1255 } 1256 } 1257 default simple; 1258 description 1259 "Controls RIPv2 or RIPng split-horizon processing on 1260 the specified interface."; 1262 } 1264 container summary-address { 1265 description 1266 "Summarizes information about RIPv2 or RIPng routes 1267 sent over the specified interface in RIPv2 or RIPng 1268 update packets."; 1269 leaf address { 1270 type inet:ip-prefix; 1271 description 1272 "IPv4 address, in the form A.B.C.D, and the prefix 1273 length, separated by the slash (/) character; 1274 or IPv6 address, in the form A:B:C:D:E:F:G:H, and 1275 the prefix length, separated by the slash (/) 1276 character."; 1277 } 1278 leaf metric { 1279 type uint8 { 1280 range 0..16; 1281 } 1282 description 1283 "Metric used for the route. If this attribute is not 1284 used, the value set through the default-metric 1285 attribute in RIPv2 or RIPng router configuration is 1286 used for the route. "; 1287 } 1288 } 1290 uses timers-container; 1292 /* Operational state */ 1293 leaf oper-status { 1294 type enumeration { 1295 enum up { 1296 description 1297 "RIPv2 or RIPng is operational on this interface."; 1298 } 1299 enum down { 1300 description 1301 "RIPv2 or RIPng is not operational on this 1302 interface."; 1303 } 1304 } 1305 config false; 1306 description 1307 "Operational state."; 1308 } 1309 leaf next-full-update { 1310 type uint32; 1311 config false; 1312 description 1313 "Next full update time."; 1314 } 1315 leaf valid-address { 1316 type boolean; 1317 config false; 1318 description 1319 "The interface has a valid address."; 1320 } 1322 container statistics { 1323 if-feature interface-statistics; 1324 config false; 1325 description 1326 "Interface statistic counters."; 1327 leaf discontinuity-time { 1328 type yang:date-and-time; 1329 description 1330 "The time on the most recent occasion at which any 1331 one or more of the statistic counters suffered a 1332 discontinuity. If no such discontinuities have 1333 occurred since the last re-initialization of the 1334 local management subsystem, then this node contains 1335 the time the local management subsystem 1336 re-initialized itself."; 1337 } 1338 leaf bad-packets-rcvd { 1339 type yang:counter32; 1340 description 1341 "The number of RIP invalid packets received by 1342 the RIP process which were subsequently discarded 1343 for any reason (e.g. a version 0 packet, or an 1344 unknown command type)."; 1345 } 1346 leaf bad-routes-rcvd { 1347 type yang:counter32; 1348 description 1349 "The number of routes, in valid RIP packets, 1350 which were ignored for any reason (e.g. unknown 1351 address family, or invalid metric)."; 1352 } 1353 leaf updates-sent { 1354 type yang:counter32; 1355 description 1356 "The number of triggered RIP updates actually 1357 sent on this interface. This explicitly does 1358 NOT include full updates sent containing new 1359 information."; 1360 } 1361 } 1362 } // interface 1363 } // interfaces 1365 /* Operational state */ 1366 leaf next-triggered-update { 1367 type uint32; 1368 config false; 1369 description 1370 "Next triggered update."; 1371 } 1372 leaf num-of-routes { 1373 type uint32; 1374 config false; 1375 description 1376 "The number of routes."; 1377 } 1379 container ipv4 { 1380 when "derived-from-or-self(../../rt:type, 'rip:ripv2')" { 1381 description 1382 "IPv4 address family is supported by RIPv2."; 1383 } 1384 config false; 1385 description 1386 "IPv4 address family information."; 1387 container neighbors { 1388 description 1389 "IPv4 neighbor information."; 1390 list neighbor { 1391 key "ipv4-address"; 1392 description 1393 "A RIPv2 neighbor."; 1395 leaf ipv4-address { 1396 type inet:ipv4-address; 1397 description 1398 "IP address that a RIP neighbor is using as its 1399 source address."; 1400 } 1401 leaf last-update { 1402 type yang:date-and-time; 1403 description 1404 "The time when the most recent RIP update was 1405 received from this neighbor."; 1407 } 1408 leaf bad-packets-rcvd { 1409 type yang:counter32; 1410 description 1411 "The number of RIP invalid packets received from 1412 this neighbor which were subsequently discarded 1413 for any reason (e.g. a version 0 packet, or an 1414 unknown command type)."; 1415 } 1416 leaf bad-routes-rcvd { 1417 type yang:counter32; 1418 description 1419 "The number of routes received from this neighbor, 1420 in valid RIP packets, which were ignored for any 1421 reason (e.g. unknown address family, or invalid 1422 metric)."; 1423 } 1424 } // neighbor 1425 } // neighbors 1426 container routes { 1427 description 1428 "IPv4 route information."; 1429 list route { 1430 key "ipv4-prefix"; 1431 description 1432 "A RIPv2 IPv4 route."; 1434 leaf ipv4-prefix { 1435 type inet:ipv4-prefix; 1436 description 1437 "IP address (in the form A.B.C.D) and prefix length, 1438 separated by the slash (/) character. The range of 1439 values for the prefix-length is 0 to 32."; 1440 } 1441 leaf next-hop { 1442 type inet:ipv4-address; 1443 description 1444 "Next hop IPv4 address."; 1445 } 1446 leaf interface { 1447 type if:interface-ref; 1448 description 1449 "The interface that the route uses."; 1450 } 1451 uses route-attributes; 1452 } // route 1453 } // routes 1454 } // ipv4 1455 container ipv6 { 1456 when "derived-from-or-self(../../rt:type, 'rip:ripng')" { 1457 description 1458 "IPv6 address family is supported by RIPng."; 1459 } 1460 config false; 1461 description 1462 "IPv6 address family information."; 1463 container neighbors { 1464 description 1465 "IPv6 neighbor information."; 1466 list neighbor { 1467 key "ipv6-address"; 1468 description 1469 "A RIPng neighbor."; 1471 leaf ipv6-address { 1472 type inet:ipv6-address; 1473 description 1474 "IP address that a RIP neighbor is using as its 1475 source address."; 1476 } 1477 leaf last-update { 1478 type yang:date-and-time; 1479 description 1480 "The time when the most recent RIP update was 1481 received from this neighbor."; 1482 } 1483 leaf bad-packets-rcvd { 1484 type yang:counter32; 1485 description 1486 "The number of RIP invalid packets received from 1487 this neighbor which were subsequently discarded 1488 for any reason (e.g. a version 0 packet, or an 1489 unknown command type)."; 1490 } 1491 leaf bad-routes-rcvd { 1492 type yang:counter32; 1493 description 1494 "The number of routes received from this neighbor, 1495 in valid RIP packets, which were ignored for any 1496 reason (e.g. unknown address family, or invalid 1497 metric)."; 1498 } 1499 } // neighbor 1500 } // neighbors 1501 container routes { 1502 description 1503 "IPv6 route information."; 1504 list route { 1505 key "ipv6-prefix"; 1506 description 1507 "A RIPng IPv6 route."; 1509 leaf ipv6-prefix { 1510 type inet:ipv6-prefix; 1511 description 1512 "IP address (in the canonical format defined in 1513 RFC5952) and prefix length, separated by the slash 1514 (/) character. The range of values for the 1515 prefix-length is 0 to 128."; 1516 } 1517 leaf next-hop { 1518 type inet:ipv6-address; 1519 description 1520 "Next hop IPv6 address."; 1521 } 1522 leaf interface { 1523 type if:interface-ref; 1524 description 1525 "The interface that the route uses."; 1526 } 1527 uses route-attributes; 1528 } // route 1529 } // routes 1530 } // ipv6 1532 container statistics { 1533 if-feature global-statistics; 1534 config false; 1535 description 1536 "Global statistic counters."; 1537 leaf discontinuity-time { 1538 type yang:date-and-time; 1539 description 1540 "The time on the most recent occasion at which any one 1541 or more of the statistic counters suffered a 1542 discontinuity. If no such discontinuities have occurred 1543 since the last re-initialization of the local 1544 management subsystem, then this node contains the time 1545 the local management subsystem re-initialized itself."; 1546 } 1547 leaf requests-rcvd { 1548 type yang:counter32; 1549 description 1550 "The number of requests received by RIP."; 1552 } 1553 leaf requests-sent { 1554 type yang:counter32; 1555 description 1556 "The number of requests sent by RIP."; 1557 } 1558 leaf responses-rcvd { 1559 type yang:counter32; 1560 description 1561 "The number of responses received by RIP."; 1562 } 1563 leaf responses-sent { 1564 type yang:counter32; 1565 description 1566 "The number of responses sent by RIP."; 1567 } 1568 } // statistics 1569 } // container rip 1570 } 1572 /* 1573 * RPCs 1574 */ 1576 rpc clear-rip-route { 1577 description 1578 "Clears RIP routes from the IP routing table and routes 1579 redistributed into the RIP protocol for the specified RIP 1580 instance or for all RIP instances in the current context."; 1582 input { 1583 leaf rip-instance { 1584 type leafref { 1585 path "/rt:routing/rt:control-plane-protocols/" 1586 + "rt:control-plane-protocol/rt:name"; 1587 } 1588 description 1589 "Instance name identifying a specific RIP instance. 1590 This leaf is optional for the rpc. 1591 If it is specified, the rpc will clear all routes in the 1592 specified RIP instance; 1593 if it is not specified, the rpc will clear all routes in 1594 all RIP instances."; 1595 } 1596 } 1597 } // rcp clear-rip-route 1598 } 1599 1601 5. IANA Considerations 1603 RFC Ed.: In this section, replace all occurrences of 'XXXX' with the 1604 actual RFC number (and remove this note). 1606 This document registers the following namespace URIs in the IETF XML 1607 registry [RFC3688]: 1609 -------------------------------------------------------------------- 1610 URI: urn:ietf:params:xml:ns:yang:ietf-rip 1611 Registrant Contact: The IESG. 1612 XML: N/A, the requested URI is an XML namespace. 1613 -------------------------------------------------------------------- 1615 This document registers the following YANG modules in the YANG Module 1616 Names registry [RFC7950]: 1618 -------------------------------------------------------------------- 1619 name: ietf-rip 1620 namespace: urn:ietf:params:xml:ns:yang:ietf-rip 1621 prefix: rip 1622 reference: RFC XXXX 1623 -------------------------------------------------------------------- 1625 6. Security Considerations 1627 The configuration, state, and action data defined in this document 1628 are designed to be accessed via a management protocol with a secure 1629 transport layer, such as NETCONF [RFC6241]. The NETCONF access 1630 control model [RFC6536] provides the means to restrict access for 1631 particular NETCONF users to a preconfigured subset of all available 1632 NETCONF protocol operations and contents. 1634 A number of configuration data nodes defined in this document are 1635 writable/creatable/deletable (i.e., "config true" in YANG terms, 1636 which is the default). These data nodes may be considered sensitive 1637 or vulnerable in some network environments. Write operations to 1638 these data nodes, such as "edit-config" in NETCONF, can have negative 1639 effects on the network if the protocol operations are not properly 1640 protected. The vulnerable "config true" parameters and subtrees are 1641 the following: 1643 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1644 rip:rip 1646 Unauthorized access to any node of these can adversely affect the 1647 routing subsystem of both the local device and the network. This may 1648 lead to network malfunctions, delivery of packets to inappropriate 1649 destinations, and other problems. 1651 This data model also defines a RPC "clear-rip-route", which may 1652 affect the routing subsystem in the same way as described above. 1654 7. References 1656 7.1. Normative References 1658 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1659 Requirement Levels", BCP 14, RFC 2119, 1660 DOI 10.17487/RFC2119, March 1997, . 1663 [RFC2453] Malkin, G., "RIP Version 2", STD 56, RFC 2453, 1664 DOI 10.17487/RFC2453, November 1998, . 1667 [RFC2080] Malkin, G. and R. Minnear, "RIPng for IPv6", RFC 2080, 1668 DOI 10.17487/RFC2080, January 1997, . 1671 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1672 DOI 10.17487/RFC3688, January 2004, . 1675 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1676 and A. Bierman, Ed., "Network Configuration Protocol 1677 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1678 . 1680 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 1681 RFC 6991, DOI 10.17487/RFC6991, July 2013, 1682 . 1684 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1685 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1686 . 1688 [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. 1689 Zhang, "YANG Data Model for Key Chains", RFC 8177, 1690 DOI 10.17487/RFC8177, June 2017, . 1693 [I-D.bjorklund-netmod-rfc7223bis] 1694 Bjorklund, M., "A YANG Data Model for Interface 1695 Management", draft-bjorklund-netmod-rfc7223bis-00 (work in 1696 progress), August 2017. 1698 [I-D.bjorklund-netmod-rfc7277bis] 1699 Bjorklund, M., "A YANG Data Model for IP Management", 1700 draft-bjorklund-netmod-rfc7277bis-00 (work in progress), 1701 August 2017. 1703 [I-D.acee-netmod-rfc8022bis] 1704 Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 1705 Routing Management (NDMA Version)", draft-acee-netmod- 1706 rfc8022bis-06 (work in progress), October 2017. 1708 [I-D.ietf-bfd-yang] 1709 Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and 1710 G. Mirsky, "YANG Data Model for Bidirectional Forwarding 1711 Detection (BFD)", draft-ietf-bfd-yang-07 (work in 1712 progress), October 2017. 1714 [I-D.ietf-isis-yang-isis-cfg] 1715 Litkowski, S., Yeung, D., Lindem, A., Zhang, Z., and L. 1716 Lhotka, "YANG Data Model for IS-IS protocol", draft-ietf- 1717 isis-yang-isis-cfg-19 (work in progress), November 2017. 1719 [I-D.ietf-ospf-yang] 1720 Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, 1721 "Yang Data Model for OSPF Protocol", draft-ietf-ospf- 1722 yang-09 (work in progress), October 2017. 1724 [I-D.ietf-netmod-revised-datastores] 1725 Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1726 and R. Wilton, "Network Management Datastore 1727 Architecture", draft-ietf-netmod-revised-datastores-07 1728 (work in progress), November 2017. 1730 7.2. Informative References 1732 [RFC1724] Malkin, G. and F. Baker, "RIP Version 2 MIB Extension", 1733 RFC 1724, DOI 10.17487/RFC1724, November 1994, 1734 . 1736 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1737 Protocol (NETCONF) Access Control Model", RFC 6536, 1738 DOI 10.17487/RFC6536, March 2012, . 1741 [RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG", 1742 RFC 7951, DOI 10.17487/RFC7951, August 2016, 1743 . 1745 [I-D.ietf-netconf-rfc5277bis] 1746 Clemm, A., Prieto, A., Voit, E., Nilsen-Nygaard, E., 1747 Tripathy, A., Chisholm, S., and H. Trevino, "Subscribing 1748 to Event Notifications", draft-ietf-netconf-rfc5277bis-01 1749 (work in progress), October 2016. 1751 [I-D.ietf-netconf-yang-push] 1752 Clemm, A., Voit, E., Prieto, A., Tripathy, A., Nilsen- 1753 Nygaard, E., Bierman, A., and B. Lengyel, "YANG Datastore 1754 Subscription", draft-ietf-netconf-yang-push-11 (work in 1755 progress), October 2017. 1757 [I-D.ietf-netmod-rfc6087bis] 1758 Bierman, A., "Guidelines for Authors and Reviewers of YANG 1759 Data Model Documents", draft-ietf-netmod-rfc6087bis-14 1760 (work in progress), September 2017. 1762 Appendix A. Data Tree Example 1764 This section contains an example of an instance data tree in the JSON 1765 encoding [RFC7951], containing both configuration and state data. 1767 +---------------------+ 1768 | | 1769 | Router 203.0.113.1 | 1770 | | 1771 +----------+----------+ 1772 |eth1 1773 |192.0.2.1/24 1774 | 1775 | 1776 |192.0.2.2/24 1777 +----------+----------+ 1778 | | | 1779 | Another Router +---------| 198.51.100.0/24 1780 | | | 1781 +---------------------+ 1783 The configuration instance data tree for Router 203.0.113.1 in the 1784 above figure could be as follows: 1786 { 1787 "ietf-interfaces:interfaces": { 1788 "interface": [ 1789 { 1790 "name": "eth1", 1791 "description": "An interface with RIPv2 enabled.", 1792 "type": "iana-if-type:ethernetCsmacd", 1793 "ietf-ip:ipv4": { 1794 "address": [ 1795 { 1796 "ip": "192.0.2.1", 1797 "prefix-length": 24 1798 } 1799 ], 1800 "forwarding": true 1801 } 1802 } 1803 ] 1804 }, 1805 "ietf-routing:routing": { 1806 "router-id": "203.0.113.1", 1807 "control-plane-protocols": { 1808 "control-plane-protocol": [ 1809 { 1810 "type": "ietf-rip:ripv2", 1811 "name": "ripv2-1", 1812 "description": "RIPv2 instance ripv2-1.", 1813 "ietf-rip:rip": { 1814 "redistribute": { 1815 "connected": { 1816 } 1817 } 1818 "interfaces": { 1819 "interface": [ 1820 { 1821 "interface": "eth1", 1822 "split-horizon": "poison-reverse" 1823 } 1824 ] 1825 } 1826 } 1827 } 1828 ] 1829 } 1830 } 1831 } 1832 The cooresponding operational state data for Router 203.0.113.1 could 1833 be as follows: 1835 { 1836 "ietf-interfaces:interfaces": { 1837 "interface": [ 1838 { 1839 "name": "eth1", 1840 "description": "An interface with RIPv2 enabled.", 1841 "type": "iana-if-type:ethernetCsmacd", 1842 "phys-address": "00:0C:42:E5:B1:E9", 1843 "oper-status": "up", 1844 "statistics": { 1845 "discontinuity-time": "2016-10-24T17:11:27+02:00" 1846 }, 1847 "ietf-ip:ipv4": { 1848 "forwarding": true, 1849 "mtu": 1500, 1850 "address": [ 1851 { 1852 "ip": "192.0.2.1", 1853 "prefix-length": 24 1854 } 1855 ] 1856 } 1857 } 1858 ] 1859 }, 1860 "ietf-routing:routing": { 1861 "router-id": "203.0.113.1", 1862 "interfaces": { 1863 "interface": [ 1864 "eth1" 1865 ] 1866 }, 1867 "control-plane-protocols": { 1868 "control-plane-protocol": [ 1869 { 1870 "type": "ietf-rip:rip", 1871 "name": "ripv2-1" 1872 "ietf-rip:rip": { 1873 "default-metric": 1, 1874 "next-triggered-update": 5 1875 "interfaces": { 1876 "interface": [ 1877 { 1878 "interface": "eth1", 1879 "oper-status": "up", 1880 "cost": 1, 1881 "split-horizon": "poison-reverse", 1882 "valid-address": true 1883 } 1884 ] 1885 }, 1886 "ipv4" { 1887 "neighbors": { 1888 "neighbor": [ 1889 { 1890 "address": "192.0.2.2" 1891 } 1892 ] 1893 } 1894 "routes": { 1895 "route": [ 1896 { 1897 "ipv4-prefix": "192.0.2.1/24", 1898 "interface": "eth1", 1899 "redistributed": true, 1900 "route-type": "connected", 1901 "metric": 0, 1902 "expire-time": 22 1903 }, 1904 { 1905 "ipv4-prefix": "198.51.100.0/24", 1906 "next-hop": "192.0.2.2", 1907 "interface": "eth1", 1908 "redistributed": false, 1909 "route-type": "rip", 1910 "metric": 1, 1911 "expire-time": 82 1912 } 1913 ] 1914 } 1915 }, 1916 "statistics": { 1917 "discontinuity-time": "2016-10-24T17:11:27+02:00", 1918 "requests-rcvd": 523, 1919 "requests-sent": 262, 1920 "responses-rcvd": 261, 1921 "responses-sent": 523 1922 } 1923 } 1924 } 1925 ] 1926 } 1927 } 1929 } 1931 Authors' Addresses 1933 Xufeng Liu 1934 Jabil 1935 8281 Greensboro Drive, Suite 200 1936 McLean VA 22102 1937 USA 1939 EMail: Xufeng_Liu@jabil.com 1941 Prateek Sarda 1942 Ericsson 1943 Fern Icon, Survey No 28 and 36/5, Doddanakundi Village 1944 Bangalore Karnataka 560037 1945 India 1947 EMail: prateek.sarda@ericsson.com 1949 Vikram Choudhary 1950 Individual 1951 Bangalore 560066 1952 India 1954 EMail: vikschw@gmail.com