CN107948060A - 一种新型的路由表建立、以及ip路由查找方法和装置 - Google Patents
一种新型的路由表建立、以及ip路由查找方法和装置 Download PDFInfo
- Publication number
- CN107948060A CN107948060A CN201610892179.5A CN201610892179A CN107948060A CN 107948060 A CN107948060 A CN 107948060A CN 201610892179 A CN201610892179 A CN 201610892179A CN 107948060 A CN107948060 A CN 107948060A
- Authority
- CN
- China
- Prior art keywords
- node
- tree
- endpoint
- output port
- routing
- 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.)
- Withdrawn
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/58—Association of routers
- H04L45/586—Association of routers of virtual routers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/74591—Address table lookup; Address filtering using content-addressable memories [CAM]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例公开了一种新型的路由表建立、以及IP路由查找方法和装置,其中,所述路由表的建立方法包括:获取路由信息,所述路由信息包括虚拟路由转发域编号VRF_ID、互联网协议IP地址和所述IP地址对应的输出端口;根据所述VRF_ID和所述IP地址组合成一个路由条目区间;利用预设的哈希算法对所述路由条目区间的起始端点中的VRF_ID进行哈希运算,获得所述VRF_ID对应的哈希值;利用所有所述哈希值相等的起始端点生成一个树表;其中,所述树表的叶子节点包含所述起始端点对应的输出端口,且所述IP地址对应的输出端口与所述起始端点对应的输出端口相同;根据生成的所有树表构建主路由表。
Description
技术领域
本发明涉及分组交换技术领域,尤其涉及一种新型的路由表建立、以及IP路由查找方法和装置。
背景技术
随着因特网(Internet)的快速发展,路由表的规模也随之增大。为了能够降低路由表规模的增长速度以及提高地址空间的利用率,国际互联网工程任务组(IETF,InternetEngineering Task Force)为Internet提出了一种称之为无类域间路由(CIDR,ClasslessInter-Domain Routing)的地址结构,CIDR抛弃了传统基于类的地址分配方式,规定可以使用任意长度的网络地址部分,因此产生了“网络前缀”的概念。CIDR使用任意长度的网络前缀来代替传统分类地址中的网络号和子网号,而不是像分类地址中只能使用1字节、2字节和3字节的网络号;因此,在CIDR地址结构体系下,路由表的规模得到了一定控制;但是,网络前缀的查找让设计变得非常复杂,网络前缀的查找不仅需要与前缀比特位进行匹配查找,还需要考虑网络前缀的长度。
在现有技术中,现行的互联网协议(IP,Internet Protocol)路由交换设备通常采用三态内容寻址存储器(TCAM,Ternary Content Addressable Memory)实现IP地址最长前缀的查找。TCAM采用并行查找技术,使得查找速度和表项的条目数量无关。同时,为了实现较高的查找速度并得到最长前缀匹配(LPM,Longest Prefix Matching)的地址,在TCAM中要按照IP地址前缀的长度由长到短的顺序排列各类表项,最终可以实现路由表在一百多万条条目的情况下,每秒上亿次的查找速度。
上述TCAM技术的优势在于:并行查找使得一个时钟周期可以完成查找过程,且可以级联多个TCAM来增加查找表容量,其实现比较简单。但是,TCAM技术仍然存在一些不足:第一、TCAM在同一时钟周期内需要将待查找的关键字和TCAM路由表中的每一个条目进行比较,所以功耗比较大;第二、由于TCAM实现的结构是待查找关键字和配置的路由表的每个条目同时进行比较,因此每个条目都对应一个比较器,从而导致TCAM器件成本比较高,价格昂贵;第三、由于采用TCAM技术实现所需的比较器总数与路由表中的路由条目总数相等,因此,在实际应用中,在一定程度上限制了采用TCAM实现的路由表的规模。
发明内容
为解决上述技术问题,本发明实施例期望提供一种新型的路由表建立、以及IP路由查找方法和装置,用以减少路由条目的比较次数,从而减少电路中比较器的个数,降低实现的成本和功耗。
本发明的技术方案是这样实现的:
第一方面,本发明实施例提供了一种新型的路由表建立方法,所述方法包括:
获取路由信息;其中,所述路由信息包括虚拟路由转发域编号VRF_ID、互联网协议IP地址和所述IP地址对应的输出端口;
根据所述VRF_ID和所述IP地址组合成一个路由条目区间;
利用预设的哈希算法对所述路由条目区间的起始端点中的VRF_ID进行哈希运算,获得所述VRF_ID对应的哈希值;
利用所有所述哈希值相等的起始端点生成一个树表;其中,所述树表的叶子节点包含所述起始端点对应的输出端口,且所述IP地址对应的输出端口与所述起始端点对应的输出端口相同;
根据生成的所有树表构建主路由表。
在上述方案中,所述利用所有所述哈希值相等的起始端点生成一个树表;其中,所述树表的树节点不仅用于确定匹配的端点,还用于确定搜索路径。
在上述方案中,当所述树表为2-3树表时,所述利用所有所述哈希值相等的起始端点生成一个树表,具体包括:
将所有所述哈希值相等的起始端点按照由小到大的顺序排序,并将排序后的所有起始端点存放在数组a[n]中;
从所述数组a[n]中提取a[2×(i-1)]的数据作为所述树表的第一层从左至右的第i个节点的左端点;其中,1≤i≤(n+1)/2,n≥1;
从所述数组a[n]中提取a[2×(i-1)+1]的数据作为所述树表的第一层从左至右的第i个节点的右端点;
从所述数组a[n]中提取a[2×3(p-2)+2×3(p-1)×(k-1)]的数据作为所述树表的第p层从左至右的第k个节点的左端点;其中,p≥2,1≤k≤(log3t)-1,t为第p-1层的节点总数;
从所述数组a[n]中提取a[4×3(p-2)+2×3(p-1)×(k-1)]的数据作为所述树表的第p层从左至右的第k个节点的右端点。
在上述方案中,所述根据生成的所有树表构建主路由表,具体包括:根据所述哈希值索引的存储地址写入路由器对应的主路由表存储区,完成所述主路由表的构建。
第二方面,本发明实施例提供了一种IP路由查找方法,所述方法包括:
根据接收的IP数据包的输入端口和虚拟局域网编号VLAN_ID映射获取所述IP数据包对应的VRF_ID;
读取所述IP数据包中的目的IP地址,并将所述目的IP地址与所述VRF_ID组合成一条待查找路由条目;
利用所述哈希算法对所述待查找路由条目中的VRF_ID进行哈希运算获得哈希值;
根据所述哈希值查找所述主路由表,确定所述IP数据包的输出端口;其中,所述主路由表为权利要求1至4任一项所述的主路由表。
在上述方案中,所述根据所述哈希值查找所述主路由表,确定所述IP数据包的输出端口,具体包括:
将所述哈希值作为所述主路由表表项存储地址的索引,从所述主路由表中索引获得所述哈希值对应的树表节点;其中,所述树表节点即为所述主路由表的表项;
根据所述树表节点的内容,查找获得与所述待查找路由条目相匹配的端点,获取所述IP数据包的输出端口。
在上述方案中,所述根据所述树表节点的内容,查找获得与所述待查找路由条目相匹配的端点,获取所述IP数据包的输出端口,具体包括:
当所述节点内容中的节点类型为根节点或者中间节点时,根据所述待查找路由条目与所述节点端点的关系取出所述节点中的对应指针,并读取所述指针所指向的树表节点中的节点内容;
当所述节点内容中的节点类型为叶子节点时,根据所述待查找路由条目与所述叶子节点端点的关系,获取所述IP数据包的输出端口。
在上述方案中,当所述树表是2-3树表时,所述当所述节点内容中的节点类型为根节点或者中间节点时,根据所述待查找路由条目与所述节点端点的关系取出所述节点中的对应指针,并读取所述指针所指向的树表节点中的节点内容,具体包括:
当所述待查找路由条目小于所述节点的左端点时,取出所述节点中的左指针,读取所述左指针所指向的树表节点中的节点内容;
当所述待查找路由条目大于或等于所述节点的左端点,且小于所述节点的右端点时,取出所述节点中的中指针,读取所述中指针所指向的树表节点中的节点内容;
当所述待查找路由条目大于或等于所述节点的右端点时,取出所述节点中的右指针,读取所述右指针所指向的树表节点中的节点内容。
在上述方案中,当所述树表是2-3树表时,所述当所述节点内容中的节点类型为叶子节点时,根据所述待查找路由条目与所述叶子节点端点的关系,获取所述IP数据包的输出端口,具体包括:
当所述待查找路由条目与所述叶子节点的左端点相等时,将所述叶子节点的左端点对应的输出端口作为所述IP数据包的输出端口;
当所述待查找路由条目与所述叶子节点的右端点相等时,将所述叶子节点的右端点对应的输出端口作为所述IP数据包的输出端口;
当所述待查找路由条目大于所述叶子节点的左端点且小于所述叶子节点的右端点时,将所述叶子节点的左端点和右端点组成的区间对应的输出端口作为所述IP数据包的输出端口;
当所述待查找路由条目大于所述叶子节点的右端点时,将大于所述叶子节点右端点的对应输出端口作为所述IP数据包的输出端口。
在上述方案中,当本层节点处理完当前IP数据包的路由查找后,所述方法还包括:所述本层节点立即将所述当前IP数据包交给下一层节点处理,并对下一个IP数据包进行IP路由查找。
在上述方案中,所述方法还包括:在完成所述主路由表建立的同时,对所述主路由表进行备份。
在上述方案中,当需要对所述主路由表进行更新时,所述方法还包括:
根据新的配置规则调整所述树表的数据结构;
根据调整后的树表更新所述备份路由表;
从所述主路由表切换到所述备份路由表上进行IP路由的查找;
根据调整后的树表更新所述主路由表;
从所述备份路由表切换到所述主路由表上进行IP路由的查找。
第三方面,本发明实施例提供了一种新型的路由表建立装置,所述装置包括:第一获取单元、第一组合单元、第一运算单元、树表生成单元、构建单元和更新单元;其中,
所述第一获取单元,用于获取路由信息;其中,所述路由信息包括虚拟路由转发域编号VRF_ID、IP地址和所述IP地址对应的输出端口;
所述第一组合单元,用于根据所述VRF_ID和所述IP地址组合成一个路由条目区间;
所述第一运算单元,用于利用预设的哈希算法对所述路由条目区间的起始端点中的VRF_ID进行哈希运算,获得所述VRF_ID对应的哈希值;
所述树表生成单元,用于利用所有所述哈希值相等的起始端点生成一个树表;其中,所述树表的叶子节点包含所述起始端点对应的输出端口,且所述IP地址对应的输出端口与所述起始端点对应的输出端口相同;
所述构建单元,用于根据生成的所有树表构建主路由表。
在上述方案中,所述树表生成单元生成的所述树表的树节点不仅用于确定匹配的端点,还用于确定搜索路径。
在上述方案中,当所述树表为2-3树表时,所述树表生成单元,具体用于:
将所有所述哈希值相等的起始端点按照由小到大的顺序排序,并将排序后的所有起始端点存放在数组a[n]中;
从所述数组a[n]中提取a[2×(i-1)]的数据作为所述树表的第一层从左至右的第i个节点的左端点;其中,1≤i≤(n+1)/2,n≥1;
从所述数组a[n]中提取a[2×(i-1)+1]的数据作为所述树表的第一层从左至右的第i个节点的右端点;
从所述数组a[n]中提取a[2×3(p-2)+2×3(p-1)×(k-1)]的数据作为所述树表的第p层从左至右的第k个节点的左端点;其中,p≥2,1≤k≤(log3t)-1,t为第p-1层的节点总数;
从所述数组a[n]中提取a[4×3(p-2)+2×3(p-1)×(k-1)]的数据作为所述树表的第p层从左至右的第k个节点的右端点。
在上述方案中,所述构建单元,具体用于:根据所述哈希值索引的存储地址写入路由器对应的主路由表存储区,完成所述主路由表的构建。
第四方面,本发明实施例提供了一种新型的IP路由查找装置,所述装置包括:第二获取单元、第二组合单元、第二运算单元和查找单元;其中,
所述第二获取单元,用于根据接收的IP数据包的输入端口和虚拟局域网编号VLAN_ID映射获取所述IP数据包对应的VRF_ID;
所述第二组合单元,用于读取所述IP数据包中的目的IP地址,并将所述目的IP地址与所述VRF_ID组合成一条待查找路由条目;
所述第二运算单元,用于利用所述哈希算法对所述待查找路由条目中的VRF_ID进行哈希运算获得哈希值;
所述查找单元,用于根据所述哈希值查找所述主路由表,确定所述IP数据包的输出端口;其中,所述主路由表为所述路由表建立装置所构建的主路由表。
在上述方案中,所述查找单元,具体用于:
将所述哈希值作为所述主路由表表项存储地址的索引,从所述主路由表中索引获得所述哈希值对应的树表节点;其中,所述树表节点即为所述主路由表的表项;
根据所述树表节点的内容,查找获得与所述待查找路由条目相匹配的端点,获取所述IP数据包的输出端口。
在上述方案中,所述查找单元,具体用于:
当所述节点内容中的节点类型为根节点或者中间节点时,根据所述待查找路由条目与所述节点端点的关系取出所述节点中的对应指针,并读取所述指针所指向的树表节点中的节点内容;
当所述节点内容中的节点类型为叶子节点时,根据所述待查找路由条目与所述叶子节点端点的关系,获取所述IP数据包的输出端口。
在上述方案中,当所述树表为2-3树表时,所述查找单元,具体用于:
当所述待查找路由条目小于所述节点的左端点时,取出所述节点中的左指针,读取所述左指针所指向的树表节点中的节点内容;
当所述待查找路由条目大于或等于所述节点的左端点,且小于所述节点的右端点时,取出所述节点中的中指针,读取所述中指针所指向的树表节点中的节点内容;
当所述待查找路由条目大于或等于所述节点的右端点时,取出所述节点中的右指针,读取所述右指针所指向的树表节点中的节点内容。
在上述方案中,当所述树表为2-3树表时,所述查找单元,具体用于:
当所述待查找路由条目与所述叶子节点的左端点相等时,将所述叶子节点的左端点对应的输出端口作为所述IP数据包的输出端口;
当所述待查找路由条目与所述叶子节点的右端点相等时,将所述叶子节点的右端点对应的输出端口作为所述IP数据包的输出端口;
当所述待查找路由条目大于所述叶子节点的左端点且小于所述叶子节点的右端点时,将所述叶子节点的左端点和右端点组成的区间对应的输出端口作为所述IP数据包的输出端口;
当所述待查找路由条目大于所述叶子节点的右端点时,将大于所述叶子节点右端点的对应输出端口作为所述IP数据包的输出端口。
在上述方案中,所述查找单元,具体还用于:当本层节点处理完当前IP数据包的路由查找后,立即将所述当前IP数据包交给下一层节点处理,并对下一个IP数据包进行IP路由查找。
在上述方案中,所述构建单元,具体还用于:对所述主路由表进行备份。
在上述方案中,所述更新单元,具体用于:
根据新的配置规则调整所述树表的数据结构;
根据调整后的树表更新所述备份路由表;
从所述主路由表切换到所述备份路由表上进行IP路由的查找;
根据调整后的树表更新所述主路由表;
从所述备份路由表切换到所述主路由表上进行IP路由的查找。
本发明实施例提供了一种新型的路由表建立、以及IP路由查找方法和装置,该方法采用双哈希运算分别完成所述主路由表的构建和IP路由的查找,并且采用树形数据结构构建所述主路由表,从而使得实现该方法的电路结构变得简单可行。另外,在IP路由查找阶段,该方法利用哈希运算对对应的VRF_ID进行哈希值提取,通过所述哈希值完成对所述主路由表的快速查找,实现目的IP地址的快速匹配,从而减少了路由条目的比较次数,降低了实现成本。另外,从硬件实现的角度来讲,该方法使得实现的面积和功耗都远远小于TCAM。
附图说明
图1为本发明实施例提供的一种路由表建立方法的实现流程图;
图2为本发明实施例提供的一种树表生成方法示意图;
图3为本发明实施例提供的一种IP路由查找方法示意图;
图4为本发明实施例提供的一种根据所述哈希值查找所述主路由表的具体方法示意图;
图5为本发明实施例提供的一种根据所述树表节点的内容进行IP路由查找的具体方法示意图;
图6为本发明实施例提供的一种以2-3树表为例进行IP路由查找的具体方法示意图;
图7为本发明实施例提供的一种路由表更新方法示意图;
图8为本发明实施例提供的一种2-3树表的结构示意图;
图9为本发明实施例提供的一种2-3树表在所述主路由表中的存储格式示意图;
图10为本发明实施例提供的一种新型的路由表建立装置的结构示意图;
图11为本发明实施例提供的一种新型的IP路由查找装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
实施例一
如图1所示,该图给出了本发明实施例提供的一种新型的路由表建立方法,所述方法具体可以包括:
S110、获取路由信息;其中,所述路由信息包括虚拟路由转发域编号(VRF_ID,Virtual Route Forwarding ID)、互联网协议IP地址和所述IP地址对应的输出端口;
S120、根据所述VRF_ID和所述IP地址组合成一个路由条目区间;
例如,获取的路由信息包含的VRF_ID为8,目的IP地址为192.168.10.*,那么该目的IP地址对应的路由条目区间为8.192.168.10.0~8.192.168.10.255。
S130、利用预设的哈希算法对所述路由条目区间的起始端点中的VRF_ID进行哈希运算,获得所述VRF_ID对应的哈希值;
如上述例子,路由条目区间为8.192.168.10.0~8.192.168.10.255,容易得到该路由条目区间的起始端点为8.192.168.10.0,该端点的VRF_ID为该端点的第一个字节。
S140、利用所有哈希值相等的起始端点生成一个树表;其中,所述树表的叶子节点包含所述起始端点对应的输出端口,且所述IP地址对应的输出端口与所述起始端点对应的输出端口相同;
需要说明的是,所述树表可以是2-3树表,也可以是二叉树表或者多叉树表,只是2-3树表能够获得更好的查找时间。另外,所述树表与普通数据结构上的树表不同,所述树表的树节点不仅用于确定匹配的端点,还用于确定搜索路径。以2-3树表为例,对树表的构成进行说明。通常情况下,2-3树表由根节点、中间节点和叶子节点组成;其中,根节点包括节点类型、左指针、中指针、右指针和两个起始端点;同样地,中间节点也包括节点类型、左指针、中指针、右指针和两个起始端点;叶子节点包括节点类型、两个起始端点和两个起始端点分别对应的输出端口。容易理解地,指针用于指向指针地址指定的节点,在实际应用中,我们将两个起始端点中较小的那个起始端点作为节点的左端点,较大的那个起始端点作为节点的右端点,并用1比特来指示节点的类型。
S150、根据生成的所有树表构建主路由表。
需要说明的是,所述根据生成的所有树表构建主路由表,具体地,将生成的所有树表按照所述哈希值索引的存储地址写入路由器对应的主路由表存储区,完成所述主路由表的构建。为了方便后续对所述主路由表的更新,并在所述主路由表更新的同时避免出现丢包的情况,在完成所述主路由表构建的同时,将所述主路由表进行备份,写入备份路由表对应的存储区中。
示例性地,当所述树表为2-3树表时,所述利用所有哈希值相等的起始端点生成一个树表,如图2所示,具体可以包括:
S210、将所有哈希值相等的起始端点按照由小到大的顺序排序,并将排序后的所有起始端点存放在数组a[n]中;
需要说明的是,为了方便树表的构建,通常情况下,先将用于构建树表的起始端点按照由小到大的顺序排序。其中,数组a[n]中n的值为所有哈希值相等的起始端点的总数;
S220、从所述数组a[n]中提取a[2×(i-1)]的数据作为所述树表的第一层从左至右的第i个节点的左端点;其中,1≤i≤(n+1)/2,n≥1;
S230、从所述数组a[n]中提取a[2×(i-1)+1]的数据作为所述树表的第一层从左至右的第i个节点的右端点;
S240、从所述数组a[n]中提取a[2×3(p-2)+2×3(p-1)×(k-1)]的数据作为所述树表的第p层从左至右的第k个节点的左端点;其中,p≥2,1≤k≤(log3t)-1,t为第p-1层的节点总数;
S250、从所述数组a[n]中提取a[4×3(p-2)+2×3(p-1)×(k-1)]的数据作为所述树表的第p层从左至右的第k个节点的右端点。
需要说明的是,2-3树表的最底层为叶子层,记为第一层;叶子层的上一层为第二层,层数由下而上依次递增。二叉树表和多叉树表的生成方法与2-3树表类似,都是从数组a[n]中提取出对应的数据组成树形结构,只是数组的下标不同而已。
在完成所述主路由表的建立后,如图3所示,本发明实施例还提供了一种新型的IP路由查找方法,所述方法具体可以包括:
S310、根据接收的IP数据包的输入端口和虚拟局域网编号(VLAN_ID,VirtualLocal Area Network ID)映射获取所述IP数据包对应的VRF_ID;
需要说明的是,路由器可以根据接收的IP数据包的输入端口和VLAN_ID通过查表获得所述IP数据包对应的VRF_ID。
S320、读取所述IP数据包中的目的IP地址,并将所述目的IP地址与所述VRF_ID组合成一条待查找路由条目;
S330、利用所述哈希算法对所述待查找路由条目中的VRF_ID进行哈希运算获得哈希值;
需要说明的是,IP路由查找方法中所采用的哈希算法与所述主路由表建立方法中所采用的哈希算法是相同的。
S340、根据所述哈希值查找所述主路由表,确定所述IP数据包的输出端口。
示例性地,根据所述哈希值查找所述主路由表,确定所述IP数据包的输出端口,如图4所示,具体可以包括:
S410、将所述哈希值作为所述主路由表表项存储地址的索引,从所述主路由表中索引获得所述哈希值对应的树表节点;其中,所述树表节点就是所述主路由表的表项;
S420、根据所述树表节点的内容,查找获得与所述待查找路由条目相匹配的端点,获取所述IP数据包的输出端口。
示例性地,根据所述树表节点的内容,查找获得与所述待查找路由条目相匹配的端点,获取所述IP数据包的输出端口,如图5所示,具体可以包括:
S510、判断所述节点内容中的节点类型是否是叶子节点;如果是,执行步骤S530;否则,执行步骤S520;
S520、根据所述待查找路由条目与所述节点端点的关系取出所述节点中的对应指针,读取所述指针所指向的树表节点中的节点内容,并返回执行步骤S510;
S530、根据所述待查找路由条目与所述叶子节点端点的关系,获取所述IP数据包的输出端口。
为了方便对上述IP路由具体查找过程的理解,以下以所述树表为2-3树表为例,对所述根据所述树表节点的内容,查找获得与所述待查找路由条目相匹配的端点,获取所述IP数据包的输出端口的具体实现方法进行说明,如图6所示,具体可以包括:
S610、判断所述节点内容中的节点类型是否是叶子节点;如果是,则执行步骤S630;否则,执行步骤S620;
S620、判断所述待查找路由条目是否小于所述节点的左端点;如果是,执行步骤S621;否则,执行步骤S622;
S621、取出所述节点中的左指针,读取所述左指针所指向的树表节点中的节点内容,并返回执行步骤S610;
S622、判断所述待查找路由条目是否大于或等于所述节点的左端点,且小于所述节点的右端点;如果是,执行步骤S623;否则,执行步骤S624;
S623、取出所述节点中的中指针,读取所述中指针所指向的树表节点中的节点内容,并返回执行步骤S610;
S624、取出所述节点中的右指针,读取所述右指针所指向的树表节点中的节点内容,并返回执行步骤S610;
S630、判断所述待查找路由条目与所述叶子节点的左端点是否相等;如果是,执行步骤S631;否则,执行步骤S632;
S631、将所述叶子节点的左端点对应的输出端口作为所述IP数据包的输出端口;
S632、判断所述待查找路由条目与所述叶子节点的右端点是否相等;如果是,执行步骤S633;否则,执行步骤S634;
S633、将所述叶子节点的右端点对应的输出端口作为所述IP数据包的输出端口;
S634、判断所述待查找路由条目是否落在所述叶子节点的左端点和右端点之间;如果是,执行步骤S635;否则,执行步骤S636;
S635、将所述左端点和所述右端点组成的区间对应的输出端口作为所述IP数据包的输出端口;
S636、将大于所述右端点的对应输出端口作为所述IP数据包的输出端口。
需要说明的是,由于信息***性的增长,所以网络流量也迅速增大,为了使交换设备能够适应网络流量的需要,交换设备应该达到线速交换处理能力,因此目的IP的路由查找也需要能够达到线速处理能力。如果上述一个IP数据包的目的IP路由查找引擎满足设备的线速处理能力,那么在实际应用中,为了适应网络流量的需求,可以将树表进行水平分割,即查找引擎处理完本层节点的查找后,将当前处理的IP数据包交给下一层节点查找引擎处理,此时,本层节点查找引擎立即处理下一个IP数据包,而不必等待整个树表的查找过程结束才处理下一个IP数据包。
另外,电信级交换设备需要能够连续不间断地工作并且达到一个较小的丢包率,即使在更新所述主路由表的时候也不允许丢包;因此,在实际应用中,如图7所示,所述主路由表的更新方法具体可以包括:
S710、根据新的配置规则调整所述树表的数据结构;
S720、中央处理器CPU开始根据调整后的树表更新所述备份路由表;
S730、完成所述备份路由表的更新后,CPU请求硬件从所述主路由表切换到所述备份路由表上进行IP路由的查找;
S740、硬件完成路由表的切换后上报中断给CPU,CPU接收到中断后开始更新所述主路由表;
S750、CPU完成所述主路由表的更新后请求硬件从所述备份路由表切换到所述主路由表上进行IP路由的查找。
本发明实施例提供了一种新型的IP路由查找方法,该方法采用双哈希运算分别完成所述主路由表的构建和IP路由的查找,并且采用树形数据结构构建所述主路由表,从而使得实现该方法的电路结构变得简单可行。另外,在IP路由查找阶段,该方法利用哈希运算对对应的VRF_ID进行哈希值提取,通过所述哈希值完成对所述主路由表的快速查找,实现目的IP地址的快速匹配,从而减少了路由条目的比较次数,降低了实现成本。另外,从硬件实现的角度来讲,该方法使得实现的面积和功耗都远远小于TCAM。
实施例二
基于前述实施例相同的技术构思,本实施例将结合图8对前述实施例的技术方案作更为直观、详细的说明。
假设所述主路由表由一个2-3树表构成,如图8所示,且该树表包含9个叶子节点,每个叶子节点包含2个起始端点,将每个起始端点作为所述主路由表的一个条目,则该主路由表的条目总数为18,每个主路由表的表项包含两个条目。当路由器接收到一个IP数据包时,其VRF_ID为8,目的IP地址为192.168.10.19,那么待查找的路由条目为8.192.168.10.19。首先取VRF_ID做哈希运算,假设哈希函数为除8取整数部分,那么8除以8的商为1,即哈希值hash_idx为1。用hash_idx指示的地址读取所述主路由表的表项,表项内容为图8所示的2-3树表的树根节点,即9.192.168.10.0/10.192.168.10.0。判断节点的类型为根节点,然后用待查找路由条目8.192.168.10.19和该根节点的左右端点进行比较,结果小于根节点的左端点9.192.168.10.0,所以取左指针作为所述主路由表的地址读取对应的表项,得到8.192.168.70.0/8.192.168.110.0。此时判断节点的类型为中间节点,则用待查找路由条目8.192.168.10.19和该中间节点的左右端点进行比较,发现待查找路由条目8.192.168.10.19小于该中间节点的左端点8.192.168.70.0,所以取左指针作为所述主路由表的地址读取对应的表项,得到节点8.192.168.10.0/8.192.168.20.0,判断该节点为叶子节点,待查找路由条目8.192.168.10.19大于该叶子节点的左端点8.192.168.10.0并且小于该叶子节点的右端点8.192.168.20.0,所以取8.192.168.10.0对应的输出端口作为该数据包的输出端口。
另外,需要说明的是,图9为图8在所述主路由表中的存储格式,其中:
Key1为8.192.168.10.0,对应的输出端口为1;
Key2为8.192.168.20.0,对应的输出端口为2;
Key3为8.192.168.70.0,对应的输出端口为3;
Key4为8.192.168.90.0,对应的输出端口为4;
Key5为8.192.168.110.0,对应的输出端口为5;
Key6为8.192.168.140.0,对应的输出端口为6;
Key7为9.192.168.10.0,对应的输出端口为7;
……
Key13为10.192.168.10.0,对应的输出端口为13;
……
Key18为10.192.168.140.0,对应的输出端口为18。
节点类型为根节点、中间节点和叶子节点。根节点和中间节点的条目格式一样,都包含两个路由条目区间的起始端点、左指针、中指针、右指针和节点类型(根节点或中间节点)。叶子节点条目的格式为两个路由条目区间的起始端点、每个端点对应的输出端口和节点类型(叶子节点)。
从上述的查找过程可以看出对应18个条目的主路由表,采用上述的查找方法只需要3次比较或采用3个比较器就可以完成本次查找;但是,采用TCAM需要18个比较器才能完成本次查找。因此,根据公式(1)可知,采用本发明所提供的方法实现IP最长前缀匹配比采用TCAM实现的IP最长前缀匹配少了15次比较或15个比较器。
其中,N为主路由表的条目总数,同时N也是采用TCAM技术所需的比较次数或比较器个数,表示采用本发明所提供的方法实现所需的比较次数或比较器个数。
从上述实例中可以容易知道,相比于现有的TCAM技术,本发明实施例所提供的一种新型的路由查找方法极大的减少了查找次数或实现的资源,其实现成本低,功耗小。此外,由于本发明采用普通的RAM或DDR实现,可以适用于需要大规模路由表的路由器,而TCAM由于物理实现的原因只适用于需要小规模路由表的路由器。
实施例三
基于前述实施例相同的技术构思,参见图10,其示出了本发明实施例提供的一种新型的路由表建立装置100,所述装置可以包括:第一获取单元1010、第一组合单元1020、第一运算单元1030、树表生成单元1040、构建单元1050和更新单元1060;其中,
所述第一获取单元1010,用于获取路由信息;其中,所述路由信息包括虚拟路由转发域编号VRF_ID、IP地址和所述IP地址对应的输出端口;
所述第一组合单元1020,用于根据所述VRF_ID和所述IP地址组合成一个路由条目区间;
所述第一运算单元1030,用于利用预设的哈希算法对所述路由条目区间的起始端点中的VRF_ID进行哈希运算,获得所述VRF_ID对应的哈希值;
所述树表生成单元1040,用于利用所有所述哈希值相等的起始端点生成一个树表;其中,所述树表的叶子节点包含所述起始端点对应的输出端口,且所述IP地址对应的输出端口与所述起始端点对应的输出端口相同;
所述构建单元1050,用于根据生成的所有树表构建主路由表。
在上述方案中,所述树表生成单元1040生成的所述树表的树节点不仅用于确定匹配的端点,还用于确定搜索路径。
在上述方案中,当所述树表为2-3树表时,所述树表生成单元1040,具体用于:
将所有所述哈希值相等的起始端点按照由小到大的顺序排序,并将排序后的所有起始端点存放在数组a[n]中;
从所述数组a[n]中提取a[2×(i-1)]的数据作为所述树表的第一层从左至右的第i个节点的左端点;其中,1≤i≤(n+1)/2,n≥1;
从所述数组a[n]中提取a[2×(i-1)+1]的数据作为所述树表的第一层从左至右的第i个节点的右端点;
从所述数组a[n]中提取a[2×3(p-2)+2×3(p-1)×(k-1)]的数据作为所述树表的第p层从左至右的第k个节点的左端点;其中,p≥2,1≤k≤(log3t)-1,t为第p-1层的节点总数;
从所述数组a[n]中提取a[4×3(p-2)+2×3(p-1)×(k-1)]的数据作为所述树表的第p层从左至右的第k个节点的右端点。
在上述方案中,所述构建单元1050,具体用于:根据所述哈希值索引的存储地址写入路由器对应的主路由表存储区,完成所述主路由表的构建。
另外,在完成所述主路由表建立的基础上,本发明实施例还提供一种新型的IP路由查找装置110,如图11所示,所述装置包括:第二获取单元1110、第二组合单元1120、第二运算单元1130和查找单元1140;其中,
所述第二获取单元1110,用于根据接收的IP数据包的输入端口和虚拟局域网编号VLAN_ID映射获取所述IP数据包对应的VRF_ID;
所述第二组合单元1120,用于读取所述IP数据包中的目的IP地址,并将所述目的IP地址与所述VRF_ID组合成一条待查找路由条目;
所述第二运算单元1130,用于利用所述哈希算法对所述待查找路由条目中的VRF_ID进行哈希运算获得哈希值;
需要说明的是,所述第二运算单元1130中所采用的哈希算法与所述第一运算单元103中所采用的哈希算法是相同的。
所述查找单元1140,用于根据所述哈希值查找所述主路由表,确定所述IP数据包的输出端口;其中,所述主路由表为所述路由表建立装置100所构建的主路由表。
在上述方案中,所述查找单元1140,具体用于:
将所述哈希值作为所述主路由表表项存储地址的索引,从所述主路由表中索引获得所述哈希值对应的树表节点;其中,所述树表节点即为所述主路由表的表项;
根据所述树表节点的内容,查找获得与所述待查找路由条目相匹配的端点,获取所述IP数据包的输出端口。
在上述方案中,所述查找单元1140,具体用于:
当所述节点内容中的节点类型为根节点或者中间节点时,根据所述待查找路由条目与所述节点端点的关系取出所述节点中的对应指针,并读取所述指针所指向的树表节点中的节点内容;
当所述节点内容中的节点类型为叶子节点时,根据所述待查找路由条目与所述叶子节点端点的关系,获取所述IP数据包的输出端口。
在上述方案中,当所述树表为2-3树表时,所述查找单元1140,具体用于:
当所述待查找路由条目小于所述节点的左端点时,取出所述节点中的左指针,读取所述左指针所指向的树表节点中的节点内容;
当所述待查找路由条目大于或等于所述节点的左端点,且小于所述节点的右端点时,取出所述节点中的中指针,读取所述中指针所指向的树表节点中的节点内容;
当所述待查找路由条目大于或等于所述节点的右端点时,取出所述节点中的右指针,读取所述右指针所指向的树表节点中的节点内容。
在上述方案中,当所述树表为2-3树表时,所述查找单元1140,具体还用于:
当所述待查找路由条目与所述叶子节点的左端点相等时,将所述叶子节点的左端点对应的输出端口作为所述IP数据包的输出端口;
当所述待查找路由条目与所述叶子节点的右端点相等时,将所述叶子节点的右端点对应的输出端口作为所述IP数据包的输出端口;
当所述待查找路由条目大于所述叶子节点的左端点且小于所述叶子节点的右端点时,将所述叶子节点的左端点和右端点组成的区间对应的输出端口作为所述IP数据包的输出端口;
当所述待查找路由条目大于所述叶子节点的右端点时,将大于所述叶子节点右端点的对应输出端口作为所述IP数据包的输出端口。
在上述方案中,所述查找单元1140,具体还用于:当本层节点处理完当前IP数据包的路由查找后,立即将所述当前IP数据包交给下一层节点处理,并对下一个IP数据包进行IP路由查找。
在上述方案中,所述构建单元1050,具体还用于:对所述主路由表进行备份。
在上述方案中,所述路由表建立装置100中的所述更新单元1060,具体用于:
根据新的配置规则调整所述树表的数据结构;
根据调整后的树表更新所述备份路由表;
从所述主路由表切换到所述备份路由表上进行IP路由的查找;
根据调整后的树表更新所述主路由表;
从所述备份路由表切换到所述主路由表上进行IP路由的查找。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (24)
1.一种新型的路由表建立方法,其特征在于,所述方法包括:
获取路由信息;其中,所述路由信息包括虚拟路由转发域编号VRF_ID、互联网协议IP地址和所述IP地址对应的输出端口;
根据所述VRF_ID和所述IP地址组合成一个路由条目区间;
利用预设的哈希算法对所述路由条目区间的起始端点中的VRF_ID进行哈希运算,获得所述VRF_ID对应的哈希值;
利用所有所述哈希值相等的起始端点生成一个树表;其中,所述树表的叶子节点包含所述起始端点对应的输出端口,且所述IP地址对应的输出端口与所述起始端点对应的输出端口相同;
根据生成的所有树表构建主路由表。
2.根据权利要求1所述的方法,其特征在于,所述利用所有所述哈希值相等的起始端点生成一个树表;其中,所述树表的树节点不仅用于确定匹配的端点,还用于确定搜索路径。
3.根据权利要求1所述的方法,其特征在于,当所述树表为2-3树表时,所述利用所有所述哈希值相等的起始端点生成一个树表,具体包括:
将所有所述哈希值相等的起始端点按照由小到大的顺序排序,并将排序后的所有起始端点存放在数组a[n]中;
从所述数组a[n]中提取a[2×(i-1)]的数据作为所述树表的第一层从左至右的第i个节点的左端点;其中,1≤i≤(n+1)/2,n≥1;
从所述数组a[n]中提取a[2×(i-1)+1]的数据作为所述树表的第一层从左至右的第i个节点的右端点;
从所述数组a[n]中提取a[2×3(p-2)+2×3(p-1)×(k-1)]的数据作为所述树表的第p层从左至右的第k个节点的左端点;其中,p≥2,1≤k≤(log3t)-1,t为第p-1层的节点总数;
从所述数组a[n]中提取a[4×3(p-2)+2×3(p-1)×(k-1)]的数据作为所述树表的第p层从左至右的第k个节点的右端点。
4.根据权利要求1所述的方法,其特征在于,所述根据生成的所有树表构建主路由表,具体包括:根据所述哈希值索引的存储地址写入路由器对应的主路由表存储区,完成所述主路由表的构建。
5.一种IP路由查找方法,其特征在于,所述方法包括:
根据接收的IP数据包的输入端口和虚拟局域网编号VLAN_ID映射获取所述IP数据包对应的VRF_ID;
读取所述IP数据包中的目的IP地址,并将所述目的IP地址与所述VRF_ID组合成一条待查找路由条目;
利用所述哈希算法对所述待查找路由条目中的VRF_ID进行哈希运算获得哈希值;
根据所述哈希值查找所述主路由表,确定所述IP数据包的输出端口;其中,所述主路由表为权利要求1至4任一项所述的主路由表。
6.根据权利要求5所述的方法,其特征在于,所述根据所述哈希值查找所述主路由表,确定所述IP数据包的输出端口,具体包括:
将所述哈希值作为所述主路由表表项存储地址的索引,从所述主路由表中索引获得所述哈希值对应的树表节点;其中,所述树表节点即为所述主路由表的表项;
根据所述树表节点的内容,查找获得与所述待查找路由条目相匹配的端点,获取所述IP数据包的输出端口。
7.根据权利要求6所述的方法,其特征在于,所述根据所述树表节点的内容,查找获得与所述待查找路由条目相匹配的端点,获取所述IP数据包的输出端口,具体包括:
当所述节点内容中的节点类型为根节点或者中间节点时,根据所述待查找路由条目与所述节点端点的关系取出所述节点中的对应指针,并读取所述指针所指向的树表节点中的节点内容;
当所述节点内容中的节点类型为叶子节点时,根据所述待查找路由条目与所述叶子节点端点的关系,获取所述IP数据包的输出端口。
8.根据权利要求7所述的方法,其特征在于,当所述树表是2-3树表时,所述当所述节点内容中的节点类型为根节点或者中间节点时,根据所述待查找路由条目与所述节点端点的关系取出所述节点中的对应指针,并读取所述指针所指向的树表节点中的节点内容,具体包括:
当所述待查找路由条目小于所述节点的左端点时,取出所述节点中的左指针,读取所述左指针所指向的树表节点中的节点内容;
当所述待查找路由条目大于或等于所述节点的左端点,且小于所述节点的右端点时,取出所述节点中的中指针,读取所述中指针所指向的树表节点中的节点内容;
当所述待查找路由条目大于或等于所述节点的右端点时,取出所述节点中的右指针,读取所述右指针所指向的树表节点中的节点内容。
9.根据权利要求7所述的方法,其特征在于,当所述树表是2-3树表时,所述当所述节点内容中的节点类型为叶子节点时,根据所述待查找路由条目与所述叶子节点端点的关系,获取所述IP数据包的输出端口,具体包括:
当所述待查找路由条目与所述叶子节点的左端点相等时,将所述叶子节点的左端点对应的输出端口作为所述IP数据包的输出端口;
当所述待查找路由条目与所述叶子节点的右端点相等时,将所述叶子节点的右端点对应的输出端口作为所述IP数据包的输出端口;
当所述待查找路由条目大于所述叶子节点的左端点且小于所述叶子节点的右端点时,将所述叶子节点的左端点和右端点组成的区间对应的输出端口作为所述IP数据包的输出端口;
当所述待查找路由条目大于所述叶子节点的右端点时,将大于所述叶子节点右端点的对应输出端口作为所述IP数据包的输出端口。
10.根据权利要求7至9任一项中所述的方法,其特征在于,当本层节点处理完当前IP数据包的路由查找后,所述方法还包括:所述本层节点立即将所述当前IP数据包交给下一层节点处理,并对下一个IP数据包进行IP路由查找。
11.根据权利要求1所述的方法,其特征在于,所述方法还包括:在完成所述主路由表建立的同时,对所述主路由表进行备份。
12.根据权利要求1所述的方法,其特征在于,当需要对所述主路由表进行更新时,所述方法还包括:
根据新的配置规则调整所述树表的数据结构;
根据调整后的树表更新所述备份路由表;
从所述主路由表切换到所述备份路由表上进行IP路由的查找;
根据调整后的树表更新所述主路由表;
从所述备份路由表切换到所述主路由表上进行IP路由的查找。
13.一种新型的路由表建立装置,其特征在于,所述装置包括:第一获取单元、第一组合单元、第一运算单元、树表生成单元、构建单元和更新单元;其中,
所述第一获取单元,用于获取路由信息;其中,所述路由信息包括虚拟路由转发域编号VRF_ID、IP地址和所述IP地址对应的输出端口;
所述第一组合单元,用于根据所述VRF_ID和所述IP地址组合成一个路由条目区间;
所述第一运算单元,用于利用预设的哈希算法对所述路由条目区间的起始端点中的VRF_ID进行哈希运算,获得所述VRF_ID对应的哈希值;
所述树表生成单元,用于利用所有所述哈希值相等的起始端点生成一个树表;其中,所述树表的叶子节点包含所述起始端点对应的输出端口,且所述IP地址对应的输出端口与所述起始端点对应的输出端口相同;
所述构建单元,用于根据生成的所有树表构建主路由表。
14.根据权利要求13所述的装置,其特征在于,所述树表生成单元生成的所述树表的树节点不仅用于确定匹配的端点,还用于确定搜索路径。
15.根据权利要求13所述的装置,其特征在于,当所述树表为2-3树表时,所述树表生成单元,具体用于:
将所有所述哈希值相等的起始端点按照由小到大的顺序排序,并将排序后的所有起始端点存放在数组a[n]中;
从所述数组a[n]中提取a[2×(i-1)]的数据作为所述树表的第一层从左至右的第i个节点的左端点;其中,1≤i≤(n+1)/2,n≥1;
从所述数组a[n]中提取a[2×(i-1)+1]的数据作为所述树表的第一层从左至右的第i个节点的右端点;
从所述数组a[n]中提取a[2×3(p-2)+2×3(p-1)×(k-1)]的数据作为所述树表的第p层从左至右的第k个节点的左端点;其中,p≥2,1≤k≤(log3t)-1,t为第p-1层的节点总数;
从所述数组a[n]中提取a[4×3(p-2)+2×3(p-1)×(k-1)]的数据作为所述树表的第p层从左至右的第k个节点的右端点。
16.根据权利要求13所述的装置,其特征在于,所述构建单元,具体用于:根据所述哈希值索引的存储地址写入路由器对应的主路由表存储区,完成所述主路由表的构建。
17.一种新型的IP路由查找装置,其特征在于,所述装置包括:第二获取单元、第二组合单元、第二运算单元和查找单元;其中,
所述第二获取单元,用于根据接收的IP数据包的输入端口和虚拟局域网编号VLAN_ID映射获取所述IP数据包对应的VRF_ID;
所述第二组合单元,用于读取所述IP数据包中的目的IP地址,并将所述目的IP地址与所述VRF_ID组合成一条待查找路由条目;
所述第二运算单元,用于利用所述哈希算法对所述待查找路由条目中的VRF_ID进行哈希运算获得哈希值;
所述查找单元,用于根据所述哈希值查找所述主路由表,确定所述IP数据包的输出端口;其中,所述主路由表为所述路由表建立装置所构建的主路由表。
18.根据权利要求17所述的装置,其特征在于,所述查找单元,具体用于:
将所述哈希值作为所述主路由表表项存储地址的索引,从所述主路由表中索引获得所述哈希值对应的树表节点;其中,所述树表节点即为所述主路由表的表项;
根据所述树表节点的内容,查找获得与所述待查找路由条目相匹配的端点,获取所述IP数据包的输出端口。
19.根据权利要求18所述的装置,其特征在于,所述查找单元,具体用于:
当所述节点内容中的节点类型为根节点或者中间节点时,根据所述待查找路由条目与所述节点端点的关系取出所述节点中的对应指针,并读取所述指针所指向的树表节点中的节点内容;
当所述节点内容中的节点类型为叶子节点时,根据所述待查找路由条目与所述叶子节点端点的关系,获取所述IP数据包的输出端口。
20.根据权利要求19所述的装置,其特征在于,当所述树表为2-3树表时,所述查找单元,具体用于:
当所述待查找路由条目小于所述节点的左端点时,取出所述节点中的左指针,读取所述左指针所指向的树表节点中的节点内容;
当所述待查找路由条目大于或等于所述节点的左端点,且小于所述节点的右端点时,取出所述节点中的中指针,读取所述中指针所指向的树表节点中的节点内容;
当所述待查找路由条目大于或等于所述节点的右端点时,取出所述节点中的右指针,读取所述右指针所指向的树表节点中的节点内容。
21.根据权利要求19所述的装置,其特征在于,当所述树表为2-3树表时,所述查找单元,具体用于:
当所述待查找路由条目与所述叶子节点的左端点相等时,将所述叶子节点的左端点对应的输出端口作为所述IP数据包的输出端口;
当所述待查找路由条目与所述叶子节点的右端点相等时,将所述叶子节点的右端点对应的输出端口作为所述IP数据包的输出端口;
当所述待查找路由条目大于所述叶子节点的左端点且小于所述叶子节点的右端点时,将所述叶子节点的左端点和右端点组成的区间对应的输出端口作为所述IP数据包的输出端口;
当所述待查找路由条目大于所述叶子节点的右端点时,将大于所述叶子节点右端点的对应输出端口作为所述IP数据包的输出端口。
22.根据权利要求17所述的装置,其特征在于,所述查找单元,具体还用于:当本层节点处理完当前IP数据包的路由查找后,立即将所述当前IP数据包交给下一层节点处理,并对下一个IP数据包进行IP路由查找。
23.根据权利要求13所述的装置,其特征在于,所述构建单元,具体还用于:对所述主路由表进行备份。
24.根据权利要求13所述的装置,其特征在于,所述更新单元,具体用于:
根据新的配置规则调整所述树表的数据结构;
根据调整后的树表更新所述备份路由表;
从所述主路由表切换到所述备份路由表上进行IP路由的查找;
根据调整后的树表更新所述主路由表;
从所述备份路由表切换到所述主路由表上进行IP路由的查找。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610892179.5A CN107948060A (zh) | 2016-10-12 | 2016-10-12 | 一种新型的路由表建立、以及ip路由查找方法和装置 |
PCT/CN2017/088765 WO2018068524A1 (zh) | 2016-10-12 | 2017-06-16 | 路由表建立、以及ip路由查找方法、装置、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610892179.5A CN107948060A (zh) | 2016-10-12 | 2016-10-12 | 一种新型的路由表建立、以及ip路由查找方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107948060A true CN107948060A (zh) | 2018-04-20 |
Family
ID=61905016
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610892179.5A Withdrawn CN107948060A (zh) | 2016-10-12 | 2016-10-12 | 一种新型的路由表建立、以及ip路由查找方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107948060A (zh) |
WO (1) | WO2018068524A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108737276A (zh) * | 2018-06-19 | 2018-11-02 | 中国科学技术大学 | 一种构建路由表数据结构并实现路由转发的方法 |
CN116208553A (zh) * | 2023-03-13 | 2023-06-02 | 苏州盛科通信股份有限公司 | 扩大vrf路由表项的芯片实现方法及应用 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10764135B2 (en) * | 2019-01-29 | 2020-09-01 | Dell Products L.P. | Method and system for solution integration labeling |
CN113098727A (zh) * | 2019-12-23 | 2021-07-09 | 上海云盾信息技术有限公司 | 一种数据包检测处理方法与设备 |
CN113132261B (zh) * | 2019-12-31 | 2023-01-03 | 北京金山云网络技术有限公司 | 一种流量数据包分类方法、装置及电子设备 |
CN111404820B (zh) * | 2020-03-09 | 2022-04-29 | 深信服科技股份有限公司 | 一种路由查询方法、装置、设备及可读存储介质 |
CN113726660B (zh) * | 2021-08-27 | 2022-11-15 | 西安微电子技术研究所 | 一种基于完美哈希算法的路由查找器和方法 |
CN116456422A (zh) * | 2022-01-10 | 2023-07-18 | 中兴通讯股份有限公司 | 微波网络根节点查询方法及装置、微波***和存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101707617A (zh) * | 2009-12-04 | 2010-05-12 | 福建星网锐捷网络有限公司 | 报文过滤方法、装置及网络设备 |
CN103546380A (zh) * | 2013-11-05 | 2014-01-29 | 迈普通信技术股份有限公司 | 一种基于策略路由的报文转发方法和装置 |
CN103544258A (zh) * | 2013-10-16 | 2014-01-29 | 国家计算机网络与信息安全管理中心 | 一种大数据多区间查询条件下的基数估计方法及装置 |
EP2887584A1 (en) * | 2013-12-23 | 2015-06-24 | BAE Systems PLC | Data Capture |
CN104866502A (zh) * | 2014-02-25 | 2015-08-26 | 深圳市中兴微电子技术有限公司 | 数据匹配的方法及装置 |
US20150281073A1 (en) * | 2014-03-31 | 2015-10-01 | Dell Products, L.P. | System and method for context aware network |
CN105391634A (zh) * | 2015-12-08 | 2016-03-09 | 福建星网锐捷网络有限公司 | 一种报文处理方法、装置及交换机 |
-
2016
- 2016-10-12 CN CN201610892179.5A patent/CN107948060A/zh not_active Withdrawn
-
2017
- 2017-06-16 WO PCT/CN2017/088765 patent/WO2018068524A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101707617A (zh) * | 2009-12-04 | 2010-05-12 | 福建星网锐捷网络有限公司 | 报文过滤方法、装置及网络设备 |
CN103544258A (zh) * | 2013-10-16 | 2014-01-29 | 国家计算机网络与信息安全管理中心 | 一种大数据多区间查询条件下的基数估计方法及装置 |
CN103546380A (zh) * | 2013-11-05 | 2014-01-29 | 迈普通信技术股份有限公司 | 一种基于策略路由的报文转发方法和装置 |
EP2887584A1 (en) * | 2013-12-23 | 2015-06-24 | BAE Systems PLC | Data Capture |
CN104866502A (zh) * | 2014-02-25 | 2015-08-26 | 深圳市中兴微电子技术有限公司 | 数据匹配的方法及装置 |
US20150281073A1 (en) * | 2014-03-31 | 2015-10-01 | Dell Products, L.P. | System and method for context aware network |
CN105391634A (zh) * | 2015-12-08 | 2016-03-09 | 福建星网锐捷网络有限公司 | 一种报文处理方法、装置及交换机 |
Non-Patent Citations (1)
Title |
---|
刘尉悦等: ""基于Hash和二叉树的路由表查找算法"", 《中国科学技术大学学报》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108737276A (zh) * | 2018-06-19 | 2018-11-02 | 中国科学技术大学 | 一种构建路由表数据结构并实现路由转发的方法 |
CN108737276B (zh) * | 2018-06-19 | 2020-08-25 | 中国科学技术大学 | 一种构建路由表数据结构并实现路由转发的方法 |
CN116208553A (zh) * | 2023-03-13 | 2023-06-02 | 苏州盛科通信股份有限公司 | 扩大vrf路由表项的芯片实现方法及应用 |
Also Published As
Publication number | Publication date |
---|---|
WO2018068524A1 (zh) | 2018-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107948060A (zh) | 一种新型的路由表建立、以及ip路由查找方法和装置 | |
US11102120B2 (en) | Storing keys with variable sizes in a multi-bank database | |
Lim et al. | Priority tries for IP address lookup | |
US6985483B2 (en) | Methods and systems for fast packet forwarding | |
US6792423B1 (en) | Hybrid longest prefix match and fixed match searches | |
JP2016116215A (ja) | ハードウェア支援ハッシュテーブルを使用したccnルーティング | |
CN102945249B (zh) | 一种策略规则匹配查询树生成方法、匹配方法及装置 | |
WO2015127721A1 (zh) | 数据匹配的方法、装置及计算机存储介质 | |
EP3280104B1 (en) | Ip routing lookup | |
US9485179B2 (en) | Apparatus and method for scalable and flexible table search in a network switch | |
CN107276916B (zh) | 基于协议无感知转发技术的交换机流表管理方法 | |
CN104780101B (zh) | 内容中心网络转发平面fib表结构及其检索方法 | |
Le et al. | Memory-efficient and scalable virtual routers using FPGA | |
CN101110778A (zh) | 一种利用默认路由压缩路由转发表的方法 | |
CN103457855B (zh) | 无类域间路由表建立、以及报文转发的方法和装置 | |
WO2014206208A1 (zh) | 数据查询方法、设备和*** | |
CN104253754A (zh) | 一种acl快速匹配的方法和设备 | |
Lim et al. | Two-dimensional packet classification algorithm using a quad-tree | |
EP3018871B1 (en) | Content name compression method and apparatus | |
CN106302178B (zh) | 一种路由查询方法及装置 | |
Shen et al. | High-performance IPv6 lookup with real-time updates using hierarchical-balanced search tree | |
CN106603415A (zh) | 数据处理方法及装置 | |
Huang et al. | Memory-efficient IP lookup using trie merging for scalable virtual routers | |
EP3319279B1 (en) | Ip routing lookup | |
Mikawa et al. | Run-based trie involving the structure of arbitrary bitmask rules |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20180420 |
|
WW01 | Invention patent application withdrawn after publication |