idnits 2.17.1 draft-zhang-pim-msdp-yang-02.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack a Security Considerations section. ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) ** There are 10 instances of too long lines in the document, the longest one being 9 characters in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (October 28, 2016) is 2709 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Unused Reference: 'RFC4624' is defined on line 1049, but no explicit reference was found in the text == Unused Reference: 'RFC6087' is defined on line 1053, but no explicit reference was found in the text == Outdated reference: A later version (-25) exists of draft-ietf-netmod-routing-cfg-24 ** Downref: Normative reference to an Experimental RFC: RFC 3618 ** Downref: Normative reference to an Experimental RFC: RFC 4624 ** Obsolete normative reference: RFC 6087 (Obsoleted by RFC 8407) Summary: 6 errors (**), 0 flaws (~~), 4 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 PIM WG X. Liu 3 Internet-Draft Kuatro Technologies 4 Intended status: Standards Track Z. Zhang 5 Expires: May 1, 2017 ZTE Corporation 6 A. Peter 7 Juniper Networks 8 M. Sivakumar 9 Cisco Systems 10 F. Guo 11 Huawei Technologies 12 P. McAllister 13 Metaswitch Networks 14 October 28, 2016 16 MSDP YANG Model 17 draft-zhang-pim-msdp-yang-02 19 Abstract 21 This document defines a YANG data model for the configuration and 22 management of MSDP Protocol. 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 http://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 May 1, 2017. 41 Copyright Notice 43 Copyright (c) 2016 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 (http://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 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 2 60 3. MSDP configuration . . . . . . . . . . . . . . . . . . . . . 6 61 4. MSDP State . . . . . . . . . . . . . . . . . . . . . . . . . 6 62 5. MSDP RPC . . . . . . . . . . . . . . . . . . . . . . . . . . 6 63 6. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 7 64 7. MSDP YANG model . . . . . . . . . . . . . . . . . . . . . . . 7 65 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 22 66 9. Normative References . . . . . . . . . . . . . . . . . . . . 22 67 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 22 69 1. Introduction 71 [RFC3618] introduces the protocol definition of MSDP. This document 72 defines a YANG data model that can be used to configure and manage 73 the MSDP protocol. The operational state data and statistics can 74 also be retrieved by this model. 76 This model is designed to be used along with other multicast YANG 77 models such as PIM, which are not covered in this document. 79 2. Design of the Data Model 81 This model imports and augments ietf-routing YANG model defined in 82 [I-D.ietf-netmod-routing-cfg]. Both configuration branch and state 83 branch of [I-D.ietf-netmod-routing-cfg] are augmented. The 84 configuration branch covers global configuration attributes and per 85 peer configuration attributes. The state branch includes global, per 86 peer, and source-active information. The container "msdp" is the top 87 level container in this data model. The presence of this container 88 is expected to enable MSDP protocol functionality. 90 module: ietf-msdp 91 augment /rt:routing/rt:control-plane-protocols: 92 +--rw msdp! 93 +--rw global 94 | +--rw connect-source? if:interface-ref 95 | +--rw default-peer! {global-default-peer}? 96 | | +--rw peer-addr leafref 97 | | +--rw prefix-policy? string {global-default-peer-policy}? 98 | +--rw originating-rp 99 | | +--rw interface? if:interface-ref 100 | +--rw sa-filter 101 | | +--rw in? string 102 | | +--rw out? string 103 | +--rw sa-limit? uint32 {global-sa-limit}? 104 | +--rw ttl-threshold? uint8 105 +--rw peers 106 +--rw peer* [address] 107 +--rw address inet:ipv4-address 108 +--rw authentication 109 | +--rw (authentication-type)? 110 | +--:(key-chain) {peer-key-chain}? 111 | | +--rw key-chain? key-chain:key-chain-ref 112 | +--:(password) {peer-key-chain}? 113 | +--rw key? string 114 | +--rw (algorithm)? 115 | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}? 116 | | +--rw hmac-sha1-12? empty 117 | +--:(aes-cmac-prf-128) {aes-cmac-prf-128}? 118 | | +--rw aes-cmac-prf-128? empty 119 | +--:(md5) 120 | | +--rw md5? empty 121 | +--:(sha-1) 122 | | +--rw sha-1? empty 123 | +--:(hmac-sha-1) 124 | | +--rw hmac-sha-1? empty 125 | +--:(hmac-sha-256) 126 | | +--rw hmac-sha-256? empty 127 | +--:(hmac-sha-384) 128 | | +--rw hmac-sha-384? empty 129 | +--:(hmac-sha-512) 130 | | +--rw hmac-sha-512? empty 131 | +--:(clear-text) {clear-text}? 132 | | +--rw clear-text? empty 133 | +--:(replay-protection-only) {replay-protection-only}? 134 | +--rw replay-protection-only? empty 135 +--rw enable? boolean {peer-admin-enable}? 136 +--rw connect-source? if:interface-ref 137 +--rw description? string {peer-description}? 138 +--rw mesh-group? string 139 +--rw peer-as? string {peer-as}? 140 +--rw sa-filter 141 | +--rw in? string 142 | +--rw out? string 143 +--rw sa-limit? uint32 {peer-sa-limit}? 144 +--rw timer 145 | +--rw connect-retry-interval? uint16 {peer-timer-connect-retry}? 146 | +--rw holdtime-interval? uint16 {peer-timer-holdtime}? 147 | +--rw keepalive-interval? uint16 {peer-timer-keepalive}? 148 +--rw ttl-threshold? uint8 149 augment /rt:routing-state/rt:control-plane-protocols: 150 +--ro msdp! 151 +--ro global 152 | +--ro connect-source? if:interface-ref 153 | +--ro default-peer! {global-default-peer}? 154 | | +--ro peer-addr leafref 155 | | +--ro prefix-policy? string {global-default-peer-policy}? 156 | +--ro originating-rp 157 | | +--ro interface? if:interface-ref 158 | +--ro sa-filter 159 | | +--ro in? string 160 | | +--ro out? string 161 | +--ro sa-limit? uint32 {global-sa-limit}? 162 | +--ro ttl-threshold? uint8 163 +--ro peers 164 | +--ro peer* [address] 165 | +--ro address inet:ipv4-address 166 | +--ro authentication 167 | | +--ro (authentication-type)? 168 | | +--:(key-chain) {peer-key-chain}? 169 | | | +--ro key-chain? key-chain:key-chain-ref 170 | | +--:(password) {peer-key-chain}? 171 | | +--ro key? string 172 | | +--ro (algorithm)? 173 | | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}? 174 | | | +--ro hmac-sha1-12? empty 175 | | +--:(aes-cmac-prf-128) {aes-cmac-prf-128}? 176 | | | +--ro aes-cmac-prf-128? empty 177 | | +--:(md5) 178 | | | +--ro md5? empty 179 | | +--:(sha-1) 180 | | | +--ro sha-1? empty 181 | | +--:(hmac-sha-1) 182 | | | +--ro hmac-sha-1? empty 183 | | +--:(hmac-sha-256) 184 | | | +--ro hmac-sha-256? empty 185 | | +--:(hmac-sha-384) 186 | | | +--ro hmac-sha-384? empty 187 | | +--:(hmac-sha-512) 188 | | | +--ro hmac-sha-512? empty 189 | | +--:(clear-text) {clear-text}? 190 | | | +--ro clear-text? empty 191 | | +--:(replay-protection-only) {replay-protection-only}? 192 | | +--ro replay-protection-only? empty 193 | +--ro enable? boolean {peer-admin-enable}? 194 | +--ro connect-source? if:interface-ref 195 | +--ro description? string {peer-description}? 196 | +--ro mesh-group? string 197 | +--ro peer-as? string {peer-as}? 198 | +--ro sa-filter 199 | | +--ro in? string 200 | | +--ro out? string 201 | +--ro sa-limit? uint32 {peer-sa-limit}? 202 | +--ro timer 203 | | +--ro connect-retry-interval? uint16 {peer-timer-connect-retry}? 204 | | +--ro holdtime-interval? uint16 {peer-timer-holdtime}? 205 | | +--ro keepalive-interval? uint16 {peer-timer-keepalive}? 206 | +--ro ttl-threshold? uint8 207 | +--ro session-state? enumeration 208 | +--ro elapsed-time? uint32 209 | +--ro connect-retry-expire? uint32 210 | +--ro hold-expire? uint32 211 | +--ro is-default-peer? boolean 212 | +--ro keepalive-expire? uint32 213 | +--ro reset-count? uint32 214 | +--ro statistics 215 | +--ro discontinuity-time? yang:date-and-time 216 | +--ro error 217 | | +--ro rpf-failure? uint32 218 | +--ro queue 219 | | +--ro size-in? uint32 220 | | +--ro size-out? uint32 221 | +--ro received 222 | | +--ro keepalive? yang:counter64 223 | | +--ro notification? yang:counter64 224 | | +--ro sa-message? yang:counter64 225 | | +--ro sa-response? yang:counter64 226 | | +--ro sa-request? yang:counter64 227 | | +--ro total? yang:counter64 228 | +--ro sent 229 | +--ro keepalive? yang:counter64 230 | +--ro notification? yang:counter64 231 | +--ro sa-message? yang:counter64 232 | +--ro sa-response? yang:counter64 233 | +--ro sa-request? yang:counter64 234 | +--ro total? yang:counter64 235 +--ro sa-cache 236 +--ro entry* [group source-addr] 237 +--ro group inet:ipv4-address 238 +--ro source-addr union 239 +--ro origin-rp* [rp-address] 240 | +--ro rp-address inet:ip-address 241 | +--ro is-local-rp? boolean 242 | +--ro sa-adv-expire? uint32 243 +--ro up-time? uint32 244 +--ro expire? uint32 245 +--ro holddown-interval? uint32 246 +--ro peer-learned-from? inet:ipv4-address 247 +--ro rpf-peer? inet:ipv4-address 248 rpcs: 249 +---x msdp-clear-peer 250 | +---w input 251 | +---w peer-address? inet:ipv4-address 252 +---x msdp-clear-sa-cache {rpc-clear-sa-cache}? 253 +---w input 254 +---w entry! 255 | +---w group inet:ipv4-address 256 | +---w source-addr? union 257 +---w peer-address? inet:ipv4-address 258 +---w peer-as? string 260 3. MSDP configuration 262 MSDP configurations require peer configurations. Several peers may 263 be configured in a mesh-group. The Source-Active information may be 264 filtered by peers. 266 The configuration modeling branch is composed of MSDP global and peer 267 configurations. The two parts are the most important parts of MSDP. 269 Besides the fundamental features of MSDP protocol, several optional 270 features are included in the model. These features help the control 271 of MSDP protocol. The peer features and SA features make the 272 deployment and control easier. The connection parameters can be used 273 to control the TCP connection because MSDP protocol is based on TCP. 274 The authentication features make the protocol more secure. The 275 filter features allow operators to avoid the irrelevant information. 277 4. MSDP State 279 MSDP states are composed of MSDP global state, MSDP peer state, 280 statistics information and Sa-cache information. The statistics 281 information and Sa-cache information helps the operator to retrieve 282 the protocol condition. 284 5. MSDP RPC 286 The part is used to define some useful and ordinary operations of 287 protocol management. 289 6. Notifications 291 This part will be updated in later version. 293 7. MSDP YANG model 295 file "ietf-msdp@2016-10-18.yang" 296 module ietf-msdp { 297 namespace "urn:ietf:params:xml:ns:yang:ietf-msdp"; 298 prefix msdp; 300 import ietf-yang-types { 301 prefix "yang"; 302 } 304 import ietf-inet-types { 305 prefix "inet"; 306 } 308 import ietf-routing { 309 prefix "rt"; 310 } 312 import ietf-interfaces { 313 prefix "if"; 314 } 316 import ietf-ip { 317 prefix "ip"; 318 } 320 import ietf-key-chain { 321 prefix "key-chain"; 322 } 324 organization 325 "IETF PIM( Protocols for IP Multicast ) Working Group"; 327 contact 328 "WG Web: 329 WG List: 330 WG Chair: Stig Venaas 331 332 WG Chair: Mike McBride 333 335 Editors: "; 337 description 338 "The module defines the YANG definitions for MSDP."; 340 revision 2016-10-18 { 341 description 342 "Initial revision."; 343 reference 344 "RFC XXXX: A YANG Data Model for MSDP. 345 RFC 3618: Multicast Source Discovery Protocol (MSDP). 346 RFC 4624: Multicast Source Discovery Protocol (MSDP) MIB"; 347 } 349 /* 350 * Features 351 */ 352 feature global-connect-source { 353 description 354 "Support configuration of global connect-source."; 355 } 357 feature global-default-peer { 358 description 359 "Support configuration of global default peer."; 360 } 362 feature global-default-peer-policy { 363 description 364 "Support configuration of global default peer."; 365 } 367 feature global-sa-filter { 368 description 369 "Support configuration of global SA filter."; 370 } 372 feature global-sa-limit { 373 description 374 "Support configuration of global limit on SA entries."; 375 } 377 feature global-ttl-threshold { 378 description 379 "Support configuration of global ttl-threshold."; 380 } 382 feature rpc-clear-sa-cache { 383 description 384 "Support the rpc to clear SA cache."; 386 } 388 feature peer-admin-enable { 389 description 390 "Support configuration of peer administrative enabling."; 391 } 393 feature peer-as { 394 description 395 "Support configuration of peer AS number."; 396 } 398 feature peer-connect-source { 399 description 400 "Support configuration of global connect-source."; 401 } 403 feature peer-description { 404 description 405 "Support configuration of peer description."; 406 } 408 feature peer-key-chain { 409 description 410 "Support configuration of peer key-chain."; 411 } 413 feature peer-password { 414 description 415 "Support configuration of peer key-chain."; 416 } 418 feature peer-sa-limit { 419 description 420 "Support configuration of per peer limit on SA entries."; 421 } 423 feature peer-timer-connect-retry { 424 description 425 "Support configuration of peer timer for connect-retry."; 426 } 428 feature peer-timer-keepalive { 429 description 430 "Support configuration of peer timer for keepalive."; 431 } 433 feature peer-timer-holdtime { 434 description 435 "Support configuration of peer timer for holdtime."; 436 } 438 /* 439 * Groupings 440 */ 441 grouping authentication-container { 442 description 443 "A container defining authentication attributes."; 444 container authentication { 445 description 446 "A container defining authentication attributes."; 447 choice authentication-type { 448 case key-chain { 449 if-feature peer-key-chain; 450 leaf key-chain { 451 type key-chain:key-chain-ref; 452 description 453 "Reference to a key-chain."; 454 } 455 } 456 case password { 457 if-feature peer-key-chain; 458 leaf key { 459 type string; 460 description 461 "This leaf describes the authentication key."; 462 } 463 uses key-chain:crypto-algorithm-types; 464 } 465 description 466 "Choice of authentication."; 467 } 468 } 469 } // authentication-container 471 grouping connect-source { 472 description "Attribute to configure connect-source."; 473 leaf connect-source { 474 type if:interface-ref; 475 must "/if:interfaces/if:interface[if:name = current()]/" 476 + "ip:ipv4" { 477 description 478 "The interface must have IPv4 enabled."; 479 } 480 description 481 "The interface is to be the source for the TCP connection. 483 It is a reference to an entry in the global interface 484 list."; 485 } 486 } // connect-source 488 grouping global-config-attributes { 489 description "Global MSDP configuration."; 491 uses connect-source { 492 if-feature global-connect-source; 493 } 494 container default-peer { 495 if-feature global-default-peer; 496 presence ""; 497 description 498 "The default peer accepts all MSDP SA messages. 499 A default peer is needed in topologies where MSDP peers do 500 not coexist with BGP peers. The reverse path forwarding 501 (RPF) check on SA messages can fail, and no SA messages are 502 accepted. In these cases, you can configure the peer as a 503 default peer and bypass RPF checks."; 504 leaf peer-addr { 505 type leafref { 506 path "../../../peers/peer/address"; 507 } 508 mandatory true; 509 description 510 "Reference to a peer that is in the peer list."; 511 } 512 leaf prefix-policy { 513 if-feature global-default-peer-policy; 514 type string; 515 description 516 "If specified, only those SA entries whose RP is permitted 517 in the prefix list are allowed; 518 if not specified, all SA messages from the default peer 519 are accepted."; 520 } 521 } // default-peer 523 container originating-rp { 524 description 525 "The container of originating-rp."; 526 leaf interface { 527 type if:interface-ref; 528 must "/if:interfaces/if:interface[if:name = current()]/" 529 + "ip:ipv4" { 530 description 531 "The interface must have IPv4 enabled."; 532 } 533 description 534 "Reference to an entry in the global interface 535 list. 536 IP address of the interface is used in the RP field of an 537 SA message entry. When Anycast RPs are used, all RPs use 538 the same IP address. This parameter can be used to define 539 a unique IP address for the RP of each MSDP peer. 540 By default, the software uses the RP address of the 541 local system."; 542 } 543 } // originating-rp 545 uses sa-filter-container { 546 if-feature global-sa-filter; 547 } 548 leaf sa-limit { 549 if-feature global-sa-limit; 550 type uint32; 551 description 552 "A limit on the number of SA entries accepted. By default, 553 there is no limit."; 554 } 555 uses ttl-threshold { 556 if-feature global-ttl-threshold; 557 } 558 } // global-config-attributes 560 grouping global-state-attributes { 561 description "Global MSDP state attributes."; 562 } // global-state-attributes 564 grouping peer-config-attributes { 565 description "Per peer configuration for MSDP."; 567 uses authentication-container; 568 leaf enable { 569 if-feature peer-admin-enable; 570 type boolean; 571 description 572 "true to enable peer; 573 false to disable peer."; 574 } 575 uses connect-source { 576 if-feature peer-connect-source; 577 } 578 leaf description { 579 if-feature peer-description; 580 type string; 581 description 582 "The peer description."; 583 } 584 leaf mesh-group { 585 type string; 586 description 587 "Configure this peer to be a member of a mesh group"; 588 } 589 leaf peer-as { 590 if-feature peer-as; 591 type string; 592 description 593 "Peer's autonomous system number (ASN)."; 594 } 595 uses sa-filter-container; 596 leaf sa-limit { 597 if-feature peer-sa-limit; 598 type uint32; 599 description 600 "A limit on the number of SA entries accepted from this peer. 601 By default, there is no limit."; 602 } 603 container timer { 604 description "Timer attributes."; 605 leaf connect-retry-interval { 606 if-feature peer-timer-connect-retry; 607 type uint16; 608 units seconds; 609 default 30; 610 description "SHOULD be set to 30 seconds. "; 611 } 612 leaf holdtime-interval { 613 if-feature peer-timer-holdtime; 614 type uint16; 615 units seconds; 616 must ". > 3"; 617 default 75; 618 description "The SA-Hold-Down-Period of this msdp peer."; 619 } 620 leaf keepalive-interval { 621 if-feature peer-timer-keepalive; 622 type uint16; 623 units seconds; 624 must ". > 1 and . < ../holdtime-interval"; 625 default 60; 626 description "The keepalive timer of this msdp peer."; 628 } 629 } // timer 630 uses ttl-threshold; 631 } // peer-config-attributes 633 grouping peer-state-attributes { 634 description "Per peer state attributes for MSDP."; 636 leaf session-state { 637 type enumeration { 638 enum disabled { 639 description "Disabled."; 640 } 641 enum inactive { 642 description "Inactive."; 643 } 644 enum listen { 645 description "Listen."; 646 } 647 enum connecting { 648 description "Connecting."; 649 } 650 enum established { 651 description "Established."; 652 } 653 } 654 description 655 "Peer session state."; 656 reference 657 "RFC3618: Multicast Source Discovery Protocol (MSDP)."; 658 } 659 leaf elapsed-time { 660 type uint32; 661 units seconds; 662 description "Elapsed time for being in a state."; 663 } 664 leaf connect-retry-expire { 665 type uint32; 666 units seconds; 667 description "Connect retry expire time of peer connection."; 668 } 669 leaf hold-expire { 670 type uint32; 671 units seconds; 672 description "Hold expire time of peer connection."; 673 } 674 leaf is-default-peer { 675 type boolean; 676 description "If this peer is default peer."; 677 } 678 leaf keepalive-expire { 679 type uint32; 680 units seconds; 681 description "Keepalive expire time of this peer."; 682 } 683 leaf reset-count { 684 type uint32; 685 description "The reset count of this peer."; 686 } 687 uses statistics-container; 688 } // peer-config-attributes 690 grouping sa-cache-state-attributes { 691 description "SA cache state attributes for MSDP."; 693 leaf up-time { 694 type uint32; 695 units seconds; 696 description "The up time of this sa cache."; 697 } 698 leaf expire { 699 type uint32; 700 units seconds; 701 description "If this cache has expired."; 702 } 703 leaf holddown-interval { 704 type uint32; 705 units seconds; 706 description "Holddown timer value for SA forwarding."; 707 } 708 leaf peer-learned-from { 709 type inet:ipv4-address; 710 description 711 "The address of peer that we learned this SA from ."; 712 } 713 leaf rpf-peer { 714 type inet:ipv4-address; 715 description "RPF peer."; 716 } 717 } // sa-cache-state-attributes 719 grouping sa-filter-container { 720 description "A container defining SA filters."; 721 container sa-filter { 722 description 723 "Specifies an access control list (ACL) to filter source 724 active (SA) messages coming in to or going out of the 725 peer."; 726 leaf in { 727 type string; 728 description 729 "Filters incoming SA messages only."; 730 } 731 leaf out { 732 type string; 733 description 734 "Filters outgoing SA messages only."; 735 } 736 } // sa-filter 737 } // sa-filter-container 739 grouping ttl-threshold { 740 description "Attribute to configure TTL threshold."; 741 leaf ttl-threshold { 742 type uint8 { 743 range 1..255; 744 } 745 description 746 "Maximum number of hops data packets can traverse before 747 being dropped."; 748 } 749 } // sa-ttl-threshold 751 grouping statistics-container { 752 description 753 "A container defining statistics attributes."; 754 container statistics { 755 description ""; 756 leaf discontinuity-time { 757 type yang:date-and-time; 758 description 759 "The time on the most recent occasion at which any one 760 or more of the statistic counters suffered a 761 discontinuity. If no such discontinuities have occurred 762 since the last re-initialization of the local 763 management subsystem, then this node contains the time 764 the local management subsystem re-initialized itself."; 765 } 766 container error { 767 description ""; 768 uses statistics-error; 769 } 770 container queue { 771 description ""; 772 uses statistics-queue; 773 } 774 container received { 775 description ""; 776 uses statistics-sent-received; 777 } 778 container sent { 779 description ""; 780 uses statistics-sent-received; 781 } 782 } 783 } // statistics-container 785 grouping statistics-error { 786 description 787 "A grouping defining error statistics 788 attributes."; 789 leaf rpf-failure { 790 type uint32; 791 description ""; 792 } 793 } // statistics-error 795 grouping statistics-queue { 796 description 797 "A grouping defining queue statistics 798 attributes."; 799 leaf size-in { 800 type uint32; 801 description 802 "The size of the input queue."; 803 } 804 leaf size-out { 805 type uint32; 806 description 807 "The size of the output queue."; 808 } 809 } // statistics-queue 811 grouping statistics-sent-received { 812 description 813 "A grouping defining sent and received statistics 814 attributes."; 815 leaf keepalive { 816 type yang:counter64; 817 description 818 "The number of keepalive messages."; 819 } 820 leaf notification { 821 type yang:counter64; 822 description 823 "The number of notification messages."; 824 } 825 leaf sa-message { 826 type yang:counter64; 827 description 828 "The number of SA messages."; 829 } 830 leaf sa-response { 831 type yang:counter64; 832 description 833 "The number of SA response messages."; 834 } 835 leaf sa-request { 836 type yang:counter64; 837 description 838 "The number of SA request messages."; 839 } 840 leaf total { 841 type yang:counter64; 842 description 843 "The number of total messages."; 844 } 845 } // statistics-sent-received 847 /* 848 * Configuration data nodes 849 */ 850 augment "/rt:routing/rt:control-plane-protocols" { 851 description 852 "MSDP augmentation to routing instance configuration."; 854 container msdp { 855 presence "Container for MSDP protocol."; 856 description 857 "MSDP configuration data."; 859 container global { 860 description 861 "Global attributes."; 862 uses global-config-attributes; 863 } 865 container peers { 866 description 867 "Containing a list of peers."; 869 list peer { 870 key "address"; 871 description 872 "List of MSDP peers."; 873 leaf address { 874 type inet:ipv4-address; 875 description 876 ""; 877 } 878 uses peer-config-attributes; 879 } // peer 880 } // peers 881 } // msdp 882 } // augment 884 /* 885 * Operational state data nodes 886 */ 887 augment "/rt:routing-state/rt:control-plane-protocols" { 888 description 889 "MSDP augmentation to routing instance state."; 891 container msdp { 892 presence "Container for MSDP protocol."; 893 description 894 "MSDP state data."; 896 container global { 897 description 898 "Global attributes."; 899 uses global-config-attributes; 900 uses global-state-attributes; 901 } 903 container peers { 904 description 905 "Containing a list of peers."; 907 list peer { 908 key "address"; 909 description 910 "List of MSDP peers."; 911 leaf address { 912 type inet:ipv4-address; 913 description 914 "The address of peer"; 915 } 916 uses peer-config-attributes; 917 uses peer-state-attributes; 918 } // peer 919 } // peers 921 container sa-cache { 922 description 923 "The sa cache information."; 924 list entry { 925 key "group source-addr"; 926 description ""; 927 leaf group { 928 type inet:ipv4-address; 929 description "The group address of this sa cache."; 930 } 931 leaf source-addr { 932 type union { 933 type enumeration { 934 enum '*' { 935 description "The source addr of this sa cache."; 936 } 937 } 938 type inet:ipv4-address; 939 } 940 description ""; 941 } 942 list origin-rp { 943 key "rp-address"; 944 description 945 ""; 946 leaf rp-address { 947 type inet:ip-address; 948 description "The rp address."; 949 } 950 leaf is-local-rp { 951 type boolean; 952 description ""; 953 } 954 leaf sa-adv-expire { 955 type uint32; 956 units seconds; 957 description 958 "Periodic SA advertisement timer exipiring time on 959 a local RP."; 960 } 961 } 962 uses sa-cache-state-attributes; 963 } // entry 964 } // sa-cache 966 } // msdp 967 } // augment 969 /* 970 * RPCs 971 */ 972 rpc msdp-clear-peer { 973 description 974 "Clears the session to the peer."; 975 input { 976 leaf peer-address { 977 type inet:ipv4-address; 978 description 979 "Address of peer to be cleared. If this is not provided 980 then all peers are cleared."; 981 } 982 } 983 } 985 rpc msdp-clear-sa-cache { 986 if-feature rpc-clear-sa-cache; 987 description 988 "Clears MSDP source active (SA) cache entries."; 989 input { 990 container entry { 991 presence ""; 992 description 993 "The SA cache (S,G) or (*,G) entry to be cleared. If this 994 is not provided, all entries are cleared."; 995 leaf group { 996 type inet:ipv4-address; 997 mandatory true; 998 description ""; 999 } 1000 leaf source-addr { 1001 type union { 1002 type enumeration { 1003 enum '*' { 1004 description ""; 1005 } 1006 } 1007 type inet:ipv4-address; 1008 } 1009 description ""; 1010 } 1011 } // s-g 1012 leaf peer-address { 1013 type inet:ipv4-address; 1014 description 1015 "Peer IP address from which MSDP SA cache entries have been 1016 learned. If this is not provided, entries learned from all 1017 peers are cleared."; 1018 } 1019 leaf peer-as { 1020 type string; 1021 description 1022 "ASN from which MSDP SA cache entries have been learned. 1023 If this is not provided, entries learned from all AS's 1024 are cleared."; 1025 } 1026 } 1027 } 1028 } 1029 1031 8. Contributors 1033 The authors would like to thank Yisong Liu (liuyisong@huawei.com), 1034 Benchong Xu (xu.benchong@zte.com.cn), Tanmoy Kundu 1035 (tanmoy.kundu@alcatel-lucent.com) for their valuable contributions. 1037 9. Normative References 1039 [I-D.ietf-netmod-routing-cfg] 1040 Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 1041 Management", draft-ietf-netmod-routing-cfg-24 (work in 1042 progress), October 2016. 1044 [RFC3618] Fenner, B., Ed. and D. Meyer, Ed., "Multicast Source 1045 Discovery Protocol (MSDP)", RFC 3618, 1046 DOI 10.17487/RFC3618, October 2003, 1047 . 1049 [RFC4624] Fenner, B. and D. Thaler, "Multicast Source Discovery 1050 Protocol (MSDP) MIB", RFC 4624, DOI 10.17487/RFC4624, 1051 October 2006, . 1053 [RFC6087] Bierman, A., "Guidelines for Authors and Reviewers of YANG 1054 Data Model Documents", RFC 6087, DOI 10.17487/RFC6087, 1055 January 2011, . 1057 Authors' Addresses 1058 Xufeng Liu 1059 Kuatro Technologies 1060 8281 Greensboro Drive, Suite 200 1061 McLean VA 22102 1062 USA 1064 Email: xliu@kuatrotech.com 1066 Zheng(Sandy) Zhang 1067 ZTE Corporation 1068 No. 50 Software Ave, Yuhuatai Distinct 1069 Nanjing 1070 China 1072 Email: zhang.zheng@zte.com.cn 1074 Anish Peter 1075 Juniper Networks 1076 Electra, Exora Business Park 1077 Bangalore, KA 560103 1078 India 1080 Email: anishp@juniper.net 1082 Mahesh Sivakumar 1083 Cisco Systems 1084 510 McCarthy Boulevard 1085 Milpitas, California 1086 USA 1088 Email: masivaku@cisco.com 1090 Feng Guo 1091 Huawei Technologies 1092 Huawei Bld., No.156 Beiqing Rd. 1093 Beijing 100095 1094 China 1096 Email: guofeng@huawei.com 1097 Pete McAllister 1098 Metaswitch Networks 1099 100 Church Street 1100 Enfield EN2 6BQ 1101 UK 1103 Email: pete.mcallister@metaswitch.com