#2920·metallb

NDP implementation is incomplete (Neighbor Unreachability Detection)

Author: totoCZCreated Jan 17, 2026Updated Sep 14, 2026
Labelsenhancement

Is your feature request related to a problem?

Standard hosts work such as:

01:26:41.989324 IP6 2a09:e206:c1:x> 2a09:e206:c1:ff00::2: ICMP6, neighbor solicitation, who has 2a09:e206:c1:ff00::2, length 32 01:26:41.989358 IP6 2a09:e206:c1:ff00::2 > 2a09:e206:c1:xICMP6, neighbor advertisement, tgt is 2a09:e206:c1:ff00::2, length 24

MetaLB does not respond to it.

" Unlike ARP, Neighbor Discovery detects half-link failures (using Neighbor Unreachability Detection) and avoids sending traffic to neighbors with which two-way connectivity is absent."

Kernel NDP proxy also implements it wrongly (its deprecated), but ndppd is correct.

The workflow with (what seems to be) a Juniper switch

  • try multicast/link-local
  • add host to table
  • try GUA detection after timer expires (30 min)
  • no reply on GUA -> drop neighbor from table, kill traffic
  • go back to 1)

So every 30 min traffic is dropped for a couple of seconds.

Working reply (link local):

01:27:08.000350 IP6 fe80::eef4:bbff:fed9:c2c4 > fe80::e230:f900:a682:9838: ICMP6, neighbor advertisement, tgt is 2a09:e206:c1:ff00:c::, length 32

Not working reply (GUA):

00:58:57.689847 IP6 2a09:e206:c1:x > 2a09:e206:c1:ff00:c::: ICMP6, neighbor solicitation, who has 2a09:e206:c1:ff00:c::, length 32 00:58:58.689997 IP6 2a09:e206:c1:x > 2a09:e206:c1:ff00:c::: ICMP6, neighbor solicitation, who has 2a09:e206:c1:ff00:c::, length 32 00:58:59.689903 IP6 2a09:e206:c1:x > 2a09:e206:c1:ff00:c::: ICMP6, neighbor solicitation, who has 2a09:e206:c1:ff00:c::, length 32

Describe the solution you'd like

Reply to GUA NDP with GUA.

Additional context

No response

I've read and agree with the following

  • I've checked all open and closed issues and my request is not there.
  • I've checked all open and closed pull requests and my request is not there.