路由转发表的构造流程

路由器的转发表 (Forwarding Information Base, FIB) 的构建是一个多步骤、动态且高度优化的过程。它不像路由表 (Routing Information Base, RIB) 那样只是简单的路由信息集合,而是为了实现高速、高效的数据包转发而专门设计的数据结构。

要理解转发表的构造,我们需要先理解它的“上游”——路由表 (RIB),以及各种路由信息的来源。

转发表的构造流程概览

可以把转发表的构造理解为以下几个阶段:

  1. 信息收集: 路由器从各种来源收集路由信息。
  2. 路由选择: 路由器评估所有收集到的路由信息,选出到达每个目的网络的最佳路径,并将其放入路由表 (RIB)。
  3. 转发表生成: 路由器将路由表中选出的最佳路径进行优化和预处理,生成转发表 (FIB)。

阶段一:信息收集

路由器通过以下主要方式获取路由信息:

  1. 直连路由 (Directly Connected Routes):
    • 来源: 当路由器的物理接口被配置了 IP 地址并处于“up/up”状态时,路由器会自动得知如何到达与该接口直接相连的网络。
    • 特点: 这些路由具有最高的信任度(通常管理距离最小),且无需额外协议。
  2. 静态路由 (Static Routes):
    • 来源: 由网络管理员手动配置的路由条目。
    • 特点: 它们是固定的,不会动态变化,除非管理员手动修改。常用于特定的、不常变化的网络路径或作为默认路由 (0.0.0.0/0)。
  3. 动态路由协议 (Dynamic Routing Protocols):
    • 来源: 路由器运行各种路由协议(如 RIP, OSPF, EIGRP, BGP 等),与其他路由器交换路由信息。
    • 特点: 能够自动发现网络拓扑、学习路径、适应网络变化,并计算到达各个目的网络的“最佳”路径。
      • 距离矢量协议 (Distance-Vector Protocols): 如 RIP, EIGRP。路由器向其邻居发送完整的路由表,并根据邻居的更新来更新自己的路由表。
      • 链路状态协议 (Link-State Protocols): 如 OSPF, IS-IS。路由器构建整个网络的拓扑图,然后使用 SPF (最短路径优先) 算法独立计算到达所有目的地的最短路径。
      • 路径矢量协议 (Path-Vector Protocols): 如 BGP。主要用于自治系统 (AS) 之间,它不只考虑距离,还会考虑路径属性和策略。

阶段二:路由选择 => 填充路由表 (RIB)

一旦路由器从各种来源收集到路由信息,它需要决定哪条路径是“最佳”的,以便将其放入主路由表(RIB)。

这个选择过程通常遵循以下优先级原则:

  1. 管理距离 (Administrative Distance, AD):
    • 定义: 衡量路由信息来源的“可信度”。AD 值越小,表示路由来源越可信。
    • 示例 (思科):
      • 直连路由:0
      • 静态路由:1
      • EIGRP:90
      • OSPF:110
      • RIP:120
      • 外部 BGP:20
      • 内部 BGP:200
    • 选择规则: 如果有两条或多条到达同一个目的网络的路由,路由器会选择管理距离最小的那条。
  2. 度量值 (Metric):
    • 定义: 当管理距离相同时(即来自同一个路由协议或同一类型来源),路由器会使用该协议自身的度量值来选择最佳路径。度量值是衡量路径“成本”或“距离”的指标。
    • 示例:
      • RIP 使用跳数 (hop count)。
      • OSPF 使用成本 (cost),通常基于链路带宽。
      • EIGRP 使用复合度量值(带宽、延迟、可靠性、负载)。
    • 选择规则: 在管理距离相同的情况下,选择度量值最小的那条路径。
  3. 最长前缀匹配 (Longest Prefix Match):
    • 这个原则不是用来选择哪条路由放入路由表的,而是用来选择路由表中哪条路由用于转发数据包的。
    • 当数据包到达时,路由器会查找路由表中与目的 IP 地址最匹配的条目。如果同时存在 192.168.1.0/24 和 192.168.1.128/25 两个路由条目,并且数据包的目的地址是 192.168.1.130,那么路由器会选择更具体的 /25 路由进行转发。

RIB 的内容: RIB 中存储的条目就是经过上述选择后,路由器认为到达每个目的网络的“最佳”路径。

阶段三:转发表生成

转发表 (FIB) 是从路由表 (RIB) 中派生出来的。它的主要目标是优化查找过程,使得数据包转发可以由硬件(ASIC)而非软件(CPU)来完成,从而达到线速转发。

FIB 的构造过程和优化:

  1. 复制最佳路由: 路由表中所有的最佳路径(即那些被选定用于转发的路径)会被复制到转发表中。

  2. 预计算下一跳信息:

    • 递归查找消除:

      在复杂的网络中,路由表中的下一跳地址可能不是直接相连的。例如,“要到达 10.0.0.0/8,下一跳是 172.16.1.1”。

      那么路由器还需要查找如何到达 172.16.1.1。为了提高转发效率,FIB 会预先完成这些递归查找,直接将最终的出接口直接相连的下一跳 IP 地址存储在 FIB 条目中。

    • 二层重写信息 (Layer 2 Rewrite Information):

      FIB 不仅存储下一跳 IP 地址,还会预先包含将 IP 数据包封装到相应数据链路层帧(例如,以太网帧)所需的下一跳 MAC 地址

      这些 MAC 地址通常存储在邻接表 (Adjacency Table) 中,FIB 条目会直接指向邻接表中的对应条目。这样,路由器在转发数据包时,只需一步查找即可获得所有必要的二层信息,无需再执行 ARP 请求等操作。

  3. 硬件优化格式:

    • FIB 通常以一种硬件友好的格式存储,例如使用树形结构(如 IP 地址查找树 Tries 或 CAM/TCAM),以便 ASIC 芯片可以进行非常快速的查找。这使得查找时间与表的大小无关,或者查找时间极短。
    • 这意味着,当一个数据包到达路由器时,路由器不需要像软件路由那样,逐条比对路由表中的每个条目,而是直接在硬件中进行一次高速查找。

举例说明 (FIB 的优化):

假设路由表中有以下条目:

  • 192.168.1.0/24 通过 Next-Hop 10.0.0.2 (Out Interface GigabitEthernet0/1)
  • 而 10.0.0.0/30 是 GigabitEthernet0/1 接口的直连网络。

在构建 FIB 时,对于 192.168.1.0/24 这条路由,FIB 不仅会存储 10.0.0.2 和 GigabitEthernet0/1,还会预先查询 10.0.0.2 的 MAC 地址(假设是 AA:BB:CC:DD:EE:FF),然后将所有这些信息(目的网络、下一跳IP、出接口、下一跳MAC地址)打包成一个可以直接用于二层封装的条目。

总结

路由转发表 (FIB) 的构造是一个从各种路由信息来源开始,经过严格的路由选择算法,最终将最佳路径优化为适合硬件快速转发的数据结构的过程。

它将复杂的路由决策和地址解析过程提前完成,从而使得路由器能够以非常高的速度处理大量传入的数据包,是现代高速路由器的核心所在。

Author

JuyaoHuang

Publish Date

10 - 11 - 2025