三层转发信息下发硬件lpm表的方法

文档序号:7592148阅读:1442来源:国知局
专利名称:三层转发信息下发硬件lpm表的方法
技术领域
本发明涉及一种三层转发信息下发硬件LPM表的方法。
背景技术
一般,三层交换机的接口板上的转发芯片中的LPM(Longest-Prefix-Match,最长前缀匹配)表空间非常有限。当将上层FIB(Forwarding Information Base,路由转发表)下发给这个硬件表时,经常出现表满而插入不成功的现象。另外,目前路由转发匹配算法为最长匹配,若一个长掩码前缀插入不成功,则要将所有的相应短掩码前缀在硬件表中删除,虽然这些短掩码的删除释放了空间,但对这个长掩码的插入没有带来任何好处,这时,只能尝试插入其他的网络前缀。这样,就要频繁访问硬件表,从而严重影响能够匹配硬件表路由表项的包的转发。而三层路由表的下发工作就是将上层FIB软件表中的表项设置到转发芯片中。由于路由匹配算法为最长前缀匹配,故对掩码长度不同的相同前缀,若短掩码的前缀下发成功,而相应的长掩码的前缀下发不成功,则一个数据包本来需要匹配到那个长掩码的前缀,此时只能匹配到短掩码前缀,这样,本应按长掩码的前缀转发的数据包,却按短掩码前缀的匹配关系发送了,很容易造成转发错误。

发明内容
针对现有的三层转发信息下发硬件LPM表方法中所存在的问题和不足,本发明的目的是提供一种可避免数据转发错误的三层转发信息下发硬件LPM表的方法。
本发明是这样实现的一种三层转发信息下发硬件LPM表的方法,其中上层FIB下发给该硬件LPM表,该方法包括设置与硬件LPM表相关的存储单元,并设置两个数组S和F,分别用于存储FIB下发成功和下发失败的IP前缀值;
FIB下发时,首先根据网络前缀值搜索数组F,查看是否存在与该IP前缀匹配的项;若存在,则将这个路由表项直接插入数组F后返回;否则,将所述IP前缀值插入LPM表;若插入成功,则将其存储在所述数组S中;若插入失败,则将其插入数组F中,并将这个IP前缀在数组S中的所有IP短前缀表项全部移到数组F中,并删除LPM表中对应的IP前缀值;删除LPM表中部分IP前缀值后,循环尝试将数组F中的其他前缀值插入LPM表,若插入成功,则将该IP相应的短前缀全部插入LPM表,并插入数组S中,若失败,则保持不变。
进一步地,所述存储单元的容量大于或等于所述FIB存储IP前缀值的容量。
进一步地,所述存储单元中数组S和F以HASH表的方式存储IP前缀值。
进一步地,所述数组S和F的元素包括有IP前缀值和指向HASH表的指针两部分。
进一步地,所述HASH表由所有不同IP前缀构成,并按其IP前缀值升序排列。
进一步地,所述数组S和F的存储容量可动态调整。
本发明通过设置与FIB连接的存储单元,并在该存储单元中设置数组S和F两数组,分别用于存储FIB下发到LPM表的IP前缀值,若下发成功则存储至数组S中,若下发失败则存储到数组F中。并且,在FIB下发到LPM表前,先遍历数组F,查找有无与之匹配的IP前缀,若有直接放入数组F,若无则尝试插入LPM表,本发明采用预先判断的方式,而不是对FIB下发的所有IP前缀均直接尝试插入LPM表,大大减少了访问硬件表的无效次数,从而大大提高了能够匹配硬件表路由表项的数据包的转发效率,提高了带宽的利用率。并且,本发明的存储单元采用HASH表的方式对其元素进行存储,减少了访问查找时间,更有利于数据包的转发。


