我在来自不同制造商的路由器/接入点和 WiFi 范围扩展器中遇到了下述问题的多种变体。
- 所有设备都是无线的。
- LAN/WLAN 由多个通用路由器/交换机/接入点设备或 WLAN 扩展器组成,它们都使用同一个 SSID。这些设备来自 NETGEAR 和 TP-Link 等常见制造商。
- 仅一个设备充当互联网路由器。
- 只有一个 DHCP 服务器。
- 接入点-A和接入点-B通过有线局域网连接。
以下序列描述了该场景:
- 客户端设备-1连接到接入点-A
- 客户端设备-2还连接到接入点-A
- 应用客户端设备-2正在与客户端设备-1,通常使用TCP。
- 客户端设备-2在空间中移动,以便切换到接入点-B。
- 应用程序之间的通信停止(失败)。
- 网络跟踪开启客户端设备-1显示来自的(TCP)数据包客户端设备-2并向反方向发送数据包,但这些数据包似乎无法到达客户端设备-2。
- 客户端设备-2继续保持良好的互联网接入(实际上是通过路由器接入的接入点-A)。
对我来说,这感觉就像是接入点-A没有注意到客户端设备-2不再通过其自身提供,即使来自客户端设备-2通过其有线接口到达。
如果客户端设备-2最初连接到接入点-B那么就没有问题了。
除了垃圾路由器/接入点固件之外,任何有关问题原因的建议都将受到欢迎。
使用 Ubiquiti 的 UniFi 等质量管理产品似乎从未出现过此类问题。
答案1
这是因为 802.11 规范存在缺陷。具体来说,无线扩展器无法接收除 MAC 地址数据包之外的任何其他数据包。
简短的摘要:
客户端 1 仍然认为客户端 2 具有相同的 MAC 地址,但当客户端 2 移动到虚拟扩展器后面时,其面向客户端 1 的 MAC 地址会发生变化。因此,客户端 1 ARP 表包含不正确的信息。
这是客户端位于同一 AP 下且另一个客户端位于无线扩展器后面时的数据包流示例。
不同站点的MAC地址为:
客户端 1:00:11:22:33:44:55 客户端 2:00:11:22:33:44:66 扩展器:00:11:22:33:55:66
同一 AP 下的客户端
- 客户端 1 向客户端 2 发送数据包。客户端 1 已使用 ARP 解析客户端 2 的地址。数据包源 MAC 为 00:11:22:33:44:55,目标为 00:11:22:33:44:66
- 客户端 2 发送响应。已使用 ARP 解析目标 MAC。数据包源 MAC 为 00:11:22:33:44:66,目标为 00:11:22:33:44:55。
客户端 2 在无线扩展器后面
在这种情况下,无线扩展器执行 MAC 地址转换,因为否则它无法将数据包中继到客户端 2。
- 客户端 1 向客户端 2 发送数据包。该地址先前解析为 00:11:22:33:44:66,因此客户端 1 尝试向该 MAC 发送数据包。但是,当前 AP 中没有任何设备可以识别该 MAC 地址,因此发送失败。
- 客户端 1 最终尝试使用 ARP 解析客户端 2 的 MAC 地址。无线扩展器现在可以响应“客户端 2 的 MAC 地址是 00:11:22:33:55:66 (扩展器 MAC 地址)”。
- 客户端 1 将数据包发送到无线扩展器 MAC 地址,然后将数据包转发给客户端 2。
我不知道这个问题该如何解决。