报文转发方法、设备、介质及产品与流程

文档序号:31125932发布日期:2022-08-13 03:25阅读:76来源:国知局
报文转发方法、设备、介质及产品与流程

1.本公开实施例涉及通信技术领域,具体涉及一种报文转发方法、设备、介质及产品。


背景技术:

2.在相关技术中,数据报文在网络中传递时,需要经过各种各样的服务节点(service node),才能保证网络能够按照设计要求,提供给用户安全、快速、稳定的网络服务。这些服务节点,典型的有防火墙、负载均衡、入侵检测等。把网络流量按照服务逻辑所要求的既定的顺序,经过这些服务节点,这就是所谓的服务链。当前已有服务链实现方式是在服务节点内设置一个全局的编排层,负责sid(segment id,段标识)的分配管理、路由发布、跨vpc间的流量打通等,控制面方案复杂,服务节点跨vpc时用xni(cross network interface,互联网络接口)串连,编排复杂。


技术实现要素:

3.本公开实施例提供一种报文转发方法、设备、介质及产品。
4.第一方面,本公开实施例中提供了一种报文转发方法。
5.具体的,所述报文转发方法,应用于编排节点,包括:
6.从第一用户端接口接收数据报文,解封装所述数据报文,得到所述数据报文的服务需求,所述服务需求用于指示需要为所述数据报文提供的网络服务及服务顺序;
7.根据所述服务需求编排服务路径,得到服务链信息,所述服务链信息包括所述数据报文要经历的服务节点的对外接口地址;
8.将所述服务链路信息封装在所述数据报文中;
9.按照所述服务链信息中第一个服务节点的对外接口地址,将封装有所述服务链路信息的数据报文发送至所述第一个服务节点。
10.结合第一方面,本公开在第一方面的第一种实现方式中,其中,所述方法还包括:
11.解封装所述数据报文,得到所述数据报文的租户信息;
12.在封装所述服务链路信息时,将所述租户信息封装在所述数据报文中。
13.第二方面,本公开实施例中提供了一种报文转发方法,
14.具体的,该报文转发方法,应用于服务节点,包括:
15.从对外接口接收数据报文,解封装所述数据报文,得到服务链信息,所述服务链信息包括所述数据报文要经历的服务节点的对外接口地址;
16.基于所述服务链信息判断本服务节点是否为尾服务节点;
17.响应于所述本服务节点为尾服务节点,从所述尾服务节点对应的第二用户端接口将所述数据报文转发至用户端。
18.结合第二方面,本公开在第二方面的第一种实现方式中,其中,所述方法还包括:
19.响应于所述本服务节点不是尾服务节点,判断本服务节点是否存在挂载服务节
点;
20.响应于本服务节点不存在挂载服务节点,基于本服务节点提供的服务对所述数据报文进行处理后,将所述服务链信息封装在处理后的数据报文中;
21.按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述服务链信息的数据报文发送至下一跳服务节点。
22.结合第二方面和第一种实现方式,本公开在第二方面的第二种实现方式中,其中,所述方法还包括:
23.响应于本服务节点存在挂载服务节点,将所述服务链信息缓存在本服务节点,将所述数据报文转发至所述挂载服务节点;
24.接收所述挂载服务节点处理后的报文,将所述服务链信息封装在所述挂载服务节点处理后的报文中;
25.按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述服务链信息的报文发送至下一跳服务节点。
26.结合第二方面和上述各种实现方式,本公开在第二方面的第三种实现方式中,其中,所述方法还包括:在封装所述服务链路信息时,将所述数据报文的租户信息封装在所述数据报文中。
27.结合第二方面和上述各种实现方式,本公开在第二方面的第四种实现方式中,其中,所述按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述报文头的报文发送至下一跳服务节点,包括:
28.确定所述下一跳服务节点与本服务节点是否位于同一物理节点;
29.在所述下一跳服务节点与本服务节点位于同一物理节点时,在所述同一物理节点内按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述报文头的报文发送至下一跳服务节点;
30.在所述下一跳服务节点与本服务节点位于不同物理节点时,在不同物理节点之间按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述报文头的报文发送至下一跳服务节点。
31.第三方面,本公开实施例中提供了一种报文转发方法。
32.具体的,所述报文转发方法,包括:
33.编排节点执行第一方面所述方法中的步骤;
34.服务节点执行第二方面所述方法中的步骤。
35.第四方面,本公开实施例中提供了一种报文转发装置。
36.具体的,所述报文转发装置,包括:
37.第一解封装模块,被配置为从第一用户端接口接收数据报文,解封装所述数据报文,得到所述数据报文的服务需求,所述服务需求用于指示需要为所述数据报文提供的网络服务及服务顺序;
38.路径编排模块,被配置为根据所述服务需求编排服务路径,得到服务链信息,所述服务链信息包括所述数据报文要经历的服务节点的对外接口地址;
39.第一封装模块,被配置为将所述服务链路信息封装在所述数据报文中;
40.第一发送模块,被配置为按照所述服务链信息中第一个服务节点的对外接口地
址,将封装有所述服务链路信息的数据报文发送至所述第一个服务节点。
41.结合第四方面,本公开在第四方面的第一种实现方式中,其中,所述装置还包括:
42.第一解封装模块,还被配置为解封装所述数据报文,得到所述数据报文的租户信息;
43.第一封装模块,还被配置为在封装所述服务链路信息时,将所述租户信息封装在所述数据报文中。
44.结合第四方面及其第一种实现方式,本公开在第四方面的第二种实现方式中,其中,封装有所述服务链路信息的数据报文包括段路由互联网协议第6版srv6报文,所述服务链信息和所述租户信息封装在所述srv6报文的段路由报文头srh中。
45.第五方面,本公开实施例中提供了一种报文转发装置,
46.具体的,该报文转发装置包括:
47.第二解封装模块,被配置为从对外接口接收数据报文,解封装所述数据报文,得到服务链信息,所述服务链信息包括所述数据报文要经历的服务节点的对外接口地址;
48.第一判断模块,被配置为基于所述服务链信息判断本服务节点是否为尾服务节点;
49.第二发送模块,被配置为响应于所述本服务节点为尾服务节点,从所述尾服务节点对应的第二用户端接口将所述数据报文转发至用户端。
50.结合第五方面,本公开在第五方面的第一种实现方式中,其中,所述装置还包括:
51.第二判断模块,被配置为响应于所述本服务节点不是尾服务节点,判断本服务节点是否存在挂载服务节点;
52.第二封装模块,被配置为响应于本服务节点不存在挂载服务节点,基于本服务节点提供的服务对所述数据报文进行处理后,将所述服务链信息封装在处理后的数据报文中;
53.第三发送模块,被配置为按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述服务链信息的数据报文发送至下一跳服务节点。
54.结合第五方面和第一种实现方式,本公开在第五方面的第二种实现方式中,其中,所述装置还包括:
55.第四发送模块,被配置为响应于本服务节点存在挂载服务节点,将所述服务链信息缓存在本服务节点,将所述数据报文转发至所述挂载服务节点;
56.接收模块,被配置为接收所述挂载服务节点处理后的报文,将所述服务链信息封装在所述挂载服务节点处理后的报文中;
57.第五发送模块,被配置为按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述服务链信息的报文发送至下一跳服务节点。
58.结合第五方面和上述各种实现方式,本公开在第五方面的第三种实现方式中,其中,第二封装模块,还被配置为在封装所述服务链路信息时,将所述数据报文的租户信息封装在所述数据报文中。
59.结合第五方面和上述各种实现方式,本公开在第五方面的第四种实现方式中,其中,所述第三发送模块还被配置为:
60.确定所述下一跳服务节点与本服务节点是否位于同一物理节点;
61.在所述下一跳服务节点与本服务节点位于同一物理节点时,在所述同一物理节点内按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述报文头的报文发送至下一跳服务节点;
62.在所述下一跳服务节点与本服务节点位于不同物理节点时,在不同物理节点之间按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述报文头的报文发送至下一跳服务节点。
63.第六方面,本公开实施例中提供了一种报文转发系统。
64.具体的,所述报文转发系统,包括:编排节点和服务节点;
65.所述编排节点,被配置为执行第一方面所述方法中的步骤;
66.所述服务节点,被配置为执行第二方面所述方法中的步骤。
67.第七方面,本公开实施例提供了一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条支持上述装置执行上述方法的计算机指令,所述处理器被配置为用于执行所述存储器中存储的计算机指令。
68.第八方面,本公开实施例提供了一种计算机可读存储介质,其上存储有计算机指令,该计算机指令被处理器执行时实现上述任一方面所述的方法步骤。
69.第九方面,本公开实施例提供了一种计算机程序产品,包括计算机程序/指令,其中,该计算机程序/指令被处理器执行时实现上述任一方面所述的方法步骤。
70.本公开实施例提供的技术方案可包括以下有益效果:
71.上述技术方案可以为每个服务节点配置唯一对外暴露的对外接口,使用一独立的编排节点,该编排节点从第一用户端接口接收数据报文时,可以根据所述数据报文中的服务需求为该数据报文编排服务路径,得到服务链信息,所述服务链信息包括所述数据报文要经历的服务节点的对外接口地址,并将该服务链信息封装在数据报文内发送至服务路径中的第一个服务节点,这样后续的服务节点只需要按照该服务链信息进行转发,而不需要在每个服务节点设置编排层来为每个服务器节点进行转发的控制管理,控制面弱化,无sid管理,避免了复杂的sid管理、分配、路由发布等逻辑,节约了大量的资源;每个服务节点对外只暴露一个对外接口,在进行服务路径编排时,下一跳为哪个服务节点只需要编排其对应的对外接口即可,与现有的任意两个服务节点之间采用xni串连相比,更方便进行服务路径的编排。
72.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开实施例。
附图说明
73.结合附图,通过以下非限制性实施方式的详细描述,本公开实施例的其它特征、目的和优点将变得更加明显。在附图中:
74.图1示出根据本公开一实施方式的应用于编排节点的报文转发方法的流程图;
75.图2示出根据本公开一实施方式的应用于服务节点的报文转发方法的流程图;
76.图3示出根据本公开一实施方式的报文转发方法的整体流程示意图;
77.图4示出根据本公开一实施方式的报文转发的系统架构场景示意图;
78.图5示出根据本公开一实施方式的应用于编排节点的报文转发装置的结构框图;
79.图6示出根据本公开一实施方式的应用于服务节点的报文转发装置的结构框图;
80.图7示出根据本公开一实施方式的报文转发系统的结构框图;
81.图8示出根据本公开一实施方式的电子设备的结构框图;
82.图9是适于用来实现根据本公开实施例所述方法的计算机系统的结构示意图。
具体实施方式
83.下文中,将参考附图详细描述本公开实施例的示例性实施方式,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。
84.在本公开实施例中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
85.另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开实施例。
86.上文提及,在相关技术中,数据报文在网络中传递时,需要经过各种各样的服务节点(service node),才能保证网络能够按照设计要求,提供给用户安全、快速、稳定的网络服务。这些服务节点,典型的有防火墙、负载均衡、入侵检测等。把网络流量按照服务逻辑所要求的既定的顺序,经过这些服务节点,这就是所谓的服务链。当前已有服务链实现方式是设置一个全局的编排层,负责sid的分配管理、路由发布、跨vpc间的流量打通等,控制面方案复杂,服务节点跨vpc时用xni(cross network interface,互联网络接口)串连,编排复杂,示例的,假设有服务节点a、b、c、d,则使用xni串联时,需要在服务节点a和b之间设置xni1、服务节点a和c之间设置xni2、服务节点a和d之间设置xni3、服务节点b和c之间设置xni4、服务节点b和d之间设置xni5、服务节点c和d之间设置xni6,需要设置6个xni来串联各服务节点。
87.考虑到上述问题,本公开提出一种报文转发,可以为每个服务节点配置唯一对外暴露的对外接口,使用一独立的编排节点,该编排节点从第一用户端接口接收数据报文时,可以根据所述数据报文中的服务需求为该数据报文编排服务路径,得到服务链信息,所述服务链信息包括所述数据报文要经历的服务节点的对外接口地址,并将该服务链信息封装在数据报文内发送至服务路径中的第一个服务节点,这样后续的服务节点只需要按照该服务链信息进行转发,而不需要设置编排层来为每个服务器节点进行转发的控制管理,控制面弱化,无sid管理,避免了复杂的sid管理、分配、路由发布等逻辑,节约了大量的资源;每个服务节点对外只暴露一个对外接口,如只需要为配置为服务节点a、b、c、d配置对外接口a、b、c和d即可,在进行服务路径编排时,下一跳为哪个服务节点只需要编排其对应的对外接口即可,与现有的两个服务节点之间采用xni串连相比,更方便进行服务路径的编排。
88.图1示出根据本公开一实施方式的应用于编排节点的报文转发方法的流程图,如图1所示,所述报文转发方法包括以下步骤s101-s104:
89.在步骤s101中,从第一用户端接口接收数据报文,解封装所述数据报文,得到所述数据报文的服务需求,所述服务需求用于指示需要为所述数据报文提供的网络服务及服务顺序;
90.在步骤s102中,根据所述服务需求编排服务路径,得到服务链信息,所述服务链信息包括所述数据报文要经历的服务节点的对外接口地址;
91.在步骤s103中,将所述服务链路信息封装在所述数据报文中;
92.在步骤s104中,按照所述服务链信息中第一个服务节点的对外接口地址,将封装有所述服务链路信息的数据报文发送至所述第一个服务节点。
93.在本公开一实施方式中,所述报文转发方法可适用于云网络,如nfv(network functions virtualization,网络功能虚拟化)网络,可以由云网络中的编排节点来执行,该编排节点属于该云网络中一个独立的vpc(virtual private cloud,虚拟私有云)。这里需要说明的是本公开中所述的节点可以是一个vpc。
94.在本公开一实施方式中,该第一用户端接口为uni(user network interface,用户网络接口),指的是用户侧vpc与网络侧vpc之间的跨vpc绑定接口,用于承载用户流量,用户侧vpc指的是用户侧节点,网络侧vpc指的是网络侧的节点,网络侧vpc可以是这里的编排节点,用户侧节点可以通过该第一用户端接口向该编排节点发送数据报文。
95.在本公开一实施方式中,编排节点从第一用户端接口接收数据报文时,可以解封装该数据报文得到该数据报文中的服务需求,该服务需求用于指示需要为该数据报文提供的网络服务及服务顺序,编排节点可以基于该服务需求为该数据报文编排服务路径,该服务路径指的是该数据报文要经过的服务节点及顺序,假设该数据报文的服务需求是需要依次进行该网络服务可以是负载均衡服务和防火墙服务,则该编排节点可以为该数据报文编排服务路径为依次经过负载均衡服务节点和防火墙服务节点。
96.在本公开一实施方式中,可以为网络中各服务节点配置唯一对外暴露的对外接口,比如说可以是sys(system,系统)bonding(绑定)eni(elastic network interface,弹性网卡)接口,该eni指的是绑定云网络内云服务节点的一种弹性网络接口。可以将各服务节点的地址部署在服务节点对应的对外接口上作为对外接口地址,示例的,可以将该各服务节点的ipv6(internet protocol version 6,互联网协议第6版)地址部署在该sys bonding eni接口上作为对外接口地址。
97.在本公开一实施方式中,编排节点在为该数据报文编排好服务路径后,可以基于该服务路径上的服务节点的对外接口地址,形成服务链信息,该服务链信息用于为服务节点指示下一跳地址。
98.在本公开一实施方式中,在获取服务链信息后,编排节点可以为将该服务链信息封装在该数据报文中后发送给该服务路径中的第一个服务节点。
99.在本公开一实施方式中,数据报文通常都包括报文头和待传输的数据,本公开中所述的解封装和封装指的是对报文头的解封装和封装,示例的,编排节点从第一用户端接口接收数据报文是vlan(virtual local area network,虚拟局域网)_uni报文头,此时,该编排节点可以解封装该vlan-uni报文头,得到该服务需求。在封装该服务链路信息时,需要将该报文封装为srv6报文,可以将该服务链信息封装在srv6报文的srv6(segment routing ipv6,段路由ipv6)报文头中,该srv6报文头包括ipv6报文头和srh(segment routing header,sr报文头),该服务链信息可以封装在srh内。
100.在本公开一实施方式中,编排节点在封装好服务链信息后,就可以将该封装有服务链信息的数据报文内发送至服务路径中的第一个服务节点,这样后续的服务节点只需要
按照该服务链信息进行下一跳转发即可,而不需要设置编排层来为每个服务器节点进行转发的控制管理,控制面弱化,无sid管理,避免了复杂的sid管理、分配、路由发布等逻辑,节约了大量的资源;每个服务节点对外只暴露一个对外接口,只需要为配置为服务节点a、b、c、d配置对外接口a、b、c和d即可,在进行服务路径编排时,下一跳为哪个服务节点只需要编排其对应的对外接口即可,与现有的两个服务节点之间采用xni串连,更方便进行服务路径的编排。而且,本实施例为各个服务节点配置独立的对外接口,支持多云场景下的服务链编排能力,且在转发过程中携带有服务链信息,支持带状态的服务链信息转发。
101.在一种可能的实施方式中,上述报文转发方法还可以包括以下步骤:
102.解封装所述数据报文,得到所述数据报文的租户信息;
103.在封装所述服务链路信息时,将所述租户信息封装在所述数据报文中。
104.在该实施方式中,该数据报文中还携带有租户信息,编排节点从第一用户端接口接收数据报文在进行解封装时,还会从该得到所述数据报文的租户信息,该编排节点在封装该服务链路信息时可以将所述租户信息也封装在所述数据报文中,实现多租户需求,支持多租。
105.其中,封装有所述服务链路信息的数据报文包括srv6报文,所述服务链信息和所述租户信息封装在所述srv6报文的段路由报文头srh中,示例的,可以将该租户信息封装在srv6报文头中srh的最后的64bit metadata(元数据)中,该srh最后的64bit metadata信息为租户信息。
106.图2示出根据本公开一实施方式的应用于服务节点的报文转发方法的流程图,如图2所示,所述报文转发方法包括以下步骤s201-s203:
107.在步骤s201中,从对外接口接收数据报文,解封装所述数据报文,得到所述服务链信息,所述服务链信息包括所述数据报文要经历的服务节点的对外接口地址;
108.在步骤s202中,基于所述服务链信息判断本服务节点是否为尾服务节点;
109.在步骤s203中,响应于所述本服务节点为尾服务节点,从所述尾服务节点对应的第二用户端接口将所述数据报文转发至用户端。
110.在本公开一实施方式中,所述报文转发方法可适用于云网络,如nfv(network functions virtualization,网络功能虚拟化)网络,可以由云网络中的服务节点来执行,该服务节点属于该云网络中可以为用户的数据报文提供各种服务的vpc,示例的,在nfv网络中,该服务节点可以是alb(application load balancer,应用型负载均衡)vpc,nlb(network load balance,网路负载均衡)vpc、gwlb(gateway load balance,网关负载均衡)vpc、nat(network address translation,网络地址转换)vpc、fw(firewall,防火墙)vpc等服务节点。
111.在本公开一实施方式中,编排节点可以基于服务链信息中第一个服务节点的对外接口地址,将封装有所述服务链路信息的数据报文发送至所述第一个服务节点,第一个服务节点为该数据报文进行服务后,可以继续按照该服务链信息中第一个服务节点的下一个服务节点的对外接口地址,将封装有所述服务链路信息的数据报文发送至该第一个服务节点的下一个服务节点,如此,就可以按照该服务链信息上的顺序,将该数据报文依次传输至各服务节点,使用相应的网络服务。
112.在本公开一实施方式中,本服务节点可以从本服务节点唯一对外暴露的对外接口
接收数据报文,解封装该数据报文的报文头如srv6报文头,得到服务链信息,所述服务链信息包括所述数据报文要经历的服务节点的对外接口地址;本服务节点可以基于所述服务链信息判断本服务节点是否为尾服务节点,这里的尾服务节点指的是服务路径中的最后一个服务节点。如果不是尾服务节点可以为该数据报文提供相应的服务后,继续将该服务链信息封装在该数据报文中转发至本服务节点的下一服务节点。如果本服务节点为尾服务节点,则本服务节点可以查找本服务节点的对外接口与该第二用户端之间的第二用户端接口,然后通过该第二用户端接口将所述数据报文转发至用户端,该第二用户端接口为uni接口,该第一用户端接口为源用户端接口,该第二用户端接口为目的用户端接口,该第二用户端接口和该第一用户端接口可以是同一用户端接口,也可以不同的用户端接口,在此不做限制。
113.示例的,该服务链信息设置srv6报文中,该srv6报文头中设置有两个关键信息,首先是对外接口地址如ipv6地址形式的segment list(段列表),segment list进行有序排列,就构成了服务链的服务路径,另外一个关键字段是segment left(sl),segment left是一个指针,它指示当前活跃的segment list。segment left的最小取值是0,最大取值是segment list的个数减1,假设服务链信息包括顺序排列的ipv6地址1、ipv6地址2和ipv6地址3,则segment list的个数为3,该sl的最大值为2,最小值为0,该segment list包括segment list[2]:ipv6地址1;segment list[1]:ipv6地址2;segment list[0]:ipv6地址3;本服务节点接收到数据报文,得到sl=2时,指示本服务节点的对外接口地址为segment list[2]:ipv6地址1,基于本服务节点提供的服务对所述数据报文进行处理后,可以将该sl进行减1操作,将指针偏移向下一跳地址segment list[1]:ipv6地址2,然后就可以将该数据报文向下一个节点即ipv6地址2对应的服务节点进行转发。故本服务节点解封装该srv6报文头后,可以将该基于该srv6报文头中的sl确定该报文是否为尾服务节点,如果该sl不为0,则表明本服务节点不是尾服务节点,如果该sl为0,则表明本服务节点为尾服务节点。
[0114]
在本公开一可能的实施方式中,上述报文转发方法还包括:
[0115]
响应于所述本服务节点不是尾服务节点,判断本服务节点是否存在挂载服务节点;
[0116]
响应于本服务节点不存在挂载服务节点,基于本服务节点提供的服务对所述数据报文进行处理后,将所述服务链信息封装在处理后的数据报文中;
[0117]
按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述服务链信息的数据报文发送至下一跳服务节点。
[0118]
在该实施方式中,若本服务节点不是尾服务节点,此时需要判断本服务节点是否存在挂载服务节点,挂载服务节点指的是接入到本服务节点中的另一服务节点,可以为本服务节点增加其他服务,示例的,可以在gwlb服务节点下挂载fw服务节点,为该gwlb服务节点增加防火墙服务,数据报文经过该gwlb服务节点时,可以为该数据报文提供gwlb服务和防火墙服务,这里也可以将第三方的服务节点接入到本服务节点当中。
[0119]
在该实施方式中,如果本服务节点不存在挂载服务节点,本服务节点就可以基于本服务节点提供的服务对所述数据报文进行处理后,为处理后的报文封装相应的srv6报文头,该srv6报文头中携带有服务链信息;然后就可以按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述报文头的报文发送至下一跳服务节点。
[0120]
在本公开一可能的实施方式中,上述报文转发方法还包括:
[0121]
响应于本服务节点存在挂载服务节点,将所述服务链信息缓存在本服务节点,将所述数据报文转发至所述挂载服务节点;
[0122]
接收所述挂载服务节点处理后的报文,将所述服务链信息封装在所述挂载服务节点处理后的报文中;
[0123]
按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述服务链信息的报文发送至下一跳服务节点。
[0124]
在该实施方式中,如果本服务节点存在挂载服务节点,则本服务节点需要将所述服务链信息缓存在本服务节点,基于本服务节点提供的服务对所述数据报文进行处理后,转发给挂载服务节点进行处理,挂载服务节点处理后就返回所述挂载服务节点处理后的报文,本服务节点可以将缓存的服务链信息封装在所述挂载服务节点处理后的报文中,然后按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述服务链信息的报文发送至下一跳服务节点。
[0125]
示例的,本服务节点与挂载服务节点之间通过网络侧接口进行报文转发,比如nni(network to network interface,网络结点接口),该nni接口为网络侧vpc之间的跨vpc bonding eni接口,本服务节点通过nni挂接挂载服务节点,比如gwlb服务节点可以通过nni挂接防火墙服务节点。本服务节点在向挂载服务节点转发数据报文时,可以为该数据报文封装vlan-uni+ipv4+udp(user datagram protocol,用户数据报协议)+geneve(generic network virtualization encapsulation,网络虚拟化基础协议)报文头,然后,本服务节点就可以通过该本服务节点与挂载服务节点之间的nni接口向该挂载服务节点发送数据报文,挂载服务节点基于本挂载服务节点提供的服务对所述数据报文进行处理后返回给本服务节点,本服务节点再将缓存的服务链信息封装在srv6(segment routing ipv6,段路由ipv6)报文头中,发送至本服务节点的下一跳服务节点。
[0126]
本实施方式提供的报文转发方法可以实现第三方网元或其他挂载服务节点的透明接入,如可以在nat服务节点下挂接fw服务节点(可以是第三方的防火墙也可以是本方的防火墙),增加防火墙能力,用户侧发送的数据报文在经过该nat服务节点就可以直接使用其增加的防火墙,可以在用户无感状态下增设各服务,实现产品组合、升级、降配、变更等无缝切换能力,且可以集成第三方服务网元完善生态。在进行多服务编排时,可以使用sr技术编排,串连多个服务节点形成的服务链来提供服务。路由引流配置简化,仅需要编排节点进行按照各服务节点的对外接口进行不同服务的编排,避免复杂的路由配置。而且本公开中的服务节点不需要具有路由决策能力,可以是普通服务节点或流量分析类服务节点,只需要按照编排节点编排的路径进行转发即可。
[0127]
在本公开一可能的实施方式中,上述报文转发方法还包括以下步骤:
[0128]
在封装所述服务链路信息时,将所述数据报文的租户信息封装在所述数据报文中。
[0129]
在该实施方式中,数据报文中还携带有租户信息,服务节点从对外接口接收数据报文在进行解封装时,还会从报文头中得到所述数据报文的租户信息,本服务节点在封装该服务链路信息时可以将所述租户信息也封装在所述数据报文中,实现多租户需求,支持多租。
[0130]
其中,封装有所述服务链路信息的数据报文包括srv6报文,所述服务链信息和所述租户信息封装在所述srv6报文的段路由报文头srh中,示例的,可以将该租户信息封装在srv6报文头中srh的最后的64bit metadata(元数据)中,该srv6报文头中最后的64bit metadata信息为租户信息。
[0131]
在本公开一种可能的实施方式中,所述按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述报文头的报文发送至下一跳服务节点,包括:
[0132]
确定所述下一跳服务节点与本服务节点是否位于同一物理节点;
[0133]
在所述下一跳服务节点与本服务节点位于同一物理节点时,在所述同一物理节点内按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述报文头的报文发送至下一跳服务节点;
[0134]
在所述下一跳服务节点与本服务节点位于不同物理节点时,在不同物理节点之间按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述报文头的报文发送至下一跳服务节点。
[0135]
在该实施方式中,物理节点是一独立运行、拥有自己的计算、存储和网络能力的物理机,服务节点是运行在物理节点上的虚拟节点,每个物理节点上可以运行一个或多个服务节点,若下一跳服务节点与本服务节点位于同一物理节点时,可以在所述同一物理节点内按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述报文头的报文发送至下一跳服务节点;不必从本物理节点发出后再返回本物理节点,节约转发时间,提高转发效率。在所述下一跳服务节点与本服务节点位于不同物理节点时,要从本物理节点发出到达下一跳服务节点所在的物理节点后按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述报文头的报文发送至下一跳服务节点。
[0136]
图3示出根据本公开一实施方式的报文转发方法的整体流程示意图。该方法应用于配置有编排节点和服务节点的系统,如图3所示,该方法可以包括以下步骤:
[0137]
在步骤s301中,编排节点从第一用户端接口接收数据报文,解封装所述数据报文,得到所述数据报文的服务需求,根据所述服务需求编排服务路径,得到服务链信息,将所述服务链路信息封装在所述数据报文中;按照所述服务链信息中第一个服务节点的对外接口地址,将封装有所述服务链路信息的数据报文发送至所述第一个服务节点。
[0138]
在步骤s302中,服务节点从对外接口接收所述编排节点或其他服务节点发送的数据报文,解封装所述数据报文,得到服务链信息,所述服务链信息包括所述数据报文要经历的服务节点的对外接口地址;基于所述服务链信息判断本服务节点是否为尾服务节点;响应于所述本服务节点为尾服务节点,从所述尾服务节点对应的第二用户端接口将所述数据报文转发至用户端,响应于所述本服务节点不是尾服务节点,基于本服务节点提供的服务对所述数据报文进行处理后,将所述服务链信息封装在处理后的数据报文中;按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述服务链信息的数据报文发送至下一跳服务节点。
[0139]
在本公开的一实施方式中,所述服务需求用于指示需要为所述数据报文提供的网络服务及服务顺序;所述服务链信息包括所述数据报文要经历的服务节点的对外接口地址。
[0140]
在本公开一种可能的实施方式中,上述报文转发方法还包括以下步骤:
[0141]
响应于本服务节点存在挂载服务节点,将所述服务链信息缓存在本服务节点,将所述数据报文转发至所述挂载服务节点;
[0142]
接收所述挂载服务节点处理后的报文,将所述服务链信息封装在所述挂载服务节点处理后的报文中;
[0143]
按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述服务链信息的报文发送至下一跳服务节点。
[0144]
在本公开一种可能的实施方式中,所述方法还包括:
[0145]
在封装所述服务链路信息时,将所述数据报文的租户信息封装在所述数据报文中。
[0146]
在本公开一种可能的实施方式中,所述按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述报文头的报文发送至下一跳服务节点,包括:
[0147]
确定所述下一跳服务节点与本服务节点是否位于同一物理节点;
[0148]
在所述下一跳服务节点与本服务节点位于同一物理节点时,在所述同一物理节点内按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述报文头的报文发送至下一跳服务节点;
[0149]
在所述下一跳服务节点与本服务节点位于不同物理节点时,在不同物理节点之间按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述报文头的报文发送至下一跳服务节点。
[0150]
本实施例中报文转发方法与上述报文转发方法对应一致,具体细节可以参见上述报文转发方法的描述,在此不再赘述。
[0151]
示例的,图4示出根据本公开一实施方式的报文转发的系统架构场景示意图,如图4所示,该转发系统包括源用户节点、编排节点、服务节点1、服务节点2、挂接在该服务节点2上的挂载服务节点3、服务节点4、目的用户节点,这里的节点即为nfv网络中的vpc。用户节点与网络侧的各节点如编排节点或服务节点之间通过接口1即uni接口进行数据转发,每个服务节点都配置有唯一的对外接口即sys bonding eni接口,两个服务节点之间通过各自sys bonding eni接口进行报文转发,服务节点与其挂接的服务节点之间通过跨vpc的接口2即nni接口进行报文转发。
[0152]
如图4所示,源用户节点通过uni接口向编排节点发送vlan_uni数据报文,该编排节点解封装该vlan-uni报文头,得到该服务需求和租户信息,该服务需求用于指示需要为该数据报文提供的网络服务依次为服务节点1提供的服务、服务节点2提供的服务,编排节点可以基于该服务需求为该数据报文编排服务路径为服务节点1

服务节点2

服务节点4,得到服务链信息为服务节点1的sys bonding eni接口地址ipv6地址1,服务节点2的sys bonding eni接口地址ipv6地址2,服务节点4的sys bonding eni接口地址ipv6地址3,编排节点可以将该服务链信息封装在srv6报文头中的srh内,封装后的信息为:sl=2时,segment list[2]:ipv6地址1,segment list[1]:ipv6地址2,segment list[0]:ipv6地址3,即指针sl=,2指示下一跳的sys bonding eni接口地址为segment list[2]:ipv6地址1。编排节点可以将封装有该srv6报文头的srv6报文发送至该ipv6地址1对应的服务节点1,服务节点1接收到该srv6报文后,解封装该srv6报文头,得到sl为2,表明服务节点1不是尾服务节点,此时,服务节点1确定本服务节点是否存在挂载服务节点,由于本服务节点不存在
挂载服务节点,故服务节点1基于本服务节点提供的服务对所述数据报文进行处理后,将sl减1后,将该sl和segment list作为服务链信息封装在srv6报文头中,发送至指针sl=1指示下一跳的sys bonding eni接口地址为segment list[1]:ipv6地址2对应的服务节点2,服务节点2接收到该srv6报文后,解封装该srv6报文头,得到sl为1,表明服务节点不是尾服务节点,此时,服务节点2确定本服务节点是否存在挂载服务节点,由于本服务节点挂接有挂载服务节点3,故服务节点2需要将所述服务链信息即srh报文头的信息缓存在本服务节点,基于本服务节点提供的服务对所述数据报文进行处理后,为该数据报文封装vlan-uni+ipv4+udp+geneve报文头后通过nni接口转发给挂载服务节点3进行处理,挂载服务节点3处理后就通过nni接口返回所述挂载服务节点3处理后的报文,服务节点2可以将缓存的服务链信息封装在所述挂载服务节点3处理后的报文中,然后将sl减1后,将该sl和segment list作为服务链信息封装在srv6报文头中,发送至指针sl=0指示下一跳的sys bonding eni接口地址为segment list[0]:ipv6地址3对应的服务节点4,服务节点4接收到该srv6报文后,解封装该srv6报文头,得到sl为4,表明服务节点4是尾服务节点,此时,可以查找该服务节点4与目的用户节点之间的uni接口,然后通过该uni接口将所述数据报文转发至目的用户节点。
[0153]
下述为本公开装置实施例,可以用于执行本公开方法实施例。
[0154]
图5示出根据本公开一实施方式的应用于编排节点的报文转发装置的结构框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图5所示,所述报文转发装置包括:
[0155]
第一解封装模块501,被配置为从第一用户端接口接收数据报文,解封装所述数据报文,得到所述数据报文的服务需求,所述服务需求用于指示需要为所述数据报文提供的网络服务及服务顺序;
[0156]
路径编排模块502,被配置为根据所述服务需求编排服务路径,得到服务链信息,所述服务链信息包括所述数据报文要经历的服务节点的对外接口地址;
[0157]
第一封装模块503,被配置为将所述服务链路信息封装在所述数据报文中;
[0158]
第一发送模块504,被配置为按照所述服务链信息中第一个服务节点的对外接口地址,将封装有所述服务链路信息的数据报文发送至所述第一个服务节点。
[0159]
在一种可能的实施方式中,第一解封装模块501,还被配置为解封装所述数据报文,得到所述数据报文的租户信息;
[0160]
第一封装模块503,还被配置为在封装所述服务链路信息时,将所述租户信息封装在所述数据报文中。
[0161]
在一种可能的实施方式中,封装有所述服务链路信息的数据报文包括段路由互联网协议第6版srv6报文,所述服务链信息和所述租户信息封装在所述srv6报文的段路由报文头srh中。
[0162]
图6示出根据本公开一实施方式的应用于服务节点的报文转发装置的结构框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图6所示,所述报文转发装置包括:
[0163]
第二解封装模块601,被配置为从对外接口接收数据报文,解封装所述数据报文,得到服务链信息,所述服务链信息包括所述数据报文要经历的服务节点的对外接口地址;
[0164]
第一判断模块602,被配置为基于所述服务链信息判断本服务节点是否为尾服务节点;
[0165]
第二发送模块603,被配置为响应于所述本服务节点为尾服务节点,从所述尾服务节点对应的第二用户端接口将所述数据报文转发至用户端。
[0166]
在一种可能的实施方式中,所述装置还包括:
[0167]
第二判断模块,被配置为响应于所述本服务节点不是尾服务节点,判断本服务节点是否存在挂载服务节点;
[0168]
第二封装模块,被配置为响应于本服务节点不存在挂载服务节点,基于本服务节点提供的服务对所述数据报文进行处理后,将所述服务链信息封装在处理后的数据报文中;
[0169]
第三发送模块,被配置为按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述服务链信息的数据报文发送至下一跳服务节点。
[0170]
在一种可能的实施方式中,所述装置还包括:
[0171]
第四发送模块,被配置为响应于本服务节点存在挂载服务节点,将所述服务链信息缓存在本服务节点,将所述数据报文转发至所述挂载服务节点;
[0172]
接收模块,被配置为接收所述挂载服务节点处理后的报文,将所述服务链信息封装在所述挂载服务节点处理后的报文中;
[0173]
第五发送模块,被配置为按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述服务链信息的报文发送至下一跳服务节点。
[0174]
在一种可能的实施方式中,第二封装模块,还被配置为在封装所述服务链路信息时,将所述数据报文的租户信息封装在所述数据报文中。
[0175]
在一种可能的实施方式中,所述第三发送模块还被配置为:
[0176]
确定所述下一跳服务节点与本服务节点是否位于同一物理节点;
[0177]
在所述下一跳服务节点与本服务节点位于同一物理节点时,在所述同一物理节点内按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述报文头的报文发送至下一跳服务节点;
[0178]
在所述下一跳服务节点与本服务节点位于不同物理节点时,在不同物理节点之间按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述报文头的报文发送至下一跳服务节点。
[0179]
在一种可能的实施方式中,封装有所述服务链路信息的数据报文包括段路由互联网协议第6版srv6报文,所述服务链信息和所述租户信息封装在所述srv6报文的段路由报文头srh中。
[0180]
本实施例中报文转发装置与上述报文转发方法对应一致,具体细节可以参见上述报文转发方法的描述,在此不再赘述。
[0181]
图7示出根据本公开一实施方式的报文转发系统的结构框图,该系统可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图7所示,所述报文转发系统700包括:编排节点701和服务节点702;
[0182]
编排节点701,被配置为:从第一用户端接口接收数据报文,解封装所述数据报文,得到所述数据报文的服务需求,所述服务需求用于指示需要为所述数据报文提供的网络服
务及服务顺序;根据所述服务需求编排服务路径,得到服务链信息,所述服务链信息包括所述数据报文要经历的服务节点的对外接口地址;将所述服务链路信息封装在所述数据报文中;按照所述服务链信息中第一个服务节点的对外接口地址,将封装有所述服务链路信息的数据报文发送至所述第一个服务节点。
[0183]
服务节点702,被配置为:从对外接口接收编排节点或其他服务节点发送的数据报文,解封装所述数据报文,得到服务链信息,所述服务链信息包括所述数据报文要经历的服务节点的对外接口地址;基于所述服务链信息判断本服务节点是否为尾服务节点;响应于所述本服务节点为尾服务节点,从所述尾服务节点对应的第二用户端接口将所述数据报文转发至用户端。
[0184]
在一种可能的实施方式中,该服务节点702还可以被配置为:响应于所述本服务节点不是尾服务节点,判断本服务节点是否存在挂载服务节点;响应于本服务节点不存在挂载服务节点,基于本服务节点提供的服务对所述数据报文进行处理后,将所述服务链信息封装在处理后的数据报文中;按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述服务链信息的数据报文发送至下一跳服务节点。
[0185]
在一种可能的实施方式中,该服务节点702还可以被配置为:响应于本服务节点存在挂载服务节点,将所述服务链信息缓存在本服务节点,将所述数据报文转发至所述挂载服务节点;接收所述挂载服务节点处理后的报文,将所述服务链信息封装在所述挂载服务节点处理后的报文中;按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述服务链信息的报文发送至下一跳服务节点。
[0186]
在一种可能的实施方式中,该服务节点702还可以被配置为:在封装所述服务链路信息时,将所述数据报文的租户信息封装在所述数据报文中。
[0187]
在一种可能的实施方式中,该服务节点702中所述按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述报文头的报文发送至下一跳服务节点的部分被配置为:
[0188]
确定所述下一跳服务节点与本服务节点是否位于同一物理节点;
[0189]
在所述下一跳服务节点与本服务节点位于同一物理节点时,在所述同一物理节点内按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述报文头的报文发送至下一跳服务节点;
[0190]
在所述下一跳服务节点与本服务节点位于不同物理节点时,在不同物理节点之间按照所述服务链信息中本服务节点的下一跳服务节点的对外接口地址,将封装有所述报文头的报文发送至下一跳服务节点。
[0191]
本公开还公开了一种电子设备,图8示出根据本公开一实施方式的电子设备的结构框图,如图8所示,所述电子设备800包括存储器801和处理器802;其中,
[0192]
所述存储器801用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器802执行以实现上述方法步骤。
[0193]
图9是适于用来实现根据本公开实施例所述方法的计算机系统的结构示意图。
[0194]
如图9所示,计算机系统900包括处理单元901,其可以根据存储在只读存储器(rom)902中的程序或者从存储部分908加载到随机访问存储器(ram)903中的程序而执行上述实施方式中的各种处理。在ram903中,还存储有系统900操作所需的各种程序和数据。处
理单元901、rom902以及ram903通过总线904彼此相连。输入/输出(i/o)接口905也连接至总线904。
[0195]
以下部件连接至i/o接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至i/o接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。其中,所述处理单元901可实现为cpu、gpu、tpu、fpga、npu等处理单元。
[0196]
特别地,根据本公开的实施方式,上文描述的方法可以被实现为计算机软件程序。例如,本公开的实施方式包括一种计算机程序产品,其包括有形地包含在及其可读介质上的计算机程序,所述计算机程序包含用于执行上文描述的方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。
[0197]
附图中的流程图和框图,图示了按照本公开各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0198]
描述于本公开实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
[0199]
作为另一方面,本公开实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开实施例的方法。
[0200]
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开实施例中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1