<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rfc [
<!ENTITY nbsp "&#160;">
<!ENTITY zwsp "&#8203;">
<!ENTITY nbhy "&#8209;">
<!ENTITY wj "&#8288;">
]>
<?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"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" ipr="trust200902" docName="draft-ietf-rtgwg-vrrp-p2mp-bfd-09" updates="5798bis" obsoletes="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="3" symRefs="true" sortRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.6.0 -->
  <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<front>
    <title abbrev="Applicability of BFD P2MP in VRRP">Applicability of Bidirectional Forwarding Detection (BFD) for Multi-point Networks in Virtual Router Redundancy Protocol (VRRP)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-rtgwg-vrrp-p2mp-bfd-09"/>
    <author initials="G." surname="Mirsky" fullname="Greg Mirsky">
      <organization>Ericsson</organization>
      <address>
        <email>gregimirsky@gmail.com</email>
      </address>
    </author>
    <author initials="J." surname="Tantsura" fullname="Jeff Tantsura">
      <organization>NVIDIA</organization>
      <address>
        <email>jefftant.ietf@gmail.com</email>
      </address>
    </author>
    <author fullname="Gyan Mishra" initials="G. " surname="Mishra">
      <organization>Verizon Inc.</organization>
      <address>
        <email>gyan.s.mishra@verizon.com</email>
      </address>
    </author>
    
    <date year="2024"/>
    
    <area>Routing</area>
    <workgroup>RTGWG</workgroup>
    <keyword>Internet-Draft</keyword>
    <keyword>VRRP</keyword>
    <keyword>BFD </keyword>
    <abstract>
      <t>
	This document discusses the applicability of Bidirectional Forwarding Detection (BFD) for multipoint networks 
	to provide Virtual Router Redundancy Protocol with sub-second convergence for the process determining
	the Active router and defines the extension to bootstrap point-to-multipoint BFD session.
      </t>
      <t>This draft updates RFC 5798bis [Ed.Note: When the RFC 5798bis is published, change to the assigned new number].</t>
    </abstract>
  </front>
  <middle>
    <section anchor="intro" numbered="true" toc="default">
      <name>Introduction</name>
      <t>
 The <xref target="I-D.ietf-rtgwg-vrrp-rfc5798bis" format="default"/> is the current specification of the Virtual Router Redundancy Protocol (VRRP)
 for IPv4 and IPv6 networks. 
 <!--<xref target="I-D.ietf-rtgwg-vrrp-rfc5798bis"/> is intended to obsolete <xref target="RFC5798"/> and its terminology is already used in this document.  -->
 VRRPv3 allows for a faster switchover to a Backup router. Using such capability
 with the software-based implementation of VRRP may prove challenging. 
But it still may be possible to deploy
 VRRP and provide sub-second detection of Active router failure by Backup routers.
      </t>
      <t>
 Bidirectional Forwarding Detection (BFD) <xref target="RFC5880" format="default"/> had been originally defined to detect
 failure of point-to-point (p2p) paths: single-hop <xref target="RFC5881" format="default"/>, multihop <xref target="RFC5883" format="default"/>.
 Single-hop BFD may be used to enable Backup routers to detect a failure of the Active router within 100 msec or faster.
      </t>
      <t>
 <xref target="RFC8562" format="default"/> extends <xref target="RFC5880" format="default"/> for multipoint and multicast
 networks, which matches the deployment scenarios for VRRP over the LAN segment. This document
 demonstrates how point-to-multipoint (p2mp) BFD can enable faster detection of the Active router failure and 
 thus minimize service disruption in a VRRP domain.
 The document also defines the extension to VRRP <xref target="I-D.ietf-rtgwg-vrrp-rfc5798bis" format="default"/>
 to bootstrap a VRRP Backup router to join in a p2mp BFD session.
      </t>
      <section numbered="true" toc="default">
        <name>Conventions used in this document</name>
        <section numbered="true" toc="default">
          <name>Terminology</name>
          <t>BFD:          Bidirectional Forwarding Detection</t>
          <t>p2mp:         Pont-to-Multipoint</t>
          <t>VRRP:        Virtual Router Redundancy Protocol</t>
        </section>
        <section numbered="true" toc="default">
          <name>Requirements Language</name>
          <t>
   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
   NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
   "MAY", and "OPTIONAL" in this document are to be interpreted as
   described in BCP 14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/>
   when, and only when, they appear in all capitals, as shown here.
          </t>
        </section>
      </section>
    </section>
    <section anchor="problem-statement" numbered="true" toc="default">
      <name>Problem Statement</name>
      <t>
