13.3 路由表
路由源:
路由表中包含去往已知网络的路由条目列表(前缀和前缀长度)。这些信息的源来自于:
- 直连网络
- 静态路由
- 动态路由协议



在 R1 和 R2 的路由表中,可以看到每条路由的源都用了一个代码来标识。代码标识的是获取路由的方式。例如,常用的代码包括:
- L – 标识分配给一个路由器接口的地址。这使路由器能够有效确定何时收到的数据包是指向该接口的,而不必进行转发。
- C – 标识一个直连网络。
- S – 标识为了到达某个特定网络而创建出来的静态路由。
- O – 标识使用 OSPF 路由协议从另一台路由器动态学习到的网络。
- *** – 这条路由是默认路由的候选。
路由表原则:

路由表条目:

在路由器可以学习到任何远程网络之前,它必须至少有一个活动接口配置了 IP 地址和子网掩码(前缀长度)。这称为直连网络或直连路由。当接口配置了 IP 地址并激活时,路由器就会把直连路由添加到自己的路由表中。
直连网络在路由表中是通过状态代码 C 进行标记的。路由中包含了一个网络前缀和前缀长度。
路由表中也包含了每个直连网络的本地路由,用状态代码 L进行标记。这是分配给直连网络接口的 IP 地址。对于 IPv4 本地路由,这个前缀长度为 /32,对于 IPv6 本地路由,这个前缀长度为 /128。这表示数据包的目的 IP 地址必须与本地路由中的所有位匹配,才能匹配这条路由。本地路由的目的是能够有效确定何时接收到的数据包是以这个接口为目的的,因此不必进行转发。
直连网络和本地路由如下面的输出信息所示。

静态路由:


在这个示例中,可以在 R2 上配置静态路由来到达 R1 网络。此外,由于 R1 只有一种方法可以发送非本地的流量,R1 上可以配置一条指向 R2 的默认静态路由,作为所有其他网络的下一跳。
为了演示静态路由,图中的拓扑被简化为了只显示每台路由器所连接的一个 LAN。这张图显示了 R1 上配置的 IPv4 和 IPv6 静态路由,这两条路由是为了到达 R2 上的 10.0.4.0/24 和 2001:db8:acad:4::/64 网络。配置命令仅用于演示,会在另一个模块中进行讨论。
这张图描述了 R1 的配置命令,这些命令设置了从图 14.3.1 中的拓扑访问 PC3 时使用的 IPv4 和 IPv6 静态路由。IPv4 命令为 R1 (config)#ip route 10.0.4.0 255.255.255.0 10.0.3.2. 远程 IPv4 网络的地址为10.0.4.0 255.255.255.0。下一跳路由器的 IPv4 地址为 10.0.3.2。IPv6 命令为 R1 (config)# ipv6 route 2001.db8.acad.4::/64 2001.db8.acad3::2。远程 IPv6 网络的地址为 2001.db8.acad.4:: /64,下一跳路由器的 IPv6 地址是 2001.db8.acad3:: 2。

输出信息显示了 R1 上的 IPv4 和 IPv6 静态路由条目,这些条目可以到达 R2 上的 10.0.4.0/24 和 2001:db8:acad:4::/64 网络。请注意,这两个路由条目使用的状态代码都是 S ,表示这两条路由都是从静态路由学习到的。这两个条目都包括了下一跳路由器的 IP 地址,via ip-address。命令末尾的 static 参数仅显示静态路由。

路由器会使用动态路由协议来自动分享关于远程网络连通性和状态的信息。动态路由协议将执行多种活动,包括网络发现和路由表维护。
动态路由协议的重要优点是能够选择最佳路径,并能够在拓扑发生变化时自动发现新的最佳路径。
网络发现是路由协议的一项功能,通过此功能路由器能够与使用相同路由协议的其它路由器共享网络信息。动态路由协议使路由器能够自动地从其他路由器获知远程网络,这样便无需依赖在每台路由器上手动配置的指向远程网络的静态路由。这些网络以及通往每个网络的最佳路径都会添加到路由器的路由表中,并标识为由特定动态路由协议获知的网络。
下图显示了路由器 R1 和 R2 使用一个通用路由协议共享网络信息。

前面的示例使用了去往 10.0.4.0/24 和 2001:db8:acad:4::/64 网络的静态路由。这些静态路由没有再进行配置,路由器现在使用 OSPF 来动态学习连接到 R1 和 R2 的所有网络。下面的示例显示了在 R1 上的 IPv4 和 IPv6 OSPF 路由条目,这些路由可以到达 R2 所在的网络。请注意,这两个路由条目都使用了的状态代码 O 来表示这些路由是通过 OSPF 路由协议学习到的。这两个条目都包括了下一跳路由器的 IP 地址,via ip-address。
注意: IPv6 路由协议会使用下一跳路由器的链路本地地址。
注意: IPv4 和 IPv6 的 OSPF 路由配置超出了本课程的范围。