下面结合附图,对本发明作出详细描述。
图1为本发明的添加路由表项流程示意图;图2为本发明的删除路由表项流程示意图。
具体实施例方式本发明首先创建与硬件LPM表相关的存储单元,该存储单元的容量大于或等于FIB中存储IP前缀值的容量,在存储单元中设置两个数组S和F,分别用于存储FIB下发成功和下发失败的IP前缀值;FIB下发时,首先根据网络前缀值搜索数组F,查看是否存在与该IP前缀匹配的项;若存在,则将这个路由表项直接插入数组F后返回;否则,将所述IP前缀值插入LPM表;若插入成功,则将其存储在所述数组S中;若插入失败,则将其插入数组F中,并将这个IP前缀在数组S中的所有IP短前缀表项全部移到数组F中,并删除LPM表中对应的IP前缀值;删除LPM表中部分IP前缀值后,循环尝试将数组F中的其他前缀值插入LPM表,若插入成功,则将该IP相应的短前缀全部插入LPM表,并插入数组S中,若失败,则保持不变。
这里,数组S和F以HASH表的方式存储IP前缀值,即其中的元素包括有IP前缀值和指向HASH表的指针两部分,HASH表由所有不同IP前缀构成,并按其IP前缀值升序排列;数组S和F的存储容量可动态调整,即其容量之和与存储单元容量相等,其实际容量由其存储的IP前缀值决定。
如图1所示,当添加路由表项时,首先根据网络前缀值搜索数组F,查看是否存在与该IP前缀匹配的表项;若存在,则将这个路由表项直接插入数组F后返回;若没有,则尝试将该IP前缀值插入LPM表,若成功,则马上将该IP前缀值插入数组S中,并返回,若插入失败,则将数组S中与该IP前缀匹配的表项全部移入数组F中,并删除LPM表中相应的IP前缀值。尝试插入数组F中其他的IP前缀,并返回。
如图2所示,当删除LPM表中的表项和数组S中表项(删除LPM表和数组S的表项为同步)后,尝试将数组F中的其他前缀表项插入LPM表,具体插入过程为,将长IP前缀值表项插入,若插入成功,则将其他的所有短IP前缀插入,并将这些插入成功的所有IP前缀值插入数组S中;若插入失败,则保持不变,并返回。
权利要求
1.一种三层转发信息下发硬件LPM表的方法,其中上层FIB下发给该硬件LPM表,其特征在于,该方法包括设置与硬件LPM表相关的存储单元,并设置两个数组S和F,分别用于存储FIB下发成功和下发失败的IP前缀值;FIB下发时,首先根据网络前缀值搜索数组F,查看是否存在与该IP前缀匹配的项;若存在,则将这个路由表项直接插入数组F后返回;否则,将所述IP前缀值插入LPM表;若插入成功,则将其存储在所述数组S中;若插入失败,则将其插入数组F中,并将这个IP前缀在数组S中的所有IP短前缀表项全部移到数组F中,并删除LPM表中对应的IP前缀值;删除LPM表中部分IP前缀值后,循环尝试将数组F中的其他前缀值插入LPM表,若插入成功,则将该IP相应的短前缀全部插入LPM表,并插入数组S中,若失败,则保持不变。
2.如权利要求1所述的三层转发信息下发硬件LPM表的方法,其特征在于,所述存储单元的容量大于或等于所述FIB存储IP前缀值的容量。
3.如权利要求1所述的三层转发信息下发硬件LPM表的方法,其特征在于,所述存储单元中数组S和F以HASH表的方式存储IP前缀值。
4.如权利要求3所述的三层转发信息下发硬件LPM表的方法,其特征在于,所述数组S和F的元素包括有IP前缀值和指向HASH表的指针两部分。
5.如权利要求3所述的三层转发信息下发硬件LPM表的方法,其特征在于,所述HASH表由所有不同'前缀构成,并按其IP前缀值升序排列。
6.如权利要求1所述的三层转发信息下发硬件LPM表的方法,其特征在于,所述数组S和F的存储容量可动态调整。
全文摘要
本发明公开了一种三层转发信息下发硬件LPM表的方法,其中上层FIB下发给该硬件LPM表,设置用于存储FIB下发成功和下发失败的IP前缀值的数组S和F,FIB下发时,首先搜索数组F,查看是否存在与该IP前缀匹配的项;若存在,则将这个路由表项直接插入数组F;否则,将IP前缀值插入LPM表;若插入成功,则将其存储在数组S中;若插入失败,则将其插入数组F中,并将这个IP前缀在数组S中的所有IP短前缀表项全部移到数组F中,并删除LPM表中对应的IP前缀值;删除后,尝试将数组F中的其它前缀值插入LPM表,若插入成功,则将该IP相应的短前缀全部插入LPM表,并插入数组S中。本发明更有利于数据包的转发。
文档编号H04L12/56GK1561050SQ20041003917
公开日2005年1月5日 申请日期2004年2月20日 优先权日2004年2月20日
发明者柴新忠 申请人:港湾网络有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1