Hot Potato,路由器中选择路由的算法

网络工程 路由 路由器 bgp 国际电联
2021-07-21 23:30:30

我想了解一个“烫手山芋”的原理。给定一个有 5 个接口的路由器。第一个接口得到一个数据包,必须决定这个数据包应该转发到哪个接口。我认为路由器中发生了以下过程:

1) 数据包到达

2)提取网络前缀

在路由表中查找(BGP?还是其他表?)

3)根据网络前缀查找所有匹配的数据记录(其中一个接口应该在逃跑的路径中)

4)选择IGP路径最小的那个(同一个AS内的逃跑路径)。

我的算法正确吗?

2个回答

我的算法正确吗?

不完全是。路由协议不路由。路由器甚至可以在不使用路由协议的情况下进行路由。路由协议只是与其他路由器交换路由。路由器将根据前缀源的可靠性(例如 AD 等)确定从各种来源(包括路由协议)填充路由表的路由,但路由器将根据路由表中已有的内容路由数据包。

此外,路由器只有目标地址,没有目标所在网络的掩码,因此它不会从目标地址中提取网络前缀。

路由器将剥离第 2 层帧,检查数据包上的第 3 层目标地址,并在其路由表中执行查找,寻找与目标地址匹配的最长前缀。如果没有找到匹配项,它就会丢弃数据包。如果找到匹配项,它将拥有传出接口,并将为下一个接口构建一个新帧并将新帧转发出接口。


编辑:

根据您的评论,您似乎对路由表的填充方式与路由器如何使用它来路由数据包感到困惑。

路由器将查看所有路由源(直连网络、静态路由和路由协议)以确定路由表的候选者。每个路由协议都维护自己的从其他路由器接收到的路由表。来自路由协议的候选路由是路由协议表中到目标网络的最佳度量的路由。

如果候选人在其他来源中没有对手,则将其安装在路由表中。

如果有多个候选使用相同的源,例如路由协议,它比较候选的度量,并选择度量最低的一个安装在路由表中。

如果有来自多个源的多个候选者,它使用像 Cisco 的 AD(管理距离)这样的东西,即源的可靠性,来选择要安装到路由表中的候选者,因为无法比较来自不同路由协议的指标。

您的算法大致在 BGP 中实现,默认情况下它执行“烫手山芋”路由。在所有其他条件相同的情况下,将选择具有最低 IGP 度量的路由。