对于不熟悉路由的人来说,思科路由器最吸引人的地方在于,他们可以通过路由协议、手动配置和其他各种方法来选择最佳路由。
在 Cisco 路由器中创建和维护路由表涉及三个过程:
1. 各种路由过程实际上运行网络(或路由)协议,例如增强型内部网关路由协议 (EIGRP)、边界网关协议 (BGP)、中间系统到中间系统 (IS-IS) 和开放最短路径优先 (OSPF)。
2.路由表本身从路由进程接收信息,并响应转发进程的信息请求。
3. 转发过程需要路由表中的信息来做出数据包转发决策。
构建路由表时的主要考虑因素
1. 管理距离 - 这是衡量路由源可信度的标准。如果路由器从多个路由协议中获悉目的地,则会比较管理距离,并分配具有较低管理距离的路由。换句话说,这是衡量路由源可信度的标准。
2. 权重 - 如果需要通过同一目的地的多条路径,则路由协议会使用权重来计算通过给定目的地的最佳路径。每个路由协议使用不同的度量。
前缀长度
当每个路由进程收到更新和其他信息时,它会选择到达任何给定目的地的最佳路径,并尝试将该路径安装到路由表中。例如,如果 EIGRP 获悉一条通往 10.1.1.0/24 的路径,并确定这条特定路径是到达该目的地的最佳 EIGRP 路径,它将尝试将获悉的路径安装到路由表中。
路由器根据相关路由的管理距离决定是否安装路由过程提供的路由。如果该路径到目的地的管理距离最短(与路由表中的其他路由相比),则将该路径安装在路由表中。如果该路由不是具有最佳管理距离的路由,则拒绝该路由。
为了更好地理解这一点,我们来看一个例子。假设一台路由器运行了四个路由进程:EIGRP、OSPF、RIP 和 IGRP。现在,通过这四个进程,可以学习到通往 192.168.24.0/24 网络的各种路由,并且每个路由器都通过其内部指标和进程选择通往网络的最佳路径。
这四个进程尝试将到 192.168.24.0/24 的路由安装到路由表中。每个路由进程都分配有一个管理距离,用于确定要安装哪条路由。
由于内部 EIGRP 路由具有最佳管理距离(管理距离越短,越有可能被优先选择),因此将内部 EIGRP 路由安装在路由表中。
备份路线
其他协议(RIP、IGRP 和 OSPF)如何处理它们未安装的路由?如果首选路由失败,您可以从 EIGRP 中了解到什么?
Cisco IOS® 软件通过两种方式解决此问题:第一种是让每个路由进程定期尝试安装其最佳路由。如果最优先的路由失败,则下一个最佳路由(基于管理距离)将在下一次尝试时成功。另一种解决方案是针对路由协议无法在路由表中安装其路由的情况,如果最佳路径失败,则通知路由表进程。
第一种方法用于没有自己的路由信息表的协议(例如 IGRP)。每次 IGRP 收到路由更新时,它都会尝试将更新的信息安装到路由表中。如果路由表中已经有到同一目的地的路由,则无法完成安装尝试。
对于拥有自己的路由信息数据库的协议(例如 EIGRP、IS-IS、OSPF、BGP 和 RIP),当首次尝试安装路由失败时,将注册备用路由。如果路由表中安装的路由由于某种原因失败,路由表维护进程将调用已注册备用路由的每个路由协议进程,并要求它们将路由重新安装到路由表中。如果多个协议都注册了备用路由,则根据管理距离选择首选路由。
调整管理距离
默认管理距离可能并不总是适合您的网络;您可能需要调整它们,例如让 RIP 路由优先于 IGRP 路由。在解释如何调整管理距离之前,我们需要回顾一下管理距离更改提示。
更改路由协议上的管理距离非常危险!更改默认距离可能会导致网络中出现路由环路和其他异常。我们建议您谨慎更改管理距离。在执行此操作之前,请务必反复考虑操作的目的以及操作的所有后果。
对于整个协议来说,更改距离相对容易;使用路由进程子配置模式中的 distance 命令可以轻松配置距离。您还可以更改仅从某些协议可用的路由的距离,也可以仅更改某些路由的距离。
对于静态路由,您可以通过发出 ip route 命令并输入距离来更改每条路由的距离:
ip route 网络子网掩码的下一跳距离。您不能一次更改所有静态路由的管理距离。
指标如何确定路由过程
根据路由协议的管理距离在路由表中选择和构建路由。从路由协议中获知的具有最短管理距离的路由将安装在路由表中。如果使用路由协议到达同一目的地有多条路径,则多条路径具有相同的管理距离,并根据测量标准选择最佳路径。
度量是与特定路由相关联的值,按重要性从高到低的顺序排列。用于确定度量的参数在不同的路由协议中有所不同。度量最低的路径被选为最佳路径并安装在路由表中。如果到同一目的地有多条度量值相等的路径,则在这些等价路径之间进行负载平衡。
前缀长度
让我们看看另一种情况,看看路由器如何处理另一种常见情况:可变前缀长度。同样,假设路由器上运行着四个路由进程,每个进程都收到了以下路由:
哪些路由将安装在路由表中?由于 EIGRP 内部路由具有最佳管理距离,因此很容易假设将安装第一个路由。但是,由于这些路由中的每一个都有不同的前缀长度(子网掩码),因此这些路由的目的地被视为不同的目的地,并且全部安装在路由表中。
让我们看看转发引擎如何使用路由表中的信息来做出转发决策。
做出转发决定
让我们看看我们在路由表中安装的三条路由,看看如何在路由器上找到它们。
路由器#显示 ip 路由....
D 192.168.32.0/26 [90/25789217] 通过 10.1.1.1
R 192.168.32.0/24 [120/4] 通过 10.1.1.2
O 192.168.32.0/19 [110/229840] 通过 10.1.1.3 ....
如果数据包到达分配给 192.168.32.1 的路由器接口,路由器将选择哪条路由?这取决于子网中前缀的长度或子网掩码中设置的位数。转发数据包时,较长的前缀始终优先于较短的前缀。
在这种情况下,发往 192.168.32.1 的数据包被定向到 10.1.1.1,因为 192.168.32.1 属于 192.168.32.0/26 网络(192.168.32.0 到 192.168.32.63)。它也属于其他 2 个可用路由,但 192.168.32.0/26 在路由表中具有最长的前缀(26 位 vs. 24 或 19 位)。
同样,如果发往 192.168.32.100 的数据包到达路由器接口,它将被转发到 10.1.1.2,因为 192.168.32.100 不在 192.168.32.0/26(192.168.32.0 到 192.168.32.63)范围内,但确实在 192.168.32.0/24 目标范围内(192.168.32.0 到 192.168.32.255)。同样,它属于 192.168.32.0/19 覆盖的范围,但 192.168.32.0/24 的前缀更长。
IP无类别
ip classless 配置命令在路由和转发过程中的位置经常令人困惑。实际上,ip classless 仅影响 IOS 中转发过程的运行;它不会影响路由表的构建方式。如果没有配置 ip classless(使用 no ip classless 命令),路由器将不会将数据包转发到超网。
例如,我们再次在路由表中放置三条路由,并通过路由器路由数据包。
注意:如果通过 IS-IS 或 OSPF 获取超网或默认路由,则 no ip classless 配置命令将被忽略。在这种情况下,数据包交换行为与配置了 ip classless 时相同。
路由器#显示 IP 路由....
172.30.0.0/16 是可变子网,2 个子网,2 个掩码
D 172.30.32.0/20 [90/4879540] 经由 10.1.1.2
D 172.30.32.0/24 [90/25789217] 通过 10.1.1.1
S* 0.0.0.0/0 [1/0] 通过 10.1.1.3
请记住,172.30.32.0/24 网络包含地址 172.30.32.0 至 172.30.32.255,而 172.30.32.0/20 网络包含地址 172.30.32.0 至 172.30.47.255,因此我们可以尝试通过此路由表转换三个数据包并查看结果。
在这四个结果中,最令人惊讶的是最后一个被丢弃的数据包。该数据包被丢弃的原因是,其目的地 172.30.254.1 位于已知主网络 172.30.0.0/16 内,但路由器不知道主网络内的该特定子网。
这就是有类路由的本质:如果主网络的组件已知,但主网络内子网的特定信息未知,则数据包将被丢弃。
该规则最令人困惑的部分是,如果目标主网络在路由表中根本不存在,则路由器只能使用默认路由。
如图所示,网络远程站点使用非路由协议和单一连接与其他网络相连,这可能会导致网络远程站点出现问题。
远程站点路由器配置如下:
接口串行0
IP 地址 10.1.2.2 255.255.255.0
以太网接口 0
IP 地址 10.1.1.1 255.255.255.0
IP 路由 0.0.0.0 0.0.0.0 10.1.2.1
无 IP 无类别
通过此配置,远程站点的主机能够到达 Internet 中的目的地(通过 10.xxx 云),但无法到达 10.xxx 云(企业网络)。由于远程路由器知道 10.0.0.0/8 网络的某些部分,即两个直接连接的子网,但不知道 10.xxx 的其他子网,因此它假定这些其他子网不存在并丢弃发往它们的数据包。发往 Internet 的流量(其目的地不在 10.xxx 地址范围内)可以通过默认路由进行适当路由。
在远程路由器上配置 ip classless 可以解决问题,因为允许路由器忽略其路由表中网络的分类边界,并简单地路由到它能找到的最长前缀匹配。
总结
总而言之,做出转发决策实际上涉及三组过程:路由协议、路由表以及做出转发决策和交换数据包的实际过程。
下面演示了这三组过程,包括它们之间的关系。
在实际安装到路由表中的路由中,最长前缀匹配总是获胜,而当需要在路由表中安装路由时,具有最短管理距离的路由协议将获胜。