多核CPU的隧道内会话分配方法和分配装置与流程

文档序号:37194932发布日期:2024-03-01 13:09阅读:21来源:国知局
多核CPU的隧道内会话分配方法和分配装置与流程

本说明书实施例涉及数据传输领域,特别地,涉及多核cpu的隧道内会话分配方法和分配装置。


背景技术:

1、在数据传输领域,传统的路由器是根据目的地址进行路由,并不感知会话,而随着互联网发展,越来越多的网络中间设备开始感知会话,如安全设备、审计设备、负载均衡设备、隧道网关等等,这些设备要求整个会话的报文都经过同样的处理逻辑,如果不经过同样处理可能会产生乱序、功能失效等问题,也即同源同宿需求。

2、现有网络设备向着多核设备发展,而多核设备上同源同宿要求同样严格,如果同一会话的报文被分配到了不同cpu核上处理,可能会导致乱序等问题,从而造成异常情况。传统保证多核下同源同宿的方法,是提取出报文的5元组等特征值,对其进行hash计算,根据hash值来分配到不同的cpu队列上,由于同一会话的5元组特征一致,得出的hash值相同,自然使得同一会话的多个报文在同一个cpu核上进行处理。

3、而在隧道等应用场景下,大量会话进入同一隧道,而隧道外层5元组是一样的,如果使用隧道外层5元组计算hash,会导致流量集中到某些cpu核上,造成分布不均。因此要求设备能提前内层会话的5元组进行hash计算,才能保证流量在各个cpu上分布均衡,但这种方式要求感知隧道内部会话,破坏了网络报文封装的原则,而且对于加密隧道,内层会话已被加密无法获得原始的5元组,因此也就无法均分会话。

4、为了应对上述难题,亟需一种多核cpu的隧道内会话分配方法,能够实现隧道内多核cpu之间的会话均匀分配,提高cpu的处理性能。


技术实现思路

1、本说明书实施例的目的在于提供一种多核cpu的隧道内会话分配方法、装置、设备和存储介质,以实现隧道内多核cpu之间的会话均匀分配,提高cpu的处理性能。

2、为达到上述目的,一方面,本说明书实施例提供了一种多核cpu的隧道内会话分配方法,包括:

3、当前设备将接收到的报文发送至所述当前设备中的会话管理模块;

4、所述会话管理模块确定所述报文对应的哈希值,根据所述哈希值计算得到哈希值对应的映射值;

5、所述会话管理模块根据所述映射值确定所述报文对应的待分配cpu内核,将所述报文送入所述待分配cpu内核进行处理;

6、所述待分配cpu内核对所述报文进行处理,处理过程中将所述映射值封装至处理后的报文中,将所述处理后的报文传输至隧道对端的下一设备;

7、所述下一设备中将接收到的所述处理后的报文发送至所述下一设备中的隧道管理模块;

8、所述隧道管理模块根据所述处理后的报文提取得到所述映射值;

9、所述隧道管理模块根据所述映射值确定所述下一设备中的所述处理后的报文对应的待处理cpu内核,将所述处理后的报文送入所述待处理cpu内核进行处理。

10、优选的,所述会话管理模块确定所述报文对应的哈希值进一步包括:

11、所述会话管理模块判断会话表中是否记录有所述报文对应的哈希值;

12、若是,则由所述会话表中获取所述报文对应的哈希值;

13、若否,则根据所述报文的五元组计算得到所述报文对应的哈希值,并将所述报文的五元组和所述哈希值的对应关系记录至所述会话表中。

14、优选的,所述根据所述哈希值计算得到哈希值对应的映射值进一步包括:

15、根据隧道两端的所述当前设备和所述下一设备的cpu内核数量关系,确定映射值的不同计算方法;

16、根据不同计算方法计算得到哈希值对应的映射值。

17、优选的,所述根据隧道两端的所述当前设备和所述下一设备的cpu内核数量关系,确定映射值的不同计算方法进一步包括:

18、若所述当前设备和所述下一设备的cpu内核数量相同,则利用所述当前设备的cpu内核数量以及所述哈希值进行哈希映射,得到映射值;

19、若所述当前设备和所述下一设备的cpu内核数量不相同,则利用所述当前设备和所述下一设备的cpu内核数量的最小公倍数以及所述哈希值进行哈希映射,得到映射值。

20、优选的,所述根据所述映射值确定所述报文对应的待分配cpu内核进一步包括:

21、若所述当前设备和所述下一设备的cpu内核数量相同,则将所述映射值对应的cpu内核作为所述报文对应的待分配cpu内核;

22、若所述当前设备和所述下一设备的cpu内核数量不相同,则利用所述映射值对所述当前设备的cpu内核数量取模,得到取模值;

23、将所述取模值对应的cpu内核作为所述报文对应的待分配cpu内核。

24、优选的,所述将所述映射值封装至处理后的报文中进一步包括:

25、通过将所述映射值作为ip头部的一部分、作为tcp/udp头部的一部分、作为隧道封装包头的一部分或作为独立包头封装至处理后的报文中。

26、优选的,所述隧道管理模块根据所述映射值确定所述下一设备中的所述处理后的报文对应的待处理cpu内核进一步包括:

27、若所述当前设备和所述下一设备的cpu内核数量相同,则将所述映射值对应的cpu内核作为所述处理后的报文对应的待处理cpu内核;

28、若所述当前设备和所述下一设备的cpu内核数量不相同,则利用所述映射值对所述下一设备的cpu内核数量取模,得到取模值;

29、将所述取模值对应的cpu内核作为所述处理后的报文对应的待处理cpu内核。

30、优选的,所述将所述处理后的报文送入所述待处理cpu内核进行处理之后还包括:

31、将所述处理后的报文的五元组和所述哈希值的对应关系记录至所述下一设备的会话管理模块的会话表中。

32、另一方面,本说明书实施例提供了一种多核cpu的隧道内会话分配装置,所述装置包括:

33、接收模块,用于当前设备将接收到的报文发送至所述当前设备中的会话管理模块;

34、计算模块,用于所述会话管理模块确定所述报文对应的哈希值,根据所述哈希值计算得到哈希值对应的映射值;

35、确定模块,用于所述会话管理模块根据所述映射值确定所述报文对应的待分配cpu内核,将所述报文送入所述待分配cpu内核进行处理;

36、第一处理模块,用于所述待分配cpu内核对所述报文进行处理,处理过程中将所述映射值封装至处理后的报文中,将所述处理后的报文传输至隧道对端的下一设备;

37、发送模块,用于所述下一设备中将接收到的所述处理后的报文发送至所述下一设备中的隧道管理模块;

38、提取模块,用于所述隧道管理模块根据所述处理后的报文提取得到所述映射值;

39、第二处理模块,用于所述隧道管理模块根据所述映射值确定所述下一设备中的所述处理后的报文对应的待处理cpu内核,将所述处理后的报文送入所述待处理cpu内核进行处理。

40、又一方面,本说明书实施例还提供了一种计算机设备,包括存储器、处理器、以及存储在所述存储器上的计算机程序,所述计算机程序被所述处理器运行时,执行根据上述任意一项所述方法的指令。

41、又一方面,本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被计算机设备的处理器运行时,执行根据上述任意一项所述方法的指令。

42、由以上本说明书实施例提供的技术方案可见,通过本说明书实施例的方法,能够通过哈希值的计算得到映射值,进而确定当前设备中报文对应的待分配cpu内核,待分配的cpu内核在处理报文的过程中将映射值封装后传输至隧道对端的下一设备,下一设备再根据映射值确定相应的待处理cpu内核,这个过程中既不会破坏报文封装的原则,还能够通过计算使不同的会话均匀分配至相应的cpu内核,提高cpu的处理性能。

43、为让本说明书的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1