RIOT-OS / RIOT

RIOT - The friendly OS for IoT
https://riot-os.org
GNU Lesser General Public License v2.1
4.91k stars 1.98k forks source link

Implement Neighbor Discovery Proxy (RFC 4389) #20420

Open benpicco opened 7 months ago

benpicco commented 7 months ago

Description

When operating a border router, we have to rely on requesting a prefix for the 6LoWPAN network via DHCPv6 IA_PD.

This is not always possible, it requires cooperation of both the upstream router (feature needs to be implemented) and the administrator (must be willing to enable the feature).

As an alternative, we can implement a neighbor discovery proxy. In this mode, we would operate like a bridge, all IPv6 packets received on one interface are sent out verbatim on all other interfaces (with proxy enabled), but with a new L2 header.

Some ICMPv6 messages need to be rewritten to exchange the L2 addresses contained within them. This affects:

Useful links

https://datatracker.ietf.org/doc/html/rfc4389

https://github.com/contiki-os/contiki/wiki/6LP-GW

https://people.kth.se/~maguire/DEGREE-PROJECT-REPORTS/111221-Luis_Maqueda-with-cover.pdf

chrysn commented 7 months ago

Thanks for engaging here. This will also help enhance the https://github.com/RIOT-OS/RIOT/pull/16840 story, because so far that relies on the OpenWRT router to actually have something to delegate.