路由器之间的发现和通信

路由器之间的发现和通信

我在一个由 4 个 OpenWrt 路由器组成的环境中工作,每个路由器都通过 Wi-Fi 为多个客户端提供服务。每个路由器都为客户端提供互联网访问。

对于这种情况我有 3 个问题,如果你们能回答其中任何一个问题我将不胜感激(你可以只回答 1 个,我仍然会非常感激):

1)当我在路由器内部时(通过 ssh 或其他机制),我可以使用什么命令或包来发现其他路由器的 IP 地址和主机名?阿瓦希能帮我解决一下吗?还是我需要事先知道其他路由器的 IP?如果我在这个环境中添加一个新路由器,我是否必须手动配置每个路由器才能识别新路由器?

2)考虑到我正在收集每个路由器的延迟和数据包丢失测量值,当客户端无法访问互联网服务时,我如何知道每个路由器/网络是否拥塞,或者我只是无法访问互联网?因为在这两种情况下,ping 命令很可能不起作用,数据包也会被丢弃。

3)考虑到路由器将通过高速无线链路连接,应该使用什么协议或软件以便它们能够相互通信,例如相互 ping(考虑到它们已经相互认识 - 问题 1)?

笔记:这些问题并非特定于 OpenWrt 路由器。

[编辑]每个路由器都位于单独的房间,因此,在每个房间中都会创建一个网络,如 10.0.1.0/24,在下一个房间中则会创建一个网络 10.0.2.0/24,依此类推。

每个路由器都包含一张 SIM 卡,可连接到蜂窝网络,从而为房间的客户提供互联网。因此,路由器没有共同的子网,每个路由器都与不同的网络相关联。

此外,我还必须测量路由器的延迟和丢包率,因为我将设置一个阈值,一旦超过该阈值,路由器就必须将部分流量转移到另一个负载较小的路由器。不过,我不确定这两个指标是否足以测量路由器中的链路负载。

因此,OpenWrt 路由器之间(每 1 秒)共享的信息是吞吐量、延迟、丢包和 CPU 负载。这样它们就能知道彼此的负载。要做到这一点,每个路由器都必须手动或自动知道环境中有哪些路由器(因此称为发现),这样就不可能有人试图充当其中一个路由器(MiTM)。

答案1

您没有描述您的拓扑,但我假设所有路由器都有一个将它们连接到您的 ISP 路由器的公共子网。

1)当我在路由器内部(通过 ssh 或其他机制)时,我可以使用什么命令或包来发现其他路由器的 IP 地址和主机名?

OpenWrt 路由器不运行 OSPF 等路由协议,因此没有发现机制。你只需要知道你有什么。其他运行路由协议的路由器会构建其对等路由器的表,你可以检查这些表。

2)考虑到我正在收集每个路由器的延迟和数据包丢失测量数据,当客户端无法访问互联网服务时,我如何知道每个路由器/网络是否拥塞或者我是否无法访问互联网(ISP?

路由器可以运行 SNMP,因此您可以使用单独的监控系统(服务器)收集基本统计数据。这样,您就可以确定丢包情况。延迟必须从终端主机而不是路由器测量。

3)考虑到路由器将通过高速无线链路连接,应该使用什么协议或软件以便它们能够相互通信,例如相互 ping?

路由器使用路由协议(OSPF、BGP、EIGRP)向它们知道的网络通告路由。但对于 OpenWrt,我不确定你认为它们之间会共享什么样的信息。

编辑

根据您的编辑,您似乎希望路由器在负载变化时在它们之间共享负载和传输客户端。

不幸的是,这很难做到。首先,Wi-fi 客户端决定何时从一个接入点(路由器)漫游到另一个接入点,而不是接入点。因此,您只能听天由命。其次,OpenWrt 没有共享操作参数并根据这些参数更改行为的功能。即使是基于控制器的商业 Wi-fi 系统也只能部分成功。在这种情况下,有一个中央控制器监控所有接入点并控制它们的操作。

相关内容