This YANG module defines a PIM (Protocol Independent Multicast) BIDIR (Bidirectional) mode model. Copyright (c) 2022 IETF Trust...
Version: 2022-10-19
module ietf-pim-bidir { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-pim-bidir"; prefix pim-bidir; import ietf-inet-types { prefix inet; reference "RFC 6991: Common YANG Data Types"; } import ietf-routing-types { prefix rt-types; reference "RFC 8294: Common YANG Data Types for the Routing Area"; } import ietf-interfaces { prefix if; reference "RFC 8343: A YANG Data Model for Interface Management"; } import ietf-routing { prefix rt; reference "RFC 8349: A YANG Data Model for Routing Management (NMDA Version)"; } import ietf-pim-base { prefix pim-base; reference "RFC 9128: A YANG Data Model for Protocol Independent Multicast (PIM)"; } import ietf-pim-rp { prefix pim-rp; reference "RFC 9128: A YANG Data Model for Protocol Independent Multicast (PIM)"; } organization "IETF PIM Working Group"; contact "WG Web: <https://datatracker.ietf.org/wg/pim/> WG List: <mailto:pim@ietf.org> Editor: Xufeng Liu <mailto:xufeng.liu.ietf@gmail.com> Editor: Pete McAllister <mailto:pete.mcallister@metaswitch.com> Editor: Anish Peter <mailto:anish.ietf@gmail.com> Editor: Mahesh Sivakumar <mailto:sivakumar.mahesh@gmail.com> Editor: Yisong Liu <mailto:liuyisong@chinamobile.com> Editor: Fangwei Hu <mailto:hufwei@gmail.com>"; description "This YANG module defines a PIM (Protocol Independent Multicast) BIDIR (Bidirectional) mode model. Copyright (c) 2022 IETF Trust and the persons identified as authors of the code. All rights reserved. Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, the Revised BSD License set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info). This version of this YANG module is part of RFC 9128; see the RFC itself for full legal notices."; revision "2022-10-19" { description "Initial revision."; reference "RFC 9128: A YANG Data Model for Protocol Independent Multicast (PIM)"; } feature intf-df-election { description "Supports configuration of interface DF election."; reference "RFC 5015: Bidirectional Protocol Independent Multicast (BIDIR-PIM), Section 3.5"; } identity rp-bidir { base pim-rp:rp-mode; description "BIDIR mode."; } identity df-state { description "DF (Designated Forwarder) election state type."; reference "RFC 5015: Bidirectional Protocol Independent Multicast (BIDIR-PIM)"; } identity df-state-offer { base df-state; description "Initial election state. When in the Offer state, a router thinks it can eventually become the winner and periodically generates Offer messages."; } identity df-state-lose { base df-state; description "Either (1) there is a different election winner or (2) no router on the link has a path to the RPA (Rendezvous Point Address)."; } identity df-state-win { base df-state; description "The router is the acting DF without any contest."; } identity df-state-backoff { base df-state; description "The router is the acting DF, but another router has made a bid to take over."; } grouping static-rp-bidir-container { description "Grouping that contains BIDIR attributes for a static RP (Rendezvous Point)."; container bidir { presence "Indicates support for BIDIR mode."; description "PIM-BIDIR configuration data."; uses pim-rp:static-rp-attributes; } // container bidir } // grouping static-rp-bidir-container grouping interface-df-election-state-attributes { description "Grouping that contains the state attributes of a DF election on an interface."; leaf interface-state { type identityref { base df-state; } description "Interface state with respect to the DF election."; } leaf up-time { type rt-types:timeticks64; description "The number of time ticks (hundredths of a second) since the current DF has been elected as the winner."; } leaf winner-metric { type uint32; description "The unicast routing metric used by the DF to reach the RP. The value is announced by the DF."; } leaf winner-metric-preference { type uint32; description "The preference value assigned to the unicast routing protocol that the DF used to obtain the route to the RP. The value is announced by the DF."; } } // grouping interface-df-election-state-attributes augment /rt:routing/rt:control-plane-protocols/pim-base:pim/pim-base:address-family { description "PIM-BIDIR augmentation."; container bidir { presence "Present to enable BIDIR mode."; description "PIM-BIDIR configuration data."; } // container bidir } augment /rt:routing/rt:control-plane-protocols/pim-base:pim/pim-base:interfaces/pim-base:interface/pim-base:address-family { description "PIM-BIDIR augmentation."; container bidir { presence "Present to enable BIDIR mode."; description "PIM-BIDIR configuration data."; container df-election { if-feature intf-df-election; description "DF election attributes."; leaf offer-interval { type uint16; units "milliseconds"; default "100"; description "Offer interval. Specifies the interval between repeated DF election messages."; } leaf backoff-interval { type uint16; units "milliseconds"; default "1000"; description "This is the interval that the acting DF waits between receiving a better DF Offer and sending the Pass message to transfer DF responsibility."; } leaf offer-multiplier { type uint8; default "3"; description "This is the number of transmission attempts for DF election messages. When a DF election Offer or Winner message fails to be received, the message is retransmitted. 'offer-multiplier' sets the minimum number of DF election messages that must fail to be received for DF election to fail. If a router receives from a neighbor a better offer than its own, the router stops participating in the election for a period of 'offer-multiplier' * 'offer-interval'. Eventually, all routers except the best candidate stop sending Offer messages."; } } // container df-election } // container bidir } augment /rt:routing/rt:control-plane-protocols/pim-base:pim/pim-base:address-family/pim-rp:rp/pim-rp:static-rp/pim-rp:ipv4-rp { description "PIM-BIDIR augmentation."; uses static-rp-bidir-container; } augment /rt:routing/rt:control-plane-protocols/pim-base:pim/pim-base:address-family/pim-rp:rp/pim-rp:static-rp/pim-rp:ipv6-rp { description "PIM-BIDIR augmentation."; uses static-rp-bidir-container; } augment /rt:routing/rt:control-plane-protocols/pim-base:pim/pim-base:address-family/pim-rp:rp { description "PIM-BIDIR augmentation to RP state data."; container bidir { config false; description "PIM-BIDIR state data."; container df-election { description "DF election data."; list ipv4-rp { when "../../../../pim-base:address-family = 'rt:ipv4'" { description "Only applicable to an IPv4 address family."; } key "rp-address"; description "A list of IPv4 RP addresses."; leaf rp-address { type inet:ipv4-address; description "The address of the RP."; } } // list ipv4-rp list ipv6-rp { when "../../../../pim-base:address-family = 'rt:ipv6'" { description "Only applicable to an IPv6 address family."; } key "rp-address"; description "A list of IPv6 RP addresses."; leaf rp-address { type inet:ipv6-address; description "The address of the RP."; } } // list ipv6-rp } // container df-election container interface-df-election { description "Interface DF election data."; list ipv4-rp { when "../../../../pim-base:address-family = 'rt:ipv4'" { description "Only applicable to an IPv4 address family."; } key "rp-address interface-name"; description "A list of IPv4 RP addresses."; leaf rp-address { type inet:ipv4-address; description "The address of the RP."; } leaf interface-name { type if:interface-ref; description "The name of the interface for which the DF state is being maintained."; } leaf df-address { type inet:ipv4-address; description "The address of the elected DF, which is the winner of the DF election process."; } uses interface-df-election-state-attributes; } // list ipv4-rp list ipv6-rp { when "../../../../pim-base:address-family = 'rt:ipv6'" { description "Only applicable to an IPv6 address family."; } key "rp-address interface-name"; description "A list of IPv6 RP addresses."; leaf rp-address { type inet:ipv6-address; description "The address of the RP."; } leaf interface-name { type if:interface-ref; description "The name of the interface for which the DF state is being maintained."; } leaf df-address { type inet:ipv6-address; description "DF address."; } uses interface-df-election-state-attributes; } // list ipv6-rp } // container interface-df-election } // container bidir } augment /rt:routing/rt:control-plane-protocols/pim-base:pim/pim-base:interfaces/pim-base:interface/pim-base:address-family/pim-base:neighbors/pim-base:ipv4-neighbor { description "PIM-BIDIR augmentation to the IPv4 neighbor state data."; leaf bidir-capable { type boolean; description "'true' if the neighbor is using the Bidirectional Capable option in the last Hello message."; } } augment /rt:routing/rt:control-plane-protocols/pim-base:pim/pim-base:interfaces/pim-base:interface/pim-base:address-family/pim-base:neighbors/pim-base:ipv6-neighbor { description "PIM-BIDIR augmentation to the IPv6 neighbor state data."; leaf bidir-capable { type boolean; description "'true' if the neighbor is using the Bidirectional Capable option in the last Hello message."; } } } // module ietf-pim-bidir
© 2023 YumaWorks, Inc. All rights reserved.