用于数据包处理的流表管理方法、装置、设备及存储介质与流程

文档序号:35868139发布日期:2023-10-27 22:23阅读:50来源:国知局
用于数据包处理的流表管理方法、装置、设备及存储介质与流程

本技术涉及计算机,尤其涉及一种用于数据包处理的流表管理方法、装置、设备及存储介质。


背景技术:

1、在软件定义网络(software defined network,sdn)结构中,通过开放流(openflow)协议,实现控制面与数据面的分离,进而将控制面的操作集中到sdn控制器上,而交换机(如虚拟交换机、sdn交换机等)仅负责在本地进行简单、高速的数据面操作。其中,在交换机进行数据面操作的过程中,其对数据包处理(如查找、修改和转发等)的依据为流表。

2、目前,相关技术主要使用独立的数据库来存储流表信息,以实现对流表的分配、释放等管理操作。然而,在sdn网络中,虚拟交换机通信链接的新建与老化速度可达每秒几百万条,这意味着,数据库每秒会收到几百万次的流表管理请求,因此,相关技术为保证流表管理的顺序性与一致性,主要采用单一线程或锁来控制数据库的访问,但这种方式降低了流表管理的效率。同时,数据库中的流表信息,往往存在于一个特定的非一致性内存访问(non uniform memory access,numa)节点上,这样,当多个线程请求分配或释放流表时,会出现跨numa节点的访问,从而降低了流表的管理效率。

3、因此,实现对流表进行高效、有序的管理,成为sdn网络中对数据包进行处理时亟待解决的问题。


技术实现思路

1、本技术实施例提供了一种用于数据包处理的流表管理方法,用于对流表进行高效、有序的管理。

2、一方面,本技术实施例提供一种用于数据包处理的流表管理方法,包括:

3、分别接收多个线程并发发送的流表管理请求,其中,所述多个线程中至少一个线程运行在一个numa节点上;

4、针对每一个线程,执行以下操作:

5、当所述线程的流表管理请求为流表分配请求时,基于内存文件系统中流表信息池包含的各级流表队列的优先级顺序,无锁的为所述线程分配一个流表信息;其中,所述各级流表队列中,每个第一级流表队列存储有一个线程自身在本地内存中可用的流表信息,每个第二级流表队列存储有一个numa节点上的各线程在本地内存中可用的流表信息,第三级流表队列存储有各numa节点在总内存中可用的流表信息,所述各级流表队列中的流表信息互不重叠,所述第一级流表队列的优先级高于所述第二级流表队列的优先级,所述第二级流表队列的优先级高于所述第三级流表队列的优先级;

6、当所述线程的流表管理请求为流表释放请求时,采用原子指令,将所述流表释放请求携带的流表信息,存储至所述第三级流表队列中。

7、另一方面,本技术实施例提供一种用于数据包处理的流表管理装置,包括:

8、请求接收模块,用于分别接收多个线程并发发送的流表管理请求,其中,所述多个线程中至少一个线程运行在一个numa节点上;

9、流表管理模块,用于针对每一个线程,当所述线程的流表管理请求为流表分配请求时,基于内存文件系统中流表信息池包含的各级流表队列的优先级顺序,无锁的为所述线程分配一个流表信息;以及,当所述线程的流表管理请求为流表释放请求时,采用原子指令,将所述流表释放请求携带的流表信息,存储至第三级流表队列中;

10、其中,所述各级流表队列中,每个第一级流表队列存储有一个线程自身在本地内存中可用的流表信息,每个第二级流表队列存储有一个numa节点上的各线程在本地内存中可用的流表信息,所述第三级流表队列存储有各numa节点在总内存中可用的流表信息,所述各级流表队列中的流表信息互不重叠,所述第一级流表队列的优先级高于所述第二级流表队列的优先级,所述第二级流表队列的优先级高于所述第三级流表队列的优先级。

11、可选的,所述流表管理模块具体用于:

12、当所述线程自身的第一级流表队列不为空时,从所述第一级流表队列中为所述线程分配一个流表信息;

13、当所述线程自身的第一级流表队列为空时,从上级流表队列中为所述线程分配一个流表信息。

