With Windows DHCP server I can have two servers serving a network's scope so that if one fails the other picks up the slack. With DHCPv4 there are two options for doing this, the first is to set up a fail over relationship, the other is to set the start and end of the scope on each of the servers so they don't overlap.
I'm trying to understand how this works with DHCPv6. When I set up a scope with v6 there is no way to set a start and end range and there is no way to set up a failover relationship. So my question is how is it that two servers prevent the situation where the same IP address is allocated to two different clients one by each of the two servers?
Assign different scopes to each DHCP server, each being its own /64. Say for example
2001:db8:8721:d001::/64
and2001:db8:8721:d002::/64
. Overlap is impossible which each has their own space out of your address plan.There is no choice in size because subnets are one size fits all /64. Plenty of /64s exist to justify one per DHCP server, it is a natural use case for a subnet. Or even merely wishing humans can determine which DHCPv6 server by their assigned addresses is a reasonable use case for each to have a /64.
A /64 is practically unlimited. The odds of randomly picking the same address is miniscule. Not that this remote chance matters when they use separate nets.
And as final protection against brokenness, IP hosts are supposed to do duplicate address detection on their IPs. At worst this prevents duplicate addresses from existing for long, at best a smart DHCPv6 client will send a decline to the server.
Apparently Windows DHCPv6 server does not implement failover. No shortage of IPv6 addresses is one reason to not implement this feature.