Max Hosts in an IPv6 Subnet

ipipv6multicastprotocol-theorysubnet

When a interface takes an IPv6 address it does the DAD mechanism. A NS will be sent to the multicast address "solicited node multicast group address". If there is another interface in this multicast group it won't take this address.

The number of different solicited node multicast addresses is in my opinion (2^48)-1. So the max addresses of one subnet is (2^48)-1.

Is this correct?

Best Answer

According to RFC 4861, Neighbor Discovery for IP version 6 (IPv6), The Neighbor Solicitation message for Duplicate Address Detection is sent to the target address, not the solicited node multicast address. It is a reply in the case of a conflict that is multicast:

Neighbor Solicitation and Advertisement messages are also used for Duplicate Address Detection as specified by [ADDRCONF]. In particular, Duplicate Address Detection sends Neighbor Solicitation messages with an unspecified source address targeting its own "tentative" address. Such messages trigger nodes already using the address to respond with a multicast Neighbor Advertisement indicating that the address is in use.

In theory, the number of host addresses on a standard IPv6 /64 network is 2^64 (18,446,744,073,709,551,616). In practice, a LAN will break with even a small fraction of that many hosts, but that has to do with the LAN topology and protocol, not IPv6.

Some LAN protocols use 48-bit MAC addresses, so the theoretical maximum number of hosts on the LAN is 2^48 (281,474,976,710,656) hosts, but many of those MAC addresses cannot be used. Some LAN protocols use 64-bit MAC addresses, allowing for a theoretical maximum that matches the IPv6 theoretical maximum, but again, many of the 64-bit MAC addresses cannot be used. Some LAN protocols use other addressing, or no addressing at all.

Actually, if you look at how solicited node multicast addresses are created, they use the last 24 bits of the target unicast address, so there are 2^24 possible solicited node addresses. I'm not sure where you came up with 2^48, nor why you want to subtract one from that number. The idea of the solicited node address is not that it is unique, in fact the idea is that it is not unique because it is desirable that all addresses on a host interface resolve to the same solicited node multicast address, but you want to cut down the number of hosts that are interrupted. A broadcast will interrupt every host on a LAN, but the solicited node multicast address will interrupt far fewer hosts, possibly only the single target host.