rfc-5534

Failure Detection and Locator Pair Exploration Protocol for IPv6 Multihoming

J. Arkko, I. van Beijnum
date2009-06 streamIETF areaint wgshim6 statusPROPOSED STANDARD pages36 canonicalhttps://www.rfc-editor.org/rfc/rfc5534 doi10.17487/RFC5534
This document specifies how the level 3 multihoming Shim6 protocol (Shim6) detects failures between two communicating nodes. It also specifies an exploration protocol for switching to another pair of interfaces and/or addresses between the same nodes if a failure occurs and an operational pair can be found. [STANDARDS-TRACK]

Extracted elements (27)

design-rationale §1

Failure detection is made lightweight by observing payload traffic in both directions. Keepalives are only generated when there is traffic in one direction but not the other, avoiding any packets when communication is idle or bidirectional.

ip, v6ops

design-rationale §8

REAP exploration is not permitted during Shim6 connection establishment because doing so would create an amplification vulnerability; Shim6 contexts are only created after a relatively large number of packets have been exchanged, raising the cost of exploitation.

ip, v6ops, security

design-rationale §3.5

Shim6 does not employ multiple paths simultaneously because congestion control in commonly used transport protocols is based on a single path. Effective congestion control over multiple paths is considered a research topic.

ip, multipath, congestion

design-rationale §9

Shim6 uses the same header for signaling and payload encapsulation so that fate is shared: either all Shim6 packets (keepalives, probes, and payload) get through or none do, preventing the pathological case where probes succeed but payload fails.

ip, v6ops

interoperability-note §3.5

SCTP and future multipath transport protocols are likely to require interaction with Shim6 to ensure they do not employ Shim6 unexpectedly, since Shim6 restricts traffic to a single current address pair for congestion control reasons.

ip, v6ops, sctp, multipath

normative-requirement §4.3 MUST

All nodes MUST perform locator pair exploration sequentially and with exponential back-off to avoid a signaling storm when an outage occurs, particularly for a complete site.

ip, v6ops

normative-requirement §5.3 MUST

If a node is using a non-default Send Timeout value, it MUST communicate this value as a Keepalive Timeout value to the peer using the Keepalive Timeout Option.

ip, v6ops

normative-requirement §7 RECOMMENDED

It is RECOMMENDED that an alternate Send Timeout value not be under 10 seconds and that Send Timeout be at most 100 seconds (the default TCP R2 timeout), so Shim6 detects and repairs problems before upper layers give up.

ip, v6ops, tcp

normative-requirement §4.3 SHOULD

Nodes SHOULD attempt to test through all candidate address pairs until an operational pair is found, and retry the process as necessary.

ip, v6ops

normative-requirement §4.1 SHOULD

REAP Keepalive messages SHOULD continue to be sent at the Keepalive Interval until either a payload packet in the Shim6 context has been received from the peer or the Keepalive Timeout expires.

ip, v6ops

normative-requirement §3.2 MUST

Shim6 implementations MUST be able to employ information provided from Neighbor Unreachability Detection to discover and monitor locally operational addresses.

ip, v6ops

normative-requirement §3.3 MUST

Shim6 implementations MUST support the discovery of operational address pairs through the use of explicit reachability tests and Forced Bidirectional Communication (FBD).

ip, v6ops

normative-requirement §5.2 RECOMMENDED

The Probe Nonce field is RECOMMENDED to be at least moderately hard to guess so that even on-path attackers cannot deduce the next nonce value, and SHOULD be generated using a random number generator with good randomness properties as outlined in RFC 4086.

ip, v6ops, security

normative-requirement §5.1 MUST

The Type field in the Keepalive message MUST be set to 66 (Keepalive).

ip, v6ops

normative-requirement §6.1 MUST

When sending a Probe message, the State field MUST be set to a value that matches the conceptual state of the sender after sending the Probe.

ip, v6ops

normative-requirement §6.1 SHOULD

While the Keepalive Timer is running, the node SHOULD send Keepalive messages to the peer with an interval of Keepalive Interval seconds.

ip, v6ops

protocol-element §7

Default protocol constants: Send Timeout = 15 seconds, Keepalive Timeout = peer's Send Timeout (or 15 seconds if not communicated), Keepalive Interval = one-third to one-half of Keepalive Timeout, Initial Probe Timeout = 0.5 seconds, Number of Initial Probes = 4, Max Probe Timeout = 60 seconds.

ip, v6ops

protocol-element §1

REAP (REAchability Protocol) is the failure detection and locator pair exploration component of Shim6. It detects failures on the current address pair and explores alternative address pairs when a failure is detected.

ip, multipath, v6ops

protocol-element §5.2

The Sta (State) field in the Probe message is a 2-bit field with three legal values: 0 (Operational) — sender believes both sides can communicate; 1 (Exploring) — sender has not seen traffic from recipient; 2 (InboundOk) — sender sees packets from recipient but recipient may not yet see packets from sender.

ip, v6ops

security-consideration §8 SHOULD NOT

Attackers may spoof ICMP error messages, Router Discovery, and address assignment indications to confuse peers about which addresses are operational, potentially causing use of non-preferred addresses or denial of service. Unprotected indications SHOULD NOT be taken as proof of connectivity problems, but REAP performs its own reachability tests before switching address pairs.

ip, v6ops, security

security-consideration §8

The exploration phase is vulnerable to on-path attackers who can cause denial-of-service, move communications to less-preferred address pairs, or prevent exploration from completing. Off-path attackers cannot easily guess both the context tag and correct probe nonces. IPsec cannot protect exploration because it operates above the Shim6 layer.

ip, v6ops, security, ipsec

security-consideration §8

The exploration process can cause packet amplification in flooding attacks. Shim6 mitigates this by only creating contexts after many packets have been exchanged and by not supporting REAP during connection establishment.

ip, v6ops, security

security-consideration §8

The keepalive mechanism is vulnerable to spoofing: on-path attackers that know a Shim6 context tag can send spoofed Keepalives to suppress legitimate keepalives, forcing nodes into unnecessary exploration. Off-path attackers are deterred by 47-bit random context tags.

ip, v6ops, security

state-machine §6

REAP defines three states per Shim6 context: Operational (address pairs assumed working), Exploring (no traffic received from peer beyond Send Timeout), and InboundOK (traffic received from peer but peer may not be receiving from this node). Transitions are triggered by incoming/outgoing payload packets, Keepalive/Probe message reception, and timer expirations.

ip, v6ops

wire-format §5.1

The Keepalive message (Type=66) contains a 47-bit Receiver Context Tag, a 1-bit R field, a 7-bit Reserved1 field, a 32-bit Reserved2 field, and an optional Options field. It is a Shim6 control message with Next Header, Hdr Ext Len, and Checksum fields.

ip, v6ops

wire-format §5.3

The Keepalive Timeout Option (Type=10, Length=4) carries a 16-bit Keepalive Timeout value in seconds and a 16-bit Reserved field. It is sent in I2, I2bis, R2, or UPDATE messages to communicate the sender's preferred Keepalive Timeout to the peer.

ip, v6ops

wire-format §5.2

The Probe message (Type=67) contains a 47-bit Receiver Context Tag, a 4-bit Psent field (number of sent probes), a 4-bit Precvd field (number of received probes), a 2-bit Sta (State) field, and repeated sets of 128-bit Probe Source Address, 128-bit Probe Destination Address, 32-bit Probe Nonce, and 32-bit Probe Data fields.

ip, v6ops