http://book.51cto.com/art/200903/117468.htm
8.4.2 最长匹配:第1级网络路由
路由查找过程是怎样确切地判断数据包的目的IP地址和路由表中的哪条路由匹配?如果有多于一条的路由表项和它匹配又将怎样?让我们来看一看。
一、最长匹配
在前面的路由查找讨论中,用到了最佳匹配这个术语。那么什么是最佳匹配呢?最佳匹配也可称为最长匹配。脱离开拓扑片刻,图8-20显示了路由3(172.16.0.0/26),具有最长匹配。最长匹配是什么意思呢?
![]() |
图8-20 最长匹配路由是首选路由 |
首先,我们应清楚什么是匹配。从路由表中的路由与数据包的目的IP地址的最左侧开始,两者必须达到一个最少的匹配位数。这个最少匹配位数由路由表中相应路由的子网掩码决定(请记住,IP数据包仅包含IP地址,不包含子网掩码)。
最佳匹配(或最长匹配)是指路由表中与数据包的目的IP地址从最左侧开始存在最多匹配位数的路由。通常情况下,最左侧有着最多匹配位数(最长匹配)的路由总是首选路由。子网掩码的比特数不仅指出了最左边匹配的最小比特数,而且是路由查找匹配比特时考虑的因素。
在图8-20中,我们看到一个目的地址为172.16.0.10的数据包。路由表中的许多路由都可能会与该数据包的目的IP地址匹配。图8-20中显示了3条都与该数据包匹配的路由:172.16.0.0/12、172.16.0.0/18 和172.16.0.0/26。3条路由中,172.16.0.0/26 路由的匹配位数最长。请记住,这几条路由必须达到其子网掩码所指定的最少匹配位数,才会被视为匹配路由。
图8-20提及的可能是一个不太常见的例子,它只是用来解释最长匹配的概念。在这个例子中,172.16.0.0/12和172.16.0.0/18将永远也不会被使用到,因为172.16.0.0/26总是最长匹配。这时因为所有的3条路由共享同样的32位比特。如果有多条路由具有同样的网络地址,但是子网掩码不同,则路由表查找过程永远使用最长掩码那条路由。在这个例子中,路由表查找过程永远使用路由172.16.0.0/26。
二、示例:第1级最终路由
用于确定最长匹配的子网掩码并不总是明确的。让我们通过几个示例详细地分析一下其中的原因。
在图8-21中,PC1向R3的串口192.168.1.2发送ping命令。
![]() |
图8-21 示例:第1级最终路由 |
R1收到了该数据包。示例8-13显示了R1路由表。
示例8-13 R1的路由表
R1#show ip route Gateway of last resort is not set 172.16.0.0/24 is subnetted, 3 subnets |
还记得路由查找过程中步骤1的第一个部分吗?图8-22演示了路由表查找到192.168.2.1数据包过程的步骤。
![]() |
图8-22 路由表查找过程:步骤1 |