Skip to content

路由 ​


路由入网报文转发到目的网络

路由查找 ​

路由表里会指定目的网段和子网掩码长度(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叉树 ​

前缀树查找 ​

路径压缩 ​

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

参考 ​

IP Address Lookup TUTORIAL