rfc-6130

Mobile Ad Hoc Network (MANET) Neighborhood Discovery Protocol (NHDP)

T. Clausen, C. Dearlove, J. Dean
date2011-04 streamIETF areartg wgmanet statusPROPOSED STANDARD pages88 canonicalhttps://www.rfc-editor.org/rfc/rfc6130 doi10.17487/RFC6130 errataview
This document describes a 1-hop and symmetric 2-hop neighborhood discovery protocol (NHDP) for mobile ad hoc networks (MANETs). [STANDARDS-TRACK]

updated by

Extracted elements (29)

design-rationale §4.4

Link quality in NHDP is defined as a dimensionless 0–1 admittance value to exclude marginal links from use, not as a link metric or substitute for one. This design keeps link quality purely local, avoiding the need to signal it and preserving interoperability between heterogeneous implementations.

design-rationale §1.1

Symmetric 2-hop neighborhood information is maintained specifically to enable MANET routing protocols to employ relay set reductions (e.g., MPR selection) for efficient network-wide flooding, as described in RFC 3626 and RFC 5449. This is the primary motivation for NHDP's 2-hop discovery.

routing, mobility

design-rationale §6.2

The Removed Interface Address Set tracks recently reassigned local interface addresses for I_HOLD_TIME to prevent a formerly local address from being incorrectly recorded as a symmetric 2-hop neighbor's address when it is reused by a neighboring router.

interoperability-note §4.4

Link quality information is strictly local and never carried in signaling. Routers using different, the same, or no link quality algorithms can fully interoperate; link quality is a local admittance policy and is not equivalent to a link metric.

interoperability-note §5.1

NHDP packets are sent using the 'manet' protocol number or well-known UDP port number from RFC 5498, and MAY use the link-local multicast address LL-MANET-Routers. All packets and messages MUST conform to RFC 5444 format.

multicast

normative-requirement §10.1 MUST

A HELLO message MUST contain exactly one VALIDITY_TIME Message TLV (per RFC 5497) representing H_HOLD_TIME for the transmitting MANET interface. The zero and infinite time representations defined in RFC 5497 MUST NOT be used.

normative-requirement §12.1 MUST

A received HELLO message is invalid and MUST be discarded if it lacks exactly one VALIDITY_TIME Message TLV, contains conflicting TLV values on the same address object, contains an address matching the receiver's own current or recently used addresses, or has out-of-range LOCAL_IF / LINK_STATUS / OTHER_NEIGHB values.

normative-requirement §10.1.1 MUST

All network addresses in the router's Local Interface Set MUST be included as address objects in every generated HELLO message (with a narrow exception allowing omission of a single-address interface's address when it is the IP datagram source). Each such address MUST be associated with a LOCAL_IF Address Block TLV.

normative-requirement §4.1 MUST

Each interface network address MUST be unique to the router and MUST NOT be used by any other router. If the address represents a prefix range, that entire range MUST NOT overlap with any other router's interface address ranges.

normative-requirement §5.3.2 MUST

H_HOLD_TIME MUST be >= REFRESH_INTERVAL. If HELLO messages can be lost, both L_HOLD_TIME and H_HOLD_TIME SHOULD be significantly greater than REFRESH_INTERVAL to prevent premature expiration of neighbor information.

normative-requirement §11.2.1 SHOULD

HELLO message jitter SHOULD be used as described in RFC 5148 on data link layers subject to collision-based packet loss. Two successive HELLO messages on the same MANET interface MUST be separated by at least HELLO_MIN_INTERVAL.

normative-requirement §10 MUST NOT

HELLO messages MUST NOT be forwarded. A msg-hop-limit field, if present, MUST have value 1; a msg-hop-count field, if present, MUST have value 0.

normative-requirement §5.5 MUST

If HELLO_INTERVAL increases, the next HELLO message on that interface MUST still be generated according to the previous shorter HELLO_INTERVAL to honor previously advertised timing promises until they expire.

normative-requirement §4.4 MUST

If link quality is not updated (i.e., a static deployment), L_quality MUST be set to indicate an always-usable quality link (>= HYST_ACCEPT). Modification of link quality is OPTIONAL.

normative-requirement §12 MUST

On receiving a HELLO message, the router MUST check for invalidity conditions defined in Section 12.1 and discard invalid messages. For valid messages, the router MUST update its Interface and Neighbor Information Bases in the exact order specified in Sections 12.3–12.6.