A router may be part of several Virtual Router Redundancy groups, as Active in some and as Backup in others.
Supporting sub-second mode for VRRPv3 <xref target="I-D.ietf-rtgwg-vrrp-rfc5798bis" format="default"/> for all these roles without specialized support
in the data plane may prove challenging because of the increased load on the control plane.
BFD already has many implementations based on HW that are capable
of supporting multiple sub-second sessions concurrently.
</t>
    </section>
    <section anchor="apply-p2mp-bfd" numbered="true" toc="default">
      <name>Applicability of p2mp BFD</name>
      <t>
 <xref target="RFC8562" format="default"/> may provide an efficient and scalable solution for fast-converging
 environment that uses the default route rather than dynamic routing. Each redundancy group presents itself as a p2mp BFD
 session, with its Active router being the root and Backup routers being the tails of the p2mp BFD session.
 <xref target="vrrp-p2mp-bfd-boot-fig" format="default"/> displays the extension
 of VRRP <xref target="I-D.ietf-rtgwg-vrrp-rfc5798bis" format="default"/> to bootstrap a tail of the p2mp BFD session.
      </t>
      <figure anchor="vrrp-p2mp-bfd-boot-fig">
        <name>VRRP Extension to Bootstrap P2MP BFD session</name>
        <artwork name="" type="" align="left" alt="">    
     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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |Version| Type  | Virtual Rtr ID|   Priority    |Count IPvX Addr|
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |Rsvd |B|     Max Adver Int     |          Checksum             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    +                                                               +
    |                       IPvX Address(es)                        |
    +                                                               +
    +                                                               +
    +                                                               +
    +                                                               +
    |                                                               |
    +                                                               +
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                   Active Router Discriminator                 |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       </artwork>
      </figure>
      <t>
The new fields are interpreted as follows:
</t>
      <ul empty="true" spacing="normal">
        <li>B(FD) - a one-bit flag that indicates that the Active Router Discriminator field is appended to VRRP packet defined in <xref target="I-D.ietf-rtgwg-vrrp-rfc5798bis" format="default"/>;</li>
        <li>Active Router Discriminator - the four-octet field. The value MUST NOT be zero,
        and it equals the My Discriminator <xref target="RFC5880"/> value allocated by the root of the p2mp BFD session.</li>
      </ul>
      <t>
 The Active router, configured to use p2mp BFD to support faster convergence of VRRP,
 starts transmitting BFD control packets with IPvX address associated with the Virtual Router <xref target="I-D.ietf-rtgwg-vrrp-rfc5798bis"/> as a source IP address
 and the locally allocated value as the value of the My Discriminator field (<xref target="RFC5880"/>). The same non-zero value of My Discriminator
 MUST be set as the value of the Active Router Discriminator field. The BFD flag MUST be set in the VRRP packet. A Backup router demultiplexes
 p2mp BFD test sessions based on IPvX address associated with the Virtual Router that it has been configured with
 and the non-zero My Discriminator value it learns from the received VRRP packet. When a Backup
 router detects the failure of the Active router, according to the Section 5.11 <xref target="RFC8562"/>,
 it re-evaluates its role in the Virtual Router. As a result, the Backup router may become the Active
router of the given Virtual Router or continue as a Backup router. If the former is the case, then the new Active
router MUST select its new My Discriminator value, include that value in the VRRP packet to bootstrap a new p2mp BFD session,
and start transmitting p2mp BFD control packets using the Active router IP address as the source IP address for p2mp BFD control packets
and its new My Discriminator value. If the latter is the case, the
 Backup router MUST wait for the VRRP packet from the new VRRP Active router that will bootstrap the new p2mp BFD session.
      </t>
      <section anchor="p2mp-bfd-encap" numbered="true" toc="default">
        <name>Multipoint BFD Encapsulation</name>
        <t>
The MultipointHead of p2mp BFD session when transmitting BFD control packet:
</t>
        <ul empty="true" spacing="normal">
          <li>MUST set TTL or Hop Limit value to 255 (Section 5 <xref target="RFC5881"/>).
      Similarly, all received BFD Control packets that are demultiplexed
      to the session MUST be discarded if the received TTL or Hop Limit
      is not equal to 255;</li>
          <li>SHOULD use group address VRRP ('224.0.0.18' for IPv4 and 'FF02:0:0:0:0:0:0:12' for IPv6) as destination IP address</li>
          <li>MAY use network broadcast address for IPv4 or link-local all nodes multicast group for IPv6 as destination IP address;</li>
          <li>MUST set destination UDP port value to 3784 when transmitting BFD control packets, as defined in <xref target="RFC8562"/>;</li>
          <li>MUST use the Active router IP address as the source IP address.</li>
        </ul>
      </section>
    </section>
    <section anchor="iana-consider" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>
This document makes no requests for IANA allocations. This section may be deleted by RFC Editor.
      </t>
    </section>
    <section anchor="security" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>
         This document defines an alternative way, to the one defined in <xref target="I-D.ietf-rtgwg-vrrp-rfc5798bis"/>, to accelerate detecting a failure that
   affects VRRP functionality using p2mp BFD.  The operation of either protocol is not changed.
</t>
      <t>
 Security considerations discussed in <xref target="I-D.ietf-rtgwg-vrrp-rfc5798bis"/>, <xref target="RFC5880"/>, <xref target="RFC5881"/>,
 and <xref target="RFC8562"/>, apply to this document. 
      </t>
    </section>
    <section numbered="true" toc="default">
      <name>Acknowledgements</name>
      <t>
      </t>
    </section>
  </middle>
  <back>
    <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.5880.xml"/>
      <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5881.xml"/>
      <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5883.xml"/>
      <!-- <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5798.xml"/> -->
      <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8562.xml"/>
      <xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-ietf-rtgwg-vrrp-rfc5798bis.xml"/>
    </references>

 </back>
</rfc>
