DHCPv6 prefix delegation
Overview
This sample demonstrates IPv6 prefix delegation as specified in RFC 8415. It can be built in two roles:
Requesting router (default): a DHCPv6 client requests an IPv6 address (IA_NA) and a delegated prefix (IA_PD) on its upstream (WAN) interface. Each downstream (LAN) interface is then assigned a distinct
/64carved from the delegated prefix and advertised via Router Advertisements, so that hosts on the downstream links can auto-configure addresses (SLAAC).Delegating router / server (
overlay-server.conf): a DHCPv6 server hands out addresses from2001:db8:abcd::/64and delegates prefixes out of2001:db8:beef::/48, one/56per client. The two pools are deliberately disjoint: if a client was delegated the very subnet its own WAN address comes from, it would re-advertise that subnet on its LAN and two links would end up with the same prefix.
Network interfaces
Prefix delegation needs at least two links, so the requesting-router build brings up two network interfaces. On native_sim board these are two TAP interfaces:
zeth0– upstream (WAN), runs the DHCPv6 client (interface index 1),zeth1– downstream (LAN), where the delegated prefix is advertised (interface index 2).
The number of downstream links is bounded by
CONFIG_NET_DHCPV6_MAX_DOWNSTREAM; raise it (together with
CONFIG_NET_IF_MAX_IPV6_COUNT and the number of
zephyr,native-tap interfaces in boards/native_sim.overlay) to
delegate to more links.
The server build (overlay-server.conf) uses a single interface named
zeth: overlay-server.overlay, disables the downstream interface and
renames the remaining one, so that build attaches to zeth rather than
zeth0.
To give the TAP interfaces host-side connectivity, set them up with the
net-setup.sh script from the
net-tools project before
running, e.g. one instance as the server and another as the requesting
router. See README-dhcpv6-pd.md file in net-tools for details.
Building and Running
Requesting router (client):
west build -b native_sim samples/net/dhcpv6_pd
west build -t run
Delegating router (server):
west build -b native_sim samples/net/dhcpv6_pd -- \
-DEXTRA_CONF_FILE=overlay-server.conf \
-DEXTRA_DTC_OVERLAY_FILE=overlay-server.overlay
west build -t run
Requirements
The requesting-router downstream advertisement requires
CONFIG_NET_IPV6_ND_RA_TX and, for forwarding between the WAN and
LAN interfaces, CONFIG_NET_IPV6_FORWARDING.