默认静态路由类似于主机上的默认网关。默认路由标识了当路由表中不包含可以匹配目的IP的具体路由时,要使用哪个下一跳路由器。
默认路由既可以是静态路由,也可以是通过一种动态路由协议自动学习到的。默认路由的 IPv4 路由条目为 0.0.0/0,IPv6 路由条目为:: /0。这表示目的 IP 地址和默认路由之间需要匹配零位,或者说不需要匹配。
大多数企业路由器的路由表中都有默认路由。这是为了减少路由表中的路由条目数量。
路由器(如只有一个局域网的家庭或小型办公室路由器)可以通过默认路由到达所有的远程网络。当路由器只有直连网络和一个出站点连接到服务提供商路由器时,默认路由器就很有用了。
在图中,路由器 R1 和 R2 正在使用 OSPF 来分享有关它们自己网络的路由信息(10.0.x.x/24 和 2001:db8:acad:x::/64 网络)。R2 有一条通往 ISP 路由器的默认路由R2 会把任何目的 IP 地址不能精确匹配路由表中网络的数据包,全都转发给 ISP 路由器。这就会包括所有发往互联网的数据包。


R2 已经使用 OSPF 与 R1 分享了自己的默认路由。R1 现在在自己的路由表中有了一条默认路由,这是它通过 OSPF 动态学习到的路由。R1 也会把任何目的 IP 地址不能精确匹配路由表中网络的数据包,全都转发给 R2。
下面的示例显示了在 R2 上配置的静态默认路由的 IPv4 和 IPv6 路由表条目。

IPv4路由表结构:
IPv4 在 1980 年代初成为标准,使用的是现在已经过时的有类编址架构。IPv4 路由表也是使用同一个有类结构进行组织的。在 show ip route 的输出信息中,可以看到有些路径条目向左对齐,而其他条目则进行了缩进。这取决于路由进程是如何在 IPv4 路由表中搜索最长匹配的。这一切都是因为有类编址这种机制。虽然查找进程已经不使用类的概念,但 IPv4 路由表的结构还是沿用了这种格式。

注意: 示例中的 IPv4 路由表并不是来自于这个模块中使用的、某个拓扑中的路由器。
虽然这种结构的详细信息超出了这个模块的范围,但认识这个表格的结构还是很有必要的。缩进的条目称为子路由(child route)。如果路由条目是有类地址(A、B 或 C 类网络)的子网,这个路由条目就会缩进。直连网络永远都会缩进(子路由),因为接口的本地地址在路由表中始终是 /32 的形式。子路由中会包括路由源和所有转发信息,如下一跳地址。这个子网的有类网络地址会显示在路由条目的上方,缩进较少,且没有路由源的代码。这条路由称为父路由(parent route)。
注意: 这里只是对 IPv4 路由表的结构进行简要介绍,不包括这种架构的详细信息。

IPv6路由表结构:
IPv6 中从来就没有有类地址的概念,因此 IPv6 路由表的结构非常直接。每个 IPv6 路由条目的格式都是相同的。

一个特定网络地址的路由条目(前缀和前缀长度)只能在路由表中显示一次。但是,路由表可能会从多个路由源学习到同一个网络地址。
除了非常具体的情况外,一台路由器上只应该使用一个动态路由协议。不过,在一台路由器上同时配置 OSPF 和 EIGRP是很有可能的,而且这两个路由协议还可能都学习到相同的目的网络。每个路由协议会根据各自路由协议的度量来选择不同的路径到达目的。
这就引发了一些问题,例如:
- 路由器如何知道要使用哪个路由源?
- 路由器应该把哪条路由安装到路由表中?是从 OSPF 学到的路由,还是从 EIGRP 学到的路由?
思科 IOS 使用称为管理距离 (AD) 的工具来确定安装到 IP 路由表的路由。AD 代表路由的“可信度”。AD 越小,这个路由源的可信度就越高。因为 EIGRP 的 AD 为 90,而 OSPF 的 AD 为 110,因此 EIGRP 路由条目会被装入到路由表中。
注意: AD 并不一定代表哪种动态路由协议是最佳的。
例如,路由器从静态路由和动态路由协议(如 OSPF)中学习到了同一个网络地址,这种情况很常见。静态路由的 AD 为 1,而 OSPF 发现的路由的 AD 为 110。如果这两条路由去往的是同一个目的,那么路由器会选择 AD 较低的路由。如果有静态路由和 OSPF 路由供路由器选择,则路由器会优先选择静态路由。
注意: 直连网络的 AD 值最低,其 AD 值为 0。只有直连网络的 AD 可以为 0。
这张表列出了各种路由协议及其对应的 AD。
更新: 2025-03-11 14:06:18
原文: https://www.yuque.com/yuhui.net/network/kpq6chvb4g01wbly

评论(0)
暂无评论