<?xml<?xml version="1.0" encoding="UTF-8"?>
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" number="9026" docName="draft-ietf-bess-mvpn-fast-failover-15" ipr="trust200902"> ipr="trust200902" submissionType="IETF" consensus="true" xml:lang="en" tocInclude="true" tocDepth="3" symRefs="true" sortRefs="true" version="3">
<front>
<title abbrev="MVPN Fast Upstream Failover">Multicast VPN Fast Upstream Failover</title>
<seriesInfo name="RFC" value="9026"/>
<author fullname="Thomas Morin" initials="T." role="editor" surname="Morin">
<organization>Orange</organization>
<address>
<postal>
<street>2, avenue Pierre Marzin</street>
<city>Lannion</city>
<code>22307</code>
<country>France</country>
</postal>
<email>thomas.morin@orange-ftgroup.com</email>
<email>thomas.morin@orange.com</email>
</address>
</author>
<author fullname="Robert Kebler" initials="R." role="editor" surname="Kebler">
<organization>Juniper Networks</organization>
<address>
<postal>
<street>1194 North Mathilda Ave.</street> Avenue</street>
<city>Sunnyvale</city>
<region>CA</region>
<code>94089</code>
<country>U.S.A.</country>
<country>United States of America</country>
</postal>
<email>rkebler@juniper.net</email>
</address>
</author>
<author initials="G." surname="Mirsky" fullname="Greg Mirsky" role="editor">
<organization>ZTE Corp.</organization>
<address>
<email>gregimirsky@gmail.com</email>
</address>
</author>
<date month="April" year="2021"/>
<keyword>BFD</keyword>
<keyword>P2MP</keyword>
<abstract>
<t>This document defines Multicast Virtual Private Network (VPN)
extensions and procedures that allow fast failover for upstream failures
by allowing downstream Provider Edges (PEs) to consider the status of
Provider-Tunnels (P-tunnels) when selecting the Upstream PE for a VPN
multicast flow. The fast failover is enabled by using
RFC 8562 Bidirectional "Bidirectional
Forwarding Detection (BFD) for Multipoint Networks Networks" (RFC 8562) and the
new BGP Attribute - Attribute, BFD Discriminator. Also, the this document introduces a
new BGP Community, Standby PE, extending BGP Multicast VPN (MVPN) routing so
that a C-multicast route can be advertised toward a Standby Upstream
PE.</t>
</abstract>
</front>
<middle>
<section title="Introduction">
<section>
<name>Introduction</name>
<t>It is assumed that the reader is familiar with the workings of
multicast MPLS/BGP IP VPNs as described in <xref target="RFC6513"/> and
<xref target="RFC6514"/>.</t>
<t>In the context of multicast in BGP/MPLS VPNs <xref
target="RFC6513"/>, it is desirable to provide mechanisms allowing fast
recovery of connectivity on different types of failures. This document
addresses failures of elements in the provider network that are upstream
of PEs connected to VPN sites with receivers.</t>
<t>
<xref target="tunnel-status"/>
describes local procedures allowing an egress PE (a PE connected to
a receiver site) to take into account the status of P-tunnels to
determine the Upstream Multicast Hop (UMH) for a given (C-S,
C-G).
(C-S,C-G). One of the optional methods uses <xref target="RFC8562"/>
and the new BGP Attribute - Attribute, BFD Discriminator. None of these methods
provide a "fast failover" solution when used alone, alone but can be used
together with the mechanism described in <xref
target="standby-join"/> for a "fast failover" solution.
</t>
<t>
<xref target="standby-join"/>
describes an optional BGP extension, a new Standby PE Community.
Community, that can speed up failover by not requiring any multicast Multicast
VPN (MVPN) routing message exchange at recovery time.
</t>
<t>
<xref target="hot-standby"/>
describes a "hot leaf root standby" mechanism that can be used to improve
failover time in MVPN. The approach combines mechanisms defined in
Sections <xref target="tunnel-status"/> target="tunnel-status" format="counter"/> and <xref target="standby-join"/>, target="standby-join" format="counter"/> and
has similarities with the solution described in <xref target="RFC7431"/>
to improve failover times when PIM routing is used in a network given
some topology and metric constraints.
</t>
<t>
The procedures described in this document are optional and allow an
operator to provide protection for multicast services in BGP/MPLS IP
VPNs. An operator would enable these mechanisms using a method
discussed in <xref target="tunnel-status"/> combined with the redundancy
provided by a standby PE connected to the multicast flow source. PEs
that support these mechanisms would converge faster and thus provide a
more stable multicast service. In the case that a BGP implementation
does not recognize or is configured not to support the extensions
defined in this document, the implementation will continue to provide
the multicast service, as described in <xref target="RFC6513"/>.
</t>
</section>
<section title="Conventions used
<section>
<name>Conventions Used in this document">
<section title="Requirements Language"> This Document</name>
<section>
<name>Requirements Language</name>
<t>
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "OPTIONAL" "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/>
when, and only when, they appear in all capitals, as shown here.
</t>
</section>
<section title="Terminology">
<section>
<name>Terminology</name>
<t>The terminology used in this document is the terminology defined in
<xref target="RFC6513"/> and <xref target="RFC6514"> </xref>.</t>
<t>The term 'upstream' "upstream" (lower case) throughout this document refers to links and nodes
that are upstream to a PE connected to VPN sites with receivers of a multicast flow.</t>
<t>The term 'Upstream' "Upstream" (capitalized) throughout this document refers to a PE or an Autonomous
System Border Router (ASBR) at which (S,G) or (*,G) data packets enter the VPN backbone or the local AS
when traveling through the VPN backbone.</t>
</section>
<section title="Acronyms">
<t>PMSI: P-Multicast
<section>
<name>Abbreviations</name>
<dl indent="12">
<dt>PMSI:
</dt>
<dd>P-Multicast Service Interface</t>
<t>I-PMSI: Inclusive PMSI</t>
<t>S-PMSI: Selective PMSI</t>
<t>x-PMSI: Either Interface
</dd>
<dt>I-PMSI:
</dt>
<dd>Inclusive PMSI
</dd>
<dt>S-PMSI:
</dt>
<dd>Selective PMSI
</dd>
<dt>x-PMSI:
</dt>
<dd>Either an I-PMSI or an S-PMSI</t>
<t>P-tunnel: Provider-Tunnels</t>
<t>UMH: Upstream S-PMSI
</dd>
<dt>P-tunnel:
</dt>
<dd>Provider-Tunnel
</dd>
<dt>UMH:
</dt>
<dd>Upstream Multicast Hop</t>
<t>VPN: Virtual Hop
</dd>
<dt>VPN:
</dt>
<dd>Virtual Private Network</t>
<t>MVPN: Multicast VPN</t>
<t>RD: Route Distinguisher</t>
<t>RP: Rendezvous Point</t>
<t>NLRI: Network
</dd>
<dt>MVPN:
</dt>
<dd>Multicast VPN
</dd>
<dt>RD:
</dt>
<dd>Route Distinguisher
</dd>
<dt>RP:
</dt>
<dd>Rendezvous Point
</dd>
<dt>NLRI:
</dt>
<dd>Network Layer Reachability Information</t>
<t>VRF: VPN Information
</dd>
<dt>VRF:
</dt>
<dd>VPN Routing and Forwarding Table</t>
<t>MED: Multi-Exit Discriminator</t>
<t>P2MP: Point-to-Multipoint</t> Table
</dd>
<dt>MED:
</dt>
<dd>Multi-Exit Discriminator
</dd>
<dt>P2MP:
</dt>
<dd>Point-to-Multipoint
</dd>
</dl>
</section>
</section>
<section anchor="tunnel-status" title="UMH anchor="tunnel-status">
<name>UMH Selection Based on Tunnel Status"> Status</name>
<t>
Section 5.1 of
<xref target="RFC6513"/> target="RFC6513" sectionFormat="of" section="5.1"/> describes
procedures used by a
multicast VPN an MVPN downstream PE to determine the
Upstream Multicast Hop (UMH) for a given (C-S, C-G). (C-S,C-G).
</t>
<t>
For a given downstream PE and a given VRF, the P-tunnel corresponding
to a given Upstream PE for a given (C-S, C-G) (C-S,C-G) state is the S-PMSI
tunnel advertised by that Upstream PE for this (C-S, C-G) that (C-S,C-G) and
imported into that VRF, or VRF or, if there isn't any such S-PMSI, the I-PMSI
tunnel advertised by that PE and imported into that VRF.
</t>
<t>
The procedure described here is an optional procedure that is one, based on a
downstream PE taking into account the status of P-tunnels rooted at each
possible Upstream PE, for including or not including each given PE in the list
of candidate UMHs for a given (C-S, C-G) (C-S,C-G) state. If it is not possible to
determine whether a P-tunnel's current status is Up, the state shall be
considered "not known to be Down", and it may be treated as if it is Up so
that attempts to use the tunnel are acceptable. The result is that, if a
P-tunnel is Down (see <xref target="tunnel-status-determination"/>), the PE
that is the root of the P-tunnel will not be considered for UMH
selection. This will result in the downstream PE failing over to
use use the next
Upstream PE in the list of candidates.
Some downstream PEs could arrive at a different conclusion regarding the
tunnel's state because the failure impacts only a subset of branches. Because
of that, the procedures of Section 9.1.1 of <xref target="RFC6513"/> target="RFC6513" sectionFormat="of"
section="9.1.1"/> are applicable when using I-PMSI P-tunnels. That document
is a foundation for this document, and its processes all apply here.
<!--
Section 9.1.1 of <xref target="RFC6513"/> mandates the use of specific procedures for sending intra-AS I-PMSI A-D Routes.
-->
</t>
<t>
There are three options specified in Section 5.1 of [RFC6513] <xref target="RFC6513"
sectionFormat="of" section="5.1"/> for a downstream PE to select an
Upstream PE.
<list style="symbols">
</t>
<ul spacing="normal">
<li>
<t>
The first two options select the Upstream PE from a candidate PE
set either based either on an IP address or a hashing algorithm. When used
together with the optional procedure of considering the P-tunnel
status as in this document, a candidate Upstream PE is included in
the set if it either:
<list style="letters">
<t>
</t>
<ol spacing="normal" type="a"><li>
advertises an x-PMSI bound to a tunnel, where the specified tunnel's state
is not known to be Down, or,
</t>
<t>
</li>
<li>
does not advertise any x-PMSI applicable to the given (C-S, C-G) (C-S,C-G)
but has associated a VRF Route Import BGP Extended Community to the
unicast VPN route for S. That is necessary to avoid
incorrectly invalidating a UMH PE that would use a policy
where no I-PMSI is advertised for a given VRF and where only
S-PMSI
S-PMSIs are used. The S-PMSI can be advertised
only after the Upstream PE receives a C-multicast route for
(C-S, C-G)/(C-*, C-G)
(C-S,C-G) / (C-*,C-G) to be carried over the advertised
S-PMSI.
</t>
</list>
</li>
</ol>
<t>
If the resulting candidate set is empty, then the procedure is
repeated without considering the P-tunnel status.
</t>
<t>
</li>
<li>
The third option uses the installed UMH Route (i.e., the "best"
route towards the C-root) as the Selected UMH Route, and its
originating PE is the selected Upstream PE. With the optional
procedure of considering P-tunnel status as in this document, the
Selected UMH Route is the best one among those whose originating
PE's P-tunnel is not "down". If that does not exist, the
installed UMH Route is selected regardless of the P-tunnel status.
</t>
</list>
</t>
</li>
</ul>
<section anchor="tunnel-status-determination" title="Determining anchor="tunnel-status-determination">
<name>Determining the Status of a Tunnel"> Tunnel</name>
<t>
Different factors can be considered to determine the "status" of a
P-tunnel and are described in the following sub-sections. subsections. The
optional optional
procedures described in this section also handle the case when
the the
downstream PEs do not all apply the same rules to define what the
status
status of a P-tunnel is (please see <xref target="dups"> </xref>), and
some of them will produce a result that may be different for different
downstream PEs. Thus, the "status" of a P-tunnel in this section is
not a characteristic of the tunnel in itself, itself but is the tunnel
status, as seen from a particular downstream PE. Additionally, some of
the following methods determine the ability of a downstream PE to
receive traffic on the P-tunnel and not specifically on the status of
the P-tunnel itself. That could be referred to as "P-tunnel reception
status", but for simplicity, we will use the terminology of P-tunnel
"status" for all of these methods.
</t>
<t>Depending on the criteria used to determine the status of a
P-tunnel, there may be an interaction with another resiliency mechanism
used for the P-tunnel itself, and the UMH update may happen
immediately or may need to be delayed. Each particular case is covered
in each separate sub-section subsection below.</t>
<t>An implementation may support any combination of the methods
described in this section and provide a network operator with control
to choose which one to use in the particular deployment.</t>
<section anchor="root-track-sec" title="MVPN anchor="root-track-sec">
<name>MVPN Tunnel Root Tracking"> Tracking</name>
<t>When determining if the status of a P-tunnel is Up, a condition
to consider is whether the root of the tunnel, as specified
in the x-PMSI Tunnel attribute, is reachable through unicast routing tables. In this case,
the downstream PE can immediately update its UMH when the
reachability condition changes.</t>
<t>That is similar to BGP next-hop tracking for VPN routes, except
that the address considered is not the BGP next-hop address but the
root address in the x-PMSI Tunnel attribute. BGP next-hop tracking monitors
BGP next-hop address changes in the routing table. In In general,
when a change is detected, it performs a next-hop scan to find
if any of the next hops in the BGP table is affected and updates it accordingly.</t>
<t>If BGP next-hop tracking is done for VPN routes and the root
address of a given tunnel happens to be the same as the next-hop
address in the BGP A-D Route advertising the tunnel, then checking,
in unicast routing tables, whether the tunnel root is reachable, reachable will
be unnecessary duplication and thus will thus not bring any specific
benefit.</t>
</section>
<section anchor="pe-p-link-status-sec" title="PE-P anchor="pe-p-link-status-sec">
<name>PE-P Upstream Link Status"> Status</name>
<t>
When determining if the status of a P-tunnel is Up, a condition to
consider is whether the last-hop link of the P-tunnel is Up.
Conversely, if the last-hop link of the P-tunnel is Down, then this
can be taken as an indication that the P-tunnel is Down.
</t>
<t>
Using this method when a fast restoration mechanism (such as MPLS FRR
Fast Reroute (FRR) <xref target="RFC4090"/>) is in place for the link requires
careful consideration and coordination of defect detection intervals
for the link and the tunnel. When using multi-layer protection,
particular consideration must be given to the interaction of defect
detections at different network layers. It is recommended to use
longer detection intervals at the higher layers. Some
recommendations suggest using a multiplier of 3 or larger, e.g., 10
msec detection for the link failure detection and at least 100 msec
for the tunnel failure detection. In many cases, it is not
practical to use both protection methods simultaneously because
uncorrelated timers might cause unnecessary switchovers and
destabilize the network.
</t>
</section>
<section anchor="rsvp-te-tunnel" title="P2MP anchor="rsvp-te-tunnel">
<name>P2MP RSVP-TE Tunnels"> Tunnels</name>
<t>
For P-tunnels of type P2MP MPLS-TE, the status of the P-tunnel is
considered Up if the sub-LSP to this downstream PE is in the Up
state. The determination of whether a P2MP RSVP-TE LSP Label Switched Path (LSP) is in the Up
state requires Path and Resv state for the LSP and is based on
procedures specified in <xref target="RFC4875"/>. As a result, the
downstream PE can immediately update its UMH when the reachability
condition changes.
</t>
<t>
When using this method and if the signaling state for a P2MP TE LSP is removed (e.g., if the
ingress of the P2MP TE LSP sends a PathTear message) or the P2MP TE
LSP changes state from Up to Down as determined by procedures in
<xref target="RFC4875"/>, the status of the corresponding
P-tunnel MUST <bcp14>MUST</bcp14> be re-evaluated. If the P-tunnel transitions from Up
to Down state, the Upstream PE that is the ingress of the P-tunnel
MUST NOT
<bcp14>MUST NOT</bcp14> be considered as to be a valid candidate UMH.
</t>
</section>
<section anchor="leaf-init-tunnel" title="Leaf-initiated P-tunnels"> anchor="leaf-init-tunnel">
<name>Leaf-Initiated P-Tunnels</name>
<t>An Upstream PE MUST <bcp14>MUST</bcp14> be removed from the UMH candidate list for a given (C-S, C-G) (C-S,C-G)
if the P-tunnel (I-PMSI or S-PMSI) for this (S, G) (S,G) is leaf-triggered leaf triggered
(PIM, mLDP), but for some reason, internal to the protocol, the
upstream one-hop branch of the tunnel from P to PE cannot be built.
As a result, the downstream PE can immediately update its UMH when
the reachability condition changes.</t>
</section>
<section anchor="counter-info-tunnel" title="(C-S, C-G) anchor="counter-info-tunnel">
<name>(C-S,C-G) Counter Information"> Information</name>
<t>In cases where the downstream node can be configured so that the
maximum inter-packet time is known for all the multicast flows
mapped on a P-tunnel, the local per-(C-S, C-G) traffic counter
information per (C-S,C-G) for traffic received on this P-tunnel can be used to
determine the status of the P-tunnel.</t>
<t>When such a procedure is used, in the context where fast
restoration mechanisms are used for the P-tunnels, a configurable
timer MUST <bcp14>MUST</bcp14> be set on the downstream PE to wait before
updating the UMH to let the P-tunnel restoration mechanism execute
its actions. Determining that a tunnel is probably down by waiting
for enough packets to fail to arrive as expected is a heuristic and
operational matter that depends on the maximum inter-packet time. time. A
timeout of three seconds is a generally suitable default waiting
period to ascertain that the tunnel is down, though other values
would be needed for atypical conditions.</t>
<!--
<t>This method can be applicable, for instance, when a (C-S, C-G) flow is
mapped on an S-PMSI.</t>
-->
<t>In cases where this mechanism is used in conjunction with the
method described in <xref target="hot-standby"/>, no prior knowledge
of the rate or maximum inter-packet time on the multicast streams is
required; downstream PEs can periodically compare actual packet
reception statistics on the two P-tunnels to determine when one of
them is down. The detailed specification of this mechanism is
outside the scope of this document.</t>
</section>
<section anchor="bfd-tunnel" title="BFD anchor="bfd-tunnel">
<name>BFD Discriminator Attribute"> Attribute</name>
<t>
The P-tunnel status may be derived from the status of a multipoint
BFD session <xref target="RFC8562"/> whose discriminator is
advertised along with an x-PMSI A-D Route. A P2MP BFD session can
be instantiated using a mechanism other than the BFD Discriminator
attribute, e.g., MPLS LSP Ping (<xref target="I-D.mirsky-mpls-p2mp-bfd"/>). target="MPLS-P2MP-BFD"/>).
The description of these methods is outside the scope of this
document.
</t>
<t>
This document defines the format and ways of using a new BGP
attribute called the "BFD Discriminator". Discriminator" (38). It is an optional
transitive BGP attribute. Thus Thus, it is expected that an implementation
that does not recognize or is configured not to support this
attribute, as if the attribute was unrecognized, follows procedures
defined for optional transitive path attributes in Section 5 of <xref target="RFC4271"/>.
In
target="RFC4271" sectionFormat="of" section="5"/>. See <xref target="iana-bfd-discr"/>, IANA is requested to allocate the codepoint value (TBA2).
target="iana-bfd-discr"/> for more information. The format of this attribute is shown in
<xref target="bfd-attr-fig"/>.
</t>
<figure align="left" anchor="bfd-attr-fig" title="Format anchor="bfd-attr-fig">
<name>Format of the BFD Discriminator Attribute">
<artwork>
<![CDATA[ Attribute</name>
<artwork align="left"><![CDATA[
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+
| BFD Mode |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| BFD Discriminator |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ Optional TLVs ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
</figure>
<t>
Where:
<list style="hanging">
<t>BFD
</t>
<dl newline="false" spacing="normal">
<dt/>
<dd>BFD Mode field is one 1 octet long. This specification defines the
P2MP BFD Session as value 1 <xref target="iana-bfd-discr"/>.</t>
<t>BFD (<xref
target="iana-bfd-discr"/>).</dd>
<dt/>
<dd>BFD Discriminator field is four 4 octets long.</t> long.</dd>
<dt/>
<dd>
<t>Optional TLVs is the optional variable-length field that MAY <bcp14>MAY</bcp14> be used in the BFD Discriminator attribute for future extensions.
TLVs MAY <bcp14>MAY</bcp14> be included in a sequential or nested manner. To allow for TLV nesting,
it is advised to define a new TLV as a variable-length object.
<xref target="opt-tlv-fig"/> presents the Optional TLV format TLV that consists of:
<list style="symbols">
<t>Type - a one-octet-long
</t>
<dl spacing="normal">
<dt>Type:</dt><dd>a 1-octet-long field that characterizes the
interpretation of the Value field (<xref target="iana-bfd-attr-ext"/>)</t>
<t>Length - a one-octet-long
target="iana-bfd-attr-ext"/>)</dd>
<dt>Length:</dt><dd>a 1-octet-long field equal to the length of the Value field in octets</t>
<t>Value - a octets</dd>
<dt>Value:</dt><dd>a variable-length field.</t>
</list> field</dd>
</dl>
<t>
All multibyte fields in TLVs defined in this specification are in network byte order.
</t>
</list>
</dd>
</dl>
<figure align="left" anchor="opt-tlv-fig" title="Format anchor="opt-tlv-fig">
<name>Format of the Optional TLV">
<artwork>
<![CDATA[ TLV</name>
<artwork align="left"><![CDATA[
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Value ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
</figure>
</t>
<t>
An optional Source IP Address TLV is defined in this document.
The Source IP Address TLV MUST <bcp14>MUST</bcp14> be used when the value of the BFD Mode field's value is P2MP BFD Session.
The BFD Discriminator attribute that does not include the Source IP Address TLV MUST <bcp14>MUST</bcp14> be handled
according to the "attribute discard" approach, as defined in <xref target="RFC7606"/>.
For the Source IP Address TLV TLV, fields are set as follows:
<list style="symbols">
<t>
</t>
<ul spacing="normal">
<li>
The Type field is set to 1 <xref target="iana-bfd-attr-ext"/>.
</t>
<t> (<xref target="iana-bfd-attr-ext"/>).
</li>
<li>
The Length field is 4 for the IPv4 address family and 16 for the IPv6 address family.
The TLV is considered malformed if the field is set to any other value.
</t>
<t>
</li>
<li>
The Value field contains the address associated with the MultipointHead of the P2MP BFD session.
</t>
</list>
</t>
</li>
</ul>
<t>
The BFD Discriminator attribute MUST <bcp14>MUST</bcp14> be considered malformed
if its length is smaller than 11 octets or if Optional TLVs are present, present but not well-formed. well formed.
If the attribute is deemed to be malformed,
the UPDATE message SHALL <bcp14>SHALL</bcp14> be handled using the approach of Attribute Discard per <xref target="RFC7606"/>.
</t>
<!-- </section> -->
<section title="Upstream
<section>
<name>Upstream PE Procedures"> Procedures</name>
<t>
To enable downstream PEs to track the P-tunnel status using a
point-to-multipoint (P2MP) BFD session session, the Upstream PE:
<list style="symbols">
<t>
MUST
</t>
<ul spacing="normal">
<li>
<bcp14>MUST</bcp14> initiate the BFD session and set bfd.SessionType
= MultipointHead as described in <xref target="RFC8562"/>;
</t>
<t>
</li>
<li>
when transmitting BFD Control packets MUST <bcp14>MUST</bcp14> set the IP
destination address of the inner IP header to the internal loopback
address 127.0.0.1/32 for IPv4 <xref target="RFC1122"/>. For IPv6,
it MUST <bcp14>MUST</bcp14> use the loopback address ::1/128 <xref target="RFC4291"/>.
</t>
<t>
MUST
target="RFC4291"/>;
</li>
<li>
<bcp14>MUST</bcp14> use the IP address included in the Source IP
Address TLV of the BFD Discriminator attribute as the source IP
address when transmitting BFD Control packets;
</t>
<t>
MUST
</li>
<li>
<bcp14>MUST</bcp14> include the BFD Discriminator attribute in the
x-PMSI A-D Route with the value set to the My Discriminator value;
</t>
<t>
MUST
</li>
<li>
<bcp14>MUST</bcp14> periodically transmit BFD Control packets over
the x-PMSI P-tunnel after the P-tunnel is considered established.
Note that the methods to declare that a P-tunnel has been
established are outside the scope of this specification.
</t>
</list>
</t>
</li>
</ul>
<t>
If the tracking of the P-tunnel by using a P2MP BFD session is enabled
after the x-PMSI A-D Route has been already advertised, the x-PMSI A-D
Route MUST <bcp14>MUST</bcp14> be re-sent resent with the only change between the
previous advertisement and the new advertisement to be the inclusion of the
BFD Discriminator attribute.
</t>
<t>
If the x-PMSI A-D Route is advertised with P-tunnel status tracked using
the P2MP BFD session, and it is desired to stop tracking P-tunnel
status using BFD, then:
<list style="symbols">
<t>
</t>
<ul spacing="normal">
<li>
the x-PMSI A-D Route MUST <bcp14>MUST</bcp14> be re-sent resent with the only
change between the previous advertisement and the new advertisement
be the exclusion of the BFD Discriminator attribute;
</t>
<t>
</li>
<li>
the P2MP BFD session MUST <bcp14>MUST</bcp14> be deleted. The session MAY
<bcp14>MAY</bcp14> be deleted after some configurable delay, which
should have a reasonable default.
</t>
</list>
</t>
</li>
</ul>
</section>
<section title="Downstream
<section>
<name>Downstream PE Procedures"> Procedures</name>
<t>
Upon receiving the BFD Discriminator attribute in the x-PMSI A-D Route, the downstream PE:
<list style="symbols">
<t>
MUST
</t>
<ul spacing="normal">
<li>
<bcp14>MUST</bcp14> associate the received BFD Discriminator value with the P-tunnel
originating from the Upstream PE and the IP address of the Upstream PE;
</t>
<t>
MUST
</li>
<li>
<bcp14>MUST</bcp14> create a P2MP BFD session and set bfd.SessionType = MultipointTail
as described in <xref target="RFC8562"/>;
</t>
</li>
<li>
<t>
to properly demultiplex BFD session MUST session, <bcp14>MUST</bcp14> use:
<list style="hanging">
<t>the
</t>
<ul>
<li>the IP address in the Source IP Address TLV included the BFD Discriminator
attribute in the x-PMSI A-D
Route;</t>
<t>the Route;
</li>
<li>the value of the BFD Discriminator field in the BFD Discriminator attribute;</t>
<t>the
attribute;
</li>
<li>the x-PMSI Tunnel Identifier <xref target="RFC6514"/> the BFD Control
packet was received on.</t>
</list>
</t>
</list> on.
</li>
</ul>
</li>
</ul>
<t>
After the state of the P2MP BFD session is up, i.e., bfd.SessionState == Up,
the session state will then be used to track the health of the P-tunnel.
</t>
<t>
According to <xref target="RFC8562"/>, if the downstream PE receives
Down or AdminDown in the State field of the BFD Control packet packet, or
associated with
if the BFD session Detection Timer associated with the BFD session expires, the
BFD session is down, i.e., bfd.SessionState == Down. When the BFD
session state is Down, then the P-tunnel associated with the BFD
session MUST <bcp14>MUST</bcp14> be considered down. If the site that
contains C-S is connected to two or more PEs, a downstream PE will
select one as its Primary Upstream PE, while others are considered as
to be Standby Upstream PEs. In such a scenario, when the P-tunnel
is considered down, the downstream PE MAY <bcp14>MAY</bcp14> initiate a
switchover of the traffic from the Primary Upstream PE to the
Standby Upstream PE only if the Standby Upstream PE is deemed to be
in the Up state. That MAY <bcp14>MAY</bcp14> be determined from the
state of a P2MP BFD session with the Standby Upstream PE as the
MultipointHead.
</t>
<t>
If the downstream PE's P-tunnel is already established when the
downstream PE receives the new x-PMSI A-D Route with the BFD
Discriminator attribute, the downstream PE MUST <bcp14>MUST</bcp14>
associate the value of the BFD Discriminator field with the P-tunnel
and follow procedures listed above in this section if and only if
the x-PMSI A-D Route was properly processed as per <xref
target="RFC6514"/>, and the BFD Discriminator attribute was
validated.
</t>
<t>
If the downstream PE's P-tunnel is already established, its state
being
monitored monitored by the P2MP BFD session set up using the BFD
Discriminator
attribute, attribute, and both the downstream PE receives the new
x-PMSI A-D Route without the BFD Discriminator attribute, attribute and the
x-PMSI A-D Route was processed without any error as per the relevant
specifications, the then:
</t>
<ul spacing="normal">
<li>
The downstream PE:
<list style="symbols">
<t>
MUST PE <bcp14>MUST</bcp14> stop processing BFD Control
packets for this P2MP BFD session;
</t>
<t>
the
</li>
<li>
The P2MP BFD session associated with the P-tunnel MUST
<bcp14>MUST</bcp14> be deleted. The session MAY <bcp14>MAY</bcp14> be
deleted after some configurable delay, which should have a
reasonable default.
</t>
<t>
MUST NOT
</li>
<li>
The downstream PE <bcp14>MUST NOT</bcp14> switch the traffic to the
Standby Upstream PE.
</t>
</list>
</t>
<!--
</li>
</ul>
</section>
</section>
<section>
<name>BFD Discriminator per PE-CE Link</name>
<t>
In such a scenario,
The following approach is defined in response to the context where fast restoration
mechanisms are used for the P-tunnels, leaf PEs should be
configured to wait before updating the UMH, to let the P-tunnel
restoration mechanism happen. A configurable timer MUST be provided
for this purpose, and it is RECOMMENDED to provide a reasonable
default value for this timer.
</t>
-->
</section>
</section>
<section title="Per PE-CE Link BFD Discriminator">
<t>
The following approach is defined in response to the detection by detection by the
Upstream PE of a PE-CE link failure. Even though the provider tunnel is
still up, it is desired for the downstream PEs to switch to a backup
Upstream PE. To achieve that, if the Upstream PE detects that its PE-CE
link fails, it MUST <bcp14>MUST</bcp14> set the bfd.LocalDiag of the P2MP BFD
session to Concatenated Path Down or Reverse Concatenated Path Down (per Section 6.8.17 [RFC5880]),
<xref target="RFC5880" sectionFormat="of" section="6.8.17"/>) unless it
switches to a new PE-
CE PE-CE link within the time of bfd.DesiredMinTxInterval
for the P2MP BFD session (in that case, the Upstream PE will start tracking
the status of the new PE-CE link). When a downstream PE receives that
bfd.LocalDiag code, it treats it as if the tunnel itself failed and tries
to switch to a backup PE.
</t>
</section>
<section anchor="operational-sec" title="Operational anchor="operational-sec">
<name>Operational Considerations for Monitoring a P-Tunnel's Status"> Status</name>
<t>
Several methods to monitor the status of a P-tunnel are described in <xref target="tunnel-status-determination"/>.
<!--Though there might be no perfect method, a comparison of benefits and challenges of each technique could be helpful
to both implementors and network operators.-->
</t>
<t>
Tracking the root of an MVPN (<xref target="root-track-sec"/>) concludes about reveals the
status of a P-tunnel based on the control plane information. Because, in
general, the MPLS data plane is not fate-sharing fate sharing with the control plane, this
method might produce false positive false-positive or false negative false-negative alarms, For for example,
resulting in tunnels that are considered as being up Up but are not able to reach the
root, or ones that are declared down prematurely. On the other hand, because
BGP next-hop tracking is broadly supported and deployed, this method might be
the easiest to deploy.
</t>
<t>
Method
The method described in <xref target="pe-p-link-status-sec"/> monitors the state
of the data plane but only for an egress P-PE link of a P-tunnel. As a result,
network failures that affect upstream links might not be detected using this
method and the MVPN convergence would be determined by the convergence of the
BGP control plane.
</t>
<t>
Using the state change of a P2MP RSVP-TE LSP as the trigger to re-evaluate the status of the P-tunnel (<xref target="rsvp-te-tunnel"/>)
relies on the mechanism used to monitor the state of the P2MP LSP.
</t>
<t>
The method described in <xref target="leaf-init-tunnel"/> is simple
and is safe from causing false alarms, e.g., considering a tunnel operationally up Up even though its data path has a defect or, conversely, declaring a tunnel failed when it is unaffected.
But the method applies to a sub-set subset of MVPNs, those that use the leaf-triggered x-PMSI tunnels.
</t>
<t>
Though some MVPN MVPNs might be used to provide a multicast service with
predictable interpacket interval inter-packet intervals (<xref target="counter-info-tunnel"/>), the number of such cases seem limited.
</t>
<t>
Monitoring the status of a P-tunnel using p2mp a P2MP BFD session (<xref
target="bfd-tunnel"/>) may produce the most accurate and expedient failure
notification of all monitoring methods discussed. On the other hand, it
requires careful consideration of the additional load of BFD sessions onto
network and PE nodes. Operators should consider the rate of BFD Control
packets transmitted by root PEs combined with the number of such PEs in the
network. In addition, the number of P2MP BFD sessions per PE determines the
amount of state information that a PE maintains.
</t>
</section>
</section>
</section>
<section anchor="standby-join" title="Standby C-multicast Route"> anchor="standby-join">
<name>Standby C-Multicast Route</name>
<t>
The procedures described below are limited to the case where the site
that contains C-S is connected to two or more PEs, though, though to simplify
the description, the case of dual-homing dual homing is described. In the case where
more than two PEs are connected to the C-s C-S site, selection of the
Standby PE can be performed using one of the methods of selecting a
UMH. Details of the selection are outside the scope of this document.
The procedures require all the PEs of that MVPN to follow the same UMH
selection procedure, as specified in <xref target="RFC6513"/>,
regardless of whether the PE selected based on its IP address, the
hashing algorithm described in section 5.1.3 of <xref target="RFC6513"/>, target="RFC6513" sectionFormat="of"
section="5.1.3" />, or the Installed UMH Route. The consistency of the
UMH selection method used among all PEs is expected to be provided by
the management plane. The procedures assume that if a site of a given
MVPN that contains C-S is dual-homed dual homed to two PEs, then all the other
sites of that MVPN would have two unicast VPN routes (VPN-IPv4 or
VPN-IPv6) to C-S, each with its own RD.
</t>
<t>As long as C-S is reachable via both PEs, a given downstream PE will
select one of the PEs connected to C-S as its Upstream PE for C-S. We
will refer to the other PE connected to C-S as the "Standby Upstream
PE". Note that if the connectivity to C-S through the Primary Upstream
PE becomes unavailable, then the PE will select the Standby Upstream PE
as its Upstream PE for C-S. When the Primary PE later becomes available, then
the PE will select the Primary Upstream PE again as its Upstream
PE. Such behavior is referred to as "revertive" behavior and MUST
<bcp14>MUST</bcp14> be supported. Non-revertive behavior refers to the
behavior of continuing to select the backup PE as the UMH even after the
Primary has come up. This non-revertive behavior MAY <bcp14>MAY</bcp14> also
be supported by an implementation and would be enabled through some
configuration. Selection of the behavior, revertive or non-revertive,
is an operational issue, but it MUST <bcp14>MUST</bcp14> be consistent on all
PEs in the given MVPN. While revertive is considered the default
behavior, there might be cases where the switchover to the standby
tunnel does not affect other services and provides the required quality
of service. An In this case, an operator might use non-revertive behavior
to avoid unnecessary in such case switchover and thus minimize disruption to the
multicast service.</t>
<t>For readability, in the following sub-sections, subsections, the procedures are
described for BGP C-multicast Source Tree Join routes, but they apply
equally to BGP C-multicast Shared Tree Join routes for the case where
the customer RP is dual-homed dual homed (substitute "C-RP" to "C-S").</t>
<section anchor="ds-behavior" title="Downstream anchor="ds-behavior">
<name>Downstream PE Behavior"> Behavior</name>
<t>When a (downstream) PE connected to some site of an MVPN needs to
send a C-multicast route (C-S, C-G), (C-S,C-G), then following the procedures
specified in Section 11.1 of <xref target="RFC6514"/>, target="RFC6514" sectionFormat="of"
section="11.1"/>, the PE sends the C-multicast route with an RT that
identifies the Upstream PE selected by the PE originating the
route. As long as C-S is reachable via the Primary Upstream PE, the
Upstream PE is the Primary Upstream PE. If C-S is reachable only via
the Standby Upstream PE, then the Upstream PE is the Standby Upstream
PE.</t>
<t>If C-S is reachable via both the Primary and the Standby Upstream
PE, then in addition to sending the C-multicast route with an RT that
identifies the Primary Upstream PE, the downstream PE also originates and sends a
C-multicast route with an RT that identifies the Standby Upstream PE.
The route that has the semantics of being a "standby" C-multicast
route is further called a "Standby BGP C-multicast route", and is
constructed as follows:</t>
<t><list style="symbols">
<t>the
<ul spacing="normal">
<li>The NLRI is constructed as the C-multicast route with an RT that
identifies the Primary Upstream PE, except that the RD is the same
as if the C-multicast route was built using the Standby Upstream PE
as the UMH (it will carry the RD associated to the unicast VPN route
advertised by the Standby Upstream PE for S and a Route Target
derived from the Standby Upstream PE’s PE's UMH
route’s route's VRF RT Import EC);</t>
<t>MUST
EC);</li>
<li>It <bcp14>MUST</bcp14> carry the "Standby PE" BGP Community (this is a new BGP
Community.
(0xFFFF0009); see <xref target="pe-standby-com-iana"/> requested IANA to allocate value TBA1).</t>
</list></t> target="pe-standby-com-iana"/>.</li>
</ul>
<t>
The Local Preference attribute of both the normal and the standby
C-multicast route needs to be adjusted. so that, adjusted as follows: if a BGP peer
receives two C-multicast routes with the same NLRI, one carrying the
"Standby PE" community and the other one not carrying the "Standby PE"
community,
then preference is given to the one not carrying the
"Standby PE" community. Such a situation can happen when, for
instance, due to transient unicast routing inconsistencies or lack of
support of the Standby PE community, two different downstream PEs
consider different Upstream PEs to be the primary one. In that case,
without any precaution taken, both Upstream PEs would process a
standby C-multicast route and possibly stop forwarding at the same
time. For this purpose, routes that carry the Standby PE BGP Community
must have the LOCAL_PREF attribute set to the value lower than the
value specified as the LOCAL_PREF attribute for the route that does
not carry the Standby PE BGP Community. The value of zero is RECOMMENDED.
<bcp14>RECOMMENDED</bcp14>.
</t>
<t>Note that, that when a PE advertises such a Standby C-multicast join for
a (C-S, C-G) (C-S,C-G), it MUST <bcp14>MUST</bcp14> join the corresponding P-tunnel.</t>
<t>If, at some later point, the PE determines that C-S is no longer
reachable through the Primary Upstream PE, the Standby Upstream PE
becomes the Upstream PE, and the PE re-sends resends the C-multicast route with
the RT that identifies the Standby Upstream PE, except that now the
route does not carry the Standby PE BGP Community (which results in
replacing the old route with a new route, with the only difference
between these routes being the absence of the Standby PE BGP
Community). The new Upstream PE must set the LOCAL_PREF attribute for
that C-multicast route to the same value as when the Standby PE BGP
Community was included in the advertisement.</t>
</section>
<section anchor="us-behavior" title="Upstream anchor="us-behavior">
<name>Upstream PE Behavior"> Behavior</name>
<t>
When a PE supporting this specification receives a C-multicast route for a particular (C-S, C-G) (C-S,C-G) for which all of the following are true:
<list style="symbols">
<t>the
</t>
<ul spacing="normal">
<li>the RT carried in the route results in importing the route into a particular VRF on the PE;</t>
<t>the PE;</li>
<li>the route carries the Standby PE BGP Community; and</t>
<t> and</li>
<li>
the PE determines (via a method of failure detection that is outside the scope of this document)
that C-S is not reachable through some other PE (more details are in <xref target="reach-sec"/>),
</t>
</list>
</li>
</ul>
<t>
then the PE MAY <bcp14>MAY</bcp14> install VRF PIM state corresponding to this Standby BGP C-multicast route
(the result will be that a PIM Join message will be sent to the CE towards C-S, and that
the PE will receive (C-S, C-G) (C-S,C-G) traffic), and the PE MAY <bcp14>MAY</bcp14> forward (C-S, C-G) (C-S,C-G)
traffic received by the PE to other PEs through a P-tunnel rooted at the PE.
</t>
<t>Furthermore, irrespective of whether C-S carried in that route is
reachable through some other PE:</t>
<t><list style="hanging">
<t hangText="a)">based
<ol type="a">
<li>based on local policy, as soon as the PE receives this Standby BGP
C-multicast route, the PE MAY <bcp14>MAY</bcp14> install VRF PIM state
corresponding to this BGP Source Tree Join route (the result will be that Join
messages will be sent to the CE toward C-S, and that the PE will receive (C-S, C-G) traffic)</t>
<t hangText="b)">based (C-S,C-G) traffic); and
</li>
<li>based on local policy, as soon as the PE receives this Standby BGP
C-multicast route, the PE MAY <bcp14>MAY</bcp14> forward (C-S, C-G) (C-S,C-G) traffic to
other PEs through a P-tunnel independently of the reachability of C-S through
some other PE. [note (note that this implies also doing a)]</t>
</list></t> step a.)
</li>
</ol>
<t>Doing neither a) or b) step a nor step b for a given (C-S, C-G) (C-S,C-G) is called "cold
root standby".</t>
<t>Doing a) step a but not b) step b for a given (C-S, C-G) (C-S,C-G) is called "warm root
standby".</t>
<t>Doing b) step b (which implies also doing a)) step a) for a given (C-S, C-G) (C-S,C-G) is
called "hot root standby".</t>
<t>Note that, if an Upstream PE uses an S-PMSI only S-PMSI-only policy, it shall
advertise an S-PMSI for a (C-S, C-G) (C-S,C-G) as soon as it receives a C-multicast
route for (C-S, C-G), (C-S,C-G), normal or Standby; i.e., that is, it shall not wait for
receiving a non-Standby C-multicast route before advertising the
corresponding S-PMSI.</t>
<t>Section 9.3.2 of <xref target="RFC6513"/>,
<t><xref target="RFC6513" sectionFormat="of" section="9.3.2"/>
describes the procedures of sending a Source-Active A-D Route as a
result of receiving the C-multicast route. These procedures MUST
<bcp14>MUST</bcp14> be followed for both the normal and Standby
C-multicast routes.</t>
</section>
<section anchor="reach-sec" title="Reachability Determination"> anchor="reach-sec">
<name>Reachability Determination</name>
<t>
The Standby Upstream PE can use the following information to determine that
C-S can or cannot be reached through the Primary Upstream PE:
<list style="symbols">
<t>presence/absence
</t>
<ul spacing="normal">
<li>presence/absence of a unicast VPN route toward C-S</t>
<t>supposing C-S</li>
<li>supposing that the Standby Upstream PE is the egress of the tunnel rooted
at the Primary Upstream PE, the Standby Upstream PE can determine the reachability
of C-S through the Primary Upstream PE based on the status of this tunnel,
determined thanks to the same criteria as the ones described in
<xref target="tunnel-status-determination"/> (without using
the UMH selection procedures of <xref target="tunnel-status"/>);</t>
<t>other mechanisms may be used.</t>
</list>
</t> target="tunnel-status"/>);</li>
<li>other mechanisms</li>
</ul>
</section>
<section anchor="interas" title="Inter-AS"> anchor="interas">
<name>Inter-AS</name>
<t>If the non-segmented inter-AS approach is used, the procedures described in
<xref target="ds-behavior"/> through <xref target="reach-sec"/> can be applied.</t>
<t>When multicast VPNs MVPNs are used in an inter-AS context with the
segmented inter-AS approach described in Section 9.2 of <xref target="RFC6514"/>, target="RFC6514"
sectionFormat="of" section="9.2"/>, the procedures in this section can
be applied.</t>
<t>A pre-requisite
<t>Prerequisites for the procedures described below to be applied
for a source of a given MVPN is:<list style="symbols">
<t>that are:</t>
<ul spacing="normal">
<li>that any PE of this MVPN receives two or more Inter-AS I-PMSI
A-D Routes advertised by the AS of the source</t>
<t>that source</li>
<li>that these Inter-AS I-PMSI A-D Routes have distinct
Route Distinguishers (as described in item "(2)" of <xref target="RFC6514">section 9.2
of</xref>).</t>
</list> target="RFC6514" section="9.2" sectionFormat="of"/>).</li>
</ul>
<t>
As an example, these conditions will be satisfied when the source is dual-homed
dual homed to an AS that connects to the receiver AS through two
ASBR using auto-configured autoconfigured RDs.</t>
<section title="Inter-AS
<section>
<name>Inter-AS Procedures for downstream Downstream PEs, ASBR Fast Failover"> Failover</name>
<t>The following procedure is applied by downstream PEs of an AS,
for a source S in a remote AS.</t>
<t>Additionally
<t>In additional to choosing an Inter-AS I-PMSI A-D Route advertised
from the AS of the source to construct a C-multicast route, as
described in <xref target="RFC6514">section 11.1.3</xref>, target="RFC6514" sectionFormat="of"
section="11.1.3"/>, a downstream PE will choose a second Inter-AS
I-PMSI A-D Route advertised from the AS of the source and use this
route to construct and advertise a Standby C-multicast route
(C-multicast route carrying the Standby extended community), as
described in <xref target="ds-behavior"> </xref>.</t>
</section>
<section title="Inter-AS
<section>
<name>Inter-AS Procedures for ASBRs"> ASBRs</name>
<t>When an Upstream ASBR receives a C-multicast route, and at least
one of the RTs of the route matches one of the ASBR Import RT, RTs, the
ASBR,
ASBR that supports this specification, specification must try to locate an Inter-AS
I-PMSI A-D Route whose RD and Source AS respectively match the RD
and Source AS carried in the C-multicast route. If the match is
found, and the C-multicast route carries the Standby PE BGP
Community, then the ASBR implementation that supports this
specification MUST <bcp14>MUST</bcp14> be configurable to perform as
follows:
<list style="symbols">
<t>if
</t>
<ul spacing="normal">
<li>If the route was received over iBGP and its LOCAL_PREF
attribute is set to zero, then it MUST <bcp14>MUST</bcp14> be
re-advertised in eBGP with a MED attribute (MULTI_EXIT_DISC) set
to the highest possible value (0xffff)</t>
<t>if (0xffff).</li>
<li>If the route was received over eBGP and its MED attribute is set
to 0xffff, then it MUST <bcp14>MUST</bcp14> be re-advertised in iBGP
with a LOCAL_PREF attribute set to zero</t>
</list> zero.</li>
</ul>
<t>
Other ASBR procedures are applied without modification and, when applied, MAY <bcp14>MAY</bcp14> modify the above-listed behavior.</t>
</section>
</section>
</section>
<section anchor="hot-standby" title="Hot anchor="hot-standby">
<name>Hot Root Standby"> Standby</name>
<t>The mechanisms defined in Sections <xref target="standby-join"/> format="counter"
target="tunnel-status"/> and <xref target="tunnel-status"/> format="counter" target="standby-join"/> can be used
together as follows.</t>
<t>The principle is that, for a given VRF (or possibly only for a given
(C-S, C-G):<list style="symbols">
<t>downstream
(C-S,C-G)):</t>
<ul spacing="normal">
<li>Downstream PEs advertise a Standby BGP C-multicast route (based on
<xref target="standby-join"/>)</t>
<t>Upstream target="standby-join"/>).</li>
<li>Upstream PEs use the "hot standby" optional behavior and thus will thus
start forwarding traffic for a given multicast state after they have a
(primary) BGP C-multicast route or a Standby BGP C-multicast route for
that state (or both)</t>
<t>a both).</li>
<li>A policy controls downstream PEs from which tunnel to downstream PEs accept traffic.
For example, the policy could be based on the status of the tunnel or tunnel monitoring
tunnel-monitoring method (<xref target="counter-info-tunnel"/>).</t>
</list></t> target="counter-info-tunnel"/>).</li>
</ul>
<t>Other combinations of the mechanisms proposed in Sections <xref target="standby-join"/>
format="counter" target="tunnel-status"/> and <xref target="tunnel-status"/> format="counter"
target="standby-join"/> are for further study.</t>
<t>Note that the same level of protection would be achievable with a
simple C-multicast Source Tree Join route advertised to both the primary
and secondary Upstream PEs (carrying (carrying, as Route Target extended
communities, the values of the VRF Route Import Extended Community of each VPN
route from each Upstream PEs). PE). The advantage of using the Standby
semantic is that, supposing that downstream PEs always advertise a
Standby C-multicast route to the secondary Upstream PE, it allows to
choose the protection level through a change of configuration on the
secondary Upstream PE, PE without requiring any reconfiguration of all the
downstream PEs.</t>
</section>
<section anchor="dups" title="Duplicate Packets"> anchor="dups">
<name>Duplicate Packets</name>
<t><xref target="RFC6513">Multicast VPN specifications</xref> impose
that a PE only forwards to CEs the packets coming from the expected
Upstream PE (Section 9.1 of <xref target="RFC6513"/>).</t> (<xref target="RFC6513" sectionFormat="of"
section="9.1"/>).</t>
<t>We draw the reader's attention to the fact that the respect of this
part of multicast VPN MVPN specifications is especially important when two
distinct Upstream PEs are susceptible to forward the same traffic on
P-tunnels at the same time in the steady state. That will be the case
when "hot root standby" mode is used (<xref target="hot-standby"/>), target="hot-standby"/>) and which
can also be the case if the procedures of <xref target="tunnel-status"/>
are used and used; likewise, it can also be the case when a) the rules
determining the status of a tree are not the same on two distinct
downstream PEs or b) the rule determining the status of a tree depends
on conditions local to a PE (e.g., the PE-P upstream link being up).</t> Up).</t>
</section>
<section anchor="IANA" title="IANA Considerations"> anchor="IANA">
<name>IANA Considerations</name>
<section anchor="pe-standby-com-iana" title="Standby anchor="pe-standby-com-iana">
<name>Standby PE Community"> Community</name>
<t>IANA is requested to allocate has allocated the BGP "Standby PE" community value (TBA1) 0xFFFF0009
from the Border "Border Gateway Protocol (BGP) Well-known Communities Communities"
registry using the First Come First Served registration policy.</t>
</section>
<section anchor="iana-bfd-discr" title="BFD Discriminator"> anchor="iana-bfd-discr">
<name>BFD Discriminator</name>
<t>This document defines a new BGP optional transitive attribute, attribute called
"BFD Discriminator". IANA is requested to allocate a has allocated codepoint (TBA2) 38 in the "BGP Path
Attributes" registry to the BFD Discriminator attribute.</t>
<t>
IANA is requested to create has created a new BFD Mode sub-registry "BFD Mode" subregistry in the Border "Border Gateway Protocol (BGP)
Parameters
Parameters" registry.
The registration policies, per <xref target="RFC8126"/>, for
this sub-registry subregistry are according to <xref target="iana-bfd-mode-reg"/>.
</t>
<texttable anchor="iana-bfd-mode-reg" title="BFD Mode Sub-registry
<table anchor="iana-bfd-mode-reg">
<name>"BFD Mode" Subregistry Registration Policies">
<ttcol align='left'>Value</ttcol>
<ttcol align='center'>Policy</ttcol>
<c>0- 175</c>
<c>IETF Review</c>
<c>176 Policies</name>
<thead>
<tr>
<th align="left">Value</th>
<th align="center">Policy</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">0- 175</td>
<td align="center">IETF Review</td>
</tr>
<tr>
<td align="left">176 - 249</c>
<c>First 249</td>
<td align="center">First Come First Served</c>
<c>250 Served</td>
</tr>
<tr>
<td align="left">250 - 254</c>
<c>Experimental Use</c>
<c>255</c>
<c>IETF Review</c>
</texttable> 254</td>
<td align="center">Experimental Use</td>
</tr>
<tr>
<td align="left">255</td>
<td align="center">IETF Review</td>
</tr>
</tbody>
</table>
<t>
IANA is requested to make has made initial assignments according to <xref target="iana-bfd-mode-alloc-tbl"/>.
</t>
<texttable anchor="iana-bfd-mode-alloc-tbl" title="BFD Mode Sub-registry">
<ttcol align="left">Value</ttcol>
<ttcol align="center">Description</ttcol>
<ttcol align="left">Reference</ttcol>
<c>0</c>
<c>Reserved</c>
<c>This document</c>
<c>1</c>
<c>P2MP BFD Session</c>
<c>This document</c>
<c>2- 175</c>
<c>Unassigned</c>
<c></c>
<c>176
<table anchor="iana-bfd-mode-alloc-tbl">
<name>"BFD Mode" Subregistry</name>
<thead>
<tr>
<th align="left">Value</th>
<th align="center">Description</th>
<th align="left">Reference</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">0</td>
<td align="center">Reserved</td>
<td align="left">This document</td>
</tr>
<tr>
<td align="left">1</td>
<td align="center">P2MP BFD Session</td>
<td align="left">This document</td>
</tr>
<tr>
<td align="left">2- 175</td>
<td align="center">Unassigned</td>
<td align="left"/>
</tr>
<tr>
<td align="left">176 - 249</c>
<c>Unassigned</c>
<c></c>
<c>250 249</td>
<td align="center">Unassigned</td>
<td align="left"/>
</tr>
<tr>
<td align="left">250 - 254</c>
<c>Experimental Use</c>
<c>This document</c>
<c>255</c>
<c>Reserved</c>
<c>This document</c>
</texttable> 254</td>
<td align="center">Experimental Use</td>
<td align="left">This document</td>
</tr>
<tr>
<td align="left">255</td>
<td align="center">Reserved</td>
<td align="left">This document</td>
</tr>
</tbody>
</table>
</section>
<section anchor="iana-bfd-attr-ext" title="BFD anchor="iana-bfd-attr-ext">
<name>BFD Discriminator Optional TLV Type"> Type</name>
<t>
IANA is requested to create has created a new BFD "BFD Discriminator Optional TLV Type sub-registry Type" subregistry in Border the "Border Gateway Protocol (BGP). (BGP) Parameters" registry.
The registration policies, per <xref target="RFC8126"/>, for
this sub-registry subregistry are according to <xref target="iana-bfd-discr-ext-reg"/>.
</t>
<texttable anchor="iana-bfd-discr-ext-reg" title="BFD
<table anchor="iana-bfd-discr-ext-reg">
<name>"BFD Discriminator Optional TLV Type Sub-registry Type" Subregistry Registration Policies">
<ttcol align='left'>Value</ttcol>
<ttcol align='center'>Policy</ttcol>
<c>0- 175</c>
<c>IETF Review</c>
<c>176 Policies</name>
<thead>
<tr>
<th align="left">Value</th>
<th align="center">Policy</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">0- 175</td>
<td align="center">IETF Review</td>
</tr>
<tr>
<td align="left">176 - 249</c>
<c>First 249</td>
<td align="center">First Come First Served</c>
<c>250 Served</td>
</tr>
<tr>
<td align="left">250 - 254</c>
<c>Experimental Use</c>
<c>255</c>
<c>IETF Review</c>
</texttable> 254</td>
<td align="center">Experimental Use</td>
</tr>
<tr>
<td align="left">255</td>
<td align="center">IETF Review</td>
</tr>
</tbody>
</table>
<t>
IANA is requested to make has made initial assignments according to <xref target="iana-bfd-discr-ext-tbl"/>.
</t>
<texttable anchor="iana-bfd-discr-ext-tbl" title="BFD
<table anchor="iana-bfd-discr-ext-tbl">
<name>"BFD Discriminator Optional TLV Type Sub-registry">
<ttcol align='left'>Value</ttcol>
<ttcol align='center'>Description</ttcol>
<ttcol align='left'>Reference</ttcol>
<c>0</c>
<c>Reserved</c>
<c>This document</c>
<c>1</c>
<c>Source Type" Subregistry</name>
<thead>
<tr>
<th align="left">Value</th>
<th align="center">Description</th>
<th align="left">Reference</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">0</td>
<td align="center">Reserved</td>
<td align="left">This document</td>
</tr>
<tr>
<td align="left">1</td>
<td align="center">Source IP Address</c>
<c>This document</c>
<c>2- 175</c>
<c>Unassigned</c>
<c></c>
<c>176 Address</td>
<td align="left">This document</td>
</tr>
<tr>
<td align="left">2- 175</td>
<td align="center">Unassigned</td>
<td align="left"/>
</tr>
<tr>
<td align="left">176 - 249</c>
<c>Unassigned</c>
<c></c>
<c>250 249</td>
<td align="center">Unassigned</td>
<td align="left"/>
</tr>
<tr>
<td align="left">250 - 254</c>
<c>Experimental Use</c>
<c>This document</c>
<c>255</c>
<c>Reserved</c>
<c>This document</c>
</texttable> 254</td>
<td align="center">Experimental Use</td>
<td align="left">This document</td>
</tr>
<tr>
<td align="left">255</td>
<td align="center">Reserved</td>
<td align="left">This document</td>
</tr>
</tbody>
</table>
</section>
</section>
<section anchor="Security" title="Security Considerations"> anchor="Security">
<name>Security Considerations</name>
<t>
This document describes procedures based on <xref target="RFC6513"/> and
<xref target="RFC6514"/>
and hence target="RFC6514"/>; hence, it shares the security considerations
respectively represented in these those specifications.
</t>
<t>
This document uses P2MP BFD, as defined in <xref target="RFC8562"/>, which, in
turn, is based on <xref target="RFC5880"/>. Security considerations relevant
to each protocol are discussed in the respective protocol specifications. An
implementation that supports this specification MUST <bcp14>MUST</bcp14> provide a
mechanism to limit the overall amount of capacity used by the BFD traffic (as
the combination of the number of active P2MP BFD sessions and the rate of BFD
Control packets to process).
</t>
<t>
The methods described in <xref target="tunnel-status-determination"/>
may produce false-negative state changes that can be the trigger for
an unnecessary convergence in the control plane, ultimately negatively
impacting the multicast service provided by the VPN. An operator is
expected to consider the network environment and use available
controls of the mechanism used to determine the status of a P-tunnel.
</t>
</section>
</middle>
<back>
<references>
<name>References</name>
<references>
<name>Normative References</name>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6513.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6514.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4875.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5880.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8562.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7606.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4271.xml"/>
</references>
<references>
<name>Informative References</name>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4090.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7431.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4291.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.1122.xml"/>
<reference anchor='MPLS-P2MP-BFD'>
<front>
<title>BFD for Multipoint Networks over Point-to-Multi-Point MPLS LSP</title>
<author initials='G' surname='Mirsky' fullname='Greg Mirsky'>
<organization />
</author>
<author initials='G' surname='Mishra' fullname='Gyan Mishra'>
<organization />
</author>
<author initials='D' surname='Eastlake 3rd' fullname='Donald Eastlake 3rd'>
<organization />
</author>
<date month='March' year='2021' />
</front>
<seriesInfo name='Internet-Draft' value='draft-mirsky-mpls-p2mp-bfd-14' />
</reference>
</references>
</references>
<section anchor="Acknowledgments" title="Acknowledgments"> numbered="false">
<name>Acknowledgments</name>
<t>The authors want to thank Greg Reaume, Eric Rosen, Jeffrey Zhang, Martin Vigoureux, Adrian Farrel, <contact fullname="Greg Reaume"/>, <contact
fullname="Eric Rosen"/>, <contact fullname="Jeffrey Zhang"/>, <contact
fullname="Martin Vigoureux"/>, <contact fullname="Adrian Farrel"/>, and Zheng
<contact fullname="Zheng (Sandy) Zhang Zhang"/> for their reviews, useful
comments, and helpful suggestions.</t>
</section>
<section title="Contributor Addresses">
<t>
Below anchor="Contributors" numbered="false">
<name>Contributors</name>
<t>Below is a list of other contributing authors in alphabetical order:
<figure align="left">
<artwork align="left"><![CDATA[
Rahul Aggarwal
Arktan
Email: raggarwa_1@yahoo.com
Nehal Bhau
Cisco
Email: NBhau@cisco.com
Clayton Hassen
Bell Canada
2955
</t>
<author fullname="Rahul Aggarwal" initials="R" surname="Aggarwal">
<organization>Arktan</organization>
<address>
<postal>
<street></street>
<city></city>
<code></code>
<country></country>
</postal>
<email>raggarwa_1@yahoo.com</email>
</address>
</author>
<author fullname="Nehal Bhau" initials="N" surname="Bhau">
<organization>Cisco</organization>
<address>
<postal>
<street></street>
<city></city>
<code></code>
<country></country>
</postal>
<email>NBhau@cisco.com</email>
</address>
</author>
<author fullname="Clayton Hassen" initials="C" surname="Hassen">
<organization>Bell Canada</organization>
<address>
<postal>
<street>2955 Virtual Way
Vancouver
CANADA
Email: Clayton.Hassen@bell.ca
Wim Henderickx
Nokia
Copernicuslaan 50
Antwerp 2018
Belgium
Email: wim.henderickx@nokia.com
Pradeep Jain
Nokia
701 Way</street>
<city>Vancouver</city>
<code></code>
<country>Canada</country>
</postal>
<email>Clayton.Hassen@bell.ca</email>
</address>
</author>
<author fullname="Wim Henderickx" initials="W" surname="Henderickx">
<organization>Nokia</organization>
<address>
<postal>
<street>Copernicuslaan 50</street>
<city>Antwerp</city>
<code>2018</code>
<country>Belgium</country>
</postal>
<email>wim.henderickx@nokia.com</email>
</address>
</author>
<author fullname="Pradeep Jain" initials="P" surname="Jain">
<organization>Nokia</organization>
<address>
<postal>
<street>701 E Middlefield Rd
Mountain View, CA 94043
USA
Email: pradeep.jain@nokia.com
Jayant Kotalwar
Nokia
701 Rd</street>
<city>Mountain View</city>
<code>CA 94043</code>
<country>United States of America</country>
</postal>
<email>pradeep.jain@nokia.com</email>
</address>
</author>
<author fullname="Jayant Kotalwar" initials="J" surname="Kotalwar">
<organization>Nokia</organization>
<address>
<postal>
<street>701 E Middlefield Rd
Mountain View, CA 94043
USA
Email: Jayant.Kotalwar@nokia.com
Praveen Muley
Nokia
701 Rd</street>
<city>Mountain View</city>
<code>CA 94043</code>
<country>United States of America</country>
</postal>
<email>Jayant.Kotalwar@nokia.com</email>
</address>
</author>
<author fullname="Praveen Muley" initials="P" surname="Muley">
<organization>Nokia</organization>
<address>
<postal>
<street>701 East Middlefield Rd
Mountain View, CA 94043
U.S.A.
Email: praveen.muley@nokia.com
Ray Rd</street>
<city>Mountain View</city>
<code>CA 94043</code>
<country>United States of America</country>
</postal>
<email>praveen.muley@nokia.com</email>
</address>
</author>
<author fullname="Ray (Lei) Qiu
Juniper Networks
1194 Qiu" initials="R" surname="Qiu">
<organization>Juniper Networks</organization>
<address>
<postal>
<street>1194 North Mathilda Ave.
Sunnyvale, CA 94089
U.S.A.
Email: rqiu@juniper.net
Yakov Rekhter
Juniper Networks
1194 Ave.</street>
<city>Sunnyvale</city>
<code>CA 94089</code>
<country>United States of America</country>
</postal>
<email>rqiu@juniper.net</email>
</address>
</author>
<author fullname="Yakov Rekhter" initials="Y" surname="Rekhter">
<organization>Juniper Networks</organization>
<address>
<postal>
<street>1194 North Mathilda Ave.
Sunnyvale, CA 94089
U.S.A.
Email: yakov@juniper.net
Kanwar Singh
Nokia
701 Ave.</street>
<city>Sunnyvale</city>
<code>CA 94089</code>
<country>United States of America</country>
</postal>
<email>yakov@juniper.net</email>
</address>
</author>
<author fullname="Kanwar Singh" initials="K" surname="Singh">
<organization>Nokia</organization>
<address>
<postal>
<street>701 E Middlefield Rd
Mountain View, CA 94043
USA
Email: kanwar.singh@nokia.com
]]></artwork>
</figure>
</t> Rd</street>
<city>Mountain View</city>
<code>CA 94043</code>
<country>United States of America</country>
</postal>
<email>kanwar.singh@nokia.com</email>
</address>
</author>
</section>
</middle>
<back>
<references title="Normative References">
<?rfc include="reference.RFC.2119"?>
<?rfc include="reference.RFC.8174"?>
<?rfc include="reference.RFC.6513"?>
<?rfc include="reference.RFC.6514"?>
<?rfc include="reference.RFC.4875"?>
<?rfc include="reference.RFC.5880"?>
<?rfc include="reference.RFC.8562"?>
<?rfc include="reference.RFC.7606"?>
<?rfc include="reference.RFC.8126"?>
<?rfc include="reference.RFC.4271"?>
</references>
<references title="Informative References">
<?rfc include="reference.RFC.4090"?>
<?rfc include="reference.RFC.7431"?>
<?rfc include="reference.RFC.4291"?>
<?rfc include="reference.RFC.1122"?>
<?rfc include="reference.I-D.mirsky-mpls-p2mp-bfd"?>
</references>
</back>
</rfc>