ODR,英文全称On Demand Routing,中文意思就是按需路由,是一种在基本中心辐射网络中共享路由的非常简单的方法。

像这样的拓扑将有一个集线器路由器,它也可能运行动态路由协议,还将有一个或多个分支。

分支路由器也被定义为末节路由器,这意味着没有其他路由器连接到它们,但是,它们可能有多个连接的网络。

分支直接连接到集线器,这可能是直接连接,也可能是隧道连接。

为什么要使用 ODR?

它比在任何地方使用静态路由更简单、更少的开销,它仍然是动态的。

它也比配置完整的动态路由协议更简单,您需要考虑汇总,并且可能需要路由器上的其他资源,如此看来ODR适用于低规格路由器。

ODR是如何工作的?

ODR 依赖于 CDP,CDP,英文全称:Cisco Discovery Protocol,中文意思就是思科发现协议,当集线器路由器发现带有 CDP 的分支路由器时,CDP 将共享本地连接的网络。

请注意,这仅在分支路由器未运行任何其他路由协议时才有效,也仅适用于 IP 前缀(不是像 BGP 这样的附加地址族可以做的)。

集线器路由器将学习到的路由安装到其本地路由表中,集线器只会向节点发送默认路由。

在集线器上,ODR 学习到的路由可能会重新分配到其他路由协议中。

配置

ODR 的配置 极其简单,首先确保 CDP 已启用,它默认开启。

在集线器上,只需像任何其他路由协议一样配置 ODR 路由过程。

router odr

这就是全部!

现在,我们开始从节点学习路由,节点将从集线器学习默认路由。

Hub#show ip route odr
o 10.1.0.0/24 [160/1] via 192.168.1.2, 00:00:49, GigabitEthernet0/1
o 10.2.0.0/24 [160/1] via 192.168.2.2, 00:00:06, GigabitEthernet0/2
o 10.3.0.0/24 [160/1] via 192.168.3.2, 00:00:40, GigabitEthernet0/3

如果我们想过滤路由,我们可以使用两种方法,这两个都在集线器路由器上。

第一个,就是在选定的接口上禁用 CDP,这将阻止 ODR 在集线器和选定路由器之间运行。

第二个,就是设置访问控制列表ACL,首先定义一个包含要接收的路由的访问列表:

access-list 10 deny 10.3.0.0 0.0.0.255
access-list 10 permit 10.0.0.0 0.255.255.255

接下来,在 ODR 路由过程下,配置一个分发列表,使用 ACL 来限制传入路由:

router odr
distribute-list 10 in

这些更改需要很长时间才能生效,更改 CDP 计时器(默认为 60 秒)可能有助于改善这一点,但大多数情况下,我认为这是为了简单起见的权衡。