normative-requirement §4.3.2 MUST

Within every time interval of length REFRESH_INTERVAL on a given MANET interface, sent HELLO messages MUST collectively include all relevant information in the corresponding Link Set and Neighbor Information Base. The router MUST consider the full interval ending at the latest possible next HELLO transmission, not just past transmissions.

protocol-element §7.2

A 2-Hop Tuple (N2_neighbor_iface_addr_list, N2_2hop_addr, N2_time) records a single network address of a symmetric 2-hop neighbor reachable via a named symmetric 1-hop neighbor interface. The 2-Hop Set is populated from received HELLO messages advertising SYMMETRIC links.

routing, mobility

protocol-element §4.3

A HELLO message is the sole signaling mechanism in NHDP. Each router generates HELLO messages independently on each MANET interface to advertise its own addresses, report 1-hop link status, and enable discovery of symmetric 2-hop neighbors.

routing, mobility

protocol-element §7.1

A Link Tuple (L_neighbor_iface_addr_list, L_HEARD_time, L_SYM_time, L_quality, L_pending, L_lost, L_time) records a single link from a 1-hop neighbor's MANET interface. L_status is derived from these fields and takes values PENDING, HEARD, SYMMETRIC, or LOST.

routing, mobility

protocol-element §8.2

A Lost Neighbor Tuple (NL_neighbor_addr, NL_time) records a network address of a router that recently was a symmetric 1-hop neighbor but is now lost. This enables HELLO messages to advertise the loss, accelerating removal from recipients' 2-Hop Sets.

routing, mobility

protocol-element §8.1

A Neighbor Tuple (N_neighbor_addr_list, N_symmetric) aggregates all known network addresses of a single 1-hop neighbor and tracks whether any link to it is currently symmetric. Neighbor Tuples are removed only when all corresponding Link Tuples expire, not by independent timers.

routing, mobility

registry §18.3

This document creates HELLO-message-type-specific TLV Type registries (for both Message TLVs and Address Block TLVs) under Expert Review, and registers the LOCAL_IF, LINK_STATUS, and OTHER_NEIGHB Address Block TLV types.

registry

registry §18.5

This document creates value registries for LOCAL_IF (THIS_IF=0, OTHER_IF=1), LINK_STATUS (LOST=0, SYMMETRIC=1, HEARD=2), and OTHER_NEIGHB (LOST=0, SYMMETRIC=1) Address Block TLVs, all under Expert Review policy.

registry

registry §18.2

This document registers the HELLO message type in the MANET Message Types registry (RFC 5444 framework) via IANA, with Expert Review as the registration policy.

registry

security-consideration §17

NHDP is vulnerable to attacks via forged or replayed HELLO messages, including topology poisoning (advertising false links or neighbors), black-hole and wormhole attacks, and resource exhaustion DoS. Without additional security mechanisms, routers cannot distinguish forged from authentic HELLO messages.

security

security-consideration §17.2

NHDP's Section 12.1 invalid-message checks provide a first line of defense against malformed messages. Authentication, integrity protection, and confidentiality SHOULD be provided by an external security mechanism (e.g., a MANET cryptographic protocol); NHDP provides an extension point allowing security protocols to reject unverifiable HELLO messages before NHDP processing.

security

state-machine §7.1

Link status (L_status) has four states: PENDING (candidate link not yet established), HEARD (one-directional), SYMMETRIC (bi-directional confirmed), and LOST (expired or below quality threshold). Transitions are triggered by HELLO reception, timer expiry (L_HEARD_time, L_SYM_time), and link quality changes.

routing, mobility

wire-format §10.1.1

The LINK_STATUS Address Block TLV (Value length = 1 octet; values LOST=0, SYMMETRIC=1, HEARD=2) reports the link status to the transmitting interface for a neighbor's address. The OTHER_NEIGHB TLV (Value length = 1 octet; values LOST=0, SYMMETRIC=1) reports addresses of symmetric 1-hop neighbors or recently lost neighbors.

wire-format §10.1.1

The LOCAL_IF Address Block TLV (Value length = 1 octet) marks each local interface address as THIS_IF (the transmitting MANET interface) or OTHER_IF (another interface of the same router). It MUST be associated with every local address object in HELLO messages.