在使用无类域间路由(CIDR)协议之后,IP路由的分组就通过与子网划分相反的过程来汇聚。这是因为网络前缀越长,其地址块所包含的主机数就越少,寻找目的主机就越容易。在使用CIDR的网络前缀法之中,IP地址由网络号与主机号两部分构成,因此实际使用的路由表的项目也要相应的改变。路由表的项目由“网络前缀”和“下一跳地址”组成。这样,路由选择就变成了从匹配结果中选择具有最长网络前缀的路由过程。,这就是“最长网络前缀匹配(longest-prefix matching)”的路由选择原则。
“最长网络前缀匹配(longest-prefix matching)”一般理解来:假设一个本地路由器与周围若干个路由器相邻,而这些相邻的路由器都会形成各自的子网。此时本地路由器内部的路由表就该包含这些子网的路径。但是,如果每一个子网在本地路由表中都规划一条具体的路径,那么路由表将会非常庞大。因此,路由表会探寻这些子网IP地址的前缀会不会有相同部分,更重要的是:这些子网前缀相同部分的最长长度是多长(按照上面描述,我们知道:网络前缀越长,主机数越少,寻找起来越简单),然后将这些有相同的“下一跳”,并且网络前缀相同长度的(尽量最长)IP进行分组归纳。因此,只要有IP地址前缀与某一个分组中的网络前缀一致的长度最长,那路由器就知道这一类地址都往该分组对应的“下一跳”。
目前,无类域间路由(CIDR)的使用使得寻找最长相同网络前缀的处理越来越复杂,当路由表很大时,如何减少路由表查找时间成为了一个重要的问题。如果路由器的链路线速达到10Gbps,典型的分组为2000bit,如果要求路由查询的速度接近输入端口线速的话,那么要求路由器每一秒处理500万个分组路由器包括路由查询时间在内的分组处理时间为200ns,路由查询时间一定要在200ns以内。因此,如何在路由表中使用很好的数据结果和快速查找方法一直都是网络领域一个重要的研究课题。
目前,最流行的方法是将记录无类域间路由的路由表改造成一种层次型的数据结构,采用二叉树(binary tree)的特殊结构的树,或者以压缩地方法来达到快速查询的目的。