14、可选的,所述流表管理模块具体用于:

15、当所述线程所在的numa节点的第二级流表队列不为空时,从所述第二级流表队列中,分配多个流表信息存储至所述线程自身的第一级流表队列中,并从所述第一级流表队列中为所述线程分配一个流表信息;

16、当所述线程所在的numa节点的第二级流表队列为空时,从所述第三级流表队列中,分配多个流表信息存储至所述线程所在的numa节点的第二级流表队列中,并从所述第二级流表队列中,分配多个流表信息存储至所述线程自身的第一级流表队列中,从所述第一级流表队列中为所述线程分配一个流表信息。

17、可选的,所述流表管理模块具体用于:

18、获取所述第三级流表队列中当前的第三头指针,将所述第三头指针所指向位置的流表信息,以及其后的至少一个流表信息,存储至所述线程所在的numa节点的第二级流表队列中,并将所述第三头指针指向剩余流表信息中第一个流表信息的位置。

19、可选的,所述流表管理模块具体用于:

20、获取所述第二级流表队列中当前的第二头指针,将所述第二头指针所指向位置的流表信息,以及其后的至少一个流表信息,存储至所述线程自身的第一级流表队列中,并将所述第二头指针指向剩余流表信息中第一个流表信息的位置。

21、可选的,所述流表管理模块具体用于:

22、获取所述第一级流表队列中当前的第一头指针,将所述第一头指针所指向位置上的流表信息,分配给所述线程,并将所述第一头指针指向下一流表信息的位置。

23、可选的,所述流表管理模块具体用于:

24、获取所述第三级流表队列中当前的第四头指针,将所述流表释放请求携带的流表信息,存储至所述第四头指针所指向的位置,并将所述第四头指针移动到下一位置。

25、可选的,所述将所述流表释放请求携带的流表信息,存储至所述第三级流表队列中的释放速度,小于无锁的为其他线程分配一个流表信息的分配速度。

26、可选的,还包括数据处理模块,用于基于所述各线程各自的流表信息,对所述各线程传输的数据包进行处理操作,其中,所述处理操作包括所述数据包的查找、转发、修改和删除中的一个,所述数据包包括图像数据包、语音数据包、文本数据包和网页数据包中的一个。

27、另一方面,本技术实施例提供一种电子设备,包括处理器和存储器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,实现上述用于数据包处理的流表管理方法的步骤。

28、另一方面,本技术实施例提供一种计算机可读存储介质,其上存储有计算机可执行指令,所述计算机可执行指令被电子设备执行时实现上述用于数据包处理的流表管理方法的步骤。

29、另一方面,本技术实施例提供一种计算机程序产品,包含计算机程序,所述计算机程序被电子设备执行时实现上述用于数据包处理的流表管理方法的步骤。

30、本技术实施例的有益效果如下:

31、本技术实施例提供的一种用于数据包处理的流表管理方法、装置、电子设备及存储介质中,采用了级联的环形队列数据结构来存储和管理流表,其中,各级流表队列中,每个第一级流表队列存储有一个线程自身在本地内存中可用的流表信息,即每个第一流表队列被一个线程独享,不会与其他线程发生流表信息的争抢。因此,针对请求分配流表的各线程,可以无锁的从各线程各自对应的第一级流表队列中,并发的分配流表信息,提高了流表的分配效率,且当第一级流表队列中没有可分配的流表信息时,还可以依序从第二级流表队列、第三级流表队列中,为各线程分配流表信息,从而通过队列级联的方式,保证各线程配分配流表信息的稳定性。当线程的流表管理请求为流表释放请求时,采用原子指令,将流表释放请求携带的流表信息,存储至第三级流表队列中。同时,针对请求释放流表的各线程,通过将各线程释放的流表信息存储到优先级最低的第三级流表队列中,从而保证其他流表信息被分配后,新释放的流表信息能够被重新分配,提高流表信息的利用率。再者,将级联的环形队列数据结构映射在内存文件系统中,实现对流表信息的池化管理,使得各线程如同访问本地内存一般访问内存文件系统以分配或释放流表信息,提升了管理速度。

32、本技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本技术而了解。本技术的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

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