一种同步会话方法、装置、设备及存储介质与流程



1.本公开涉及人工智能领域,尤其涉及云计算、云网络技术等领域,可应用于智能云场景下。


背景技术:



2.现在大多数有状态的x86网络地址转换(network address translation,nat)网关都基于集或主备部署。当集中任意节点意外发生宕机或需要支持运维升级时,如不支持会话同步即使同集其他节点支持容灾,接收到该节点的流量后,也会因为没有会话无法做nat转换而只能丢包,直到应用层调整(reset)。因此会话同步对于有状态的且支持容灾的nat网关而言是必不可少的。其中,有状态表示nat网关会记录经过nat网关的设备流对应的nat前后状态信息,便于快速匹配会话并完成nat转换。


技术实现要素:



3.本公开提供了一种同步会话方法、装置、设备以及存储介质。
4.根据本公开的第一方面,提供了一种同步会话方法,方法包括:接收业务报文。其中,业务报文为应由第一nat设备转发且未转发的业务报文,第一nat设备为不同于第二nat设备的nat设备,第二nat设备为用于接收业务报文的nat设备。根据预先存储的同步会话信息,确定业务报文对应的会话参数。其中,同步会话信息用于描述预先构建的会话。基于会话参数将业务报文进行转发。本公开通过不同nat设备之间同步的同步会话信息,可以准确查询到漂移的业务报文对应的会话参数,从而将该业务报文准确的转发,避免了部分漂移的业务报文查询不到会话导致数据传输失败,保证了会话在更换nat设备后的接续。
5.根据本公开的第二方面,提供了一种同步会话装置,该装置包括:接收模块,用于接收业务报文,其中,业务报文为应由第一nat设备转发且未转发的业务报文,第一nat设备为不同于第二nat设备的nat设备,第二nat设备为用于接收业务报文的nat设备;确定模块,用于根据预先存储的同步会话信息,确定业务报文对应的会话参数,其中,同步会话信息用于描述预先构建的会话;发送模块,用于基于会话参数将所述业务报文进行转发。本公开通过不同nat设备之间同步的同步会话信息,可以准确查询到漂移的业务报文对应的会话参数,从而将该业务报文准确的转发,避免了部分漂移的业务报文查询不到会话导致数据传输失败,保证了会话在更换nat设备后的接续。
6.根据本公开的第三方面,提供了一种同步会话设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述第一方面中的任意一项方法。
7.根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行上述第一方面或第二方面中的任意一项方法。
8.根据本公开的第五方面,提供了一种计算机程序产品,包括计算机程序,计算机程
序在被处理器执行时实现上述第一方面或第二方面中的任意一项方法。
9.本公开提供的一种同步会话方法、装置、设备以及存储介质。通过不同nat设备之间同步的同步会话信息,可以准确查询到漂移的业务报文对应的会话参数,从而将该业务报文准确的转发,避免了部分漂移的业务报文查询不到会话导致数据传输失败,保证了会话在更换nat设备后的接续。
10.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
11.附图用于更好地理解本方案,不构成对本公开的限定。其中:
12.图1是本公开实施例的一种应用场景示意图;
13.图2是本公开实施例的一种同步会话方法流程图;
14.图3是本公开实施例的另一种同步会话方法流程图;
15.图4是本公开实施例的又一种同步会话方法流程图;
16.图5是本公开实施例的再一种同步会话方法流程图;
17.图6是本公开实施例的另一种同步会话方法流程图;
18.图7是本公开实施例的一种哈希索引同步会话信息示意图;
19.图8是本公开实施例的又一种同步会话方法流程图;
20.图9是本公开实施例的一种业务报文上送同步核示意图;
21.图10是本公开实施例的一种nat设备同步会话架构示意图;
22.图11是本公开实施例的另一种nat设备同步会话架构示意图;
23.图12是本公开实施例的一种同步报文处理示意图;
24.图13是本公开实施例的一种同步会话状态机制示意图;
25.图14是本公开实施例的又一种nat设备同步会话架构示意图;
26.图15是本公开实施例的一种同步会话装置示意图;
27.图16是本公开实施例的一种同步会话设备示意图。
具体实施方式
28.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
29.本公开主要应用的场景,例如可以是网络功能虚拟化(network functions virtualization,nfv)集中对数据进行转发的场景。例如图1所示出的,该场景100中可以包括进行通信的通信设备101和用于转发通信数据的nat设备102。其中,一个或多个nat设备102构成了nfv集。可以理解的是,每个nat设备102可以是运行在虚拟机上的虚拟nat设备。例如,图1中的通信设备101可以包括通信设备a、通信设备a、通信设备b、通信设备b、通信设备c和通信设备c等,nat设备102可以包括nat设备1和nat设备2等。可以理解的是,图1中所示出的通信设备101、nat设备102的数量仅为示意性的,可以根据实际情况包括更多或
更少的设备,本公开不作限定。
30.通过图1可以看出,假设通信设备a与通信设备a进行通信,通信设备a与通信设备a可以通过nat设备1创建对应的会话(session),例如可以首先通过tcp报文进行三次握手后创建会话。之后,通信设备a与通信设备a之间的持续传输的通信数据,例如业务报文,则可以通过nat设备1进行转发以使得相应的通信设备可以准确接收到通信数据。
31.同理,例如图1中的通信设备b与通信设备b也可以通过nat设备1进行通信,以及,通信设备c与通信设备c也可以通过nat设备2进行通信。
32.在一些相关技术中,目前基于x86的nat网关的会话为了避免多核对公共资源的竞争而导致相互阻塞,都是每个转发核单独存储相应的会话信息。其中,nat网关也指nat设备(或称转发节点),nat设备中可以包括一个或多个转发(worker)核,每个转发核可以存储相应数量的会话信息,以用于不同会话对应的通信数据进行转发。在现有方案中,通过损耗一定worker核的性能,在会话完成创建时构建同步报文,该同步报文中包含填充会话时所涉及到的报文元组信息,并发送到nfv集中的其它nat设备。这使得发送同步报文的nat设备和接收同步报文的nat设备需要保证同配,即配置需要相同。例如,配置可以包括硬件配置、系统配置等。在该方案中,接收同步报文的nat设备中需要以相同的worker核接收同步报文并解析处理。即,假设发送同步报文的nat设备中构建同步报文的为worker核1,则对应的,接收同步报文的nat设备中同样以worker核1接收同步报文并解析处理。
33.该方案整体则可能存在一些缺陷,例如,同步会话会占用内存,接收方收到会话后,会在worker核上创建一份相应的会话。但是因为nfv集中往往支持上亿级别的会话数量,使得同步的会话会占用nat设备中大量的内存。并且,worker核负责组建发送以及接收解析同步报文会对自身有一定的性能损耗。同时在该方案中,nfv集中的各个nat设备需要同配置。但是当以nfv形态支持此功能时,要求nfv集中所有nat设备配置相同是很困难的。
34.因此,本公开提供了一种同步会话方法、装置、设备以及存储介质。通过不同nat设备之间同步的同步会话信息,可以准确查询到漂移的业务报文对应的会话参数,从而将该业务报文准确的转发,避免了部分漂移的业务报文查询不到会话导致数据传输失败,保证了会话在更换nat设备后的接续。
35.接下来将结合附图对本公开进行详细阐述。
36.图2是本公开实施例的一种同步会话方法流程图。
37.基于图1所示出的场景,本公开还提供了一种同步会话方法。该方法通常可以应用于图1所示出的nfv集中的nat设备上。nat设备可以是运行在服务器或者服务器集上的虚拟机,即虚拟nat设备。可以理解的是,一个服务器或者服务器集上可以运行一个或多个虚拟机。在一些例子中,服务器或者服务器集也可以成为网络设备
38.当然,在另一些例子中,该方法还可以应用于终端设备。其中,终端设备例如可以包括但不限于手机、可穿戴设备、平板电脑、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本、个人数字助理(personal digitalassistant,pda)、膝上型计算机(laptop)、移动电脑、增强现实(augmented reality,ar)设备、虚拟现实(virtual reality,vr)设备、人工智能(artificial intelligence,ai)设备和/或车载设备等任意终端设备或便携式终端设备,本公开不作限
定。
39.可以理解,本公开将以运行在网络设备为例进行描述,例如运行在服务器或者服务器集上构成的nfv集中的nat设备,但应当理解上述设定并不作为对本公开的限定。
40.本公开所涉及的方法可以包括以下步骤:
41.s201,接收业务报文。
42.在一些例子中,当前nat设备可以接收业务报文。可以理解的是,通常该业务报文可以是某通信设备基于相应会话传输的通信数据。例如图1中相应的两个通信设备((如通信设备a、通信设备a)或(如通信设备b、通信设备b)或(如通信设备c、通信设备c))之间建立会话后传输的通信数据。其中,业务报文为应由第一nat设备转发且未转发的业务报文,第一nat设备为不同于第二nat设备的nat设备,第二nat设备为用于接收业务报文的nat设备。
43.可以理解的是,当前nat设备可以为当前接收到漂移的业务报文的nat设备,即第二nat设备。
44.s202,根据预先存储的同步会话信息,确定业务报文对应的会话参数。
45.在一些例子中,当前nat设备可以根据预先存储的同步会话信息,确定与该业务报文对应的会话参数。其中,同步会话信息可以用于描述预先构建的会话。例如,同步会话信息包括用于构建会话的关键要素。
46.例如,s201接收到的业务报文为漂移的业务报文(或称漂移流量),当前nat设备可以查询预先存储的同步会话信息。对于当前nat设备而言,一部分通信设备本身基于该当前nat设备转发通信数据,例如,假设通信设备d与通信设备d之间通信之前,可以基于该当前nat设备构建会话,例如通过tcp报文进行三次握手,之后构建相应的会话。此时,对于通信设备d与通信设备d之间传输的业务报文,当前nat设备可以直接查询到相应的会话信息。从而基于该会话信息对通信设备d与通信设备d之间传输的业务报文进行转发。而对于漂移到当前nat设备的业务报文,由于在进行tcp报文三次握手时并未通过当前nat设备构建相应的会话。例如,假设通信设备e与通信设备e之间通过其它nat设备构建会话,但其它nat设备可能因为一些特殊原因,无法继续转发通信设备e与通信设备e之间通信所传输的业务报文。如其它nat设备宕机、设备升级等因素。此时通信设备e与通信设备e之间通信所传输的业务报文则可能漂移到该当前nat设备上。对于当前nat设备由于自身并未构建相应的会话,因此可以查询根据预先存储的同步会话信息,从同步会话信息中确定出通信设备e与通信设备e之间通信所传输的业务报文对应的会话参数。
47.显而易见的是,其它nat设备可以是nfv集中除当前nat设备以外的其它任意一个nat设备。在一些例子中,其它nat设备可以是上述提到的第一nat设备。
48.可以理解的是,预先存储的同步会话信息可以是nfv集中的各nat设备预先同步后保存的。显然,同步后各nat设备的同步会话信息将包含其它nat设备构建的会话参数。
49.s203,基于会话参数将业务报文进行转发。
50.在一些例子中,当前nat设备可以基于s202中确定的会话参数,将s201中接收到的业务报文进行转发。
51.在一些例子中,当前nat设备可以利用s202中确定的会话参数构建出完整的会话,并基于构建得到的完整会话,将s201中接收到的业务报文进行转发。
52.本公开可以利用不同nat设备之间同步的同步会话信息,查询到漂移的业务报文
对应的会话参数。并基于查询到的会话参数将该业务报文准确的转发。可以避免漂移的业务报文查询不到会话导致数据传输失败,同时保证了在更换nat设备后会话可以实现接续。
53.在一些实施例中,同步会话信息可以包括第一同步会话信息。其中,第一同步会话信息用于描述第一nat设备预先构建的会话。如图3所示出的,本公开实施例的另一种同步会话方法流程图,其中,第一同步会话信息预先通过第一nat设备发送的第一同步报文确定。因此,该方法还可以包括以下步骤:
54.s301,接收第一同步报文。
55.在一些例子中,当前nat设备还可以接收第一同步报文。其中,该第一同步报文可以是其它nat设备发送的。第一同步报文中可以包括第一同步会话信息。可以理解的是,第一同步会话信息可以为其它nat设备构建的会话信息所对应的会话参数,并且可以用于描述其它nat设备构建的会话。
56.在一些例子中,为了避免同步会话信息过大导致占用nat设备内存,其它nat设备可以根据自身构建的会话信息确定对应的会话参数。其中,会话参数相比于会话信息占用空间更少,并且对于其它nat设备可以基于少量的信息(即会话信息)重新生成对应的会话。其它nat设备可以将占用空间更少的会话参数作为第一同步会话信息发送至当前nat设备上。
57.s302,保存第一同步会话信息。
58.在一些例子中,当前nat设备可以将s301中获取到的第一同步会话信息进行保存。
59.可以理解的是,通常s301、s302应当在s202之前执行。当然,在一些情况表也可以同步执行,使得s202直接利用s301得到的同步会话信息查询业务报文对应的会话参数,本公开不作限定。
60.本公开通过接收其它nat设备发送的同步报文,以便可以查询到其它nat设备构建的会话参数。使得当接收到漂移业务报文时,可以基于同步得到的会话信息进行报文转发,保证了会话的接续。
61.在一些实施例中,同步会话信息可以包括第二同步会话信息。其中,第二同步会话信息可以是用于描述第二nat设备自身预先构建的会话。对于第二同步会话信息可以采用如下方式获得:根据本地存储的本地会话信息得到第二同步会话信息;和/或,根据第一同步会话信息得到第二同步会话信息。
62.在一些例子中,部分通信设备本身基于当前nat设备构建会话并进行通信。由于这类会话通过当前nat设备构建,因此此类会话对应的会话信息可以称为本地会话信息。本地会话信息构建完成后会存储在当前nat设备上,则当前nat设备可以基于存储在本地的本地会话信息,得到第二同步会话信息。
63.在另一些例子中,对于当前nat设备接收到的第一同步会话信息,在经过预先设定的特定时长之后,可以转换为第二同步会话信息。例如,对于某个会话而言,构建其会话的nat设备可以称为主设备,而nfv集中除主设备之外的其余nat设备可以称为备用设备。假设对于某个会话,其对应的主设备因为某些原因导致无法转发会话对应的业务报文,则可以通过任意一个备用设备基于第一同步会话信息进行临时转发,避免会话中断。而当主设备在预设的特定时长之内仍然未恢复,即主设备经过预设的特定时长后仍然无法为该会话提供业务报文的转发。此时可以将代为转发业务报文的备用设备更新为主设备,并且将该
备用设备中存储的与该会话对应的第一同步会话信息转换为第二天同步会话信息。以使得后续该会话将由更新后的主设备进行业务报文的转发。
64.如图4所示出的,图4是本公开实施例的又一种同步会话方法流程图,该方法还可以包括以下步骤:
65.s401,根据第二同步会话信息,生成第二同步报文。
66.在一些例子中,当前nat设备可以根据第二同步会话信息,生成相应的第二同步报文。可以理解的是,第一同步报文为当前nat设备接收到其它nat设备发送的同步报文,而第二同步报文为当前nat设备用于向其它nat设备发送的同步报文。
67.在一些例子中,当前nat设备还可以在具有一定数量的第二同步会话信息之后,生成第二同步报文。
68.s402,向第一nat设备发送第二同步报文。
69.在一些例子中,当前nat设备将s401生成的第二同步报文发送至其它nat设备上。以前其它nat设备(即第一nat设备)可以根据第二同步报文中的第二同步会话信息,将相应的业务报文进行转发。
70.本公开的nat设备可以将本地的会话信息同步给其它nat设备,从而使得其它nat设备当接收到漂移的业务报文时,可以基于同步的会话信息完成业务报文的转发,保证了会话的接续。
71.在一些实施例中,如图5所示,图5是本公开实施例的再一种同步会话方法流程图。若根据本地存储的本地会话信息得到第二同步会话信息,则该方法还可以包括以下步骤:
72.s501,接收会话建立报文。
73.在一些例子中,当前nat设备可以接收会话建立报文。例如,假设通信设备f和通信设备f以当前nat设备作为中间通信时的转发设备,则在构建会话之前可以通过发送会话建立报文至当前nat设备,以完成相应的会话构建。其中,会话建立报文例如可以是tcp报文。
74.当然,在其它例子中,会话建立报文也可以根据实际情况进行等效替换或根据实际情况采用相应的报文,本公开不作限定。
75.s502,根据会话建立报文构建与会话建立报文对应的本地会话信息。
76.在一些例子中,当前nat设备可以根据s501接收到的会话建立报文,构建与该会话建立报文对应的本地会话信息。
77.在一些例子中,当前nat设备可以采用三次握手的方式基于会话建立报文构建相应的会话,此类会话由于为当前nat设备构建的,因此此类会话对应的会话信息可以称为本地会话信息。也就是说,当前nat设备自身构建的会话对应的会话信息均可称为本地会话信息。
78.在一些示例中,s401中根据第二同步会话信息,生成第二同步报文,可以包括:若本地会话信息保持时长满足第一预设时长,根据第二同步会话信息生成第二同步报文。
79.可以理解,若本地会话信息保持时长满足第一预设时长,则可以认为该本地会话信息对应的会话为长链接会话。此时则可以根据属于长链接的本地会话信息对应得到的第二同步会话信息,生成第二同步报文,并将第二同步报文进行同步,以使得其它nat设备可以接收到本地会话信息对应的同步会话信息。若当前nat设备因为一些因素无法转发本地会话信息对应的业务报文时,则该业务报文可以漂移到其它nat设备,并由其它nat设备基
于第二同步报文得到的同步会话信息查询到相应会话,并将该业务报文进行转发。
80.本公开可以将属于长链接的本地会话信息对应的同步会话信息进行同步,从而避免了同步临时建立的会话,从而降低同步会话信息所占用的空间。同时也避免了占用过多的传输资源。
81.在一些实施例中,根据第一同步会话信息得到第二同步会话信息,可以包括:若在第二预设时长内,接收到第一预设次数的业务报文,则根据第一同步会话信息得到第二同步会话信息。
82.在一些例子中,对于当前nat设备接收到的第一同步会话信息,若在预设的第二预设时长内,持续接收到基于该第一同步会话信息进行转发的业务报文,则可以根据第一同步会话信息得到对应的第二同步会话信息。例如,可以将第一同步会话信息转换为第二同步会话信息。
83.在一些例子中,持续接收到基于该第一同步会话信息进行转发的业务报文,例如可以设定为每间隔某时长就接收到该业务报文,又或者可以是在一定时间内接收到预设数量的业务报文,具体可以根据实际情况进行设定,本公开不作限定。
84.例如,对于部分业务报文,由于原本应该为其转发的其它nat设备可能因为一些原因无法进行转发,而漂移到当前nat设备。此时,当前nat设备可以基于第一同步报文查询到漂移的业务报文对应的会话信息,并进行转发。但当经过预设的第二预设时长后,可能为该业务报文转发的其它nat设备仍然没有恢复,即仍然无法对该业务报文进行转发。对于该业务报文而言,可以将当前nat设备作为主设备。此时,当前nat设备可以将该业务报文对应的第一同步会话信息转换为第二同步会话信息,也就是说将从其它nat设备同步得到的会话信息转换为本地会话信息。对于当前nat设备,则可以通过同步第二同步会话信息的方式,该业务报文对应的同步会话信息,主动同步给其它nat设备。
85.可以理解,若当前nat设备不根据第一同步会话信息得到对应的第二同步会话信息,则当前nat设备是不会主动将该业务报文对应的会话信息(即第一同步会话信息)对外进行同步的,也就是说,不会主动发送第一同步会话信息至其它nat设备。显然,假设当前nat设备也因为一些情况无法对该业务报文进行转发时,对于后续新接入nfv集中的新的nat设备则不会查询到该业务报文对应的会话信息(由于此时没有nat设备主动同步该业务报文对应的会话信息),将可能出现会话中断的情况。
86.在一些例子中,第二预设时长也可以称为抖动时长,顾名思义,抖动时长的作用在于防抖,也就是避免临时性的网络抖动引发的业务报文漂移。
87.本公开将部分满足条件的其它nat设备接收到的同步会话信息转换为本地会话信息,从而可以主动向其它nat设备继续分享同步,保证了会话信息可以持续的在nfv集中进行同步。提升了nfv集容灾能力。
88.在一些实施例中,s401中根据第二同步会话信息,生成第二同步报文,还可以包括:若在第三预设时长内,接收到第二预设次数的业务报文,根据第二同步会话信息生成第二同步报文。
89.在一些例子中,当前nat设备可以在预设的第三预设时长内,确定持续接收到业务报文时,根据第二同步会话信息生成第二同步报文。
90.例如,当前nat设备在第三预设时长内,持续接收到业务报文,此业务报文可以是
通过本地会话信息进行转发的业务报文。则可以认为本地会话信息持续接收到相应的流量(即业务报文),可以认定本地会话信息对应的会话没有中断,则当前nat设备可以将第二同步会话信息向其它nat设备进行同步。例如生成与第二同步会话信息对应的第二同步报文。
91.可以理解的是,第一预设时长、第二预设时长和第三预设时长可以根据实际情况选择具体数据,可以相同或不同,本公开不作限定。
92.本公开可以在持续接收到的与本地会话信息相关的业务报文时,根据本地会话信息生成同步报文并发送至其它nat设备。使得保持连接的会话对应的会话信息进行同步,而临时创建的会话无需同步,在节省同步信息资源的同时,还可以保证持续连接的会话被同步,提高了nfv集的容灾能力。
93.在一些实施例中,如图6所述,图6是本公开实施例的另一种同步会话方法流程图。s202中根据预先存储的同步会话信息,确定业务报文对应的会话参数,还可以包括以下步骤:
94.s601,根据业务报文携带的五元组信息,确定业务报文对应的哈希值。
95.在一些例子中,业务报文中可以携带有五元组信息,五元组可以包括源ip地址、源端口、目的ip地址、目的端口和传输层协议这五个信息。其中“源”表示发送业务报文的源设备,“目的”表示接收业务报文的目的设备。当前nat设备可以获取到业务报文中携带的五元组信息,并按照预设的计算方式计算得到业务报文对应的哈希(hash)值。
96.可以理解,具体哈希值的计算方式可以参考现有方式实现,本公开不再赘述。
97.s602,基于预先配置的哈希值和同步会话信息之间的对应关系,根据业务报文对应的哈希值,确定业务报文对应的同步会话信息。
98.在一些例子中,当前nat设备可以基于预先配置的哈希值和同步会话信息之间的对应关系,根据s601中得到的业务报文对应的哈希值,确定业务报文对应的同步会话信息。
99.例如,nat设备可以预先将存储的同步会话信息与相应的哈希值建立对应关系。也就是说,可以令每个同步会话信息唯一对应一个哈希值。在一些例子中,考虑到预先配置的哈希值其数量可能具有一定局限性,因此可以将每个哈希值配置成一个哈希桶。也就是说每个哈希值对应一个哈希桶,而每个哈希桶中可以映射一个或同步会话信息。例如,某个哈希值对应的哈希桶可以映射一个或多个第一同步会话信息;又或者,某个哈希值对应的哈希桶可以映射一个或多个第二同步会话信息;又或者,某个哈希值对应的哈希桶可以映射一个或多个第一同步会话信息,以及一个或多个第二同步会话信息。
100.s603,根据业务报文对应的同步会话信息,得到业务报文对应的会话参数。
101.在一些例子中,当前nat设备存储的同步会话信息可以包括地址转换前后对应的五元组信息。例如包括发送、接收双向的地址转换前后对应的五元组信息。假设通信设备g与通信设备g进行通信,通信设备g发送业务报文至通信设备g,但需要当前nat设备进行转发。则通信设备g发送的业务报文携带的五元组信息。当前nat设备对业务报文携带的第一五元组信息进行地址转换后,可以得到第二五元组信息。之后,当前nat设备可以基于第二五元组信息确定向外转发时的第三五元组信息。然后,可以对第三五元组信息再次进行地址转换得到第四五元组信息。可以理解,第四五元组信息可以认为是业务报文对应的会话参数。
102.在一些例子中,当前nat设备可以基于第四五元组信息,即业务报文对应的会话参
数,构建出业务报文完整的会话,并将业务报文进行转发。
103.在一些例子中,同步会话信息可以记为sync-meta,可以包含相应会话的属性、状态、地址转换前后五元组信息等参数。但并非包含完整的会话。因此可以认为是一种迷你(mini)会话信息。在一些例子中,第一同步会话信息可以记为remote-sync-meta,表示远端设备(即其它nat设备发送的)同步会话信息。第二同步会话信息可以记为local-sync-meta,表示本地同步会话信息。可以理解,本公开通过同步sync-meta,同步会话信息占用更少的内存,便于维护并且降低维护和查询的性能负担。
104.如图7所示,图7是本公开实施例的一种哈希索引同步会话信息示意图。可以看出,每个哈希值对应的一条长链可以看作是一个哈希桶,链上可以包括一个或多个节点。相应的,节点可以对应local-sync-meta,也可以对应remote-sync-meta。当然,每个哈希值可以对应有多个local-sync-meta,也可以对应有多个local-sync-meta,本公开不作限定。
105.当前nat中存储的会话可以表示同步会话信息,以图7为例,发送方向和接收方向的remote-sync-meta同时指向同一个session,表示通过哈希值与同步会话信息之间的对应关系,将发送方向、接收方向的五元组信息计算得到的哈希值,同时关联同一个同步会话信息,以保证该会话对应的通信设备可以相互传输数据。
106.本公开通过哈希值索引到相应的同步会话信息,便于同步会话信息的管理。同时基于业务数据特定的五元组计算哈希值,可以提升查询到同步会话信息的效率。
107.在一些实施例中,图8是本公开实施例的又一种同步会话方法流程图,如图8所示,在s202在根据预先存储的同步会话信息,确定业务报文对应的会话参数之前,该方法还可以包括以下步骤:
108.s801,根据业务报文确定用于转发业务报文的转发核。
109.在一些例子中,当前nat设备还可以根据s201接收到的业务报文,确定用于转发该业务报文的转发核。
110.在一些例子中,当前nat设备上可以包括一个或多个worker核,用于转发相应会话对应的业务报文。当nat设备接收到业务报文后,可以确定该业务报文对应的转发核。该转发核用于后续转发该业务报文。可以理解,在数据平面开发套件(data plane development kit,dpdk)运行至完成(run-to-completion,rtc)模式的场景下,worker核作为数据面转发核。其中,rtc模式表示在该模式下worker核从收到报文一直到完成发送报文均在自身worker核内完成。
111.通常情况下,若nat设备上存储有业务报文对应的会话信息,则可以直接基于相应的会话信息将业务报文进行转发。
112.s802,基于预先配置的转发核与同步核之间的对应关系,确定与用于转发业务报文的转发核相对应的同步核。
113.在一些例子中,当前nat设备可以基于预先配置的转发核与同步(syncher)核之间的对应关系,确定s801确定的转发核所对应的syncher核。其中,syncher核中预先存储有同步会话信息,即包括第一同步会话信息和/或第二同步会话信息。
114.在一些例子中,每个worker核对应一个syncher核,而每个syncher核可以对应一个或多个worker核。这样,nat设备的一个syncher核可以为多个worker核进行会话同步,并且提供其它nat设备同步来的会话信息。
115.可以看出,本公开在dpdk rtc模式下的引入行的syncher核,用于存储同步信息,进而减轻了worker核的负担。
116.本公开通过提供独立的同步核用于同步会话信息,可以支持不同配置的nat设备进行会话同步。同时,还可以减轻worker核的同步过程对worker核带来的性能损耗。
117.在一些实施例中,该方法还可以包括:若接收到多个属于同一个数据流的业务报文,则基于接收到的首个业务报文,确定同步核。
118.在一些例子中,当前nat设备若接收到属于同一个会话的多个业务报文。其中,同一个会话的多个业务报文可以是属于同一个数据流。则当前nat设备可以基于接收到的第一个业务报文确定出对应的worker核以及对应的syncher核。
119.在一些例子中,可以将首个业务报文上送到确定出的syncher核中,以便查询到相应的会话信息。
120.可以理解,上述过程可以避免针对同一个会话进行多次查询,从而造成资源浪费、占用过多通信带宽等情况。
121.例如图9所示,图9是本公开实施例的一种业务报文上送同步核示意图。可以看出,worker核中可以包括会话列表901、去重哈希表902。syncher核中可以包括同步会话信息903。转发核可以将接收到的业务报文临时存储在会话列表901中。并且可以基于业务报文的五元组信息计算哈希值,并基于计算得到的哈希值存储在去重哈希表902中的相应位置。由于属于同一数据流(即同一会话)的业务报文其五元组信息相同,因此计算得到的哈希值也相同。worker核可以针对哈希值相同的业务报文,将接收到的第一个业务报文发送至syncher核中,通过同步会话信息903查询对应的同步会话信息。
122.可以理解的是,图9中传输的消息队列,可以是worker核传输的业务报文。其中worker核与syncher核之间的通信可以称为核间通信。显然,当syncher核查询到相应的sync-meta后,也可以采用核间通信的方式将查询到的sync-meta回传给worker核。以便worker核基于sync-meta构建出完整的会话,并基于构建得到的完整会话将业务报文进行转发。
123.在一些例子中,本公开所涉及的nat设备为有状态nat网关(nat gateway,ngw)。
124.本公开针对同一数据流的多个业务报文,仅选择其中一个业务报文到同步核中查询会话信息,避免了大量数据查询同步核导致的性能下降。
125.在一些实施例中,图10是本公开实施例的一种nat设备同步会话架构示意图。如图10所示,该nat设备可以接收来自rss(receive side scaling)网卡分发的业务报文。其中,rss是一种网卡驱动方式,用于网卡进行负载均衡,将报文分散在不同的队列中。该架构可以包括rss 1001、接收队列1002、发送队列1003、转发核1004和同步核1005。其中,接收队列1002、发送队列1003、转发核1004和同步核1005可以构成nat设备。当然,在一些例子中,nat设备还可以包括更多核,例如虚拟网卡(virtualised network interface card,vnic)cpu、地址解析协议(address resolution protocol,arp)cpu、控制(control)cpu以及监测(monitor)cpu。其中,vnic cpu可以收发vnic数据包,arp cpu可以更新邻居信息,control cpu可以监控状态以及进行丢弃(dump)定时,monitor cpu可以用于配置信息下发。当前在一些例子中,还可以包括更多或更少的核,即cpu。并且每个cpu可以根据实际情况分配相应的任务,本公开不作限定。
126.当rss1001接收到漂移的业务报文时,可以根据该业务报文存储在接收队列1002中。在一些例子中,接收队列1002可以包括多个队列,例如接收队列0、接收队列1、同步接收队列等等。对于漂移的业务报文,通常可以缓存在接收队列1002中的同步接收队列中。在一些例子中,nat设备可以基于业务报文的五元组计算哈希值(hash-value),并根据该hash-value确定对应的worker核1004。在一些例子中,每个worker核对应一个接收队列。例如worker 0可以对应接收队列0,worker 1可以对应接收队列1等等。当然,对于同步接收队列,则可能对应任意worker核。
127.相应的worker核1004可以从对应的接收队列中获取到漂移的业务报文。由于该业务报文对应的session并不是当前nat设备构建的。因此worker核1004中也没有相应session的会话信息。此时,worker核1004可以基于预先配置的与syncher核1005之间的对应关系,确定可以查询同步会话信息的syncher核1005。可以理解的是,worker核1004中的转发核会话列表中存储的是当前nat设备构建的会话信息。
128.在一些例子中,一个syncher核1005可以对应多个worker核1004。例如,worker 0、worker 1、worker 2可以对应syncher 0。也就是说,一个syncher核1005可以为多个worker核1004提供同步会话信息。
129.当syncher核1005接收到worker核1004发送的业务报文后,可以查询存储在syncher核1005中的同步会话信息列表。其中,同步会话信息列表中可以包括上述提到的第一同步会话信息(即remote-sync-meta)和第二同步会话信息(即local-sync-meta)。可以理解,通常情况下查询到的都是remote-sync-meta。之后,syncher核1005可以将业务报文携带查询到的remote-sync-meta再次通过核间通信到worker核1004。当然,在一些例子中,若转发核中记录了业务报文,则同步核1005可以仅将查询到的remote-sync-meta反馈给worker核1004。
130.当worker核1004接收到业务报文对应的remote-sync-meta后,可以基于remote-sync-meta以及worker核1004中存储的通用的会话参数,将业务报文对应的session进行构建。并基于构建的session将业务报文进行转发。
131.在一些例子中,worker核1004可以将业务报文存储在发送队列1003中与该worker核1004对应的发送队列中,以便后续将业务报文进行转发。可以理解的是,发送队列1003与接收队列1002相类似可以包括多个发送队列,例如发送队列0、发送队列1、同步发送队列等等。worker核1004可以根据构建出的session将业务报文缓存在与worker核1004对应的发送队列中。可以理解的是,对于发送队列,通常缓存在与worker核对应的发送队列中,例如worker 0对应发送队列0,worker 1对应发送队列1等。
132.当然,在一些例子中,worker核在构建完业务报文相应的session后,可以保存该session,以便后续再接收到与该session有关的业务报文,可以直接基于该session进行转发。
133.在一些例子中,当nat设备接收到漂移的业务报文后,可以判断该业务报文对应的会话是否为长链接,即会话保持时间是否满足预设的时长,例如可以是第四预设时长。当确定该会话为长链接时,可以执行后续步骤,即通过业务报文的五元组计算哈希值,从而确定对应的worker核1004。可以理解的是,该过程是为了避免接收到由于网络抖动漂移来的业务报文,此类业务报文可以只是短暂的漂移到该nat设备,nat设备可以对此进行忽略,从而
避免造成通信资源的浪费,以及避免不必要的查询、业务报文转发。
134.可以理解,上述图10中的syncher核数量可以包括一个或多个,具体可以根据实际情况进行增加,从而提升nat设备容灾的能力。通过syncher核存储其它nat设备同步得到的会话信息,可以适配不同规格配置的nat设备。
135.在一些实施例中,图11是本公开实施例的另一种nat设备同步会话架构示意图。
136.如图11所示,本公开还提供了另一种nat设备同步会话架构。该架构与图10所示架构相类似,可以包括rss 1101、接收队列1102、发送队列1103、转发核1104和同步核1105。其中,相应装置、模块具体可以参考图10中的相应描述,本公开在此不再赘述。
137.在图11中,rss 1101可以接收其它nat设备发送的同步报文,即第一同步报文。通常情况下,dpdk给予报文五元组信息将第一同步报文缓存在接收队列1102中的同步接收队列中并等待批量处理。之后,可以基于预先配置的worker核1104与syncher核1105之间的对应关系,在上送同步报文时可以到唯一的syncher核1105。在一些例子中,若存在多个syncher核1105,则可以从多个syncher核1105中到唯一的syncher核1105。
138.在一些例子中,可以通过同步报文的五元组信息计算哈希值,并根据预先配置的哈希值与worker核1104之间的对应关系,确定相对应worker核1104。然后再根据预先配置的worker核1104与syncher核1105之间的对应关系,确定唯一的syncher核1105。但应当注意的是,该过程同步报文无需经过worker核1104,而是直接上送到syncher核1105中,从而无需占用worker核1104的性能。
139.syncher核1105在接收到第一同步报文后,可以将第一同步报文中携带的第一同步会话信息,即remote-sync-meta保存在syncher核1105中的同步会话信息列表中。
140.上述过程完成了当前nat设备同步其它nat设备的会话信息。
141.在一些例子中,对于部分由当前nat设备构建的session,通常存储在相应的worker核1104中的转发核会话列表。worker核1104可以采用核间通信的方式,将转发核会话列表存储的本地会话信息,提取出部分关键信息构成local-sync-meta。当然,在一些例子中,也可以直接将本地会话信息作为local-sync-meta,本公开不作限定。之后,worker核1104可以将local-sync-meta发送至syncher核1105,并保存在同步会话信息列表中。在一些例子中,worker核1104可以基于local-sync-meta生成同步源数据,并将同步源数据发送至当前nat设备的syncher核1105。
142.对于syncher核1105,其同步会话信息列表中存储的local-sync-meta可以用于对外进行会话信息的同步。因此,在一些例子中,syncher核1105可以根据同步会话信息列表中存储的local-sync-meta,生成第二同步报文。其中,第二同步报文可以位于syncher核1105中的同步报文优先级缓存队列中。之后,syncher核1105可以将同步报文优先级缓存队列中的第二同步报文按照列表中的顺序,缓存至发送队列1103中的同步发送队列。以用于将第二同步报文发送给其它nat设备,从而实现将本地会话信息进行会话同步。
143.可以理解,由于可以存着多个syncher核,因此不同的syncher核可以用于处理特定的同步报文,并且在接收其它nat设备发送的同步报文后,对同步报文进行优化处理。
144.上述过程完成了当前nat设备向其它nat设备同步本地会话信息。
145.在一些实施例中,如图12所示,图12是本公开实施例的一种同步报文处理示意图。假设nat设备1与nat设备2进行会话同步。nat设备1中可以包括多个worker核和至少一个
syncher核,例如worker核1、worker核2、syncher核1等。以nat设备1包含2个worker核以及1个syncher核为例进行描述。假设worker 1、worker 2中均包含相应的本地会话信息,则各worker和可以将各自存储的本地会话信息,得到相应的local-sync-meta,并通过各自worker核的消息队列将local-sync-meta发送至nat设备1中的syncher核。例如worker 1消息队列1201、worker 2消息队列1202分别将各自worker核对应的local-sync-meta发送至syncher1中。syncher核可以基于接收到的local-sync-meta生成对应的第二同步报文,并存储在同步核1中的同步报文优先级缓存队列1203中。之后,可以通过nat设备1的同步发送队列1204将第二同步会话发送至其它nat设备。
146.对于nat设备2,与nat设备1相类似,可以通过其中任意一个转发核接收到,并基于对应的消息队列转发给nat设备2的syncher核。例如,nat设备1包含2个worker核,即worker 3、worker 4;以及1个syncher核,即syncher 2。则可以由任意一个worker核对应的转发队列,如worker3消息队列1205或worker 4消息队列1206将接收到的同步报文转发至syncher 2,可以理解的是,第二同步报文对于nat设备2而言是其它nat设备发送的同步报文,因此nat设备2可以将nat设备1发送的第二同步报文,看作是第一同步报文。可以理解的是,第二同步报文指代自身nat设备生成并发送的同步报文,而第一同步报文指代其它nat设备发送的同步报文。
147.对于nat设备2的syncher核,可以将接收到的同步报文中携带的同步会话信息存储到同步核2中的同步会话信息列表1207中。
148.可以理解的是,若存在更多或更少worker核,以及存更多syncher核时,其处理过程与图12所示相类似。
149.在一些实施例中,图13是本公开实施例的一种同步会话状态机制示意图。如图13所示,本公开还提供了一种同步会话状态机制。可以看出,对于nat设备,可以包括本地会话信息,以及从其它nat设备同步得到的远端会话信息。其中,远端会话(remote session)信息即为remote-sync-meta。相应的,本地会话信息可以对应local-sync-meta。
150.例如,图13中的示例1,假设local-sync-meta对应的会话在预设的时长,例如第五预设时长内仍然没有接收到相应的业务报文,则可以将该local-sync-meta进行老化。可以理解,老化就是将对应的session以及相应的会话信息删除,从而释放部分资源。避免worker核和/或syncher核中存储大量无用的会话信息。
151.又例如,图13中的示例2,假设local-sync-meta对应的会话保持时长满足预设的时长,例如第一预设时长,则可以判断该local-sync-meta为长链接,可以直接将该local-sync-meta向外进行同步。例如生成第二同步报文并发送给其它nat设备。
152.当然,对于判断为长链接的local-sync-meta,若在第七预设时长内没有接收到相应的业务报文,则可以将该local-sync-meta进行老化。
153.又例如,图13中的示例3,假设remote-sync-meta转换为local-sync-meta后,在一定时间内没有接收到相应的业务报文,例如第六预设时长,则可以将该local-sync-meta再次转换为remote-sync-meta。在一些例子中,第六预设时长可以与第二预设时长设置为相同时长,或称防抖时长。此时,若remote-sync-meta仍然没有接收到相应的业务报文,例如在第八预设时长内没有接收到相应的业务报文,则可以对该remote-sync-meta进行老化。
154.又例如,图13中的示例4,假设remote-sync-meta转换为local-sync-meta后,若持
续接收到相应的业务报文,例如第九预设时长内接收到第三预设次数的业务报文,则可以将该local-sync-meta向外进行同步。例如生成第二同步报文并发送给其它nat设备。
155.又例如,图13中的示例5,假设remote-sync-meta在预设第十预设时长内没有接收到相应的业务报文,则可以将该remote-sync-meta进行老化。在一些例子中,第十预设时长可以与第五预设时长设置相同,或称老化时长
156.又例如,图13中的示例6,假设remote-sync-meta在预设第二预设时长内接收到第一预设次数的业务报文,则可以将该remote-sync-meta转换为local-sync-meta。假设在第三预设时长内接收到第二预设次数的业务报文,则可以对转换后的local-sync-meta向外进行同步。例如生成第二同步报文并发送给其它nat设备。
157.又例如,图13中的示例6,假设remote-sync-meta在预设第二预设时长内接收到第一预设次数的业务报文,则可以将该remote-sync-meta转换为local-sync-meta。假设在第六预设时长内没有接收到相应的业务报文,则可以参考示例3中,将该local-sync-meta再次转换为remote-sync-meta。后续过程则与示例3相类似,本公开不再赘述。
158.上述过程中的每个会话信息在worker核上依赖同步状态机制维护,可以减少其它短暂漂移过来的业务报文对应的同步会话对外同步。同时,还可以减轻同步核处理不需要同步的会话所带来的非必要负担。
159.在一些实施例中,上述图10至图13所涉及的方案,可以采用图7所描述方式进行hash表索引,并查相应的同步会话信息。本公开再次不再赘述。
160.可以理解,上述图10至图13所涉及的方案,syncher核维护全量sync-meta的状态机制负责维护sync-meta的包括属性、状态等转换信息。例如,当local sync-meta在syncher核创建时,可以启动定时器定期将元组信息填写入同步报文中。当同步报文中包含一定数量的同步会话信息后,可以将该同步报文发送到nfv集中的其它nat设备中。当集中存在因部分nat设备变更、宕机、升级而导致相应业务报文飘逸到另外的nat设备时,相应的nat设备可以在syncher核上查到该业务报文的会话信息并完成转发。同时在syncher核上remote-sync-meta在一定时间后会可以变成local sync-meta并对外同步。该状态机制与worker核上会话的状态机制共同组成同步会话机制。在syncher核上维护全量sync-meta可以保证查询不依赖worker核上的会话结构,因此避免了上锁保护而导致整体性能降低。并且可以大大减少worker核上需要维护的定时器数量,减少了因同步而导致的性能降低。
161.在一些实施例中,上述图10至图13所涉及的方案,可以采用图9所描述方式将业务报文上送syncher核查相应的sync-meta。从而避免了同流报文大量上送syncher核。通过在worker核上维护hash队列使同一漂移流量上送syncher核的报文只有首包或某一包。该机制可以避免当漂移流量是大象流的情况下大量上送报文而syncher核性能不足无法处理的情况。具体可以参考图9相应的描述,本公开再次不再赘述。
162.在一些实施例中,如图14所示出的,图14是本公开实施例的又一种nat设备同步会话架构示意图。该架构与图10、图11所示架构相类似,可以包括rss 1401、接收队列1402、发送队列1403和转发核1404。其中,相应装置、模块具体可以参考图10、图11中的相应描述,本公开在此不再赘述。
163.在图11中,rss 1401可以接收会话建立报文,可以将会话建立报文缓存在接收队
列1402中相应worker核对应的接收队列中。之后,可以基于会话建立报文的五元组计算哈希值确定相对应的worker核1404。worker核1404可以从对应的接收队列中获取到会话建立报文。worker核1404可以基于会话建立报文创建本地会话信息,并保存在转发核会话列表中。
164.当rss 1401可以接收后续接收到相应的业务报文时,通过与会话建立报文相类似的方式传输到worker核1404后,worker核1404可以基于创建的本地会话信息将业务报文怀春在发送队列1403中对应的发送队列中,以进行业务报文的转发。
165.可以理解,图14所示过程即基于本地会话信息对业务报文进行转发的过程。
166.本公开所涉及的方案能够大量节省同步会话占用的内存。并且可以支持不同配置nat实例之间的会话同步。同时,由于单独使用同步核做同步,几乎不影响也不占用数据面转发核的性能。
167.基于相同的构思,本公开实施例还提供一种同步会话装置。
168.可以理解的是,本公开实施例提供的一种同步会话装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。结合本公开实施例中所公开的各示例的单元及算法步骤,本公开实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同的方法来实现所描述的功能,但是这种实现不应认为超出本公开实施例的技术方案的范围。
169.作为一示例性实施方式,图15是根据本公开一示例性实施方式中示出的一种同步会话装置示意图。参阅图15所示,提供了一种同步会话装置1500,该装置1500可以实现上述图1至图14中所涉及的任意一种方法。该装置1500可以包括:接收模块1501,用于接收业务报文,其中,业务报文为应由第一网络地址转换nat设备转发且未转发的业务报文,第一nat设备为不同于第二nat设备的nat设备,第二nat设备为用于接收业务报文的nat设备;确定模块1502,用于根据预先存储的同步会话信息,确定业务报文对应的会话参数,其中,同步会话信息用于描述预先构建的会话;发送模块1503,用于基于会话参数将业务报文进行转发。
170.本公开可以利用不同nat设备之间同步的同步会话信息,查询到漂移的业务报文对应的会话参数。并基于查询到的会话参数将该业务报文准确的转发。可以避免漂移的业务报文查询不到会话导致数据传输失败,同时保证了在更换nat设备后会话可以实现接续。
171.在一些可能的实施方式中,同步会话信息包括第一同步会话信息,第一同步会话信息用于描述第一nat设备预先构建的会话,其中,第一同步会话信息预先通过第一nat设备发送的第一同步报文确定。在一些例子中,接收模块1501还用于,接收第一同步报文,第一同步报文包括第一同步会话信息;装置1500还可以包括:存储模块1504,用于保存第一同步会话信息。
172.本公开通过接收其它nat设备发送的同步报文,以便可以查询到其它nat设备构建的会话参数。使得当接收到漂移业务报文时,可以基于同步得到的会话信息进行报文转发,保证了会话的接续。
173.在一些可能的实施方式中,同步会话信息包括第二同步会话信息,第二同步会话信息用于描述第二nat设备预先构建的会话;第二同步会话信息采用如下方式获得:确定模
块1502还用于,根据本地存储的本地会话信息得到第二同步会话信息;和/或,确定模块1502还用于,根据第一同步会话信息得到第二同步会话信息;装置1500还包括:生成模块1505,用于根据第二同步会话信息,生成第二同步报文;发送模块1503还用于,向第一nat设备发送第二同步报文,以便第一nat设备根据第二同步报文中的第二同步会话信息进行业务报文的转发。
174.本公开的nat设备可以将本地的会话信息同步给其它nat设备,从而使得其它nat设备当接收到漂移的业务报文时,可以基于同步的会话信息完成业务报文的转发,保证了会话的接续。
175.在一些可能的实施方式中,若根据本地存储的本地会话信息得到第二同步会话信息,生成模块1505还用于:若本地会话信息保持时长满足第一预设时长,根据第二同步会话信息生成第二同步报文。在一些例子中,装置1500还可以包括:接收模块1501还用于,接收会话建立报文;构建模块1506,用于根据会话建立报文构建与会话建立报文对应的本地会话信息。
176.本公开可以将属于长链接的本地会话信息对应的同步会话信息进行同步,从而避免了同步临时建立的会话,从而降低同步会话信息所占用的空间。同时也避免了占用过多的传输资源。
177.在一些可能的实施方式中,确定模块1502还用于:若在第二预设时长内,接收到第一预设次数的业务报文,则根据第一同步会话信息得到第二同步会话信息。
178.本公开将部分满足条件的其它nat设备接收到的同步会话信息转换为本地会话信息,从而可以主动向其它nat设备继续分享同步,保证了会话信息可以持续的在nfv集中进行同步。提升了nfv集容灾能力。
179.在一些可能的实施方式中,其中,生成模块1505还用于:若在第三预设时长内,接收到第二预设次数的业务报文,根据第二同步会话信息生成第二同步报文。
180.本公开可以在持续接收到的与本地会话信息相关的业务报文时,根据本地会话信息生成同步报文并发送至其它nat设备。使得保持连接的会话对应的会话信息进行同步,而临时创建的会话无需同步,在节省同步信息资源的同时,还可以保证持续连接的会话被同步,提高了nfv集的容灾能力。
181.在一些可能的实施方式中,确定模块1502还用于:根据业务报文携带的五元组信息,确定业务报文对应的哈希值;基于预先配置的哈希值和同步会话信息之间的对应关系,根据业务报文对应的哈希值,确定业务报文对应的同步会话信息;根据业务报文对应的同步会话信息,得到业务报文对应的会话参数。
182.本公开通过哈希值索引到相应的同步会话信息,便于同步会话信息的管理。同时基于业务数据特定的五元组计算哈希值,可以提升查询到同步会话信息的效率。
183.在一些可能的实施方式中,确定模块1502还用于:根据业务报文确定用于转发业务报文的转发核;基于预先配置的转发核与同步核之间的对应关系,确定与用于转发业务报文的转发核相对应的同步核,其中同步核中预先存储有同步会话信息。
184.本公开通过提供独立的同步核用于同步会话信息,可以支持不同配置的nat设备进行会话同步。同时,还可以减轻worker核的同步过程对worker核带来的性能损耗。
185.在一些可能的实施方式中,确定模块1502还用于:若接收到多个属于同一个数据
流的业务报文,则基于接收到的首个业务报文,确定同步核。
186.本公开针对同一数据流的多个业务报文,仅选择其中一个业务报文到同步核中查询会话信息,避免了大量数据查询同步核导致的性能下降。
187.关于本公开上述图15涉及的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
188.本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
189.根据本公开的实施例,本公开还提供了一种同步会话设备、一种可读存储介质和一种计算机程序产品。
190.图16示出了可以用来实施本公开的实施例的一种同步会话设备1600的示意性框图。可以理解,该设备1600可以是网络设备或终端设备。该设备1600旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、服务器集和其它适合的计算机。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
191.如图16所示,设备1600包括计算单元1601,其可以根据存储在只读存储器(rom)1602中的计算机程序或者从存储单元1608加载到随机访问存储器(ram)1603中的计算机程序,来执行各种适当的动作和处理。在ram 1603中,还可存储设备1600操作所需的各种程序和数据。计算单元1601、rom 1602以及ram 1603通过总线1604彼此相连。输入/输出(i/o)接口1605也连接至总线1604。在一些例子中,本公开上述方案基于dpdk实现,会话信息存储在dpdk的巨页(hugepage)中。巨页通常以ram的形式体现。
192.设备1600中的多个部件连接至i/o接口1605,包括:输入单元1606,例如键盘、鼠标等;输出单元1607,例如各种类型的显示器、扬声器等;存储单元1608,例如磁盘、光盘等;以及通信单元1609,例如网卡、调制解调器、无线通信收发机等。通信单元1609允许设备1600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
193.计算单元1601可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1601的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元1601执行上文所描述的各个方法和处理,例如图1至图14所描述的任意一种方法。例如,在一些实施例中,图1至图14所描述的任意一种方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1608。在一些实施例中,计算机程序的部分或者全部可以经由rom 1602和/或通信单元1609而被载入和/或安装到设备1600上。当计算机程序加载到ram 1603并由计算单元1601执行时,可以执行上文描述的任意一种方法的一个或多个步骤。备选地,在其它实施例中,计算单元1601可以通过其它任何适当的方式(例如,借助于固件)而被配置为执行上述图1至图14所描述的任意一种方法。
194.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算
机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
195.用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
196.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
197.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
198.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
199.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。当然,在一些例子中,服务器还可以指代服务器集。
200.本公开所实现的会话同步机制使用一个独立的syncher核对同步报文做收发处理,并通过与worker核的核间通信以及不同类型同步报文的处理,共同维护同步会话的管理。
201.本公开对同步报文的接收处理完全交给syncher核,减少了worker核的工作量。尤
其当一个同步报文中包含多个会话信息时,对同步报文的处理会占用一定worker的时间片。syncher核中只保存会话中的报文元组信息,以及少量控制信息,整体大小不到完整会话结构的1/2,节省了大量同步会话所需要的内存。同时,维护syncher核与worker核的关系即可,无需nfv集中各节点同配,可满足nfv场景下nat设备不同配置的需求。
202.本公开可以减轻会话同步机制对worker核带来的性能损耗。并且支持不同配nat设备在nfv集中进行会话同步。对于存储的同步会话信息占用更少的内存,便于维护和查询,不会对设备造成性能负担。
203.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
204.上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

