一种会话处理方法、装置、设备及负载均衡系统与流程

未命名 07-12 阅读:135 评论:0


1.本公开涉及网络接入技术领域,尤其是涉及一种会话处理方法、装置、设备及负载均衡系统。


背景技术:

2.接入网关(gateway,gw)或称负载均衡器,一般是以集群的方式部署在一个机架顶部(top of rack,tor)网络集群中,并且,在接入网关中会话高可用(high availbility,ha)使用的是“会话全集群同步方案”,也就是同一个会话在一个gw集群,除主节点(例如创建会话的节点)外,在其他所有节点都有一个备份会话。但随着5g和物联网(internet of things,iot)来临,单个服务比如虚拟业务ip(virtual ip,vip)或虚拟业务端口(virtual port,vport)的会话数也会越来越多,随着整个集群中会话数量的增多,当前使用的“会话全集群同步方案”已不能满足需求。
3.另外,由于单台gw的内存容量的限制,也会影响会话高可用特性的容器化部署。


技术实现要素:

4.本公开实施例提出一种会话处理方法、装置、设备及负载均衡系统,用以解决支持会话高可用条件下,会话数随节点数的增加而线性增长的问题,具体地,公开了如下技术方案:
5.第一方面,本公开实施例公开了一种会话处理方法,方法应用于一种负载均衡系统,系统包括第一网络层和第二网络层,第一网络层和第二网络层隧道连接,第一网络层中包括第一节点,第二网络层中包括至少一个慢速处理组spg,方法包括:
6.第一节点向第二网络层的第一spg中的主节点发送第一隧道报文,第一隧道报文中包括外部的第一原始报文的正向流五元组,接收主节点根据正向流五元组反馈的第二隧道报文;解析第二隧道报文,得到反向流五元组和第一原始报文,根据第一原始报文查找会话,以及补齐查找到会话的反向流五元组;利用补齐后的反向流五元组对第一原始报文做地址转换处理,生成第二原始报文,并发送第二原始报文。
7.结合第一方面,在第一方面的一种可能的实施方式中,第一节点向第一spg中的主节点发送第一隧道报文之前,还包括:第一节点接收来自外部的第一原始报文,根据第一原始报文中的内容查找本地会话;如果未查找到相匹配的会话,则新建一会话,并在第二网络层的至少一个spg中选定第一spg;以及构造第一用户数据报协议udp报文,并将第一udp报文封装成第一隧道报文。
8.结合第一方面,在第一方面的另一种可能的实施方式中,在第二网络层的至少一个spg中选定第一spg,包括:第一节点根据第一原始报文的五元组哈希值,在至少一个spg中选定第一spg。
9.结合第一方面,在第一方面的又一种可能的实施方式中,第二隧道报文由第一spg中的主节点在本地查找会话后,将查找到的反向流五元组和第一原始报文封装生成;或者,
第二隧道报文由第一spg中的主节点根据第二spg的主节点反馈的反向流五元组,并结合第一原始报文封装生成。
10.结合第一方面,在第一方面的又一种可能的实施方式中,根据第一原始报文查找会话,还包括:第一节点在根据第一原始报文未查找到匹配的会话时,在第二网络层的至少一个spg中确定第二spg;第一节点向第二spg的主节点发送第三隧道报文;以及接收第一spg的主节点发送的第四隧道报文,第四隧道报文中包括第一原始报文和反向流五元组,反向流五元组用于补齐会话的五元组信息。
11.第二方面,本公开实施例还公开了另一种会话处理方法,该方法应用于一种负载均衡系统中第二网络层的一个主节点,比如第一慢速处理组spg的主节点,该方法包括:
12.第一spg中的主节点接收第一节点发送的第一隧道报文,解封装第一隧道报文得到第一原始报文,第一原始报文中包括正向流五元组;
13.第一spg中的主节点根据正向流五元组在本地会话列表中查找相匹配的会话;将查找到相匹配的会话的反向流五元组和第一原始报文封装,生成第二隧道报文,或者,将未查找到,但从第二spg的主节点接收会话的反向流五元组,并结合第一原始报文封装,生成第二隧道报文,以及向第一节点发送第二隧道报文。
14.结合第二方面,在第二方面的一种可能的实施方式中,从第二spg的主节点接收会话的反向流五元组,并结合第一原始报文封装,生成第二隧道报文,包括:第一spg中的主节点新建会话,并根据新建会话的五元组哈希计算,确定第二spg;向第二spg的主节点发送第一用户数据报协议udp报文,第一udp报文中携带正向流五元组;以及,接收第二spg的主节点反馈的第二udp报文,第二udp报文中包括新建会话的反向流五元组。
15.第一spg中的主节点将新建会话的反向流五元组和第一原始报文封装,生成第二隧道报文。
16.结合第二方面,在第二方面的另一种可能的实施方式中,第一spg中的主节点接收第二spg的主节点反馈的第二udp报文之后,还包括:第一spg中的主节点向第一spg中的从节点发送第一会话消息,第一会话消息用于指示第一spg中的从节点备份会话。
17.结合第二方面,在第二方面的又一种可能的实施方式中,方法还包括:第一spg中的主节点在收到来自外部或内部的隧道报文后,对隧道报文进行解封装,更新本地会话信息;以及向第一spg中的从节点发送包含更新本地会话信息的更新报文。
18.结合第二方面,在第二方面的又一种可能的实施方式中,方法还包括:第一spg中的主节点向第一spg中的从节点发送第一心跳报文,和/或,向第二spg中的主节点发送第二心跳报文;其中,第一心跳报文用于保活第一spg中的主节点和从节点之间的会话,第二心跳报文用于保活第一spg中的主节点和第二spg中的主节点之间的会话。
19.第三方面,本公开实施例还公开了一种会话处理方法,该方法应用于一种负载均衡系统中第二网络层的另一慢速处理组spg节点,比如第二spg中的主节点,该方法包括:
20.第二spg中的主节点接收第一spg中的主节点发送的第一用户数据报协议udp报文,第一udp报文中包括正向流五元组;根据正向流五元组新建会话,并获取新建会话的反向流五元组,生成第二udp报文,第二udp报文中包括新建会话的反向流五元组,以及向第一spg中的主节点发送第二udp报文。
21.结合第三方面,在第三方面的一种可能的实施方式中,方法还包括:第二spg中的
主节点向第二spg中的从节点发送第二会话消息,第二会话消息用于指示第二spg中的从节点备份新建会话。
22.结合第三方面,在第三方面的另一种可能的实施方式中,方法还包括:第二spg中的主节点接收第一节点发送的第三隧道报文;对第三隧道报文解封装,根据解析后得到的第一原始报文的五元组查找本地会话;如果查找到,则向第一spg的主节点发送查找到会话的反向流五元组,以使第一spg的主节点根据反向流五元组和第一原始报文生成第四隧道报文。
23.结合第三方面,在第三方面的又一种可能的实施方式中,方法还包括:第二spg中的主节点接收来自第一spg的主节点发送的第二心跳报文,第二心跳报文用于保活第一spg中的主节点和第二spg中的主节点之间的会话;第二spg中的主节点向第二spg中的从节点发送第三心跳报文,第三心跳报文用于保活第二spg中的主节点和第二spg中的从节点之间的会话。
24.第四方面,本公开实施例还公开了一种会话处理装置,装置包括:
25.第一发送模块,用于向第二网络层的第一慢速处理组spg中的主节点发送第一隧道报文,第一隧道报文中包括外部的第一原始报文的正向流五元组;
26.第一接收模块,用于接收主节点根据正向流五元组反馈的第二隧道报文;
27.第一处理模块,用于解析第二隧道报文,得到反向流五元组和第一原始报文,根据第一原始报文查找会话,以及补齐查找到会话的反向流五元组;利用补齐后的反向流五元组对第一原始报文做地址转换处理,生成第二原始报文,
28.第一发送模块,还用于发送第二原始报文。
29.第五方面,本公开实施例还公开了一种会话处理装置,装置包括:
30.第二接收模块,用于接收第一层网络中的第一节点发送的第一隧道报文;
31.第二处理模块,用于解封装第一隧道报文得到第一原始报文,第一原始报文中包括正向流五元组;根据正向流五元组在本地会话列表中查找相匹配的会话;以及,将查找到相匹配的会话的反向流五元组和第一原始报文封装,生成第二隧道报文;或者,将未查找到,但从第二spg的主节点接收会话的反向流五元组,并结合第一原始报文封装,生成第二隧道报文;
32.第二发送模块,还用于向第一节点发送第二隧道报文。
33.第六方面,本公开实施例还公开了一种会话处理装置,其特征在于,装置包括:
34.第三接收模块,用于接收第一慢速处理组spg中的主节点发送的第一用户数据报协议udp报文,第一udp报文中包括正向流五元组;
35.第三处理模块,用于根据正向流五元组新建会话,并获取新建会话的反向流五元组;以及生成第二udp报文,第二udp报文中包括新建会话的反向流五元组;
36.第三发送模块,用于向第一spg中的主节点发送第二udp报文。
37.第七方面,本公开实施例还公开了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器执行如第一方面至第三方面任一实施方式的会话处理方法。
38.另外,本公开实施方式还公开了一种计算机可读存储介质,其上存储有计算机程
序,计算机程序被处理器执行时实现如第一方面至第三方面任一实施方式的会话处理方法。
39.第八方面,本公开实施例还公开了一种负载均衡系统,系统包括第一网络层和第二网络层,第一网络层和第二网络层隧道连接,第一网络层中包括第一节点,第二网络层中包括至少一个慢速处理组spg,其中,
40.第一节点向第二网络层的第一spg中的主节点发送第一隧道报文,第一隧道报文中包括外部的第一原始报文的正向流五元组;
41.第一spg中的主节点接收第一节点发送的第一隧道报文,解封装第一隧道报文得到第一原始报文,第一原始报文中包括正向流五元组;根据正向流五元组在本地会话列表中查找相匹配的会话;将查找到相匹配的会话的反向流五元组和所述第一原始报文封装,生成第二隧道报文;并结合第一原始报文封装生成第二隧道报文,以及向第一节点发送第二隧道报文;
42.第一节点接收并解析第二隧道报文,得到反向流五元组和第一原始报文,根据第一原始报文查找会话,补齐查找到会话的反向流五元组,以及利用补齐后的反向流五元组对第一原始报文做地址转换处理,生成第二原始报文,并发送第二原始报文。
43.本实施例提供的方法、装置、设备和系统,设计双层网络结构,其中,第一网络层负责包处理任务,第二网络层负责会话管理和备份,相比于现有的将包处理和会话管理/备份都在一层上执行,本方法不受传统单层网络的限制,即不受原部署在一个集群的会话数与单个节点的内存大小的限制,进而本方法在第二网络层中包括多个spg,支持会话高可用下的会话数随节点数的增加而线性增长。
44.另外,相比于原单层网络结构,无法容器化部署接入网关gw以支持会话高可用功能,因为单个gw节点容器化后,每个gw容器可使用的内存更少;本公开实施例的方法,容器化部署gw可支持会话高可用。同时,每秒新建连接数也支持随节点数的增加而线性增长。
附图说明
45.图1为本公开实施例提供的一种负载均衡集群的示意图;
46.图2为本公开实施例提供的另一种负载均衡集群的示意图;
47.图3为本公开实施例提供的一种会话处理方法的流程图;
48.图4为本公开实施例提供的一种正向报文处理的信令流程图;
49.图5为本公开实施例提供的一种反向报文处理的信令流程图;
50.图6为本公开实施例提供的一种会话保活的信令流程图;
51.图7为本公开实施例提供的另一种会话保活的信令流程图;
52.图8为本公开实施例提供的一种会话处理装置的结构框图;
53.图9为本公开实施例提供的另一种会话处理装置的结构框图;
54.图10为本公开实施例提供的又一种会话处理装置的结构框图;
55.图11为本公开实施例提供的一种电子设备的结构示意图。
具体实施方式
56.下面将结合附图对本公开的技术方案进行清楚、完整地描述,显然,所描述的实施
例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
57.应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
58.本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”。另外,需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
59.本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
60.下述各实施例中,每个实施例中同时提供了可选特征和示例,实施例中记载的各个特征可进行组合,形成多个可选方案,不应将每个编号的实施例仅视为一个技术方案。此外,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
61.首先对本公开技术方案的应用场景进行介绍。
62.图1为本公开实施例提供的一种负载均衡集群的示意图。四层负载均衡器接入网关gw作为四层接入的入口,以集群的方式部署于一个tor(top of rack),考虑到高可用性(high availbility,ha),在每个tor下可分别部署一个集群。如图1所示,节点a0和节点a1构成集群a,部署在tor a下;节点b0和节点b1构成集群b,部署在tor b下。
63.在实际应用中,一个集群通常包含至少两个节点。此外,同一个基于边界网关协议(border gateway protocol,bgp)的公网虚拟服务网络协议(virtual internet protocol,vip)跨tor部署在a、b两个集群上,即节点a0、a1、b0和b1皆部署于同一个vip。每个节点的内网侧部署一个负载均衡器内网接口的ip地址(local internet protocol,lip),可专用于新建会话和关闭会话的消息传输以及协商报文的传输,例如节点a0部署lip0,节点a1部署lip1。集群a和集群b构成一个跨tor的集群,且后挂同样的业务服务器集群。
64.接入网关gw上游tor根据报文的五元组哈希分发报文至各gw,保证同一个会话的报文总是被分发至同一个gw节点。但存在“全集群同步”方案不足的缺陷,因为随着会话数量的线性增长,一个集群的会话数受限于单个节点的内存大小,如图1中仅有一层gw,所以无法实现会话数增长的需求,原因如下:
65.在集群中增加一对gw节点,例如gw-c0/1,上游tor必然会将gw-a0/1和gw-b0/1上某些存量会话的报文分发至gw-c0/1,这些报文因在gw-c0/1找不到会话,或者被丢弃(例如禁止tcp syn报文新建会话),或者被分发给错误的后端业务服务器(real server,rs),比如,gw扩容时,rs也在扩容,即使tcp syn报文允许新建会话,且gw使用maglev算法选择后端rs,报文也可能被分发至另一个rs,而不是原会话所关联的后端rs。因此,要做到业务流量无损,需在gw-c0/1接收流量之前,先计算出gw-a0/1和gw-b0/1上哪些存量会话要备份过来,但因上游tor分发报文的算法未可知,故无法进行。另外,考虑到不同厂商的tor,故需增加一报文分发层来屏蔽tor这一层的报文分发细节。
66.故此,本公开技术方案的应用场景中,在物理tor和gw之间引入一“报文快速处理
层”(aka.fp layer,fpl),而gw层负责会话的高可用管理和会话所用资源(lip/lport)的分配、备份和回收,也可将gw这层认为是“报文慢速处理层”(aka.sp layer,spl)。
67.如图2所示,为本公开实施例提供的一种负载均衡集群的示意图。比如一种负载均衡系统,该系统包括第一网络层和第二网络层,第一网络层和第二网络层隧道连接,且第一网络层为报文快速处理层fpl,第二网络层为报文慢速处理层spl。
68.为方便讨论,每一对(或组)gw被认为是报文慢速处理组(slow processing group,spg)。可选的,在一个spg中包含两个sp节点,或一对sp节点,每个gw被认为是sp节点,如图2所示。在报文慢速处理层spl中包括第一spg和第二spg,比如spg-a和spg-b,其中,spg-a中包括sp-a0和sp-a1两个节点,其中一个是主节点,另一个是从节点。类似的,spg-b中包括sp-b0和sp-b1两个节点。应理解,在spl层中还可以包括更多或更少spg,本实施例对此不做限制。
69.在fpl(fast processing layer,快速处理层)中包括至少一个节点,如fp-a0、fp-a1、fp-a2和fp-a3等。
70.如图2的示例中,将第二网络层spl部署在两个tor下。比如当其中一个tor-a掉电,流量则可被另一个tor-b承接,进而保证对业务无损,提高系统可靠性。
71.在本实施例中,一个spg的两个sp节点可分别部署在两个tor下,例如spg-a的sp-a0部署在tor-a,spg-a的sp-a1部署在tor-b。fp根据接收报文的五元组哈希值计算,a=hash(5-tuple of the packet)mod n,将报文分发至spg-a的主节点,比如spg-a0;如果spg-a0宕机,则分发报文至spg-a的从节点,比如spg-a1。
72.实施例一
73.图3为本公开实施例提供的一种会话处理方法的流程示意图,该方法可适用于前述如图2所示的负载均衡系统。该方法可以由第一网络成中的第一节点,如fp-a0来执行,其中该第一节点可由软件和/或硬件实现,该第一节点包括但不限于接入网关或负载均衡器等。
74.所述方法包括:
75.步骤101:第一节点向第二网络层的第一spg中的主节点发送第一隧道报文,所述第一隧道报文中包括外部的第一原始报文的正向流五元组。
76.其中,外部的第一原始报文可以来自路由器router,外部第一原始报文经过tor-a后首先达到第一节点fp-a0,fp-a0将外部的第一原始报文封装成第一隧道报文,如ip tunnel或vxlan(virtual extensible local area network)报文,然后再发送给第一隧道报文至spg-a中的主节点,如sp-a0。所述sp-a0是根据第一原始报文中的携带的正向流五元组选择确定的。
77.步骤102:第一节点接收所述主节点根据正向流五元组反馈的第二隧道报文。
78.spg-a中的主节点sp-a0收到此第一隧道报文后,将其解封装,然后根据原始第一原始报文的正向流五元组新建主备会话、分配且备份lport,并将此原始第一原始报文连同新建会话的反向流五元组封装在隧道报文里,生成第二隧道报文,以及回送给第一节点fp-a0。对应地,fp-a0接收sp-a0反馈的第二隧道报文。
79.其中,lport对应gw lip所分配的本地端口,其端口范围是1025~65535。
80.步骤103:第一节点解析所述第二隧道报文,得到反向流五元组和第一原始报文,
根据所述第一原始报文查找会话,以及补齐查找到会话的反向流五元组。
81.第一节点fp-a0收到第二隧道报文后,对其解封装,得到反向流五元组和所述第一原始报文,根据里面的第一原始报文查找到会话,补齐查找到的会话的反向流五元组。
82.步骤104:第一节点利用补齐后的反向流五元组对所述第一原始报文做地址转换处理,生成第二原始报文,并发送所述第二原始报文。
83.所谓地址转换处理具体为full-nat(缩写fnat)处理,fnat处理是gw部署方式之一,对报文既作snat处理,又作dnat处理。具体地,snat是指对报文做源地址/源端口转换;dnat是指对报文做目的地址/目的端口转换。
84.第一节点fp-a0利用补齐后的反向流五元组对第一原始报文做fnat处理后,生成第二原始报文,然后将该第二原始报文发送回后端业务服务器rs或客户端client。
85.需要说明的是,在本实施例中,每个fp的内网口配置一个或多个lip(gw内网口所配置的本地ip),且和其他fp配置的一个或多个lip不重叠。例如fp-a0配置lip0,保证fp-a0上会话的反向流报文仅被路由至fp-a0。
86.另外,fpl的每个fp快速处理报文,即接收到外部报文后,解封装,得到里面报文的五元组信息,查找本地会话表(根据五元组信息在本地会话表查找目标会话),如果查找到目标会话,则根据找到的会话,对报文做fnat或反向fnat处理,然后发送报文给rs或client;否则,将该报文封装在一隧道报文中,将该隧道报文发送给选定的一个spg的主节点。
87.本实施例提供的方法,设计双层网络结构,其中,第一网络层负责包处理任务,第二网络层负责会话管理和备份,相比于现有的将包处理和会话管理/备份都在一层上执行,本方法不受传统单层网络的限制,即不受原部署在一个集群的会话数与单个节点的内存大小的限制,进而本方法在第二网络层中包括多个spg,支持会话高可用下的会话数随节点数的增加而线性增长。
88.另外,相比于原单层网络结构,无法容器化部署gw以支持会话高可用功能,因为单个gw节点容器化后,每个gw容器可使用的内存更少;本公开实施例的方法,容器化部署gw可支持会话高可用。同时,每秒新建连接数(connections per second,cps)也支持随节点数的增加而线性增长。
89.在第二网络层,spl中包含至少一个spg,每个spg可以包含两个sp;例如,spg-a包含两个节点,sp-a0和sp-a1。
90.spl的每个sp都有同样的lip pool(gw内网口所配置的本地ip池),例如lip pool1,其包含lip0~3,但每个spg为每个lip所分配的lport范围互不重叠;例如,sp-a{0|1}上lip0所分配的端口范围是10001~20000,sp-b{0|1}上lip0所分配的端口范围是20001~30000。
91.为方便讨论,假设每个spg的工作模式是“主从模式”(primary-secondary mode),fp分发报文总是给一spg的主节点(primary node);如果主节点宕机,则fp分发报文给该spg的从节点(secondary node)。并且同一个spg内,主节点负责新建会话,且备份新建会话至从节点,另外,主节点还负责保活主从会话和主从双向流;而从节点则负责新建从会话和从反向流。
92.类似的,spg也可工作于“主主模式”(primary-primay mode),端口资源则在一个
spg内均分,例如spg-a给lip0分配的端口范围是10001~20000,那么sp-a0的端口10001~15000用于新建会话所需的端口,端口15001~20000则用于备份sp-a1新建会话的端口。同理地,sp-a1的端口10001~15000用于备份sp-a0新建会话的端口,端口15001~20000用于新建会话所需的端口。fp可基于报文哈希值,将报文分发给一个spg内的一个节点。
93.此外,fp和sp都是以容器化部署,管控平台则用于对fp和sp进行编排。
94.实施例二
95.本实施例对上述实施例一中的方法进行详细说明。在gw报文处理过程中包括两个方向的报文处理流程。为一般化讨论,以fnat为例,所述fnat包括snat+dnat,其中,即snat(source network address translation,对报文做源地址或源端口转换)和dnat(destination network address translation,对报文做目的地址或目的端口转换)。
96.进一步地,source bi-directional flows,即主会话的正反双向流,也就是主正向流和主反向流,简称主双向流。所谓主正向流(source forward flow)是指主会话的正向流,所谓主反向流(source reverse flow)是指主会话的反向流,对于fnat,在第二网络层的sp建立和备份会话的具体流程如下:
97.正向流:cip/cport-》vip/vport;反向流:rip/rport-》lip/lport。
98.其中,cip表示外网的客户端ip(client ip),cport表示外网的客户端发起会话所用的端口(client port),vip为虚拟业务ip(virtual ip),vport为虚拟业务端口(virtual port)。且
“‑
》”为指向箭头。同理地,在反向流中,rip为内网服务器ip(real server ip),rport为内网服务器端口(real server port);lip(local ip)为负载均衡器内网ip,即gw内网口所配置的本地ip;lport(local port)为负载均衡器内网端口号,即对应gw lip所分配的本地端口,一般端口范围是1025~65535。
99.在报文发送之前,首先规定各层之间的报文格式按如下规则收发:
100.1、fpl和spl之间的报文总是隧道报文(ip tunnel或vxlan报文)。
101.2、各个sp之间的报文是普通udp(user datagram protocol,用户数据报协议)报文,但其包含原始报文和会话元数据(例如:原始报文的入口点等信息)。各个sp之间的“ha session新建消息”和“ha flow新建消息”也是普通的udp报文,仅包含会话信息或反向流信息。
102.3、后端业务服务器rs直接发送给fpl的反向流报文总是普通(underlay)报文,其报文头是(protocol,rip/rport-》lip/lport)。
103.此外,fp和sp使用同样的哈希算法,例如maglev,fp用于选定sp以新建或恢复会话,sp用于选定反向流的主节点。以下是一正向流的报文如何建立会话和此会话对应的反向流的具体过程。
104.首先,正向报文处理(forward packet)流程。
105.在下发正向报文处理之前,管控平台先下发spg全局配置信息给每一个fp节点或sp节点。全局配置信息下发完成后,执行正向报文处理流程,本实施例中,以第一节点为第一网络层的fp-a0,第一spg中的主节点为第二网络层中的sp-a0,从节点为sp-a1,第二spg中的主节点为第二网络层中的sp-b0,从节点为sp-b1为例,进行说明。
106.具体地,如图4所示,方法包括以下方法步骤:
107.步骤201,第一节点fp-a0接收客户端下发的第一原始报文,该第一原始报文又称
原始报文,且第一原始报文中包括正向流的五元组。
108.步骤202,第一节点fp-a0根据第一原始报文中的内容查找本地会话。
109.具体地,第一节点fp-a0根据第一原始报文中的正向流五元组查找本地会话,如果找到会话,则在本地对第一原始报文做fnat处理后,将处理后的报文发送给rs。如果未找到与本地会话列表相匹配的会话,则第一节点fp-a0新建一会话,该新建会话中包括正向流的五元组。具体地,第一节点fp-a0新建的会话包含如下信息:正向流的五元组:protocol,cip/cport,vip/vport。另外,还确定第二网络层中会话的主节点,假设确定主节点为spg-a的sp-a0 ip,执行步骤203。
110.步骤203,第一节点fp-a0构造第一udp报文,并将该第一udp报文封装成第一隧道报文,比如vxlan报文。
111.其中,第一udp报文包含如下信息:主会话的新建节点:sp-a0 ip、反向流的五元组:protocol,rip/rport-》lip0/lport0和第一原始报文。本实施例中,第一udp报文中包括:第一原始报文的入口点:fp-a0 ip、lip pool id:fp-a0配置一lip pool,包含lip0~3,以及第一原始报文,该第一原始报文的报文头是(protocol,cip/cport-》vip/vport)。
112.步骤204,第一节点fp-a0向第二网络层spg-a的主节点sp-a0发送第一隧道报文。
113.步骤205,sp-a0接收第一隧道报文,并解封装该第一隧道报文得到第一原始报文,所述第一原始报文中包括正向流五元组。
114.步骤206,sp-a0根据第一原始报文中包含的正向流五元组在本地会话列表中查找相匹配的会话;判断是否存在相匹配的会话。
115.如果存在相匹配的会话,则sp-a0在查找到的会话中获取反向流的五元组,并将该反向流五元组连同原始第一原始报文封装在隧道报文里,回送给第一节点fp-a0。如果不存在,执行步骤207。
116.步骤207,如果否,即未查找到相匹配的会话,则sp-a0向spg-b的主节点sp-b0查找相匹配的会话,sp-b0在本地的会话列表中查找相匹配的会话,并从找到的会话中获得反向流五元组,以及sp-b0将该会话的反向流五元组发送给sp-a0。
117.具体地,sp-a0根据构造报文的lip pool id,从对应的lip pool以rr方式选择一lip和分配lport,例如lip0/lport0;并根据负载均衡调度算法,挑选出rs/rport,最后新建一会话,以及从查找的会话中得到反向流的五元组。
118.其中,sp-a0新建的会话包含如下信息:新建会话的双向流五元组,比如包括:
[0119]-protocol,cip/cport-》vip/vport、protocol,rip/rport-》lip/lport;
[0120]-会话关联报文的入口点:fp-a0 ip;
[0121]-会话的反向流的主节点:sp-b0 ip等。
[0122]
然后,sp-a0转发此构造报文至spg-b的主节点,即发送给sp-b0,以便从sp-b0中获取反向流信息。
[0123]
例如,sp-a0根据新建第二会话的五元组信息确定sp-b0,并将第二原始报文封装成第一udp报文,sp-a0发送第一udp报文给sp-b0;sp-b0接收第一udp报文后,建立第二会话的反向流,将第二原始报文通过第二udp报文发送给sp-a0。
[0124]
步骤208,sp-a0接收来自sp-b0查找的反向流五元组,或者,在步骤206的判断中直接获得该反向流的五元组,并将该反向流五元组和第一原始报文封装生成第二隧道报文。
[0125]
具体地,sp-a0接收到第二udp报文后,将第二udp报文解析,封装成第二隧道报文。
[0126]
步骤209,sp-a0向第一节点fp-a0发送该第二隧道报文。
[0127]
步骤210,第一节点fp-a0接收该第二隧道报文后,解析该第二隧道报文,得到反向流五元组和外部第一原始报文,并且第一节点fp-a0根据第一原始报文查找会话,并补齐查找到会话的反向流五元组。
[0128]
步骤211,第一节点fp-a0根据补齐后的反向流的五元组,对原始第一原始报文做fnat处理,生成第二原始报文。
[0129]
具体地,第一节点fp-a0收到第二隧道报文后,解封装,得到里面的构造报文,根据其包含的第一原始报文查找会话,并补齐所找到会话的反向流信息,然后将第一原始报文从构造报文中提取出来,根据反向流的五元组,对原始第一原始报文做fnat处理,生成第二原始报文,第二原始报文的报文头为protocol,lip0/lport0-》rip/rport。
[0130]
步骤212,第一节点fp-a0将第二原始报文发送给rs。
[0131]
该实施例中,在spl层的第一spg的主节点sp-a0上的会话由于长久不用、老化等原因导致没有反向流五元组,该反向流的五元组经过查找存储在第二spg的主节点sp-b0上,所以步骤207向sp-b0发送请求,从而获取会话的反向流五元组。
[0132]
在本实施例的一种具体的实施方式中,上述步骤202中还包括:第一节点fp-a0在第二网络层的至少一个spg中选定第一spg,具体地,第一节点fp-a0根据所述第一原始报文的五元组哈希值,在至少一个spg中选定第一spg。一种确定第一spg的实施方式是,第一节点fp-a0按第一原始报文的五元组哈希计算,比如a=hash(5-tuple of the packet)mod n,在n个spg里选定第一spg,n≥1且为正整数,进而确定第一spg中的主节点,比如确定第一spg为spg-a,主节点为sp-a0。
[0133]
在本实施例的另一种实施方式中,上述步骤207中,方法还包括:第二spg中的主节点sp-b0接收到来自第一spg的主节点sp-a0发送的构造报文后,新建此会话的反向流,然后将此报文回送给sp-a0。
[0134]
同时,第二spg中的主节点sp-b0发送“ha flow构造消息(ha flow create message)”给第二spg中的从节点sp-b1,该ha flow构造消息中仅包含反向流五元组信息,其目的是让从节点sp-b1备份此会话的反向流五元组。对应地,从节点sp-b1接收来自主节点sp-b0的ha flow构造消息后,在本地备份新建会话的反向流五元组。此时,在从节点sp-b1侧仅备份会话的反向流五元组信息。
[0135]
第二spg的主节点sp-b0新建的反向流信息包含如下信息:反向流的五元组:protocol,rip/rport-》lip0/lport0;会话的主节点:sp-a0 ip。
[0136]
sp-b0构造的udp报文包含如下信息:反向流的五元组:protocol,rip/rport-》lip0/lport0;原始报文,即前述步骤201中的第一原始报文。
[0137]
上述步骤208,在第一spg的主节点sp-a0收到来自sp-b0的构造报文后,将其封装在隧道报文里,生成所述第二隧道报文,并发送给第一节点fp-a0。
[0138]
同时,第一spg的主节点sp-a0发送第一会话消息给第一spg的从节点sp-a1,所述第一会话消息为ha会话构造消息(ha session create message),用于指示从节点sp-a1备份此会话。从节点sp-a1接收主节点sp-a0的ha会话构造消息后,备份第一原始报文的双向五元组。
[0139]
本实施例中,在正向报文处理过程中,如图4所示,来自外部第一原始报文的会话的首个报文传输路径是:第一节点fp-a0

