在batman-adv网状网络中配置多个网关

3
我已经能够使用在几个树莓派上运行的batman-adv设置无线 mesh 网络。这些树莓派可以在 mesh 上检测到彼此,相互通信,并共享 Internet 连接(如果网络中的任何一个 Pi 充当网关)。
我面临的问题是,如果网络中存在多个网关,则客户端(通过网关接收 Internet 连接的设备)永远不会切换到从其它网关获取 Internet 连接,即使路由算法检测到它们与另一个网关有更好的连接。
每个网关都运行 DHCP 服务器,为通过它们访问 Internet 的客户端分配 IP 地址。我使用的 DHCP 服务器是 dnsmasq。
期望的行为是:
1. 客户端向能提供更好连接的网关发送 DHCP 请求,并结束与当前 DHCP 服务器的租约;或者
2. 客户端保留从 DHCP 服务器分配的 IP,并(神奇地?)开始通过能提供更好连接的网关访问 Internet。
但是,这两种情况都没有发生。如果由于某种原因为客户端提供 Internet 的网关断开连接,客户端将不会尝试创建新连接,直到 DHCP 租约超时。然而,这与此软件包的维基页面所声称的相矛盾:https://www.open-mesh.org/projects/batman-adv/wiki/Gateways 请指导如何配置此 mesh 网络,以使其中一个预期行为发生。
1个回答

3

这正是IP层预期的行为。

如果DHCP服务器提供默认网关,则该网关将保持不变,直到租约过期。由于设计限制,DHCP客户端无法确定默认网关是否已失效。

DHCP是一种轮询协议;在DHCP客户端请求更新之前,DHCP服务器无法主动更改租约参数。问题链接中的说明指出(强调已添加):

为了通知已经拥有有效DHCP租约的客户端关于网关更改的信息(与网关之间的链路质量可能下降或者客户端正在漫游),batman-adv也会检查入站的DHCP更新数据包。如果它们的目标不是当前选定的网关并且低于某个TQ阈值(默认为50),则不会转发DHCP更新数据包,从而迫使客户端从连接更好的网关请求新的DHCP租约。

请注意,更改发生在通过检查入站更新数据包时。由于DHCP的性质,您必须等待租约更新请求来更新网关。

可以设置较低的租约时间以增加轮询率,但如果需要对故障网关进行实时反应,您需要使用实际的路由协议。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接