CN112565072B - 一种路由表压缩方法、路由器及存储介质 - Google Patents
一种路由表压缩方法、路由器及存储介质 Download PDFInfo
- Publication number
- CN112565072B CN112565072B CN202011204784.1A CN202011204784A CN112565072B CN 112565072 B CN112565072 B CN 112565072B CN 202011204784 A CN202011204784 A CN 202011204784A CN 112565072 B CN112565072 B CN 112565072B
- Authority
- CN
- China
- Prior art keywords
- domain
- inter
- node
- intra
- routing table
- 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
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/02—Topology update or discovery
- H04L45/04—Interdomain routing, e.g. hierarchical 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/48—Routing tree calculation
-
- 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/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种路由表压缩方法、路由器及存储介质,方法包括:根据预设的全球路由表中网络前缀之前包含关系,构建对应的域间多叉树;后序遍历各个域间节点,并根据域间子节点对应的域内多下一跳路由表,确定当前遍历的域间子节点对应的初始单一下一跳路由器;根据预设的筛选规则,确定初始单一下一跳路由器中域间根节点对应的初始单一下一跳路由器;先序遍历域间多叉树中各个域间节点,并对当前遍历的域间节点对应的初始单一下一跳路由器进行调整,直至遍历结束,将遍历结束后各个域间节点对应的初始单一下一跳路由器作为对应的目标单一下一跳路由器。本发明能够提高路由表的压缩效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种路由表压缩方法、路由器及存储介质。
背景技术
全球路由表大小在近年来一直保持着高速增长。2020年8月的最新数据显示,IPv4网络的路由表条目数量已经达到了873,896条,部署范围很小的IPv6网络的路由表条目数量也已经达到了94,439条。随着2019年11月26日IPv4地址正式耗尽,越来越多的IPv4地址区块从边缘网络流入骨干网络,加速了全球IPv4路由表的增长。同时,随着全球IPv6网络部署的逐步推进,全球IPv6路由表也在急剧增加,且增速远高于IPv4路由表。全球路由表决定了路由器中转发表的大小,为了满足高速的网络转发需求,转发表一般存储在昂贵且很难动态扩容的线卡内存中。因此,网络运营商必须定期升级路由器以适应不断增长的全球路由表。但随着全球路由表增速越来越快,路由器的升级速度越来越难跟上路由表的增长速度,运营商急需能减少转发表大小的策略和技术。
有很多方案被提出来解决该问题,一些方案中由于涉及到对现有网络协议的更改或者新网络协议的部署,并不能立刻缓解运营商的压力,它们都需要较长的时间来逐步部署生效。还有一类方案被称为路由表压缩,此类方案通过挖掘不同网络前缀之间的可聚合性来将多个网络前缀聚合成一个,以此达到减少路由表大小的目的,此类方案不需要对当前网络协议做任何改动,既可单点部署也可多点部署,并且在部署后能立刻生效,能立即缓解运营商压力,是当前最为可行的解决方案。目前,已经有很多基于单下一跳路由表的压缩方案,在兼顾性能的前提下,这些方案普遍能将路由表压缩至原大小的50%左右。虽然压缩后的路由表大小完全在现代高性能路由器的可承受范围内,但网络中依然存在一些没有升级的老旧路由器,即使是压缩后的路由表,某些老旧路由器也难以承受,因此需要压缩率更高的方案。
发明内容
本发明的主要目的在于提供一种路由表压缩方法、路由器及存储介质,旨在解决现有技术中路由表压缩率低的问题。
为实现上述目的,本发明提供一种路由表压缩方法,所述路由表压缩方法包括如下步骤:
根据预设的全球路由表中网络前缀之前包含关系,以目标网络前缀为域间根节点,以所述目标网络前缀对应的子网络前缀为域间子节点,构建对应的域间多叉树,其中,所述域间多叉树包括各个域间节点对应的属性值,所述域间节点包括所述域间根节点和所述域间子节点;
以所述域间多叉树的叶子节点为起点,以所述域间根节点为终点,遍历各个所述域间节点,并根据所述域间子节点对应的域内多下一跳路由表,确定当前遍历的域间子节点对应的初始单一下一跳路由器;
根据预设的筛选规则,确定所述初始单一下一跳路由器中所述域间根节点对应的初始单一下一跳路由器;
以所述域间根节点为起点,以所述域间多叉树的叶子节点为终点,遍历所述域间多叉树中各个域间节点,并对当前遍历的域间节点对应的初始单一下一跳路由器进行调整,直至遍历结束,将遍历结束后各个域间节点对应的初始单一下一跳路由器作为对应的目标单一下一跳路由器。
可选地,所述的路由表压缩方法,其中,所述属性值包括路由表值和路径拉伸值,其中,所述路由表值为Gx(t),所述路径拉伸值为Sx(t),t为所述域间节点,x为域间节点t对应的多下一跳集合中的路由器,Gx(t)等于当t选择x作为对应的下一跳时路由器时路由表压缩后的数值,Sx(t)等于当t选择x作为对应的下一跳网络传输权重的数值。
可选地,所述的路由表压缩方法,其中,所述根据所述域间子节点对应的域内多下一跳路由表,确定当前遍历的域间子节点对应的初始单一下一跳路由器,具体包括:
针对每一个域间子节点,根据该域间子节点对应的域内多下一跳路由表,确定该域间子节点对应的下一跳路由器为比对路由器;
据预设的更新规则,对各个所述比对路由器的初始路由表值和初始路径拉伸值更新,生成各个所述比对路由器对应目标路由表值和目标路径拉伸值,其中,所述初始路由表值为当t为当前遍历的域间子节点时对应的路由表值,所述初始路径拉伸值为当t为当前遍历的域间子节点时对应的路径拉伸值;
比较各个目标路由表值的大小,并将所述目标路由表值中的最小值对应的比对路由器作为所述域间子节点对应的初始单一下一跳路由器。
可选地,所述的路由表压缩方法,其中,所述根据预设的更新规则,对各个所述比对路由器的初始路由表值和初始路径拉伸值更新,生成各个所述比对路由器对应目标路由表值和目标路径拉伸值,具体包括:
针对每一个比对路由器,遍历各个相对子节点,其中,所述相对子节点为所述域间多叉树中相对于当前遍历的域内子节点为子节点的域间节点;
根据当前遍历的相对子节点对应的域内多下一跳路由表,以及该相对子节点与该比对路由器之间的路由表值,确定该域内子节点对应路由值更新公式和路径拉伸值更新公式;
根据所述路由值更新公式和所述路径拉伸值更新公式,对该域内子节点对应的初始路由表值和初始路径拉伸值更新,生成该比对路由器对应目标路由表值和目标路径拉伸值。
可选地,所述的路由表压缩方法,其中,所述筛选规则为:
若某一个初始单一下一跳路由器对应的目标路由表值小于预设的路由表阈值,且该初始单一下一跳路由器对应的目标路径拉伸值为所述初始单一下一跳路由器对应的目标路径拉伸值中的最小值,则确定该初始单一下一跳路由器为所述域间根节点对应的初始单一下一跳路由器。
可选地,所述的路由表压缩方法,其中,所述对当前遍历的域间节点对应的初始单一下一跳路由器进行调整,具体包括:
当当前遍历的域间子节点对应的初始单一下一跳路由器与相对父节点对应的初始单一下一跳路由器不相等,且所述相对父节点对应的初始单一下一跳路由器为该域间子节点对应的下一跳路由器时,将所述相对父节点对应的初始单一下一跳路由器替换该域间子节点对应的初始单一下一跳路由器,其中,所述相对父节点为所述域间多叉树中相对于当前遍历的域内子节点的父节点。
可选地,所述的路由表压缩方法,其中,所述以所述域间多叉树的叶子节点为起点,以所述域间根节点为终点,遍历各个所述域间节点,并根据所述域间子节点对应的域内多下一跳路由表,确定当前遍历的域间子节点对应的初始单一下一跳路由器之前,还包括:
根据源路由器对应的域内下一跳路由表中各个路由器之间的连接关系,以所述源路由器为域内根节点,以各个所述路由器为域内子节点,创建对应的初始域内多叉树,其中,所述初始域内多叉树中的域内节点包括所述域内根节点和所述域内子节点;
对所述初始域内多叉树进行路径聚合,生成各个域内子节点对应的域内多下一跳路由表。
可选地,所述的路由表压缩方法,其中,所述对所述初始域内多叉树进行路径聚合,生成各个域内子节点对应的域内多下一跳路由表,具体包括:
以所述域内子节点为起点,以所述域内根节点为终点,遍历所述域内多叉树中的各个所述域内节点,并根据预设的偏序规则,对各个域内节点对应的域内下一跳路由表进行更新;
判断所述源路由器对应的递归深度值是否大于零;
若是,则根据更新后的域内下一跳路由表,对所述初始域内多叉树进行更新,并对更新后的初始域内多叉树进行路径聚合,直至聚合次数等于所述递归深度值,生成目标域内多叉树;
根据所述目标域内多叉树,确定各个域内子节点对应的域内下一跳路由表作为对应的域内多下一跳路由表。
可选地,所述的路由表压缩方法,其中,所述根据预设的偏序规则,对各个域内子节点对应的域内下一跳路由表进行更新,具体包括:
根据所述偏序规则,确定各个候选子节点中与邻居节点对应的中间下一跳路由器,其中,所述候选子节点为与所述域内根节点之间的跳跃次数与预设的跳跃次数阈值相等的域内子节点,所述邻居节点为与当前遍历的域内子节点相邻的域内节点,所述中间下一跳路由器为该邻居节点对应的下一跳路由器;
当根据所述邻居节点对应的域内下一跳路由表,确定所述中间下一跳路由器不是该邻居节点对应的下一跳路由器时,将所述中间下一跳路由器添加至域内相对子节点对应的域内下一跳路由表,其中,所述域内相对子节点为所述域内多叉树中,相对于该邻居节点为子节点的域内节点;
其中,所述偏序规则为若候选子节点满足预设的偏序公式,则确定该候选子节点为当前遍历的域内子节点的邻居节点对应的中间下一跳路由器,所述偏序公式为cost(R,Rk)+P<dist(Rs,Rk),cost()表示括号内域内节点之间的链路长度,dist()表示括号内域内节点之间链路长度的最小值,R表示当前遍历的域内子节点,Rk为该域内子节点的邻居节点,P为当前域内多叉树中该候选子节点与R之间的任意一个链路长度,Rs为所述域内根节点。
此外,为实现上述目的,本发明还提供一种路由器,其中,所述路由器包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的路由表压缩程序,所述路由表压缩程序被所述处理器执行时实现如上所述的路由表压缩方法的步骤。
此外,为实现上述目的,本发明还提供一种存储介质,其中,所述存储介质存储有路由表压缩程序,所述路由表压缩程序被处理器执行时实现如上所述的路由表压缩方法的步骤。
本发明先根据全球路由表中网络前缀之前包含关系,构建域间多叉树,多叉树中的每一个域间节点一个网络前缀,然后通过后序遍历的方式,遍历该域间多叉树,并在遍历过程中,根据每一个域间子节点对应的域内多下一跳路由表中的多个路由器,为每一个域间子节点筛选出一个路由器,作为初始单一下一跳路由器。由于域间节点之间的包含关系,该域间多叉树中的域间根节点应当可以以域间子节点对应初始单一下一跳路由器作为其对应的初始单一下一跳路由器。因此,再通过一定的筛选规则,筛选其中域间根节点对应的初始单一下一跳路由器。由此可得到每一个域间节点对应的初始单一下一跳路由器。由于前一步骤以后序遍历实现,但实际寻找是以前序遍历操作的,因此,为保证可用性,再对该域间多叉树进行先序遍历,以调整各个域间节点对应初始单一下一跳路由器,得到对应的目标单一下一跳路由器。此发明在保证有效压缩路由表的同时,还能保证在压缩率达到路由器的要求后,尽可能降低路由表压缩对网络传输性能的影响
附图说明
图1是本发明路由表压缩方法提供的较佳实施例的流程图;
图2是本发明路由表压缩方法提供的较佳实施例中路由表压缩的算法示意图;
图3是本发明路由表压缩方法提供的较佳实施例中初始域内多叉树和目标域内多叉树的示意图;
图4是本发明路由表压缩方法提供的较佳实施例中构造域内多下一跳路由表的算法示意图;
图5是本发明路由表压缩方法提供的较佳实施例中生成初始路径拉伸值的示意图;
图6是本发明路由表压缩方法提供的较佳实施例中更新属性值的示意图;
图7是本发明路由表压缩方法提供的较佳实施例中路由表更新的流程图;
图8是本发明路由表压缩方法提供的较佳实施例中路由表更新的算法示意图;
图9是本发明路由表压缩方法提供的较佳实施例中基于路由表压缩方法进行转发的架构图;
图10为本发明路由器的较佳实施例的运行环境示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明较佳实施例所述的路由表压缩方法,如图1所示,所述路由表压缩方法包括以下步骤:
步骤S100,根据预设的全球路由表中网络前缀之前包含关系,以目标网络前缀为域间根节点,以所述目标网络前缀对应的子网络前缀为域间子节点,构建对应的域间多叉树,其中,所述域间多叉树包括各个域间节点对应的属性值。
具体地,参与图2,本实施例提供了一种域间带权多下一跳路由表聚合算法(Weighted-Nexthop-Selectable Forwarding Information Base-Aggr,Weighted-NSFIB-Aggr)在全球路由表中,记录了全球所有自治系统通告出的网络前缀,以及它们分别对应的出口路由器。对于全球路由表中的任一网络前缀p,查找其对应的出口路由器Rd,再在域内多下一跳路由表中,查找出口路由器Rd所对应的下一跳集合A,这就是网络前缀p所对应的多下一跳集合,本实施例中为方便描述,记为Ap。将全球路由表中各个网络前缀都进行该处理,可得到初始域间多下一跳路由表,初始域间多下一跳路由表中每一个表项为<p,Ap>。由于全球路由表中包含各个网络前缀,因此可网络前缀之前包含关系,构建对应的域间多叉树。例如网络前缀p为100,网络前缀n为1001、1002等,则n为子网络前缀,p为n的父网络前缀。根据网络前缀的包含关系,以目标网络前缀为域间根节点,以所述目标网络前缀对应的子网络前缀为域间子节点,构建对应的域间多叉树。
在构建域间多叉树的过程中,需对域间多叉树中各个域间节点进行属性值赋值,使其为带权的域间多叉树,使得后序过程可通过计算可视化和规律化。其中,该属性值可包括该域间节点的网络流畅度、该域间节点的效率等可用于压缩的指标数值。
步骤S200,以所述域间多叉树的叶子节点为起点,以所述域间根节点为终点,遍历各个域间节点,并根据所述域间节点对应的域内多下一跳路由表,确定各个域间节点对应的初始单一下一跳路由器。
具体地,由于从域间根节点出发,每执行一个操作,位于当前遍历的子节点后的域间节点都会发生变动,因此,本实施例为减少数据变动,提高计算效率,采用后序遍历的方式进行,即以所述域间多叉树的叶子节点为起点,以所述域间根节点为终点。
在遍历的过程之前,预先获取每一个域间节点对应的域内多下一跳路由表,域内多下一跳路由表为局域网内,从源路由器出发,到达目标路由器过程中多个下一跳所构建的下一跳路由表。该域内多下一跳路由表包括该域间节点可对应的下一跳路由器的集合。
然后在各个域间节点对应的域内下一跳路由表中的多个路由器中选择一个路由器作为该域间节点对应的初始单一下一跳路由器。选择方式可通过各个路由器对应的网络环境、到达目标路由器的距离等方式。在本实施例中,提供一种确定初始单一下一跳路由器的方式,具体过程如下:
步骤S2110,根据该域间子节点对应的域内多下一跳路由表,确定该域间子节点对应的下一跳路由器为比对路由器。
具体地,参阅图2,域间多叉树即图2中的T,域间带权多下一跳路由表,p为域间多叉树中的一个域间节点,以所述域间多叉树的叶子节点为起点,以所述域间根节点为终点,遍历各个所述域间节点,此过程即为图2中的行1。由于域内多下一跳路由表包含域间子节点所对应的下一跳路由器,因此,先将其对应的各个下一跳路由器作为比对路由器,即图2中的x。
步骤S2120,据预设的更新规则,对各个所述比对路由器的初始路由表值和初始路径拉伸值更新,生成各个所述比对路由器对应目标路由表值和目标路径拉伸值,其中,所述初始路由表值为当t为当前遍历的域间子节点时对应的路由表值,所述初始路径拉伸值为当t为当前遍历的域间子节点时对应的路径拉伸值。
具体地,在本实施例中,各个域间子节点对应的属性值包括路由表值和路径拉伸值,其中,所述路由表值为Gx(t),所述路径拉伸值为Sx(t),t为域间节点,x为域间节点t对应的多下一跳集合中的路由器,Gx(t)等于当t选择x作为对应的下一跳时路由器时路由表压缩后的数值,Sx(t)等于当t选择x作为对应的下一跳网络传输权重的数值。
具体地,本实施例中提供一种路径拉伸值的初始化时的计算方案。参阅图5,Rs为源路由器,Rd为目的路由器,Ro为最优下一跳,Rn为非最优下一跳,那么Rn对应的本地路径拉伸可定义为: 其中StrL(Rn)为Sx(Rn)的初始化的路径拉伸值。值得注意的是,本段中各个名词定义与其他段落内容无关,仅用于说明初始化的路径拉伸值的生成过程。
值得注意的是,图2中将T输入后,在进行后序遍历过程中,先将当前遍历的域间子节点与Ap中任意一个路由器之间的路由表值,简称g值,赋值为1,而与非Ap中的路由器之间的g值赋值为0。此过程可在生成域间多叉树中执行,也可在遍历过程中进行更新之前。
预先设置一个更新规则,用于在遍历过程中对各个所述比对路由器的初始路由表值和初始路径拉伸值更新,生成各个所述比对路由器对应目标路由表值和目标路径拉伸值。其中,所述初始路由表值为当t为当前遍历的域间子节点时对应的路由表值,即Gx(p),所述初始路径拉伸值为当t为当前遍历的域间子节点时对应的路径拉伸值,即Sx(p)。该更新规则可为判断该路由器是否为其他域间子节点对应的下一跳路由器来实现,若是,则说明,该路由器为多个域间子节点对应的下一跳路由器,因此选择其作为初始单一下一跳路由器,可减少路由表的大小,故而增加其对应的路由表值和路径拉伸值。本实施例提供一种实现方式为:
步骤S2121,针对每一个比对路由器,遍历各个相对子节点,其中,所述相对子节点为所述域间多叉树中相对于当前遍历的域内子节点为子节点的域间节点,即图2中的n。
步骤S2122,根据当前遍历的相对子节点对应的域内多下一跳路由表,以及该相对子节点与该比对路由器之间的路由表值,确定该域内子节点对应路由值更新公式和路径拉伸值更新公式。
具体地,相对子节点n对应的多下一跳集合为An,相对子节点与该比对路由器之间的路由表值为Gx(n)。本实施例中预设更新公式,其中,更新公式组包括路由表值更新公式组和路径拉伸值更新公式组,其中,路径拉伸值更新公式组为: Ch(p)表示当前遍历的域间子节点p对应的所有相对子节点;an为当Gx(n)取最小值时x的值,即y为An中的任意一个路由器;表示当Gy(n)为最小值时,对应同一路由器y时Sy(n)。
由上述路由表值更新公式可知,当比对路由器x属于An的一员,且Gx(n)=minyGy(n)时,对应的路由表值更新公式为Gx(p)=Gx(p)+Gx(n)-1。当对路由器x不属于An的一员,或Gx(n)≠minyGy(n)时,对应的路由表值更新公式为Gx(p)=Gx(p)+minyGy(n)。
由上述路径拉伸值更新公式可知,当比对路由器x属于An的一员,且Gx(n)=minyGy(n)时,对应的路径拉伸值更新公式为Sx(p)=Sx(p)+Sx(n);当对路由器x不属于An的一员,或Gx(n)≠minyGy(n)时,对应的路径拉伸值更新公式为
步骤S2123,根据所述路由值更新公式和所述路径拉伸值更新公式,对该域内子节点对应的初始路由表值和初始路径拉伸值更新,生成该比对路由器对应目标路由表值和目标路径拉伸值。
具体地,执行上述确定的路由表值更新公式和路径拉伸值更新公式,即可对当前遍历的域内子节点p对应的初始路由表值和初始路径拉伸值更新,生成该比对路由器对应目标路由表值和目标路径拉伸值。
参阅图6,左边的两个是域内多叉树,每个节点代表一个域内节点,图中域内节点内的内容,如{b,c},表示该域内节点对应的下一跳路由器,旁边是它们对应的路由表值和路径拉伸值。这里域内多叉树中域内节点数量就代表路由表的表项的数量。域间根节点有两个下一跳可选,即b和c,我们可以分别计算出对应的压缩后的路由表。第一种情况,第一排,域间根节点选择b作为初始单一下一跳路由器,而其前两个域间子节点的下一跳集合中也有b这个下一跳,所以这两个子节点可以聚合到根节点,对应压缩后的路由表大小为2,即旁边标注的g值。第二种情况,即第二排,域间根节点选择c作为下一跳,那么第三个域间子节点可以聚合到根节点,对应压缩后的路由表大小为3,即旁边标注的g值。
步骤S2130,比较各个目标根路由表值的大小,并将所述目标根路由表值中的最小值对应的比对路由器作为所述域间子节点对应的初始单一下一跳路由器。
具体地,当当遍历的域间节点p所对应的各个比对路由器都执行完上述操作后,确定各个比对路由器x所对应的Gx(p),并选择Gx(p)中最小值所对应的比对路由器作为所述域间子节点对应的初始单一下一跳路由器,即图2中的第14行,其中当括号内为域间子节点时,nexthop()表示括号内的域间节点对应的单一下一跳路由器,RT为所述域间多叉树的域间根节点。通过以上方式,最终确定每一个域间子节点对应的初始单一下一跳路由器。
值得注意的是,域内多下一跳路由表可采用现有方式生成,本实施例为进一步提高压缩效率,提供一种域内多下一跳路由表生成方法,具体如下:
步骤S211,根据源路由器对应的域内下一跳路由表中各个路由器之间的连接关系,以所述源路由器为域内根节点,以各个所述路由器为域内子节点,创建对应的初始域内多叉树,其中,所述初始域内多叉树中的域内节点包括所述域内根节点和所述域内子节点。
具体地,以图3所示,Rs为源路由器,根据源路由器对应的域内多下一跳路由表中各个路由器之间的连接关系,以所述源路由器为域内根节点,以各个所述路由器为域内子节点,创建对应的初始域内多叉树,其中,所述初始域内多叉树中的域内节点包括所述域内根节点和所述域内子节点,即图中左边的树状图。经过处理,可以得到一个图中右边所示的以Rs为根节点的最短路径树,即后文中的目标与域内多叉树。图中黑色虚线连接的节点代表树中非直接相连的节点,黑色实线表示树中存在的边,红色虚线表示在初始中存在,但最短路径树中不存在的边。
步骤S212,对所述初始域内多叉树进行路径聚合,生成各个域内子节点对应的域内多下一跳路由表。
具体地,初始域内多叉树中各个路径并非为最优路径,因此需要对初始域内多叉树所能提供的路径进行聚合,从而生成对应的域内多下一跳列表。目前获得最优路径的方法有很多,例如常规的最短路径算法。为了保证路由转发的正确性和全局无环性,可采用泛化下一跳的严格偏序关系。根据该偏序关系,选择各个路由器最优的下一跳路由器。
本实施例采用的路径聚合包括:
步骤S2121,以所述域内子节点为起点,以所述域内根节点为终点,遍历所述域内多叉树中的各个所述域内节点,并根据预设的偏序规则,对各个域内节点对应的域内下一跳路由表进行更新。
具体地,为提高计算效率,本实施例采用后序遍历的方式进行遍历,即以所述域内子节点为起点,以所述域内根节点为终点。并在遍历过程中,根据预设的偏序规则,对各个域内节点对应的域内下一跳路由表进行更新。该偏序规则即为用于判断该某一路由器是否为另一路由器对应的下一跳路由器,所设定的规则。不同的算法所设定的偏序规则不同,可根据用户的需求进行自定义。例如选择按照路径的长度设定,按照不同路由器的权重设定。
本实施例中,根据预设的偏序规则,对各个域内子节点对应的域内下一跳路由表进行更新,具体包括:
根据所述偏序规则,确定各个候选子节点中与邻居节点对应的中间下一跳路由器,其中,所述候选子节点为与所述域内根节点之间的跳跃次数与预设的跳跃次数阈值相等的域内子节点,所述邻居节点为与当前遍历的域内子节点相邻的域内节点,所述中间下一跳路由器为该邻居节点对应的下一跳路由器;
当根据所述邻居节点对应的域内下一跳路由表,确定所述中间下一跳路由器不是该邻居节点对应的下一跳路由器时,将所述中间下一跳路由器添加至域内相对子节点对应的域内下一跳路由表,其中,所述域内相对子节点为所述域内多叉树中,相对于该邻居节点为子节点的域内节点;
其中,所述偏序规则为若候选子节点满足预设的偏序公式,则确定该候选子节点为当前遍历的域内节点的邻居节点对应的中间下一跳路由器,所述偏序公式为cost(R,Rk)+P<dist(Rs,Rk),cost()表示括号内域内节点之间的链路长度,dist()表示括号内域内节点之间链路长度的最小值,R表示当前遍历的域内子节点,Rk为该域内子节点的邻居节点,P为当前域内多叉树中该候选子节点与R之间的任意一个链路长度,Rs为所述域内根节点。
本实施例先定义所采用的域内多下一跳路由表中的下一跳。因为不合理的下一跳定义会造成路由环路,路由黑洞等问题,会严重影响网络传输性能,甚至导致网络不可用。假设<p,pi>为源路由器Rs转发表中的一项,Rs作为源路由器,需要做路由表压缩、产生转发行为的那个路由器。网络前缀p的出口路由器为Rd,pi指向泛化的转发行为actioni,该转发行为可以是基本的端口转发,也可以是隧道转发。其中,当end(actioni)和Rs之间满足预设的偏序关系时,actioni就是p的一个泛化,满足偏序关系可用公式表示,其中end(actioni)Rs进行转发行为actioni后数据包所到达的路由器。表示一个该偏序关系,具体定义如下:假设有一个无向,带权的拓扑G(V,E)。令dist(Rs,Rk)表示从Rs到Rk的最短距离,令ID(Rs)表示路由器Rs的ID,对于集合V内的每个目的节点Rd,存在偏序关系当且仅当dist(Rk,Rd)<dist(Rs,Rd),或dist(Rk,Rd)=dist(Rs,Rd)且ID(Rk)<ID(Rs)。其中ID(R)表示该路由器的ID根据上述定义,可以判断对于任一路由器,可选择合适的路由器作为其下一跳。但如果直接将定义用于计算,其时间复杂度将会相当高,因此可采用算法的方式进行。
将图3中的左图为例进行该算法原理的描述,对于节点Rn,找到所有能将它作为下一跳的节点。如图中所示结构,根据定义条件,若Rn可作为Ri(或者说Rk子树中任一节点)的下一跳,应有:dist(Rn,Ri)<dist(Rs,Ri)。将上式用dist(Rs,Ri)=dist(Rs,Rk)+dist(Rk,Ri)和dist(Rn,Ri)=cost(Rn,Rk)+dist(Rk,Ri)展开(其中cost(Rn,Rk)表示Rn和Rk之间的链路长度),可得到:cost(Rn,Rk)<dist(Rs,Rk)。若Rn能作为Rk(或者说Rt子树中任一节点)的下一跳,我们有:cost(Rn,Rk)+cost(Rk,Rt)<dist(Rs,Rt)。因此,如果路径Rn,Rn+1,…,Rn+m是拓扑中一条源自于Rn的路径(m可以是0,1,2,…),那么如果Rn可以作为Rn+m子树任一节点的下一跳,则有:
基于上述偏序的定义,我们可设定一偏序规则,即满足预设的偏序公式时,该候选子节点为当前遍历的域内子节点的邻居节点对应的中间下一跳路由器,偏序公式为cost(R,Rk)+P<dist(Rs,Rk),cost()表示括号内域内节点之间的链路长度,dist()表示括号内域内节点之间链路长度的最小值,R表示当前遍历的域内子节点,Rk为该域内子节点的邻居节点,P为当前域内多叉树中该候选子节点与R之间的任意一个链路长度,Rs为所述域内根节点
基于上述偏序规则,本实施例提供一种严格偏序泛化下一跳(Generalized NextHop of Strict Partial Order,GSPO-Nexthop)和一种严格偏序泛化下一跳的生成(Generation of Generalized Next Hop of Strict Partial Order,GSPO-Gen)。以下基于上述偏序规则,对更新过程进行具体的描述。
假设源路由器为Rs,将距离Rs路由器K跳内的节点都作为候选子节点,即图4中的Rn。对于任意一个源路由器Rs,找到自治域内所有路由器能将其作为下一跳路由器,即构造域内多下一跳路由表。传统构造路由表的做法为从目的节点出发,寻找能到达目的节点的下一跳,由于多下一跳路由表的特殊性,按本算法从待选下一跳出发寻找目的节点的算法效率更高。GSPO-Nexthop函数首先找出距离源路由器Rs源路由器K跳以内的所有域内节点,K即跳跃次数阈值,并遍历,即图4所示的GSPO-Nexthop。实验结果表明,选择距离源路由器4跳以内的路由器(即令K值等于4)作候选子节点时,不仅能保证接近最优的压缩性能,还能保证算法的运行速度,是较为合适的选择。
将当前遍历的域内节点R,先确定该域间子节点的邻居节点Rk。然后判断候选子节点Rn是否可为邻居节点Rk的中间下一跳路由器。判断方式可以是比较不同候选子节点Rn作为同一邻居节点Rk时,从源路由器Rs到域内子节点R所要经历的跳跃次数等。此过程即可表示为图4中GSPO-Gen算法公式行2所示,其中,P为从候选子节点Rn出发,沿链路行进至域内子节点R所经过的路径长度,link与cost相等。
若候选子节点Rn可为邻居节点Rk的中间下一跳路由器,且之前并未记载在邻居节点Rk对应的下一跳里列表中,即并非其对应的下一跳路由器时,则将候选子节点Rn加入域内相对子节点对应的域内下一跳路由表,即图4中GSPO-Gen算法公式行3-行6,相对子节点即为w。由于候选子节点Rn作为一个元素不能直接参与集合运算,所以需要先将其变成一个集合,即{n},再做计算。
步骤S2122,判断所述源路由器对应的递归深度值是否大于零。
步骤S2123,若是,则根据更新后的域内下一跳路由表,对所述初始域内多叉树进行更新,并对更新后的初始域内多叉树进行路径聚合,直至聚合次数等于所述递归深度值,生成目标域内多叉树。
具体地,如图4中GSPO-Gen算法公式行行8-行11所示,若预先设定的递归深度值,也就是最大递归深度d。若递归深度值d>0,则将源路由器Rs、邻居节点Rk、P+link(R,Rk)、候选子节点Rn,d-1重新输入GSPO-Gen函数中。由于域内节点w对应的域内下一跳路由表发生了改变,因此由此构建多叉树应与初始域内多叉树不同,故根据更新后的域内下一跳路由表,对所述初始域内多叉树进行更新,生成中间域内多叉树。再对中间域内多叉树进行路径聚合,直至聚合次数等于所述递归深度值,生成目标域内多叉树。
步骤S2124,根据所述目标域内多叉树,确定各个域内子节点对应的域内下一跳路由表作为对应的域内多下一跳路由表。
具体地,并其各个域内子节点对应的域内下一跳路由表作为对应的域内多下一跳路由表。由于每执行一次后,输入递归深度值都会减一,因此,最终执行次数等于所述递归深度值。此时,递归深度值d<0,因此,将此时的域内子节点对应的域内下一跳路由表作为对应的域内多下一跳路由表并输出。
通过上述方式获得的域内多下一跳路由表相较于以往的域内多下一跳路由表更短,因此可在本实施例提供的压缩方案基础上进一步提高压缩效率。
步骤S300,根据预设的筛选规则,确定所述域间子节点对应的初始单一下一跳路由器中的所述域间根节点对应的初始单一下一跳路由器。
具体地,步骤S200结束后,由于该域间多叉树中包含多个域间子节点,而不同的域间子节点都会提供一个初始单一下一跳路由器。因此,为进一步减少RT对应的下一跳路由器的数量,需要对各个初始单一下一跳路由器进行筛选,从中选择一个下一跳路由器作为该域间根节点对应的初始单一下一跳路由器。本实施例根据预设的筛选规则实现初始单一下一跳路由器的筛选,该筛选规则可以是比较各个初始单一下一跳路由器与其对应的目标路由表值的大小,选择其中目标路由表值最小的初始单一下一跳路由器作为初始单一下一跳路由器。此外,还可比较目标路径拉伸值的大小等等。
进一步地,为保证最终得到的路由表在尽可能小的同时,路径拉伸值也越小,本实施例提供一种筛选规则,其为:
若某一个初始单一下一跳路由器对应的目标路由表值小于预设的路由表阈值,且该初始单一下一跳路由器对应的目标路径拉伸值为所述初始单一下一跳路由器对应的目标路径拉伸值中的最小值,则确定该初始单一下一跳路由器为所述域间根节点对应的初始单一下一跳路由器。
具体地,参阅图2中的行16,当所述初始单一下一跳路由器对应的目标路由表值时,即后序遍历结束后的Gx(p)≤U,比较各个目标路径拉伸值的大小。其中U为预设的路由表树木最大值,即路由表值阈值。选择符合Gx(p)≤U的初始单一下一跳路由器中,目标路径拉伸值最小值对应的初始单一下一跳路由器为所述域间根节点对应的初始单一下一跳路由器。
步骤S400,以所述域间根节点为起点,以所述域间多叉树的叶子节点为终点,遍历所述域间多叉树中各个域间节点,并对当前遍历的域间节点对应的初始单一下一跳路由器进行调整,直至遍历结束,将遍历结束后各个域间节点对应的初始单一下一跳路由器作为对应的目标单一下一跳路由器。
具体地,以所述域间根节点为起点,以所述域间多叉树的叶子节点为终点,进行先序遍历,即图2中行17。然后根据预设的聚合规则,调整各个域间子节点和所述域间根节点对应的初始单一下一跳路由器。其调整目的主要是为保证后序在进行跳转可正常进行。
本实施例在此目的基础上,提供一种调整方案:当当前遍历的域间子节点对应的初始单一下一跳路由器与相对父节点对应的初始单一下一跳路由器不相等,且所述相对父节点对应的初始单一下一跳路由器为该域间子节点对应的下一跳路由器时,将所述相对父节点对应的初始单一下一跳路由器替换该域间子节点对应的初始单一下一跳路由器,其中,所述相对父节点为所述域间多叉树中相对于当前遍历的域内子节点的父节点。
参阅图2中行18-20,本实施所提供的一种聚合规则为当域间节点p所对应的初始单一下一跳路由器,即nexthop(p),与域间节点p对应的相对父节点对应的初始单一下一跳路由器,即nexthop(Parent(p)),不相等,且nexthop(Parent(p))为域间节点p对应的Ap中的一员,则将nexthop(Parent(p))所对应的路由器替换nexthop(p)。因此,部分域间节点p和其对应的相对父节点可共用一个路由器作为下一跳路由器,从而进一步压缩路由表。当先序遍历结束时,将当前的初始单一下一跳路由器作为目标单一下一跳路由器并输出。
全球路由表是处在不断变化中的,变化包括条目更新,条目撤销,条目增加三种。如果每次变化后都需要重新运行压缩算法得到新的路由表,那么更新开销将会非常大,压缩算法便难以运用在实际的网络环境中。因此,基于上述压缩后的路由表,本实施例还提供一种在线更新算法。
图7展示了在线更新算法的整体流程图。当全球路由表中有路由条目更新时,首先需要从更新后的路由条目中获取新的出口路由器,然后查找域内多下一跳路由表,根据BGP(Border Gateway Protocol,边界网关协议)找到该出口路由器所对应的下一跳路由器,即BGP路由,并依此构造新的域间路由表条目,然后利用该条目更新域间多叉树中的对应域间节点,并将该节点作为更新算法的起始节点;当全球路由表中有条目增加时,处理方式类似更新条目,只不过最后是用新的路由表条目生成新的域间节点并插入其中,然后将该插入的节点作为更新算法起始节点;当全球路由表中有条目撤销时,只需要根据撤销的前缀,找到对应的域间节点,最后将被删除节点的父节点作为更新算法的起始节点。参阅图8,路由表在线更新算法流程为从需要更新的域间节点出发,逐步向上更新各个域间节点的信息,由于更新方式与上述路由表压缩方法类似,因此不再赘述。
如图9所示,最上层的三个模块是路由器的基础模块。OSPF(Open Shortest PathFirst,开放最短路径优先)模块为域内路由协议模块,根据它所给出的域内下一跳路由表,可构建始域内多叉树。结合本实施例提供的域内多下一跳路由表构造方法,可以构造出对应的域内多下一跳路由表。BGP模块为域间路由协议模块,它主要用来和因特网内的其他自治系统通信,并给出全球路由表。全球路由表和域内多下一跳路由表结合,可构造域间多下一跳路由表,即图中的多下一跳域内路由表。基于该域间多下一跳路由表,可构建对应的域间多下一跳路由表,即图中的多下一跳域间路由表。最后对该路由表使用本发明中给出的路由表压缩方案,就可以得到压缩后的转发表。转发表一般给出网络前缀及其对应的下一跳,但并不包含硬件转发的具体细节(如下一跳的MAC地址,路由器的转发出口等)。IPv4协议对应的地址解析协议(Address Resolution Protocol,ARP)或IPv6协议对应的邻居发现协议(Neighbor Discovery Protocol,NDP)所搭建的模块给出协议信息,与转发表结合便可生成路由转发所需的全部信息,路由器的转发面便能根据这些信息进行路由转发。基于该系统构架,和本实施例所提供的路由表压缩方案,可极大地减少路由表的压缩,满足现今网络转发表的大小限制。
进一步地,如图10所示,基于上述路由表压缩方法,本发明还相应提供了一种路由器,所述路由器包括处理器10、存储器20及显示器30。图10仅示出了路由器的部分组件,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
所述存储器20在一些实施例中可以是所述路由器的内部存储单元,例如路由器的硬盘或内存。所述存储器20在另一些实施例中也可以是所述路由器的外部存储设备,例如所述路由器上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器20还可以既包括所述路由器的内部存储单元也包括外部存储设备。所述存储器20用于存储安装于所述路由器的应用软件及各类数据,例如所述安装路由器的程序代码等。所述存储器20还可以用于暂时地存储已经输出或者将要输出的数据。在一实施例中,存储器20上存储有路由表压缩程序40,该路由表压缩程序40可被处理器10所执行,从而实现本申请中路由表压缩方法。
所述处理器10在一些实施例中可以是一中央处理器(Central Processing Unit,CPU),微处理器或其他数据处理芯片,用于运行所述存储器20中存储的程序代码或处理数据,例如执行所述路由表压缩方法等。
所述显示器30在一些实施例中可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。所述显示器30用于显示在所述路由器的信息以及用于显示可视化的用户界面。所述路由器的部件10-30通过系统总线相互通信。
在一实施例中,当处理器10执行所述存储器20中路由表压缩程序40时实现以下步骤:
根据预设的全球路由表中网络前缀之前包含关系,以目标网络前缀为域间根节点,以所述目标网络前缀对应的子网络前缀为域间子节点,构建对应的域间多叉树,其中,所述域间多叉树包括各个域间节点对应的属性值,所述域间节点包括所述域间根节点和所述域间子节点;
以所述域间多叉树的叶子节点为起点,以所述域间根节点为终点,遍历各个所述域间节点,并根据所述域间子节点对应的域内多下一跳路由表,确定当前遍历的域间子节点对应的初始单一下一跳路由器;
根据预设的筛选规则,确定所述初始单一下一跳路由器中所述域间根节点对应的初始单一下一跳路由器;
以所述域间根节点为起点,以所述域间多叉树的叶子节点为终点,遍历所述域间多叉树中各个域间节点,并对当前遍历的域间节点对应的初始单一下一跳路由器进行调整,直至遍历结束,将遍历结束后各个域间节点对应的初始单一下一跳路由器作为对应的目标单一下一跳路由器。
其中,所述属性值包括路由表值和路径拉伸值,其中,所述路由表值为Gx(t),所述路径拉伸值为Sx(t),t为所述域间节点,x为域间节点t对应的多下一跳集合中的路由器,Gx(t)等于当t选择x作为对应的下一跳时路由器时路由表压缩后的数值,Sx(t)等于当t选择x作为对应的下一跳网络传输权重的数值。
其中,所述根据所述域间子节点对应的域内多下一跳路由表,确定当前遍历的域间子节点对应的初始单一下一跳路由器,具体包括:
针对每一个域间子节点,根据该域间子节点对应的域内多下一跳路由表,确定该域间子节点对应的下一跳路由器为比对路由器;
据预设的更新规则,对各个所述比对路由器的初始路由表值和初始路径拉伸值更新,生成各个所述比对路由器对应目标路由表值和目标路径拉伸值,其中,所述初始路由表值为当t为当前遍历的域间子节点时对应的路由表值,所述初始路径拉伸值为当t为当前遍历的域间子节点时对应的路径拉伸值;
比较各个目标路由表值的大小,并将所述目标路由表值中的最小值对应的比对路由器作为所述域间子节点对应的初始单一下一跳路由器。
其中,所述根据预设的更新规则,对各个所述比对路由器的初始路由表值和初始路径拉伸值更新,生成各个所述比对路由器对应目标路由表值和目标路径拉伸值,具体包括:
针对每一个比对路由器,遍历各个相对子节点,其中,所述相对子节点为所述域间多叉树中相对于当前遍历的域内子节点为子节点的域间节点;
根据当前遍历的相对子节点对应的域内多下一跳路由表,以及该相对子节点与该比对路由器之间的路由表值,确定该域内子节点对应路由值更新公式和路径拉伸值更新公式;
根据所述路由值更新公式和所述路径拉伸值更新公式,对该域内子节点对应的初始路由表值和初始路径拉伸值更新,生成该比对路由器对应目标路由表值和目标路径拉伸值。
其中,所述筛选规则为:
若某一个初始单一下一跳路由器对应的目标路由表值小于预设的路由表阈值,且该初始单一下一跳路由器对应的目标路径拉伸值为所述初始单一下一跳路由器对应的目标路径拉伸值中的最小值,则确定该初始单一下一跳路由器为所述域间根节点对应的初始单一下一跳路由器。
其中,所述对当前遍历的域间节点对应的初始单一下一跳路由器进行调整,具体包括:
当当前遍历的域间子节点对应的初始单一下一跳路由器与相对父节点对应的初始单一下一跳路由器不相等,且所述相对父节点对应的初始单一下一跳路由器为该域间子节点对应的下一跳路由器时,将所述相对父节点对应的初始单一下一跳路由器替换该域间子节点对应的初始单一下一跳路由器,其中,所述相对父节点为所述域间多叉树中相对于当前遍历的域内子节点的父节点。
其中,所述以所述域间多叉树的叶子节点为起点,以所述域间根节点为终点,遍历各个所述域间节点,并根据所述域间子节点对应的域内多下一跳路由表,确定当前遍历的域间子节点对应的初始单一下一跳路由器之前,还包括:
根据源路由器对应的域内下一跳路由表中各个路由器之间的连接关系,以所述源路由器为域内根节点,以各个所述路由器为域内子节点,创建对应的初始域内多叉树,其中,所述初始域内多叉树中的域内节点包括所述域内根节点和所述域内子节点;
对所述初始域内多叉树进行路径聚合,生成各个域内子节点对应的域内多下一跳路由表。
其中,所述对所述初始域内多叉树进行路径聚合,生成各个域内子节点对应的域内多下一跳路由表,具体包括:
以所述域内子节点为起点,以所述域内根节点为终点,遍历所述域内多叉树中的各个所述域内节点,并根据预设的偏序规则,对各个域内节点对应的域内下一跳路由表进行更新;
判断所述源路由器对应的递归深度值是否大于零;
若是,则根据更新后的域内下一跳路由表,对所述初始域内多叉树进行更新,并对更新后的初始域内多叉树进行路径聚合,直至聚合次数等于所述递归深度值,生成目标域内多叉树;
根据所述目标域内多叉树,确定各个域内子节点对应的域内下一跳路由表作为对应的域内多下一跳路由表。
其中,所述根据预设的偏序规则,对各个域内子节点对应的域内下一跳路由表进行更新,具体包括:
根据所述偏序规则,确定各个候选子节点中与邻居节点对应的中间下一跳路由器,其中,所述候选子节点为与所述域内根节点之间的跳跃次数与预设的跳跃次数阈值相等的域内子节点,所述邻居节点为与当前遍历的域内子节点相邻的域内节点,所述中间下一跳路由器为该邻居节点对应的下一跳路由器;
当根据所述邻居节点对应的域内下一跳路由表,确定所述中间下一跳路由器不是该邻居节点对应的下一跳路由器时,将所述中间下一跳路由器添加至域内相对子节点对应的域内下一跳路由表,其中,所述域内相对子节点为所述域内多叉树中,相对于该邻居节点为子节点的域内节点;
其中,所述偏序规则为若候选子节点满足预设的偏序公式,则确定该候选子节点为当前遍历的域内子节点的邻居节点对应的中间下一跳路由器,所述偏序公式为cost(R,Rk)+P<dist(Rs,Rk),cost()表示括号内域内节点之间的链路长度,dist()表示括号内域内节点之间链路长度的最小值,R表示当前遍历的域内子节点,Rk为该域内子节点的邻居节点,P为当前域内多叉树中该候选子节点与R之间的任意一个链路长度,Rs为所述域内根节点。
本发明还提供一种存储介质,其中,所述存储介质存储有路由表压缩程序,所述路由表压缩程序被处理器执行时实现如上所述的路由表压缩方法的步骤。
当然,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关硬件(如处理器,控制器等)来完成,所述的程序可存储于一计算机可读取的存储介质中,所述程序在执行时可包括如上述各方法实施例的流程。其中所述的存储介质可为存储器、磁碟、光盘等。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (8)
1.一种路由表压缩方法,其特征在于,所述路由表压缩方法包括:
根据预设的全球路由表中网络前缀之前包含关系,以目标网络前缀为域间根节点,以所述目标网络前缀对应的子网络前缀为域间子节点,构建对应的域间多叉树,其中,所述域间多叉树包括各个域间节点对应的属性值,所述域间节点包括所述域间根节点和所述域间子节点;
根据源路由器对应的域内下一跳路由表中各个路由器之间的连接关系,以所述源路由器为域内根节点,以各个所述路由器为域内子节点,创建对应的初始域内多叉树,其中,所述初始域内多叉树中的域内节点包括所述域内根节点和所述域内子节点;
对所述初始域内多叉树进行路径聚合,生成各个域内子节点对应的域内多下一跳路由表;
所述对所述初始域内多叉树进行路径聚合,生成各个域内子节点对应的域内多下一跳路由表,具体包括:
以所述域内子节点为起点,以所述域内根节点为终点,遍历所述域内多叉树中的各个所述域内节点,并根据预设的偏序规则,对各个域内节点对应的域内下一跳路由表进行更新;
判断所述源路由器对应的递归深度值是否大于零;
若是,则根据更新后的域内下一跳路由表,对所述初始域内多叉树进行更新,并对更新后的初始域内多叉树进行路径聚合,直至聚合次数等于所述递归深度值,生成目标域内多叉树;
根据所述目标域内多叉树,确定各个域内子节点对应的域内下一跳路由表作为对应的域内多下一跳路由表;
所述根据预设的偏序规则,对各个域内子节点对应的域内下一跳路由表进行更新,具体包括:
根据所述偏序规则,确定各个候选子节点中与邻居节点对应的中间下一跳路由器,其中,所述候选子节点为与所述域内根节点之间的跳跃次数与预设的跳跃次数阈值相等的域内子节点,所述邻居节点为与当前遍历的域内子节点相邻的域内节点,所述中间下一跳路由器为该邻居节点对应的下一跳路由器;
当根据所述邻居节点对应的域内下一跳路由表,确定所述中间下一跳路由器不是该邻居节点对应的下一跳路由器时,将所述中间下一跳路由器添加至域内相对子节点对应的域内下一跳路由表,其中,所述域内相对子节点为所述域内多叉树中,相对于该邻居节点为子节点的域内节点;
其中,所述偏序规则为若候选子节点满足预设的偏序公式,则确定该候选子节点为当前遍历的域内子节点的邻居节点对应的中间下一跳路由器,所述偏序公式为cost(R,Rk)+P<dist(Rs,Rk),cost()表示括号内域内节点之间的链路长度,dist()表示括号内域内节点之间链路长度的最小值,R表示当前遍历的域内子节点,Rk为该域内子节点的邻居节点,P为当前域内多叉树中该候选子节点与R之间的任意一个链路长度,Rs为所述域内根节点;
以所述域间多叉树的叶子节点为起点,以所述域间根节点为终点,遍历各个所述域间节点,并根据所述域间子节点对应的域内多下一跳路由表,确定当前遍历的域间子节点对应的初始单一下一跳路由器;
根据预设的筛选规则,确定所述初始单一下一跳路由器中所述域间根节点对应的初始单一下一跳路由器;
以所述域间根节点为起点,以所述域间多叉树的叶子节点为终点,遍历所述域间多叉树中各个域间节点,并对当前遍历的域间节点对应的初始单一下一跳路由器进行调整,直至遍历结束,将遍历结束后各个域间节点对应的初始单一下一跳路由器作为对应的目标单一下一跳路由器。
2.根据权利要求1所述的路由表压缩方法,其特征在于,所述属性值包括路由表值和路径拉伸值,其中,所述路由表值为Gx(t),所述路径拉伸值为Sx(t),t为所述域间节点,x为域间节点t对应的多下一跳集合中的路由器,Gx(t)等于当t选择x作为对应的下一跳时路由器时路由表压缩后的数值,Sx(t)等于当t选择x作为对应的下一跳网络传输权重的数值。
3.根据权利要求2所述的路由表压缩方法,其特征在于,所述根据所述域间子节点对应的域内多下一跳路由表,确定当前遍历的域间子节点对应的初始单一下一跳路由器,具体包括:
针对每一个域间子节点,根据该域间子节点对应的域内多下一跳路由表,确定该域间子节点对应的下一跳路由器为比对路由器;
据预设的更新规则,对各个所述比对路由器的初始路由表值和初始路径拉伸值更新,生成各个所述比对路由器对应目标路由表值和目标路径拉伸值,其中,所述初始路由表值为当t为当前遍历的域间子节点时对应的路由表值,所述初始路径拉伸值为当t为当前遍历的域间子节点时对应的路径拉伸值;
比较各个目标路由表值的大小,并将所述目标路由表值中的最小值对应的比对路由器作为所述域间子节点对应的初始单一下一跳路由器。
4.根据权利要求3所述的路由表压缩方法,其特征在于,所述根据预设的更新规则,对各个所述比对路由器的初始路由表值和初始路径拉伸值更新,生成各个所述比对路由器对应目标路由表值和目标路径拉伸值,具体包括:
针对每一个比对路由器,遍历各个相对子节点,其中,所述相对子节点为所述域间多叉树中相对于当前遍历的域内子节点为子节点的域间节点;
根据当前遍历的相对子节点对应的域内多下一跳路由表,以及该相对子节点与该比对路由器之间的路由表值,确定该域内子节点对应路由值更新公式和路径拉伸值更新公式;
根据所述路由值更新公式和所述路径拉伸值更新公式,对该域内子节点对应的初始路由表值和初始路径拉伸值更新,生成该比对路由器对应目标路由表值和目标路径拉伸值。
5.根据权利要求2所述的路由表压缩方法,其特征在于,所述筛选规则为:
若某一个初始单一下一跳路由器对应的目标路由表值小于预设的路由表阈值,且该初始单一下一跳路由器对应的目标路径拉伸值为所述初始单一下一跳路由器对应的目标路径拉伸值中的最小值,则确定该初始单一下一跳路由器为所述域间根节点对应的初始单一下一跳路由器。
6.根据权利要求1所述的路由表压缩方法,其特征在于,所述对当前遍历的域间节点对应的初始单一下一跳路由器进行调整,具体包括:
当当前遍历的域间子节点对应的初始单一下一跳路由器与相对父节点对应的初始单一下一跳路由器不相等,且所述相对父节点对应的初始单一下一跳路由器为该域间子节点对应的下一跳路由器时,将所述相对父节点对应的初始单一下一跳路由器替换该域间子节点对应的初始单一下一跳路由器,其中,所述相对父节点为所述域间多叉树中相对于当前遍历的域内子节点的父节点。
7.一种路由器,其特征在于,所述路由器包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的路由表压缩程序,所述路由表压缩程序被所述处理器执行时实现如权利要求1-6任一项所述的路由表压缩方法的步骤。
8.一种存储介质,其特征在于,所述存储介质存储有路由表压缩程序,所述路由表压缩程序被处理器执行时实现如权利要求1-6任一项所述的路由表压缩方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011204784.1A CN112565072B (zh) | 2020-11-02 | 2020-11-02 | 一种路由表压缩方法、路由器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011204784.1A CN112565072B (zh) | 2020-11-02 | 2020-11-02 | 一种路由表压缩方法、路由器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112565072A CN112565072A (zh) | 2021-03-26 |
CN112565072B true CN112565072B (zh) | 2022-08-09 |
Family
ID=75042528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011204784.1A Active CN112565072B (zh) | 2020-11-02 | 2020-11-02 | 一种路由表压缩方法、路由器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112565072B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116192966A (zh) * | 2023-03-01 | 2023-05-30 | 北京天弛网络有限公司 | 基于路由表的业务路径计算方法、系统、介质及设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101909005A (zh) * | 2010-07-20 | 2010-12-08 | 中兴通讯股份有限公司 | 转发表的处理方法和装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6385649B1 (en) * | 1998-11-06 | 2002-05-07 | Microsoft Corporation | Routers and methods for optimal routing table compression |
CN101741708B (zh) * | 2008-11-13 | 2012-11-21 | 华为技术有限公司 | 一种存储数据的方法和装置 |
EP2560327B1 (en) * | 2010-04-12 | 2014-06-04 | Huawei Technologies Co., Ltd. | Routing table establishment method and device |
CN102405622B (zh) * | 2010-08-24 | 2014-11-05 | 华为技术有限公司 | 二叉树建立、压缩和查找的方法和装置 |
CN105721297B (zh) * | 2016-01-28 | 2019-04-09 | 北京国电通网络技术有限公司 | 基于sdn网络中路由环路的检测方法及系统 |
US10917338B2 (en) * | 2018-03-06 | 2021-02-09 | Clarkson University | System and method for building a hierarchical data structure |
-
2020
- 2020-11-02 CN CN202011204784.1A patent/CN112565072B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101909005A (zh) * | 2010-07-20 | 2010-12-08 | 中兴通讯股份有限公司 | 转发表的处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112565072A (zh) | 2021-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10574567B2 (en) | Modeling a border gateway protocol network | |
US9077668B2 (en) | Flexible and extensible flow processing in software-defined networks | |
US8521905B2 (en) | System for flexible and extensible flow processing in software-defined networks | |
US9007918B2 (en) | Techniques for efficiently updating routing information | |
US8223666B2 (en) | Method of constructing a forwarding database for a data communications network | |
US10075375B2 (en) | Method for making flow table multiple levels, and multi-level flow table processing method and device | |
US9331910B2 (en) | Methods and systems for automatic generation of routing configuration files | |
US9106512B2 (en) | Techniques for efficiently updating routing information upon shortest path tree computation | |
US11070464B2 (en) | Optimized multicast forwarding with a cache | |
US9531627B1 (en) | Selecting a remote path using forwarding path preferences | |
US8036126B2 (en) | System and method for compressing internet protocol routing tables | |
JP3881663B2 (ja) | フィールドレベルツリーを用いたパケット分類装置及び方法 | |
WO2017190559A1 (zh) | 路由查找方法、装置、分配节点、查找节点及入口节点 | |
CN110679120B (zh) | 通信网络节点 | |
CN105721303A (zh) | 一种路由控制方法、网络设备及控制器 | |
CN107276916B (zh) | 基于协议无感知转发技术的交换机流表管理方法 | |
CN112565072B (zh) | 一种路由表压缩方法、路由器及存储介质 | |
CN102184234B (zh) | 用于查询、增加、更新或删除信息处理规则的方法和设备 | |
JP2005531222A (ja) | インタネットルーティングプロトコルを用いるためのフィボナッチヒープ | |
WO2011012081A1 (zh) | 一种通信设备路由转发表的压缩方法和装置 | |
Liu et al. | Removing redundancy from packet classifiers | |
Dynerowicz | The Algorithm-to-Algebra Method Applied to Route Aggregation: A Tale of Roadsigns | |
Benjamin | Topology synthesis of communication networks | |
Dynerowicz | THESIS/THÈSE |
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 |