我正在构建一个网状网络。所有节点都有一个“AP 级”路由器/AP(我们这样称呼它以区别于“MESH 级”路由器/AP),负责通过传统 wifi 网络处理客户端连接,并且它们都具有相同的配置。它们都创建自己的 172.16.xxx.yyy 子网,它们的 DHCP 为从 172.16.1.1 到 172.16.255.254 的客户端分配地址(这可以接受吧?)。openwrt 负责根据客户端的 MAC 地址随机化 IP,从而在子网中均匀分配客户端 IP。
现在 - 在物理上邻近的节点上 - 如果 wifi 客户端漫游 [意味着它在切换到另一个节点之前没有完全断开与一个节点的连接] 到新节点,它不会请求新的 DHCP 租约,而只是继续使用它在前一个节点上使用的旧地址,而不检查新节点是否已将该 IP 分配给另一个设备。集中式 DHCP 服务器在这里不是一种选择。这是问题:
由于我们的 DHCP 池包含超过一百万个 IP,并且不会有超过 30 个设备同时连接到单个节点,那么在避免 IP 冲突方面,这种设置有多安全?
这是我的逻辑:
如果我正确理解了 DHCP 动态,那么经过多年的发展,一个节点将会发生 IP 冲突 [因为 MAC 地址将转换为相同的 IP] [假设另一台设备获取了我手机的 IP,而我的手机未连接到该节点]
情况1] 我的手机从头开始重新连接到同一个节点 [不是从另一个 AP 漫游] 并获取另一个 IP -->没问题
案例 2] 我的手机同时连接到网络上的另一个节点 -->没问题
案例 3] 我的手机同时连接到网络上的另一个节点,获取其常用 IP [因为所有节点都使用相同的算法计算 IP,至少我认为是这样] 恰好位于第一个节点附近 [不太可能] 然后漫游到第一个节点 -->冲突
情况 3 发生的几率:为了发生碰撞并导致实际冲突,两个设备必须同时连接到同一个节点。任何其他情况都不会造成问题,因为时间位移或空间 [节点] 位移会为我们解决这个问题。
假设同时连接到同一节点的客户端不超过 30 个。现在,由于所有客户端的 IP 都不同,因为它们的 IP 不是随机的,但 DHCP 服务器会注意不让任何两个设备共享同一个 IP,因此这不是生日悖论的情况,因为这 30 个 IP 不是无关事件。
因此,每百万次漫游手机的 IP 与现有 IP 发生冲突的情况中,有 30 次会发生,发生的概率为 0.003%,或者说每 33,000 次漫游事件中就有 1 次发生。
这个逻辑和数学正确吗,还是我没有考虑到这里起作用的一些主要因素?10.xxx.yyy.zzz 子网在这里不是一个选项,因为它们被网格层使用,我们不希望客户端共享该子网。
谢谢您,很抱歉问题太具体,但这对我们来说至关重要。