sp-a0

sp-b0

sp-a0

fp-a0,一共经过4跳。
[0140]
本实施例提供的方法,设计双层网络结构,第一网络层中的节点fp-a0负责包/报文处理任务,第二网络层中的节点sp-a0/sp-a1、sp-b0/sp-b1负责会话管理和备份,由第二网络层中的从节点sp-a1或sp-b1来备份主节点新建会话信息,避免在同一层网络上新建会话和备份,本方法支持会话高可用下的会话数随节点数的增加而线性增长,且不受传统单层网络的限制。同时,本实施例提供的技术方案,容器化部署gw也能支持会话高可用。
[0141]
实施例三
[0142]
本实施例相比于实施例二,主要描述报文的反向处理流程,即从rs发送反向报文(reverse packet)的处理过程。
[0143]
在上述实施例二中,第一节点fp-a0根据第一原始报文查找会话时,还包括:第一节点fp-a0在根据第一原始报文未查找到匹配的会话时,在第二网络层的至少一个spg中确定第二spg,并向该第二spg的主节点发送第三隧道报文,所述第三隧道报文中携带第一原始报文的内容。
[0144]
第二spg中的主节点接收第一节点fp-a0发送的第三隧道报文,对该第三隧道报文解封装,根据解析后得到的第一原始报文的五元组查找本地会话;如果查找到,则向第一spg的主节点发送查找到会话的反向流五元组,以使第一spg的主节点根据反向流五元组和第一原始报文生成第四隧道报文,并发送该第四隧道报文至第一节点fp-a0。
[0145]
第一节点fp-a0接收第一spg的主节点发送的第四隧道报文,第四隧道报文中包括第一原始报文和反向流五元组,反向流五元组用于补齐会话的五元组信息。
[0146]
具体地,在一示例中,按图5所示,反向报文处理流程包括:
[0147]
步骤301、rs发送的反向报文,该反向报文中携带的五元组信息包括:protcol,rip/rpot-》lip0/lport0;
[0148]
并且,该报文不经过第二网络层spl,直接发送至第一网络层fpl,交换机根据该报文的目的地址lip0,路由该报文至第一节点fp-a0。
[0149]
步骤302、第一节点fp-a0接收后,根据该反向报文在本地查找先前建立的会话。
[0150]
如果能找到会话,则将此报文做反向fnat处理,生成新的报文,比如第三报文,该第三报文的报文头变为(protcol,vip/vport-》cip/cport),然后将第三报文发送给客户端。
[0151]
如果没有找到会话,则处理过程如下:如果第二网络层spl上仍有对应的会话,则将此会话在fp-a0上恢复;否则,此报文在spl被丢弃。具体处理流程如下:
[0152]
rs发送报文至第一节点fp-a0,该报文中包含五元组信息为(protcol,rip/rport-》lip0/lport0),fp-a0接收后查找本地会话,如果没找到会话,则按照该报文的五元组哈希计算,b=hash(5-tuple of the packet)mod n,选定spg-b中的主节点sp-b0;并构造一udp报文。
[0153]
步骤303、第一节点fp-a0将构造的udp报文封装在一隧道报文里,形成第三隧道报文,然后将该第三隧道报文发送给spg-b的主节点,即sp-b0。
[0154]
其中,fp-a0构造的udp报文中包含如下信息:
[0155]
第一原始报文的入口点:fp-a0 ip;
[0156]
第一原始报文,其报文头是(protocol,rip/rport-》lip/lport)。
[0157]
步骤304、主节点sp-b0收到第三隧道报文后,解封装,得到根据里面的第一原始报文的五元组;并根据该第一原始报文的五元组查找本地会话,如果找到会话,则获得反向流五元组。如果未找到,则将此报文丢弃。
[0158]
步骤305、主节点sp-b0构造一udp报文,该报文中携带反向流的五元组,将该构造报文转发至反向流对应会话的属主,spg-a的主节点sp-a0。
[0159]
步骤306、spg-a的主节点sp-a0收到来自sp-b0构造的udp报文后,解封装,根据里面第一原始报文的五元组查找本地会话表,如果找到会话,则构造一udp报文,将此udp报文封装在一隧道报文里,生成第四隧道报文。
[0160]
sp-a0构造的udp报文包含如下信息:
[0161]-向流的五元组:(protocol,cip/cport-》vip/vport);
[0162]-第一原始报文。
[0163]
另外,在该步骤中,如果sp-a0未找到相匹配的会话,则丢弃此报文。
[0164]
步骤307、sp-a0发送第四隧道报文给第一节点fp-a0。
[0165]
步骤308、第一节点fp-a0收到此第四隧道报文后,对其解封装,从中提取出原始报文(如第一原始报文),并恢复此报文对应的会话信息,然后对该原始报文做反向fnat处理,处理后生成报文的报文头变为(vip/vport-》cip/cport)。
[0166]
步骤309、第一节点fp-a0将经过步骤308处理后的报文发送给客户端。
[0167]
本实施例提供了一种反向报文的处理流程,在该反向报文处理过程中,当spl层中一个spg的主节点sp-b0中查找到反向流五元组后,将该反向流五元组发送至会话反向流对应会话的属主,也就是sp-a0,从而在sp-a0上完成反向流信息的补充,最后将构造的udp报文封装成隧道报文,转发至第一节点fp-a0,完成反向报文处理。
[0168]
实施例四
[0169]
本实施例还提供一种会话保活的方法流程,用于维持第二网络层中每个spg组内节点的会话,使会话和反向流保活。
[0170]
具体地,以前述实施例的主从节点为例,该方法包括:
[0171]
第一spg中的主节点sp-a0向第一spg中的从节点sp-a1发送第一心跳报文,和/或,第一spg中的主节点sp-a0向第二spg中的主节点sp-b0发送第二心跳报文。其中,第一心跳报文用于保活第一spg中的主节点sp-a0和从节点sp-a1之间的会话,第二心跳报文用于保活第一spg中的主节点sp-a0和第二spg中的主节点sp-b0之间的会话。
[0172]
此外,对应地,该方法还包括:第二spg中的主节点sp-b0接收来自第一spg的主节点sp-a0发送的第二心跳报文,和/或,第二spg中的主节点sp-b0向第二spg中的从节点sp-b1发送第三心跳报文,第三心跳报文用于保活第二spg中的主节点sp-b0和第二spg中的从节点sp-b1之间的会话。
[0173]
在一具体示例中,第一节点fp-a0上的每个会话都定时发送“更新报文”,该“更新报文”被封装在一隧道报文里,并被发送给spg-a的主节点,即sp-a0,该“更新报文”用于更新sp-a0上对应的主会话。进一步地,上报“更新报文”的目的用于保活sp-a0上的主会话。
[0174]
具体地,如图6所示,方法包括:
[0175]
第1步、fp-a0更新主会话的统计数据,例如入向和出向的报文数和pps,并向sp-a0
发送更新报文(update packet)。
[0176]
具体地,fp-a0将该更新报文封装在一隧道报文,并通过该隧道报文发送给sp-a0
[0177]
第2步、sp-a0在收到来自外部或内部的隧道报文后,对该隧道报文进行解封装,并更新本地会话信息。如果sp-a0上查找的没有对应的会话,则可依赖此“更新报文”对会话予以恢复,所述恢复可以是部分恢复,因为fpl层上使用的是lru,而不是sp-a0上的所有会话都在fpl上有备份。
[0178]
第3步、sp-a0收到来自fp-a0发送的隧道报文后,对其解封装,得到会话的五元组,并利用该五元组更新本地会话信息(source session update),然后将里面的更新报文发送给同组内的从节点sp-a1。
[0179]
第4步、从节点sp-a1接收主节点sp-a0发送的更新报文后,对其上的从会话进行更新(replica session update),该备份用于防止主节点sp-a0宕机,由于在从节点sp-a1上有备份的会话的统计数据,所以在主节点sp-a0宕机/故障时,通过从节点sp-a1的备份数据依然可以维持会话。
[0180]
本实施例为同一spg组内两个节点的会话备份,由fp-a0主动发起,从节点sp-a1的会话更新由其组的主节点sp-a0发起。
[0181]
另外,还可以在不同spg组内发起会话备份和保活,如图7所示,方法包括如下:
[0182]
每个主会话是心跳报文的源头,所以由spg组的主节点,例如sp-a0做主会话的主动更新(source forward session update)向组内和其他spg组发送定时心跳报文(heart beat),以更新从会话和主从会话的反向流。
[0183]
例如,主节点sp-a0向其组内的从节点sp-a1发送心跳报文,比如第一心跳报文,sp-a1接收该第一心跳报文后对从会话进行更新(replica session refreshing)。其中“source”表示主,“replica”表示从。
[0184]
另外,主节点sp-a0还向spg-b组中的主节点sp-b0发送另一心跳报文,比如第二心跳报文,sp-b0接收该第二心跳报文后,对其上的主会话反向流做刷新(source reverse flow refreshing)。
[0185]
其中,sp-a0发送给sp-a1的第一心跳报文可以是“ha session新建消息”;sp-a0发送给sp-b0的第二心跳报文可以是“ha flow新建消息”。
[0186]
在本实施例中,方法还包括:当spg-b的主节点sp-b0刷新主会话反向流后,还向其组内的从节点sp-b1发送心跳报文,比如第三心跳报文,该第三心跳报文被从节点sp-b1接收后,刷新从会话反向流。
[0187]
其中,sp-b0发送给sp-b1的第三心跳报文可以是“ha flow新建消息”。
[0188]
由于每个spg内的主节点和从节点需知道对方的健康状态。当其中主节点sp-a0宕机时,心跳源头就变更为从节点sp-a1;当sp-a0恢复上线时,主节点sp-a0和从节点sp-a1之间通过会话冷同步后,sp-a0又成为spg-a的主节点,并恢复为会话的心跳源头。
[0189]
本实施例提供的报文保活方法,通过心跳报文实现会话刷新和同步,不仅使得会话和反向流被保活,还可恢复会话或反向流。
[0190]
实施例五
[0191]
本公开实施例还公开了一种会话处理装置,如图8所示,该装置用于实现前述实施例中的会话处理方法,该装置包括:第一接收模块510、第一处理模块520和第一发送模块
530,另外,该装置还可以包括其他更多或更少的单元、结构,本实施例对此不做限制。
[0192]
其中,第一发送模块530,用于向第二网络层的第一spg中的主节点发送第一隧道报文,第一隧道报文中包括外部的第一原始报文的正向流五元组。
[0193]
第一接收模块510,用于接收主节点根据正向流五元组反馈的第二隧道报文。
[0194]
第一处理模块520,用于解析第二隧道报文,得到反向流五元组和第一原始报文,根据第一原始报文查找会话,以及补齐查找到会话的反向流五元组;利用补齐后的反向流五元组对第一原始报文做地址转换处理,生成第二原始报文。
[0195]
第一发送模块530,还用于发送第二原始报文。
[0196]
可选的,在本实施例的一种具体的实施方式中,第一接收模块510,还用于接收来自外部的第一原始报文;第一处理模块520,还用于根据第一原始报文中的内容查找本地会话;如果未查找到相匹配的会话,则新建一会话,并在第二网络层的至少一个spg中选定第一spg,以及构造第一udp报文,并将第一udp报文封装成第一隧道报文。
[0197]
可选的,在本实施例的另一种具体的实施方式中,第一处理模块520,具体还用于根据第一原始报文的五元组哈希值,在至少一个spg中选定第一spg。
[0198]
其中,上述第二隧道报文由第一spg中的主节点在本地查找会话后,将查找到的反向流五元组和第一原始报文封装生成;或者,第二隧道报文由第一spg中的主节点根据第二spg的主节点反馈的反向流五元组,并结合第一原始报文封装生成。
[0199]
可选的,在本实施例的又一种具体的实施方式中,第一处理模块520,具体还用于在根据第一原始报文未查找到匹配的会话时,在第二网络层的至少一个spg中确定第二spg。
[0200]
第一发送模块530,还用于向第二spg的主节点发送第三隧道报文。
[0201]
第一接收模块510,还用于接收第一spg的主节点发送的第四隧道报文,第四隧道报文中包括第一原始报文和反向流五元组,反向流五元组用于补齐会话的五元组信息。
[0202]
另外,在本实施例中还提供了另一种会话处理装置,如图9所示,该装置用于实现前述实施例中的会话处理方法,该装置包括:第二接收模块610、第二处理模块620和第二发送模块630,另外,该装置还可以包括其他更多或更少的单元、结构,本实施例对此不做限制。
[0203]
其中,第二接收模块610,用于接收第一层网络中的第一节点发送的第一隧道报文。
[0204]
第二处理模块620,用于解封装第一隧道报文得到第一原始报文,第一原始报文中包括正向流五元组;根据正向流五元组在本地会话列表中查找相匹配的会话;以及,将查找到相匹配的会话的反向流五元组和第一原始报文封装,生成第二隧道报文;或者,将未查找到,且从第二spg的主节点接收会话的反向流五元组,并结合第一原始报文封装,生成第二隧道报文。
[0205]
第二发送模块630,还用于向第一节点发送第二隧道报文。
[0206]
可选的,在本实施例的一种具体的实施方式中,第二处理模块620,具体用于新建会话,并根据新建会话的五元组哈希计算,确定第二spg。
[0207]
第二发送模块630,还用于向第二spg的主节点发送第一udp报文,第一udp报文中携带正向流五元组。
[0208]
第二接收模块610,还用于接收第二spg的主节点反馈的第二udp报文,第二udp报文中包括新建会话的反向流五元组。
[0209]
第二处理模块620,还用于将新建会话的反向流五元组和第一原始报文封装,生成第二隧道报文。
[0210]
可选的,在本实施例的又一种具体的实施方式中,第二发送模块630,还用于向第一spg中的从节点发送第一会话消息,第一会话消息用于指示第一spg中的从节点备份会话。
[0211]
可选的,在本实施例的又一种具体的实施方式中,第二处理模块620,还用于在收到来自外部或内部的隧道报文后,对隧道报文进行解封装,更新本地会话信息。第二发送模块630,还用于向第一spg中的从节点发送包含更新本地会话信息的更新报文。
[0212]
可选的,在本实施例的又一种具体的实施方式中,第二发送模块630,还用于向第一spg中的从节点发送第一心跳报文,和/或,向第二spg中的主节点发送第二心跳报文。
[0213]
其中,第一心跳报文用于保活第一spg中的主节点和从节点之间的会话,第二心跳报文用于保活第一spg中的主节点和第二spg中的主节点之间的会话。
[0214]
此外,在本实施例中还提供了一种会话处理装置,如图10所示,该装置用于实现前述实施例中的会话处理方法,该装置包括:第三接收模块710、第三处理模块720和第三发送模块730,另外,该装置还可以包括其他更多或更少的单元、结构,本实施例对此不做限制。
[0215]
其中,第三接收模块710,用于接收第一spg中的主节点发送的第一udp报文,第一udp报文中包括正向流五元组。
[0216]
第三处理模块720,用于根据正向流五元组新建会话,并获取新建会话的反向流五元组;以及生成第二udp报文,第二udp报文中包括新建会话的反向流五元组。
[0217]
第三发送模块730,用于向第一spg中的主节点发送第二udp报文。
[0218]
可选的,在本实施例的一种具体的实施方式中,第三发送模块730,还用于向第二spg中的从节点发送第二会话消息,第二会话消息用于指示第二spg中的从节点备份新建会话。
[0219]
可选的,在本实施例的另一种具体的实施方式中,第三接收模块710,还用于接收第一节点发送的第三隧道报文。
[0220]
第三处理模块720,还用于对第三隧道报文解封装,根据解析后得到的第一原始报文的五元组查找本地会话;如果查找到,则通过第三发送模块730向第一spg的主节点发送查找到会话的反向流五元组,以使第一spg的主节点根据反向流五元组和第一原始报文生成第四隧道报文。
[0221]
可选的,在本实施例的又一种具体的实施方式中,第三接收模块710,还用于接收来自第一spg的主节点发送的第二心跳报文,第二心跳报文用于保活第一spg中的主节点和第二spg中的主节点之间的会话。
[0222]
第三发送模块730,还用于向第二spg中的从节点发送第三心跳报文,第三心跳报文用于保活第二spg中的主节点和第二spg中的从节点之间的会话。
[0223]
需要说明的是,本实施例中如图8至图10所示的装置,还用于实现上述方法实施例中的其他方法流程,具体可参见前述方法实施例,本实施例不详细赘述。
[0224]
本实施例提供的装置,设计双层网络结构,其中,第一网络层负责包处理任务,第
二网络层负责会话管理和备份,相比于现有的将包处理和会话管理/备份都在一层上执行,本方案不受传统单层网络的限制,即不受原部署在一个集群的会话数与单个节点的内存大小的限制,进而本方法在第二网络层中包括多个spg,支持会话高可用下的会话数随节点数的增加而线性增长。
[0225]
另外,相比于原单层网络结构,无法容器化部署gw以支持会话高可用功能,因为单个gw节点容器化后,每个gw容器可使用的内存更少;本公开实施例的会话处理装置,容器化部署gw可支持会话高可用。同时,每秒新建连接数cps也支持随节点数的增加而线性增长。
[0226]
实施例六
[0227]
另外,本公开实施例还提供了一种电子设备,如图11所示,该电子设备可以包括处理器110和存储器120,其中处理器110和存储器120可以通过总线或者其他方式连接,图11中以通过总线连接为例。此外,该电子设备中还包括至少一个接口130,该至少一个接口130可以是通信接口或其他接口,本实施例对此不做限制。
[0228]
其中,处理器110可以为中央处理器(central processing unit,cpu)。处理器110还可以为其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
[0229]
存储器120作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本公开实施例中的会话处理方法、会话保活方法对应的程序指令/模块。处理器110通过运行存储在存储器120中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的会话处理方法、会话保活方法等。
[0230]
存储器120可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器110所创建的数据等。此外,存储器120可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器120可选包括相对于处理器110远程设置的存储器,这些远程存储器可以通过网络连接至处理器110。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0231]
另外,至少一个接口130用于电子设备与外部设备的通信,比如与服务器通信等。可选的,至少一个接口130还可以用于连接外设输入、输出设备,比如键盘、显示屏等。
[0232]
所述一个或者多个模块存储在所述存储器120中,当被所述处理器110执行时,执行如图3至图7所示实施例中的会话处理方法、会话保活方法。
[0233]
此外,本公开实施例还提供一种负载均衡系统,该系统的结构可以是如前述图2所示的结构,其中包括第一网络层、第二网络层以及其他更多节点,该系统中在第一网络层中包括第一节点fp-a0,第二网络层中包括第一spg中的主节点sp-a0、从节点sp-a1,以及第二spg中的主节点sp-b0、从节点sp-b1等。
[0234]
可选的,该fp-a0可以是或者其中包含如图8所示的装置,sp-a0可以是或者其中包含如图9所示的装置,sp-b0可以是或者其中包含如图10所示的装置。
[0235]
另外,上述装置的结构可以是与如图11所示的电子设备的结构相同,或者不同,本
实施例对此不做限制。
[0236]
本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)、随机存储记忆体(random access memory,ram)、快闪存储器(flash memory)、硬盘(hard disk drive,hdd)或固态硬盘(solid-state drive,ssd)等;所述存储介质还可以包括上述种类的存储器的组合。
[0237]
虽然结合附图描述了本公开的实施例,但是本领域技术人员可以在不脱离本公开的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

技术特征:
1.一种会话处理方法,其特征在于,所述方法应用于一种负载均衡系统,所述系统包括第一网络层和第二网络层,所述第一网络层和所述第二网络层隧道连接,所述第一网络层中包括第一节点,所述第二网络层中包括至少一个慢速处理组spg,所述方法包括:所述第一节点向第二网络层的第一spg中的主节点发送第一隧道报文,所述第一隧道报文中包括外部的第一原始报文的正向流五元组;所述第一节点接收所述主节点根据所述正向流五元组反馈的第二隧道报文;所述第一节点解析所述第二隧道报文,得到反向流五元组和所述第一原始报文,根据所述第一原始报文查找会话,以及补齐查找到会话的反向流五元组;所述第一节点利用补齐后的反向流五元组对所述第一原始报文做地址转换处理,生成第二原始报文,并发送所述第二原始报文。2.根据权利要求1所述的方法,其特征在于,所述第一节点向所述第一spg中的主节点发送第一隧道报文之前,还包括:所述第一节点接收来自外部的所述第一原始报文;所述第一节点根据所述第一原始报文中的内容查找本地会话;如果未查找到相匹配的会话,则新建一会话,并在所述第二网络层的至少一个spg中选定所述第一spg;所述第一节点构造第一用户数据报协议udp报文,并将所述第一udp报文封装成所述第一隧道报文。3.根据权利要求2所述的方法,其特征在于,在所述第二网络层的至少一个spg中选定所述第一spg,包括:所述第一节点根据所述第一原始报文的五元组哈希值,在所述至少一个spg中选定所述第一spg。4.根据权利要求1所述的方法,其特征在于,所述第二隧道报文由所述第一spg中的主节点在本地查找会话后,将查找到的反向流五元组和所述第一原始报文封装生成;或者,所述第二隧道报文由所述第一spg中的主节点根据第二spg的主节点反馈的反向流五元组,并结合所述第一原始报文封装生成。5.根据权利要求1-4任一项所述的方法,其特征在于,所述根据所述第一原始报文查找会话,还包括:所述第一节点在根据所述第一原始报文未查找到匹配的会话时,在所述第二网络层的至少一个spg中确定第二spg;所述第一节点向所述第二spg的主节点发送第三隧道报文;所述第一节点接收所述第一spg的主节点发送的第四隧道报文,所述第四隧道报文中包括所述第一原始报文和反向流五元组,所述反向流五元组用于补齐会话的五元组信息。6.一种会话处理方法,其特征在于,所述方法应用于一种负载均衡系统,所述系统包括第一网络层和第二网络层,所述第一网络层和所述第二网络层隧道连接,所述第一网络层中包括第一节点,所述第二网络层中包括第一慢速处理组spg和第二spg,所述方法包括:所述第一spg中的主节点接收所述第一节点发送的第一隧道报文;所述第一spg中的主节点解封装所述第一隧道报文得到第一原始报文,所述第一原始
报文中包括正向流五元组;所述第一spg中的主节点根据所述正向流五元组在本地会话列表中查找相匹配的会话;将查找到相匹配的会话的反向流五元组和所述第一原始报文封装,生成第二隧道报文;或者,将未查找到,且从所述第二spg的主节点接收会话的反向流五元组,并结合所述第一原始报文封装,生成第二隧道报文;所述第一spg中的主节点向所述第一节点发送所述第二隧道报文。7.根据权利要求6所述的方法,其特征在于,所述从所述第二spg的主节点接收会话的反向流五元组,并结合所述第一原始报文封装,生成第二隧道报文,包括:所述第一spg中的主节点新建会话,并根据所述新建会话的五元组哈希计算,确定所述第二spg;所述第一spg中的主节点向所述第二spg的主节点发送第一用户数据报协议udp报文,所述第一udp报文中携带所述正向流五元组;所述第一spg中的主节点接收所述第二spg的主节点反馈的第二udp报文,所述第二udp报文中包括所述新建会话的反向流五元组;所述第一spg中的主节点将所述新建会话的反向流五元组和所述第一原始报文封装,生成所述第二隧道报文。8.根据权利要求7所述的方法,其特征在于,所述第一spg中的主节点接收所述第二spg的主节点反馈的第二udp报文之后,还包括:所述第一spg中的主节点向所述第一spg中的从节点发送第一会话消息,所述第一会话消息用于指示所述第一spg中的从节点备份会话。9.根据权利要求6-8任一项所述的方法,其特征在于,所述方法还包括:所述第一spg中的主节点在收到来自外部或内部的隧道报文后,对所述隧道报文进行解封装,更新本地会话信息;所述第一spg中的主节点向第一spg中的从节点发送包含所述更新本地会话信息的更新报文。10.根据权利要求9所述的方法,其特征在于,所述方法还包括:所述第一spg中的主节点向所述第一spg中的从节点发送第一心跳报文,和/或,所述第一spg中的主节点向所述第二spg中的主节点发送第二心跳报文;其中,所述第一心跳报文用于保活所述第一spg中的主节点和从节点之间的会话,所述第二心跳报文用于保活所述第一spg中的主节点和第二spg中的主节点之间的会话。11.一种会话处理方法,其特征在于,所述方法应用于一种负载均衡系统,所述系统包括第一网络层和第二网络层,所述第一网络层和所述第二网络层隧道连接,所述第一网络层中包括第一节点,所述第二网络层中包括第一慢速处理组spg和第二spg,所述方法包括:第二spg中的主节点接收第一spg中的主节点发送的第一用户数据报协议udp报文,所述第一udp报文中包括正向流五元组;所述第二spg中的主节点根据所述正向流五元组新建会话,并获取所述新建会话的反向流五元组;
所述第二spg中的主节点生成第二udp报文,所述第二udp报文中包括所述新建会话的反向流五元组;所述第二spg中的主节点向所述第一spg中的主节点发送所述第二udp报文。12.根据权利要求11所述的方法,其特征在于,所述方法还包括:所述第二spg中的主节点向所述第二spg中的从节点发送第二会话消息,所述第二会话消息用于指示所述第二spg中的从节点备份所述新建会话。13.根据权利要求11所述的方法,其特征在于,所述方法还包括:所述第二spg中的主节点接收所述第一节点发送的第三隧道报文;所述第二spg中的主节点对所述第三隧道报文解封装,根据解析后得到的第一原始报文的五元组查找本地会话;如果查找到,则向所述第一spg的主节点发送查找到会话的反向流五元组,以使所述第一spg的主节点根据所述反向流五元组和所述第一原始报文生成第四隧道报文。14.根据权利要求11-13任一项所述的方法,其特征在于,所述方法还包括:所述第二spg中的主节点接收来自所述第一spg的主节点发送的第二心跳报文,所述第二心跳报文用于保活所述第一spg中的主节点和第二spg中的主节点之间的会话;所述第二spg中的主节点向所述第二spg中的从节点发送第三心跳报文,所述第三心跳报文用于保活所述第二spg中的主节点和第二spg中的从节点之间的会话。15.一种会话处理装置,其特征在于,所述装置包括:第一发送模块,用于向第二网络层的第一慢速处理组spg中的主节点发送第一隧道报文,所述第一隧道报文中包括外部的第一原始报文的正向流五元组;第一接收模块,用于接收所述主节点根据所述正向流五元组反馈的第二隧道报文;第一处理模块,用于解析所述第二隧道报文,得到反向流五元组和所述第一原始报文,根据所述第一原始报文查找会话,以及补齐查找到会话的反向流五元组;利用补齐后的反向流五元组对所述第一原始报文做地址转换处理,生成第二原始报文;所述第一发送模块,还用于发送所述第二原始报文。16.一种会话处理装置,其特征在于,所述装置包括:第二接收模块,用于接收第一层网络中的第一节点发送的第一隧道报文;第二处理模块,用于解封装所述第一隧道报文得到第一原始报文,所述第一原始报文中包括正向流五元组;根据所述正向流五元组在本地会话列表中查找相匹配的会话;以及,将查找到相匹配的会话的反向流五元组和所述第一原始报文封装,生成第二隧道报文;或者,将未查找到,且从第二慢速处理组spg的主节点接收会话的反向流五元组,并结合所述第一原始报文封装,生成第二隧道报文;第二发送模块,还用于向所述第一节点发送所述第二隧道报文。17.一种会话处理装置,其特征在于,所述装置包括:第三接收模块,用于接收第一慢速处理组spg中的主节点发送的第一用户数据报协议udp报文,所述第一udp报文中包括正向流五元组;第三处理模块,用于根据所述正向流五元组新建会话,并获取所述新建会话的反向流五元组;以及生成第二udp报文,所述第二udp报文中包括所述新建会话的反向流五元组;第三发送模块,用于向所述第一spg中的主节点发送所述第二udp报文。
18.一种电子设备,其特征在于,包括处理器和存储器,所述存储器与所述处理器耦合;所述存储器上存储有计算机可读程序指令,当所述指令被所述处理器执行时,实现如权利要求1至5、或6至10、或11至14中任一项所述的会话处理方法。19.一种负载均衡系统,其特征在于,所述系统包括第一网络层和第二网络层,所述第一网络层和所述第二网络层隧道连接,所述第一网络层中包括第一节点,所述第二网络层中包括至少一个慢速处理组spg,其中,所述第一节点向第二网络层的第一spg中的主节点发送第一隧道报文,所述第一隧道报文中包括外部的第一原始报文的正向流五元组;所述第一spg中的主节点接收所述第一节点发送的第一隧道报文,解封装所述第一隧道报文得到第一原始报文,所述第一原始报文中包括正向流五元组;根据所述正向流五元组在本地会话列表中查找相匹配的会话;将查找到相匹配的会话的反向流五元组和所述第一原始报文封装,生成第二隧道报文;并结合所述第一原始报文封装生成第二隧道报文,以及向所述第一节点发送所述第二隧道报文;所述第一节点接收并解析所述第二隧道报文,得到反向流五元组和所述第一原始报文,根据所述第一原始报文查找会话,补齐查找到会话的反向流五元组,以及利用补齐后的反向流五元组对所述第一原始报文做地址转换处理,生成第二原始报文,并发送所述第二原始报文。20.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5、或6至10、或11至14中任一项所述的会话处理方法。

技术总结
公开了一种会话处理方法、装置、设备及负载均衡系统,该方法应用于一种负载均衡系统,系统包括第一网络层和第二网络层,第一网络层中包括第一节点,第二网络层中包括至少一个慢速处理组SPG,所述方法包括:第一节点向第二网络层的第一SPG中的主节点发送第一隧道报文,第一隧道报文中包括外部的第一原始报文的正向流五元组;接收主节点根据正向流五元组反馈的第二隧道报文,解析第二隧道报文得到反向流五元组和第一原始报文,根据第一原始报文查找会话以及会话的反向流五元组;补齐后的反向流五元组对第一原始报文做地址转换处理生成并发送第二原始报文。本方法不受传统单层网络的限制,可支持会话高可用下会话数随节点数的增加而线性增长。加而线性增长。加而线性增长。


技术研发人员:庄严 王剑
受保护的技术使用者:北京有竹居网络技术有限公司
技术研发日:2023.04.17
技术公布日:2023/7/7
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