CN115378869B - 白盒路由器转发信息库表的分发与存储方法及相关设备 - Google Patents

白盒路由器转发信息库表的分发与存储方法及相关设备 Download PDF

Info

Publication number
CN115378869B
CN115378869B CN202210754309.4A CN202210754309A CN115378869B CN 115378869 B CN115378869 B CN 115378869B CN 202210754309 A CN202210754309 A CN 202210754309A CN 115378869 B CN115378869 B CN 115378869B
Authority
CN
China
Prior art keywords
destination address
node
bits
array
longest prefix
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.)
Active
Application number
CN202210754309.4A
Other languages
English (en)
Other versions
CN115378869A (zh
Inventor
柳瑞春
陈紫儿
王洋
李雨泰
朱秋莎
王炫中
张亚南
王茜
欧清海
宋继高
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
State Grid Information and Telecommunication Co Ltd
Beijing Zhongdian Feihua Communication Co Ltd
Original Assignee
State Grid Information and Telecommunication Co Ltd
Beijing Zhongdian Feihua Communication Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by State Grid Information and Telecommunication Co Ltd, Beijing Zhongdian Feihua Communication Co Ltd filed Critical State Grid Information and Telecommunication Co Ltd
Priority to CN202210754309.4A priority Critical patent/CN115378869B/zh
Publication of CN115378869A publication Critical patent/CN115378869A/zh
Application granted granted Critical
Publication of CN115378869B publication Critical patent/CN115378869B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/748Address table lookup; Address filtering using longest matching prefix

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请提供一种白盒路由器转发信息库表的分发与存储方法及相关设备,在接收到下发的路由表项后,构建最长前缀匹配树结构,该最长前缀匹配树结构包括依次排列的多个数组层,最长前缀匹配树结构包括多个节点,这些节点包括指向最长前缀路由的辅助节点;当接收到外来数据包时,在确定外来数据包的目的地址后根据最长前缀匹配算法对最长前缀匹配树结构逐层进行路由匹配;若匹配失败,经由默认路由进行下一跳;若匹配成功,经由最长前缀路由进行下一跳。通过构建最长前缀匹配树结构简化最长的前缀算法的匹配过程,提高匹配速度,通过引入辅助节点大大减少了内存访问的次数并提高了查找速度,提高了软件层面的转发性能。

Description

白盒路由器转发信息库表的分发与存储方法及相关设备
技术领域
本申请涉及通信技术领域,尤其涉及一种白盒路由器转发信息库表的分发与存储方法及相关设备。
背景技术
白盒路由器(交换机)数据平面转发大多采用如TCAM(三态内容寻址存储器)、FPGA(现场可编程逻辑门阵列)等硬件组合。其中,转发平面常以P4交换机集成到机框中,控制平面为x86或ARM等通用CPU为主。导致白盒路由器成本高昂的主要因素为数据平面的高速转发硬件。为降低成本,在不改变此分布式架构下,拟将数据平面改为采用通用CPU和软件的形式来代替硬件芯片。考虑到诸如x86架构的CPU和配套的DPDK(数据平面开发套件)等软件转发平台近年来发展迅速,软硬件相关配套完善,其可行性具备了产业化条件。但是,软件转发性能与硬件相比差距较大,尤其是查表转发为性能的主要瓶颈。
发明内容
有鉴于此,本申请的目的在于提出一种白盒路由器转发信息库表的分发与存储方法及相关设备用于解决上述问题。
基于上述目的,本申请的第一方面提供了一种白盒路由器转发信息库表的分发与存储方法,包括:
接收下发的路由表项;
基于所述路由表项构建最长前缀匹配树结构;其中,其中,所述最长前缀匹配树结构包括依次排列的多个数组层,所述最长前缀匹配树结构的每层都包括多个节点,该多个数组层中的至少一层的节点包括指向最长前缀路由的辅助节点;
响应于确定接收到外来数据包,确定所述外来数据包的目的地址;
基于所述目的地址和最长前缀匹配树结构,根据最长前缀匹配算法对所述最长前缀匹配树结构逐层进行路由匹配;
响应于确定匹配失败,经由默认路由进行下一跳;
响应于确定匹配成功,经由最长前缀路由进行下一跳。
可选地,所述最长前缀匹配树结构包括所述根层、第一数组层、第二数组层、第三数组层;其中,所述根层包括根节点、链表节点和空节点;所述第一数组层包括第一普通节点和所述辅助节点,所述第一普通节点包括SP指针;所述第二数组层包括第二普通节点和所述辅助节点,所述第二普通节点包括所述SP指针和LP指针;所述第三数组层为线性的链表。
可选地,所述基于所述目的地址和最长前缀匹配树结构,根据最长前缀匹配算法对所述最长前缀匹配树结构逐层进行路由匹配,包括:
将所述目的地址进行二进制转化,得到二进制目的地址;
获取所述二进制目的地址的前64位;
基于所述最长前缀匹配算法和所述二进制目的地址的前16位在所述根层内查找所述数组;
基于所述最长前缀匹配算法和所述二进制目的地址的17至32位在所述第一数组层内查找所述数组;
基于所述最长前缀匹配算法和所述二进制目的地址的33至48位在所述第二数组层内查找所述数组;
基于所述最长前缀匹配算法和所述二进制目的地址的49至64位在所述第三数组层内查找所述数组。
可选地,所述基于所述最长前缀匹配算法和所述二进制目的地址的前16位在所述根层内查找所述数组,包括:
响应于确定根据所述二进制目的地址的前16位在所述根层查找到所述空节点,匹配失败;
响应于确定根据所述二进制目的地址的前16位查找到所述链表节点,在所述链表节点中查找用于存储所述二进制目的地址1至64位的链表,匹配成功;
响应于确定根据所述二进制目的地址的前16位查找到所述根节点,根据所述根节点中存储的用于指向下一层的P1指针,进入所述第一数组层。
可选地,所述基于所述最长前缀匹配算法和所述二进制目的地址的17至32位在所述第一数组层内查找所述数组,包括:
响应于确定根据所述二进制目的地址的17至32位在所述第一数组层查找到所述辅助节点,依次将所述二进制目的地址17至32位的最后一个1值变为0值,直至所述二进制目的地址与所述第一普通节点存储的数组相同,匹配成功,并将所述二进制目的地址的17至32位存储于该辅助节点内;
响应于确定根据所述二进制目的地址的17至32位查找到所述第一普通节点,基于存储于所述第一普通节点内的所述SP指针记录指向该第一普通节点的全部辅助节点的的最大前缀长度,并根据存储于所述第一普通节点内的P1指针进入所述第二数组层。
可选地,所述基于所述最长前缀匹配算法和所述二进制目的地址的33至48位在所述第二数组层内查找所述数组,包括:
响应于确定根据所述二进制目的地址的33至48位在所述第二数组层查找到所述辅助节点,依次将所述二进制目的地址33至48位的最后一个1值变为0值,直至所述二进制目的地址与所述第二普通节点存储的数组相同,匹配成功,并将所述二进制目的地址的33至48位存储于该辅助节点内;
响应于确定根据所述二进制目的地址的33至48位查找到所述第二普通节点,基于存储于所述第二普通节点内的所述SP指针记录指向该第二普通节点的全部辅助节点的的最大前缀长度,并基于所述LP指针进入所述第三数组层。
可选地,所述基于所述最长前缀匹配算法和所述二进制目的地址的49至64位在所述第三数组层内查找所述数组,包括:
基于所述二进制目的地址的49至64位与所述链表存储的全部所述数组,通过与运算进行匹配,直至确定具有最大前缀长度的目标数组,匹配成功;其中,每个位于所述第三数组层的数组均对应一个最大前缀长度。
本申请的第二方面提供了一种白盒路由器转发信息库表的分发与存储装置,包括:
接收模块,被配置为:接收下发的路由表项;
创建模块,被配置为:基于所述路由表项构建最长前缀匹配树结构;;其中,所述最长前缀匹配树结构包括依次排列的多个数组层,所述最长前缀匹配树结构的每层都包括多个节点,该多个数组层中的至少一层的节点包括指向最长前缀路由的辅助节点;
地址确认模块,被配置为:响应于确定接收到外来数据包,确定所述外来数据包的目的地址;
匹配模块,被配置为:基于所述目的地址和最长前缀匹配树结构,根据最长前缀匹配算法对所述最长前缀匹配树结构逐层进行路由匹配;
转发模块,被配置为:响应于确定匹配失败,经由默认路由进行下一跳;
响应于确定匹配成功,经由所述最长前缀路由进行下一跳。
本申请的第三方面提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本申请第一方面提供的所述的方法。
本申请的第四方面提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使计算机执行本申请第一方面提供的所述方法。
从上面所述可以看出,本申请提供的白盒路由器转发信息库表的分发与存储方法及相关设备,在接收到下发的路由表项后,构建最长前缀匹配树结构,该最长前缀匹配树结构包括依次排列的多个数组层,最长前缀匹配树结构的每层都包括多个节点,多个数组层中,至少存在一个数组层的节点包括指向最长前缀路由的辅助节点;当接收到外来数据包时,在确定外来数据包的目的地址后根据最长前缀匹配算法对最长前缀匹配树结构逐层进行路由匹配;若匹配失败,经由默认路由进行下一跳;若匹配成功,经由最长前缀路由进行下一跳。通过构建最长前缀匹配树结构简化最长的前缀算法的匹配过程,提高匹配速度,在最长前缀匹配树结构中利用辅助节点指向最长前缀路由,以实现最长前缀路由的快速匹配。通过引入辅助节点大大减少了内存访问的次数并提高了查找速度,提高了软件层面的转发性能。
附图说明
为了更清楚地说明本申请或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例的硬件路由器的结构示意图;
图2为本申请实施例的软件路由器的结构示意图;
图3为本申请实施例的白盒路由器转发信息库表的分发与存储方法的流程图;
图4为本申请实施例的前缀长度统计图;
图5为本申请实施例的最长前缀匹配树结构示意图;
图6为本申请实施例的匹配过程的流程图;
图7为本申请实施例的目的地址前16位的匹配过程的流程图;
图8为本申请实施例的白目的地址17-32位的匹配过程的流程图;
图9为本申请实施例的目的地址前33-48位的匹配过程的流程图;
图10为本申请实施例的白盒路由器转发信息库表的分发与存储装置的结构示意图。
图11为本申请实施例的电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本申请进一步详细说明。
需要说明的是,除非另外定义,本申请实施例使用的技术术语或者科学术语应当为本申请所属领域内具有一般技能的人士所理解的通常意义。本申请实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
传统路由器大多采用软硬一体化架构的设计,其软硬件的开发都是由单一厂商完成的,具有通用功能和不可编程的特点,对支持新型业务的灵活性、差异性的适配能力不足。白盒路由器采用开放化以及可编程的架构,解耦底层硬件与控制软件,控制平面可支持网络协议的软件编程,数据平面支持转发芯片的硬件可编程,从而提升了网络设备的开放性以及可重构特征。这种架构可显著缩短创新技术和定制化功能的开发周期,能更敏捷的构建开放和扩展现有网络,更能迎合未来网络业务的可编程性、定制化的需求。
其中,背景技术中采用硬件的进行数据转发的白盒路由器的常见结构如图1所示,其中,控制平面的主控板一般为x86或ARM等通用CPU。数据平面一般将P4交换机等硬件集成到机框中,进行数据的转发。而本申请实施例中主要针对采用软件进行数据转发的白盒路由器,其结构如图2所示,由于主控板和从设备是一个分布式的体系结构,其间会有频繁的数据交互,FIB(转发信息库)表项的发放由主控板的路由管理触发。控制平面的主控板只需向转发平面的从设备发送三元组:路由前缀、下一跳、出接口,从设备将该三元组转化成相应结构进行查表转发。
需要说明的是,为叙述简单,本申请实施例中的路由表与FIB表等价,均指经过路由管理模块过滤后生成的唯一前缀条目。
基于图2所示的白盒路由器,本申请实施例提供的白盒路由器转发信息库表的分发与存储方法,在接收到下发的路由表项后,构建最长前缀匹配树结构,该最长前缀匹配树结构包括依次排列的多个数组层,最长前缀匹配树结构的每层都包括多个节点,这些节点包括指向最长前缀路由的辅助节点;当接收到外来数据包时,在确定外来数据包的目的地址后根据最长前缀匹配算法进行路由匹配;若匹配失败,经由默认路由进行下一跳;若匹配成功,经由最长前缀路由进行下一跳。通过构建最长前缀匹配树结构简化最长的前缀算法的匹配过程,提高匹配速度,在最长前缀匹配树结构中利用辅助节点指向最长前缀路由,以实现最长前缀路由的快速匹配。通过引入辅助节点大大减少了内存访问的次数并提高了查找速度,提高了软件层面的转发性能。
在一些实施例中,如图3所示,白盒路由器转发信息库表的分发与存储方法包括:
步骤100:接收下发的路由表项。
在该步骤中,控制平面中主控板的路由管理模块将路由表项以三元组的形式下发给各个从设备,从设备接收下发的路由表项,其中,三元组包含的字段为:路由前缀、下一跳、出接口。在数据平面接收该包括三元组信息的路由表项。
步骤200:基于路由表项构建最长前缀匹配树结构。
其中,最长前缀匹配树结构包括依次排列的多个数组层,最长前缀匹配树结构的每层都包括多个节点,节点包括指向最长前缀路由的辅助节点。
在该步骤中,如图4所示,申请人统计了各前缀长度的路由项数目。经过分析,AS131072和AS6447中路由表项分布特点基本相同。以AS131072为例,总结如下:前缀长度为48的路由表项的数目最多,占比高达46.64%,其次是前缀长度为32的路由表项,占比为14.17%;前缀长度在19-32之间的占比为18.12%,在33-48之间的占比为81.31%,在48-64之间的占0.56%。图4中展示了该次统计的各前缀长度路由表项的数目及百分比的具体数据,从图4可以更直观地看出路由表项中前缀长度为48和32的路由项数目远远多于其他长度的路由项。
从上述统计结果可以看出路由表项的前缀长度都位于所述17至64之间。且作为新一代的IP协议的IPv6(互联网协议第6版)的地址长度为128位,是IPv4(互联网协议第4版)地址长度的4倍。由于IPv4点分十进制格式不再适用,IPv6采用十六进制表示。所以,参考图5,本申请实施例选择创建的最长前缀匹配树结构的四层结构,并将路由前缀(二进制)以16位为一个分段存储在不同的数组层中:第一层(根层)存储路由前缀的前16位;第二层(第一数组层,L1)存储第17-32位;第三层(第二数组层,L2)存储33-48位;第49-64位存储在第四层(第三数组层)的线性链表中。其中,最长前缀匹配树结构中的实线圆圈表示普通节点,虚线圆圈表示辅助节点。需要说明的是,若为IPv4协议,同样分为根层、第一数组层、第二数组层和第三数组层四层,并将路由前缀(二进制)以8位为一个分段存储在不同的数组层中。
步骤300:响应于确定接收到外来数据包,确定外来数据包的目的地址。
在该步骤中,接收到外来数据包时,需要确定该外来数据包的目的地址(十六进制),例如:3001:2240:4800:1200:……(二进制表示为:0011000000000001:0010001001000000:0100100000000000:0001001000000000:……),其中,本申请实施例中选择根据目的地址的前64位进行匹配,所以后64位不进行详细举例。示例性的,还可以为3001:2240:4840:1200:……(二进制表示为:0011000000000001:0010001001000000:0100100001000000:0001001000000000:……)。
步骤400:基于目的地址和最长前缀匹配树结构,根据最长前缀匹配算法对最长前缀匹配树结构逐层进行路由匹配。
在该步骤中,根据目的地址和最长前缀匹配树结构,利用最长前缀匹配算法逐层进行匹配,直至目的地址匹配到具有最长前缀的路由表项。
步骤500:响应于确定匹配失败,经由默认路由进行下一跳。
在该步骤中,路由表中常常包含一个默认路由。这个默认路由在所有表项都不匹配的时候有着最短的前缀匹配,在匹配失败时,经由默认路由进行下一跳,并通过默认路由对应的出接口实现外来数据包的转发。
步骤600:响应于确定匹配成功,经由最长前缀路由进行下一跳。
在该步骤中,在匹配成功时,说明查找到了与目的地址匹配的最长前缀路由,经由该最长前缀路由进行下一跳,并通过该最长前缀路由对应的出接口实现外来数据包的转发。
在一些实施例中,最长前缀匹配树结构包括根层、第一数组层、第二数组层、第三数组层;其中,根层包括根节点、链表节点和空节点;第一数组层包括第一普通节点和辅助节点,第一普通节点包括SP指针;第二数组层包括第二普通节点和辅助节点,第二普通节点包括SP指针和LP指针;第三数组层为线性的链表。
其中,如图5所示,最长前缀匹配树结构的第一层为根层,根层包括三种元素类型的数组,分别为根节点、链表节点和空节点。其中,根节点存储目的地址的前16位,链表节点指向存储目的地址1~64位的链表,空节点表示目的地址的前16位不在根层,路由查找时直接返回默认路由进行下一跳。为区分根节点、链表节点,设置一个标记变量f,每当目的地址的前16位与根层中的某个节点匹配,计一次数,当该节点的累计计数大于标记变量f时,该节点为根节点,该节点的累计计数小于等于标记变量f时,该节点为链表节点。
示例性的,以存储目的地址的前16位为3001(二进制表示为:0011000000000001)节点为例进行说明,当目的地址在根层匹配到3001节点时,若3001节点是第一次匹配到前16位为3001的目的地址,计数为1;若3001节点第二次匹配到前16位为3001目的地址,则累计计数为2,每次计数都将对应的目的地址的1-64位都存储到该节点的链表中,该节点为链表节点。不断进行累计计数,直至累计计数大于标记变量f,将存储于链表中的目的地址进行分层匹配,此时该节点中会指向第一数组层,3001变为根节点,进行分类是为了进一步加快匹配效率,提高转发速度。例如,对前缀前16位为3001的目的地址进行匹配时,若匹配到的3001节点为链表节点,直接将目的地址的前64位存储在该链表节点的链表中,并将该目的地址的前64位作为最长前缀路由,最大前缀长度为64,通过该最长前缀路由对应的出接口进行下一跳。示例性的,若目的地址为3001:2240:4800:1200,则最长前缀路由为3001:2240:4800:1200/64。
其中,最长前缀匹配树结构的每个节点存储的16位的地址是根据协议学习得到的。且最长前缀匹配树结构存储的16位地址均以十六进制的形式进行存储。
在一些实施例中,如图6所示,基于目的地址和最长前缀匹配树结构,根据最长前缀匹配算法对最长前缀匹配树结构逐层进行路由匹配,包括:
步骤410:将目的地址进行二进制转化,得到二进制目的地址。
在该步骤中,将十六进制的目的地址转化为二进制,这是因为最长前缀匹配算法在匹配过程需要进行与运算,需要转换为二进制进行匹配。例如:目的地址D为3001:4800:4800:1200,路由表项包括M1:3001:2240:4800:1200/56e0和M2:3001:2240:4800:0000/55s0,匹配过程如表1和表2所示:
表1 D与M1的匹配
D M1 D&M1(二进制) D&M1(十六进制)
0011000000000001 1111111111111111 0011000000000001 3001
0010001001000000 1111111111111111 0010001001000000 2240
0100100000000000 1111111111111111 0100100000000000 4800
0001001000000000 1111111100000000 0001001000000000 1200
匹配
表2 D与M2的匹配
D M2 D&M2(二进制) D&M2(十六进制)
0011000000000001 1111111111111111 0011000000000001 3001
0010001001000000 1111111111111111 0010001001000000 2240
0100100000000000 1111111111111111 0100100000000000 4800
0001001000000000 1111111000000000 0001001000000000 1200
匹配
其中,M1与M2的中“/”后的数字表示子网掩码的长度,56表示该路由表项子网掩码的前56位为1,后面全部为0;55表示该路由表项的前55位为1,后面全部为0。与运算为位于同一位数值都为“1”时为1,否则为0。例如:D的第一位为0,M1的第一位为1,与运算后第一位为0;D的第三位为1,M1的第三位为1,与运算后第三位为1;D的第64位为0,M1的第64位为0,与运算后第64位为0。e0和s0为对应的出接口。
步骤420:获取二进制目的地址的前64位。
在该步骤中,选取二进制目的地址的前64位进行路由表的匹配。
步骤430:基于最长前缀匹配算法和二进制目的地址的前16位在根层内查找数组。
步骤440:基于最长前缀匹配算法和二进制目的地址的17至32位在第一数组层内查找数组。
步骤450:基于最长前缀匹配算法和二进制目的地址的33至48位在第二数组层内查找数组。
步骤460:基于最长前缀匹配算法和二进制目的地址的49至64位在第三数组层内查找数组。
其中,将二进制目的地址的分为4段,每16位一段,每段在不同层进行匹配,一次匹配16位,提高了匹配效率。
在一些实施例中,如图7所示,基于最长前缀匹配算法和二进制目的地址的前16位在根层内查找数组,包括:
步骤431:响应于确定根据二进制目的地址的前16位在根层查找到空节点,匹配失败。
在该步骤中,若在匹配过程中没有在根层查找到与进制目的地址的前16位对应的数组,则会在根层中匹配到空节点,表示匹配失败。
步骤432:响应于确定根据二进制目的地址的前16位查找到链表节点,在链表节点中查找用于存储二进制目的地址1至64位的链表,匹配成功。
在该步骤中,使用16位1对目的地址的前16位进行匹配,若在匹配过程中,通过在根层查找数组匹配到链表节点,直接查找用于存储二进制目的地址1至64位的链表,将目的地址直接作为最长前缀路由进行转发。
步骤433:响应于确定根据二进制目的地址的前16位查找到根节点,根据根节点中存储的用于指向下一层的P1指针,进入第一数组层。
在该步骤中,使用16位1对目的地址的前16位进行匹配,若在匹配过程中,在根层查找数组匹配到根节点,说明最长前缀大于16,需要进入第一数组层继续查找最长前缀路由。
在一些实施例中,如图8所示,基于最长前缀匹配算法和二进制目的地址的17至32位在第一数组层内查找数组,包括:
步骤441:响应于确定根据二进制目的地址的17至32位在第一数组层查找到辅助节点,依次将二进制目的地址17至32位的最后一个1值变为0值,直至二进制目的地址与第一普通节点存储的数组相同,匹配成功,并将二进制目的地址的17至32位存储于该辅助节点内。
在该步骤中,第一数组层中每个节点都有一个mark值,该mark值用于区分该节点的类型,若查找到的节点的mark=1,该节点为普通节点,若查找到的节点的mark=0,该节点为辅助节点。示例性的,如图5所示,假设目的地址的17-32位为224F(0010001001001111),使用16位1对目的地址的17-32位进行匹配,若第一数组层中没有与之匹配的第一普通节点,会查找到辅助节点。例如,当查找到辅助节点C时,将0010001001001111的最后一个1值变为0值,则0010001001001111变为0010001001001110(224E),在第一数组层中仍然没有与之匹配的第一普通节点,继续将最后一位1值变为0值,得到0010001001001100(224C),在第一数组层中仍然没有与之匹配的第一普通节点,继续将最后一位1值变为0值,得到0010001001001000(2248),在第一数组层中仍然没有与之匹配的第一普通节点,继续将最后一位1值变为0值,得到0010001001000000(2240),此时,与第一普通节点B匹配,匹配成功,利用存储于辅助节点内的用于指向同层节点的P2指针指向第一普通节点B,由于0010001001001111的最后一个变为0值的1值位于第13位,所以变化后的目的地址的最长前缀长度为16+12=28,此时的最长前缀路由为2240:2240:……/28。
步骤442:响应于确定根据二进制目的地址的17至32位查找到第一普通节点,基于存储于第一普通节点内的SP指针记录指向该第一普通节点的全部辅助节点的的最大前缀长度,并根据存储于第一普通节点内的P1指针进入第二数组层。
在该步骤中,示例性的,如图5所示,当查找到普通节点B时,根据存储于第一普通节点内的SP指针记录辅助节点C的最大前缀长度12(第一数组层位于第二层,说明前16位匹配,最大前缀长度在第一数组层需要在16的基础上进行计算)。其中,位于第一数组层的SP指针表示短于第一数组层的最大前缀长度32,即最长前缀小于等于32,大于等于17时需要利用SP指针指向记录的最大前缀长度值。如图5所示,SP指针指向12,表示最大前缀长度值在16的基础上增加12位,为28。使用16位1对目的地址的17-32位进行匹配,直接查找到第一普通节点,而不是辅助基点指向该第一普通节点,说明与目的地址匹配的路由表项的最大前缀长度值大于32,进入下一层继续进行匹配查找。
在一些实施例中,如图9所示,基于最长前缀匹配算法和二进制目的地址的33至48位在第二数组层内查找数组,包括:
步骤451:响应于确定根据二进制目的地址的33至48位在第二数组层查找到辅助节点,依次将二进制目的地址33至48位的最后一个1值变为0值,直至二进制目的地址与第二普通节点存储的数组相同,匹配成功,并将二进制目的地址的33至48位存储于该辅助节点内。
在该步骤中,示例性的,如图5所示,假设目的地址的33-48位为4806(0100100000000110),由于第一数组层中没有与之匹配的第一普通节点,会查找到辅助节点。例如,当查找到辅助节点G时,将0100100000000110的最后一个1值变为0值,则0100100000000110变为0100100000000100(4804),在第一数组层中仍然没有与之匹配的第一普通节点,继续将最后一位1值变为0值,得到0100100000000100(4800),此时,与第一普通节点F匹配,匹配成功,利用存储于辅助节点内的用于指向同层节点的P2指针指向第二普通节点F,由于0100100000000110的最后一个变为0值的1值位于第14位,所以变化后的目的地址的最长前缀长度为32+13=45,此时的最长前缀路由为2240:2240:4800:……/45,对应SP指针指向13的情况。
可选地,也可以选择将16位1的前缀进行改动,来帮助辅助节点找到对应的第一普通节点或第二普通节点。示例性的,使用1111111111111111对0100100000000110(4806)进行匹配时,得到0100100000000110,则使用1111111111111110对0100100000000110进行匹配,得到0100100000000110(4806);则使用1111111111111100对0100100000000110进行匹配,得到0100100000000100(4804);则使用1111111111111000对0100100000000110进行匹配,得到0100100000000000(4800),找到第二普通节点F;变换了3次,则最大前缀长度为32+16-3=45。
步骤452:响应于确定根据二进制目的地址的33至48位查找到第二普通节点,基于存储于第二普通节点内的SP指针记录指向该第二普通节点的全部辅助节点的的最大前缀长度,并基于所述LP指针进入所述第三数组层。
在该步骤中,如图5所示,示例性的,当查找到普通节点F时,根据存储于第二普通节点内的SP指针记录辅助节点G的最大前缀长度13(第二数组层位于第三层,说明前32位匹配,最大前缀长度在第二数组层需要在32的基础上进行计算)。其中,位于第二数组层的SP指针表示短于第二数组层的最大前缀长度48,即最长前缀小于等于48,大于等于33时需要利用SP指针指向记录的最大前缀长度值。如图5所示,SP指针指向的链表中包括16、13和5,说明此时有至少3个辅助节点指向第二普通节点F,其中,上述示例的4806对应记录的链表中的13。使用16位1对目的地址的33-48位进行匹配,直接查找到第二普通节点时,说明与目的地址匹配匹配的路由表项的最大前缀长度值大于48,需要进入下一层继续进行匹配查找。其中,LP指针表示长于第二数组层的最大前缀长度48,即最大长前缀长度值大于48。
在一些实施例中,基于最长前缀匹配算法和二进制目的地址的49至64位在第三数组层内查找数组,包括:
基于二进制目的地址的49至64位与链表存储的全部数组,通过与运算进行匹配,直至确定具有最大前缀长度的目标数组,匹配成功;其中,每个位于第三数组层的数组均对应一个前缀长度。
示例性的,如图5所示,第二普通节点F的SP指针指向的链表可以看出,经由第二普通节点F的路由表项包括:3001:2240:4800:0000:/62、3001:2240:4800:0000:/56、3001:2240:4800:1200/56、3001:2240:4800:3400:/62、3001:2240:4800:5678:/64。其中,该链表的第一行表示路由表项的第49至64位,第二行表示该层的最大前缀值,即从49位开始,子网掩码中1的个数,该值加上48表示路由表项的最大前缀长度。若目的地址前64位为3001:2240:4800:1000,该目的地址的49至64位为1000(0001000000000000),通过与运算与每个路由进行匹配,匹配结果如下表:
表3目的地址的49至64位为1000匹配表
目的地址 子网掩码 匹配结果 十六进制表示
0001000000000000 1111111111111100 0001000000000000 1000
0001000000000000 1111111100000000 0001000000000000 1000
0001000000000000 1111111100000000 0001000000000000 1000
0001000000000000 1111111100000000 0001000000000000 1000
0001000000000000 1111111111111111 0001000000000000 1000
匹配结果发现,每个路由均与目的地址匹配,此时的最大前缀值为16,即最长前缀路由为3001:2240:4800:5678:/64。最后经由该最长前缀路由进行下一跳,利用该最长前缀路由对应的出接口进行外来数据包的转发。
需要说明的是,本申请实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本申请实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本申请的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种白盒路由器转发信息库表的分发与存储装置。
参考图10,所述白盒路由器转发信息库表的分发与存储装置,包括:
接收模块10,被配置为:接收下发的路由表项;
创建模块20,被配置为:基于路由表项构建最长前缀匹配树结构;其中,最长前缀匹配树结构包括依次排列的多个数组层,最长前缀匹配树结构的每层都包括多个节点,数组层还包括指向最长前缀路由的辅助节点;
地址确认模块30,被配置为:响应于确定接收到外来数据包,确定外来数据包的目的地址;
匹配模块40,被配置为:基于目的地址和最长前缀匹配树结构,根据最长前缀匹配算法进行路由匹配;
转发模块50,被配置为:响应于确定匹配失败,经由默认路由进行下一跳;
响应于确定匹配成功,经由最长前缀路由进行下一跳。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述实施例的装置用于实现前述任一实施例中相应的白盒路由器转发信息库表的分发与存储方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的白盒路由器转发信息库表的分发与存储方法。
图11示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
上述实施例的电子设备用于实现前述任一实施例中相应的白盒路由器转发信息库表的分发与存储方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的白盒路由器转发信息库表的分发与存储方法。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的白盒路由器转发信息库表的分发与存储方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本申请的范围(包括权利要求)被限于这些例子;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本申请实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本申请实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本申请实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本申请的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本申请实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本申请的具体实施例对本申请进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本申请实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本申请实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (4)

1.一种白盒路由器转发信息库表的分发与存储方法,其特征在于,包括:
接收下发的路由表项;
基于所述路由表项构建最长前缀匹配树结构;其中,所述最长前缀匹配树结构包括依次排列的多个数组层,所述最长前缀匹配树结构的每层都包括多个节点,该多个数组层中的至少一层的节点包括指向最长前缀路由的辅助节点;所述多个数组层包括根层、第一数组层、第二数组层、第三数组层;所述根层包括根节点、链表节点和空节点;所述第一数组层包括第一普通节点和所述辅助节点,所述第一普通节点包括SP指针;所述第二数组层包括第二普通节点和所述辅助节点,所述第二普通节点包括所述SP指针和LP指针;所述第三数组层为线性的链表;所述根节点存储目的地址的前16位,所述链表节点指向存储目的地址1~64位的链表,所述空节点表示目的地址的前16位不在根层,路由查找时直接返回默认路由进行下一跳;为区分根节点、链表节点,设置一个标记变量f,每当目的地址的前16位与根层中的某个节点匹配,计一次数,当该节点的累计计数大于标记变量f时,该节点为根节点,该节点的累计计数小于等于标记变量f时,该节点为链表节点;
响应于确定接收到外来数据包,确定所述外来数据包的目的地址;
基于所述目的地址和最长前缀匹配树结构,根据最长前缀匹配算法对所述最长前缀匹配树结构逐层进行路由匹配;
响应于确定匹配失败,经由默认路由进行下一跳;
响应于确定匹配成功,经由所述最长前缀路由进行下一跳;
其中,所述基于所述目的地址和最长前缀匹配树结构,根据最长前缀匹配算法对所述最长前缀匹配树结构逐层进行路由匹配,包括:
将所述目的地址进行二进制转化,得到二进制目的地址;
获取所述二进制目的地址的前64位;
基于所述最长前缀匹配算法和所述二进制目的地址的前16位在所述根层内查找所述数组;所述基于所述最长前缀匹配算法和所述二进制目的地址的前16位在所述根层内查找所述数组,包括:响应于确定根据所述二进制目的地址的前16位在所述根层查找到所述空节点,匹配失败;响应于确定根据所述二进制目的地址的前16位查找到所述链表节点,在所述链表节点中查找用于存储所述二进制目的地址1至64位的链表,匹配成功;响应于确定根据所述二进制目的地址的前16位查找到所述根节点,根据所述根节点中存储的用于指向下一层的P1指针,进入所述第一数组层;
基于所述最长前缀匹配算法和所述二进制目的地址的17至32位在所述第一数组层内查找所述数组;所述基于所述最长前缀匹配算法和所述二进制目的地址的17至32位在所述第一数组层内查找所述数组,包括:响应于确定根据所述二进制目的地址的17至32位在所述第一数组层查找到所述辅助节点,依次将所述二进制目的地址17至32位的最后一个1值变为0值,直至所述二进制目的地址与所述第一普通节点存储的数组相同,匹配成功,并将所述二进制目的地址的17至32位存储于该辅助节点内;响应于确定根据所述二进制目的地址的17至32位查找到所述第一普通节点,基于存储于所述第一普通节点内的所述SP指针记录指向该第一普通节点的全部辅助节点的最大前缀长度,并根据存储于所述第一普通节点内的P1指针进入所述第二数组层;
基于所述最长前缀匹配算法和所述二进制目的地址的33至48位在所述第二数组层内查找所述数组;所述基于所述最长前缀匹配算法和所述二进制目的地址的33至48位在所述第二数组层内查找所述数组,包括:响应于确定根据所述二进制目的地址的33至48位在所述第二数组层查找到所述辅助节点,依次将所述二进制目的地址33至48位的最后一个1值变为0值,直至所述二进制目的地址与所述第二普通节点存储的数组相同,匹配成功,并将所述二进制目的地址的33至48位存储于该辅助节点内;响应于确定根据所述二进制目的地址的33至48位查找到所述第二普通节点,基于存储于所述第二普通节点内的所述SP指针记录指向该第二普通节点的全部辅助节点的最大前缀长度,并基于所述LP指针进入所述第三数组层;
基于所述最长前缀匹配算法和所述二进制目的地址的49至64位在所述第三数组层内查找所述数组;所述基于所述最长前缀匹配算法和所述二进制目的地址的49至64位在所述第三数组层内查找所述数组,包括:基于所述二进制目的地址的49至64位与所述链表存储的全部所述数组,通过与运算进行匹配,直至确定具有最大前缀长度的目标数组,匹配成功;其中,每个位于所述第三数组层的数组均对应一个最大前缀长度。
2.一种白盒路由器转发信息库表的分发与存储装置,其特征在于,包括:
接收模块,被配置为:接收下发的路由表项;
创建模块,被配置为:基于所述路由表项构建最长前缀匹配树结构;其中,所述最长前缀匹配树结构包括依次排列的多个数组层,所述最长前缀匹配树结构的每层都包括多个节点,该多个数组层中的至少一层的节点包括指向最长前缀路由的辅助节点;所述多个数组层包括根层、第一数组层、第二数组层、第三数组层;所述根层包括根节点、链表节点和空节点;所述第一数组层包括第一普通节点和所述辅助节点,所述第一普通节点包括SP指针;所述第二数组层包括第二普通节点和所述辅助节点,所述第二普通节点包括所述SP指针和LP指针;所述第三数组层为线性的链表;所述根节点存储目的地址的前16位,所述链表节点指向存储目的地址1~64位的链表,所述空节点表示目的地址的前16位不在根层,路由查找时直接返回默认路由进行下一跳;为区分根节点、链表节点,设置一个标记变量f,每当目的地址的前16位与根层中的某个节点匹配,计一次数,当该节点的累计计数大于标记变量f时,该节点为根节点,该节点的累计计数小于等于标记变量f时,该节点为链表节点;
地址确认模块,被配置为:响应于确定接收到外来数据包,确定所述外来数据包的目的地址;
匹配模块,被配置为:基于所述目的地址和最长前缀匹配树结构,根据最长前缀匹配算法对所述最长前缀匹配树结构逐层进行路由匹配;其中,所述基于所述目的地址和最长前缀匹配树结构,根据最长前缀匹配算法对所述最长前缀匹配树结构逐层进行路由匹配,包括:
将所述目的地址进行二进制转化,得到二进制目的地址;
获取所述二进制目的地址的前64位;
基于所述最长前缀匹配算法和所述二进制目的地址的前16位在所述根层内查找所述数组;所述基于所述最长前缀匹配算法和所述二进制目的地址的前16位在所述根层内查找所述数组,包括:响应于确定根据所述二进制目的地址的前16位在所述根层查找到所述空节点,匹配失败;响应于确定根据所述二进制目的地址的前16位查找到所述链表节点,在所述链表节点中查找用于存储所述二进制目的地址1至64位的链表,匹配成功;响应于确定根据所述二进制目的地址的前16位查找到所述根节点,根据所述根节点中存储的用于指向下一层的P1指针,进入所述第一数组层;
基于所述最长前缀匹配算法和所述二进制目的地址的17至32位在所述第一数组层内查找所述数组;所述基于所述最长前缀匹配算法和所述二进制目的地址的17至32位在所述第一数组层内查找所述数组,包括:响应于确定根据所述二进制目的地址的17至32位在所述第一数组层查找到所述辅助节点,依次将所述二进制目的地址17至32位的最后一个1值变为0值,直至所述二进制目的地址与所述第一普通节点存储的数组相同,匹配成功,并将所述二进制目的地址的17至32位存储于该辅助节点内;响应于确定根据所述二进制目的地址的17至32位查找到所述第一普通节点,基于存储于所述第一普通节点内的所述SP指针记录指向该第一普通节点的全部辅助节点的最大前缀长度,并根据存储于所述第一普通节点内的P1指针进入所述第二数组层;
基于所述最长前缀匹配算法和所述二进制目的地址的33至48位在所述第二数组层内查找所述数组;所述基于所述最长前缀匹配算法和所述二进制目的地址的33至48位在所述第二数组层内查找所述数组,包括:响应于确定根据所述二进制目的地址的33至48位在所述第二数组层查找到所述辅助节点,依次将所述二进制目的地址33至48位的最后一个1值变为0值,直至所述二进制目的地址与所述第二普通节点存储的数组相同,匹配成功,并将所述二进制目的地址的33至48位存储于该辅助节点内;响应于确定根据所述二进制目的地址的33至48位查找到所述第二普通节点,基于存储于所述第二普通节点内的所述SP指针记录指向该第二普通节点的全部辅助节点的最大前缀长度,并基于所述LP指针进入所述第三数组层;
基于所述最长前缀匹配算法和所述二进制目的地址的49至64位在所述第三数组层内查找所述数组;所述基于所述最长前缀匹配算法和所述二进制目的地址的49至64位在所述第三数组层内查找所述数组,包括:基于所述二进制目的地址的49至64位与所述链表存储的全部所述数组,通过与运算进行匹配,直至确定具有最大前缀长度的目标数组,匹配成功;其中,每个位于所述第三数组层的数组均对应一个最大前缀长度;
转发模块,被配置为:响应于确定匹配失败,经由默认路由进行下一跳;
响应于确定匹配成功,经由所述最长前缀路由进行下一跳。
3.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1所述的方法。
4.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使计算机执行权利要求1所述的方法。
CN202210754309.4A 2022-06-28 2022-06-28 白盒路由器转发信息库表的分发与存储方法及相关设备 Active CN115378869B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210754309.4A CN115378869B (zh) 2022-06-28 2022-06-28 白盒路由器转发信息库表的分发与存储方法及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210754309.4A CN115378869B (zh) 2022-06-28 2022-06-28 白盒路由器转发信息库表的分发与存储方法及相关设备

Publications (2)

Publication Number Publication Date
CN115378869A CN115378869A (zh) 2022-11-22
CN115378869B true CN115378869B (zh) 2024-03-19

Family

ID=84061134

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210754309.4A Active CN115378869B (zh) 2022-06-28 2022-06-28 白盒路由器转发信息库表的分发与存储方法及相关设备

Country Status (1)

Country Link
CN (1) CN115378869B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102571599A (zh) * 2012-02-08 2012-07-11 福建三元达通讯股份有限公司 一种路由表项的快速存储方法
CN109194574A (zh) * 2018-09-20 2019-01-11 南通科技职业学院 一种IPv6路由查找方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6934252B2 (en) * 2002-09-16 2005-08-23 North Carolina State University Methods and systems for fast binary network address lookups using parent node information stored in routing table entries
US10511532B2 (en) * 2018-03-06 2019-12-17 Barefoot Networks, Inc. Algorithmic longest prefix matching in programmable switch

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102571599A (zh) * 2012-02-08 2012-07-11 福建三元达通讯股份有限公司 一种路由表项的快速存储方法
CN109194574A (zh) * 2018-09-20 2019-01-11 南通科技职业学院 一种IPv6路由查找方法

Also Published As

Publication number Publication date
CN115378869A (zh) 2022-11-22

Similar Documents

Publication Publication Date Title
US6434144B1 (en) Multi-level table lookup
US20040254909A1 (en) Programming routes and access control lists in comparison tree data structures and their use such as in performing lookup operations
US20100058027A1 (en) Method for selecting hash function, method for storing and searching routing table and devices thereof
US20040230583A1 (en) Comparison tree data structures of particular use in performing lookup operations
US9729447B2 (en) Apparatus and method for processing alternately configured longest prefix match tables
US9049157B1 (en) Method and device for improving scalability of longest prefix match
CN106416152B (zh) 一种查找装置、查找配置方法和查找方法
JP3813136B2 (ja) 通信制御装置、通信制御方法、通信制御プログラム、通信制御用データ構造
CN108259347A (zh) 一种报文传输方法和装置
WO2020073988A1 (zh) 一种路由表项生成方法、字典树生成方法和装置
CN107613039A (zh) Ip地址归属地查询方法、装置、系统及存储介质
CN108322394A (zh) 路由表建立、查找、删除及状态变更方法和装置
US20040044868A1 (en) Method and apparatus for high-speed longest prefix match of keys in a memory
CN112787927A (zh) 一种分段路由报文转发方法、装置及预设逻辑电路单元
CN114172853B (zh) 流量转发及裸机服务器的配置方法、装置
CN100397816C (zh) 在网络设备中对接收数据包进行分类的方法
CN115378869B (zh) 白盒路由器转发信息库表的分发与存储方法及相关设备
CN117221224B (zh) 一种表项构建、查找方法、装置、网络设备及存储介质
JP3623082B2 (ja) 連想メモリモジュール
JP3569802B2 (ja) ルーティングテーブル検索装置および検索法
CN113824814B (zh) 一种转发表的地址匹配方法、装置、网络设备及介质
CN115086221A (zh) 一种报文处理方法、装置、转发设备和存储介质
CN108075979A (zh) 实现最长掩码匹配的方法及系统
KR100686732B1 (ko) 복수의 프리픽스로부터 데이터 패킷을 라우팅하기 위한데이터베이스 생성방법과 라우팅 방법 및 그 방법을이용한 라우터
JP5087062B2 (ja) 経路計算装置、経路計算方法、および、経路計算プログラム

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
GR01 Patent grant
GR01 Patent grant