CN112565089A - 一种路由信息的处理方法及装置 - Google Patents
一种路由信息的处理方法及装置 Download PDFInfo
- Publication number
- CN112565089A CN112565089A CN202011375879.XA CN202011375879A CN112565089A CN 112565089 A CN112565089 A CN 112565089A CN 202011375879 A CN202011375879 A CN 202011375879A CN 112565089 A CN112565089 A CN 112565089A
- Authority
- CN
- China
- Prior art keywords
- prefix
- target
- sub
- mask length
- tail
- 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
Images
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
- H04L45/60—Router architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种路由信息的处理方法及装置,其中方法为:根据待存储路由信息包括的目标头前缀和目标掩码长度确定目标尾前缀;将所述目标头前缀和所述目标尾前缀存储至所述平衡多叉树中的第一前缀位置和第二前缀位置;将所述目标掩码长度分别存储至所述第一掩码长度组中的第一掩码长度位置及所述第二掩码长度组中的第二掩码长度位置;设置所述第一掩码长度位置的所述目标掩码长度所绑定的指示信息为头指示信息、所述第二掩码长度位置的所述目标掩码长度所绑定的指示信息为尾指示信息;确定所述目标头前缀和所述目标尾前缀所绑定的指示信息及转发信息。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种路由信息的处理方法及装置。
背景技术
网络中数据包的转发要依据路由信息,路由信息指示了对应的某个网络地址的数据包需要如何转发。举例来说,一个数据包到达路由器后,路由器会根据数据包中的网络地址,匹配相应的路由信息,并根据匹配到的路由信息进行转发。
目前的路由信息处理方法是,路由器中的路由信息是以离散路由的方式存储的,即一个网络地址与一条路由信息相对应。在查询时,是基于对网络地址的精确命中,得到该网络地址对应的路由信息。
由于上述路由信息处理方式中,一个网络地址与一条路由信息相对应,会降低路由器的存储空间利用率。
发明内容
本发明提供一种路由信息的处理方法及装置,解决了现有技术中路由器的存储空间利用率较低的问题。
第一方面,本发明提供一种路由信息的处理方法,包括:
根据待存储路由信息包括的目标头前缀和目标掩码长度确定目标尾前缀;
根据所述目标头前缀、所述目标尾前缀与平衡多叉树中各前缀的大小关系,分别将所述目标头前缀和所述目标尾前缀存储至所述平衡多叉树中的第一前缀位置和第二前缀位置;
根据所述目标掩码长度与第一掩码长度组及第二掩码长度组中各掩码长度的大小关系,将所述目标掩码长度分别存储至所述第一掩码长度组中的第一掩码长度位置及所述第二掩码长度组中的第二掩码长度位置;所述第一掩码长度组、所述第二掩码长度组分别为所述第一前缀位置、所述第二前缀位置在掩码链中所指向的掩码长度组;
设置所述第一掩码长度位置的所述目标掩码长度所绑定的指示信息为头指示信息、所述第二掩码长度位置的所述目标掩码长度所绑定的指示信息为尾指示信息;并将所述待存储路由信息包括的目标转发信息分别与所述第一掩码长度位置及所述第二掩码长度位置的所述目标掩码长度绑定;
根据所述掩码链中各掩码长度所绑定的指示信息及转发信息,确定所述目标头前缀和所述目标尾前缀所绑定的指示信息及转发信息。
上述方法中,获取待存储路由信息,可以确定出目标尾前缀,并通过平衡多叉树,分别将所述目标头前缀、所述目标尾前缀存储至第一前缀位置和第二前缀位置,并且将所述目标掩码长度存储至所述第一掩码长度组中的第一掩码长度位置及所述第二掩码长度组中的第二掩码长度位置,并设置相应绑定的指示信息和转发信息,从而目标头前缀至目标尾前缀之间的网络地址所对应的待存储路由信息只有一条,即为目标头前缀和目标尾前缀所绑定的存储路由信息,也就是说,每一条路由信息都对应多个网络地址,从而提升了存储空间利用率。
可选的,还包括:
获取待查找前缀;
确定所述平衡多叉树中是否存在所述待查找前缀;
若确定所述平衡多叉树中存在所述待查找前缀,则将所述待查找前缀所绑定的指示信息及转发信息作为所述待查找前缀命中的指示信息及转发信息。
上述方法中,当所述平衡多叉树中存在所述待查找前缀时,直接将所述待查找前缀所绑定的指示信息及转发信息作为所述待查找前缀命中的指示信息及转发信息。
可选的,若所述平衡多叉树包括第一平衡多叉树和第二平衡多叉树,则所述根据所述目标头前缀、所述目标尾前缀与平衡多叉树中各前缀的大小关系,分别将所述目标头前缀和所述目标尾前缀存储至所述平衡多叉树中的第一前缀位置和第二前缀位置,包括:
将所述目标头前缀的前N位作为第一头子前缀、所述目标头前缀中除去前N后之外的后M位作为第二头子前缀、所述目标尾前缀的前N位作为第一尾子前缀、所述目标尾前缀中除去前N后之外的后M位作为第二尾子前缀;所述第一头子前缀指向所述第二头子前缀,所述第一尾子前缀指向所述第二尾子前缀;
根据所述第一头子前缀、所述第一尾子前缀与所述第一平衡多叉树中各前缀的大小关系,将所述第一头子前缀存储至所述第一平衡多叉树中所述第一前缀位置的第一子前缀位置,将所述第一尾子前缀存储至所述第一平衡多叉树中所述第二前缀位置的第二子前缀位置;
根据所述第二头子前缀、所述第二尾子前缀与所述第二平衡多叉树中各前缀的大小关系,将所述第二头子前缀存储至所述第二平衡多叉树中所述第二前缀位置的第三子前缀位置,将所述第二尾子前缀存储至所述第二平衡多叉树中所述第二前缀位置的第四子前缀位置。
上述方法中,通过两棵平衡二叉树分别存储前缀的头N位和后M位,通过分层存储的方式在每棵平衡多叉树中只关注相应位数的数据,管理更加方便,网络地址的前N位以及后M位可能在不同场景下有特定的意义,从而上述方法可以适配不同场景下路由信息的存储。
可选的,所述根据所述掩码链中各掩码长度所绑定的指示信息及转发信息,确定所述目标头前缀和所述目标尾前缀所绑定的指示信息及转发信息,包括:
若所述目标掩码长度为所述第一掩码长度组和\或所述第二掩码长度组中最大的掩码长度,则将所述目标掩码长度所绑定的指示信息及转发信息作为所述第二头子前缀和所述第二尾子前缀所绑定的指示信息及转发信息;
若所述第二头子前缀为所述第一头子前缀所指向的最大子前缀,则将所述第二头子前缀所绑定的指示信息及转发信息作为所述第一头子前缀所绑定的指示信息及转发信息;若所述第二尾子前缀为所述第一尾子前缀所指向的最大子前缀,则将所述第二尾子前缀所绑定的指示信息及转发信息作为所述第一尾子前缀所绑定的指示信息及转发信息。
上述方式中,若所述目标掩码长度为所述第一掩码长度组和\或所述第二掩码长度组中最大的掩码长度,说明所述目标掩码长度是在所述第一掩码长度组和\或所述第二掩码长度组中确定的最优选择,所述目标掩码长度所确定的范围没有更加细分的情况,所述第二头子前缀和所述第二尾子前缀同理,不需要继续遍历,便能获取到最优的指示信息及转发信息。
可选的,还包括:
将获取的待查找前缀的前N位作为第一子待查找前缀;
获取所述第一平衡多叉树中小于或等于所述第一子待查找前缀的最大子前缀,得到第一目标子前缀;
若确定所述第一目标子前缀所绑定的指示信息为尾指示信息且所述第一目标子前缀小于所述第一子待查找前缀,则将所述第一目标子前缀所绑定的转发信息作为所述待查找前缀命中的转发信息。
上述方式下,满足上述条件时,说明所述第一子待查找前缀位于所述第一目标子前缀和下一个大于所述第一子待查找前缀的子前缀之间,而这个范围没有更细分的范围,因此,大于所述第一子待查找前缀的子前缀范围所对应的转发信息,也就是所述第一目标子前缀所绑定的转发信息,就是所述待查找前缀命中的转发信息,从而无需逐个查找,提升了查找效率。
可选的,若所述第一目标子前缀等于所述第一子待查找前缀,所述方法还包括:
将所述待查找前缀中除前N位之外的后M位作为第二子待查找前缀;
获取所述第二平衡多叉树中小于或等于所述第二子待查找前缀的最大子前缀,得到第二目标子前缀;
若确定所述第二目标子前缀所绑定的指示信息为头指示信息,且所述第二目标子前缀小于所述第二子待查找前缀,则将所述第二目标子前缀所绑定的转发信息作为所述待查找前缀命中的转发信息。
上述方式下,满足上述条件时,说明需要在所述第一目标子前缀的范围内继续查找,且所述第二目标子前缀位于所述第二子待查找前缀和第一个小于所述第二子待查找前缀的子前缀之间,小于所述第一子待查找前缀的子前缀范围所对应的转发信息,也就是所述第二目标子前缀所绑定的转发信息,就是所述待查找前缀命中的转发信息,从而无需逐个查找,提升了查找效率。
可选的,若所述第二目标子前缀等于所述第二子待查找前缀,所述方法还包括:
若确定所述第二目标子前缀所绑定的指示信息为尾指示信息,则将所述第二目标子前缀所绑定的转发信息作为所述待查找前缀命中的转发信息。
上述方式下,满足上述条件时,说明所述待查找前缀恰好是存储的某个前缀,因此直接将所述第二目标子前缀所绑定的转发信息作为所述待查找前缀命中的转发信息,从而无需逐个查找,提升了查找效率。
第二方面,本发明提供一种路由信息的处理装置,包括:
确定模块,用于根据待存储路由信息包括的目标头前缀和目标掩码长度确定目标尾前缀;
存储模块,用于根据所述目标头前缀、所述目标尾前缀与平衡多叉树中各前缀的大小关系,分别将所述目标头前缀和所述目标尾前缀存储至所述平衡多叉树中的第一前缀位置和第二前缀位置;根据所述目标掩码长度与第一掩码长度组及第二掩码长度组中各掩码长度的大小关系,将所述目标掩码长度分别存储至所述第一掩码长度组中的第一掩码长度位置及所述第二掩码长度组中的第二掩码长度位置;所述第一掩码长度组、所述第二掩码长度组分别为所述第一前缀位置、所述第二前缀位置在掩码链中所指向的掩码长度组;
处理模块,用于设置所述第一掩码长度位置的所述目标掩码长度所绑定的指示信息为头指示信息、所述第二掩码长度位置的所述目标掩码长度所绑定的指示信息为尾指示信息;并将所述待存储路由信息包括的目标转发信息分别与所述第一掩码长度位置及所述第二掩码长度位置的所述目标掩码长度绑定;根据所述掩码链中各掩码长度所绑定的指示信息及转发信息,确定所述目标头前缀和所述目标尾前缀所绑定的指示信息及转发信息。
可选的,所述处理模块还用于:
获取待查找前缀;
确定所述平衡多叉树中是否存在所述待查找前缀;若确定所述平衡多叉树中存在所述待查找前缀,则将所述待查找前缀所绑定的指示信息及转发信息作为所述待查找前缀命中的指示信息及转发信息。
可选的,若所述平衡多叉树包括第一平衡多叉树和第二平衡多叉树,则所述存储模块具体用于:
将所述目标头前缀的前N位作为第一头子前缀、所述目标头前缀中除去前N后之外的后M位作为第二头子前缀、所述目标尾前缀的前N位作为第一尾子前缀、所述目标尾前缀中除去前N后之外的后M位作为第二尾子前缀;所述第一头子前缀指向所述第二头子前缀,所述第一尾子前缀指向所述第二尾子前缀;
根据所述第一头子前缀、所述第一尾子前缀与所述第一平衡多叉树中各前缀的大小关系,将所述第一头子前缀存储至所述第一平衡多叉树中所述第一前缀位置的第一子前缀位置,将所述第一尾子前缀存储至所述第一平衡多叉树中所述第二前缀位置的第二子前缀位置;
根据所述第二头子前缀、所述第二尾子前缀与所述第二平衡多叉树中各前缀的大小关系,将所述第二头子前缀存储至所述第二平衡多叉树中所述第二前缀位置的第三子前缀位置,将所述第二尾子前缀存储至所述第二平衡多叉树中所述第二前缀位置的第四子前缀位置。
可选的,所述处理模块具体用于:
若所述目标掩码长度为所述第一掩码长度组和\或所述第二掩码长度组中最大的掩码长度,则将所述目标掩码长度所绑定的指示信息及转发信息作为所述第二头子前缀和所述第二尾子前缀所绑定的指示信息及转发信息;
若所述第二头子前缀为所述第一头子前缀所指向的最大子前缀,则将所述第二头子前缀所绑定的指示信息及转发信息作为所述第一头子前缀所绑定的指示信息及转发信息;
若所述第二尾子前缀为所述第一尾子前缀所指向的最大子前缀,则将所述第二尾子前缀所绑定的指示信息及转发信息作为所述第一尾子前缀所绑定的指示信息及转发信息。
可选的,所述处理模块还用于:
将获取的待查找前缀的前N位作为第一子待查找前缀;获取所述第一平衡多叉树中小于或等于所述第一子待查找前缀的最大子前缀,得到第一目标子前缀;
若确定所述第一目标子前缀所绑定的指示信息为尾指示信息且所述第一目标子前缀小于所述第一子待查找前缀,则将所述第一目标子前缀所绑定的转发信息作为所述待查找前缀命中的转发信息。
可选的,若所述第一目标子前缀等于所述第一子待查找前缀,所述处理模块还用于:
将所述待查找前缀中除前N位之外的后M位作为第二子待查找前缀;
获取所述第二平衡多叉树中小于或等于所述第二子待查找前缀的最大子前缀,得到第二目标子前缀;
若确定所述第二目标子前缀所绑定的指示信息为头指示信息,且所述第二目标子前缀小于所述第二子待查找前缀,则将所述第二目标子前缀所绑定的转发信息作为所述待查找前缀命中的转发信息。
可选的,若所述第二目标子前缀等于所述第二子待查找前缀,所述处理模块还用于:
若确定所述第二目标子前缀所绑定的指示信息为尾指示信息,则将所述第二目标子前缀所绑定的转发信息作为所述待查找前缀命中的转发信息。
第三方面,本发明提供一种计算机设备,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个可选的方法或上述第二方面及第二方面各个可选的方法。
第四方面,本发明提供一种存储介质,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个可选的方法或上述第二方面及第二方面各个可选的方法。
附图说明
图1为本申请实施例提供的一种路由信息的处理方法的步骤流程示意图;
图2~图8为本申请实施例提供的一种路由信息的处理方法中存储目标头前缀和目标尾前缀的存储示意图;
图9~图18为本申请实施例提供的一种路由信息的处理方法中更新指示信息及转发信息的存储示意图;
图19~图26为本申请实施例提供的一种路由信息的处理方法中更新路由信息的存储示意图;
图27为本申请实施例提供的一种路由信息的处理方法中具体查找方法的步骤流程示意图;
图28为本申请实施例提供的一种路由信息的处理装置的结构示意图。
具体实施方式
为了更好的理解上述技术方案,下面将结合说明书附图及具体的实施方式对上述技术方案进行详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互结合。
如图1所示,本申请实施例提供了一种路由信息的处理方法。
步骤101:根据待存储路由信息包括的目标头前缀和目标掩码长度确定目标尾前缀。
步骤102:根据所述目标头前缀、所述目标尾前缀与平衡多叉树中各前缀的大小关系,分别将所述目标头前缀和所述目标尾前缀存储至所述平衡多叉树中的第一前缀位置和第二前缀位置。
步骤103:根据所述目标掩码长度与第一掩码长度组及第二掩码长度组中各掩码长度的大小关系,将所述目标掩码长度分别存储至所述第一掩码长度组中的第一掩码长度位置及所述第二掩码长度组中的第二掩码长度位置。
所述第一掩码长度组、所述第二掩码长度组分别为所述第一前缀位置、所述第二前缀位置在掩码链中所指向的掩码长度组。
步骤104:设置所述第一掩码长度位置的所述目标掩码长度所绑定的指示信息为头指示信息、所述第二掩码长度位置的所述目标掩码长度所绑定的指示信息为尾指示信息;并将所述待存储路由信息包括的目标转发信息分别与所述第一掩码长度位置及所述第二掩码长度位置的所述目标掩码长度绑定。
步骤105:根据所述掩码链中各掩码长度所绑定的指示信息及转发信息,确定所述目标头前缀和所述目标尾前缀所绑定的指示信息及转发信息。
步骤101~步骤105中的待存储路由信息可以是一个网络地址范围的转发规则,满足这个网络地址范围的数据,可以依据待存储路由信息中的转发规则进行转发。在后续步骤中,首先根据所述目标头前缀和所述目标掩码长度确定目标尾前缀,即将网络地址范围的两端网络地址确定出来。再在步骤103中根据所述目标头前缀、所述目标尾前缀与所述平衡多叉树中各前缀的大小关系,分别将所述目标头前缀和所述目标尾前缀存储至所述平衡多叉树中的第一前缀位置和第二前缀位置,并在步骤104继续将所述目标掩码长度存储至所述第一掩码长度组中的第一掩码长度位置及所述第二掩码长度组中的第二掩码长度位置,设置所述第一掩码长度位置的所述目标掩码长度所绑定的指示信息为头指示信息,以及设置所述第二掩码长度位置的所述目标掩码长度所绑定的指示信息为尾指示信息,以及设置相应的绑定信息,可以方便后续路由信息的查找。步骤101~步骤105适用于互联网协议第6版(Internet Protocol Version 6,IPv6)等版本的网络地址,本申请中以IPv6网络地址为例介绍具体方法。
需要说明的是,上述的所述目标头前缀或所述目标尾前缀可能位于平衡多叉树的各前缀之间,也可能就是平衡多叉树的各前缀中的某个前缀。
下面以4种情况为例,举例说明步骤101中的目标头前缀和目标尾前缀。其中,网络地址的存储以16进制,事实上,采用何种进制可以通过具体场景灵活设置。
情况1:IPv6地址的掩码长度小于64位。
举例来说,目标掩码长度是16,目标头前缀(共128位,包括高64位键值和低64位键值)为1001::0/16,那么目标头前缀的存储如图2所示,目标尾前缀(共128位,包括高64位键值和低64位键值)的存储如图3所示。
情况2:IPv6地址的掩码长度等于64位。
举例来说,目标掩码长度是64,目标头前缀为1001::0/64,那么目标头前缀的存储如图4所示,目标尾前缀的存储如图5所示。
情况3:IPv6地址的掩码长度大于64位但小于128位。
举例来说,目标掩码长度是80,目标头前缀为1001::0/80,那么目标头前缀的存储如图6所示,目标尾前缀的存储如图7所示。
情况4:IPv6地址的掩码长度等于128位。
举例来说,目标掩码长度是128,目标头前缀为1001::0/128,那么目标头前缀和目标尾前缀的存储均如图8所示,显然,此时目标头前缀和目标尾前缀相同。
一种可选实施方式中,若所述平衡多叉树包括第一平衡多叉树和第二平衡多叉树;步骤102具体可以为:
步骤(1):将所述目标头前缀的前N位作为第一头子前缀、所述目标头前缀中除去前N后之外的后M位作为第二头子前缀、所述目标尾前缀的前N位作为第一尾子前缀、所述目标尾前缀中除去前N后之外的后M位作为第二尾子前缀。
需要说明的是,所述第一头子前缀指向所述第二头子前缀,所述第一尾子前缀指向所述第二尾子前缀。
步骤(2):根据所述第一头子前缀、所述第一尾子前缀与所述第一平衡多叉树中各前缀的大小关系,将所述第一头子前缀存储至所述第一平衡多叉树中所述第一前缀位置的第一子前缀位置,将所述第一尾子前缀存储至所述第一平衡多叉树中所述第二前缀位置的第二子前缀位置。
步骤(3):根据所述第二头子前缀、所述第二尾子前缀与所述第二平衡多叉树中各前缀的大小关系,将所述第二头子前缀存储至所述第二平衡多叉树中所述第二前缀位置的第三子前缀位置,将所述第二尾子前缀存储至所述第二平衡多叉树中所述第二前缀位置的第四子前缀位置。
步骤102若具体采用步骤(1)~步骤(3)执行,步骤105中“根据所述掩码链中各掩码长度所绑定的指示信息及转发信息,确定所述目标头前缀和所述目标尾前缀所绑定的指示信息及转发信息”的具体实现方式如下:
步骤1051:若所述目标掩码长度为所述第一掩码长度组和\或所述第二掩码长度组中最大的掩码长度,则将所述目标掩码长度所绑定的指示信息及转发信息作为所述第二头子前缀和所述第二尾子前缀所绑定的指示信息及转发信息。
步骤1052:若所述第二头子前缀为所述第一头子前缀所指向的最大子前缀,则将所述第二头子前缀所绑定的指示信息及转发信息作为所述第一头子前缀所绑定的指示信息及转发信息;若所述第二尾子前缀为所述第一尾子前缀所指向的最大子前缀,则将所述第二尾子前缀所绑定的指示信息及转发信息作为所述第一尾子前缀所绑定的指示信息及转发信息。
步骤(1)~步骤(3)的一种可选实施方式中,所述第一平衡多叉树和所述第二平衡多叉树为B+树;N为64,M为64。
下面仍以上述4种情况为例说明,其中,网络地址的存储以16进制,所述第一平衡多叉树和所述第二平衡多叉树中存储的位数均为64位,以及B+结构为例说明步骤(1)~步骤(3)的方法及可选方法,分别描述指示信息和转发信息的添加过程,其中图9~图18为指示信息的添加过程,图19~图26为转发信息的添加过程。
总体来说,是将目标头前缀和目标尾前缀高64位以十六进制的形式作为键值分别存储到第一平衡多叉树(B+树)的叶子节点中。将目标头前缀和目标尾前缀的低64位以十六进制的形式作为键值分别存储到第二平衡多叉树(B+树)的叶子节点中。
情况1:
添加目标头前缀1001::0/16,计算得到需要添加的目标尾前缀,分别添加到B+树中。此时,目标头前缀的高64位健值(第一头子前缀)不存在,低64位健值(第二头子前缀)也不存在。目标尾前缀的高64位健值(第一尾子前缀)不存在,低64位健值(第二尾子前缀)也不存在。
因此,为所述目标头前缀添加头指示信息,既可以直接添加,也可以如图9所示,基于步骤1061~步骤1062,按照以下方式在掩码链中添加:
将掩码链中(掩码长度为16,即图9中掩码/16)设置所述目标头前缀的指示信息为头指示信息(H);此时,所述目标掩码长度为所述第一掩码长度组(图9示出的掩码链中掩码长度/16,H)中最大的掩码长度,则将所述目标掩码长度所绑定的指示信息及转发信息(此时为头指示信息),作为所述第二头子前缀及所述第二尾子前缀所绑定的指示信息及转发信息。
相应的,为所述目标头前缀添加尾指示信息,既可以直接添加,也可以如图9所示,基于掩码链按照以下方式添加:
将掩码链中掩码长度16设置所述目标尾前缀的指示信息为尾指示信息(T);将所述第二掩码长度组(图9示出的掩码链中掩码长度/16,T)中掩码最长的指示信息(此时为尾指示信息)作为所述目标尾前缀的指示信息。
更新指示信息后B+树的存储状态如图10所示。
情况2:
如图11所示,继续添加目标头前缀1001::0/64,计算得到需要添加的目标尾前缀1001-0000-0000-0000-FFFF-FFFF-FFFF-FFFF,添加到B+树中。目标头前缀的高64位健值(1001-0000-0000-0000,第一头子前缀)已存储,低64位健值(0000-0000-0000-0000,第二头子前缀)也已存储,所以已不需要再存储,或者覆盖存储。
如图12所示,目标尾前缀1001-0000-0000-0000-FFFF-FFFF-FFFF-FFFF的高64位健值(1001-0000-0000-0000,第一尾子前缀)已存储,低64位健值(FFFF-FFFF-FFFF-FFFF,第二尾子前缀)未存储,且大于或等于目标尾前缀的最小前缀是1001-FFFF-FFFF-FFFF-FFFF-FFFF-FFFF-FFFF,小于或等于目标尾前缀的最大前缀是1001-0000-0000-0000-0000-0000-0000-0000,所以目标尾前缀中第二尾子前缀FFFF-FFFF-FFFF-FFFF所存储的第二掩码长度位置在上述最大前缀和最小前缀之间。
将所述目标掩码长度(掩码长度为64)存储在第2棵树相同叶子节点下的第一掩码长度位置和第二掩码长度位置中。
将掩码链中第一掩码长度位置的所述目标掩码长度(掩码长度为64)的指示信息设置为H;将掩码链中第二掩码长度位置的所述目标掩码长度(掩码长度为64)的指示信息设置为T。
显然,此时第一掩码长度位置的所述目标掩码长度(掩码长度为64)为所述第一掩码长度组(即图12中第一列掩码长度/16和掩码长度/64)中最大的掩码长度,根据步骤1061,则将第一掩码长度位置的所述目标掩码长度所绑定的指示信息H,作为所述第二头子前缀的指示信息;而且,此时第二掩码长度位置的所述目标掩码长度(掩码长度为64)为所述第二掩码长度组(即图12中第二列掩码长度/64)中最大的掩码长度,则将第二掩码长度位置的所述目标掩码长度所绑定的指示信息T,作为所述第二尾子前缀的指示信息。
进一步地,根据步骤1062,所述第二尾子前缀FFFF-FFFF-FFFF-FFFF为所述第一尾子前缀1001-0000-0000-0000所指向的最大子前缀,那么便把所述第二尾子前缀的掩码长度(掩码长度为64)所绑定的指示信息T作为所述第一尾子前缀所绑定的指示信息。
更新后如图13所示。
情况3:
如图14所示,目标尾前缀1001-0000-0000-0000-0000-FFFF-FFFF-FFFF的高64位健值(1001-0000-0000-0000,第一尾子前缀)已存储,低64位健值(0000-FFFF-FFFF-FFFF,第二尾子前缀)未存储,且大于或等于目标尾前缀的最小前缀是1001-0000-0000-0000-FFFF-FFFF-FFFF-FFFF,小于或等于目标尾前缀的最大前缀是1001-0000-0000-0000-0000-0000-0000-0000,所以目标尾前缀中第二尾子前缀0000-FFFF-FFFF-FFFF所存储的第二掩码长度位置在上述最大前缀和最小前缀之间。
将所述目标掩码长度(掩码长度为80,图15中的掩码/80)存储在第2棵树相同叶子节点下的第一掩码长度位置和第二掩码长度位置中。
将掩码链中第一掩码长度位置的所述目标掩码长度(掩码长度为80)的指示信息设置为H;将掩码链中第二掩码长度位置的所述目标掩码长度(掩码长度为80)的指示信息设置为T。
显然,此时第一掩码长度位置的所述目标掩码长度(掩码长度为80)为所述第一掩码长度组(即图15中第一列掩码长度/16、掩码长度/64和掩码长度/80)中最大的掩码长度,根据步骤1061,则将第一掩码长度位置的所述目标掩码长度所绑定的指示信息H,作为所述第二头子前缀的指示信息;而且,此时第二掩码长度位置的所述目标掩码长度(掩码长度为80)为所述第二掩码长度组(即图15第二列的掩码长度/80)中最大的掩码长度,则将第二掩码长度位置的所述目标掩码长度所绑定的指示信息T,作为所述第二尾子前缀的指示信息。
进一步地,根据步骤1062,所述第二尾子前缀FFFF-FFFF-FFFF-FFFF为所述第一尾子前缀1001-0000-0000-0000所指向的最大子前缀,那么便把所述第二尾子前缀所绑定的指示信息T作为所述第一尾子前缀所绑定的指示信息。
更新后如图16所示。
情况4:
如图17所示,目标尾前缀1001-0000-0000-0000-0000-0000-0000-0000的高64位健值(1001-0000-0000-0000,第一尾子前缀)已存储,低64位健值(0000-0000-0000-000,第二尾子前缀)已存储,且大于或等于目标尾前缀的最小前缀是1001-0000-0000-0000-0000-0000-0000-0000,小于或等于目标尾前缀的最大前缀是1001-0000-0000-0000-0000-0000-0000-0000,上述最大前缀和最小前缀重合,所以目标尾前缀中第二尾子前缀0000-0000-0000-0000-0000所存储的第一掩码长度位置和第二掩码长度位置与上述最大前缀和最小前缀均重合。
将所述目标掩码长度(掩码长度为128,图18中为掩码/128)存储在第2棵树相同叶子节点下的第一掩码长度位置和第二掩码长度位置中。
更新后如图18所示。
将掩码链中第一掩码长度位置(也是第二掩码长度位置)的所述目标掩码长度掩码/128的指示信息设置为T。
显然,此时第一掩码长度位置的所述目标掩码长度(掩码长度为128)为所述第一掩码长度组(即图18中第一列掩码长度/16、掩码长度/64、掩码长度/80和掩码长度/128)中最大的掩码长度,根据步骤1061,则将第一掩码长度位置的所述目标掩码长度所绑定的指示信息T,作为所述第二头子前缀的指示信息;而且,此时第二掩码长度位置的所述目标掩码长度(掩码长度为128)为所述第二掩码长度组(即图18第二列的掩码长度/128)中最大的掩码长度,则将第二掩码长度位置的所述目标掩码长度所绑定的指示信息T,作为所述第二尾子前缀的指示信息。
下面结合图19~图26,详细说明转发信息的添加过程(该过程实际上可以和图9~图18的过程一同进行)。
下面仍以上述4种情况为例说明,情况1~情况4和上述指示信息的添加过程的相对应。
情况1:
添加目标头前缀1001::0/16(1001-0000-0000-0000-0000-0000-0000-0000),计算得到需要添加的目标尾前缀(1001-FFFF-FFFF-FFFF-FFFF-FFFF-FFFF-FFFF),分别添加到B+树中。此时,目标头前缀的高64位健值(第一头子前缀)不存在,低64位健值(第二头子前缀)也不存在。目标尾前缀的高64位健值(第一尾子前缀)不存在,低64位健值(第二尾子前缀)也不存在。
因此,为所述目标头前缀添加头转发信息,既可以直接添加,也可以如图19所示,基于步骤1061~步骤1062,按照以下方式在掩码链中添加:
将掩码链中掩码长度16设置所述目标头前缀的转发信息为F1;此时,所述目标掩码长度为所述第一掩码长度组(图19示出的掩码链中掩码长度/16,H)中最大的掩码长度,则将所述目标掩码长度所绑定的转发信息(此时为F1),作为所述第二头子前缀以及所述第二尾子前缀所绑定的转发信息。
相应的,为所述目标尾前缀也添加转发信息,可以如图19所示,基于掩码链按照以下方式添加:
将掩码链中掩码/16设置所述目标尾前缀的转发信息为F1;将所述第二掩码长度组(图19示出的掩码链中掩码长度/16,T)中掩码最长的转发信息(此时为F1)作为所述目标尾前缀的转发信息。
更新转发信息后B+树的存储状态如图20所示。
情况2:
如图21所示,继续添加目标头前缀1001::0/64(1001-0000-0000-0000-0000-0000-0000-0000),计算得到需要添加的目标尾前缀1001-0000-0000-0000-FFFF-FFFF-FFFF-FFFF,添加到B+树中。目标头前缀的高64位健值(1001-0000-0000-0000,第一头子前缀)已存储,低64位健值(0000-0000-0000-0000,第二头子前缀)也已存储,所以已不需要再存储,或者覆盖存储。
如图22所示,目标尾前缀1001-0000-0000-0000-FFFF-FFFF-FFFF-FFFF的高64位健值(1001-0000-0000-0000,第一尾子前缀)已存储,低64位健值(FFFF-FFFF-FFFF-FFFF,第二尾子前缀)未存储,且大于或等于目标尾前缀的最小前缀是1001-FFFF-FFFF-FFFF-FFFF-FFFF-FFFF-FFFF,小于或等于目标尾前缀的最大前缀是1001-0000-0000-0000-0000-0000-0000-0000,所以目标尾前缀中第二尾子前缀FFFF-FFFF-FFFF-FFFF所存储的第二掩码长度位置在上述最大前缀和最小前缀之间。
将所述目标掩码长度(掩码长度为64)存储在第2棵树相同叶子节点下的第一掩码长度位置和第二掩码长度位置中。
掩码链中第一掩码长度位置、第二掩码长度位置的所述目标掩码长度(掩码长度为64)的转发信息F1。
显然,此时第一掩码长度位置的所述目标掩码长度(掩码长度为64)为所述第一掩码长度组(即图22中第一列掩码长度/16和掩码长度/64)中最大的掩码长度,根据步骤1061,则将第一掩码长度位置的所述目标掩码长度所绑定的转发信息F2,作为所述第二头子前缀的转发信息;而且,此时第二掩码长度位置的所述目标掩码长度(掩码长度为64)为所述第二掩码长度组(即图22中第二列掩码长度/64)中最大的掩码长度,则将第二掩码长度位置的所述目标掩码长度所绑定的转发信息F2,作为所述第二尾子前缀的转发信息。
进一步地,根据步骤1062,所述第二尾子前缀FFFF-FFFF-FFFF-FFFF为所述第一尾子前缀1001-0000-0000-0000所指向的最大子前缀,那么便把所述第二尾子前缀的掩码长度64所绑定的转发信息F2作为所述第一尾子前缀所绑定的转发信息。
情况3:
如图23所示,目标尾前缀1001-0000-0000-0000-0000-FFFF-FFFF-FFFF的高64位健值(1001-0000-0000-0000,第一尾子前缀)已存储,低64位健值(0000-FFFF-FFFF-FFFF,第二尾子前缀)未存储,且大于或等于目标尾前缀的最小前缀是1001-0000-0000-0000-FFFF-FFFF-FFFF-FFFF,小于或等于目标尾前缀的最大前缀是1001-0000-0000-0000-0000-0000-0000-0000,所以目标尾前缀中第二尾子前缀0000-FFFF-FFFF-FFFF所存储的第二掩码长度位置在上述最大前缀和最小前缀之间。
将所述目标掩码长度(掩码长度为80)存储在第2棵树相同叶子节点下的第一掩码长度位置和第二掩码长度位置中。
将掩码链中第一掩码长度位置、第二掩码长度位置的所述目标掩码长度(掩码长度为80)的转发信息设置为F3。
显然,此时第一掩码长度位置的所述目标掩码长度(掩码长度为80)为所述第一掩码长度组(即图24中第一列掩码长度/16、掩码长度/64和掩码长度/80)中最大的掩码长度,根据步骤1061,则将第一掩码长度位置的所述目标掩码长度所绑定的转发信息F3,作为所述第二头子前缀的转发信息;而且,此时第二掩码长度位置的所述目标掩码长度(掩码长度为80)为所述第二掩码长度组(即图24第二列的掩码长度/80)中最大的掩码长度,则将第二掩码长度位置的所述目标掩码长度所绑定的转发信息F3,作为所述第二尾子前缀的转发信息。
进一步地,根据步骤1062,所述第二尾子前缀FFFF-FFFF-FFFF-FFFF为所述第一尾子前缀1001-0000-0000-0000所指向的最大子前缀,那么便把所述第二尾子前缀所绑定的转发信息F3作为所述第一尾子前缀所绑定的转发信息。
更新后如图24所示。
情况4:
如图25所示,目标尾前缀1001-0000-0000-0000-0000-0000-0000-0000的高64位健值(1001-0000-0000-0000,第一尾子前缀)已存储,低64位健值(0000-0000-0000-000,第二尾子前缀)已存储,且大于或等于目标尾前缀的最小前缀是1001-0000-0000-0000-0000-0000-0000-0000,小于或等于目标尾前缀的最大前缀是1001-0000-0000-0000-0000-0000-0000-0000,上述最大前缀和最小前缀重合,所以目标尾前缀中第二尾子前缀0000-0000-0000-0000-0000所存储的第一掩码长度位置和第二掩码长度位置与上述最大前缀和最小前缀均重合。
将所述目标掩码长度(掩码长度为128)存储在第2棵树相同叶子节点下的第一掩码长度位置和第二掩码长度位置中。
更新后如图26所示。
将掩码链中第一掩码长度位置(也是第二掩码长度位置)的所述目标掩码长度(掩码长度为128)的转发信息设置为F4。
显然,此时第一掩码长度位置的所述目标掩码长度(掩码长度为128)为所述第一掩码长度组(即图26中第一列掩码长度/16、掩码长度/64、掩码长度/80和掩码长度/128)中最大的掩码长度,根据步骤1061,则将第一掩码长度位置的所述目标掩码长度所绑定的转发信息F4,作为所述第二头子前缀的转发信息;而且,此时第二掩码长度位置的所述目标掩码长度(掩码长度为128)为所述第二掩码长度组(即图26第二列的掩码长度/128)中最大的掩码长度,则将第二掩码长度位置的所述目标掩码长度所绑定的转发信息F4,作为所述第二尾子前缀的转发信息。
相应地,在按照步骤101~步骤106的存储方式存储了待存储路由信息后,还可以进行查找,一种可选实施方式可以如下:
步骤201:获取待查找前缀。
步骤202:确定所述平衡多叉树中是否存在所述待查找前缀。
步骤203:若确定所述平衡多叉树中存在所述待查找前缀,则将所述待查找前缀所绑定的指示信息及转发信息作为所述待查找前缀命中的指示信息及转发信息。
也就是说,如果所述待查找前缀直接命中了所述平衡多叉树中存在的前缀,则直接将该前缀所绑定的指示信息及转发信息作为所述待查找前缀命中的指示信息及转发信息。
若采用基于步骤(1)~步骤(3)的存储方式,可采用如下方式:
步骤(2-1):将获取的待查找前缀的前N位作为第一子待查找前缀。
步骤(2-2):获取所述第一平衡多叉树中小于或等于所述第一子待查找前缀的最大子前缀,得到第一目标子前缀。
步骤(2-3):若确定所述第一目标子前缀所绑定的指示信息为尾指示信息且所述第一目标子前缀小于所述第一子待查找前缀,则将所述第一目标子前缀所绑定的转发信息作为所述待查找前缀命中的转发信息。
以图26举例来说,待查找前缀为1001-0000-0000-000F-0000-FFFF-FFFF-FFFF,第一子待查找前缀为1001-0000-0000-000F,第一目标子前缀为1001-0000-0000-0000,所述待查找前缀命中的转发信息便为F2。
进一步地,基于步骤(2-1)~步骤(2-2),若所述第一目标子前缀等于所述第一子待查找前缀,可以执行如下步骤:
将所述待查找前缀中除前N位之外的后M位作为第二子待查找前缀;获取所述第二平衡多叉树中小于或等于所述第二子待查找前缀的最大子前缀,得到第二目标子前缀;若确定所述第二目标子前缀所绑定的指示信息为头指示信息,且所述第二目标子前缀小于所述第二子待查找前缀,则将所述第二目标子前缀所绑定的转发信息作为所述待查找前缀命中的转发信息。
以图22举例来说,待查找前缀为1001-0000-0000-0000-0000-FFFF-FFFF-FFFF,第一子待查找前缀为1001-0000-0000-0000,第二子待查找前缀为0000-FFFF-FFFF-FFFF,第一目标子前缀为1001-0000-0000-0000,第二目标子前缀为0000-0000-0000-0000,所述待查找前缀命中的转发信息便为F2。
更具体地,若所述第二平衡多叉树中存在所述第二目标子前缀,还有一种情形如下:
若确定所述第二目标子前缀所绑定的指示信息为尾指示信息,则将所述第二目标子前缀所绑定的转发信息作为所述待查找前缀命中的转发信息。
以图26举例来说,待查找前缀为1001-0000-0000-0000-0000-0000-0000-0000,第一子待查找前缀为1001-0000-0000-0000,第二子待查找前缀为0000-0000-0000-0000,第一目标子前缀为1001-0000-0000-0000,第二目标子前缀为0000-0000-0000-0000,所述待查找前缀命中的转发信息便为F4。
图27所示的一种路由信息的查找方法。下面结合图27,以一具体实施例来说明本申请提供的一种路由信息的查找方法,其中,网络地址的存储以16进制,所述第一平衡多叉树和所述第二平衡多叉树中存储的位数均为64位,以及B+结构为例说明。
步骤(a):首先在第一棵树(所述第一平衡多叉树)中查找待查找前缀的高64位键值(第一待查找子前缀)。
步骤(b):如果存在小于或等于高64位键值的最大键值(第一目标子前缀)K,则执行步骤(c),否则执行步骤(j)。
步骤(c)确定键值K是否满足以下条件:键值K是T端且键值K小于查找的高64位键值(第一待查找子前缀)。若是,则执行步骤(i),否则执行步骤(d)。
步骤(d):在第二棵树中查找低64位键值(第二待查找子前缀)。
步骤(e):如果存在小于或等于低64位键值的最大键值K(第二目标子前缀),则执行步骤(f),否则执行步骤(j)。
步骤(f):确定键值K是否为H端,若是,则执行步骤(i),否则执行步骤(g)。
步骤(g)确定键值K是否等于低64位键值(第二待查找子前缀),若是,则执行步骤(h),否则执行步骤(i)。
步骤(h)确定待查找路由信息是键值K的路由信息。
步骤(i)确定待查找路由信息是键值K的上层路由信息。
即步骤(i)确定待查找路由信息是键值K中第一待查找子前缀所绑定的路由信息。
步骤(j)确定待查找路由信息是0。
如图28所示,本发明提供一种路由信息的处理装置,包括:
确定模块301,用于根据待存储路由信息包括的目标头前缀和目标掩码长度确定目标尾前缀;
存储模块302,用于根据所述目标头前缀、所述目标尾前缀与平衡多叉树中各前缀的大小关系,分别将所述目标头前缀和所述目标尾前缀存储至所述平衡多叉树中的第一前缀位置和第二前缀位置;根据所述目标掩码长度与第一掩码长度组及第二掩码长度组中各掩码长度的大小关系,将所述目标掩码长度分别存储至所述第一掩码长度组中的第一掩码长度位置及所述第二掩码长度组中的第二掩码长度位置;所述第一掩码长度组、所述第二掩码长度组分别为所述第一前缀位置、所述第二前缀位置在掩码链中所指向的掩码长度组;
处理模块303,用于所述第一掩码长度位置的所述目标掩码长度所绑定的指示信息为头指示信息、所述第二掩码长度位置的所述目标掩码长度所绑定的指示信息为尾指示信息;并将所述待存储路由信息包括的目标转发信息分别与所述第一掩码长度位置及所述第二掩码长度位置的所述目标掩码长度绑定;根据所述掩码链中各掩码长度所绑定的指示信息及转发信息,确定所述目标头前缀和所述目标尾前缀所绑定的指示信息及转发信息。
可选的,所述处理模块303还用于:获取待查找前缀;确定所述平衡多叉树中是否存在所述待查找前缀;若确定所述平衡多叉树中存在所述待查找前缀,则将所述待查找前缀所绑定的指示信息及转发信息作为所述待查找前缀命中的指示信息及转发信息。
可选的,若所述平衡多叉树包括第一平衡多叉树和第二平衡多叉树,则所述存储模块302具体用于:将所述目标头前缀的前N位作为第一头子前缀、所述目标头前缀中除去前N后之外的后M位作为第二头子前缀、所述目标尾前缀的前N位作为第一尾子前缀、所述目标尾前缀中除去前N后之外的后M位作为第二尾子前缀;所述第一头子前缀指向所述第二头子前缀,所述第一尾子前缀指向所述第二尾子前缀;根据所述第一头子前缀、所述第一尾子前缀与所述第一平衡多叉树中各前缀的大小关系,将所述第一头子前缀存储至所述第一平衡多叉树中所述第一前缀位置的第一子前缀位置,将所述第一尾子前缀存储至所述第一平衡多叉树中所述第二前缀位置的第二子前缀位置;根据所述第二头子前缀、所述第二尾子前缀与所述第二平衡多叉树中各前缀的大小关系,将所述第二头子前缀存储至所述第二平衡多叉树中所述第二前缀位置的第三子前缀位置,将所述第二尾子前缀存储至所述第二平衡多叉树中所述第二前缀位置的第四子前缀位置。
可选的,所述处理模块303具体用于:若所述目标掩码长度为所述第一掩码长度组和\或所述第二掩码长度组中最大的掩码长度,则将所述目标掩码长度所绑定的指示信息及转发信息作为所述第二头子前缀和所述第二尾子前缀所绑定的指示信息及转发信息;若所述第二头子前缀为所述第一头子前缀所指向的最大子前缀,则将所述第二头子前缀所绑定的指示信息及转发信息作为所述第一头子前缀所绑定的指示信息及转发信息;若所述第二尾子前缀为所述第一尾子前缀所指向的最大子前缀,则将所述第二尾子前缀所绑定的指示信息及转发信息作为所述第一尾子前缀所绑定的指示信息及转发信息。
可选的,所述目标头前缀为IPv6网络地址;所述第一平衡多叉树和所述第二平衡多叉树为B+树;N为64,M为64。
可选的,所述处理模块303还用于:将获取的待查找前缀的前N位作为第一子待查找前缀;获取所述第一平衡多叉树中小于或等于所述第一子待查找前缀的最大子前缀,得到第一目标子前缀;若确定所述第一目标子前缀所绑定的指示信息为尾指示信息且所述第一目标子前缀小于所述第一子待查找前缀,则将所述第一目标子前缀所绑定的转发信息作为所述待查找前缀命中的转发信息。
可选的,若所述第一目标子前缀等于所述第一子待查找前缀,所述处理模块303还用于:将所述待查找前缀中除前N位之外的后M位作为第二子待查找前缀;获取所述第二平衡多叉树中小于或等于所述第二子待查找前缀的最大子前缀,得到第二目标子前缀;若确定所述第二目标子前缀所绑定的指示信息为头指示信息,且所述第二目标子前缀小于所述第二子待查找前缀,则将所述第二目标子前缀所绑定的转发信息作为所述待查找前缀命中的转发信息。
可选的,若所述第二目标子前缀等于所述第二子待查找前缀,所述处理模块303还用于:若确定所述第二目标子前缀所绑定的指示信息为尾指示信息,则将所述第二目标子前缀所绑定的转发信息作为所述待查找前缀命中的转发信息。
本申请实施例提供一种计算机设备,包括程序或指令,当所述程序或指令被执行时,用以执行本申请实施例提供的一种路由信息的处理方法及任一可选方法。
本申请实施例提供一种存储介质,包括程序或指令,当所述程序或指令被执行时,用以执行本申请实施例提供的一种路由信息的处理方法及任一可选方法。
最后应说明的是:本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种路由信息的处理方法,其特征在于,包括:
根据待存储路由信息包括的目标头前缀和目标掩码长度确定目标尾前缀;
根据所述目标头前缀、所述目标尾前缀与平衡多叉树中各前缀的大小关系,分别将所述目标头前缀和所述目标尾前缀存储至所述平衡多叉树中的第一前缀位置和第二前缀位置;
根据所述目标掩码长度与第一掩码长度组及第二掩码长度组中各掩码长度的大小关系,将所述目标掩码长度分别存储至所述第一掩码长度组中的第一掩码长度位置及所述第二掩码长度组中的第二掩码长度位置;所述第一掩码长度组、所述第二掩码长度组分别为所述第一前缀位置、所述第二前缀位置在掩码链中所指向的掩码长度组;
设置所述第一掩码长度位置的所述目标掩码长度所绑定的指示信息为头指示信息、所述第二掩码长度位置的所述目标掩码长度所绑定的指示信息为尾指示信息;并将所述待存储路由信息包括的目标转发信息分别与所述第一掩码长度位置及所述第二掩码长度位置的所述目标掩码长度绑定;
根据所述掩码链中各掩码长度所绑定的指示信息及转发信息,确定所述目标头前缀和所述目标尾前缀所绑定的指示信息及转发信息。
2.如权利要求1所述的方法,其特征在于,还包括:
获取待查找前缀;
确定所述平衡多叉树中是否存在所述待查找前缀;
若确定所述平衡多叉树中存在所述待查找前缀,则将所述待查找前缀所绑定的指示信息及转发信息作为所述待查找前缀命中的指示信息及转发信息。
3.如权利要求1所述的方法,其特征在于,若所述平衡多叉树包括第一平衡多叉树和第二平衡多叉树,则所述根据所述目标头前缀、所述目标尾前缀与平衡多叉树中各前缀的大小关系,分别将所述目标头前缀和所述目标尾前缀存储至所述平衡多叉树中的第一前缀位置和第二前缀位置,包括:
将所述目标头前缀的前N位作为第一头子前缀、所述目标头前缀中除去前N后之外的后M位作为第二头子前缀、所述目标尾前缀的前N位作为第一尾子前缀、所述目标尾前缀中除去前N后之外的后M位作为第二尾子前缀;所述第一头子前缀指向所述第二头子前缀,所述第一尾子前缀指向所述第二尾子前缀;
根据所述第一头子前缀、所述第一尾子前缀与所述第一平衡多叉树中各前缀的大小关系,将所述第一头子前缀存储至所述第一平衡多叉树中所述第一前缀位置的第一子前缀位置,将所述第一尾子前缀存储至所述第一平衡多叉树中所述第二前缀位置的第二子前缀位置;
根据所述第二头子前缀、所述第二尾子前缀与所述第二平衡多叉树中各前缀的大小关系,将所述第二头子前缀存储至所述第二平衡多叉树中所述第二前缀位置的第三子前缀位置,将所述第二尾子前缀存储至所述第二平衡多叉树中所述第二前缀位置的第四子前缀位置。
4.如权利要求3所述的方法,其特征在于,所述根据所述掩码链中各掩码长度所绑定的指示信息及转发信息,确定所述目标头前缀和所述目标尾前缀所绑定的指示信息及转发信息,包括:
若所述目标掩码长度为所述第一掩码长度组和\或所述第二掩码长度组中最大的掩码长度,则将所述目标掩码长度所绑定的指示信息及转发信息作为所述第二头子前缀和所述第二尾子前缀所绑定的指示信息及转发信息;
若所述第二头子前缀为所述第一头子前缀所指向的最大子前缀,则将所述第二头子前缀所绑定的指示信息及转发信息作为所述第一头子前缀所绑定的指示信息及转发信息;若所述第二尾子前缀为所述第一尾子前缀所指向的最大子前缀,则将所述第二尾子前缀所绑定的指示信息及转发信息作为所述第一尾子前缀所绑定的指示信息及转发信息。
5.如权利要求3或4所述的方法,其特征在于,还包括:
将获取的待查找前缀的前N位作为第一子待查找前缀;
获取所述第一平衡多叉树中小于或等于所述第一子待查找前缀的最大子前缀,得到第一目标子前缀;
若确定所述第一目标子前缀所绑定的指示信息为尾指示信息且所述第一目标子前缀小于所述第一子待查找前缀,则将所述第一目标子前缀所绑定的转发信息作为所述待查找前缀命中的转发信息。
6.如权利要求5所述的方法,其特征在于,若所述第一目标子前缀等于所述第一子待查找前缀,所述方法还包括:
将所述待查找前缀中除前N位之外的后M位作为第二子待查找前缀;
获取所述第二平衡多叉树中小于或等于所述第二子待查找前缀的最大子前缀,得到第二目标子前缀;
若确定所述第二目标子前缀所绑定的指示信息为头指示信息,且所述第二目标子前缀小于所述第二子待查找前缀,则将所述第二目标子前缀所绑定的转发信息作为所述待查找前缀命中的转发信息。
7.如权利要求6所述的方法,其特征在于,若所述第二目标子前缀等于所述第二子待查找前缀,所述方法还包括:
若确定所述第二目标子前缀所绑定的指示信息为尾指示信息,则将所述第二目标子前缀所绑定的转发信息作为所述待查找前缀命中的转发信息。
8.一种路由信息的处理装置,其特征在于,包括:
确定模块,用于根据待存储路由信息包括的目标头前缀和目标掩码长度确定目标尾前缀;
存储模块,用于根据所述目标头前缀、所述目标尾前缀与平衡多叉树中各前缀的大小关系,分别将所述目标头前缀和所述目标尾前缀存储至所述平衡多叉树中的第一前缀位置和第二前缀位置;根据所述目标掩码长度与第一掩码长度组及第二掩码长度组中各掩码长度的大小关系,将所述目标掩码长度分别存储至所述第一掩码长度组中的第一掩码长度位置及所述第二掩码长度组中的第二掩码长度位置;所述第一掩码长度组、所述第二掩码长度组分别为所述第一前缀位置、所述第二前缀位置在掩码链中所指向的掩码长度组;
处理模块,用于设置所述第一掩码长度位置的所述目标掩码长度所绑定的指示信息为头指示信息、所述第二掩码长度位置的所述目标掩码长度所绑定的指示信息为尾指示信息;并将所述待存储路由信息包括的目标转发信息分别与所述第一掩码长度位置及所述第二掩码长度位置的所述目标掩码长度绑定;根据所述掩码链中各掩码长度所绑定的指示信息及转发信息,确定所述目标头前缀和所述目标尾前缀所绑定的指示信息及转发信息。
9.一种计算机设备,其特征在于,包括程序或指令,当所述程序或指令被执行时,如权利要求1至7中任意一项所述的方法被执行。
10.一种计算机可读存储介质,其特征在于,包括程序或指令,当所述程序或指令被执行时,如权利要求1至7中任意一项所述的方法被执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011375879.XA CN112565089B (zh) | 2020-11-30 | 2020-11-30 | 一种路由信息的处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011375879.XA CN112565089B (zh) | 2020-11-30 | 2020-11-30 | 一种路由信息的处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112565089A true CN112565089A (zh) | 2021-03-26 |
CN112565089B CN112565089B (zh) | 2022-06-21 |
Family
ID=75045503
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011375879.XA Active CN112565089B (zh) | 2020-11-30 | 2020-11-30 | 一种路由信息的处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112565089B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1489849A (zh) * | 2001-01-30 | 2004-04-14 | ŵ�������ܱ�Ե·������˾ | 用于三重内容可寻址存储器(tcam)表管理的方法和设备 |
US20040215609A1 (en) * | 2003-04-25 | 2004-10-28 | Yoshihisa Takatsu | Communication control apparatus and method for searching an internet protocol address |
US20050232264A1 (en) * | 2004-04-20 | 2005-10-20 | Samsung Electronics Co., Ltd. | Apparatus and method for searching trie trees using masks with non-symbol boundaries and flooding default routes in a massively parallel router |
CN105227468A (zh) * | 2014-06-20 | 2016-01-06 | 华为技术有限公司 | 一种查找装置、查找方法和配置方法 |
CN105591915A (zh) * | 2014-10-22 | 2016-05-18 | 中兴通讯股份有限公司 | 一种路由表的维护方法和装置 |
CN110597855A (zh) * | 2019-08-14 | 2019-12-20 | 中山大学 | 一种数据存储方法、终端设备及计算机可读存储介质 |
-
2020
- 2020-11-30 CN CN202011375879.XA patent/CN112565089B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1489849A (zh) * | 2001-01-30 | 2004-04-14 | ŵ�������ܱ�Ե·������˾ | 用于三重内容可寻址存储器(tcam)表管理的方法和设备 |
US20040215609A1 (en) * | 2003-04-25 | 2004-10-28 | Yoshihisa Takatsu | Communication control apparatus and method for searching an internet protocol address |
JP2004328433A (ja) * | 2003-04-25 | 2004-11-18 | Internatl Business Mach Corp <Ibm> | 通信制御装置、通信制御方法、通信制御プログラム、通信制御用データ構造 |
US20050232264A1 (en) * | 2004-04-20 | 2005-10-20 | Samsung Electronics Co., Ltd. | Apparatus and method for searching trie trees using masks with non-symbol boundaries and flooding default routes in a massively parallel router |
CN105227468A (zh) * | 2014-06-20 | 2016-01-06 | 华为技术有限公司 | 一种查找装置、查找方法和配置方法 |
CN105591915A (zh) * | 2014-10-22 | 2016-05-18 | 中兴通讯股份有限公司 | 一种路由表的维护方法和装置 |
CN110597855A (zh) * | 2019-08-14 | 2019-12-20 | 中山大学 | 一种数据存储方法、终端设备及计算机可读存储介质 |
Non-Patent Citations (3)
Title |
---|
刘亚林: "动态快速路由查找算法", 《中国工程科学》 * |
华泽等: "基于分段地址结构的快速路由查找算法", 《计算机与数字工程》 * |
郜国良等: "一种基于Trie的快速IP路由查找算法", 《微电子学与计算机》 * |
Also Published As
Publication number | Publication date |
---|---|
CN112565089B (zh) | 2022-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10021026B2 (en) | Incremental update of a shape graph | |
US7325071B2 (en) | Forwarding traffic in a network using a single forwarding table that includes forwarding information related to a plurality of logical networks | |
US20060083247A1 (en) | Prefix lookup using address-directed hash tables | |
CN107078960B (zh) | 基于流的网络功能链接的优化方法 | |
CA2434876C (en) | Method and apparatus for ternary content addressable memory (tcam) table management | |
US6968393B1 (en) | Method and apparatus for an attribute oriented routing update | |
US8090901B2 (en) | TCAM management approach that minimize movements | |
US7774538B2 (en) | Method for ternary contents address memory table management | |
CN102484610B (zh) | 路由表建立方法和装置及路由表查找方法和装置 | |
CN107431660B (zh) | 检索装置、检索方法及记录介质 | |
CN111937360B (zh) | 最长前缀匹配 | |
JP3881663B2 (ja) | フィールドレベルツリーを用いたパケット分類装置及び方法 | |
US9729447B2 (en) | Apparatus and method for processing alternately configured longest prefix match tables | |
US8923298B2 (en) | Optimized trie-based address lookup | |
US20020091856A1 (en) | Default route coding | |
WO2005091577A1 (en) | Method, article of manufacture and network device to support a large internet protocol forwarding information base | |
CN106803809B (zh) | 一种报文转发的方法和装置 | |
US20200036634A1 (en) | Hybrid routing table for routing network traffic | |
US6516319B1 (en) | Parallelized processing device for processing search keys based upon tree structure | |
WO2015192742A1 (zh) | 一种查找装置、查找方法和配置方法 | |
CN112565089B (zh) | 一种路由信息的处理方法及装置 | |
JP3970448B2 (ja) | 情報中継方法および装置 | |
US8316432B2 (en) | Method for implementing security-related processing on packet and network security device | |
CN107204926B (zh) | 预处理cache的路由快速查找方法 | |
CN103209128A (zh) | 同时支持数据报和虚电路服务的数据转发方法及路由器 |
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 |