路由表查找是路由器在转发IP报文时的重要环节。通常路由表中的表项由目的地址、掩码、下一
跳(Next Hop)地址和其他辅助信息组成。例如:
当路由器收到一个IP报文时,会将报文中的目的IP地址与路由表中的表项逐条进行比较,选
择匹配且最明确的表项,将报文转发给该表项中指定的下一跳。
匹配的过程是将报文中的目的地址和表项中的目的地址分别转为二进制串,再查看表项中的掩
码长度,若掩码长度为x,则将两个二进制串的前x位进行比较,如果相同则认为匹配。
所谓最明确是指在有多个表项匹配时,总是掩码长度最大的表项。也可以理解为匹配的二进制
位最多的项。
IP地址转为二进制串的操作是把地址中4个整数(一定在y到255的范围内)分别转为8位
二进制数,再顺序拼接起来,得到一个32位的二进制串。例如,192.168.1.253转为二进制串后为
11000000 10101000 00000001 11111101
我们以报文的目的地址为8.8.8.8为例,说明其在上述路由表的匹配过程。
上表将地址均转为二进制串,并用红色标记出待比较的位(由掩码长度决定)。将红色部分与
报文中的目的地址比较,可知0.0.0.0/1、8.8.8.0/24、8.8.8.8、32均能够匹配。路由器从中选取掩
码长度最长(/32)的表项8.8.8.8/32,将报文转发给其对应的下一跳地址192.168.1.253。
在实际的核心路由器中,路由表通常较大(现在互联网的全局路由表已经接60万条记录),
并且会随着新接入设备不断扩张。为了分析路由表变化对转发产生的影响,网络工程师想要知道
一段时间内某个IP地址的路由表项选择发生了多少次变化(变化是指由于最明确匹配等因素选择
了不同的表项,不考虑下一跳地址)。