一种路由的转发方法和装置与流程
未命名
10-22
阅读:89
评论:0
1.本发明涉及网络路由技术领域,尤其涉及一种路由的转发方法和装置。
背景技术:
2.网络中的各个设备基于统一的通信协议(比如,ip协议)进行通信和连接,实现数据交互。设备之间通信时,路由器接受从源设备的源ip地址接口发送的通信请求,并转发至目的ip地址,使得目的设备接收通信数据。
3.现有的通信过程中,在路由转发时,通常需要路由器按照路由表中路由条目的等级,按照从高到低的顺序,分别将各个路由条目和目的ip地址进行与运算,根据运算结果中数值为“1”的个数确定匹配长度,选择匹配长度最大的路由条目作为最佳路由进行转发。
4.然而,随着网络设备的激增,面对海量的路由条目,计算全部路由条目的匹配长度并对比最大匹配长度以确定最佳路由的方式需要付出高昂的时间成本和计算资源,使得路由的转发效率低下,进而导致数据传输效率低下。
技术实现要素:
5.有鉴于此,本发明实施例提供一种路由的转发方法和装置,能够解决路由转发效率低下,进而导致数据传输效率低下的问题。
6.为实现上述目的,根据本发明的一方面,提供了一种路由的转发方法,包括:
7.接收一个或多个通信请求;其中,所述通信请求包括目的ip地址;
8.逐级对所述目的ip地址的各个字段的值和路由数据库中的各级索引表的数组元素值进行匹配,确定各个所述字段的匹配结果;其中,所述匹配结果包括相同、不同或空;
9.在所述匹配结果为不同的情况下,确定与所述匹配结果对应的目标索引表;
10.根据所述目标索引表和所述目标索引表之前的至少一级索引表的匹配数组,生成目标路由,利用所述目标路由对所述通信请求进行转发。
11.根据本发明的另一方面,提供了一种路由的转发装置,包括:
12.接收模块,用于接收一个或多个通信请求;其中,所述通信请求包括目的ip地址;
13.匹配模块,用于逐级对所述目的ip地址的各个字段的值和路由数据库中的各级索引表的数组元素值进行匹配,确定各个所述字段的匹配结果;其中,所述匹配结果包括相同、不同或空;
14.数据处理模块,用于在所述匹配结果为不同的情况下,确定与所述匹配结果对应的目标索引表;
15.生成模块,用于根据所述目标索引表和所述目标索引表之前的至少一级索引表的匹配数组,生成目标路由,利用所述目标路由对所述通信请求进行转发。
16.根据本发明的另一方面,提供了一种电子设备,包括:
17.处理器;以及
18.存储程序的存储器,
19.其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行所述路由的转发方法。
20.根据本发明实施例的还一个方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行所述路由的转发方法。
21.上述发明中的一个实施例具有如下优点或有益效果:因为采用在存储时创建多级索引表,根据掩码值与各字段最大掩码值的对比结果,分级存储第二字段至第四字段的值和掩码值;转发时根据目的ip地址的第一字段至第三字段的值定位索引位置,逐级对字段值和索引位置的数组元素值进行匹配,基于不同的匹配结果组合目标路由的技术手段,所以克服了现有的全部路由条目的计算对比需要付出高昂的时间成本和计算资源,使得路由的转发效率低下,导致数据传输效率低下的技术问题,进而达到快速、精准地匹配目标路由,提高路由选择和转发效率,提升数据传输效率的技术效果。
附图说明
22.在下面结合附图对于示例性实施例的描述中,本发明的更多细节、特征和优点被公开,在附图中:
23.图1是根据本发明实施例的路由的转发方法的主要流程的示意图;
24.图2是根据本发明实施例的索引表的确定方法的主要流程的示意图;
25.图3是根据本发明实施例的多级索引表的示意图;
26.图4是根据本发明实施例的目标路由的生成方法的主要流程的示意图;
27.图5是根据本发明实施例的路由的转发装置的主要模块的示意图;
28.图6是适于用来实现本发明实施例的示例性电子设备的结构框图。
具体实施方式
29.下面将参照附图更详细地描述本发明的实施例。虽然附图中显示了本发明的某些实施例,然而应当理解的是,本发明可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本发明。应当理解的是,本发明的附图及实施例仅用于示例性作用,并非用于限制本发明的保护范围。
30.应当理解,本发明的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本发明的范围在此方面不受限制。
31.本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
32.需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
33.本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性
的目的,而并不是用于对这些消息或信息的范围进行限制。
34.ip地址:ip协议规定的统一的地址格式,为网络上的每一个设备分配逻辑地址。ip地址为32位的二进制数字,将32位二进制数字分成四个部分,每个部分8位数字,将各部分的二进制数字转换为十进制数值,由分隔符分隔即可得到常见的ip地址。
35.与运算:一种逻辑运算方式,参加运算的两个数据按二进制进行转换求和,两个二进制数字同时为1时与运算结果为1,否则为0。
36.子网划分:为了便于不同广播域之间的通信,通常会为一个广播域分配一个标准的ip网络,在广播域内采用子网掩码借位的方式,可以将一个标准的ip网络划分为多个子网络,以分配给广播域内不同的设备以唯一标识设备身份,提高ip地址的利用率。
37.子网掩码:由连续的1和0的32位二进制数字组成,左边为网络位,通过二进制数字“1”表示,1的数目等于网络位的长度;右边为主机位,通过二进制数字“0”表示,0的数目等于主机位的长度。将子网掩码与ip地址做与运算,即可得到各个子网的网络地址。
38.路由:路由是指路由器从一个接口上收到数据包,根据数据包的目的地址进行定向并转发到另一个接口的过程。
39.路由选择:路由器根据预设算法对各个路由进行对比,选择到达目的地的最佳路径,选择标准包括最长匹配、优先级、开销、带宽等。
40.将数据包的目的ip地址分为4段,得出每段的数字,从第一段数字开始,在多级索引表的存储空间中逐级进行对应位置的数据进行精确索引和判断,直到得出结果为止,至多索引3次,即可得到最终匹配路由条目的结果,实现高效路由选择。
41.现有的通信过程中,路由器接收到通信请求后,根据目的ip地址、路由条目的优先级等,对路由表中的全部路由条目进行计算,选择匹配长度最大的路由条目作为最佳路由进行转发,在未找到最佳路由的情况下,则按默认路由进行转发。然而,由于全部计算并选择消耗的时间成本过高,会降低业务访问效率,进而影响业务的处理效率。
42.本发明的路由的转发方法,通过改变路由的存储形式、构建多级索引表的方式,转发时逐级索引即可快速匹配目标路由,提高路由选择和转发效率,降低时间成本,提升业务处理效率。
43.以下参照附图描述本发明的方案。
44.图1是根据本发明实施例的路由的转发方法的主要流程的示意图,如图1所示,本发明的路由的转发方法包括如下步骤:
45.在本发明实施例中,本发明的路由的转发方法由路由器执行。
46.步骤s101,接收一个或多个通信请求;其中,所述通信请求包括目的ip地址。
47.在本发明实施例中,通信请求的数据包包括源ip地址和目的ip地址;其中,源ip地址是指在网络通信过程中主动发起请求的设备所对应的ip地址,目的ip地址是指在网络通信过程中被请求的设备所对应的ip地址。
48.在本发明实施例中,目的ip地址包括第一字段、第二字段、第三字段和第四字段,不同字段之间通过第一分隔符进行分隔。比如,目的ip地址为10.251.15.17,第一分隔符为“.”,相应地,第一字段的值为10、第二字段的值为251、第三字段的值为15、第四字段的值为17。
49.步骤s102,逐级对所述目的ip地址的各个字段的值和路由数据库中的各级索引表
的数组元素值进行匹配,确定各个所述字段的匹配结果;其中,所述匹配结果包括相同、不同或空。
50.在本发明实施例中,路由数据库中存储了多条路由的多级索引表,包括第一级索引表、第二级索引表和第三级索引表,每一级索引表中存储了多个数组,每个数组包括两个元素,用以表达路由的各级索引。
51.进一步地,路由包括第一字段、第二字段、第三字段、第四字段和掩码字段,第一字段至第四字段之间通过第一分隔符进行分隔,第四字段和掩码字段之间通过第二分隔符进行分隔,第二分隔符为“/”。各个数组的第一元素值为路由的第二字段至第四字段的值,数组的第二元素值为路由的掩码字段的值。比如,路由为10.251.15.17/32,第一字段的值为“10”、第二字段的值为“251”、第三字段的值为“15”、第四字段的值为“17”、掩码字段的值为“32”。
52.更进一步地,多级索引表中,后一级索引表中的一个数组与前一级索引表中的一个数组的第一元素值相对应,对于任一路由的第一字段至第四字段,前一字段的值可以确定与后一字段对应的数组在各级索引表中的存储位置。
53.在本发明实施例中,由于根据目的ip地址的前一字段的值,可以确定下一字段的数组在索引表中的存储位置,因此,路由器根据第一字段至第三字段各个字段的值,可以确定与第二字段至第四字段对应的数组在索引表中的存储位置。再将第二字段至第四字段的值与各级索引表中的各个数组的第一元素值进行对比,即可确定各个ip地址字段的匹配结果。其中,匹配结果为相同表示ip地址字段的值和索引表中对应存储位置的其中一个数组的第一元素值相同;匹配结果为不同表示ip地址字段的值和索引表中对应存储位置的全部数组的第一元素值皆不相同;匹配结果为空表示索引表中对应存储位置不存在数组。
54.在本发明实施例中,如图2所示,本发明的索引表的确定方法包括如下步骤:
55.步骤s201,获取一条或多条待存路由。
56.在本发明实施例中,比如,多条待存路由包括10.0.0.0/8、10.250.8.0/21、10.250.0.0/15、10.251.0.0/16、10.251.8.0/21、10.251.12.0/22、10.251.15.16/28。
57.步骤s202,根据所述待存路由的第一字段的值,定位第一级索引表中的第一存储位置。
58.在本发明实施例中,比如,根据多条待存路由10.0.0.0/8、10.250.8.0/21、10.250.0.0/15、10.251.0.0/16、10.251.8.0/21、10.251.12.0/22、10.251.15.16/28第一字段的值10,定位第一存储位置为第一级索引表中的第10个存储位。
59.步骤s203,判断所述待存路由的掩码字段的值是否为0,如果是,转至步骤s204;如果否,转至步骤s205。
60.步骤s204,确定所述第一存储位置的数据为空。
61.在本发明实施例中,比如,多条待存路由10.0.0.0/8、10.250.8.0/21、10.250.0.0/15、10.251.0.0/16、10.251.8.0/21、10.251.12.0/22、10.251.15.16/28的掩码字段的值非0,故而对应的第一存储位置的数据非空。
62.步骤s205,判断所述待存路由的掩码字段的值是否大于所述第二字段的最大掩码值,如果是,转至步骤s206;如果否,转至步骤s207。
63.在本发明实施例中,各个字段的最大掩码值根据字段的顺序值和掩码基数值的乘
积确定;其中,掩码基数值为8。比如,第二字段的最大掩码值=2*8=16,第三字段的最大掩码值=3*8=24,第四字段的最大掩码值=4*8=32,待存路由10.250.8.0/21、10.251.8.0/21、10.251.12.0/22、10.251.15.16/28的掩码字段的值大于第二字段的最大掩码值16,待存路由10.0.0.0/8、10.250.0.0/15、10.251.0.0/16的掩码字段的值小于等于第二字段的最大掩码值16。
64.步骤s206,将所述待存路由的第二字段的值和所述第二字段的最大掩码值以数组的形式存储于所述第一存储位置,转至步骤s210。
65.在本发明实施例中,在待存路由的掩码字段的值大于第二字段的最大掩码值的情况下,将待存路由的第二字段的值和第二字段的最大掩码值以数组的形式存储于第一存储位置;其中,第二字段的值为数组的第一元素值,第二字段的最大掩码值为数组的第二元素值。比如,将待存路由10.250.8.0/21、10.251.8.0/21、10.251.12.0/22、10.251.15.16/28的第二字段的值和第二字段的最大掩码值16以数组[250,16]、[251,16]的形式存储于第一存储位置。
[0066]
步骤s207,将所述待存路由的第二字段的值和所述掩码字段的值以数组的形式存储于所述第一存储位置,转至步骤s208。
[0067]
在本发明实施例中,在待存路由的掩码字段的值不大于第二字段的最大掩码值的情况下,将待存路由的第二字段的值和掩码字段的值以数组的形式存储于第一存储位置;其中,第二字段的值为数组的第一元素值,掩码字段的值为数组的第二元素值。比如,将待存路由10.0.0.0/8、10.250.0.0/15、10.251.0.0/16的第二字段的值和掩码字段的值以数组[0,8]、[250,15]、[251,16]的形式存储于第一存储位置。
[0068]
进一步地,基于步骤s206和步骤s207,经过去重处理,第一级索引表的第10个存储位存储了[0,8]、[250,15]、[250,16]、[251,16],如图3所示。
[0069]
更进一步地,各级索引表的存储位的总个数为8位二进制数的最大值255,也即,每一级索引表包括255个存储位。需要说明的是,索引表的存储位的总个数可以根据实际需要进行选择性设置。
[0070]
步骤s208,判断所述待存路由的第二字段的值是否为0,如果是,转至步骤s209;如果否,转至步骤s210。
[0071]
步骤s209,停止存储。
[0072]
在本发明实施例中,当掩码字段的值大于第二字段的最大掩码值时,表明待存路由的第三字段的值存在,故而继续对第三字段进行判断即可。而当掩码字段的值小于等于第二字段的最大掩码值时,根据“数字遇0且掩码字段的值小于0所在字段的最大掩码值则停止存储”的原则,需要对第二字段的值是否为0进行判断,在第二字段的值为0的情况下,仅需对第二字段的值进行存储,无需对第二字段之后的字段进行判断,此时第二字段之后的字段的值也必然为缺省字段值,故而直接停止存储,后续路由转发时直接利用缺省字段值对第二字段之后的第三字段和第四字段的值进行填充即可。比如,待存路由10.0.0.0/8的第二字段的值为0,待存路由10.250.0.0/15、10.251.0.0/16的第二字段的值不为0,故而待存路由10.0.0.0/8停止存储。
[0073]
在本发明实施例中,当掩码字段的值大于第三字段的最大掩码值时,表明待存路由的第四字段的值存在,故而继续对第四字段进行判断即可。而当掩码字段的值小于等于
第三字段的最大掩码值时,根据“数字遇0且掩码字段的值小于0所在字段的最大掩码值则停止存储”的原则,需要对第三字段的值是否为0进行判断,在第三字段的值为0的情况下,仅需对第三字段的值进行存储,无需对第三字段之后的字段进行判断,此时第三字段之后的字段的值也必然为缺省字段值,故而直接停止存储,后续路由转发时直接利用缺省字段值对第三字段之后的第四字段的值进行填充即可。比如,待存路由10.250.0.0/15、10.251.0.0/16的第三字段的值为0,待存路由10.250.8.0/21、10.251.8.0/21、10.251.12.0/22的第三字段的值不为0,故而待存路由10.250.0.0/15、10.251.0.0/16停止存储。
[0074]
步骤s210,根据所述待存路由的第二字段的值,定位所述第二级索引表中的第二存储位置。
[0075]
在本发明实施例中,比如,根据待存路由10.250.8.0/21、10.251.8.0/21、10.251.12.0/22、10.251.15.16/28、10.250.0.0/15、10.251.0.0/16的第二字段的值,定位到对应的第二存储位置为第二级索引表的第250个存储位和第251个存储位。
[0076]
步骤s211,判断所述待存路由的掩码字段的值是否大于所述第三字段的最大掩码值,如果是,转至步骤s212;如果否,转至步骤s213。
[0077]
步骤s212,将所述待存路由的第三字段的值和所述第三字段的最大掩码值以数组的形式存储于所述第二存储位置,转至步骤s215。
[0078]
在本发明实施例中,比如,待存路由10.251.15.16/28的掩码字段的值大于第三字段的最大掩码值24,将待存路由10.251.15.16/28的第三字段的值和第三字段的最大掩码值24以数组[15,24]的形式存储于第二存储位置。
[0079]
步骤s213,将所述待存路由的第三字段的值和所述掩码字段的值以数组的形式存储于所述第二存储位置,转至步骤s214。
[0080]
在本发明实施例中,比如,待存路由10.250.8.0/21、10.251.8.0/21、10.251.12.0/22、10.250.0.0/15、10.251.0.0/16的掩码字段的值小于第三字段的最大掩码值24,将待存路由10.250.8.0/21、10.251.8.0/21、10.251.12.0/22、10.250.0.0/15、10.251.0.0/16的第三字段的值和掩码字段的值以数组[8,21]、[8,21]、[12,22]、[0,15]、[0,16]的形式存储于第二存储位置。
[0081]
进一步地,基于步骤s212和步骤s213,第二级索引表的第250个存储位存储了[8,21]、[0,15],第251个存储位存储了[8,21]、[12,22]、[0,16]、[15,24],如图3所示。
[0082]
步骤s214,判断所述待存路由的第三字段的值是否为0,如果是,转至步骤s209;如果否,转至步骤s215。
[0083]
步骤s215,根据所述待存路由的第三字段的值,定位所述第三级索引表中的第三存储位置。
[0084]
在本发明实施例中,比如,根据待存路由10.251.15.16/28、10.250.8.0/21、10.251.8.0/21、10.251.12.0/22的第三字段的值,定位到对应的第三存储位置为第三级索引表的第15个存储位、第8个存储位和第12个存储位。
[0085]
步骤s216,判断所述待存路由的掩码字段的值是否大于所述第四字段的最大掩码值,如果是,转至步骤s217;如果否,转至步骤s218。
[0086]
步骤s217,将所述待存路由的第四字段的值和所述第四字段的最大掩码值以数组
的形式存储于所述第三存储位置,转至步骤s209。
[0087]
步骤s218,将所述待存路由的第四字段的值和所述掩码字段的值以数组的形式存储于所述第三存储位置,转至步骤s209。
[0088]
在本发明实施例中,比如,待存路由10.251.15.16/28、10.250.8.0/21、10.251.8.0/21、10.251.12.0/22的掩码字段的值小于第四字段的最大掩码值32,将待存路由10.251.15.16/28、10.250.8.0/21、10.251.8.0/21、10.251.12.0/22的第四字段的值和掩码字段的值以数组[16,28]、[0,21]、[0,21]、[0,22]的形式存储于第三存储位置。
[0089]
进一步地,基于步骤s217和步骤s218,第三级索引表的第15个存储位存储了[16,28],第8个存储位存储了[0,21],第12个存储位存储了[0,22],如图3所示。
[0090]
在本发明实施例中,第四字段的值存储完毕即表示待存路由已判断完毕,第一级索引表至第三级索引表生成。
[0091]
在本发明实施例中,通过本发明的索引表的生成方法,依据分类和多级索引的原理,根据获取的各条待存路由的掩码字段的值和非掩码字段的最大掩码值的对比,将待存路由的各个非掩码字段的值和掩码值以数组的形式,预先存储至多级索引表,从而在添加路由条目时即构建多级索引,以便于后续路由转发过程中逐级索引确定通信请求的目标路由,大大缩减路由时间,提高路由转发效率和数据通信效率。
[0092]
在本发明另一实施例中,由于路由器是可以根据需要的子网个数对待存路由进行划分的,因此,当获取到的待存路由不包括掩码字段时,路由器可以根据第二字段至第四段的值、结合子网掩码的位数,将待存路由可划分的子网划分结果存储至第一级索引表至第三级索引表,并且,后续目标路由生成过程中,路由器可以根据子网划分结果任意组合目标路由实现通信请求的转发。相应地,本发明的路由的转发方法包括:
[0093]
根据子网掩码的位数,对所述待存路由进行子网划分,并分别存储至所述第一级索引表至所述第三级索引表,具体地:
[0094]
分别将所述待存路由的第二字段至第四字段的值进行二进制转换,得到第一转换结果至第三转换结果;
[0095]
对所述第一转换结果至第三转换结果进行置换,得到对应的第一置换结果至第三置换结果;
[0096]
将所述第一置换结果至第三置换结果进行十进制转换,得到所述待存路由的子网划分结果,分别将所述子网划分结果中与所述第二字段至第四字段对应的划分值存储至所述第一级索引表至所述第三级索引表。
[0097]
进一步地,所述对所述第一转换结果至第三转换结果进行置换,包括:
[0098]
按照从右至左的顺序,逐个将所述第一转换结果至第三转换结果中除第一个数字1以外的数字1置换为数字0。
[0099]
所述得到所述待存路由的子网划分结果,包括:
[0100]
分别将所述十进制转换的第四转换结果至第六转换结果与第二字段至第四字段的值进行对比,确定小于等于所述第二字段至第四字段的值的第四转换结果至第六转换结果;
[0101]
将小于等于所述第二字段至第四字段的值的第四转换结果至第六转换结果、所述第二字段至第四字段的值组合为所述子网划分结果。
[0102]
比如,子网掩码的位数为32位,待存路由为10.251.15.17,分别将待存路由10.251.15.17的第二字段至第四字段的值进行二进制转换,得到的第一转换结果至第三转换结果分别为11111011、00001111、00010001;
[0103]
按照从右至左的顺序,逐个将11111011中除第一个数字1以外的数字1置换为数字0,得到的第一置换结果包括11111010、11111000、11110000、11100000、11000000、10000000,将第一置换结果进行十进制转换,得到的第四转换结果包括250、248、240、224、192、128;确定小于等于第二字段的值251的第四转换结果250、248、240、224、192、128,与第二字段的值251组合得到251、250、248、240、224、192、128,将划分值和第一字段的值组成的数组[10,251]、[10,250]、[10,248]、[10,240]、[10,224]、[10,192]、[10,128]存储至第一级索引表。
[0104]
按照从右至左的顺序,逐个将00001111中除第一个数字1以外的数字1置换为数字0,得到的第二置换结果包括00001110、00001100、00001000,将第二置换结果进行十进制转换,得到的第五转换结果包括14、12、8;确定小于等于第三字段的值15的第五转换结果14、12、8,与第三字段的值15组合得到15、14、12、8,将第三字段的划分值和第二字段的划分值组成的数组[251,15]、[251,14]、[251,12]、[251,8]、[250,15]、[250,14]、[250,12]、[250,8]、[248,15]、[248,14]、[248,12]、[248,8]、[240,15]、[240,14]、[240,12]、[240,8]、[224,15]、[224,14]、[224,12]、[224,8]、[192,15]、[192,14]、[192,12]、[192,8]、[128,15]、[128,14]、[128,12]、[128,8]存储至第二级索引表。
[0105]
按照从右至左的顺序,逐个将00010001中除第一个数字1以外的数字1置换为数字0,得到的第三置换结果包括00010000,将00010000进行十进制转换,得到第六转换结果16;确定小于等于第四字段的值17的第六转换结果16,与第四字段的值17组合得到17、16,将第四字段的划分值和第三字段的划分值组成的数组[15,17]、[15,16]、[14,17]、[14,16]、[12,17]、[12,16]、[8,17]、[8,16]存储至第三级索引表。
[0106]
步骤s103,在所述匹配结果为不同的情况下,确定与所述匹配结果对应的目标索引表。
[0107]
在本发明实施例中,通过预先构建的多级索引表,路由器逐级对目的ip地址的第二字段至第四字段的值和第一级索引表至第三级索引表中的数组的第一元素值进行匹配,确定第二字段至第四字段的匹配结果。
[0108]
步骤s104,根据所述目标索引表和所述目标索引表之前的至少一级索引表的匹配数组,生成目标路由,利用所述目标路由对所述通信请求进行转发。
[0109]
在本发明实施例中,根据匹配结果的不同,路由器根据默认路由、匹配结果对应的目标索引表、目标索引表之前的索引表的匹配数组、目的ip地址的第一字段的值、匹配结果对应的字段的值、匹配结果对应的字段之前的字段的值和缺省字段值等,按照相应的方式确定目标路由,以对通信请求进行转发。
[0110]
在本发明实施例中,如图4所示,本发明的目标路由的生成方法包括如下步骤:
[0111]
步骤s401,根据所述目的ip地址的第一字段的值,定位第一级索引表中的第一存储位置。
[0112]
在本发明实施例中,比如,目的ip地址为10.251.15.17,根据第一字段的值10,定位到第一级索引表中的第一存储位置为第10个存储位。
[0113]
步骤s402,判断所述第一存储位置的数组是否为空,如果是,转至步骤s403;如果否,转至步骤s405。
[0114]
在本发明实施例中,路由器判断第一存储位置是否存在至少一个数组,也即,路由器判断第一存储位置的数组是否为空。比如,第一级索引表的第10个存储位非空。
[0115]
步骤s403,确定所述第二字段的匹配结果为空。
[0116]
在本发明实施例中,在第一存储位置的数组为空的情况下,路由器确定第二字段的匹配结果为空。
[0117]
步骤s404,将默认路由作为所述目标路由。
[0118]
在本发明实施例中,默认路由是指预先配置的存储于路由数据库中的缺省路由,用于在路由器无法为目的ip地址匹配可用路由时进行选择,以转发通信请求。在第二字段的匹配结果为空的情况下,路由器将默认路由作为目标路由转发通信请求。其中,默认路由的为0.0.0.0/0。
[0119]
步骤s405,判断所述第二字段的值与所述第一存储位置上的各个数组的第一元素值是否相同,如果是,转至步骤s406;如果否,转至步骤s417。
[0120]
在本发明实施例中,比如,目的ip地址10.251.15.17第二字段的值251与第一级索引表的第10个存储位上的[251,16]的第一元素值相同。
[0121]
步骤s406,确定所述第二字段的匹配结果为相同。
[0122]
在本发明实施例中,在第二字段的值与第一存储位置上的任一数组的第一元素值相同的情况下,路由器确定第二字段的匹配结果为相同,匹配值为第一存储位置上与第二字段的值匹配的匹配数组。比如,确认目的ip地址10.251.15.17的第二字段的匹配结果为相同。
[0123]
步骤s407,根据所述目的ip地址的第二字段的值,定位第二级索引表中的第二存储位置。
[0124]
在本发明实施例中,比如,根据目的ip地址10.251.15.17第二字段的值251,定位第二级索引表中的第二存储位置为第251个存储位。
[0125]
步骤s408,判断所述第二存储位置的数组是否为空,如果是,转至步骤s409;如果否,转至步骤s412。
[0126]
在本发明实施例中,比如,第二级索引表的第251个存储位非空。
[0127]
步骤s409,确定所述第三字段或者第四字段的匹配结果为空。
[0128]
步骤s410,将与所述为空的匹配结果对应的索引表的前一级索引表作为所述目标索引表。
[0129]
在本发明实施例中,在第三字段的匹配结果为空的情况下,将确定出第三字段的匹配结果为空的第二级索引表的前一级索引表——即第一级索引表作为与第三字段的为空的匹配结果对应的目标索引表;在第四字段的匹配结果为空的情况下,将确定出第四字段的匹配结果为空的第三级索引表的前一级索引表——即第二级索引表作为与第四字段的为空的匹配结果对应的目标索引表。
[0130]
步骤s411,根据所述第一字段的值、所述目标索引表的匹配数组以及所述匹配结果为空的字段之前的至少一个字段的值,生成所述目标路由。
[0131]
在本发明实施例中,在第三字段的匹配结果为空的情况下,根据第一字段的值、第
一级索引表的匹配数组和第二字段的值,生成目标路由;在第四字段的匹配结果为空的情况下,根据第一字段的值、第二级索引表的匹配数组和第二字段的值、第三字段的值,生成目标路由。具体地:
[0132]
步骤s4101,根据所述匹配结果为空的字段之前的至少一个字段的值,确定所述目标路由的至少一个字段的值。
[0133]
在本发明实施例中,在第三字段的匹配结果为空的情况下,确定第二字段的值为目标路由的第二字段的值;在第四字段的匹配结果为空的情况下,确定第二字段的值为目标路由的第二字段的值、第三字段的值为目标路由的第三字段的值。
[0134]
步骤s4102,将所述目标索引表的匹配数组的第二元素值作为所述目标路由的掩码字段的值。
[0135]
在本发明实施例中,在第三字段的匹配结果为空的情况下,将第二字段的匹配数组的第二元素值作为目标路由的掩码字段的值;在第四字段的匹配结果为空的情况下,将第三字段的匹配数组的第二元素值作为目标路由的掩码字段的值。
[0136]
步骤s4103,拼接所述第一字段的值、所述目标路由的至少一个字段的值、缺省字段值和所述目标路由的掩码字段的值,得到所述目标路由。
[0137]
在本发明实施例中,由于目标路由同样包括第一字段、第二字段、第三字段、第四字段和掩码字段,因此,在确定目的ip地址的匹配结果为空的字段的个数的情况下,将缺省字段值作为匹配结果为空的字段及其之后字段的值,拼接第一字段的值、目标路由的至少一个字段的值、匹配结果为空的字段的缺省字段值、匹配结果为空的字段之后字段的缺省字段值和目标路由的掩码字段的值,得到目标路由。其中,缺省字段值为0。
[0138]
进一步地,在第三字段的匹配结果为空的情况下,第三字段和第四字段的值为缺省字段值,拼接第一字段的值、目标路由的第二字段的值、第三字段的缺省字段值、第四字段的缺省字段值和目标路由的掩码字段的值,得到目标路由;在第四字段的匹配结果为空的情况下,第四字段的值为缺省字段值,拼接第一字段的值、目标路由的第二字段和第三字段的值、第四字段的缺省字段值和目标路由的掩码字段的值,得到目标路由。
[0139]
步骤s412,判断所述第三字段的值与所述第二存储位置上的各个数组的第一元素值是否相同,如果是,转至步骤s413;如果否,转至步骤s417。
[0140]
在本发明实施例中,比如,判断目的ip地址10.251.15.17第三字段的值15与第二级索引表的第251个存储位上的[15,24]的第一元素值相同。
[0141]
步骤s413,根据所述目的ip地址的第三字段的值,定位第三级索引表中的第三存储位置。
[0142]
在本发明实施例中,比如,根据目的ip地址10.251.15.17第三字段的值15,定位第三级索引表中的第三存储位置为第15个存储位。
[0143]
步骤s414,判断所述第三存储位置的数组是否为空,如果是,转至步骤s409;如果否,转至步骤s415。
[0144]
在本发明实施例中,比如,第三级索引表的第15个存储位非空。
[0145]
步骤s415,判断所述第四字段的值与所述第三存储位置上的各个数组的第一元素值是否相同,如果是,转至步骤s416;如果否,转至步骤s417。
[0146]
在本发明实施例中,比如,目的ip地址10.251.15.17第四字段的值17与第三级索
引表的第15个存储位上的各个数组的第一元素值不同。
[0147]
步骤s416,根据所述第一字段、所述第二字段、所述第三字段、所述第四字段的值和所述第四字段的匹配数组,生成所述目标路由。
[0148]
步骤s4161,将所述匹配数组的第二元素值作为所述目标路由的掩码字段的值。
[0149]
在本发明实施例中,在第四字段的值与第三存储位置上的各个数组的第一元素值相同的情况下,将第四字段的匹配数组的第二元素值作为目标路由的掩码字段的值。
[0150]
步骤s4162,拼接所述第一字段、所述第二字段、所述第三字段、所述第四字段的值和所述目标路由的掩码字段的值,得到所述目标路由。
[0151]
步骤s417,确定所述第二字段、第三字段或者第四字段的匹配结果为不同。
[0152]
在本发明实施例中,比如,确定目的ip地址10.251.15.17第四字段的匹配结果为不同。
[0153]
步骤s418,将与所述不同的匹配结果对应的索引表作为所述目标索引表。
[0154]
在本发明实施例中,在第二字段的匹配结果为不同的情况下,将第一级索引表作为与第二字段的不同的匹配结果对应的目标索引表;在第三字段的匹配结果为不同的情况下,将第二级索引表作为与第三字段的不同的匹配结果对应的目标索引表;在第四字段的匹配结果为不同的情况下,将第三级索引表作为与第四字段的不同的匹配结果对应的目标索引表。比如,将第三级索引表作为目的ip地址10.251.15.17的目标索引表。
[0155]
步骤s419,根据所述目标索引表和所述目标索引表之前的至少一级索引表的匹配数组,生成所述目标路由。
[0156]
步骤s4191,根据所述目标索引表中与所述不同的匹配结果对应的所述存储位置包括的各个数组的第一元素值的最大值,确定所述目标路由的与所述不同的匹配结果对应的字段的值。
[0157]
在本发明实施例中,在第二字段的匹配结果为不同的情况下,根据第一级索引表中第一存储位置包括的各个数组的第一元素值的最大值,确定目标路由的第二字段的值;在第三字段的匹配结果为不同的情况下,根据第二级索引表中第二存储位置包括的各个数组的第一元素值的最大值,确定目标路由的第三字段的值;在第四字段的匹配结果为不同的情况下,根据第三级索引表中第三存储位置包括的各个数组的第一元素值的最大值,确定目标路由的第四字段的值。比如,根据第三级索引表的第15个存储位上的[16,28]的第一元素值16,确定目的ip地址10.251.15.17的目标路由的第四字段的值为16。
[0158]
步骤s4192,将与所述最大值对应的数组的第二元素值作为所述目标路由的掩码字段的值。
[0159]
在本发明实施例中,在第二字段的匹配结果为不同的情况下,将第一级索引表中与第一存储位置的第一元素值的最大值对应的数组的第二元素值作为目标路由的掩码字段的值;在第三字段的匹配结果为不同的情况下,将第二级索引表中与第二存储位置的第一元素值的最大值对应的数组的第二元素值作为目标路由的掩码字段的值;在第四字段的匹配结果为不同的情况下,将第三级索引表中与第三存储位置的第一元素值的最大值对应的数组的第二元素值作为目标路由的掩码字段的值。比如,将与16对应的数组[16,28]的第二元素值28作为目的ip地址10.251.15.17的目标路由的掩码字段的值。
[0160]
步骤s4193,拼接所述第一字段的值、所述目标路由的与所述不同的匹配结果对应
的字段的值和所述目标路由的掩码字段的值,得到所述目标路由。
[0161]
在本发明实施例中,由于目标路由同样包括第一字段、第二字段、第三字段、第四字段和掩码字段,因此,在确定目的ip地址的匹配结果为不同的字段的情况下,将缺省字段值作为匹配结果为不同的字段之后的、其余字段的值,拼接第一字段的值、与不同的匹配结果对应的字段之前字段的值、目标路由的与不同的匹配结果对应的字段的值、其余字段的缺省字段值和目标路由的掩码字段的值,得到目标路由。其中,缺省字段值为0。
[0162]
进一步地,在第二字段的匹配结果为不同的情况下,第三字段和第四字段的值为缺省字段值,由于第二字段之前不存在除第一字段以外的其他字段,因此,不考虑第二字段之前字段的值,拼接第一字段的值、目标路由的第二字段的值、第三字段的缺省字段值、第四字段的缺省字段值和目标路由的掩码字段的值,得到目标路由;在第三字段的匹配结果为不同的情况下,第四字段的值为缺省字段值,拼接第一字段的值、第二字段的值、目标路由的第三字段的值、第四字段的缺省字段值和目标路由的掩码字段的值,得到目标路由;在第四字段的匹配结果为不同的情况下,由于第四字段为最后一个字段,因此,第四字段之后不存在缺省字段值,拼接第一字段的值、第二字段的值、第三字段的值、目标路由的第四字段的值和目标路由的掩码字段的值,得到目标路由。比如,拼接目的ip地址10.251.15.17第一字段的值10、目的ip地址10.251.15.17第二字段的值251、目的ip地址10.251.15.17第三字段的值15、目标路由第四字段的值16和目标路由的掩码字段的值28,得到目的ip地址10.251.15.17的目标路由10.251.15.16/28。
[0163]
在本发明实施例中,在目标索引表存在多个数组可以与匹配字段匹配时,还包括:
[0164]
任择其一作为匹配数组;或者,根据匹配字段的顺序值与掩码基数值,从目标索引表中选择匹配数组,具体地:
[0165]
根据匹配字段的顺序值与掩码基数值确定所述匹配字段的掩码区间;
[0166]
在所述目标索引表中,选择属于所述掩码区间的第二元素值对应的数组作为所述匹配数组。
[0167]
在本发明实施例中,根据匹配字段的顺序值与掩码基数值的乘积,确定掩码区间;其中,掩码字段的值的初始值为1。比如,第一字段的顺序值为1,第二字段的顺序值为2,第三字段的顺序值为3,第四字段的顺序值为4,从1开始,第一字段的掩码区间为[1,8],第二字段的掩码区间为[9,16],第三字段的掩码区间为[17,24],第二字段的掩码区间为[25,32]。
[0168]
进一步地,比如,目标索引表为第一级索引表,第一级索引表中存在多个可以匹配的数组[251,16][251,21][251,7],匹配字段为第二字段,那么,匹配数组即为[251,16]。
[0169]
更进一步地,优选第二元素值等于匹配字段的顺序值与掩码基数值的乘积的数组作为匹配数组。比如,优选第二元素值等于8、16、24等对应的数组作为匹配数组。
[0170]
在本发明实施例中,通过本发明的目标路由的生成方法,根据目的ip地址进行分段处理,从第一级索引表开始逐级定位,组合目标路由,至多3次索引即可精准匹配最佳的目标路由,实现路由的快速选择,无需全部路由条目的复杂计算、比较,能够提高通信请求的转发效率,提升数据传输效率。
[0171]
在本发明实施例中,通过本发明的路由的转发方法,对通信请求的目的ip地址的各个字段的值和路由数据库中的各级索引表的数组元素值逐级匹配,根据匹配结果生成目
标路由,利用分类和多级索引的思想,添加路由条目时即构建多级音标,从而可以对目的ip地址逐级索引确定目标路由,降低存储成本、提高存储的精简度和清晰度,减少数据转发的时间消耗和时间成本,提高了路由转发效率。
[0172]
图5是根据本发明实施例的路由的转发装置的主要模块的示意图,如图5所示,本发明的路由的转发装置500包括:
[0173]
接收模块501,用于接收一个或多个通信请求;其中,所述通信请求包括目的ip地址。
[0174]
匹配模块502,用于逐级对所述目的ip地址的各个字段的值和路由数据库中的各级索引表的数组元素值进行匹配,确定各个所述字段的匹配结果;其中,所述匹配结果包括相同、不同或空。
[0175]
数据处理模块503,用于在所述匹配结果为不同的情况下,确定与所述匹配结果对应的目标索引表。
[0176]
生成模块504,用于根据所述目标索引表和所述目标索引表之前的至少一级索引表的匹配数组,生成目标路由,利用所述目标路由对所述通信请求进行转发。
[0177]
本发明示例性实施例还提供一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器。所述存储器存储有能够被所述至少一个处理器执行的计算机程序,所述计算机程序在被所述至少一个处理器执行时用于使所述电子设备执行根据本发明实施例的方法。
[0178]
本发明示例性实施例还提供一种存储有计算机程序的非瞬时计算机可读存储介质,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本发明实施例的方法。
[0179]
本发明示例性实施例还提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本发明实施例的方法。
[0180]
参考图6,现将描述可以作为本发明的服务器或客户端的电子设备600的结构框图,其是可以应用于本发明的各方面的硬件设备的示例。电子设备旨在表示各种形式的数字电子的计算机设备,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
[0181]
如图6所示,电子设备600包括计算单元601,其可以根据存储在只读存储器(rom)602中的计算机程序或者从存储单元606加载到随机访问存储器(ram)603中的计算机程序,来执行各种适当的动作和处理。在ram 603中,还可存储设备600操作所需的各种程序和数据。计算单元601、rom 602以及ram 603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。
[0182]
电子设备600中的多个部件连接至i/o接口605,包括:输入单元606、输出单元607、存储单元608以及通信单元609。输入单元606可以是能向电子设备600输入信息的任何类型的设备,输入单元606可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入。输出单元607可以是能呈现信息的任何类型的设备,并
且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。存储单元604可以包括但不限于磁盘、光盘。通信单元609允许电子设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙tm设备、wifi设备、wima6设备、蜂窝通信设备和/或类似物。
[0183]
计算单元601可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元601的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元601执行上文所描述的各个方法和处理。例如,在一些实施例中,方法100、200、400可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由rom 602和/或通信单元609而被载入和/或安装到电子设备600上。在一些实施例中,计算单元x01可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法100、200、400。
[0184]
用于实施本发明的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0185]
在本发明的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0186]
如本发明使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(pld)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
[0187]
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
[0188]
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据
服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
[0189]
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
技术特征:
1.一种路由的转发方法,其特征在于,包括:接收一个或多个通信请求;其中,所述通信请求包括目的ip地址;逐级对所述目的ip地址的各个字段的值和路由数据库中的各级索引表的数组元素值进行匹配,确定各个所述字段的匹配结果;其中,所述匹配结果包括相同、不同或空;在所述匹配结果为不同的情况下,确定与所述匹配结果对应的目标索引表;根据所述目标索引表和所述目标索引表之前的至少一级索引表的匹配数组,生成目标路由,利用所述目标路由对所述通信请求进行转发。2.根据权利要求1所述的路由的转发方法,其特征在于,所述目的ip地址包括第一字段、第二字段、第三字段和第四字段;所述逐级对所述目的ip地址的各个字段的值和路由数据库中的各级索引表的数组元素值进行匹配,确定各个所述字段的匹配结果,包括:根据所述目的ip地址的第一字段的值,定位第一级索引表中的第一存储位置;判断所述第一存储位置的数组是否为空,在所述第一存储位置的数组为空的情况下,确定所述第二字段的匹配结果为空,将默认路由作为所述目标路由。3.根据权利要求2所述的路由的转发方法,其特征在于,在所述第一存储位置的数组非空的情况下,还包括:根据所述目的ip地址的第二字段或者第三字段的值,定位第二级索引表中的第二存储位置和第三级索引表中的第三存储位置;逐级将所述第二字段至第四字段的值与所述第一存储位置至第三存储位置上的各个数组的第一元素值进行对比,确定所述第二字段至所述第四字段的匹配结果;在所述第二字段至第四字段的匹配结果为不同的情况下,将与所述不同的匹配结果对应的索引表作为所述目标索引表;根据所述目标索引表和所述目标索引表之前的至少一级索引表的匹配数组,生成所述目标路由。4.根据权利要求3所述的路由的转发方法,其特征在于,所述根据所述目标索引表和所述目标索引表之前的至少一级索引表的匹配数组,生成所述目标路由,包括:根据所述目标索引表中与所述不同的匹配结果对应的所述存储位置包括的各个数组的第一元素值的最大值,确定所述目标路由的与所述不同的匹配结果对应的字段的值;将与所述最大值对应的数组的第二元素值作为所述目标路由的掩码字段的值;拼接所述第一字段的值、所述目标路由的与所述不同的匹配结果对应的字段的值和所述目标路由的掩码字段的值,得到所述目标路由。5.根据权利要求3所述的路由的转发方法,其特征在于,在所述逐级将所述第二字段至第四字段的值与所述第一存储位置至第三存储位置上的各个数组的第一元素值进行对比之前,还包括:判断所述第二存储位置至所述第三存储位置的数组是否为空,在所述第二存储位置或者所述第三存储位置的数组为空的情况下,确定所述第三字段或者所述第四字段的匹配结果为空,将与所述第三字段或者所述第四字段为空的匹配结果对应的索引表的前一级索引表作为所述目标索引表;根据所述第一字段的值、所述目标索引表的匹配数组以及所述匹配结果为空的字段之前的至少一个字段的值,生成所述目标路由。
6.根据权利要求5所述的路由的转发方法,其特征在于,所述根据所述第一字段的值、所述目标索引表的匹配数组以及所述匹配结果为空的字段之前的至少一个字段的值,生成所述目标路由,包括:根据所述匹配结果为空的字段之前的至少一个字段的值,确定所述目标路由的至少一个字段的值;将所述目标索引表的匹配数组的第二元素值作为所述目标路由的掩码字段的值;拼接所述第一字段的值、所述目标路由的至少一个字段的值、缺省字段值和所述目标路由的掩码字段的值,得到所述目标路由。7.根据权利要求1所述的路由的转发方法,其特征在于,确定所述索引表,包括:获取一条或多条待存路由;根据所述待存路由的第一字段至第三字段的值,定位第一级索引表至第三级索引表中的第一存储位置至第三存储位置;顺次将所述待存路由的掩码字段的值与第二字段至第四字段的最大掩码值进行对比;在所述待存路由的掩码字段的值大于所述最大掩码值的情况下,将所述待存路由的第二字段至第四字段的值和所述第二字段至第四字段的最大掩码值以数组的形式存储于所述第一存储位置至第三存储位置。8.根据权利要求7所述的路由的转发方法,其特征在于,还包括:在所述待存路由的掩码字段的值小于等于所述最大掩码值的情况下,将所述待存路由的第二字段至第四字段的值和所述掩码字段的值以数组的形式存储于所述第一存储位置至第三存储位置。9.根据权利要求7所述的路由的转发方法,其特征在于,还包括:判断所述第二字段至第四字段的值是否为0,在任一字段的值为0的情况下,停止存储。10.一种路由的转发装置,其特征在于,包括:接收模块,用于接收一个或多个通信请求;其中,所述通信请求包括目的ip地址;匹配模块,用于逐级对所述目的ip地址的各个字段的值和路由数据库中的各级索引表的数组元素值进行匹配,确定各个所述字段的匹配结果;其中,所述匹配结果包括相同、不同或空;数据处理模块,用于在所述匹配结果为不同的情况下,确定与所述匹配结果对应的目标索引表;生成模块,用于根据所述目标索引表和所述目标索引表之前的至少一级索引表的匹配数组,生成目标路由,利用所述目标路由对所述通信请求进行转发。11.一种电子设备,包括:处理器;以及存储程序的存储器,其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行根据权利要求1-9中任一项所述的路由的转发方法。12.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-9中任一项所述的路由的转发方法。
技术总结
本发明公开了一种路由的转发方法和装置,涉及网络路由技术领域。该方法的具体实施方式包括:接收一个或多个通信请求;其中,通信请求包括目的IP地址;逐级对目的IP地址的各个字段的值和路由数据库中的各级索引表的数组元素值进行匹配,确定各个字段的匹配结果;其中,匹配结果包括相同、不同或空;在匹配结果为不同的情况下,确定与匹配结果对应的目标索引表;根据目标索引表和目标索引表之前的至少一级索引表的匹配数组,生成目标路由,利用目标路由对通信请求进行转发。该实施方式能够快速、精准地匹配目标路由,提高路由选择和转发效率,提升数据传输效率。提升数据传输效率。提升数据传输效率。
技术研发人员:魏仁杰 杜侃 苏阳 张一 陈存利
受保护的技术使用者:度小满科技(北京)有限公司
技术研发日:2023.06.16
技术公布日:2023/10/19
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/