一种报文处理方法和装置与流程

文档序号:26793346发布日期:2021-09-29 00:10阅读:98来源:国知局
一种报文处理方法和装置与流程

1.本发明涉及通信技术领域,特别是涉及一种报文处理方法和装置。


背景技术:

2.随着通信技术的快速发展,可以基于srv6(segment routing internet protocol version 6,分段路由互联网协议第6版),灵活地实现业务端到端需求。
3.一种实现方式中,可以通过一个预设比特(例如,128比特)的指令(即,srv6 policy(策略))来表达网络功能。基于srv6 policy,可以将业务需求翻译成有序的指令列表,由报文转发路径中的网络设备去执行,达到网络业务的灵活编排和按需定制。


技术实现要素:

4.本发明实施例的目的在于提供一种报文处理方法和装置,能够减少等价转发表项所占的存储空间,避免因为存储等价转发表项的资源耗尽而导致的业务中断。具体技术方案如下:
5.第一方面,为了达到上述目的,本发明实施例公开了一种报文处理方法,所述方法包括:
6.接收待处理报文;
7.判断是否存在多个用于转发所述待处理报文的等价出端口;
8.若存在多个等价出端口,获取预设fib(forwarding information base,转发信息库)表中记录的多个等价出端口对应的等价转发表项索引所指示的第一等价转发表项,以及多个等价出端口对应的转发路径表项索引所指示的第一转发路径表项;
9.获取所述第一等价转发表项对应的多个出端口表项中记录的出端口信息,作为第一出端口信息;
10.基于所述第一出端口信息,向所述第一转发路径表项中记录的下一跳设备发送所述待处理报文。
11.可选的,所述第一出端口信息包括:所述多个等价出端口对应的芯片号和物理端口号;
12.所述基于所述第一出端口信息,向所述第一转发路径表项中记录的下一跳设备转发所述待处理报文,包括:
13.基于所述芯片号对应的转发芯片,通过所述物理端口号对应的物理端口,向所述第一转发路径表项中记录的下一跳设备发送所述待处理报文。
14.可选的,在所述基于所述芯片号对应的转发芯片,通过所述物理端口号对应的物理端口,向所述第一转发路径表项中记录的下一跳设备发送所述待处理报文之前,所述方法还包括:
15.在所述预设fib表中,查找所述多个等价出端口对应的隧道表项索引,作为第一隧道表项索引;
16.获取所述第一隧道表项索引所指示的隧道表项中记录的所述物理端口号对应的统计标识和限速标识;
17.所述基于所述芯片号对应的转发芯片,通过所述物理端口号对应的物理端口,向所述第一转发路径表项中记录的下一跳设备发送所述待处理报文,包括:
18.基于所述芯片号对应的转发芯片,针对每一物理端口号,按照该物理端口号对应的限速标识所表示的报文发送速率,通过该物理端口号对应的物理端口,向所述第一转发路径表项中记录的下一跳设备发送所述待处理报文;
19.在所述基于所述芯片号对应的转发芯片,通过所述物理端口号对应的物理端口,向所述第一转发路径表项中记录的下一跳设备发送所述待处理报文之后,所述方法还包括:
20.针对每一物理端口号,按照该物理端口号对应的统计标识所表示的报文统计方式,对通过该物理端口号对应的物理端口发送的报文进行统计。
21.可选的,所述获取所述第一等价转发表项对应的多个出端口表项中记录的出端口信息,作为第一出端口信息,包括:
22.获取所述第一等价转发表项中记录的多个出端口表项索引,作为第一出端口表项索引;
23.分别获取各个第一出端口表项索引所指示的出端口表项中记录的出端口信息,作为第一出端口信息。
24.可选的,所述基于所述第一出端口信息,向所述第一转发路径表项中记录的下一跳设备发送所述待处理报文,包括:
25.将所述第一转发路径表项封装在所述待处理报文中,并基于所述第一出端口信息,向所述第一转发路径表项中记录的下一跳设备发送封装后的待处理报文,以使所述第一转发路径表项中记录的下一跳设备基于所述第一转发路径表项转发所述待处理报文。
26.可选的,所述预设fib表中还记录有目的ip地址、出端口和下一跳设备的对应关系;
27.所述判断是否存在多个用于转发所述待处理报文的等价出端口,包括:
28.在所述预设fib表中查询与所述待处理报文的目的ip地址对应的出端口;
29.若查询到的出端口中存在代价相同的多个出端口,且该多个出端口对应同一个下一跳设备,则确定存在多个用于转发所述待处理报文的等价出端口。
30.可选的,所述方法还包括:
31.若不存在多个等价出端口,则获取用于转发所述待处理报文的出端口对应的出端口表项中记录的出端口信息,作为第二出端口信息,以及获取所述预设fib表中记录的用于转发所述待处理报文的出端口对应的转发路径表项索引所指示的第二转发路径表项;
32.基于所述第二出端口信息,向所述第二转发路径表项中记录的下一跳设备发送所述待处理报文。
33.第二方面,为了达到上述目的,本发明实施例公开了一种报文处理装置,所述装置包括:
34.待处理报文获取模块,用于接收待处理报文;
35.判断模块,用于判断是否存在多个用于转发所述待处理报文的等价出端口;
36.表项获取模块,用于若存在多个等价出端口,获取预设转发信息库fib表中记录的多个等价出端口对应的等价转发表项索引所指示的第一等价转发表项,以及多个等价出端口对应的转发路径表项索引所指示的第一转发路径表项;
37.第一出端口信息获取模块,用于获取所述第一等价转发表项对应的多个出端口表项中记录的出端口信息,作为第一出端口信息;
38.第一发送模块,用于基于所述第一出端口信息,向所述第一转发路径表项中记录的下一跳设备发送所述待处理报文。
39.可选的,所述第一出端口信息包括:所述多个等价出端口对应的芯片号和物理端口号;
40.所述第一发送模块,具体用于基于所述芯片号对应的转发芯片,通过所述物理端口号对应的物理端口,向所述第一转发路径表项中记录的下一跳设备发送所述待处理报文。
41.可选的,所述装置还包括:
42.第一隧道表项索引获取模块,用于在所述基于所述芯片号对应的转发芯片,通过所述物理端口号对应的物理端口,向所述第一转发路径表项中记录的下一跳设备发送所述待处理报文之前,在所述预设fib表中,查找所述多个等价出端口对应的隧道表项索引,作为第一隧道表项索引;
43.标识获取模块,用于获取所述第一隧道表项索引所指示的隧道表项中记录的所述物理端口号对应的统计标识和限速标识;
44.所述第一发送模块,具体用于基于所述芯片号对应的转发芯片,针对每一物理端口号,按照该物理端口号对应的限速标识所表示的报文发送速率,通过该物理端口号对应的物理端口,向所述第一转发路径表项中记录的下一跳设备发送所述待处理报文;
45.所述装置还包括:
46.统计模块,用于在所述基于所述芯片号对应的转发芯片,通过所述物理端口号对应的物理端口,向所述第一转发路径表项中记录的下一跳设备发送所述待处理报文之后,针对每一物理端口号,按照该物理端口号对应的统计标识所表示的报文统计方式,对通过该物理端口号对应的物理端口发送的报文进行统计。
47.可选的,所述第一出端口信息获取模块,包括:
48.第一出端口表项索引获取子模块,用于获取所述第一等价转发表项中记录的多个出端口表项索引,作为第一出端口表项索引;
49.第一出端口信息获取子模块,用于分别获取各个第一出端口表项索引所指示的出端口表项中记录的出端口信息,作为第一出端口信息。
50.可选的,所述第一发送模块,具体用于将所述第一转发路径表项封装在所述待处理报文中,并基于所述第一出端口信息,向所述第一转发路径表项中记录的下一跳设备发送封装后的待处理报文,以使所述第一转发路径表项中记录的下一跳设备基于所述第一转发路径表项转发所述待处理报文。
51.可选的,所述预设fib表中还记录有目的ip地址、出端口和下一跳设备的对应关系;
52.所述判断模块,包括:
53.查询子模块,用于在所述预设fib表中查询与所述待处理报文的目的ip地址对应的出端口;
54.确定子模块,用于若查询到的出端口中存在代价相同的多个出端口,且该多个出端口对应同一个下一跳设备,则确定存在多个用于转发所述待处理报文的等价出端口。
55.可选的,所述装置还包括:
56.转发信息获取模块,用于若不存在多个等价出端口,则获取用于转发所述待处理报文的出端口对应的出端口表项中记录的出端口信息,作为第二出端口信息,以及获取所述预设fib表中记录的用于转发所述待处理报文的出端口对应的转发路径表项索引所指示的第二转发路径表项;
57.第二发送模块,用于基于所述第二出端口信息,向所述第二转发路径表项中记录的下一跳设备发送所述待处理报文。
58.在本发明实施的另一方面,为了达到上述目的,本发明实施例还公开了一种网络设备,所述网络设备包括处理器、通信接口、存储器和通信总线,其中,所述处理器,所述通信接口,所述存储器通过所述通信总线完成相互间的通信;
59.所述存储器,用于存放计算机程序;
60.所述处理器,用于执行所述存储器上所存放的程序时,实现如上述第一方面所述的报文处理方法。
61.在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面所述的报文处理方法。
62.在本发明实施的又一方面,本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的报文处理方法。
63.本发明实施例有益效果:
64.本发明实施例提供的报文处理方法,可以接收待处理报文;判断是否存在多个用于转发待处理报文的等价出端口;若存在多个等价出端口,获取预设fib表中记录的多个等价出端口对应的等价转发表项索引所指示的第一等价转发表项,以及多个等价出端口对应的转发路径表项索引所指示的第一转发路径表项;获取第一等价转发表项对应的出端口表项中记录的多个出端口信息,作为第一出端口信息;基于第一出端口信息,向第一转发路径表项中记录的下一跳设备发送待处理报文。
65.基于等价转发表项记录出端口的信息,在fib表中记录转发路径的信息,即,将转发路径表项与出端口表项独立开分别记录。针对多个不同的转发路径,即使各自对应的转发路径表项不同,若首个下一跳设备相同,表明该多个不同的转发路径对应的出端口信息相同,也就可以用同一等价转发表项记录各个转发路径对应的出端口信息,实现该多个不同的转发路径共用同一个等价转发表项,进而,能够减少等价转发表项的数目,避免因为存储等价转发表项的资源耗尽而导致的业务中断。
66.当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
67.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
68.图1为本发明实施例提供的一种报文处理方法的流程图;
69.图2为本发明实施例提供的另一种报文处理方法的流程图;
70.图3为本发明实施例提供的另一种报文处理方法的流程图;
71.图4为本发明实施例提供的另一种报文处理方法的流程图;
72.图5为本发明实施例提供的另一种报文处理方法的流程图;
73.图6为本发明实施例提供的另一种报文处理方法的流程图;
74.图7为本发明实施例提供的一种报文处理装置的结构图;
75.图8为本发明实施例提供的一种网络设备的结构图。
具体实施方式
76.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本技术所获得的所有其他实施例,都属于本发明保护的范围。
77.本发明实施例提供了一种报文处理方法,该方法可以应用于网络设备,该网络设备可以为路由器。一种实现方式中,该网络设备可以为ipv6 sr隧道的源节点(即首节点)。ipv6 sr隧道也就是从源节点到尾节点之间的转发路径。
78.参见图1,图1为本发明实施例提供的一种报文处理方法的流程图,该方法可以包括以下步骤:
79.s101:接收待处理报文。
80.s102:判断是否存在多个用于转发待处理报文的等价出端口。
81.s103:若存在多个等价出端口,获取预设fib表中记录的多个等价出端口对应的等价转发表项索引所指示的第一等价转发表项,以及多个等价出端口对应的转发路径表项索引所指示的第一转发路径表项。
82.s104:获取第一等价转发表项对应的多个出端口表项中记录的出端口信息,作为第一出端口信息。
83.s105:基于第一出端口信息,向第一转发路径表项中记录的下一跳设备发送待处理报文。
84.本发明实施例提供的报文处理方法,基于等价转发表项记录出端口的信息,在fib表中记录转发路径的信息,即,将转发路径表项与出端口表项独立开分别记录。针对多个不同的转发路径,即使各自对应的转发路径表项不同,若首个下一跳设备相同,表明该多个不同的转发路径对应的出端口信息相同,也就可以用同一等价转发表项记录各个转发路径对应的出端口信息。即,实现该多个不同的转发路径共用同一个等价转发表项,进而,能够减少对应的等价转发表项的数目,避免因为存储等价转发表项的资源耗尽而导致的业务中
断。
85.针对步骤s103,预设fib表中可以记录出端口、等价转发表项索引和转发路径表项索引的对应关系。该出端口为逻辑端口。
86.等价转发表项索引用于指示对应的等价转发表项,例如,等价转发表项索引可以为对应的等价转发表项的存储地址的偏移量,基于该偏移量,可以获取对应的等价转发表项。
87.转发路径表项索引用于指示对应的转发路径表项,例如,转发路径表项索引可以为对应的转发路径表项的存储地址的偏移量,基于该偏移量,可以获取对应的转发路径表项。
88.在一个实施例中,等价转发表项可以为ecmp(equal cost multipath,等价路由)表项。
89.一个等价转发表项可以对应多个出端口表项。例如,一个等价转发表项中可以记录多个出端口表项的索引(即出端口表项索引)。
90.在预设fib表中,多个等价出端口对应的等价转发表项索引相同,即,多个等价出端口对应的等价转发表项相同。
91.多个等价出端口对应的转发路径不同,也就是说,多个等价出端口对应的转发路径表项不同,即,各自对应的转发路径表项索引也不同。
92.针对步骤s104,为了进一步降低等价转发表项所占的存储空间,可以在等价转发表项中记录对应的出端口表项的索引,以根据该索引获取对应的出端口表项。相应的,参见图2,在图1的基础上,上述s104可以包括以下步骤:
93.s1041:获取第一等价转发表项中记录的多个出端口表项索引,作为第一出端口表项索引。
94.s1042:分别获取各个第一出端口表项索引所指示的出端口表项中记录的出端口信息,作为第一出端口信息。
95.在本发明实施例中,出端口表项索引用于指示对应的出端口表项,例如,出端口表项索引可以为对应的出端口表项的存储地址的偏移量,基于该偏移量,可以获取对应的出端口表项。
96.在一个实施例中,获取的每一个第一出端口信息包括:一个等价出端口对应的芯片号和物理端口号。相应的,在图1的基础上,参见图3,上述步骤s105可以包括以下步骤:
97.s1051:基于芯片号对应的转发芯片,通过物理端口号对应的物理端口,向第一转发路径表项中记录的下一跳设备发送待处理报文。
98.在本发明实施例中,网络设备中可以包含多个转发芯片,以及多个物理端口。因此,在确定出每一第一出端口信息后,可以基于其中的芯片号,确定用于转发待处理报文的转发芯片;基于其中的物理端口号,确定用转发待处理报文的物理端口。进而,可以基于确定出的转发芯片,通过确定出的物理端口,向第一转发路径表项中记录的下一跳设备发送待处理报文。
99.在一个实施例中,网络设备可以基于负载均衡策略,通过各个物理端口和转发芯片,向下一跳设备发送待处理报文。
100.在一个实施例中,还可以基于上述预设fib表,实现网络设备的物理端口的限速和
报文信息的统计。
101.参见图4,在图3的基础上,在上述步骤s1051之前,该方法还可以包括以下步骤:
102.s106:在预设fib表中,查找多个等价出端口对应的隧道表项索引,作为第一隧道表项索引。
103.s107:获取第一隧道表项索引所指示的隧道表项中记录的物理端口号对应的统计标识和限速标识。
104.相应的,上述步骤s1051可以包括以下步骤:
105.s10511:基于芯片号对应的转发芯片,针对每一物理端口号,按照该物理端口号对应的限速标识所表示的报文发送速率,通过该物理端口号对应的物理端口,向第一转发路径表项中记录的下一跳设备发送待处理报文。
106.相应的,在上述步骤s10511之后,该方法还可以包括以下步骤:
107.s108:针对每一物理端口号,按照该物理端口号对应的统计标识所表示的报文统计方式,对通过该物理端口号对应的物理端口发送的报文进行统计。
108.在本发明实施例中,预设fib表中还可以记录隧道表项索引。隧道表项索引用于指示对应的隧道表项,例如,隧道表项索引可以为对应的隧道表项的存储地址的偏移量,基于该偏移量,可以获取对应的隧道表项。
109.在获取到对应的隧道表项索引,可以查询其指示的隧道表项,以获取隧道表项中记录的各个物理端口号对应的统计标识和限速标识。
110.相应的,可以按照上述物理端口号对应的限速标识所表示的报文发送速率,通过各物理端口向下一跳设备发送待处理报文。
111.报文统计方式可以由技术人员根据业务需求进行设置。例如,可以统计通过物理端口发送的报文的总大小,或者,也可以统计通过物理端口发送的携带有指定报文参数的报文的大小,或者,也可以统计通过物理端口发送的报文的总数目,或者,也可以统计通过物理端口发送的携带有指定报文参数的报文的数目。
112.在一个实施例中,参见图5,在图1的基础上,上述步骤s105可以包括以下步骤:
113.s1052:将第一转发路径表项封装在待处理报文中,并基于第一出端口信息,向第一转发路径表项中记录的下一跳设备发送封装后的待处理报文,以使第一转发路径表项中记录的下一跳设备基于第一转发路径表项转发待处理报文。
114.在本发明实施例中,转发路径表项中可以记录转发路径中各节点的sid(segment id,段标识)。例如,节点的sid可以用节点的ipv6地址表示。
115.一种实现方式中,可以在原始三层数据报文前面添加新的srh(segment identifier header,段标识头)。
116.srh可以包含:segments left(段左):表示需要查看的下一个sid的编号,初始取值为n

1(n表示ipv6 sr隧道中从源节点到尾节点的跳数),该字段每经过一个节点减1。
117.segment list:即,sid列表。按照转发路径中从尾节点到首节点的顺序进行排列,即segment list[0]表示转发路径中最后一个节点的sid,segment list[1]表示转发路径中的倒数第二个节点的sid,以此类推。
[0118]
相应的,网络设备可以将封装后的待处理报文,发送至转发路径中的下一设备(可以称为第二设备)。
[0119]
第二设备接收到封装后的待处理报文,可以提取segments left字段的数值,并减去1。然后,第二设备可以查询segment list[n

2]对应的地址,即下一设备(可以称为第三设备)的地址,并将封装后的待处理报文发送至第三设备。
[0120]
同理,第三设备接收到封装后的待处理报文,可以提取segments left字段的数值,并减去1。然后,第三设备可以查询segment list[n

3]对应的地址,即下一设备(可以称为第四设备)的地址,并将封装后的待处理报文发送至第四设备。
[0121]
以此类推,直至尾节点接收到封装后的待处理报文,提取segments left字段的数值为0,然后,对封装后的待处理报文进行解封装,删除封装的报文头,根据原始的待处理报文的目的ip地址进行转发。
[0122]
在一个实施例中,上述预设fib表中还记录有目的ip地址、出端口和下一跳设备的对应关系。相应的,上述步骤s102可以包括以下步骤:
[0123]
步骤一:在预设fib表中查询与待处理报文的目的ip地址对应的出端口。
[0124]
步骤二:若查询到的出端口中存在代价相同的多个出端口,且该多个出端口对应同一个下一跳设备,则确定存在多个用于转发待处理报文的等价出端口。
[0125]
在本发明实施例中,出端口的代价可以根据出端口的优先级确定,每一出端口的优先级可以由技术人员预先设置。该多个出端口对应的同一个下一跳设备,也就是上述第一转发路径表项中记录的下一跳设备。
[0126]
在一个实施例中,参见图6,在图1的基础上,该方法还可以包括以下步骤:
[0127]
s109:若不存在多个等价出端口,则获取用于转发待处理报文的出端口对应的出端口表项中记录的出端口信息,作为第二出端口信息,以及获取预设fib表中记录的用于转发待处理报文的出端口对应的转发路径表项索引所指示的第二转发路径表项。
[0128]
s1010:基于第二出端口信息,向第二转发路径表项中记录的下一跳设备发送待处理报文。
[0129]
在本发明实施例中,针对不存在等价出端口的情况,则不需要设置对应的等价转发表项。
[0130]
因此,若不存在多个等价出端口,则可以从fib中查询用于转发待处理报文的出端口(可以称为第二出端口)。然后,可以在本地存储的各个出端口表项中,确定该第二出端口对应的出端口表项,并获取该出端口表项中记录的出端口信息(即第二出端口信息)。
[0131]
另外,还可以获取预设fib表中记录的该第二出端口对应的转发路径表项索引,并获取该转发路径表项索引所指示的转发路径表项(即第二转发路径表项)。进而,可以基于第二出端口信息,向第二转发路径表项中记录的下一跳设备发送待处理报文。
[0132]
一种实现方式中,第二出端口信息包括:第二出端口对应的芯片号和物理端口号,因此,也就可以基于该芯片号对应的转发芯片,通过该物理端口号对应的物理端口,向第二转发路径表项中记录的下一跳设备发送待处理报文。
[0133]
针对通过sdn(software defined network,软件定义网络)控制器计算srv6 policy,并向节点下发的场景。一个srv6 policy对应一个转发路径,且各转发路径中针对源节点的下一跳设备(即转发路径中的首个下一跳设备)相同,因此,可以基于本发明实施例提供的报文处理方法,使得该多个不同的转发路径共用同一个等价转发表项,进而,能够减少对应的等价转发表项的数目,避免因为存储等价转发表项的资源耗尽而导致的业务中
断。
[0134]
基于相同的发明构思,本发明实施例还提供了一种报文处理装置,参见图7,图7为本发明实施例提供的一种报文处理装置的结构图,包括:
[0135]
待处理报文获取模块701,用于接收待处理报文;
[0136]
判断模块702,用于判断是否存在多个用于转发所述待处理报文的等价出端口;
[0137]
表项获取模块703,用于若存在多个等价出端口,获取预设转发信息库fib表中记录的多个等价出端口对应的等价转发表项索引所指示的第一等价转发表项,以及多个等价出端口对应的转发路径表项索引所指示的第一转发路径表项;
[0138]
第一出端口信息获取模块704,用于获取所述第一等价转发表项对应的多个出端口表项中记录的出端口信息,作为第一出端口信息;
[0139]
第一发送模块705,用于基于所述第一出端口信息,向所述第一转发路径表项中记录的下一跳设备发送所述待处理报文。
[0140]
可选的,所述第一出端口信息包括:所述多个等价出端口对应的芯片号和物理端口号;
[0141]
所述第一发送模块705,具体用于基于所述芯片号对应的转发芯片,通过所述物理端口号对应的物理端口,向所述第一转发路径表项中记录的下一跳设备发送所述待处理报文。
[0142]
可选的,所述装置还包括:
[0143]
第一隧道表项索引获取模块,用于在所述基于所述芯片号对应的转发芯片,通过所述物理端口号对应的物理端口,向所述第一转发路径表项中记录的下一跳设备发送所述待处理报文之前,在所述预设fib表中,查找所述多个等价出端口对应的隧道表项索引,作为第一隧道表项索引;
[0144]
标识获取模块,用于获取所述第一隧道表项索引所指示的隧道表项中记录的所述物理端口号对应的统计标识和限速标识;
[0145]
所述第一发送模块705,具体用于基于所述芯片号对应的转发芯片,针对每一物理端口号,按照该物理端口号对应的限速标识所表示的报文发送速率,通过该物理端口号对应的物理端口,向所述第一转发路径表项中记录的下一跳设备发送所述待处理报文;
[0146]
所述装置还包括:
[0147]
统计模块,用于在所述基于所述芯片号对应的转发芯片,通过所述物理端口号对应的物理端口,向所述第一转发路径表项中记录的下一跳设备发送所述待处理报文之后,针对每一物理端口号,按照该物理端口号对应的统计标识所表示的报文统计方式,对通过该物理端口号对应的物理端口发送的报文进行统计。
[0148]
可选的,所述第一出端口信息获取模块704,包括:
[0149]
第一出端口表项索引获取子模块,用于获取所述第一等价转发表项中记录的多个出端口表项索引,作为第一出端口表项索引;
[0150]
第一出端口信息获取子模块,用于分别获取各个第一出端口表项索引所指示的出端口表项中记录的出端口信息,作为第一出端口信息。
[0151]
可选的,所述第一发送模块705,具体用于将所述第一转发路径表项封装在所述待处理报文中,并基于所述第一出端口信息,向所述第一转发路径表项中记录的下一跳设备
发送封装后的待处理报文,以使所述第一转发路径表项中记录的下一跳设备基于所述第一转发路径表项转发所述待处理报文。
[0152]
可选的,所述预设fib表中还记录有目的ip地址、出端口和下一跳设备的对应关系;
[0153]
所述判断模块702,包括:
[0154]
查询子模块,用于在所述预设fib表中查询与所述待处理报文的目的ip地址对应的出端口;
[0155]
确定子模块,用于若查询到的出端口中存在代价相同的多个出端口,且该多个出端口对应同一个下一跳设备,则确定存在多个用于转发所述待处理报文的等价出端口。
[0156]
可选的,所述装置还包括:
[0157]
转发信息获取模块,用于若不存在多个等价出端口,则获取用于转发所述待处理报文的出端口对应的出端口表项中记录的出端口信息,作为第二出端口信息,以及获取所述预设fib表中记录的用于转发所述待处理报文的出端口对应的转发路径表项索引所指示的第二转发路径表项;
[0158]
第二发送模块,用于基于所述第二出端口信息,向所述第二转发路径表项中记录的下一跳设备发送所述待处理报文。
[0159]
本发明实施例还提供了一种网络设备,如图8所示,包括处理器801、通信接口802、存储器803和通信总线804,其中,处理器801,通信接口802,存储器803通过通信总线804完成相互间的通信,
[0160]
存储器803,用于存放计算机程序;
[0161]
处理器801,用于执行存储器803上所存放的程序时,实现如下步骤:
[0162]
接收待处理报文;
[0163]
判断所述是否存在多个用于转发所述待处理报文的等价出端口;
[0164]
若存在多个等价出端口,获取预设转发信息库fib表中记录的多个等价出端口对应的等价转发表项索引所指示的第一等价转发表项,以及多个等价出端口对应的转发路径表项索引所指示的第一转发路径表项;
[0165]
获取所述第一等价转发表项对应的多个出端口表项中记录的出端口信息,作为第一出端口信息;
[0166]
基于所述第一出端口信息,向所述第一转发路径表项中记录的下一跳设备发送所述待处理报文。
[0167]
上述网络设备提到的通信总线可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0168]
通信接口用于上述网络设备与其他设备之间的通信。
[0169]
存储器可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non

volatile memory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
[0170]
上述的处理器可以是通用处理器,包括中央处理器(central processing unit,
cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field

programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0171]
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一报文处理方法的步骤。
[0172]
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一报文处理方法。
[0173]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
[0174]
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0175]
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、网络设备、计算机可读存储介质,以及计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0176]
以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1