路由¶
路由入网报文转发到目的网络
路由查找¶
路由表里会指定目的网段和子网掩码长度(route_prefix/prefix_length)
二进制查找¶
目的IP与子网掩码做与运算,然后比较和路由前缀是否相等
dip & mask ?= route_prefix
哈希查找¶
针对IPv4,地址长度32bit
建立32个hash桶,key = hash(route_prefix),存入prefix_length为索引的桶里
|子网掩码长度32|→|hash(route_prefix1/32)|...|
|子网掩码长度31|→|hash(route_prefix3/32)|...|
|子网掩码长度30|→|hash(route_prefix5/32)|...|
|子网掩码长度..|→|...|
|子网掩码长度2 |→|hash(route_prefix7/32)|...|
|子网掩码长度1 |→|hash(route_prefix9/32)|...|
搜寻时,目的IP依次与长度从32减小到1的掩码做运算,然后hash,去对应桶查找
256叉树¶

前缀树查找¶

路径压缩¶
在前缀树查找中,从下往下,每个节点都要比较依次,