CN104780100A - 一种路由查找方法和路由器 - Google Patents
一种路由查找方法和路由器 Download PDFInfo
- Publication number
- CN104780100A CN104780100A CN201410009315.2A CN201410009315A CN104780100A CN 104780100 A CN104780100 A CN 104780100A CN 201410009315 A CN201410009315 A CN 201410009315A CN 104780100 A CN104780100 A CN 104780100A
- Authority
- CN
- China
- Prior art keywords
- glide
- address
- trie
- trie member
- trieblock
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/64—Hybrid switching systems
- H04L12/6418—Hybrid transport
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提出了一种路由查找方法和路由器,配置路由表和滑翔地址表;路由表至少包括一级滑翔多分支树结构块TRIEBLOCK,每一级滑翔TRIEBLOCK包括16个滑翔多分支树结构TRIE成员,每一个滑翔TRIE成员包括滑翔TRIE类型、滑翔地址/滑翔地址索引、滑翔地址长度、路由索引和下一级TRIEBLOCK索引;滑翔地址表包括滑翔地址和对应的滑翔地址索引;该方法包括:在第k级滑翔TRIEBLOCK中,查找互联网协议IP地址中第(4k-3)到4k位地址对应的滑翔TRIE成员;其中,k为大于等于1的整数;当查找到的滑翔TRIE成员的滑翔TRIE类型表示该滑翔TRIE成员无下一级滑翔TRIEBLOCK,且无滑翔地址信息,且查找到的滑翔TRIE成员的路由索引有效时,根据查找到的滑翔TRIE成员的路由索引获取下一级路由信息。本发明能够加快路由查找速度。
Description
技术领域
本发明涉及互联网协议(IP,Internet Protocol)通信领域,尤指一种路由查找方法和路由器。
背景技术
传统的路由查找算法,主要分为硬件查找和软件查找。硬件查找一般采用三态内容寻址存储器(TCAM,Ternary Content Addressable Memory)进行查找,TCAM具有查找速度快、操作简单的优点,但其成本高、功耗大、路由更新复杂。对于中低端路由器而言,实现成本较高,因此中低端路由器一般采用软件查找方法,软件查找方法主要有线性查找法、二叉树查找法、哈希表查找法、多分支树结构(TRIE)查找法等,例如,互联网协议第6版(IPV6,Internet Protocol Version6)地址的长度为128位,按照32位来划分,可分为4段。参见图1,采用哈希表查找法和TRIE4查找法相结合进行路由查找的方法如下:
配置路由表使其包括哈希表项和对应的TRIE链,根据IPV6地址对应的掩码的长度将哈希表项的哈希值分成4类,TRIE链最多包括8级多分支树结构块TRIEBLOCK,每一级TRIEBLOCK包括16个TRIE成员,每个TRIE成员包括下一跳路由索引和下一级TRIEBLOCK索引。该方法包括:
步骤100、采用哈希算法计算IPV6地址的哈希值。当IPV6地址对应的掩码的长度为1到32之间时,可以取其默认哈希值为0;当IPV6地址对应的掩码的长度为33到64之间时,可以取IPV6地址的前32位地址做哈希计算;当IPV6地址对应的掩码的长度为65到96之间时,可以取IPV6地址的前64位地址做哈希计算;当IPV6地址对应的掩码的长度为97到128之间时,可以取IPV6地址的前96位地址做哈希计算。
步骤101、查找计算得到的哈希值对应的TRIE链,对于查找到的TRIE链,逐级在TRIEBLOCK中查找IPV6地址对应的4位地址对应的下一跳路由索引和下一级TRIEBLOCK索引。当下一级TRIEBLOCK索引有效时,根据下一级TRIEBLOCK索引跳到下一级TRIEBLOCK,当下一级TRIEBLOCK索引无效时,根据下一跳路由索引获取路由信息。
现有的路由查找方法查找速度慢,占用内存大,在数据流较大时影响报文的转发性能。
发明内容
为了解决上述问题,本发明提出了一种路由查找方法和路由器,能够加快查找速度。
为了达到上述目的,本发明提出了一种路由查找方法,配置路由表和滑翔地址表;
所述路由表至少包括一级滑翔多分支树结构块TRIEBLOCK,每一级滑翔TRIEBLOCK包括16个滑翔多分支树结构TRIE成员,每一个滑翔TRIE成员包括滑翔TRIE类型、滑翔地址/滑翔地址索引、滑翔地址长度、路由索引和下一级TRIEBLOCK索引;所述滑翔地址表包括滑翔地址和对应的滑翔地址索引;
该方法包括:
在第k级滑翔TRIEBLOCK中,查找互联网协议IP地址中第(4k-3)到4k位地址对应的滑翔TRIE成员;其中,k为大于等于1的整数;
当查找到的滑翔TRIE成员的滑翔TRIE类型表示该滑翔TRIE成员无下一级滑翔TRIEBLOCK,且无滑翔地址信息,且查找到的滑翔TRIE成员的路由索引有效时,根据所述查找到的滑翔TRIE成员的路由索引获取下一级路由信息。
优选地,当k大于等于2,且查找到的滑翔TRIE成员的路由索引无效时,该方法还包括:
根据在第(k-1)级滑翔TRIEBLOCK中查找到的滑翔TRIE成员的路由索引获取下一级路由信息。
优选地,当所述查找到的滑翔TRIE成员的滑翔TRIE类型表示所述查找到的滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且无滑翔地址信息时,该方法还包括:
根据下一级TRIEBLOCK索引获取第(k+1)级TRIEBLOCK信息。
优选地,当所述查找到的滑翔TRIE成员的滑翔TRIE类型表示所述查找到的滑翔TRIE成员存在滑翔地址信息时,该方法还包括:
当所述查找到的滑翔TRIE成员的滑翔地址长度小于或等于22时,比较所述查找到的滑翔TRIE成员的滑翔地址与所述IP地址中第(4k+1)到(4k+M)位地址;
当所述查找到的滑翔TRIE成员的滑翔地址长度大于22时,根据所述查找到的滑翔TRIE成员的滑翔地址索引在所述滑翔地址表中查找对应的滑翔地址;比较查找到的滑翔地址与所述IP地址中第(4k+1)到(4k+M)位地址;
当比较结果为不相同,且k大于等于2时,根据在第(k-1)级滑翔TRIEBLOCK中查找到的滑翔TRIE成员的路由索引获取下一级路由信息;其中,所述M为所述查找到的滑翔TRIE成员的滑翔地址长度。
优选地,当所述查找到的滑翔TRIE成员的滑翔TRIE类型表示所述查找到的滑翔TRIE成员无下一级滑翔TRIEBLOCK,且所述比较结果为相同时,该方法还包括:
根据所述查找到的滑翔TRIE成员的路由索引获取下一级路由信息。
优选地,当所述查找到的滑翔TRIE成员的滑翔TRIE类型表示所述查找到的滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且所述比较结果为相同时,该方法还包括:
根据所述查找到的滑翔TRIE成员的下一级TRIEBLOCK索引获取下一级TRIEBLOCK信息。
优选地,当在所述路由表中添加新路由时,该方法还包括:
查找新路由的IP地址的最后一级可共用的滑翔TRIEBLOCK对应的可共用的滑翔TRIE成员;
当查找到的可共用的滑翔TRIE成员的滑翔TRIE类型表示所述可共用的滑翔TRIE成员无下一级滑翔TRIEBLOCK,且无滑翔地址信息时,将所述新路由保存到所述可共用的滑翔TRIE成员的路由索引中;
将所述可共用的滑翔TRIE成员的滑翔TRIE类型更改为表示所述可共用的滑翔TRIE成员无下一级滑翔TRIEBLOCK,且存在滑翔地址信息;
将新路由的IP地址的剩余IP地址段的长度保存到所述可共用的滑翔TRIE成员的滑翔地址长度中;
当所述剩余IP地址段的长度小于等于22时,将所述剩余IP地址段保存到所述可共用的滑翔TRIE成员的滑翔地址中;否则将所述剩余IP地址段保存到所述滑翔地址表中,并将所述剩余IP地址段对应的滑翔地址索引保存到所述可共用的滑翔TRIE成员的滑翔地址索引中。
优选地,当所述可共用的滑翔TRIE成员的滑翔TRIE类型表示所述可共用滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且无滑翔地址信息,且所述新路由的掩码长度在所述可共用的滑翔TRIEBLOCK的掩码长度范围内时,该方法还包括:
将所述新路由保存到所述可共用的滑翔TRIE成员的路由索引中。
优选地,当所述可共用的滑翔TRIE成员的滑翔TRIE类型表示所述可共用滑翔TRIE成员存在滑翔地址信息时,该方法还包括:
当所述可共用的滑翔TRIE成员的滑翔地址长度小于等于22时,获取所述可共用滑翔TRIE成员的滑翔地址;当所述可共用的滑翔TRIE成员的滑翔地址长度大于22时,根据所述可共用的滑翔TRIE成员的滑翔地址索引在所述滑翔地址表中查找滑翔地址;
按照每4比特逐级递减的方法,逐级比较获得的或查找到的滑翔地址与所述新路由的IP地址的剩余IP地址段,得到共用IP地址长度;
当获得的共用IP地址长度为0时,将所述可共用滑翔TRIE成员的滑翔TRIE类型更改为表示所述查找到的滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且无滑翔地址信息;
当所述获得的共用IP地址长度大于0且为4的整数倍时,将所述获得的共用IP地址长度保存到所述可共用的滑翔TRIE成员的滑翔地址长度;
当所述获得的共用IP地址长度小于等于22时,将所述获得的共用IP地址保存到所述共用的滑翔TRIE成员的滑翔地址中;当所述获得的共用IP地址长度大于22时,并将所述获得的共用IP地址保存到所述滑翔地址表中,将所述获得的共用IP地址对应的滑翔地址索引保存到所述可共用的滑翔TRIE成员的滑翔地址索引中;
申请一级新的滑翔TRIEBLOCK,将所述新路由和所述可共用的滑翔TRIE成员对应的旧路由保存到所述新的滑翔TRIEBLOCK中对应的滑翔TRIE成员的路由索引中。
优选地,当所述可共用的滑翔TRIE成员的滑翔TRIE类型表示所述可共用滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且存在滑翔地址信息时,该方法还包括:
将所述可共用的滑翔TRIE成员的下一级TRIEBLOCK索引保存到所述新路由和所述旧路由对应的滑翔TRIE成员的下一级TRIEBLOCK索引中;
将所述可共用的滑翔TRIE成员的下一级TRIEBLOCK索引更改为指向所述新的滑翔TRIEBLOCK。
优选地,当所述可共用的滑翔TRIE成员的滑翔TRIE类型表示所述可共用的滑翔TRIE成员无下一级滑翔TRIEBLOCK,且存在滑翔地址信息时,该方法还包括:
将所述可共用的滑翔TRIE成员的下一级TRIEBLOCK索引更改为指向所述新的滑翔TRIEBLOCK。
优选地,当所述获得的共用IP地址长度大于0且为4的整数倍时,该方法还包括:
将所述可共用的滑翔TRIE成员的滑翔TRIE类型更改为表示所述可共用的滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且存在滑翔地址信息。
优选地,当所述新路由的剩余掩码的长度大于4时,该方法还包括:
将所述新的滑翔TRIEBLOCK中新路由或所述旧路由对应的滑翔TRIE成员的滑翔TRIE类型更改为无下一级滑翔TRIEBLOCK,且存在滑翔地址信息。
优选地,当在所述路由表中删除路由时,该方法还包括:
查找删除的路由的IP地址的最后一级滑翔TRIE成员;将所述最后一级滑翔TRIE成员的路由索引删除。
优选地,当所述最后一级滑翔TRIE成员的滑翔TRIE类型表示无下一级滑翔TRIEBLOCK,且存在滑翔地址信息时,该方法还包括:
将所述最后一级滑翔TRIE成员的滑翔TRIE类型更改为表示所述最后一级滑翔TRIE成员无下一级滑翔TRIEBLOCK,且无滑翔地址信息。
优选地,当所述最后一级滑翔TRIE成员的滑翔地址长度大于22时,该方法还包括:
将所述最后一级滑翔TRIE成员的滑翔地址长度清零;
将所述最后一级滑翔TRIE成员的滑翔地址索引在所述滑翔地址表中对应的滑翔地址删除,释放该滑翔地址索引。
优选地,当所述最后一级滑翔TRIE成员的滑翔地址长度小于等于22时,该方法还包括:
将所述最后一级滑翔TRIE成员的滑翔地址长度清零;
将所述最后一级滑翔TRIE成员的滑翔地址删除。
优选地,还包括:
遍历所述删除的路由的IP地址的各级滑翔TRIEBLOCK,计算各级滑翔TRIEBLOCK中路由索引有效的滑翔TRIE成员数;
删除计算得到的滑翔TRIE成员数为1的滑翔TRIEBLOCK;
将删除的滑翔TRIEBLOCK中,路由索引有效的滑翔TRIE成员的路由索引保存到所述路由索引有效的滑翔TRIE成员对应的路由信息对应的上一级滑翔TRIE成员的路由索引中。
优选地,当所述路由索引有效的滑翔TRIE成员的滑翔TRIE类型表示所述路由索引有效的滑翔TRIE成员存在下一级滑翔TRIEBLOCK时,该方法还包括:
将所述路由索引有效的滑翔TRIE成员的下一级TRIEBLOCK索引保存到所述上一级滑翔TRIE成员的下一级TRIEBLOCK索引中;
将所述上一级滑翔TRIE成员的滑翔TRIE类型更改为所述上一级滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且存在滑翔地址信息。
优选地,当所述路由索引有效的滑翔TRIE成员的滑翔TRIE类型表示所述路由索引有效的滑翔TRIE成员无下一级滑翔TRIEBLOCK时,该方法还包括:
将所述上一级滑翔TRIE成员的滑翔TRIE类型更改为所述上一级滑翔TRIE成员无下一级滑翔TRIEBLOCK,且存在滑翔地址信息。
优选地,当所述上一级滑翔TRIE成员的滑翔TRIE类型表示所述上一级滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且无滑翔地址信息时,该方法还包括:
若所述路由索引有效的滑翔TRIE成员的滑翔TRIE类型表示所述路由索引有效的滑翔TRIE成员无滑翔地址信息,将所述路由索引有效的滑翔TRIE成员对应的IP地址保存到所述上一级滑翔TRIE成员的滑翔地址中,将所述上一级滑翔TRIE成员的滑翔地址长度更改为4。
优选地,当所述路由索引有效的滑翔TRIE成员的滑翔TRIE类型表示所述路由索引有效的滑翔TRIE成员存在滑翔地址信息时,该方法还包括:
计算所述路由索引有效的滑翔TRIE成员对应的IP地址,和滑翔地址的长度之和,将计算得到的长度之和保存到所述上一级滑翔TRIE成员的滑翔地址长度中;
若计算得到的长度之和小于等于22,将所述路由索引有效的滑翔TRIE成员对应的IP地址,和滑翔地址保存到所述上一级滑翔TRIE成员的滑翔地址中;
否则,将所述路由索引有效的滑翔TRIE成员对应的IP地址,和滑翔地址保存到所述滑翔地址表中,并将所述滑翔地址表中对应的滑翔地址索引保存到所述上一级滑翔TRIE成员的滑翔地址索引中。
优选地,当所述上一级滑翔TRIE成员的滑翔TRIE类型表示所述上一级滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且存在滑翔地址信息时,该方法还包括:
若所述路由索引有效的滑翔TRIE成员的滑翔TRIE类型表示所述路由索引有效的滑翔TRIE成员无滑翔地址信息,计算所述路由索引有效的滑翔TRIE成员对应的IP地址,和所述上一级滑翔TRIE成员的滑翔地址的长度之和,否则计算所述路由索引有效的滑翔TRIE成员对应的IP地址,所述路由索引有效的滑翔TRIE成员的滑翔地址,和所述上一级滑翔TRIE成员的滑翔地址的长度之和;
将计算得到的长度之和保存到所述上一级滑翔TRIE成员的滑翔地址长度中;
若计算得到的长度之和小于等于22,将所述路由索引有效的滑翔TRIE成员对应的IP地址,所述上一级路滑翔TRIE成员的滑翔地址,或所述路由索引有效的滑翔TRIE成员对应的IP地址,所述路由索引有效的滑翔TRIE成员的滑翔地址,和所述上一级路滑翔TRIE成员的滑翔地址,保存到所述上一级滑翔TRIE成员的滑翔地址中;
否则,将所述路由索引有效的滑翔TRIE成员对应的IP地址,所述上一级路滑翔TRIE成员的滑翔地址,或所述路由索引有效的滑翔TRIE成员对应的IP地址,所述路由索引有效的滑翔TRIE成员的滑翔地址,和所述上一级路滑翔TRIE成员的滑翔地址,保存到所述滑翔地址表中,并将所述滑翔地址表中对应的滑翔地址索引保存到所述上一级滑翔TRIE成员的滑翔地址索引中。
本发明还提出了一种路由器,至少包括:
配置模块,用于配置路由表和滑翔地址表;所述路由表至少包括一级滑翔多分支树结构块TRIEBLOCK,每一级滑翔TRIEBLOCK包括16个滑翔多分支树结构TRIE成员,每一个滑翔TRIE成员包括滑翔TRIE类型、滑翔地址/滑翔地址索引、滑翔地址长度、路由索引和下一级TRIEBLOCK索引;所述滑翔地址表包括滑翔地址和对应的滑翔地址索引;
查找模块,用于在第k级滑翔TRIEBLOCK中,查找互联网协议IP地址中第(4k-3)到4k位地址对应的滑翔TRIE成员;其中,k为大于等于1的整数;
获取模块,用于检测到查找到的滑翔TRIE成员的滑翔TRIE类型表示该滑翔TRIE成员无下一级滑翔TRIEBLOCK,且无滑翔地址信息,且查找到的滑翔TRIE成员的路由索引有效,根据所述查找到的滑翔TRIE成员的路由索引获取下一级路由信息;
检测到k大于等于2,且查找到的滑翔TRIE成员的路由索引无效,根据在第(k-1)级滑翔TRIEBLOCK中查找到的滑翔TRIE成员的路由索引获取下一级路由信息;
检测到所述查找到的滑翔TRIE成员的滑翔TRIE类型表示所述查找到的滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且无滑翔地址信息,根据下一级TRIEBLOCK索引获取第(k+1)级TRIEBLOCK信息。
优选地,还包括:
比较模块,用于检测到所述查找到的滑翔TRIE成员的滑翔TRIE类型表示所述查找到的滑翔TRIE成员存在滑翔地址信息,且所述查找到的滑翔TRIE成员的滑翔地址长度小于或等于22,比较所述查找到的滑翔TRIE成员的滑翔地址与所述IP地址中第(4k+1)到(4k+M)位地址;检测到所述查找到的滑翔TRIE成员的滑翔地址长度大于22,根据所述查找到的滑翔TRIE成员的滑翔地址索引在所述滑翔地址表中查找对应的滑翔地址;比较查找到的滑翔地址与所述IP地址中第(4k+1)到(4k+M)位地址;并将比较结果发送给所述获取模块;
所述获取模块,还用于检测到所述比较结果为不相同,且k大于等于2,根据在第(k-1)级滑翔TRIEBLOCK中查找到的滑翔TRIE成员的路由索引获取下一级路由信息;其中,所述M为所述查找到的滑翔TRIE成员的滑翔地址长度;
检测到所述查找到的滑翔TRIE成员的滑翔TRIE类型表示所述查找到的滑翔TRIE成员无下一级滑翔TRIEBLOCK,且所述比较结果为相同,根据所述查找到的滑翔TRIE成员的路由索引获取下一级路由信息。
优选地,所述获取模块,还用于:
检测到所述查找到的滑翔TRIE成员的滑翔TRIE类型表示所述查找到的滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且所述比较结果为相同,根据所述查找到的滑翔TRIE成员的下一级TRIEBLOCK索引获取下一级TRIEBLOCK信息。
优选地,所述查找模块,还用于:
查找新路由的IP地址的最后一级可共用的滑翔TRIEBLOCK对应的可共用的滑翔TRIE成员;
所述路由器还包括:
保存模块,用于检测到查找到的可共用的滑翔TRIE成员的滑翔TRIE类型表示所述可共用的滑翔TRIE成员无下一级滑翔TRIEBLOCK,且无滑翔地址信息,将所述新路由保存到所述可共用的滑翔TRIE成员的路由索引中;将新路由的IP地址的剩余IP地址段的长度保存到所述可共用的滑翔TRIE成员的滑翔地址长度中;检测到所述剩余IP地址段的长度小于等于22,将所述剩余IP地址段保存到所述可共用的滑翔TRIE成员的滑翔地址中;否则将所述剩余IP地址段保存到所述滑翔地址表中,并将所述剩余IP地址段对应的滑翔地址索引保存到所述可共用的滑翔TRIE成员的滑翔地址索引中;
更改模块,用于将所述可共用的滑翔TRIE成员的滑翔TRIE类型更改为表示所述可共用的滑翔TRIE成员无下一级滑翔TRIEBLOCK,且存在滑翔地址信息。
优选地,所述保存模块,还用于:
检测到所述可共用的滑翔TRIE成员的滑翔TRIE类型表示所述可共用滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且无滑翔地址信息,且所述新路由的掩码长度在所述可共用的滑翔TRIEBLOCK的掩码长度范围内,将所述新路由保存到所述可共用的滑翔TRIE成员的路由索引中。
优选地,还包括:
申请模块,用于申请一级新的滑翔TRIEBLOCK;
所述获取模块,还用于:检测到所述可共用的滑翔TRIE成员的滑翔TRIE类型表示所述可共用滑翔TRIE成员存在滑翔地址信息,且所述可共用的滑翔TRIE成员的滑翔地址长度小于等于22,获取所述可共用滑翔TRIE成员的滑翔地址;
所述查找模块,还用于:
检测到所述可共用的滑翔TRIE成员的滑翔地址长度大于22,根据所述可共用的滑翔TRIE成员的滑翔地址索引在所述滑翔地址表中查找滑翔地址;
所述比较模块,还用于:
按照每4比特逐级递减的方法,逐级比较获得的或查找到的滑翔地址与所述新路由的IP地址的剩余IP地址段,得到共用IP地址长度;
所述更改模块,还用于:
检测到获得的共用IP地址长度为0,将所述可共用滑翔TRIE成员的滑翔TRIE类型更改为表示所述查找到的滑翔TRIE成员与下一级滑翔TRIE成员之间无滑翔地址信息;
所述保存模块,还用于:
检测到所述获得的共用IP地址长度大于0且为4的整数倍时,将所述获得的共用IP地址长度保存到所述可共用的滑翔TRIE成员的滑翔地址长度;当所述获得的共用IP地址长度小于等于22,将所述获得的共用IP地址保存到所述共用的滑翔TRIE成员的滑翔地址中;检测到所述获得的共用IP地址长度大于22,并将所述获得的共用IP地址保存到所述滑翔地址表中,将所述获得的共用IP地址对应的滑翔地址索引保存到所述可共用的滑翔TRIE成员的滑翔地址索引中;将所述新路由和所述可共用的滑翔TRIE成员对应的旧路由保存到所述新的滑翔TRIEBLOCK中对应的滑翔TRIE成员的路由索引中。
优选地,所述保存模块,还用于:
检测到所述可共用的滑翔TRIE成员的滑翔TRIE类型表示所述可共用滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且存在滑翔地址信息,将所述可共用的滑翔TRIE成员的下一级TRIEBLOCK索引保存到所述新路由和所述旧路由对应的滑翔TRIE成员的下一级TRIEBLOCK索引中;
所述更改模块,还用于:
将所述可共用的滑翔TRIE成员的下一级TRIEBLOCK索引更改为指向所述新的滑翔TRIEBLOCK;
检测到所述可共用的滑翔TRIE成员的滑翔TRIE类型表示所述可共用的滑翔TRIE成员无下一级滑翔TRIEBLOCK,且存在滑翔地址信息,将所述可共用的滑翔TRIE成员的下一级TRIEBLOCK索引更改为指向所述新的滑翔TRIEBLOCK;
检测到所述获得的共用IP地址长度大于0且为4的整数倍,将所述可共用的滑翔TRIE成员的滑翔TRIE类型更改为表示所述可共用的滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且存在滑翔地址信息;
检测到所述新路由的剩余掩码的长度大于4,将所述新的滑翔TRIEBLOCK中新路由或所述旧路由对应的滑翔TRIE成员的滑翔TRIE类型更改为无下一级滑翔TRIEBLOCK,且存在滑翔地址信息。
优选地,所述查找模块,还用于:
检测到在所述路由表中删除路由,查找删除的路由的IP地址的最后一级滑翔TRIE成员;
所述路由器,还包括:
删除模块,用于将所述最后一级滑翔TRIE成员的路由索引删除;
所述更改模块,还用于:
检测到所述最后一级滑翔TRIE成员的滑翔TRIE类型表示无下一级滑翔TRIEBLOCK,且存在滑翔地址信息,将所述最后一级滑翔TRIE成员的滑翔TRIE类型更改为表示所述最后一级滑翔TRIE成员无下一级滑翔TRIEBLOCK,且无滑翔地址信息。
优选地,所述删除模块,还用于:
检测到所述最后一级滑翔TRIE成员的滑翔地址长度大于22,将所述最后一级滑翔TRIE成员的滑翔地址长度清零;将所述最后一级滑翔TRIE成员的滑翔地址索引在所述滑翔地址表中对应的滑翔地址删除,释放该滑翔地址索引;
检测到所述最后一级滑翔TRIE成员的滑翔地址长度小于等于22,将所述最后一级滑翔TRIE成员的滑翔地址长度清零;将所述最后一级滑翔TRIE成员的滑翔地址删除。
优选地,还包括:
计算模块,用于遍历所述删除的路由的IP地址的各级滑翔TRIEBLOCK,计算各级滑翔TRIEBLOCK中路由索引有效的滑翔TRIE成员数;
所述删除模块,还用于:
删除计算得到的滑翔TRIE成员数为1的滑翔TRIEBLOCK;
所述保存模块,还用于:
将删除的滑翔TRIEBLOCK中,路由索引有效的滑翔TRIE成员的路由索引保存到所述路由索引有效的滑翔TRIE成员对应的路由信息对应的上一级滑翔TRIE成员的路由索引中。
优选地,所述保存模块,还用于:
检测到所述路由索引有效的滑翔TRIE成员的滑翔TRIE类型表示所述路由索引有效的滑翔TRIE成员存在下一级滑翔TRIEBLOCK,将所述路由索引有效的滑翔TRIE成员的下一级TRIEBLOCK索引保存到所述上一级滑翔TRIE成员的下一级TRIEBLOCK索引中;
所述更改模块,还用于:
将所述上一级滑翔TRIE成员的滑翔TRIE类型更改为所述上一级滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且存在滑翔地址信息;
检测到所述路由索引有效的滑翔TRIE成员的滑翔TRIE类型表示所述路由索引有效的滑翔TRIE成员无下一级滑翔TRIEBLOCK,将所述上一级滑翔TRIE成员的滑翔TRIE类型更改为所述上一级滑翔TRIE成员无下一级滑翔TRIEBLOCK,且存在滑翔地址信息;
检测到所述上一级滑翔TRIE成员的滑翔TRIE类型表示所述上一级滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且无滑翔地址信息,检测到所述路由索引有效的滑翔TRIE成员的滑翔TRIE类型表示所述路由索引有效的滑翔TRIE成员无滑翔地址信息,将所述路由索引有效的滑翔TRIE成员对应的IP地址保存到所述上一级滑翔TRIE成员的滑翔地址中,将所述上一级滑翔TRIE成员的滑翔地址长度更改为4。
优选地,所述计算模块,还用于:
检测到所述路由索引有效的滑翔TRIE成员的滑翔TRIE类型表示所述路由索引有效的滑翔TRIE成员存在滑翔地址信息,计算所述路由索引有效的滑翔TRIE成员对应的IP地址,和滑翔地址的长度之和;
所述保存模块,还用于:
将计算得到的长度之和保存到所述上一级滑翔TRIE成员的滑翔地址长度中;检测到计算得到的长度之和小于等于22,将所述路由索引有效的滑翔TRIE成员对应的IP地址,和滑翔地址保存到所述上一级滑翔TRIE成员的滑翔地址中;检测到计算得到的长度之和大于22,将所述路由索引有效的滑翔TRIE成员对应的IP地址,和滑翔地址保存到所述滑翔地址表中,并将所述滑翔地址表中对应的滑翔地址索引保存到所述上一级滑翔TRIE成员的滑翔地址索引中。
优选地,所述计算模块,还用于:
检测到所述上一级滑翔TRIE成员的滑翔TRIE类型表示所述上一级滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且存在滑翔地址信息,检测到所述路由索引有效的滑翔TRIE成员的滑翔TRIE类型表示所述路由索引有效的滑翔TRIE成员无滑翔地址信息,计算所述路由索引有效的滑翔TRIE成员对应的IP地址,和所述上一级滑翔TRIE成员的滑翔地址的长度之和;检测到所述路由索引有效的滑翔TRIE成员的滑翔TRIE类型表示所述路由索引有效的滑翔TRIE成员存在滑翔地址信息,计算所述路由索引有效的滑翔TRIE成员对应的IP地址,所述路由索引有效的滑翔TRIE成员的滑翔地址,和所述上一级滑翔TRIE成员的滑翔地址的长度之和;
所述保存模块,还用于:
将计算得到的长度之和保存到所述上一级滑翔TRIE成员的滑翔地址长度中;
检测到计算得到的长度之和小于等于22,将所述路由索引有效的滑翔TRIE成员对应的IP地址,所述上一级路滑翔TRIE成员的滑翔地址,或所述路由索引有效的滑翔TRIE成员对应的IP地址,所述路由索引有效的滑翔TRIE成员的滑翔地址,和所述上一级路滑翔TRIE成员的滑翔地址,保存到所述上一级滑翔TRIE成员的滑翔地址中;
检测到计算得到的长度之和大于22,将所述路由索引有效的滑翔TRIE成员对应的IP地址,所述上一级路滑翔TRIE成员的滑翔地址,或所述路由索引有效的滑翔TRIE成员对应的IP地址,所述路由索引有效的滑翔TRIE成员的滑翔地址,和所述上一级路滑翔TRIE成员的滑翔地址,保存到所述滑翔地址表中,并将所述滑翔地址表中对应的滑翔地址索引保存到所述上一级滑翔TRIE成员的滑翔地址索引中。
与现有技术相比,本发明包括:配置路由表和滑翔地址表,路由表至少包括一级滑翔多分支树结构块TRIEBLOCK,每一级滑翔TRIEBLOCK包括16个滑翔多分支树结构TRIE成员,每一个滑翔TRIE成员包括滑翔TRIE类型、滑翔地址/滑翔地址索引、滑翔地址长度、路由索引和下一级TRIEBLOCK索引;滑翔地址表包括滑翔地址和对应的滑翔地址索引,通过本发明的技术方案,通过滑翔TRIE成员中的滑翔地址或滑翔地址索引可以滑翔过中间没有路由的TRIEBLOCK,减少了TRIEBLOCK级数,从而加快了查找速度。
附图说明
下面对本发明实施例中的附图进行说明,实施例中的附图是用于对本发明的进一步理解,与说明书一起用于解释本发明,并不构成对本发明保护范围的限制。
图1为现有的路由查找方法的流程图;
图2为本发明的路由查找方法的流程图;
图3为本发明的路由器的结构组成图。
具体实施方式
为了便于本领域技术人员的理解,下面结合附图对本发明作进一步的描述,并不能用来限制本发明的保护范围。
参见图2,本发明提出了一种路由查找方法,配置路由表和滑翔地址表。
路由表为滑翔TRIE4结构,至少包括一级滑翔多分支树结构块TRIEBLOCK,每一级滑翔TRIEBLOCK包括16个滑翔多分支树结构TRIE成员,每一个滑翔TRIE成员包括滑翔TRIE类型、滑翔地址/滑翔地址索引、滑翔地址长度、路由索引和下一级TRIEBLOCK索引;滑翔地址表包括滑翔地址和对应的滑翔地址索引。
其中,滑翔TRIE类型包括以下四种类型:
类型TYPE0:表示当前滑翔TRIE成员无下一级滑翔TRIEBLOCK,且无滑翔地址信息。
TYPE1:表示当前滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且无滑翔地址信息。
TYPE2:表示当前滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且存在滑翔地址信息。
TYPE3:表示当前滑翔TRIE成员无下一级滑翔TRIEBLOCK,且存在滑翔地址信息。
滑翔TRIE类型可以采用2比特来表示,“00”为TYPE0,“01”为TYPE1,“10”为TYPE2,“11”为TYPE3。
滑翔地址/滑翔地址索引可以采用22比特来表示。
滑翔地址长度可以采用8比特来表示。
路由索引可以采用14比特来表示。
下一级TRIEBLOCK索引可以采用18比特来表示。
该方法包括:
步骤200、在第k级滑翔TRIEBLOCK中,查找互联网协议IP地址中第(4k-3)到4k位地址对应的滑翔TRIE成员;其中,k为大于等于1的整数。
步骤201、当查找到的滑翔TRIE成员的滑翔TRIE类型为TYPE0,且查找到的滑翔TRIE成员的路由索引有效时,根据查找到的滑翔TRIE成员的路由索引获取下一级路由信息。
本发明的路由查找方法中,当k大于等于2,且查找到的滑翔TRIE成员的路由索引无效时,该方法还包括:
根据在第(k-1)级滑翔TRIEBLOCK中查找到的滑翔TRIE成员的路由索引获取下一级路由信息。
本发明的路由查找方法中,当查找到的滑翔TRIE成员的滑翔TRIE类型为TYPE1时,该方法还包括:
根据下一级TRIEBLOCK索引获取第(k+1)级TRIEBLOCK信息。
本发明的路由查找方法中,当查找到的滑翔TRIE成员的滑翔TRIE类型为TYPE2或TYPE3时,该方法还包括:
当查找到的滑翔TRIE成员的滑翔地址长度小于或等于22时,比较查找到的滑翔TRIE成员的滑翔地址与IP地址中第(4k+1)到(4k+M)位地址;
当查找到的滑翔TRIE成员的滑翔地址长度大于22时,根据查找到的滑翔TRIE成员的滑翔地址索引在滑翔地址表中查找对应的滑翔地址;比较查找到的滑翔地址与IP地址中第(4k+1)到(4k+M)位地址;
当比较结果为不相同,且k大于等于2时,根据在第(k-1)级滑翔TRIEBLOCK中查找到的滑翔TRIE成员的路由索引获取下一级路由信息;其中,M为查找到的滑翔TRIE成员的滑翔地址长度。
本发明的路由查找方法中,当查找到的滑翔TRIE成员的滑翔TRIE类型为TYPE0或TYPE3时,该方法还包括:
根据查找到的滑翔TRIE成员的路由索引获取下一级路由信息。
本发明的路由查找方法中,当查找到的滑翔TRIE成员的滑翔TRIE类型为TYPE1或TYPE2,且比较结果为相同时,该方法还包括:
根据所述查找到的滑翔TRIE成员的下一级TRIEBLOCK索引获取下一级TRIEBLOCK信息。
本发明的路由查找方法中,当在路由表中添加新路由时,该方法还包括:
查找新路由的IP地址的最后一级可共用的滑翔TRIEBLOCK对应的可共用的滑翔TRIE成员;
当查找到的可共用的滑翔TRIE成员的滑翔TRIE类型为TYPE0时,将新路由保存到可共用的滑翔TRIE成员的路由索引中;
将可共用的滑翔TRIE成员的滑翔TRIE类型更改为TYPE3;
将新路由的IP地址的剩余IP地址段的长度保存到可共用的滑翔TRIE成员的滑翔地址长度中;
当剩余IP地址段的长度小于等于22时,将剩余IP地址段保存到可共用的滑翔TRIE成员的滑翔地址中;否则将剩余IP地址段保存到滑翔地址表中,并将剩余IP地址段对应的滑翔地址索引保存到可共用的滑翔TRIE成员的滑翔地址索引中。
本发明的路由查找方法中,当可共用的滑翔TRIE成员的滑翔TRIE类型为TYPE1,且新路由的掩码长度在可共用的滑翔TRIEBLOCK的掩码长度范围内时,该方法还包括:
将新路由保存到可共用的滑翔TRIE成员的路由索引中。
本发明的路由查找方法中,当可共用的滑翔TRIE成员的滑翔TRIE类型为TYPE2或TYPE3时,该方法还包括:
当可共用的滑翔TRIE成员的滑翔地址长度小于等于22时,获取可共用滑翔TRIE成员的滑翔地址;当可共用的滑翔TRIE成员的滑翔地址长度大于22时,根据可共用的滑翔TRIE成员的滑翔地址索引在滑翔地址表中查找滑翔地址;
按照每4比特逐级递减的方法,逐级比较获得的或查找到的滑翔地址与新路由的IP地址的剩余IP地址段,得到共用IP地址长度;
当获得的共用IP地址长度为0时,将可共用滑翔TRIE成员的滑翔TRIE类型更改为TYPE1;
当获得的共用IP地址长度大于0且为4的整数倍时,将获得的共用IP地址长度保存到可共用的滑翔TRIE成员的滑翔地址长度;
当获得的共用IP地址长度小于等于22时,将获得的共用IP地址保存到共用的滑翔TRIE成员的滑翔地址中;当获得的共用IP地址长度大于22时,并将获得的共用IP地址保存到滑翔地址表中,将获得的共用IP地址对应的滑翔地址索引保存到可共用的滑翔TRIE成员的滑翔地址索引中;
申请一级新的滑翔TRIEBLOCK,将新路由和可共用的滑翔TRIE成员对应的旧路由保存到新的滑翔TRIEBLOCK中对应的滑翔TRIE成员的路由索引中。
本发明的路由查找方法中,当可共用的滑翔TRIE成员的滑翔TRIE类型为TYPE2时,该方法还包括:
将可共用的滑翔TRIE成员的下一级TRIEBLOCK索引保存到新路由和旧路由对应的滑翔TRIE成员的下一级TRIEBLOCK索引中;
将可共用的滑翔TRIE成员的下一级TRIEBLOCK索引更改为指向新的滑翔TRIEBLOCK。
本发明的路由查找方法中,当可共用的滑翔TRIE成员的滑翔TRIE类型为TYPE3时,该方法还包括:
将可共用的滑翔TRIE成员的下一级TRIEBLOCK索引更改为指向新的滑翔TRIEBLOCK。
本发明的路由查找方法中,当获得的共用IP地址长度大于0且为4的整数倍时,该方法还包括:
将可共用的滑翔TRIE成员的滑翔TRIE类型更改为TYPE2。
本发明的路由查找方法中,当新路由的剩余掩码的长度大于4时,该方法还包括:
将新的滑翔TRIEBLOCK中新路由或旧路由对应的滑翔TRIE成员的滑翔TRIE类型更改为TYPE3。
本发明的路由查找方法中,当在路由表中删除路由时,该方法还包括:
查找删除的路由的IP地址的最后一级滑翔TRIE成员;将最后一级滑翔TRIE成员的路由索引删除。
本发明的路由查找方法中,当最后一级滑翔TRIE成员的滑翔TRIE类型为TYPE3时,该方法还包括:
将最后一级滑翔TRIE成员的滑翔TRIE类型更改为TYPE0。
本发明的路由查找方法中,当最后一级滑翔TRIE成员的滑翔地址长度大于22时,该方法还包括:
将最后一级滑翔TRIE成员的滑翔地址长度清零;
将最后一级滑翔TRIE成员的滑翔地址索引在滑翔地址表中对应的滑翔地址删除,释放该滑翔地址索引。
本发明的路由查找方法中,当最后一级滑翔TRIE成员的滑翔地址长度小于等于22时,该方法还包括:
将最后一级滑翔TRIE成员的滑翔地址长度清零;
将最后一级滑翔TRIE成员的滑翔地址删除。
本发明的路由查找方法中,还包括:
遍历删除的路由的IP地址的各级滑翔TRIEBLOCK,计算各级滑翔TRIEBLOCK中路由索引有效的滑翔TRIE成员数;
删除计算得到的滑翔TRIE成员数为1的滑翔TRIEBLOCK;
将删除的滑翔TRIEBLOCK中,路由索引有效的滑翔TRIE成员的路由索引保存到路由索引有效的滑翔TRIE成员对应的路由信息对应的上一级滑翔TRIE成员的路由索引中。
本发明的路由查找方法中,当路由索引有效的滑翔TRIE成员的滑翔TRIE类型为TYPE1或TYPE2时,该方法还包括:
将路由索引有效的滑翔TRIE成员的下一级TRIEBLOCK索引保存到上一级滑翔TRIE成员的下一级TRIEBLOCK索引中;
将上一级滑翔TRIE成员的滑翔TRIE类型更改为上一级滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且存在滑翔地址信息。
本发明的路由查找方法中,当路由索引有效的滑翔TRIE成员的滑翔TRIE类型为TYPE0或TYPE3时,该方法还包括:
将上一级滑翔TRIE成员的滑翔TRIE类型更改为TYPE3。。
本发明的路由查找方法中,当上一级滑翔TRIE成员的滑翔TRIE类型为TYPE3时,该方法还包括:
若路由索引有效的滑翔TRIE成员的滑翔TRIE类型为TYPE0或TYPE1,将路由索引有效的滑翔TRIE成员对应的IP地址保存到上一级滑翔TRIE成员的滑翔地址中,将上一级滑翔TRIE成员的滑翔地址长度更改为4。
本发明的路由查找方法中,当路由索引有效的滑翔TRIE成员的滑翔TRIE类型为TYPE2或TYPE3时,该方法还包括:
计算路由索引有效的滑翔TRIE成员对应的IP地址,和滑翔地址的长度之和,将计算得到的长度之和保存到上一级滑翔TRIE成员的滑翔地址长度中;
若计算得到的长度之和小于等于22,将路由索引有效的滑翔TRIE成员对应的IP地址,和滑翔地址保存到上一级滑翔TRIE成员的滑翔地址中;
否则,将路由索引有效的滑翔TRIE成员对应的IP地址,和滑翔地址保存到滑翔地址表中,并将滑翔地址表中对应的滑翔地址索引保存到上一级滑翔TRIE成员的滑翔地址索引中。
本发明的路由查找方法中,当上一级滑翔TRIE成员的滑翔TRIE类型为TYPE2时,该方法还包括:
若路由索引有效的滑翔TRIE成员的滑翔TRIE类型为TYPE0或TYPE1,计算路由索引有效的滑翔TRIE成员对应的IP地址,和上一级滑翔TRIE成员的滑翔地址的长度之和,否则计算路由索引有效的滑翔TRIE成员对应的IP地址,路由索引有效的滑翔TRIE成员的滑翔地址,和上一级滑翔TRIE成员的滑翔地址的长度之和;
将计算得到的长度之和保存到上一级滑翔TRIE成员的滑翔地址长度中;
若计算得到的长度之和小于等于22,将路由索引有效的滑翔TRIE成员对应的IP地址,上一级路滑翔TRIE成员的滑翔地址,或路由索引有效的滑翔TRIE成员对应的IP地址,路由索引有效的滑翔TRIE成员的滑翔地址,和上一级路滑翔TRIE成员的滑翔地址,保存到上一级滑翔TRIE成员的滑翔地址中;
否则,将路由索引有效的滑翔TRIE成员对应的IP地址,上一级路滑翔TRIE成员的滑翔地址,或路由索引有效的滑翔TRIE成员对应的IP地址,路由索引有效的滑翔TRIE成员的滑翔地址,和上一级路滑翔TRIE成员的滑翔地址,保存到滑翔地址表中,并将滑翔地址表中对应的滑翔地址索引保存到上一级滑翔TRIE成员的滑翔地址索引中。
本发明的路由表采用滑翔TRIE4结构,通过滑翔TRIE成员中的滑翔地址或滑翔地址索引可以滑翔过中间没有路由的TRIEBLOCK,减少了TRIEBLOCK级数,从而加快了查找速度。
参见图3,本发明还提出了一种路由器,至少包括:
配置模块,用于配置路由表和滑翔地址表;路由表至少包括一级滑翔多分支树结构块TRIEBLOCK,每一级滑翔TRIEBLOCK包括16个滑翔多分支树结构TRIE成员,每一个滑翔TRIE成员包括滑翔TRIE类型、滑翔地址/滑翔地址索引、滑翔地址长度、路由索引和下一级TRIEBLOCK索引;滑翔地址表包括滑翔地址和对应的滑翔地址索引;
查找模块,用于在第k级滑翔TRIEBLOCK中,查找互联网协议IP地址中第(4k-3)到4k位地址对应的滑翔TRIE成员;其中,k为大于等于1的整数;
获取模块,用于检测到查找到的滑翔TRIE成员的滑翔TRIE类型表示该滑翔TRIE成员无下一级滑翔TRIEBLOCK,且无滑翔地址信息,且查找到的滑翔TRIE成员的路由索引有效,根据查找到的滑翔TRIE成员的路由索引获取下一级路由信息。
本发明的路由器中,获取模块,还用于:
检测到k大于等于2,且查找到的滑翔TRIE成员的路由索引无效,根据在第(k-1)级滑翔TRIEBLOCK中查找到的滑翔TRIE成员的路由索引获取下一级路由信息。
本发明的路由器中,获取模块,还用于:
检测到查找到的滑翔TRIE成员的滑翔TRIE类型为TYPE0,根据下一级TRIEBLOCK索引获取第(k+1)级TRIEBLOCK信息。
本发明的路由器中,还包括:
比较模块,用于检测到查找到的滑翔TRIE成员的滑翔TRIE类型为TYPE2或TYPE3,且查找到的滑翔TRIE成员的滑翔地址长度小于或等于22,比较查找到的滑翔TRIE成员的滑翔地址与IP地址中第(4k+1)到(4k+M)位地址;检测到查找到的滑翔TRIE成员的滑翔地址长度大于22,根据查找到的滑翔TRIE成员的滑翔地址索引在滑翔地址表中查找对应的滑翔地址;比较查找到的滑翔地址与IP地址中第(4k+1)到(4k+M)位地址;并将比较结果发送给获取模块;
获取模块,还用于检测到比较结果为不相同,且k大于等于2,根据在第(k-1)级滑翔TRIEBLOCK中查找到的滑翔TRIE成员的路由索引获取下一级路由信息;其中,M为查找到的滑翔TRIE成员的滑翔地址长度。
本发明的路由器中,获取模块,还用于:
检测到查找到的滑翔TRIE成员的滑翔TRIE类型为TYPE0或TYPE3,且比较结果为相同,根据查找到的滑翔TRIE成员的路由索引获取下一级路由信息。
本发明的路由器中,获取模块,还用于:
检测到查找到的滑翔TRIE成员的滑翔TRIE类型为TYPE1或TYPE2,且比较结果为相同,根据查找到的滑翔TRIE成员的下一级TRIEBLOCK索引获取下一级TRIEBLOCK信息。
本发明的路由器中,查找模块,还用于:
查找新路由的IP地址的最后一级可共用的滑翔TRIEBLOCK对应的可共用的滑翔TRIE成员;
路由器还包括:
保存模块,用于检测到查找到的可共用的滑翔TRIE成员的滑翔TRIE类型为TYPE0,将新路由保存到可共用的滑翔TRIE成员的路由索引中;将新路由的IP地址的剩余IP地址段的长度保存到可共用的滑翔TRIE成员的滑翔地址长度中;检测到剩余IP地址段的长度小于等于22,将剩余IP地址段保存到可共用的滑翔TRIE成员的滑翔地址中;否则将剩余IP地址段保存到滑翔地址表中,并将剩余IP地址段对应的滑翔地址索引保存到可共用的滑翔TRIE成员的滑翔地址索引中;
更改模块,用于将可共用的滑翔TRIE成员的滑翔TRIE类型更改为TYPE3。
本发明的路由器中,保存模块,还用于:
检测到可共用的滑翔TRIE成员的滑翔TRIE类型为TYPE1,且新路由的掩码长度在可共用的滑翔TRIEBLOCK的掩码长度范围内,将新路由保存到可共用的滑翔TRIE成员的路由索引中。
本发明的路由器中,还包括:
申请模块,用于申请一级新的滑翔TRIEBLOCK;
获取模块,还用于:检测到可共用的滑翔TRIE成员的滑翔TRIE类型为TYPE2或TYPE3,且可共用的滑翔TRIE成员的滑翔地址长度小于等于22,获取可共用滑翔TRIE成员的滑翔地址;
查找模块,还用于:
检测到可共用的滑翔TRIE成员的滑翔地址长度大于22,根据可共用的滑翔TRIE成员的滑翔地址索引在滑翔地址表中查找滑翔地址;
比较模块,还用于:
按照每4比特逐级递减的方法,逐级比较获得的或查找到的滑翔地址与新路由的IP地址的剩余IP地址段,得到共用IP地址长度;
更改模块,还用于:
检测到获得的共用IP地址长度为0,将可共用滑翔TRIE成员的滑翔TRIE类型更改为TYPE1;
保存模块,还用于:
检测到获得的共用IP地址长度大于0且为4的整数倍时,将获得的共用IP地址长度保存到可共用的滑翔TRIE成员的滑翔地址长度;当获得的共用IP地址长度小于等于22,将获得的共用IP地址保存到共用的滑翔TRIE成员的滑翔地址中;检测到获得的共用IP地址长度大于22,并将获得的共用IP地址保存到滑翔地址表中,将获得的共用IP地址对应的滑翔地址索引保存到可共用的滑翔TRIE成员的滑翔地址索引中;将新路由和可共用的滑翔TRIE成员对应的旧路由保存到新的滑翔TRIEBLOCK中对应的滑翔TRIE成员的路由索引中。
本发明的路由器中,保存模块,还用于:
检测到可共用的滑翔TRIE成员的滑翔TRIE类型为TYPE2,将可共用的滑翔TRIE成员的下一级TRIEBLOCK索引保存到新路由和旧路由对应的滑翔TRIE成员的下一级TRIEBLOCK索引中;
更改模块,还用于:
将可共用的滑翔TRIE成员的下一级TRIEBLOCK索引更改为指向新的滑翔TRIEBLOCK。
本发明的路由器中,更改模块,还用于:
检测到可共用的滑翔TRIE成员的滑翔TRIE类型为TYPE3,将可共用的滑翔TRIE成员的下一级TRIEBLOCK索引更改为指向新的滑翔TRIEBLOCK。
本发明的路由器中,更改模块,还用于:
检测到获得的共用IP地址长度大于0且为4的整数倍,将可共用的滑翔TRIE成员的滑翔TRIE类型更改为TYPE2。
本发明的路由器中,更改模块,还用于:
检测到新路由的剩余掩码的长度大于4,将新的滑翔TRIEBLOCK中新路由或旧路由对应的滑翔TRIE成员的滑翔TRIE类型更改为TYPE3。
本发明的路由器中,查找模块,还用于:
检测到在路由表中删除路由,查找删除的路由的IP地址的最后一级滑翔TRIE成员;
路由器,还包括:
删除模块,用于将最后一级滑翔TRIE成员的路由索引删除。
本发明的路由器中,更改模块,还用于:
检测到最后一级滑翔TRIE成员的滑翔TRIE类型为TYPE3,将最后一级滑翔TRIE成员的滑翔TRIE类型更改为TYPE0。
本发明的路由器中,删除模块,还用于:
检测到最后一级滑翔TRIE成员的滑翔地址长度大于22,将最后一级滑翔TRIE成员的滑翔地址长度清零;将最后一级滑翔TRIE成员的滑翔地址索引在滑翔地址表中对应的滑翔地址删除,释放该滑翔地址索引。
本发明的路由器中,删除模块,还用于:
检测到最后一级滑翔TRIE成员的滑翔地址长度小于等于22,将最后一级滑翔TRIE成员的滑翔地址长度清零;将最后一级滑翔TRIE成员的滑翔地址删除。
本发明的路由器中,还包括:
计算模块,用于遍历删除的路由的IP地址的各级滑翔TRIEBLOCK,计算各级滑翔TRIEBLOCK中路由索引有效的滑翔TRIE成员数;
删除模块,还用于:
删除计算得到的滑翔TRIE成员数为1的滑翔TRIEBLOCK;
保存模块,还用于:
将删除的滑翔TRIEBLOCK中,路由索引有效的滑翔TRIE成员的路由索引保存到路由索引有效的滑翔TRIE成员对应的路由信息对应的上一级滑翔TRIE成员的路由索引中。
本发明的路由器中,保存模块,还用于:
检测到路由索引有效的滑翔TRIE成员的滑翔TRIE类型为TYPE1或TYPE2,将路由索引有效的滑翔TRIE成员的下一级TRIEBLOCK索引保存到上一级滑翔TRIE成员的下一级TRIEBLOCK索引中;
更改模块,还用于:
将上一级滑翔TRIE成员的滑翔TRIE类型更改为TYPE2。
本发明的路由器中,更改模块,还用于:
检测到路由索引有效的滑翔TRIE成员的滑翔TRIE类型为TYPE0或TYPE3,将上一级滑翔TRIE成员的滑翔TRIE类型更改为TYPE3。
本发明的路由器中,保存模块,还用于:
检测到上一级滑翔TRIE成员的滑翔TRIE类型为TYPE1,检测到路由索引有效的滑翔TRIE成员的滑翔TRIE类型为TYPE0或TYPE1,将路由索引有效的滑翔TRIE成员对应的IP地址保存到上一级滑翔TRIE成员的滑翔地址中,将上一级滑翔TRIE成员的滑翔地址长度更改为4。
本发明的路由器中,计算模块,还用于:
检测到路由索引有效的滑翔TRIE成员的滑翔TRIE类型为TYPE2或TYPE3,计算路由索引有效的滑翔TRIE成员对应的IP地址,和滑翔地址的长度之和;
保存模块,还用于:
将计算得到的长度之和保存到上一级滑翔TRIE成员的滑翔地址长度中;检测到计算得到的长度之和小于等于22,将路由索引有效的滑翔TRIE成员对应的IP地址,和滑翔地址保存到上一级滑翔TRIE成员的滑翔地址中;检测到计算得到的长度之和大于22,将路由索引有效的滑翔TRIE成员对应的IP地址,和滑翔地址保存到滑翔地址表中,并将滑翔地址表中对应的滑翔地址索引保存到上一级滑翔TRIE成员的滑翔地址索引中。
本发明的路由器中,计算模块,还用于:
检测到上一级滑翔TRIE成员的滑翔TRIE类型为TYPE2,检测到路由索引有效的滑翔TRIE成员的滑翔TRIE类型为TYPE0或TYPE1,计算路由索引有效的滑翔TRIE成员对应的IP地址,和上一级滑翔TRIE成员的滑翔地址的长度之和;检测到路由索引有效的滑翔TRIE成员的滑翔TRIE类型为TYPE2或TYPE3,计算路由索引有效的滑翔TRIE成员对应的IP地址,路由索引有效的滑翔TRIE成员的滑翔地址,和上一级滑翔TRIE成员的滑翔地址的长度之和;
保存模块,还用于:
将计算得到的长度之和保存到上一级滑翔TRIE成员的滑翔地址长度中;
检测到计算得到的长度之和小于等于22,将路由索引有效的滑翔TRIE成员对应的IP地址,上一级路滑翔TRIE成员的滑翔地址,或路由索引有效的滑翔TRIE成员对应的IP地址,路由索引有效的滑翔TRIE成员的滑翔地址,和上一级路滑翔TRIE成员的滑翔地址,保存到上一级滑翔TRIE成员的滑翔地址中;
检测到计算得到的长度之和大于22,将路由索引有效的滑翔TRIE成员对应的IP地址,上一级路滑翔TRIE成员的滑翔地址,或路由索引有效的滑翔TRIE成员对应的IP地址,路由索引有效的滑翔TRIE成员的滑翔地址,和上一级路滑翔TRIE成员的滑翔地址,保存到滑翔地址表中,并将滑翔地址表中对应的滑翔地址索引保存到上一级滑翔TRIE成员的滑翔地址索引中。
需要说明的是,以上所述的实施例仅是为了便于本领域的技术人员理解而已,并不用于限制本发明的保护范围,在不脱离本发明的发明构思的前提下,本领域技术人员对本发明所做出的任何显而易见的替换和改进等均在本发明的保护范围之内。
Claims (36)
1.一种路由查找方法,其特征在于,配置路由表和滑翔地址表;
所述路由表至少包括一级滑翔多分支树结构块TRIEBLOCK,每一级滑翔TRIEBLOCK包括16个滑翔多分支树结构TRIE成员,每一个滑翔TRIE成员包括滑翔TRIE类型、滑翔地址/滑翔地址索引、滑翔地址长度、路由索引和下一级TRIEBLOCK索引;所述滑翔地址表包括滑翔地址和对应的滑翔地址索引;
该方法包括:
在第k级滑翔TRIEBLOCK中,查找互联网协议IP地址中第(4k-3)到4k位地址对应的滑翔TRIE成员;其中,k为大于等于1的整数;
当查找到的滑翔TRIE成员的滑翔TRIE类型表示该滑翔TRIE成员无下一级滑翔TRIEBLOCK,且无滑翔地址信息,且查找到的滑翔TRIE成员的路由索引有效时,根据所述查找到的滑翔TRIE成员的路由索引获取下一级路由信息。
2.根据权利要求1所述的路由查找方法,其特征在于,当k大于等于2,且查找到的滑翔TRIE成员的路由索引无效时,该方法还包括:
根据在第(k-1)级滑翔TRIEBLOCK中查找到的滑翔TRIE成员的路由索引获取下一级路由信息。
3.根据权利要求1所述的路由查找方法,其特征在于,当所述查找到的滑翔TRIE成员的滑翔TRIE类型表示所述查找到的滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且无滑翔地址信息时,该方法还包括:
根据下一级TRIEBLOCK索引获取第(k+1)级TRIEBLOCK信息。
4.根据权利要求1所述的路由查找方法,其特征在于,当所述查找到的滑翔TRIE成员的滑翔TRIE类型表示所述查找到的滑翔TRIE成员存在滑翔地址信息时,该方法还包括:
当所述查找到的滑翔TRIE成员的滑翔地址长度小于或等于22时,比较所述查找到的滑翔TRIE成员的滑翔地址与所述IP地址中第(4k+1)到(4k+M)位地址;
当所述查找到的滑翔TRIE成员的滑翔地址长度大于22时,根据所述查找到的滑翔TRIE成员的滑翔地址索引在所述滑翔地址表中查找对应的滑翔地址;比较查找到的滑翔地址与所述IP地址中第(4k+1)到(4k+M)位地址;
当比较结果为不相同,且k大于等于2时,根据在第(k-1)级滑翔TRIEBLOCK中查找到的滑翔TRIE成员的路由索引获取下一级路由信息;其中,所述M为所述查找到的滑翔TRIE成员的滑翔地址长度。
5.根据权利要求4所述的路由查找方法,其特征在于,当所述查找到的滑翔TRIE成员的滑翔TRIE类型表示所述查找到的滑翔TRIE成员无下一级滑翔TRIEBLOCK,且所述比较结果为相同时,该方法还包括:
根据所述查找到的滑翔TRIE成员的路由索引获取下一级路由信息。
6.根据权利要求4所述的路由查找方法,其特征在于,当所述查找到的滑翔TRIE成员的滑翔TRIE类型表示所述查找到的滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且所述比较结果为相同时,该方法还包括:
根据所述查找到的滑翔TRIE成员的下一级TRIEBLOCK索引获取下一级TRIEBLOCK信息。
7.根据权利要求1所述的路由查找方法,其特征在于,当在所述路由表中添加新路由时,该方法还包括:
查找新路由的IP地址的最后一级可共用的滑翔TRIEBLOCK对应的可共用的滑翔TRIE成员;
当查找到的可共用的滑翔TRIE成员的滑翔TRIE类型表示所述可共用的滑翔TRIE成员无下一级滑翔TRIEBLOCK,且无滑翔地址信息时,将所述新路由保存到所述可共用的滑翔TRIE成员的路由索引中;
将所述可共用的滑翔TRIE成员的滑翔TRIE类型更改为表示所述可共用的滑翔TRIE成员无下一级滑翔TRIEBLOCK,且存在滑翔地址信息;
将新路由的IP地址的剩余IP地址段的长度保存到所述可共用的滑翔TRIE成员的滑翔地址长度中;
当所述剩余IP地址段的长度小于等于22时,将所述剩余IP地址段保存到所述可共用的滑翔TRIE成员的滑翔地址中;否则将所述剩余IP地址段保存到所述滑翔地址表中,并将所述剩余IP地址段对应的滑翔地址索引保存到所述可共用的滑翔TRIE成员的滑翔地址索引中。
8.根据权利要求7所述的路由查找方法,其特征在于,当所述可共用的滑翔TRIE成员的滑翔TRIE类型表示所述可共用滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且无滑翔地址信息,且所述新路由的掩码长度在所述可共用的滑翔TRIEBLOCK的掩码长度范围内时,该方法还包括:
将所述新路由保存到所述可共用的滑翔TRIE成员的路由索引中。
9.根据权利要求7所述的路由查找方法,其特征在于,当所述可共用的滑翔TRIE成员的滑翔TRIE类型表示所述可共用滑翔TRIE成员存在滑翔地址信息时,该方法还包括:
当所述可共用的滑翔TRIE成员的滑翔地址长度小于等于22时,获取所述可共用滑翔TRIE成员的滑翔地址;当所述可共用的滑翔TRIE成员的滑翔地址长度大于22时,根据所述可共用的滑翔TRIE成员的滑翔地址索引在所述滑翔地址表中查找滑翔地址;
按照每4比特逐级递减的方法,逐级比较获得的或查找到的滑翔地址与所述新路由的IP地址的剩余IP地址段,得到共用IP地址长度;
当获得的共用IP地址长度为0时,将所述可共用滑翔TRIE成员的滑翔TRIE类型更改为表示所述查找到的滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且无滑翔地址信息;
当所述获得的共用IP地址长度大于0且为4的整数倍时,将所述获得的共用IP地址长度保存到所述可共用的滑翔TRIE成员的滑翔地址长度;
当所述获得的共用IP地址长度小于等于22时,将所述获得的共用IP地址保存到所述共用的滑翔TRIE成员的滑翔地址中;当所述获得的共用IP地址长度大于22时,并将所述获得的共用IP地址保存到所述滑翔地址表中,将所述获得的共用IP地址对应的滑翔地址索引保存到所述可共用的滑翔TRIE成员的滑翔地址索引中;
申请一级新的滑翔TRIEBLOCK,将所述新路由和所述可共用的滑翔TRIE成员对应的旧路由保存到所述新的滑翔TRIEBLOCK中对应的滑翔TRIE成员的路由索引中。
10.根据权利要求9所述的路由查找方法,其特征在于,当所述可共用的滑翔TRIE成员的滑翔TRIE类型表示所述可共用滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且存在滑翔地址信息时,该方法还包括:
将所述可共用的滑翔TRIE成员的下一级TRIEBLOCK索引保存到所述新路由和所述旧路由对应的滑翔TRIE成员的下一级TRIEBLOCK索引中;
将所述可共用的滑翔TRIE成员的下一级TRIEBLOCK索引更改为指向所述新的滑翔TRIEBLOCK。
11.根据权利要求9所述的路由查找方法,其特征在于,当所述可共用的滑翔TRIE成员的滑翔TRIE类型表示所述可共用的滑翔TRIE成员无下一级滑翔TRIEBLOCK,且存在滑翔地址信息时,该方法还包括:
将所述可共用的滑翔TRIE成员的下一级TRIEBLOCK索引更改为指向所述新的滑翔TRIEBLOCK。
12.根据权利要求11所述的路由查找方法,其特征在于,当所述获得的共用IP地址长度大于0且为4的整数倍时,该方法还包括:
将所述可共用的滑翔TRIE成员的滑翔TRIE类型更改为表示所述可共用的滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且存在滑翔地址信息。
13.根据权利要求12所述的路由查找方法,其特征在于,当所述新路由的剩余掩码的长度大于4时,该方法还包括:
将所述新的滑翔TRIEBLOCK中新路由或所述旧路由对应的滑翔TRIE成员的滑翔TRIE类型更改为无下一级滑翔TRIEBLOCK,且存在滑翔地址信息。
14.根据权利要求1所述的路由查找方法,其特征在于,当在所述路由表中删除路由时,该方法还包括:
查找删除的路由的IP地址的最后一级滑翔TRIE成员;将所述最后一级滑翔TRIE成员的路由索引删除。
15.根据权利要求14所述的路由查找方法,其特征在于,当所述最后一级滑翔TRIE成员的滑翔TRIE类型表示无下一级滑翔TRIEBLOCK,且存在滑翔地址信息时,该方法还包括:
将所述最后一级滑翔TRIE成员的滑翔TRIE类型更改为表示所述最后一级滑翔TRIE成员无下一级滑翔TRIEBLOCK,且无滑翔地址信息。
16.根据权利要求15所述的路由查找方法,其特征在于,当所述最后一级滑翔TRIE成员的滑翔地址长度大于22时,该方法还包括:
将所述最后一级滑翔TRIE成员的滑翔地址长度清零;
将所述最后一级滑翔TRIE成员的滑翔地址索引在所述滑翔地址表中对应的滑翔地址删除,释放该滑翔地址索引。
17.根据权利要求15所述的路由查找方法,其特征在于,当所述最后一级滑翔TRIE成员的滑翔地址长度小于等于22时,该方法还包括:
将所述最后一级滑翔TRIE成员的滑翔地址长度清零;
将所述最后一级滑翔TRIE成员的滑翔地址删除。
18.根据权利要求14~17任意一项所述的路由查找方法,其特征在于,还包括:
遍历所述删除的路由的IP地址的各级滑翔TRIEBLOCK,计算各级滑翔TRIEBLOCK中路由索引有效的滑翔TRIE成员数;
删除计算得到的滑翔TRIE成员数为1的滑翔TRIEBLOCK;
将删除的滑翔TRIEBLOCK中,路由索引有效的滑翔TRIE成员的路由索引保存到所述路由索引有效的滑翔TRIE成员对应的路由信息对应的上一级滑翔TRIE成员的路由索引中。
19.根据权利要求18所述的路由查找方法,其特征在于,当所述路由索引有效的滑翔TRIE成员的滑翔TRIE类型表示所述路由索引有效的滑翔TRIE成员存在下一级滑翔TRIEBLOCK时,该方法还包括:
将所述路由索引有效的滑翔TRIE成员的下一级TRIEBLOCK索引保存到所述上一级滑翔TRIE成员的下一级TRIEBLOCK索引中;
将所述上一级滑翔TRIE成员的滑翔TRIE类型更改为所述上一级滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且存在滑翔地址信息。
20.根据权利要求18所述的路由查找方法,其特征在于,当所述路由索引有效的滑翔TRIE成员的滑翔TRIE类型表示所述路由索引有效的滑翔TRIE成员无下一级滑翔TRIEBLOCK时,该方法还包括:
将所述上一级滑翔TRIE成员的滑翔TRIE类型更改为所述上一级滑翔TRIE成员无下一级滑翔TRIEBLOCK,且存在滑翔地址信息。
21.根据权利要求18所述的路由查找方法,其特征在于,当所述上一级滑翔TRIE成员的滑翔TRIE类型表示所述上一级滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且无滑翔地址信息时,该方法还包括:
若所述路由索引有效的滑翔TRIE成员的滑翔TRIE类型表示所述路由索引有效的滑翔TRIE成员无滑翔地址信息,将所述路由索引有效的滑翔TRIE成员对应的IP地址保存到所述上一级滑翔TRIE成员的滑翔地址中,将所述上一级滑翔TRIE成员的滑翔地址长度更改为4。
22.根据权利要求21所述的路由查找方法,其特征在于,当所述路由索引有效的滑翔TRIE成员的滑翔TRIE类型表示所述路由索引有效的滑翔TRIE成员存在滑翔地址信息时,该方法还包括:
计算所述路由索引有效的滑翔TRIE成员对应的IP地址,和滑翔地址的长度之和,将计算得到的长度之和保存到所述上一级滑翔TRIE成员的滑翔地址长度中;
若计算得到的长度之和小于等于22,将所述路由索引有效的滑翔TRIE成员对应的IP地址,和滑翔地址保存到所述上一级滑翔TRIE成员的滑翔地址中;
否则,将所述路由索引有效的滑翔TRIE成员对应的IP地址,和滑翔地址保存到所述滑翔地址表中,并将所述滑翔地址表中对应的滑翔地址索引保存到所述上一级滑翔TRIE成员的滑翔地址索引中。
23.根据权利要求18所述的路由查找方法,其特征在于,当所述上一级滑翔TRIE成员的滑翔TRIE类型表示所述上一级滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且存在滑翔地址信息时,该方法还包括:
若所述路由索引有效的滑翔TRIE成员的滑翔TRIE类型表示所述路由索引有效的滑翔TRIE成员无滑翔地址信息,计算所述路由索引有效的滑翔TRIE成员对应的IP地址,和所述上一级滑翔TRIE成员的滑翔地址的长度之和,否则计算所述路由索引有效的滑翔TRIE成员对应的IP地址,所述路由索引有效的滑翔TRIE成员的滑翔地址,和所述上一级滑翔TRIE成员的滑翔地址的长度之和;
将计算得到的长度之和保存到所述上一级滑翔TRIE成员的滑翔地址长度中;
若计算得到的长度之和小于等于22,将所述路由索引有效的滑翔TRIE成员对应的IP地址,所述上一级路滑翔TRIE成员的滑翔地址,或所述路由索引有效的滑翔TRIE成员对应的IP地址,所述路由索引有效的滑翔TRIE成员的滑翔地址,和所述上一级路滑翔TRIE成员的滑翔地址,保存到所述上一级滑翔TRIE成员的滑翔地址中;
否则,将所述路由索引有效的滑翔TRIE成员对应的IP地址,所述上一级路滑翔TRIE成员的滑翔地址,或所述路由索引有效的滑翔TRIE成员对应的IP地址,所述路由索引有效的滑翔TRIE成员的滑翔地址,和所述上一级路滑翔TRIE成员的滑翔地址,保存到所述滑翔地址表中,并将所述滑翔地址表中对应的滑翔地址索引保存到所述上一级滑翔TRIE成员的滑翔地址索引中。
24.一种路由器,其特征在于,至少包括:
配置模块,用于配置路由表和滑翔地址表;所述路由表至少包括一级滑翔多分支树结构块TRIEBLOCK,每一级滑翔TRIEBLOCK包括16个滑翔多分支树结构TRIE成员,每一个滑翔TRIE成员包括滑翔TRIE类型、滑翔地址/滑翔地址索引、滑翔地址长度、路由索引和下一级TRIEBLOCK索引;所述滑翔地址表包括滑翔地址和对应的滑翔地址索引;
查找模块,用于在第k级滑翔TRIEBLOCK中,查找互联网协议IP地址中第(4k-3)到4k位地址对应的滑翔TRIE成员;其中,k为大于等于1的整数;
获取模块,用于检测到查找到的滑翔TRIE成员的滑翔TRIE类型表示该滑翔TRIE成员无下一级滑翔TRIEBLOCK,且无滑翔地址信息,且查找到的滑翔TRIE成员的路由索引有效,根据所述查找到的滑翔TRIE成员的路由索引获取下一级路由信息;
检测到k大于等于2,且查找到的滑翔TRIE成员的路由索引无效,根据在第(k-1)级滑翔TRIEBLOCK中查找到的滑翔TRIE成员的路由索引获取下一级路由信息;
检测到所述查找到的滑翔TRIE成员的滑翔TRIE类型表示所述查找到的滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且无滑翔地址信息,根据下一级TRIEBLOCK索引获取第(k+1)级TRIEBLOCK信息。
25.根据权利要求24所述的路由器,其特征在于,还包括:
比较模块,用于检测到所述查找到的滑翔TRIE成员的滑翔TRIE类型表示所述查找到的滑翔TRIE成员存在滑翔地址信息,且所述查找到的滑翔TRIE成员的滑翔地址长度小于或等于22,比较所述查找到的滑翔TRIE成员的滑翔地址与所述IP地址中第(4k+1)到(4k+M)位地址;检测到所述查找到的滑翔TRIE成员的滑翔地址长度大于22,根据所述查找到的滑翔TRIE成员的滑翔地址索引在所述滑翔地址表中查找对应的滑翔地址;比较查找到的滑翔地址与所述IP地址中第(4k+1)到(4k+M)位地址;并将比较结果发送给所述获取模块;
所述获取模块,还用于检测到所述比较结果为不相同,且k大于等于2,根据在第(k-1)级滑翔TRIEBLOCK中查找到的滑翔TRIE成员的路由索引获取下一级路由信息;其中,所述M为所述查找到的滑翔TRIE成员的滑翔地址长度;
检测到所述查找到的滑翔TRIE成员的滑翔TRIE类型表示所述查找到的滑翔TRIE成员无下一级滑翔TRIEBLOCK,且所述比较结果为相同,根据所述查找到的滑翔TRIE成员的路由索引获取下一级路由信息。
26.根据权利要求25所述的路由器,其特征在于,所述获取模块,还用于:
检测到所述查找到的滑翔TRIE成员的滑翔TRIE类型表示所述查找到的滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且所述比较结果为相同,根据所述查找到的滑翔TRIE成员的下一级TRIEBLOCK索引获取下一级TRIEBLOCK信息。
27.根据权利要求24所述的路由器,其特征在于,所述查找模块,还用于:
查找新路由的IP地址的最后一级可共用的滑翔TRIEBLOCK对应的可共用的滑翔TRIE成员;
所述路由器还包括:
保存模块,用于检测到查找到的可共用的滑翔TRIE成员的滑翔TRIE类型表示所述可共用的滑翔TRIE成员无下一级滑翔TRIEBLOCK,且无滑翔地址信息,将所述新路由保存到所述可共用的滑翔TRIE成员的路由索引中;将新路由的IP地址的剩余IP地址段的长度保存到所述可共用的滑翔TRIE成员的滑翔地址长度中;检测到所述剩余IP地址段的长度小于等于22,将所述剩余IP地址段保存到所述可共用的滑翔TRIE成员的滑翔地址中;否则将所述剩余IP地址段保存到所述滑翔地址表中,并将所述剩余IP地址段对应的滑翔地址索引保存到所述可共用的滑翔TRIE成员的滑翔地址索引中;
更改模块,用于将所述可共用的滑翔TRIE成员的滑翔TRIE类型更改为表示所述可共用的滑翔TRIE成员无下一级滑翔TRIEBLOCK,且存在滑翔地址信息。
28.根据权利要求27所述的路由器,其特征在于,所述保存模块,还用于:
检测到所述可共用的滑翔TRIE成员的滑翔TRIE类型表示所述可共用滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且无滑翔地址信息,且所述新路由的掩码长度在所述可共用的滑翔TRIEBLOCK的掩码长度范围内,将所述新路由保存到所述可共用的滑翔TRIE成员的路由索引中。
29.根据权利要求27所述的路由器,其特征在于,还包括:
申请模块,用于申请一级新的滑翔TRIEBLOCK;
所述获取模块,还用于:检测到所述可共用的滑翔TRIE成员的滑翔TRIE类型表示所述可共用滑翔TRIE成员存在滑翔地址信息,且所述可共用的滑翔TRIE成员的滑翔地址长度小于等于22,获取所述可共用滑翔TRIE成员的滑翔地址;
所述查找模块,还用于:
检测到所述可共用的滑翔TRIE成员的滑翔地址长度大于22,根据所述可共用的滑翔TRIE成员的滑翔地址索引在所述滑翔地址表中查找滑翔地址;
所述比较模块,还用于:
按照每4比特逐级递减的方法,逐级比较获得的或查找到的滑翔地址与所述新路由的IP地址的剩余IP地址段,得到共用IP地址长度;
所述更改模块,还用于:
检测到获得的共用IP地址长度为0,将所述可共用滑翔TRIE成员的滑翔TRIE类型更改为表示所述查找到的滑翔TRIE成员与下一级滑翔TRIE成员之间无滑翔地址信息;
所述保存模块,还用于:
检测到所述获得的共用IP地址长度大于0且为4的整数倍时,将所述获得的共用IP地址长度保存到所述可共用的滑翔TRIE成员的滑翔地址长度;当所述获得的共用IP地址长度小于等于22,将所述获得的共用IP地址保存到所述共用的滑翔TRIE成员的滑翔地址中;检测到所述获得的共用IP地址长度大于22,并将所述获得的共用IP地址保存到所述滑翔地址表中,将所述获得的共用IP地址对应的滑翔地址索引保存到所述可共用的滑翔TRIE成员的滑翔地址索引中;将所述新路由和所述可共用的滑翔TRIE成员对应的旧路由保存到所述新的滑翔TRIEBLOCK中对应的滑翔TRIE成员的路由索引中。
30.根据权利要求29所述的路由器,其特征在于,所述保存模块,还用于:
检测到所述可共用的滑翔TRIE成员的滑翔TRIE类型表示所述可共用滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且存在滑翔地址信息,将所述可共用的滑翔TRIE成员的下一级TRIEBLOCK索引保存到所述新路由和所述旧路由对应的滑翔TRIE成员的下一级TRIEBLOCK索引中;
所述更改模块,还用于:
将所述可共用的滑翔TRIE成员的下一级TRIEBLOCK索引更改为指向所述新的滑翔TRIEBLOCK;
检测到所述可共用的滑翔TRIE成员的滑翔TRIE类型表示所述可共用的滑翔TRIE成员无下一级滑翔TRIEBLOCK,且存在滑翔地址信息,将所述可共用的滑翔TRIE成员的下一级TRIEBLOCK索引更改为指向所述新的滑翔TRIEBLOCK;
检测到所述获得的共用IP地址长度大于0且为4的整数倍,将所述可共用的滑翔TRIE成员的滑翔TRIE类型更改为表示所述可共用的滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且存在滑翔地址信息;
检测到所述新路由的剩余掩码的长度大于4,将所述新的滑翔TRIEBLOCK中新路由或所述旧路由对应的滑翔TRIE成员的滑翔TRIE类型更改为无下一级滑翔TRIEBLOCK,且存在滑翔地址信息。
31.根据权利要求24所述的路由器,其特征在于,所述查找模块,还用于:
检测到在所述路由表中删除路由,查找删除的路由的IP地址的最后一级滑翔TRIE成员;
所述路由器,还包括:
删除模块,用于将所述最后一级滑翔TRIE成员的路由索引删除;
所述更改模块,还用于:
检测到所述最后一级滑翔TRIE成员的滑翔TRIE类型表示无下一级滑翔TRIEBLOCK,且存在滑翔地址信息,将所述最后一级滑翔TRIE成员的滑翔TRIE类型更改为表示所述最后一级滑翔TRIE成员无下一级滑翔TRIEBLOCK,且无滑翔地址信息。
32.根据权利要求31所述的路由器,其特征在于,所述删除模块,还用于:
检测到所述最后一级滑翔TRIE成员的滑翔地址长度大于22,将所述最后一级滑翔TRIE成员的滑翔地址长度清零;将所述最后一级滑翔TRIE成员的滑翔地址索引在所述滑翔地址表中对应的滑翔地址删除,释放该滑翔地址索引;
检测到所述最后一级滑翔TRIE成员的滑翔地址长度小于等于22,将所述最后一级滑翔TRIE成员的滑翔地址长度清零;将所述最后一级滑翔TRIE成员的滑翔地址删除。
33.根据权利要求31或32所述的路由器,其特征在于,还包括:
计算模块,用于遍历所述删除的路由的IP地址的各级滑翔TRIEBLOCK,计算各级滑翔TRIEBLOCK中路由索引有效的滑翔TRIE成员数;
所述删除模块,还用于:
删除计算得到的滑翔TRIE成员数为1的滑翔TRIEBLOCK;
所述保存模块,还用于:
将删除的滑翔TRIEBLOCK中,路由索引有效的滑翔TRIE成员的路由索引保存到所述路由索引有效的滑翔TRIE成员对应的路由信息对应的上一级滑翔TRIE成员的路由索引中。
34.根据权利要求33所述的路由器,其特征在于,所述保存模块,还用于:
检测到所述路由索引有效的滑翔TRIE成员的滑翔TRIE类型表示所述路由索引有效的滑翔TRIE成员存在下一级滑翔TRIEBLOCK,将所述路由索引有效的滑翔TRIE成员的下一级TRIEBLOCK索引保存到所述上一级滑翔TRIE成员的下一级TRIEBLOCK索引中;
所述更改模块,还用于:
将所述上一级滑翔TRIE成员的滑翔TRIE类型更改为所述上一级滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且存在滑翔地址信息;
检测到所述路由索引有效的滑翔TRIE成员的滑翔TRIE类型表示所述路由索引有效的滑翔TRIE成员无下一级滑翔TRIEBLOCK,将所述上一级滑翔TRIE成员的滑翔TRIE类型更改为所述上一级滑翔TRIE成员无下一级滑翔TRIEBLOCK,且存在滑翔地址信息;
检测到所述上一级滑翔TRIE成员的滑翔TRIE类型表示所述上一级滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且无滑翔地址信息,检测到所述路由索引有效的滑翔TRIE成员的滑翔TRIE类型表示所述路由索引有效的滑翔TRIE成员无滑翔地址信息,将所述路由索引有效的滑翔TRIE成员对应的IP地址保存到所述上一级滑翔TRIE成员的滑翔地址中,将所述上一级滑翔TRIE成员的滑翔地址长度更改为4。
35.根据权利要求34所述的路由器,其特征在于,所述计算模块,还用于:
检测到所述路由索引有效的滑翔TRIE成员的滑翔TRIE类型表示所述路由索引有效的滑翔TRIE成员存在滑翔地址信息,计算所述路由索引有效的滑翔TRIE成员对应的IP地址,和滑翔地址的长度之和;
所述保存模块,还用于:
将计算得到的长度之和保存到所述上一级滑翔TRIE成员的滑翔地址长度中;检测到计算得到的长度之和小于等于22,将所述路由索引有效的滑翔TRIE成员对应的IP地址,和滑翔地址保存到所述上一级滑翔TRIE成员的滑翔地址中;检测到计算得到的长度之和大于22,将所述路由索引有效的滑翔TRIE成员对应的IP地址,和滑翔地址保存到所述滑翔地址表中,并将所述滑翔地址表中对应的滑翔地址索引保存到所述上一级滑翔TRIE成员的滑翔地址索引中。
36.根据权利要求33所述的路由器,其特征在于,所述计算模块,还用于:
检测到所述上一级滑翔TRIE成员的滑翔TRIE类型表示所述上一级滑翔TRIE成员存在下一级滑翔TRIEBLOCK,且存在滑翔地址信息,检测到所述路由索引有效的滑翔TRIE成员的滑翔TRIE类型表示所述路由索引有效的滑翔TRIE成员无滑翔地址信息,计算所述路由索引有效的滑翔TRIE成员对应的IP地址,和所述上一级滑翔TRIE成员的滑翔地址的长度之和;检测到所述路由索引有效的滑翔TRIE成员的滑翔TRIE类型表示所述路由索引有效的滑翔TRIE成员存在滑翔地址信息,计算所述路由索引有效的滑翔TRIE成员对应的IP地址,所述路由索引有效的滑翔TRIE成员的滑翔地址,和所述上一级滑翔TRIE成员的滑翔地址的长度之和;
所述保存模块,还用于:
将计算得到的长度之和保存到所述上一级滑翔TRIE成员的滑翔地址长度中;
检测到计算得到的长度之和小于等于22,将所述路由索引有效的滑翔TRIE成员对应的IP地址,所述上一级路滑翔TRIE成员的滑翔地址,或所述路由索引有效的滑翔TRIE成员对应的IP地址,所述路由索引有效的滑翔TRIE成员的滑翔地址,和所述上一级路滑翔TRIE成员的滑翔地址,保存到所述上一级滑翔TRIE成员的滑翔地址中;
检测到计算得到的长度之和大于22,将所述路由索引有效的滑翔TRIE成员对应的IP地址,所述上一级路滑翔TRIE成员的滑翔地址,或所述路由索引有效的滑翔TRIE成员对应的IP地址,所述路由索引有效的滑翔TRIE成员的滑翔地址,和所述上一级路滑翔TRIE成员的滑翔地址,保存到所述滑翔地址表中,并将所述滑翔地址表中对应的滑翔地址索引保存到所述上一级滑翔TRIE成员的滑翔地址索引中。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410009315.2A CN104780100B (zh) | 2014-01-09 | 2014-01-09 | 一种路由查找方法和路由器 |
PCT/CN2014/083084 WO2015103868A1 (zh) | 2014-01-09 | 2014-07-25 | 一种路由查找方法和路由器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410009315.2A CN104780100B (zh) | 2014-01-09 | 2014-01-09 | 一种路由查找方法和路由器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104780100A true CN104780100A (zh) | 2015-07-15 |
CN104780100B CN104780100B (zh) | 2019-06-04 |
Family
ID=53523514
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410009315.2A Active CN104780100B (zh) | 2014-01-09 | 2014-01-09 | 一种路由查找方法和路由器 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104780100B (zh) |
WO (1) | WO2015103868A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105119834A (zh) * | 2015-07-17 | 2015-12-02 | 西安空间无线电技术研究所 | 一种基于复合trie树结构的源地址目的地址联合查找方法 |
CN108322394A (zh) * | 2018-04-02 | 2018-07-24 | 京信通信系统(中国)有限公司 | 路由表建立、查找、删除及状态变更方法和装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7099881B2 (en) * | 2002-12-06 | 2006-08-29 | Stmicroelectronics, Inc. | Method for increasing average storage capacity in a bit-mapped tree-based storage engine by using remappable prefix representations and a run-length encoding scheme that defines multi-length fields to compactly store IP prefixes |
CN1787477A (zh) * | 2004-12-09 | 2006-06-14 | 北京三星通信技术研究有限公司 | IPv6路由表的查找方法 |
CN100502353C (zh) * | 2005-09-22 | 2009-06-17 | 中兴通讯股份有限公司 | 信令流分发方法及信令分发处理单元 |
CN101577662B (zh) * | 2008-05-05 | 2012-04-04 | 华为技术有限公司 | 一种基于树形数据结构的最长前缀匹配方法和装置 |
-
2014
- 2014-01-09 CN CN201410009315.2A patent/CN104780100B/zh active Active
- 2014-07-25 WO PCT/CN2014/083084 patent/WO2015103868A1/zh active Application Filing
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105119834A (zh) * | 2015-07-17 | 2015-12-02 | 西安空间无线电技术研究所 | 一种基于复合trie树结构的源地址目的地址联合查找方法 |
CN105119834B (zh) * | 2015-07-17 | 2018-06-01 | 西安空间无线电技术研究所 | 一种基于复合trie树结构的源地址目的地址联合查找方法 |
CN108322394A (zh) * | 2018-04-02 | 2018-07-24 | 京信通信系统(中国)有限公司 | 路由表建立、查找、删除及状态变更方法和装置 |
CN108322394B (zh) * | 2018-04-02 | 2021-01-01 | 京信通信系统(中国)有限公司 | 路由表建立、查找、删除及状态变更方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104780100B (zh) | 2019-06-04 |
WO2015103868A1 (zh) | 2015-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9819637B2 (en) | Efficient longest prefix matching techniques for network devices | |
KR100745693B1 (ko) | Tcam 테이블 관리 방법 | |
US10284472B2 (en) | Dynamic and compressed trie for use in route lookup | |
US10148571B2 (en) | Jump on a match optimization for longest prefix match using a binary search tree | |
CN102484610B (zh) | 路由表建立方法和装置及路由表查找方法和装置 | |
US20140122791A1 (en) | System and method for packet classification and internet protocol lookup in a network environment | |
US10348646B2 (en) | Two-stage port-channel resolution in a multistage fabric switch | |
US20190294549A1 (en) | Hash Table-Based Mask Length Computation for Longest Prefix Match Caching | |
US20130294450A1 (en) | Optimized trie-based address lookup | |
US11570105B2 (en) | Dynamic route profile storage in a hardware trie routing table | |
CN102291472A (zh) | 一种网络地址查找方法及装置 | |
CN109921995A (zh) | 一种配置地址表的方法、fpga和应用该fpga的网络设备 | |
Pao et al. | A multi-pipeline architecture for high-speed packet classification | |
US10897422B2 (en) | Hybrid routing table for routing network traffic | |
TW201537918A (zh) | 用於靈活封包分類的方法和系統 | |
CN104780100A (zh) | 一种路由查找方法和路由器 | |
CN106789668B (zh) | 一种处理报文的方法和装置 | |
CN110995876B (zh) | 一种ip存储与查找的方法及装置 | |
US9025604B2 (en) | Scaling IPV4 at large datacenters with device level aggregation | |
CN105765922A (zh) | 流表项处理方法和装置 | |
JP2007221514A (ja) | ルータ装置、ルータ装置におけるルート決定方法 | |
US20180212877A1 (en) | Combining prefix lengths into a hash table | |
CN111327532A (zh) | 一种网络设备超大转发策略表容量的实现方法 | |
US7376657B1 (en) | Fast IPv6 address lookup using skip level processing on multi-bit tries | |
EP3319279B1 (en) | Ip routing lookup |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |