rfc-8563

Bidirectional Forwarding Detection (BFD) Multipoint Active Tails

D. Katz, D. Ward, S. Pallagatti (Editor), G. Mirsky (Editor)
date2019-04 streamIETF areartg wgbfd statusPROPOSED STANDARD pages20 canonicalhttps://www.rfc-editor.org/rfc/rfc8563 doi10.17487/RFC8563
This document describes active tail extensions to the Bidirectional Forwarding Detection (BFD) protocol for multipoint networks.

Extracted elements (26)

design-rationale §1

Scaling is a primary concern in multipoint BFD active tails, so the head must be in control of all timing aspects and BFD packets from tails to the head must not be synchronized. This prevents state explosion toward the head.

routing, multicast

design-rationale §6.8

The Required Min RX Interval value received in a unicast BFD Control packet from the head always takes precedence over the value received in multipoint BFD Control packets, allowing per-tail packet rate control and eliminating the random transmission delay for faster failure reporting.

routing, multicast

design-rationale §5

Three operational scenarios are defined — no head notification (m-poll), head notification with multipoint polling, and composite polling (combining multipoint and unicast polling) — providing a spectrum of tradeoffs between complexity, reliability, and scaling.

routing, multicast

interoperability-note §7

Since the normal BFD three-way handshake is not used in this application, a tail transitioning from Up to Down and back to Up again may not be reliably detected at the head.

routing, multicast

normative-requirement §6.9 MUST NOT

A multipoint Poll MUST NOT be sent more often than the regular multipoint BFD Control packet. The Detection Time MUST be greater than the round-trip time of BFD Control packets from the head to the tail and back.

routing, multicast

normative-requirement §6.13.3 MUST NOT

A system MUST NOT periodically transmit BFD Control packets if bfd.SessionType is MultipointClient and a Poll Sequence is not being transmitted.

routing, multicast

normative-requirement §6.13.3 MUST NOT

A system MUST NOT set the Demand (D) bit if bfd.SessionType is MultipointClient unless bfd.DemandMode is 1, bfd.SessionState is Up, and bfd.RemoteSessionState is Up.

routing, multicast

normative-requirement §6.3.3 MUST

bfd.DemandMode MUST be initialized to 1 for session type MultipointClient.

routing, multicast

normative-requirement §6.3.1 MUST

bfd.SilentTail MUST be initialized based on configuration with a default value of 1, and SHOULD NOT be modified after the MultipointTail session has been created.

routing, multicast

normative-requirement §6.3.3 MUST

For session type MultipointClient, bfd.DetectMult MUST always match the value of bfd.DetectMult in the associated MultipointHead session.

routing, multicast

normative-requirement §6.3.3 MUST

For session type MultipointClient, bfd.LocalDiscr MUST always match the value of bfd.LocalDiscr in the associated MultipointHead session.

routing, multicast

normative-requirement §6.13.3 MUST

If a BFD Control packet is received with the Poll (P) bit set to 1 and the Multipoint (M) bit is also set, the responding packet transmission MUST be delayed by a random amount of time between zero and (0.9 * bfd.RemoteMinRxInterval); otherwise it MUST be transmitted as soon as practicable.

routing, multicast

normative-requirement §10 MUST

Implementations that create MultipointClient sessions dynamically upon receipt of BFD Control packets from tails MUST implement protective measures to prevent unbounded session creation.

security, routing

normative-requirement §5.2 MUST

In head-notification mode (Section 5.2), if bfd.SessionType is MultipointTail, bfd.SilentTail MUST be set to zero; if bfd.SessionType is MultipointHead or MultipointClient, bfd.ReportTailDown MUST be set to 1; and the head MUST set bfd.RequiredMinRxInterval to nonzero.

routing, multicast

normative-requirement §5.1 MUST

In no-head-notification mode (Section 5.1), bfd.SilentTail MUST be set to 1 on MultipointTail sessions, and bfd.ReportTailDown MUST be set to zero on MultipointHead or MultipointClient sessions.

routing, multicast

normative-requirement §6.1 MUST NOT

MultipointClient sessions MUST NOT transmit periodic BFD Control packets other than Poll Sequences, since periodic transmission is always done by the MultipointHead session.

routing, multicast

normative-requirement §6.7 MUST

The head MUST demultiplex incoming BFD Control packets from tails based on the source address and the value of Your Discriminator together, since the same Your Discriminator value is received from all tails on the multicast tree.

routing, multicast

normative-requirement §6.10 MUST

The interval between transmitted packets in a unicast Poll Sequence MUST be calculated as specified in RFC 5880 — the greater of bfd.DesiredMinTxInterval and bfd.RemoteMinRxInterval.

routing, multicast

normative-requirement §6.13.3 MUST

When bfd.SessionType is MultipointTail and periodic BFD Control packet transmission is just starting, the first packet MUST be delayed by a random amount of time between zero and (0.9 * bfd.RemoteMinRxInterval) to avoid synchronization of tail responses.

routing, multicast

normative-requirement §6.7 MUST

When the head sends unicast BFD Control packets to a tail from a MultipointClient session, the tail MUST demultiplex the packet based solely on Your Discriminator.

routing, multicast

protocol-element §6.3.1

bfd.ReportTailDown is a new state variable on the head. When set to 1, tails will notify the head via periodic BFD Control packets when they detect session failure. Default value MUST be zero. Only pertinent when bfd.SessionType is MultipointHead or MultipointClient.

routing, multicast

protocol-element §6.3.1

bfd.SilentTail is a new state variable that, when set to 1, prevents a tail from sending any BFD Control packets to the head even when the head is soliciting traffic. Default value MUST be 1. Only pertinent when bfd.SessionType is MultipointTail.

routing, multicast

protocol-element §6.3.1

bfd.UnicastRcvd is a new state variable on a tail, set to 1 when the tail has received a unicast BFD Control packet from the head while in Up state. MUST be reset to zero when transitioning out of Up state, and MUST be initialized to zero.

routing, multicast

protocol-element §6.1

MultipointClient is a new session type on the head that tracks the state of an individual tail when desirable. All MultipointClient sessions for tails on a particular multipoint path are associated with the corresponding MultipointHead session.

routing, multicast

security-consideration §10

Dynamic creation of MultipointClient sessions on receipt of BFD packets from tails creates a resource exhaustion attack surface. Implementations should alarm when session count exceeds the expected number of tails and enforce a reasonable upper bound on the number of sessions, potentially computed from the expected number of multicast streams.

security, routing, multicast

state-machine §6.5

The MultipointClient session state machine is the same as for MultipointHead (administratively driven transitions only). MultipointClient sessions SHOULD be destroyed when the MultipointHead session enters Down/AdminDown state. Sessions MAY be destroyed or maintained with a Poll Sequence upon receipt of unsolicited Down/AdminDown from a tail.

routing, multicast