【技术实现步骤摘要】
用于数据包处理的流表管理方法、装置、设备及存储介质
[0001]本申请涉及计算机
,尤其涉及一种用于数据包处理的流表管理方法、装置、设备及存储介质。
技术介绍
[0002]在软件定义网络(Software Defined Network,SDN)结构中,通过开放流(OpenFlow)协议,实现控制面与数据面的分离,进而将控制面的操作集中到SDN控制器上,而交换机(如虚拟交换机、SDN交换机等)仅负责在本地进行简单、高速的数据面操作。其中,在交换机进行数据面操作的过程中,其对数据包处理(如查找、修改和转发等)的依据为流表。
[0003]目前,相关技术主要使用独立的数据库来存储流表信息,以实现对流表的分配、释放等管理操作。然而,在SDN网络中,虚拟交换机通信链接的新建与老化速度可达每秒几百万条,这意味着,数据库每秒会收到几百万次的流表管理请求,因此,相关技术为保证流表管理的顺序性与一致性,主要采用单一线程或锁来控制数据库的访问,但这种方式降低了流表管理的效率。同时,数据库中的流表信息,往往存在于一个特定的非一致性内存访问(Non Uniform Memory Access,NUMA)节点上,这样,当多个线程请求分配或释放流表时,会出现跨NUMA节点的访问,从而降低了流表的管理效率。
[0004]因此,实现对流表进行高效、有序的管理,成为SDN网络中对数据包进行处理时亟待解决的问题。
技术实现思路
[0005]本申请实施例提供了一种用于数据包处理的流表管理方法,用于对流表进行高效、有序 ...
【技术保护点】
【技术特征摘要】
1.一种用于数据包处理的流表管理方法,其特征在于,所述方法包括:分别接收多个线程并发发送的流表管理请求,其中,所述多个线程中至少一个线程运行在一个非一致性内存访问NUMA节点上;针对每一个线程,执行以下操作:当所述线程的流表管理请求为流表分配请求时,基于内存文件系统中流表信息池包含的各级流表队列的优先级顺序,无锁的为所述线程分配一个流表信息;其中,所述各级流表队列中,每个第一级流表队列存储有一个线程自身在本地内存中可用的流表信息,每个第二级流表队列存储有一个NUMA节点上的各线程在本地内存中可用的流表信息,第三级流表队列存储有各NUMA节点在总内存中可用的流表信息,所述各级流表队列中的流表信息互不重叠,所述第一级流表队列的优先级高于所述第二级流表队列的优先级,所述第二级流表队列的优先级高于所述第三级流表队列的优先级;当所述线程的流表管理请求为流表释放请求时,采用原子指令,将所述流表释放请求携带的流表信息,存储至所述第三级流表队列中。2.如权利要求1所述的方法,其特征在于,所述基于内存中流表信息池包含的各级流表队列的优先级顺序,无锁的为所述线程分配一个流表信息,包括:当所述线程自身的第一级流表队列不为空时,从所述第一级流表队列中为所述线程分配一个流表信息;当所述线程自身的第一级流表队列为空时,从上级流表队列中为所述线程分配一个流表信息。3.如权利要求2所述的方法,其特征在于,所述从上级流表队列中为所述线程分配一个流表信息,包括:当所述线程所在的NUMA节点的第二级流表队列不为空时,从所述第二级流表队列中,分配多个流表信息存储至所述线程自身的第一级流表队列中,并从所述第一级流表队列中为所述线程分配一个流表信息;当所述线程所在的NUMA节点的第二级流表队列为空时,从所述第三级流表队列中,分配多个流表信息存储至所述线程所在的NUMA节点的第二级流表队列中,并从所述第二级流表队列中,分配多个流表信息存储至所述线程自身的第一级流表队列中,从所述第一级流表队列中为所述线程分配一个流表信息。4.如权利要求3所述的方法,其特征在于,所述从所述第三级流表队列中,分配多个流表信息存储至所述线程所在的NUMA节点的第二级流表队列中,包括:获取所述第三级流表队列中当前的第三头指针,将所述第三头指针所指向位置的流表信息,以及其后的至少一个流表信息,存储至所述线程所在的NUMA节点的第二级流表队列中,并将所述第三头指针指向剩余流表信息中第一个流表信息的位置。5.如权利要求3所述的方法,其特征在于,所述从所述第二级流表队列中,分配多个流表信息存储至所述线程自身的第一级流表队列中,包括:获取所述第二级流表队列中当前的第二头指针,将所述第二头指针所指向位置的流表信息,以及其后的至少一个流表信息,存储至所述线程自身的第一级流表队列中,并将所述第二头指针指向剩余流表信息中第一个流表信息的位置。6.如权利要求2或3所述的方法,其特征在于,所述从所述第一级流表队列中为...
【专利技术属性】
技术研发人员:赵健,叶小龙,王健,王亮,
申请(专利权)人:腾讯科技深圳有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。