技术特征:


1.一种同步会话方法,所述方法包括:接收业务报文,其中,所述业务报文为应由第一网络地址转换nat设备转发且未转发的业务报文,所述第一nat设备为不同于第二nat设备的nat设备,所述第二nat设备为用于接收所述业务报文的nat设备;根据预先存储的同步会话信息,确定所述业务报文对应的会话参数,其中,所述同步会话信息用于描述预先构建的会话;基于所述会话参数将所述业务报文进行转发。2.根据权利要求1所述的方法,其中,所述同步会话信息包括第一同步会话信息,所述第一同步会话信息用于描述所述第一nat设备预先构建的会话,其中,所述第一同步会话信息预先通过所述第一nat设备发送的第一同步报文确定。3.根据权利要求1或2所述的方法,其中,所述同步会话信息包括第二同步会话信息,所述第二同步会话信息用于描述所述第二nat设备预先构建的会话;所述第二同步会话信息采用如下方式获得:根据本地存储的本地会话信息得到所述第二同步会话信息;和/或,根据所述第一同步会话信息得到所述第二同步会话信息;所述方法还包括:根据所述第二同步会话信息,生成第二同步报文;向所述第一nat设备发送所述第二同步报文,以便所述第一nat设备根据所述第二同步报文中的所述第二同步会话信息进行业务报文的转发。4.根据权利要求3所述的方法,其中,所述根据所述第二同步会话信息,生成第二同步报文,包括:若所述本地会话信息保持时长满足第一预设时长,根据所述第二同步会话信息生成第二同步报文。5.根据权利要求3所述的方法,其中,所述根据所述第一同步会话信息得到所述第二同步会话信息,包括:若在第二预设时长内,接收到第一预设次数的所述业务报文,则根据所述第一同步会话信息得到所述第二同步会话信息。6.根据权利要求3-5中任意一项所述的方法,其中,所述根据所述第二同步会话信息,生成第二同步报文,包括:若在第三预设时长内,接收到第二预设次数的所述业务报文,根据所述第二同步会话信息生成所述第二同步报文。7.根据权利要求1-6中任意一项所述的方法,其中,所述根据预先存储的同步会话信息,确定所述业务报文对应的会话参数,包括:根据所述业务报文携带的五元组信息,确定所述业务报文对应的哈希值;基于预先配置的哈希值和同步会话信息之间的对应关系,根据所述业务报文对应的哈希值,确定所述业务报文对应的所述同步会话信息;根据所述业务报文对应的所述同步会话信息,得到所述业务报文对应的会话参数。8.根据权利要求1-7中任意一项所述的方法,其中,在所述根据预先存储的同步会话信息,确定所述业务报文对应的会话参数之前,所述方法还包括:
根据所述业务报文确定用于转发所述业务报文的转发核;基于预先配置的转发核与同步核之间的对应关系,确定与所述用于转发所述业务报文的转发核相对应的同步核,其中所述同步核中预先存储有所述同步会话信息。9.根据权利要求8所述的方法,其中,所述方法还包括:若接收到多个属于同一个数据流的所述业务报文,则基于接收到的首个所述业务报文,确定所述同步核。10.一种同步会话装置,所述装置包括:接收模块,用于接收业务报文,其中,所述业务报文为应由第一网络地址转换nat设备转发且未转发的业务报文,所述第一nat设备为不同于第二nat设备的nat设备,所述第二nat设备为用于接收所述业务报文的nat设备;确定模块,用于根据预先存储的同步会话信息,确定所述业务报文对应的会话参数,其中,所述同步会话信息用于描述预先构建的会话;发送模块,用于基于所述会话参数将所述业务报文进行转发。11.根据权利要求10所述的装置,其中,所述同步会话信息包括第一同步会话信息,所述第一同步会话信息用于描述所述第一nat设备预先构建的会话,其中,所述第一同步会话信息预先通过所述第一nat设备发送的第一同步报文确定。12.根据权利要求10或11所述的装置,其中,所述同步会话信息包括第二同步会话信息,所述第二同步会话信息用于描述所述第二nat设备预先构建的会话;所述第二同步会话信息采用如下方式获得:所述确定模块还用于,根据本地存储的本地会话信息得到所述第二同步会话信息;和/或,所述确定模块还用于,根据所述第一同步会话信息得到所述第二同步会话信息;所述装置还包括:生成模块,用于根据所述第二同步会话信息,生成第二同步报文;所述发送模块还用于,向所述第一nat设备发送所述第二同步报文,以便所述第一nat设备根据所述第二同步报文中的所述第二同步会话信息进行业务报文的转发。13.根据权利要求12所述的装置,其中,若根据本地存储的本地会话信息得到所述第二同步会话信息,所述生成模块还用于:若所述本地会话信息保持时长满足第一预设时长,根据所述第二同步会话信息生成第二同步报文。14.根据权利要求12所述的装置,其中,所述确定模块还用于:若在第二预设时长内,接收到第一预设次数的所述业务报文,则根据所述第一同步会话信息得到所述第二同步会话信息。15.根据权利要求12-14中任意一项所述的装置,其中,所述生成模块还用于:若在第三预设时长内,接收到第二预设次数的所述业务报文,根据所述第二同步会话信息生成所述第二同步报文。16.根据权利要求10-15中任意一项所述的装置,其中,所述确定模块还用于:根据所述业务报文携带的五元组信息,确定所述业务报文对应的哈希值;基于预先配置的哈希值和同步会话信息之间的对应关系,根据所述业务报文对应的哈希值,确定所述业务报文对应的所述同步会话信息;
根据所述业务报文对应的所述同步会话信息,得到所述业务报文对应的会话参数。17.根据权利要求10-16中任意一项所述的装置,其中,所述确定模块还用于:根据所述业务报文确定用于转发所述业务报文的转发核;基于预先配置的转发核与同步核之间的对应关系,确定与所述用于转发所述业务报文的转发核相对应的同步核,其中所述同步核中预先存储有所述同步会话信息。18.根据权利要求17所述的装置,其中,所述确定模块还用于:若接收到多个属于同一个数据流的所述业务报文,则基于接收到的首个所述业务报文,确定所述同步核。19.一种同步会话设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-9中任一项所述的方法。20.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-9中任一项所述的方法。21.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-9中任一项所述的方法。

技术总结


本公开提供了一种同步会话方法、装置、设备以及存储介质,涉及人工智能领域,尤其涉及云计算、云网络技术等领域,可应用于智能云场景下。具体实现方案为:接收业务报文。其中,业务报文应由第一NAT设备转发且未转发,第一NAT设备不同于第二NAT设备,第二NAT设备用于接收业务报文。根据预先存储的同步会话信息,确定业务报文对应的会话参数。其中,同步会话信息用于描述预先构建的会话。基于会话参数将业务报文进行转发。本公开通过不同NAT设备之间同步的同步会话信息,可以准确查询到漂移的业务报文对应的会话参数,从而将该业务报文准确的转发,避免了部分漂移的业务报文查询不到会话导致数据传输失败,保证了会话在更换NAT设备后的接续。后的接续。后的接续。


技术研发人员:

赵鹏程

受保护的技术使用者:

北京百度网讯科技有限公司

技术研发日:

2022.08.22

技术公布日:

2022/12/16

本文发布于:2024-09-23 21:27:38,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/37066.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:报文   设备   信息   业务
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议