路由器中的最长前缀匹配
什么是转发?
转发是将传入的数据包移动到适当的接口。路由器使用转发表来决定应将哪个传入数据包转发到哪个下一跳。
什么是IP 前缀?
IP前缀是IP地址的前缀。一个网络上的所有计算机都具有相同的 IP 前缀。例如,在 192.24.0.0/18 中,18 是前缀的长度,前缀是地址的前 18 位。
转发是如何工作的?
路由器基本上查看目标地址的 IP 前缀,在转发表中搜索匹配项,然后将数据包转发到转发表中相应的下一跳。
如果前缀重叠会发生什么?
由于前缀可能重叠(这是可能的,因为到处都使用无类寻址),传入 IP 的前缀可能匹配表中的多个 IP 条目。
例如,考虑下面的转发表
Prefix | Next Hop |
---|---|
192.24.0.0/18 | D |
192.24.12.0/22 | B |
在上表中,从 192.24.12.0 到 192.24.15.255 的地址重叠,即与表的两个条目匹配。
为了处理上述情况,路由器使用最长前缀匹配规则。规则是在表中找到与传入数据包的目标IP匹配的前缀最长的条目,并将数据包转发到相应的下一个希望。
在上面的示例中,重叠范围(192.24.12.0 到 192.24.15.255)中的所有数据包都被转发到下一跳 B,因为 B 具有更长的前缀(22 位)。
示例 1:路由器使用转发表项转发数据包。传入数据包的网络地址可能匹配多个条目。路由器如何解决这个问题?
(A) 将其条目与传入数据包的最长前缀匹配的路由器转发给它
(B) 将数据包转发给所有网络地址匹配的路由器。
(C) 丢弃数据包。
(D) 将其条目与传入数据包的最长后缀匹配的路由器转发给它
答: (A)转发表中不同表项的网络地址可能会重叠。路由器将传入数据包转发到对与传入数据包匹配的最长前缀进行哈希处理的路由器。
示例 2:无类域间路由 (CIDR) 接收地址为 131.23.151.76 的数据包。路由器的路由表具有以下条目:(GATE CS 2015)
Prefix Output Interface Identifier
131.16.0.0/12 3
131.28.0.0/14 5
131.19.0.0/16 2
131.22.0.0/15 1
转发此数据包的输出接口的标识符是______。
答案: “1”。我们需要首先找出地址为“131.23.151.76”的传入数据包的匹配表条目。该地址与两个条目“131.16.0.0/12”和“131.22.0.0/15”匹配(我们分别通过匹配前 12 位和前 15 位找到了这一点)。
那么数据包应该去接口 3 还是接口 1?我们使用最长前缀匹配来决定两者。最具体的匹配表条目用作接口。由于“131.22.0.0/15”是最具体的,因此数据包将发送到接口 1。
锻炼
考虑以下路由器的路由表。Prefix Next Hop 192.24.0.0/18 D 192.24.12.0/22 B
考虑以下三个 IP 地址。
- 192.24.6.0
- 192.24.14.32
- 192.24.54.0