I am a little confused by the following 2 RFCs relating to IPv6:
RFC 4862 states:
The autoconfiguration process specified in this document applies only to hosts and not routers. Since host autoconfiguration uses information advertised by routers, routers will need to be configured by some other means.
RFC 7084 lists one of its WAN-Side Configuration requirements for address assignment as:
WAA-1: The IPv6 CE router MUST support Stateless Address Autoconfiguration (SLAAC) [RFC4862].
Is there a contradiction here?
Should a router be able to autoconfigure an IPv6 address for its WAN interface?
Why does RFC 4862 say
Since host autoconfiguration uses information advertised by routers, routers will need to be configured by some other means.
If I am using a router to connect my LAN to an ISP for example, isn't there a router in the ISP's network which is talking to my router?
I would have thought it was perfectly reasonable to have 2 (or more) routers chained together. In which case, why not use SLAAC on the second router's WAN interface?
Maybe the issue comes down to the artificial distinction between hosts and routers? From RFC 4862:
node - a device that implements IP.
router - a node that forwards IP packets not explicitly addressed to itself.
host - any node that is not a router.
But can't a host (i.e. a machine that is hosting servers or applications) also have a routing table, and function as a router? And we are effectively chaining 2 routers together again.
Edit: some extra information I later discovered ...
The Linux kernel handles SLAAC, and it follows RFC 4862 closely. Right down to the distinction between hosts and routers. See the kernel documentation on ip-sysctl:
- HOST behaviour is assumed. Which means Router Solicitations will be sent, and Router Advertisements will used for address autoconfiguration.
- Only if forwarding is enabled (
/proc/sys/net/ipv6/conf/all/forwarding
), the device is considered to be a ROUTER. Which means no Router Solicitations will be sent, and Router Advertisements will be ignored.
Turns out this distinction goes way back, pre-IPv6. See the parameter /proc/sys/net/ipv4/ip_forward
:
This variable is special, its change resets all configuration parameters to their default state (RFC1122 for hosts, RFC1812 for routers)