我无法为这种情况找出一个好的策略。
每个客户端有一个路由器,所有路由器都在同一个网络中。每个路由器都可以连接到不同网络中的外部路由器,但一次只能连接一个(这是物理限制,因此我们可以认为每个路由器中都有一个开关,可以每 5 秒更改一次,但是它们总是同步的,以确保只有一个关闭)。
------------
| router X | 10.0.0.0/24
------------
|
____________________|_________________
| | |
| | |
/ off switch1 | on switch2 / off switchN
| | |
| | |
------------ ------------ ------------
| router 1 |-------| router 2 |-----| router N | 20.0.0.0/24
------------ ------------ ------------
| | |
| | |
------------ ------------ ------------
| client a | | client b | | client N |
------------ ------------ ------------
router X假设只有一个关闭的开关,客户端如何能够发送/接收数据?
到目前为止,我的想法是:
- 动态更改客户端的网关,即当 switch2 为 ON 时,gw for
client a和client Nwill berouter 1,此外,router 1将router N作为第 2 层交换机运行。
这里的问题是客户依赖于他们收到新 gw 通知的想法,这可能最终会丢失数据、非同步行为以及它是动态设计的想法。
- 虚拟网关。所有客户端都具有相同的虚拟网关,因此路由器必须相互协商(基于 ON 开关)才能知道哪个是主网关(真正的网关)。
我见过的最相似的想法是 VRRP、CARP 等协议,但它们略有不同,我不需要广告就可以知道主服务器是否还活着,因为限制在路由器之外,此外,客户端没有连接到同一个路由器,所以从站仍然必须工作。然而,这是我最接近“虚拟网关”概念的想法。
- NAT。每个客户端的每个路由器都会修改数据包并将它们传递给网关。
这里的限制是速度,我更愿意避免每个路由器都必须修改数据的想法。
还有其他想法或建议吗?
谢谢,