网络工程 · 3 10 月, 2022 0

递归路由Recursive Routing-写入不可达路由后路由表内桥接

背景

你可能不知道标题在说什么。巧了,我也不知道。还是上图吧。
(本人终于在2022/10/7通过客服邮件知道这玩意儿叫Recursive routing,即“递归路由”)
网络构筑中有时会出现如下构造:

host1--(1.1)R1(2.1)--(2.2)R2(3.1)--(3.2)R3(4.1)--host2

其中R为路由器,(数字)表示IP地址的最后16位。
如果想让R1能够ping通(4.1),一般需要在R1中添加到达R3的路由,将直连的R2设置为下一跳,即

ip route 192.168.4.0/24 192.168.2.2

然而如果不是手动指定,R1通过动态路由协议获得的信息有可能是这样的:

192.168.4.0/24 via 192.168.3.2

然而对于R1来说192.168.3.2这个地址是不可达的。这种情况往往发生于R2向R1传递了自己的路由表,且没有将下一跳地址改成与R1直连的地址的情况下。

表内桥接(递归路由)

除了修改诸如iBGP的行为方式(添加next-hop-self之类的命令)外,似乎也可以通过向R1追加能够到达192.168.3.0/24的路由信息解决问题。该追加行为可以是手动,也可以通过动态路由协议实施。

向R1追加路由,下一跳为R2:

ip route 192.168.3.0/24 192.168.2.2

此时路由表变为:

192.168.4.0/24 via 192.168.3.2
192.168.3.0/24 via 192.168.2.2

不管优先级如何,在R1访问192.168.4.0/24时会先尝试联系192.168.3.2,发现不可达后继续查表,得到去往192.168.3.0/24的下一跳为直连的192.168.2.2。由此可以实现对192.168.4.0/24的访问。