最长前缀匹配简述
最长前缀匹配机制(Longest Prefix Match Algorithm)是目前行业内几乎所有的路由器都缺省采用的一种路由查询机制。
当路由器收到一个IP数据包时,它会将数据包的目的IP地址与自己本地路由表中的所有路由表进行逐位(Bit-By-Bit)对比,直到找到匹配度最长的条目,这就是最长前缀匹配机制。
最长前缀匹配图
路由器AR1的路由表除了直连路由10.1.1.1/24、10.2.2.2/24、10.3.3.3/24外,还有三条路由172.16.1.0/24、172.16.2.0/24、172.16.0.0/24。
分别关联不同的出接口和下一跳地址,那么当R1收到一个到达172.16.2.1的数据包时,它将把数据包转发给哪台路由器?
大致上,R4将报文的目的IP地址172.16.2.1和路由条目1的目的网络掩码255.255.255.0进行逻辑与运算,与路由条目2、3都进行运算。
路由条目的编号
逻辑与运算规则
“&&” "·"表示与 (逻辑与)是逻辑运算符,
逻辑与”相当于生活中说的“并且”,就是两个条件都同时成立的情况下“逻辑与”的运算结果才为“真”
二进制与运算规则:1&1=1 1&0=0 0&0=0
路由条目(一)与其子网掩码进行逻辑与运算
172.16.1.0与掩码255.255.255.0进行逻辑与运算
172 | 16 | 1 | 0 |
---|---|---|---|
10101100 | 00010000 | 00000001 | 00000000 |
255 | 255 | 255 | 0 |
11111111 | 11111111 | 11111111 | 00000000 |
逻辑与结果 | ----- | ------- | ----- |
10101100 | 00010000 | 00000001 | 00000000 |
逻辑与运算结果
逻辑运算结果为172.16.1.0,二进制如下:
10101100 | 00010000 | 00000001 | 00000000 |
---|
数据包目的IP:172.16.2.1
10101100 | 00010000 | 00000010 | 00000001 |
---|
路由条目与数据包IP对比
j将报文目的IP地址172.16.2.1/24与路由条目的网络掩码255.255.255.0进行“逻辑与”运算。
将运算结果与路由条目1的目的网络地址的前24bit进行对比,如上图所示,结果发现有两个比特位不相同,因此判断出这个目的IP与路由条目1不匹配,R1将不使用这条路由转发到达172.16.2.1的数据包。
目的IP地址与路由条目1不匹配,会继续与路由条目2、路由条目3匹配,进行逻辑与方式进行。
目的IP地址与路由条目2逻辑与运算
目的IP:172.16.2.1/24
路由条目2:172.16.2.0/24
将IP地址172.16.2.1与路由条目2的目的网络掩码255.255.255.0进行“逻辑与”运算,将运算结果与路由条目2的目的网络地址的前24比特对比,发现每一个比特位都相同,因此该目的IP匹配这条路由,而且匹配结果是172.16.2.0/24,也就是说匹配长度是24。
与路由条目2逻辑与运算完成,不管结果是不是需要的匹配原则都会继续匹配路由条目三、四… …
它会将数据包的目的IP地址与自己本地路由表中的所有路由表进行逐位(Bit-By-Bit)对比
目的IP地址与路由条目3逻辑与运算
目的IP地址:172.16.2.1/24
路由条目3:172.16.0.0/16
将目的IP地址172.16.0.0/16与路由条目3的目的网络255.255.0.0进行“逻辑与”运算,其运算结果是与路由条目3的前16bit进行对比,发现每一个比特位都是相同的,因此该目的IP匹配此路由,匹配结果是172.16.0.0/16,匹配长度16.
但是根据最长匹配原则,路由条目2匹配度更长,因此R1将采用路由条目2来转发到达172.16.2.1的数据包。
最长匹配实现负载分担
最长匹配前缀除了可以实现路由选路,还可以实现数据传输路径的冗余和负载分担,
在上图中,AR1与AR2是两台企业边界路由器,在该企业中存在192.168.0.0~192.168.3.0网段。现在B与AR1、AR2建立了连接,运行了RIP,企业对1、2路由器有完全操控全,对B不具备操作权限,只能将信息通过给B。
企业要求,通过1、2路由器上进行相应配置,使得B到达上述4个网段的数据包转发给路由器1,当1发生故障,B将数据包平滑的切换至R2。
路由要求实现
即AR1向B通过四条明细路由,AR2配置一条汇总路由192.168.0.0/22,此汇总路由会将四条路由都囊括在内,完成配置后,B的路由表将出现5条路由。
根据最长匹配原则,在网络正常时,数据包通过AR1发送至B。
当AR1故障,数据转发会切换到AR2,这就实现了数据转发的冗余。
参考华为路由交换指南