OSPF、BGP 和转发表

网络工程 路由 路由器 ip ospf ip转发表
2021-07-18 08:56:48

我对互联网数据包航行期间发生的事情的流程有点困惑。
我的基本问题是:OSPF 和转发表之间有什么联系?

假设有 10 个 AS,每个 AS 内都有一些路由器和交换机。现在,某个 AS 中的主机 A 想要向其他 AS 中的主机 B 发送 IP 数据报。现在,首先,AS 使用 OSPF 协议。这样,每个路由器都知道向 AS 中的其他路由器发送数据报的“成本”是多少?另一个问题:当数据报到达路由器时,在转发表中没有匹配项,它会泛洪到其所有接口(?),但是,OSPF 为每个路由器提供了它需要选择的最佳路径,那么为什么要转发表无论如何都需要?我很困惑,找不到事物之间的联系。

(对不起,英语不是我的母语)

2个回答

通常,路由协议用于填充路由表而不是转发数据包。

两个AS之间一般用BGP来交换路由,在一个AS内,可以是OSPF,也可以是IS-IS、EIGRP或任何路由协议。

一个给定的路由器可以同时使用多个路由协议。

假设路由器配置为使用 OSPF 和 BGP。

路由器将在内存中保存不同的路由表:

  • 一种用于通过 OSPF 学习的路由
  • 一种用于通过 BGP 学习的路由
  • 一种用于路由器管理员静态添加的路由
  • 一种用于网络直连

通过在所有这些表中选择路由来构建转发表。

对于至少存在于一个路由表中的每个网络,路由器选择最好的一个并将其放入其转发表中。

当路由器收到一个数据包时,它只查看它的转发表来决定将它发送到哪里。在这一点上,路线来自哪里并不重要。

路由器可以通过多种方式了解通往各个 IP 前缀的最佳路径:它们可以直接连接、配置为静态路由或通过动态路由协议获悉。

每个动态路由协议(包括 RIP)都有自己的一组内部数据结构,称为 OSPF/IS-IS 数据库、EIGRP 拓扑表或 BGP 表。路由协议根据与其邻居交换的路由协议更新来更新其数据结构,最终收集所有相关信息。

BGP 和 OSPF 都将 IP 下一跳与 IP 前缀相关联,但 BGP 仅使用附加到 BGP 路由的下一跳属性的值,而 OSPF 使用 SPF 算法计算下一跳 OSPF 路由器的 IP 地址。

路由协议内路由选择的结果根据管理距离插入到 IP 路由表 (RIB) 中。

理想情况下,我们将使用 RIB 来转发 IP 数据包,但我们不能因为其中的某些条目(静态路由和 BGP 路由)可能具有不直接连接的下一跳。

引入了转发表 (FIB) 以使第 3 层交换具有确定性。当 IP 路由从 RIB 复制到 FIB 时,它们的下一跳被解析,传出接口被计算,当下一跳解析导致多条路径到达同一目的地时,将创建多个条目。

例如,当先前打印输出的 BGP 路由插入 FIB 时,其下一跳将更改为指向实际的下一跳路由器。保留有关递归下一跳的信息,因为它允许路由器更新 FIB(CEF 表),而无需重新扫描和重新计算整个 RIB,如果通往 BGP 下一跳的路径发生变化。