动态路由选择就是路由器根据协议查找网络并更新路由选择表,动态路由选择的配置比使用静态或默认路由选择容易,但会占用更多的路由器 CPU 处理时间和网络带宽。在互联网中经常使用的路由选择协议有两种,即 IGP(Interior Gateway Protocol,内部网关协议)和 EGP(Exterior Gateway Protocol,外部网关协议)。IGP 用于在同一个 AS(Autonomous System,自治系统)中的路由器间交换路由选择信息,EGP 用于 AS 之间的通信。
AD(Administrative Distance,管理距离)用来衡量路由器已接收到的、来自相邻路由器的路由选择信息的可信度,管理距离值越低表示越优先考虑。如果路由器接收了两个对同一远程网络的更新信息,路由器会首先检查更新信息的 AD,如果被通告的路由中有一个的 AD 值比另一个的低,那么这个拥有较低 AD 值的路由将被放置在路由选择表中。如果被通告的到同一网络的两个路由具有相同的 AD,那么路由选择协议的度量值(如跳计数或链路的带宽)将被用作判断到达远程网络最佳路径的依据。带有最低度量值的、被通告的路由将被放置在路由选择表中。
如果某个网络与路由器是直接连接的,那么该路由器将一直使用这个接口连接这个网络。如果在路由器上配置了一个静态路由,则该路由器将确信这个路由要优于那些习得的路由。静态路由的管理距离是可以修改的,默认情况下 AD 值为 1。如下是一些默认的管理距离:
路由源 | 默认 AD |
---|---|
直连接口 | 0 |
静态路由 | 1 |
EIGRP | 90 |
IGRP | 100 |
OSPF | 110 |
RIP | 120 |
外部 EIGRP | 170 |
路由选择协议可以分为 3 大类,没有哪一种路由选择协议配置方式适用于所有情况,具体情况应具体分析。
协议类型 | 说明 |
---|---|
距离矢量 | 协议通过判断距离确定当前到达远程网络的最佳路径。 |
链路状态 | 又称最短路径优先协议,路由器将分别创建 3 个彼此独立的表。其中的一个表用来跟踪直接相连接的邻居,一个用来确定整个互联网络的拓扑结构,而另一个则用作路由选择表。 |
混合型 | 混合型协议将同时具有距离矢量和链路状态两种协议的特性。 |
这些协议的具体原理,可以去我之前写的 TCP/IP 博客合集中查看——TCP/IP 协议栈博客清单。
距离矢量路由选择算法发送完整的路由选择表内容到相邻的路由器,然后相邻的路由器将接收到的路由选择表项与它们原有的路由选择表合并,以完善自己的路由选择表。由于路由器接收到的更新信息只是相邻路由器对于远程网络的认知,路由器并不会自己查证这些内容,所以这一方式又被戏称为传闻路由。
距离矢量路由选择协议会在所有激活的接口上定期广播路由更新,以此跟踪互联网络中的任何改变。广播内容包括整个路由选择表。这一方案是可行的,只是需要占用一定的CPU处理资源和链路
带宽。但是,当某个网络瘫痪时,真正的问题就有可能会出现,特别是距离矢量路由选择协议的慢会聚,最终会导致不一致的路由选择表和路由环路。导致路由环路的原因可能是每台路由器不能同时或近乎同时地更新路由选择表。
如下是一些路由环路的解决方案:
RIP(Routing Information Protocol,路由信息协议)是一个纯粹的距离矢量路由选择协议,RIP 每隔 30 秒就将自己完整的路由选择表从所有激活的接口上送出。RIP 只将跳计数作为判断到达远程网络最佳路径的依据,并且在默认情况下允许的最大跳计数为 15,也就是说 16 跳就被认为是不可达的。在小型的网络应用中用 RIP 没问题,但对于那些配备有慢速 WAN 链接的大型网络或者是那些安装有大量路由器的网络,它的运行效率就很低了。
RIP 版本 1 只使用有类的路由选择,即网络中的所有设备都必须使用相同的子网掩码。这是因为RIP 版本 1 在其发送的更新数据中不携带子网掩码信息。RIP版本2提供了前缀路由选择信息,并可
以在路由更新中传送子网掩码信息。
RIP 只使用跳计数判定到达某个网络的最佳路径,如果 RIP 发现对于同一个远程网络存在多个具有相同跳计数的链路,则 RIP 将自动执行循环负载均衡,RIP可以对多达 6 个(默认为 4 个)等价链
路实现负载均衡。然而,当两条通往同一远程网络的链路具有不同的带宽,但是有相同的跳计数时,这种类型的路由度量将会导致问题。
设备 | 接口 | IP 地址 | 子网掩码 | 默认网关 |
---|---|---|---|---|
R1 | G0/1 | 172.30.10.1 | 255.255.255.0 | N/A |
S0/0/0 (DCE) | 10.1.1.1 | 255.255.255.252 | N/A | |
R2 | G0/0 | 209.165.201.1 | 255.255.255.0 | N/A |
S0/0/0 | 10.1.1.2 | 255.255.255.252 | N/A | |
S0/0/1 (DCE) | 10.2.2.2 | 255.255.255.252 | N/A | |
R3 | G0/1 | 172.30.30.1 | 255.255.255.0 | N/A |
S0/0/1 | 10.2.2.1 | 255.255.255.252 | N/A | |
S1 | N/A | VLAN 1 | N/A | N/A |
S3 | N/A | VLAN 1 | N/A | N/A |
PC-A | NIC | 172.30.10.3 | 255.255.255.0 | 172.30.10.1 |
PC-B | NIC | 209.165.201.2 | 255.255.255.0 | 209.165.201.1 |
PC-C | NIC | 172.30.30.3 | 255.255.255.0 | 172.30.30.1 |
在 R1 上,将 RIPv2 配置为路由协议并通告相应的网络。
R1(config)# router rip R1(config-router)# version 2 R1(config-router)# passive-interface g0/1 R1(config-router)# network 172.30.0.0 R1(config-router)# network 10.0.0.0
passive interface 命令会阻止指定接口的路由更新,此过程可避免 LAN 中产生不必要的路由流量,从其他接口发出的路由更新中仍将通告指定接口所属的网络。
在 R3 上配置 RIPv2,并使用 network 语句添加适当的网络和阻止 LAN 接口的路由更新。
R3(config)# router rip R3(config-router)# version 2 R3(config-router)# passive-interface g0/1 R3(config-router)# network 172.30.0.0 R3(config-router)# network 10.0.0.0
在 R2 上配置 RIPv2,并使用 network 语句添加适当的网络和阻止 LAN 接口的路由更新。
R2(config)# router rip R2(config-router)# version 2 R3(config-router)# passive-interface g0/0 R2(config-router)# network 10.0.0.0 R2(config-router)# network 209.165.201.0
分别查看 3 台路由器的路由表,可以看到路由表已经学习到了路由条目。
几台 PC 之间可以互相 Ping 通。
可以使用 no auto-summary 命令关闭 RIPv2 中的自动总结。在所有路由器上禁用自动总结。路由器将不会在主网边界处总结路由。
R1(config)# router rip R1(config-router)# no auto-summary
发出 clear ip route * 命令将路由表清空,清除路由表后需要一定时间来聚合路由表。
R1# clear ip route *
如果不把 RIPv2 的自动总结关了,则路由的项目会自动地进行路由汇总,也就会返回超网地址。此时超网地址就会导致路由聚合的网络中的子网数据丢失,会导致本主机 ping 对方网络中的子网无法ping通,所以要关掉。
《思科网络技术学院教程(第6版):路由和交换基础》,[加] Bob Vachon,[美] Allan Johnson 著,思科系统公司 译,人民邮电出版社
《CCNA 学习指南(第 7 版)》,[美] Todd Lammle 著,袁国忠 徐宏 译,人民邮电出版社