I'm building a mesh network. All nodes have an "AP-level" router/AP [as we call it to distinguish it from the "MESH-level" router/AP] that takes care of handling client connections via a traditional wifi network and they all have the same config. They all create their own 172.16.xxx.yyy subnet and their DHCP assign addresses to clients spanning from 172.16.1.1 to 172.16.255.254 [that's acceptable right?]. openwrt takes care of randomizing the IPs based on the client's MAC address, therefore equally distributing client IPs across the subnet.
Now - on nodes physically nearby - if a wifi client roams [meaning it doesn't fully loose connection to one node before switching to the other one] to a new node, it does not request a new DHCP lease, but simply carries on with the old address it was using on the previous node, without checking whether the new node already has that IP assigned to another device. Centralized DHCP servers are not a option here. This is the question:
Since our DHCP pool includes more than a milion IPs and no more than 30 devices will ever be connected simultaneously to a single node, how safe is this setup, in terms of avoiding IP collisions?
This is my logic:
If I understand DHCP dynamics correctly, after, over the years, one node will see an IP collision [as the MAC addresses will convert to the same IP] [let's say another device gets my phone's IP while my phone is not connected to that node]
Case 1] my phone reconnects to the same node from scratch [not roaming from another AP] and gets another IP --> no problem
Case 2] my phone connects to another node on the network at the same time --> no problem
Case 3] my phone connects to another node on the network at the same time, gets its usual IP [since all nodes calculate IPs with the same algorithm, at least I assume that's the case] that happens to be nearby the first node [not that likely] and then roams to that first node --> conflict
Odds of case 3 happening: in order for a collision to occur and cause an actual conflict, both devices must be connected at the same time on the same node. Any other case creates no problem as time displacement or spacial [node] displacement takes care of that for us.
Let's say no more than 30 clients will be connected to the same node at the same time. Now, since all of their IPs will be different, as their IPs will not be random, but the DHCP server will have taken care not to have any two devices share the same IP, this is NOT a birthday paradox case, as those 30 IPs won't be unrelated events.
Therefore there will be 30 cases out of one milion where the roaming phone's IP will collide with an existing one, a 0.003% chance of happening, or a 1 in 33k+ roaming events.
Is this logic and this math correct or am I not considering some major factor at play here? 10.xxx.yyy.zzz subnets are not an option here as they are used by the meshing layer and we don't want clients sharing that subnet.
Thank you and sorry for the very specific question, but this is fundamentally important for us.