CN116996438B - 流表管理方法及装置 - Google Patents

流表管理方法及装置 Download PDF

Info

Publication number
CN116996438B
CN116996438B CN202311236535.4A CN202311236535A CN116996438B CN 116996438 B CN116996438 B CN 116996438B CN 202311236535 A CN202311236535 A CN 202311236535A CN 116996438 B CN116996438 B CN 116996438B
Authority
CN
China
Prior art keywords
linked list
flow table
forwarding
table item
message
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202311236535.4A
Other languages
English (en)
Other versions
CN116996438A (zh
Inventor
肖尧
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Technologies Co Ltd
Original Assignee
New H3C Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by New H3C Technologies Co Ltd filed Critical New H3C Technologies Co Ltd
Priority to CN202311236535.4A priority Critical patent/CN116996438B/zh
Publication of CN116996438A publication Critical patent/CN116996438A/zh
Application granted granted Critical
Publication of CN116996438B publication Critical patent/CN116996438B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请实施例提供一种流表管理方法及装置。本申请实施例在转发流表中不存在与当前待处理的报文匹配的第一流表项时,依据本地已记录的RCU宽限期计数和链表数量,确定出作为申请链表的第一链表,并从第一链表中获取第二流表项,并设置该流表项内容后将该流表项作为第一流表项记录至转发流表中,使得转发线程能够在转发流表中查找到并使用该第一流表项;在需要释放该第一流表项时,则依据本地已记录的RCU宽限期计数和链表数量,确定出作为待释放链表的第二链表,将第一流表项添加至第二链表中,通过将第一流表项从转发流表中清除并记录至第二链表中,使得转发线程无法从转发流表中查找到该第一流表项,实现了转发线程对转发流表的管理。

Description

流表管理方法及装置
技术领域
本申请涉及网络通信技术领域,特别涉及流表管理方法及装置。
背景技术
随着网络设备的CPU核心数的不断增加,以及基于DPDK(Data Plane DevelopmentKit,数据平面开发套件)的用户态转发的广泛应用,网络设备内部署的转发线程的数量也逐渐增加。转发线程在进行报文处理时会依赖于流表(也称哈希表),然而,面对着逐渐增加的转发线程,目前并没有相关技术公开如何管理转发线程所依赖的流表。
发明内容
有鉴于此,本申请提供一种流表管理方法及装置,以解决相关技术中无法管理转发线程所依赖的流表的问题。
本申请提供的技术方案如下:
根据本申请第一方面的实施例,提出了一种流表管理方法,该方法应用于网络设备中的转发线程;所述网络设备被部署了N个转发线程,N大于1,所述N个转发线程共享同一转发流表;每一转发线程具有对应的链表数组,每一链表数组包括M个链表,M大于或等于4;该方法包括:
针对当前待处理的报文,若发现所述转发流表中不存在所述报文匹配的第一流表项,则依据本地已记录的读-复制更新RCU宽限期计数和所述M,从本转发线程对应的链表数组中确定出作为申请链表的第一链表;
从所述第一链表中获取第二流表项,将本转发线程对所述报文进行处理后得到的处理结果记录至该第二流表项中,并将该第二流表项作为所述报文匹配的第一流表项记录至所述转发流表中;
在需要释放所述转发流表中的所述第一流表项时,则依据本地记录的RCU宽限期计数和所述M,从本转发线程对应的链表数组中确定出作为待释放链表的第二链表,将所述第一流表项添加至所述第二链表中,以使得所述第二链表作为申请链表时所述第一流表项被更新以记录至所述转发流表中。
可选的,所述报文为当前被分配的第一报文处理任务中的其中一个报文;该方法进一步包括:
在第一报文处理任务完成后,检查所述本地记录的RCU宽限期计数与已记录的全局宽限期代际计数是否一致,若不一致,则更新所述本地记录的RCU宽限期计数为全局宽限期代际计数;
依据更新后的本地记录的RCU宽限期计数和所述M,确定作为申请链表的第三链表,将所述第一链表中的流表项转存至所述第三链表。
可选的,所述全局宽限期代际计数用于反映所有转发线程完成被分配的报文处理任务的情况,其中,当所有转发线程均完成对应的报文处理任务后,所述全局宽限期代际计数被增加第一设定值。
可选的,所述M个链表被设置对应的链表标识;
依据本地已记录的读-复制更新RCU宽限期计数和所述M,从本转发线程对应的链表数组中确定出作为申请链表的第一链表包括:
将本地已记录的当前RCU宽限期计数增加第二设定值,得到第一计算结果;
将所述第一计算结果和所述M进行指定运算,得到第二计算结果;
依据所述第二计算结果,从所述M个链表中确定链表标识与所述第二计算结果匹配的链表,将确定出的链表确定为所述第一链表。
可选的,所述M个链表被设置对应的链表标识;
依据本地已记录的RCU宽限期计数和所述M,从本转发线程对应的链表数组中确定出作为待释放链表的第二链表包括:
将本地已记录的RCU宽限期计数和所述M进行指定运算,得到第三计算结果;
依据所述第三计算结果,从所述M个链表中确定链表标识与所述第三计算结果匹配的链表,将确定出的链表确定为所述第二链表。
可选的,在第一报文处理任务完成之后,该方法进一步包括:
接收第二报文处理任务;
针对第二报文处理任务中待处理的报文,若发现所述转发流表中不存在所述报文匹配的第三流表项,则依据本地已记录的RCU宽限期计数和所述M,从本转发线程对应的链表数组中确定出当前申请链表;
若所述当前申请链表为所述第二链表,则从所述第二链表中获取流表项,该获取的流表项为所述第一流表项或者不为所述第一流表项,将本转发线程对所述报文进行处理后得到的处理结果记录至该获取的流表项中,并将该流表项作为所述报文匹配的第三流表项记录至所述转发流表中。
根据本申请第二方面的实施例,提出了一种流表管理装置,该装置被部署了N个转发线程,N大于1,所述N个转发线程共享同一转发流表;每一转发线程具有对应的链表数组,每一链表数组包括M个链表,M大于或等于4;该装置包括:
申请单元,用于针对当前待处理的报文,若发现所述转发流表中不存在所述报文匹配的第一流表项,则依据本地已记录的读-复制更新RCU宽限期计数和所述M,从本转发线程对应的链表数组中确定出作为申请链表的第一链表;
记录单元,用于从所述第一链表中获取第二流表项,将本转发线程对所述报文进行处理后得到的处理结果记录至该第二流表项中,并将该第二流表项作为所述报文匹配的第一流表项记录至所述转发流表中;
释放单元,用于在需要释放所述转发流表中的所述第一流表项时,则依据本地记录的RCU宽限期计数和所述M,从本转发线程对应的链表中确定出作为待释放链表的第二链表,将所述第一流表项添加至所述第二链表中,以使得所述第二链表作为申请链表时所述第一流表项被更新以记录至所述转发流表中。
可选的,所述报文为当前被分配的第一报文处理任务中的其中一个报文;该装置还包括:
更新单元,用于在对第一报文处理任务完成后,检查所述本地记录的RCU宽限期计数与已记录的全局宽限期代际计数是否一致,若不一致,则更新所述本地记录的RCU宽限期计数为全局宽限期代际计数;
依据更新后的本地记录的RCU宽限期计数和所述M,确定作为申请链表的第三链表,将所述第一链表中的流表项转存至所述第三链表;
和/或,所述全局宽限期代际计数用于反映所有转发线程完成被分配的报文处理任务的情况,其中,当所有转发线程均完成对应的报文处理任务后,所述全局宽限期代际计数被增加第一设定值。
可选的,所述M个链表被设置对应的链表标识;
所述申请单元具体用于:
将本地已记录的当前RCU宽限期计数增加第二设定值,得到第一计算结果;
将所述第一计算结果和所述M进行指定运算,得到第二计算结果;
依据所述第二计算结果,从所述M个链表中确定链表标识与所述第二计算结果匹配的链表,将确定出的链表确定为所述第一链表;
和/或,所述M个链表被设置对应的链表标识;
所述释放单元具体用于:
将本地已记录的RCU宽限期计数和所述M进行指定运算,得到第三计算结果;
依据所述第三计算结果,从所述M个链表中确定链表标识与所述第三计算结果匹配的链表,将确定出的链表确定为所述第二链表。
可选的,在第一报文处理任务完成后,所述记录单元还用于:
接收第二报文处理任务;
针对第二报文处理任务中待处理的报文,若发现所述转发流表中不存在所述报文匹配的第三流表项,则依据本地已记录的RCU宽限期计数和所述M,从本转发线程对应的链表数组中确定出当前申请链表;
若所述当前申请链表为所述第二链表,则从所述第二链表中获取流表项,该获取的流表项为所述第一流表项或者不为所述第一流表项,将本转发线程对所述报文进行处理后得到的处理结果记录至该获取的流表项中,并将该流表项作为所述报文匹配的第三流表项记录至所述转发流表中。
根据本申请第三方面的实施例,提出了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的方法。
由以上技术方案可见,本申请实施例在转发流表中不存在与当前待处理的报文匹配的第一流表项时,依据本地已记录的RCU宽限期计数和链表数量,确定出作为申请链表的第一链表,并从第一链表中获取第二流表项,并设置该流表项内容后将该流表项作为第一流表项记录至转发流表中,使得转发线程能够在转发流表中查找到并使用该第一流表项;在需要释放转发流表中的第一流表项时,则依据本地已记录的RCU宽限期计数和链表数量,确定出作为待释放链表的第二链表,将第一流表项添加至第二链表中,通过将第一流表项从转发流表中清除并记录至第二链表中,使得转发线程无法从转发流表中查找到该第一流表项,实现了转发线程对转发流表的管理。
进一步地,在第一流表项被添加至第二链表后,后续当该第二链表被作为申请链表时,该第一流表项能够被重复使用,转发线程更新其流表项内容后记录至转发流表中,提高了流表项的利用率。
附图说明
此处的附图被并入说明书中并构成说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例提供的流表管理方法的实现流程图;
图2为本申请实施例提供的转发线程本地链表示意图;
图3为本申请实施例提供的全局宽限期代际计数与本地记录的RCU宽限期计数关系图;
图4为本申请实施例提供的一种电子设备结构图;
图5为本申请实施例提供的一种流表管理装置结构图;
图6为本申请实施例提供的另一种流表管理装置结构图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
下面结合附图对本申请实施例中技术方案作进一步详细的说明。
请参考图1,图1为本申请实施例提供的流表管理方法实现流程图,该方法应用于网络设备中的转发线程;所述网络设备被部署了N个转发线程,N大于1,N个转发线程共享同一转发流表;每一转发线程具有对应的链表数组,每一链表数组包括M个链表,M大于或等于4。如图1所示,该方法可以包括以下步骤:
步骤101,针对当前待处理的报文,若发现转发流表中不存在所述报文匹配的第一流表项,则依据本地已记录的RCU(Read,Copy-Update,读-复制更新)宽限期计数和链表数量M,从本转发线程对应的链表数组中确定出作为申请链表的第一链表。
与相关技术中所有转发线程共用一个链表数组不同,在本实施例中,每一转发线程都具有该转发线程对应的一个链表数组,同时每一链表数组包括M个链表,其中M大于或等于4。
作为一个实施例,转发流表可以为哈希表,也可以为能够储存报文特征和处理结果的任意流表,本申请对此并不进行限制。
在本实施例中,发现转发流表中不存在当前待处理的报文匹配的第一流表项是指转发线程中当前待处理的报文所属的数据流从未通过该转发线程进行转发或转发线程中当前待处理的报文所属的数据流通过该转发线程进行转发后已将对应的流表项释放。
在本实施例中,可选的,所述M个链表被设置对应的链表标识;
依据本地已记录的读-复制更新RCU宽限期计数和所述M,从本转发线程对应的链表数组中确定出作为申请链表的第一链表包括:
将本地已记录的当前RCU宽限期计数增加第二设定值,得到第一计算结果;
将所述第一计算结果和所述M进行指定运算,得到第二计算结果;
依据所述第二计算结果,从所述M个链表中确定链表标识与所述第二计算结果匹配的链表,将确定出的链表确定为所述第一链表。
为了后续描述更加便捷,可以将本地已记录的RCU宽限期计数记为g,并在后文中继续沿用。
在本实施例中,指定运算可以是求模、乘以设定的比例、与设定值相加等,本实施例并不对此具体限定。
在本实施例中,每一转发线程对应的链表数组包括M个链表,该M个链表可以由链表标识0至M-1进行标识。
作为一个实施例,若每一转发线程对应的链表数组包括4个链表,则这4个链表由链表标识0至3进行标识,即链表0、链表1、链表2以及链表3。若当前本地已记录的RCU宽限期计数g为11,第二设定值取1,指定运算为求模运算,则从本转发线程对应的链表数组中确定出作为申请链表的第一链表的具体方法可以是:计算出第一链表的链表标识[(g+1) modM]=[(11+1) mod 4]=0,则表明确定出的第一链表为链表标识为0的链表即链表0,其中,第一计算结果为g+1得到的12;第二计算结果为(12 mod 4)=0。
其中,本地已记录的RCU宽限期计数g的确定方式会在后文详述,此处不再赘述。
步骤102,从第一链表中获取第二流表项,将本转发线程对该报文进行处理后得到的处理结果记录至该第二流表项中,并将该第二流表项作为报文匹配的第一流表项记录至转发流表中。
在本实施例中,将该第二流表项作为该报文匹配的第一流表项记录至转发流表中,以使当前数据流中的其他数据报文被处理时能够从转发流表中直接查询到匹配的第一流表项并使用,进而加快报文处理进程。
作为一个实施例,对报文进行处理可以包括该转发线程被预先配置的对报文的处理方式,该报文处理方式可以实现报文转发功能,具体可以是根据报文携带的目的IP查询路由表、找到报文出接口以及报文需要封装的链路层头等,本实施例并不对此具体限定。
步骤103,在需要释放转发流表中的第一流表项时,则依据本地记录的RCU宽限期和链表数量M,从本转发线程对应的链表数组中确定出作为待释放链表的第二链表,将第一流表项添加至第二链表中。
在本实施例中,将所述第一流表项添加至所述第二链表中,以使得所述第二链表作为申请链表时所述第一流表项被更新以记录至所述转发流表中,提高了流表项的利用率。
在本实施例中,需要释放转发流表中的第一流表项的情况可以包括:
在收到一个报文之后,在设定时间内未收到报文;或,接收到外部触发的用于指示释放转发流表中流表项的指令。
在本实施例中,可选的,所述M个链表被设置对应的链表标识;
依据本地已记录的RCU宽限期计数和所述M,从本转发线程对应的链表数组中确定出作为待释放链表的第二链表包括:
将本地已记录的RCU宽限期计数和所述M进行指定运算,得到第三计算结果;
依据所述第三计算结果,从所述M个链表中确定链表标识与所述第三计算结果匹配的链表,将确定出的链表确定为所述第二链表。
在本实施例中,M个链表对应的链表标识可以被设置为0至M-1。
在本实施例中,指定运算可以是求模、乘以设定的比例、与设定值相加等,本实施例并不对此具体限定。
作为一个实施例,若每一转发线程对应的链表数组包括4个链表,则这4个链表由链表标识0至3进行标识,即链表0、链表1、链表2以及链表3;指定运算为求模运算,且当前本地已记录的RCU宽限期计数g为11,则从本转发线程对应的链表数组中确定出作为待释放链表的第二链表的方法为:计算出第三结果即第二链表的链表标识(gmod M)= (11mod 4)=3,则表明确定出的待释放链表为链表标识为3的链表即链表3。
在确定出第二链表后,将需要释放的第一流表项添加至所述第二链表中,此时,转发流表中已不存在该第一流表项,后续的转发线程已经无法在转发流表中查找到该第一流表项,也就无法对该第一流表项进行使用,而当前正在使用该第一流表项的线程仍然可以继续使用添加至待释放链表中的该第一流表项,待到该第二链表成为申请链表时,能够保证之前正在使用上述第一流表项的线程已经均使用结束,保证此时没有转发线程正在使用该第二链表上的流表项。
在本实施例中,可选的,所述报文为当前被分配的第一报文处理任务中的其中一个报文;该方法进一步包括:
在第一报文处理任务完成后,检查所述本地记录的RCU宽限期计数与已记录的全局宽限期代际计数是否一致,若不一致,则更新所述本地记录的RCU宽限期计数为全局宽限期代际计数;
依据更新后的本地记录的RCU宽限期计数和所述M,确定作为申请链表的第三链表,将所述第一链表中的流表项转存至所述第三链表。
其中,可选的,所述全局宽限期代际计数用于反映所有转发线程完成被分配的报文处理任务的情况,其中,当所有转发线程均完成对应的报文处理任务后,所述全局宽限期代际计数被增加第一设定值。
其中,本地RCU宽限期计数以及全局宽限期代际计数的初始值可以设置为0,第一设定值可以设置为1。为了便于描述,全局宽限期代际计数可以记作G,并在后文中沿用。
作为一个实施例,转发线程获取由网卡发送的报文处理任务,该任务包括32个待处理的报文,当本转发线程将上述32个待处理的报文均处理完成后,将本地RCU宽限期计数增加1。
作为一个实施例,当前网络设备包括3个转发线程,分别记为转发线程0、转发线程1以及转发线程2,各转发线程均接受到对应的报文处理任务0、报文处理任务1以及报文处理任务2,若各转发线程均完成了一次各自对应的报文处理任务,则全局宽限期代际计数增加1。
在本实施例中,容易理解的是,在任意时刻,任何一个转发线程本地记录的RCU宽限期计数仅可能存在两种情况:与全局宽限期代际计数一致或比全局宽限期代际计数落后一代。
在本实施例中,依据更新后的本地记录的RCU宽限期计数和所述M,确定作为申请链表的第三链表的方法均与步骤101中依据本地已记录的读-复制更新RCU宽限期计数和所述M,从本转发线程对应的链表数组中确定出作为申请链表的第一链表的方法相同,此处不再赘述。
在本实施例中,确定出第三链表后,将第一链表中的流表项转存至第三申请链表,由于在确定出第一链表时,该第一链表中的流表项就已经确定为不会被转发线程使用,在确定第三链表后,第一链表中剩余的流表项实际上仍然为不会被转发线程使用的流表项,此时可以将第一链表中剩余的流表项全部添加至第三链表中,以使得这些流表项仍然能够在从第三链表中申请流表项时被使用。
在本实施例中,可选的,在第一报文处理任务完成之后,该方法进一步包括:
接收第二报文处理任务;
针对第二报文处理任务中待处理的报文,若发现所述转发流表中不存在所述报文匹配的第三流表项,则依据本地已记录的RCU宽限期计数和所述M,从本转发线程对应的链表数组中确定出当前申请链表;
若所述当前申请链表为所述第二链表,则从所述第二链表中获取流表项,该获取的流表项为所述第一流表项或者不为所述第一流表项,将本转发线程对所述报文进行处理后得到的处理结果记录至该获取的流表项中,并将该流表项作为所述报文匹配的第三流表项记录至所述转发流表中。
在本实施例中,确定当前申请链表的方法与步骤101中确定第一链表的方法完全相同,此处不再赘述。
当确定出的当前申请链表为第二链表时,与步骤101相同,从第二链表中获取流表项,以将该流表项设置内容后记录至转发流表中,作为第二报文处理任务中当前报文匹配的流表项。其中,从第二链表中获取的流表项可能为第一流表项,也可能不是。该方法对第二链表上的流表项进行了重新使用,提高了流表项的利用率。
在本实施例中,可选的,该方法可以进一步包括:
若从所述第一链表中获取流表项时,第一链表中包含的流表项数量小于需要获取的流表项数量,则可以从系统内存中申请预设数量的流表项。
作为一个实施例,若需要从第一链表中获取流表项时,此时第一链表中已不存在可被获取的流表项,则可以从系统内存中申请预设数量比如一万个流表项,批量获取能够避免短时间内可能存在的多次获取需求,减轻转发线程的负担。
在本实施例中,可选的,该方法可以进一步包括:
若将第一链表中的流表项转存至第三链表后,第三链表中包含的流表项数量大于该链表的最大容纳数量,则将超出链表最大容纳数量的流表项释放至系统内存中。
作为一个实施例,申请链表能够容纳的最大流表项数量为10000个,将第一链表中的流表项转存至第三链表后,第三链表中包含的流表项数量为10500个,超出了第三链表的最大容纳数量,此时转发线程会将该第三链表中超出容纳数量的流表项(即500个流表项)释放至系统内存中。
至此,结束对图1流表管理方法实现流程图的描述。
本实施例在转发流表中不存在与当前待处理的报文匹配的第一流表项时,依据本地已记录的RCU宽限期计数和链表数量,确定出作为申请链表的第一链表,并从第一链表中获取第二流表项,并设置该流表项内容后将该流表项作为第一流表项记录至转发流表中,使得转发线程能够在转发流表中查找到并使用该第一流表项;在需要释放转发流表中的第一流表项时,则依据本地已记录的RCU宽限期计数和链表数量,确定出作为待释放链表的第二链表,将第一流表项添加至第二链表中,通过将第一流表项从转发流表中清除并记录至第二链表中,使得转发线程无法从转发流表中查找到该第一流表项,实现了转发线程对转发流表的管理。
进一步地,在第一流表项被添加至第二链表后,后续当该第二链表被作为申请链表时,该第一流表项能够被重复使用,转发线程更新其流表项内容后记录至转发流表中,提高了流表项的利用率。
图2为本申请实施例提供的转发线程本地链表示意图。如图2所示,在本实施例中,每一转发线程对应的链表数组包括4个链表,则这4个链表由链表标识0至3进行标识,即链表0、链表1、链表2以及链表3。假设当前本地RCU宽限期计数为11,全局宽限期代际计数为12;在本实施例中,第一预设值与第二预设值均设置为1,下面结合图2对流表管理方法进行描述。
当本转发线程获取第一报文处理任务时,针对当前处理的报文,发现转发流表中不存在所述报文匹配的第一流表项,则依据本地已记录的读-复制更新RCU宽限期计数g=11和所述M=4,从所述链表数组中确定出作为申请链表的第一链表:计算出第一链表的链表标识[(g+1) mod M]= [(11+1) mod 4]=0,则表明确定出的第一链表为链表标识为0的链表即链表0。
此时,从链表0中获取一个流表项,将本转发线程对该报文进行处理后得到的处理结果记录至该流表项中,并将该流表项作为该报文匹配的第一流表项记录至转发流表中。
若此时需要释放转发流表中的第一流表项,依据本地记录的RCU宽限期计数和所述M,确定作为待释放链表的第二链表:计算出第二链表的链表标识(gmod M)=(11mod 4)=3,则表明确定出的第二链表为链表标识为3的链表即链表3。
确定出第二链表为链表3后,将需要释放的第一流表项添加至链表3中。
在对第一报文处理任务中所有的报文的处理完成后,此时本地记录的RCU宽限期计数g=11,已记录的全局宽限期代际计数G=12,二者不一致,则将g更新为G的值即g=G=12。
依据更新后的本地记录的RCU宽限期计数和所述M,确定作为申请链表的第三链表,具体地,计算出第三链表的链表标识[(g+1) mod M]= [(12+1) mod 4]=1,则表明确定出的第三链表为链表标识为1的链表即链表1。
此时,将第一链表即链表0中的流表项转存至第三链表即链表1中,以使得这些第一链表中的流表项仍然能够在从第三链表中申请流表项时被使用。
此时若本转发线程针对当前处理的报文,发现转发流表中不存在所述报文匹配的流表项时,即可以从第三链表中获取流表项,将第三链表中的流表项进行覆盖或修改复用。
至此,结束对图2转发线程本地链表示意图的描述。
在本实施例中,在确定出待释放链表后,将需要释放的第一流表项添加至第二链表中,此时,转发流表中已不存在该第一流表项,后续的转发线程已经无法在转发流表中查找到该第一流表项,也就无法对该第一流表项进行使用,而当前正在使用该第一流表项的线程仍然可以继续使用添加至第二链表中的该第一流表项,待到该第二链表成为申请链表时,能够保证之前正在使用上述第一流表项的线程已经均使用结束,保证此时没有转发线程正在使用该第二链表上的流表项;确定出第三链表后,将第一链表中的流表项转存至第三链表,由于在确定出第一链表时,该第一链表中的流表项就已经确定为不会被转发线程使用,在确定第三链表后,第一链表中剩余的流表项实际上仍然为不会被转发线程使用的流表项,此时可以将第一链表中剩余的流表项全部添加至第三链表中,以使得这些流表项仍然能够在从第三链表中申请流表项时被使用。
图3为本申请实施例提供的全局宽限期代际计数与本地记录的RCU宽限期计数关系图。如图3所示,在本实施例中,网络设备包括4个转发线程,分别记作转发线程1、转发线程2、转发线程3以及转发线程4;每一转发线程对应的链表数组包括4个链表,这4个链表由链表标识0至3进行标识,即链表0、链表1、链表2以及链表3。下面结合图3对全局宽限期代际计数与本地记录的RCU宽限期计数关系进行描述。
转发线程1在全局宽限期代际计数(简称全局计数)6阶段持有(使用)流表项A,随后转发线程4触发释放流表项A。此时由于转发线程4尚未完成当前的报文处理任务,转发线程4本地记录的RCU宽限期计数为5,确定出待释放链表的链表标识为5mod4=1,即待释放链表为转发线程4对应的链表数组中的链表1。
由于转发线程1在全局宽限期代际计数6阶段持有流表项A,则至少在转发线程1的本地记录的RCU宽限期计数6与7之间的时期内,此时不能有其他转发线程将流表项A复用或改写;所以最晚在全局宽限期代际计数达到8以后一定可以保证当前没有转发线程占用流表项A。当全局宽限期代际计数达到8时,若转发线程4申请流表项A,可能的线程本地计数为7(转发线程4的本地记录的RCU宽限期计数还未至8)或8,可能的申请链序号为0或1,此时这两个链表都可以保证所有流表项都未被转发线程使用,可以安全复用。
至此,结束对图3全局宽限期代际计数与本地记录的RCU宽限期计数关系图的描述。
图4是本申请实施例提供的一种电子设备的示意结构图。请参考图4,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成终端交互装置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图5,图5是本申请实施例提供的一种流表管理装置的结构图,其中,该装置被部署了N个转发线程,N大于1,N个转发线程共享同一转发流表;每一转发线程具有对应的链表数组,每一链表数组包括M个链表,M大于或等于4;如图5所示,该装置包括申请单元501、记录单元502以及释放单元503。具体地,该装置包括:
申请单元501,用于针对当前待处理的报文,若发现所述转发流表中不存在所述报文匹配的第一流表项,则依据本地已记录的读-复制更新RCU宽限期计数和所述M,从本转发线程对应的链表数组中确定出作为申请链表的第一链表;
记录单元502,用于从所述第一链表中获取第二流表项,将本转发线程对所述报文进行处理后得到的处理结果记录至该第二流表项中,并将该第二流表项作为所述报文匹配的第一流表项记录至所述转发流表中;
释放单元503,用于在需要释放所述转发流表中的所述第一流表项时,则依据本地记录的RCU宽限期计数和所述M,从本转发线程对应的链表中确定出作为待释放链表的第二链表,将所述第一流表项添加至所述第二链表中,以使得所述第二链表作为申请链表时所述第一流表项被更新以记录至所述转发流表中。
可选的,所述M个链表被设置对应的链表标识;
所述申请单元501具体用于:
将本地已记录的当前RCU宽限期计数增加第二设定值,得到第一计算结果;
将所述第一计算结果和所述M进行指定运算,得到第二计算结果;
依据所述第二计算结果,从所述M个链表中确定链表标识与所述第二计算结果匹配的链表,将确定出的链表确定为所述第一链表;
和/或,所述M个链表被设置对应的链表标识;
所述释放单元503具体用于:
将本地已记录的RCU宽限期计数和所述M进行指定运算,得到第三计算结果;
依据所述第三计算结果,从所述M个链表中确定链表标识与所述第三计算结果匹配的链表,将确定出的链表确定为所述第二链表。
至此,完成图5中流表管理装置的描述。
可选的,图6是本申请实施例提供的另一种流表管理装置的结构图。如图6所示,在图5所示装置的基础上,该装置除了包括申请单元601、记录单元602以及释放单元603之外,该装置进一步包括更新单元604:
其中,申请单元601、记录单元602以及释放单元603与申请单元501、记录单元502以及释放单元503完全相同。
更新单元604,用于在对第一报文处理任务完成后,检查所述本地记录的RCU宽限期计数与已记录的全局宽限期代际计数是否一致,若不一致,则更新所述本地记录的RCU宽限期计数为全局宽限期代际计数;
依据更新后的本地记录的RCU宽限期计数和所述M,确定作为申请链表的第三链表,将所述第一链表中的流表项转存至所述第三链表;
可选的,所述全局宽限期代际计数用于反映所有转发线程完成被分配的报文处理任务的情况,其中,当所有转发线程均完成对应的报文处理任务后,所述全局宽限期代际计数被增加第一设定值。
可选的,在第一报文处理任务完成后,所述记录单元602还用于:
接收第二报文处理任务;
针对第二报文处理任务中待处理的报文,若发现所述转发流表中不存在所述报文匹配的第三流表项,则依据本地已记录的RCU宽限期计数和所述M,从本转发线程对应的链表数组中确定出当前申请链表;
若所述当前申请链表为所述第二链表,则从所述第二链表中获取流表项,该获取的流表项为所述第一流表项或者不为所述第一流表项,将本转发线程对所述报文进行处理后得到的处理结果记录至该获取的流表项中,并将该流表项作为所述报文匹配的第三流表项记录至所述转发流表中。
至此,完成图6中另一种流表管理装置的描述。
对应地,在本实施例中,本申请实施例还提供了一种计算机可读存储介质,上述计算机可读存储介质上存储有若干计算机指令,上述计算机指令被执行时,能够实现本申请上述示例公开的方法。
示例性的,上述计算机可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,计算机可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

Claims (9)

1.一种流表管理方法,其特征在于,该方法应用于网络设备中的转发线程;所述网络设备被部署了N个转发线程,N大于1,所述N个转发线程共享同一转发流表;每一转发线程具有对应的链表数组,每一链表数组包括M个链表,所述M个链表被设置对应的链表标识;M大于或等于4;该方法包括:
针对当前待处理的报文,若发现所述转发流表中不存在所述报文匹配的第一流表项,则将本地已记录的当前读-复制更新RCU宽限期计数增加第二设定值,得到第一计算结果;将所述第一计算结果和所述M进行指定运算,得到第二计算结果;依据所述第二计算结果,从所述M个链表中确定链表标识与所述第二计算结果匹配的链表,将确定出的链表确定为申请链表的第一链表;
从所述第一链表中获取第二流表项,将本转发线程对所述报文进行处理后得到的处理结果记录至该第二流表项中,并将该第二流表项作为所述报文匹配的第一流表项记录至所述转发流表中;
在需要释放所述转发流表中的所述第一流表项时,则依据本地记录的RCU宽限期计数和所述M,从本转发线程对应的链表数组中确定出作为待释放链表的第二链表,将所述第一流表项添加至所述第二链表中,以使得所述第二链表作为申请链表时所述第一流表项被更新以记录至所述转发流表中。
2.根据权利要求1所述的方法,其特征在于,所述报文为当前被分配的第一报文处理任务中的其中一个报文;该方法进一步包括:
在第一报文处理任务完成后,检查所述本地记录的RCU宽限期计数与已记录的全局宽限期代际计数是否一致,若不一致,则更新所述本地记录的RCU宽限期计数为全局宽限期代际计数;
依据更新后的本地记录的RCU宽限期计数和所述M,确定作为申请链表的第三链表,将所述第一链表中的流表项转存至所述第三链表。
3.根据权利要求2所述的方法,其特征在于,所述全局宽限期代际计数用于反映所有转发线程完成被分配的报文处理任务的情况,其中,当所有转发线程均完成对应的报文处理任务后,所述全局宽限期代际计数被增加第一设定值。
4.根据权利要求1所述的方法,其特征在于,
依据本地已记录的RCU宽限期计数和所述M,从本转发线程对应的链表数组中确定出作为待释放链表的第二链表包括:
将本地已记录的RCU宽限期计数和所述M进行指定运算,得到第三计算结果;
依据所述第三计算结果,从所述M个链表中确定链表标识与所述第三计算结果匹配的链表,将确定出的链表确定为所述第二链表。
5.根据权利要求2所述的方法,其特征在于,在第一报文处理任务完成之后,该方法进一步包括:
接收第二报文处理任务;
针对第二报文处理任务中待处理的报文,若发现所述转发流表中不存在所述报文匹配的第三流表项,则依据本地已记录的RCU宽限期计数和所述M,从本转发线程对应的链表数组中确定出当前申请链表;
若所述当前申请链表为所述第二链表,则从所述第二链表中获取流表项,该获取的流表项为所述第一流表项或者不为所述第一流表项,将本转发线程对所述报文进行处理后得到的处理结果记录至该获取的流表项中,并将该流表项作为所述报文匹配的第三流表项记录至所述转发流表中。
6.一种流表管理装置,其特征在于,该装置被部署了N个转发线程,N大于1,所述N个转发线程共享同一转发流表;每一转发线程具有对应的链表数组,每一链表数组包括M个链表,所述M个链表被设置对应的链表标识;M大于或等于4;该装置包括:
申请单元,用于针对当前待处理的报文,若发现所述转发流表中不存在所述报文匹配的第一流表项,则将本地已记录的当前读-复制更新RCU宽限期计数增加第二设定值,得到第一计算结果;将所述第一计算结果和所述M进行指定运算,得到第二计算结果;依据所述第二计算结果,从所述M个链表中确定链表标识与所述第二计算结果匹配的链表,将确定出的链表确定为申请链表的第一链表;
记录单元,用于从所述第一链表中获取第二流表项,将本转发线程对所述报文进行处理后得到的处理结果记录至该第二流表项中,并将该第二流表项作为所述报文匹配的第一流表项记录至所述转发流表中;
释放单元,用于在需要释放所述转发流表中的所述第一流表项时,则依据本地记录的RCU宽限期计数和所述M,从本转发线程对应的链表中确定出作为待释放链表的第二链表,将所述第一流表项添加至所述第二链表中,以使得所述第二链表作为申请链表时所述第一流表项被更新以记录至所述转发流表中。
7.根据权利要求6所述的装置,其特征在于,所述报文为当前被分配的第一报文处理任务中的其中一个报文;该装置还包括:
更新单元,用于在对第一报文处理任务完成后,检查所述本地记录的RCU宽限期计数与已记录的全局宽限期代际计数是否一致,若不一致,则更新所述本地记录的RCU宽限期计数为全局宽限期代际计数;
依据更新后的本地记录的RCU宽限期计数和所述M,确定作为申请链表的第三链表,将所述第一链表中的流表项转存至所述第三链表;
和/或,所述全局宽限期代际计数用于反映所有转发线程完成被分配的报文处理任务的情况,其中,当所有转发线程均完成对应的报文处理任务后,所述全局宽限期代际计数被增加第一设定值。
8.根据权利要求6所述的装置,其特征在于,所述释放单元具体用于:
将本地已记录的RCU宽限期计数和所述M进行指定运算,得到第三计算结果;
依据所述第三计算结果,从所述M个链表中确定链表标识与所述第三计算结果匹配的链表,将确定出的链表确定为所述第二链表。
9.根据权利要求7所述的装置,其特征在于,在第一报文处理任务完成后,所述记录单元还用于:
接收第二报文处理任务;
针对第二报文处理任务中待处理的报文,若发现所述转发流表中不存在所述报文匹配的第三流表项,则依据本地已记录的RCU宽限期计数和所述M,从本转发线程对应的链表数组中确定出当前申请链表;
若所述当前申请链表为所述第二链表,则从所述第二链表中获取流表项,该获取的流表项为所述第一流表项或者不为所述第一流表项,将本转发线程对所述报文进行处理后得到的处理结果记录至该获取的流表项中,并将该流表项作为所述报文匹配的第三流表项记录至所述转发流表中。
CN202311236535.4A 2023-09-22 2023-09-22 流表管理方法及装置 Active CN116996438B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311236535.4A CN116996438B (zh) 2023-09-22 2023-09-22 流表管理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311236535.4A CN116996438B (zh) 2023-09-22 2023-09-22 流表管理方法及装置

Publications (2)

Publication Number Publication Date
CN116996438A CN116996438A (zh) 2023-11-03
CN116996438B true CN116996438B (zh) 2023-12-22

Family

ID=88534012

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311236535.4A Active CN116996438B (zh) 2023-09-22 2023-09-22 流表管理方法及装置

Country Status (1)

Country Link
CN (1) CN116996438B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014222457A (ja) * 2013-05-14 2014-11-27 株式会社Nttドコモ スレッド間通信方法、スレッド間通信システム、及びスレッド間通信プログラム
CN104363174A (zh) * 2014-11-12 2015-02-18 迈普通信技术股份有限公司 一种连接跟踪管理装置和方法
WO2015032333A1 (zh) * 2013-09-05 2015-03-12 华为技术有限公司 一种数据报文转发方法及装置
CN106534287A (zh) * 2016-10-27 2017-03-22 杭州迪普科技股份有限公司 一种会话表项的管理方法和装置
CN109587065A (zh) * 2017-09-28 2019-04-05 北京金山云网络技术有限公司 转发报文的方法、装置、交换机、设备及存储介质
CN110113230A (zh) * 2019-04-30 2019-08-09 新华三技术有限公司 一种报文统计方法及网络设备
CN110430138A (zh) * 2019-07-26 2019-11-08 新华三技术有限公司合肥分公司 数据流转发状态记录方法及网络设备
CN110727675A (zh) * 2018-07-17 2020-01-24 阿里巴巴集团控股有限公司 一种链表的处理方法及装置
CN111475264A (zh) * 2020-02-28 2020-07-31 新华三技术有限公司合肥分公司 一种用户态无锁转发的实现方法及装置
CN112005216A (zh) * 2018-04-20 2020-11-27 华为技术有限公司 用于动态切换用于访问数据结构的同步策略的系统和方法
CN112200670A (zh) * 2020-09-14 2021-01-08 北京航空航天大学 一种事件驱动的智能合约平台设计

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060112121A1 (en) * 2004-11-23 2006-05-25 Mckenney Paul E Atomically moving list elements between lists using read-copy update
US8661005B2 (en) * 2011-12-08 2014-02-25 International Business Machines Corporation Optimized deletion and insertion for high-performance resizable RCU-protected hash tables

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014222457A (ja) * 2013-05-14 2014-11-27 株式会社Nttドコモ スレッド間通信方法、スレッド間通信システム、及びスレッド間通信プログラム
WO2015032333A1 (zh) * 2013-09-05 2015-03-12 华为技术有限公司 一种数据报文转发方法及装置
CN104363174A (zh) * 2014-11-12 2015-02-18 迈普通信技术股份有限公司 一种连接跟踪管理装置和方法
CN106534287A (zh) * 2016-10-27 2017-03-22 杭州迪普科技股份有限公司 一种会话表项的管理方法和装置
CN109587065A (zh) * 2017-09-28 2019-04-05 北京金山云网络技术有限公司 转发报文的方法、装置、交换机、设备及存储介质
CN112005216A (zh) * 2018-04-20 2020-11-27 华为技术有限公司 用于动态切换用于访问数据结构的同步策略的系统和方法
CN110727675A (zh) * 2018-07-17 2020-01-24 阿里巴巴集团控股有限公司 一种链表的处理方法及装置
CN110113230A (zh) * 2019-04-30 2019-08-09 新华三技术有限公司 一种报文统计方法及网络设备
CN110430138A (zh) * 2019-07-26 2019-11-08 新华三技术有限公司合肥分公司 数据流转发状态记录方法及网络设备
CN111475264A (zh) * 2020-02-28 2020-07-31 新华三技术有限公司合肥分公司 一种用户态无锁转发的实现方法及装置
CN112200670A (zh) * 2020-09-14 2021-01-08 北京航空航天大学 一种事件驱动的智能合约平台设计

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Andrey Morozov ; Thomas Mutzke ; Boqi Ren ; Klaus Janschek.AADL-Based Stochastic Error Propagation Analysis for Reliable System Design of a Medical Patient Table.《2018 Annual Reliability and Maintainability Symposium (RAMS)》.2018,全文. *
PiBuffer:面向数据中心的OpenFlow流缓存管理模型;毛健彪;卞洪飞;韩彪;李韬;孙志刚;;计算机学报(06);全文 *

Also Published As

Publication number Publication date
CN116996438A (zh) 2023-11-03

Similar Documents

Publication Publication Date Title
CN111522641B (zh) 任务调度方法、装置、计算机设备和存储介质
CN106375404B (zh) 数据存储控制方法、数据存储方法、数据获取方法及装置
CN110399235B (zh) Tee系统中的多线程数据传输方法和装置
CN110069346B (zh) 多进程间资源共享方法、装置、电子设备
CN108259218B (zh) 一种ip地址分配方法和装置
CN104468401A (zh) 一种报文处理方法和装置
CN111343089B (zh) 解决mac地址hash冲突导致洪泛问题的方法及系统
CN113328944B (zh) 一种流表管理方法及装置
CN110515728B (zh) 服务器调度方法、装置、电子设备及机器可读存储介质
CN113703912A (zh) 一种虚拟机管理方法及装置
CN116996438B (zh) 流表管理方法及装置
CN110780944B (zh) 一种应用权限的启动方法、设备及机器可读存储介质
CN109547318B (zh) Vpn数据报文的处理方法、装置、电子设备
CN110929195A (zh) 数据的缓存策略确定方法、装置以及电子设备
CN110069221B (zh) 数据释放方法及装置
EP3783495B1 (en) Exclusive control system and exclusive control method
CN115480835A (zh) 程序启动方法和设备、存储介质
CN113744013A (zh) 订单号的生成方法、装置、服务器及存储介质
CN111490972A (zh) 一种表项管理方法、装置、设备及机器可读存储介质
CN112559115A (zh) 一种容器镜像的删除方法、装置及设备
CN110674156A (zh) 多机房数据的同步方法、计算设备及计算机存储介质
CN111901248B (zh) 一种负载均衡方法、装置、设备及机器可读存储介质
CN114553834B (zh) 5g核心网和ims网络的交互方法及装置
CN108173689A (zh) 负载均衡数据的输出系统
CN109450715B (zh) 消息处理方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant