CN116032837A - 一种流表卸载方法及装置 - Google Patents
一种流表卸载方法及装置 Download PDFInfo
- Publication number
- CN116032837A CN116032837A CN202211654685.2A CN202211654685A CN116032837A CN 116032837 A CN116032837 A CN 116032837A CN 202211654685 A CN202211654685 A CN 202211654685A CN 116032837 A CN116032837 A CN 116032837A
- Authority
- CN
- China
- Prior art keywords
- hardware
- item
- entry
- operation set
- linked list
- 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.)
- Pending
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例公开了一种流表卸载方法及装置,所述方法包括:将流表中的匹配项划分为至少一个分类;确定当前记录的第一链表中是否存在与所述至少一个分类中第一分类中的第一表项相同的表项,所述第一链表的表项与所述第一分类的表项的类型相同;若不存在,则建立所述第一分类中的所述第一表项,并将所述第一分类中的所述第一表项卸载到硬件;若存在,则增加所述第一链表中的第一表项的计数,不将所述第一表项卸载到硬件。采用本申请实施例,可以节省硬件的存储空间,减少软硬件交互次数,提高CPU的性能。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种流表卸载方法及装置。
背景技术
随着云计算和数据中心相关技术的迅速发展,业务层需求和数据流量日益增加。为了提高数据转发性能和收发包速度,采用了各种硬件加速技术来满足快速增长的高网络带宽应用需求同时减少对主机计算资源的占用。其中硬件卸载(Hardware Offload)技术得到了广泛应用。硬件卸载指的是将原本由软件承担的某些功能下移到硬件实现。在数据传输和网络通信上一般由软件例如操作系统来控制报文的转发,通过将软件生成的数据路径(Data Path)快转流表(Flow Table)卸载到硬件上后,让报文走硬件转发,可以提高报文转发速度和改进转发性能。但是,现有流表卸载方式占用硬件内存大,软硬件交互频繁,耗费中央处理器(Central Processing Processor,CPU)性能。
发明内容
本申请实施例提供一种流表卸载方法及装置,可以节省硬件的存储空间,减少软硬件交互次数,提高CPU的性能。
第一方面,本申请实施例提供了一种流表卸载方法,包括:将流表中的匹配项划分为至少一个分类;确定当前记录的第一链表中是否存在与所述至少一个分类中第一分类中的第一表项相同的表项,所述第一链表的表项与所述第一分类的表项的类型相同;若不存在,则建立所述第一分类中的所述第一表项,并将所述第一分类中的所述第一表项卸载到硬件;若存在,则增加所述第一链表中的第一表项的计数,不将所述第一表项卸载到硬件。通过将流表中的匹配项划分为至少一个分类,如果不同的流表之间的某个分类中存在相同的表项,则不需要重复将该表项卸载到硬件,从而节省了硬件的存储空间。
在一种可能的设计中,将所述流表中的操作集划分为共有操作集和私有操作集;确定当前记录的共有操作链表中是否存在与所述共有操作集中的第二表项相同的表项;若不存在,则建立所述共有操作集中的所述第二表项,并将所述共有操作集中的所述第二表项卸载到硬件;若存在,则增加所述共有操作链表中的所述第二表项的计数,不将所述共有操作集中的所述第二表项卸载到硬件。
通过将流表中的匹配项划分为至少一个分类,如果不同的流表之间的某个分类中存在相同的表项,则不需要重复将该表项卸载到硬件,从而节省了硬件的存储空间。通过将流表中的操作集划分为共有操作集和私有操作集,如果不同的流表之间的共有操作集中存在相同的表项,则不需要重复将该表项卸载到硬件,从而节省了硬件的存储空间。并且,如果硬件中的分类或共有操作集已经存在相应的表项,则不需要重复卸载,减少软硬件的交互频率,提高了CPU的性能。
在另一种可能的设计中,建立所述私有操作集中所有表项;将所述私有操作集中所有表项卸载到硬件。由于私有操作集中的表项的利用率低,因此对于各个流表的私有操作集中表项,可以均建立私有操作集中表项并卸载到硬件,提高数据转发的成功率。
在另一种可能的设计中,将所述流表中的匹配项输入到已训练的网络业务模型中,确定所述匹配项中每个字段与预设的分类模板的匹配度;根据所述匹配度,将所述流表中的匹配项划分为至少一个分类。通过网络业务模型对匹配项进行分类,提高分类的准确性。
在另一种可能的设计中,当所述第一表项未被使用的时长超过第一预设阈值时,减小所述第一链表中的第一表项的计数或从所述硬件中删除所述第一表项。避免在长时间未被使用的情况下,仍然保存第一表项,提高硬件的利用率。
在另一种可能的设计中,当所述第二表项未被使用的时长超过第二预设阈值时,减小所述共有操作链表中的所述第二表项的计数或从所述硬件中删除所述第二表项。避免在长时间未被使用的情况下,仍然保存第二表项,提高硬件的利用率。
在另一种可能的设计中,所述至少一个分类包括隧道分类、数据链路层L2分类、网络层L3分类和传输层L4分类中的一项或多项。
第二方面,本申请实施例提供了一种流表卸载装置,所述装置包括:
分类模块,用于将流表中的匹配项划分为至少一个分类;
查找模块,用于确定当前记录的第一链表中是否存在与所述至少一个分类中第一分类中的第一表项相同的表项,所述第一链表的表项与所述第一分类的表项的类型相同;
卸载模块,用于若不存在,则建立所述第一分类中的所述第一表项,并将所述第一分类中的所述第一表项卸载到硬件;若存在,则增加所述第一链表中的第一表项的计数,不将所述第一表项卸载到硬件。
在另一种可能的设计中,所述分类模块,还用于将所述流表中的操作集划分为共有操作集和私有操作集;
所述查找模块,还用于确定当前记录的共有操作链表中是否存在与所述共有操作集中的第二表项相同的表项;
所述卸载模块,还用于若不存在,则建立所述共有操作集中的所述第二表项,并将所述共有操作集中的所述第二表项和所述第一私有操作集卸载到硬件;若存在,则增加所述共有操作链表中的所述第二表项的计数,仅将所述私有操作集卸载到硬件。
在另一种可能的设计中,所述卸载模块,还用于建立所述私有操作集中所有表项;将所述私有操作集中所有表项卸载到硬件。
在另一种可能的设计中,所述分类模块,还用于将所述流表中的匹配项输入到已训练的网络业务模型中,确定所述匹配项中每个字段与预设的分类模板的匹配度;根据所述匹配度,将所述流表中的匹配项划分为至少一个分类。
在另一种可能的设计中,所述卸载模块,还用于当所述第一表项未被使用的时长超过第一预设阈值时,减小所述第一链表中的第一表项的计数或从所述硬件中删除所述第一表项。
在另一种可能的设计中,所述卸载模块,还用于当所述第二表项未被使用的时长超过第二预设阈值时,减小所述共有操作链表中的所述第二表项的计数或从所述硬件中删除所述第二表项。
在另一种可能的设计中,所述至少一个分类包括隧道分类、数据链路层L2分类、网络层L3分类和传输层L4分类中的一项或多项。
该流表卸载装置执行的操作及有益效果可以参见上述第一方面所述的方法以及有益效果,重复之处不再赘述。
第三方面,本申请提供了一种流表卸载装置,该流表卸载装置可以是OVS,也可以是OVS中的装置,或者是能够和OVS匹配使用的装置。其中,该流表卸载装置还可以为芯片系统。该流表卸载装置可执行第一方面所述的方法。该流表卸载装置的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。该模块可以是软件和/或硬件。该流表卸载装置执行的操作及有益效果可以参见上述第一方面所述的方法以及有益效果,重复之处不再赘述。
第四方面,本申请提供了一种计算设备,所述计算设备包括处理器和存储器,所述存储器用于存储计算机程序,当所述处理器调用存储器中的计算机程序时,如第一方面中任意一项所述的方法被执行。
第五方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,当所述计算机程序被执行时,使得如第一方面中任意一项所述的方法被实现。
第六方面,本申请提供一种包括计算机程序的计算机程序产品,当所述计算机程序被执行时,使得如第一方面中任意一项所述的方法被实现。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1是一种流表卸载的流程示意图;
图2是本申请实施例提供的一种流表卸载方法的流程示意图;
图3是本申请实施例提供的另一种流表卸载方法的流程示意图;
图4是本申请实施例提供的一种流表卸载装置的结构示意图;
图5是本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
下面结合本申请实施例中的附图对本申请实施例进行描述。
应当理解的是,在本申请的描述中,“至少一个”指一个或一个以上,“多个”指两个或两个以上。另外,“第一”、“第二”等词汇,除非另有说明,否则仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
流表卸载方法属于硬件卸载(Hardware Offload)技术的范畴,一般理解为将原本通过软件实现的流表匹配和报文转发、数据转发等功能卸载到硬件上执行。在云计算和数据中心等应用场景下,流表卸载方法及相关的设备和介质应用在如虚拟交换机、网卡等。具体地,虚拟交换机是将多台物理连接的交换机集成后利用虚拟化技术得到,用于在数据链路层提供网络服务。多层虚拟交换机的一种架构叫做Open VSwitch架构,简称OVS架构。OVS架构的特点是控制层和转发层的解耦,用统一的控制器在控制层来决定所有数据包在网络中的传输路径,然后由交换机在转发层执行数据传输。其中,控制器负责控制转发规则,交换机只负责执行转发规则下的转发工作。OVS架构支持用户态和内核态,也称作用户空间和内核空间。内核空间和用户空间之间的数据交互或者说内核态与用户态之间的切换,一般会带来延迟和损耗,从而造成性能下降。为此,OVS架构采用了数据平面开发套件(DataPlane Development Kit,DPDK)技术,使得用户态的数据不经过操作系统直接转发到网卡。具体地说,OVS架构结合DPDK技术,数据转发工作是通过流表(Flow Table)匹配来实现,其中,网卡的特定网络功能或者说接口对应一种或者多种数据路径(Data Path),通过流表匹配来将数据流的数据包导向对应的数据路径。也就是说,用户态OVS通过DPDK的流表卸载通道或者说DPDK开放给用户态OVS进行调用的接口,可以将流表卸载给硬件如网卡,这样实现了用户态的操作,也就省去了内核空间和用户空间之间的数据交互以及操作系统的介入等,从而提升了性能。一般来说可以有多个流表,每个流表有多个表项(Flow Entry),每个表项各自有多个匹配字段(Match Fields)。用户态OVS利用的是在硬件缓存上的缓存流表,这些硬件缓存的缓存流表用于实现用户态的数据直接转发到对应的数据路径,例如网卡上的相应模块,可以理解为是数据路径快转流表,并且这样的数据路径快转流表一般存储在硬件缓存上,例如随机存取存储器(Random Access Memory,RAM)上。因此,OVS架构结合DPDK技术,使得用户态的数据(例如用户数据)通过在硬件缓存上的缓存流表或者说数据路径快转流表找到匹配的表项,也即报文命中数据路径快转流表,然后该数据直接被转发到相应的数据路径或者网卡接口进行数据转发和报文转发。
流表卸载指的是,指定协处理器或者智能网卡的一部分来专门实现上述的关于流表匹配和数据转发功能(也包括报文转发和网络通信)。因此也将在硬件缓存的流表称作为硬转流表,通过硬转流表来执行流表匹配和数据转发,例如基于硬转流表对报文执行报文硬转,具有运行效率高且延迟小的优点。相对的,将在用户空间缓存的流表称作软转流表,通过软转流表来执行流表匹配和数据转发例如基于软转流表对报文执行报文软转,可以利用用户空间丰富的应用、数据及开发工具等。在用户空间可以生成数据路径快转流表(可以与某个软转流表对应)或者说确定当前流数据包的传输路径,然后将在用户态下的数据路径快转流表下发到硬件缓存的流表或者硬转流表。这样的下发数据路径快转流表到硬件缓存的流表或者硬转流表,对应了上述的流表卸载,有利于后续通过硬转流表来执行流表匹配和数据转发,例如基于硬转流表对报文执行报文硬转。
在现有技术方案中,是将完整的流表解析为多个表项卸载到硬件,每个表项中包括匹配项(key)和操作集(action)的映射关系。其中,key卸载到硬件,用于指导硬件匹配;action卸载到硬件,用于指导硬件转发。例如,当卸载1K大小的流表,需要在RAM存储1K大小的key和action的表项。
如图1所示,图1是一种流表卸载的流程示意图。该流表卸载主要包括如下步骤:S101,OVS生成多个流表。S102,对接收到的所有报文进行过滤。S103,对多个不同的流表进行解析得到多个匹配项。S104,对多个不同的流表进行解析得到多个操作集。S105,将多个匹配项和多个操作集组装为一个流表,卸载到硬件。
但是,上述流表卸载过程存在如下缺点:(1)流表卸载的key为多个流表中完整的key。如果多个流表中的tunnel、L2、L3或L4存在重合,只能卸载多个流表中完整的key到硬件。浪费了硬件的RAM内存空间。(2)流表卸载的action为多个流表中完整的action。如果多个流表中的action操作存在部分相同的action,例如,网络地址转换(Network AddressTranslation,NAT)action有可能映射到同一个互联网协议(Internet Protocol,IP)地址或者端口(Port)。因此必须卸载多个流表中完整的action到硬件,浪费硬件的RAM内存空间。(3)流表中每个表项的添加和删除都会引起软硬件的添加和删除,导致软硬件交互频繁,耗费CPU的性能。
为了解决上述技术问题,本申请实施例提供了如下解决方案。
如图2所示,图2是本申请实施例提供的一种流表卸载方法的流程示意图。该方法主要包括如下步骤:
S201,将流表中的匹配项划分为至少一个分类。
其中,每个流表可以包括匹配项(key)与操作集(action)之间的映射关系,匹配项可以包括多个报文头字段,所述多个报文头字段包括源地址、源端口号、目的地址、目的端口号、虚拟扩展局域网(Virtual Extensible LAN,VXLAN)、协议、外部虚拟局域网(OuterVLAN)、内部虚拟局域网(Inter VLAN)和虚拟端口(Virtual Port,vPort)中一项或多项。操作集可以包括转发操作以及在转发操作之间对与该操作集对应的报文所执行的全部其他操作。
其中,所有流表的报文头字段可以划分为隧道(tunnel)分类、数据链路层(L2)分类、网络层(L3)分类和传输层(L4)等4种分类。每个流表中的匹配项均可以落在tunnel分类、L2分类、L3分类和L4分类中的一个或多个分类中。
具体的,可以将所述流表中的匹配项输入到已训练的网络业务模型中,确定所述匹配项中每个字段与预设的分类模板的匹配度;根据所述匹配度,将所述流表中的匹配项划分为至少一个分类。其中,预设的分类模板包括tunnel分类模板、L2分类模板、L3分类模板和L4分类模板。例如,如果匹配项中的第一字段与L2分类模板的匹配度大于预设阈值,则将匹配项中第一字段划分为L2分类。
可选的,在通过已训练的网络业务模型对流表中的匹配项进行分类之前,可以预先将匹配项中各个字段和分类标签输入到待训练的网络业务模型进行训练,得到已训练的网络业务模型。
可选的,在将流表中的匹配项划分为至少一个分类之前,OVS可以生成流表,通过流表对接收到的数据包进行转发。进一步的,还可以对接收到的数据包进行过滤,例如,过滤掉地址解析协议(Address Resolution Protocol,ARP)数据包、镜像数据包或多播数据包,不通过流表对ARP数据包、镜像数据包或多播数据包进行转发。
S202,确定当前记录的第一链表中是否存在与至少一个分类中第一分类中的第一表项相同的表项,所述第一链表的表项与所述第一分类的表项的类型相同。若不存在,则执行S203。若存在,则执行S204。
具体的,在软件内存(例如外设内存)中已经保存四种链表,四种链表包括tunnel链表、L2链表、L3链表和L4链表,每种链表可以包括一个或多个表项。其中,第一链表可以为tunnel链表、L2链表、L3链表和L4链表中任意一种。OVS可以确定每种链表中是否存在流表的匹配项中对应分类中的表项。例如,如果将流表中的匹配项划分为tunnel分类和L2分类,确定当前记录的tunnel链表中是否存tunnel分类的表项,以及当前记录的L2链表是否存L2分类的表项。
特别的,如果第一链表不存在任何表项,也即在首次生成流表的情况下,可以直接在第一链表中建立第一分类中的所述第一表项。
S203,建立所述第一分类中的所述第一表项,并将所述第一分类中的所述第一表项卸载到硬件。在第一链表中没有记录第一表项的情况下,在第一链表中建立第一表项,以便卸载到硬件(例如RAM)后通过第一表项进行数据转发。
S204,增加所述第一链表中的第一表项的计数,不将所述第一表项卸载到硬件。
例如,可以将所述第一链表中的第一表项的计数+1。在第一链表中已经记录第一表项情况下,不需要将第一表项重复记录到第一链表中,避免重复卸载到硬件,占用硬件的存储空间。
可选的,当所述第一表项未被使用的时长超过第一预设阈值时,减小所述第一链表中的第一表项的计数或从所述硬件中删除所述第一表项。其中,第一预设阈值可以为5分钟或10分钟。例如,在第一表项卸载到硬件中之后,如果超过5分钟第一表项未被使用,则将所述第一链表中的第一表项的计数减1,如果再次超过5分钟第一表项未被使用,继续将所述第一链表中的第一表项的计数减1。如果在第一表项卸载到硬件中之后,一直未被使用,则可以直接从硬件中删除第一表项。
在本申请实施例中,通过将流表中的匹配项划分为至少一个分类,如果不同的流表之间的某个分类中存在相同的表项,则不需要重复将该表项卸载到硬件,从而节省了硬件的存储空间。
如图3所示,图3是本申请实施例提供的另一种流表卸载方法的流程示意图。该方法主要包括如下步骤:
S301,将流表中的匹配项划分为至少一个分类。
S302,确定当前记录的第一链表中是否存在与所述至少一个分类中第一分类中的第一表项相同的表项。
S303,若不存在,则建立所述第一分类中的所述第一表项;若存在,则增加所述第一链表中的第一表项的计数。
S301-S303与上述S201-S204相同,S301-S303可以参考上述S201-S204的实现过程,此处不再赘述。
S304,将所述流表中的操作集划分为共有操作集和私有操作集。
其中,共有操作集(action)可以为数据转发常用操作,例如对于L2,SET MAC或SETWLAN等操作。私有操作集(action)可以为数据转发不常用操作。
具体的,可以将所述流表中的操作集输入到已训练的操作分类模型中,通过操作分类模型对流表中的操作集进行分类。可选的,在通过操作分类模型对流表中的操作集进行分类之前,可以将操作集和分类标签输入到待训练的操作分类模型中进行训练,得到已训练的操作分类模型。
S305,确定当前记录的共有操作链表中是否存在与所述共有操作集中的第二表项相同的表项。
具体的,在软件内存(例如外设内存)中已经保存共有操作链表,共有操作链表可以包括一个或多个表项。例如,如果将流表中的操作集划分为公有操作集和私有操作集,确定当前记录的共有操作链表中是否存流表中公有操作集的表项。
特别的,如果共有操作链表不存在任何表项,也即在首次生成流表的情况下,可以直接在共有操作链表中建立所述共有操作集中的所述第二表项。
S306,若不存在,则建立所述共有操作集中的所述第二表项,若存在,则增加共有操作链表中的所述第二表项的计数。
在共有操作链表中没有记录第二表项的情况下,在共有操作链表中建立第一表项,以便卸载到硬件(例如RAM)后通过第二表项进行数据转发。在共有操作链表中已经记录第二表项情况下,不需要将第二表项重复记录到共有操作链表中,避免重复卸载到硬件,占用硬件的存储空间。
其中,增加共有操作链表中的所述第二表项的计数可以包括:将所述第一链表中的第一表项的计数+1。
S307,建立所述私有操作集中所有表项。
由于私有操作集中的表项的利用率低,因此对于各个流表的私有操作集,可以均建立私有操作集中的所有表项并卸载到硬件,从而提高数据转发的成功率。
S308,将建立的第一分类中的所述第一表项、共有操作集的第二表项和私有操作集中所有表项卸载到硬件。对于增加计数的表项,不卸载到硬件。
可选的,当所述第二表项未被使用的时长超过第二预设阈值时,减小所述共有操作链表中的所述第二表项的计数或从所述硬件中删除所述第二表项。其中,第二预设阈值可以为5分钟或10分钟。例如,在第二表项卸载到硬件中之后,如果超过5分钟第二表项未被使用,则将共有操作链表中的所述第二表项的计数减1,如果再次超过5分钟第二表项未被使用,继续将共有操作链表中的所述第二表项的计数减1。如果在第二表项卸载到硬件中之后,一直未被使用,则可以直接从硬件中删除第二表项。
可选的,可以在硬件中保存增加计数的表项的索引。例如,如果流表1和流表2的L2分类中存在相同的第一表项,以及共有操作集中相同的第二表项,则可以在硬件中记录流表2的flow_index和action_index,从而可以通过flow_index索引到流表2的L2分类中的第一表项、以及通过action_index索引到流表2的共有操作集中的第二表项。
例如,如果VOC生成2条流表,流表1包括:Key:A1+B1+C1+D1,Action:E1+E2,流表2包括:Key:A1+B1+C1+D2,Action:E1+E3。其中,A表示流表中的key的tunnel分类,B表示流表中的key的L2分类,C表示流表中的key的L3分类,D表示流表中的key的L4分类。E表示流表中的action。A1为tunnel分类中的一个表项,B1为L2分类中的一个表项,C1为L3分类中一个表项,D1和D2为L4分类中不同的两个表项。E1为公有action,E2和E3为私有action。
可以看出,流表1和流表2中的tunnel分类中的表项A1相同,L2分类中的表项B1相同,L3分类中的表项C1相同,流表1中的L4分类中的D1表项与流表2中的L4分类中的D2表项不同。因此,可以将流表1中所有表项卸载到硬件,而仅将流表2中的L4分类中表项D2和私有操作集E3卸载到硬件即可。最后硬件保存的表项内容为:流表1:Key:A1+B1+C1+D1,Action:E1+E2;流表2:Key:D2,Action:E3。应注意,在硬件中实际保存流表2的如下内容:Key:flow_index+D2;Action:action_index+E3。其中,flow_index代表A1+B1+C1,action_index表示E1。
需要说明的是,flow_index不局限于索引到一类或多类的流表,不同的索引可以索引到A1+B1+C1(隧道报文),也可以索引到B1+C1(非隧道报文)。同样的,action_index不局限于索引到一个共有action,也可以索引到多个共有action。
经过上述操作,不需要重复对流表2中Key中的表项A1+B1+C1和Action中共有操作集E1进行存储,节省了硬件的存储空间。
在本申请实施例中,通过将流表中的匹配项划分为至少一个分类,如果不同的流表之间的某个分类中存在相同的表项,则不需要重复将该表项卸载到硬件,从而节省了硬件的存储空间。通过将流表中的操作集划分为共有操作集和私有操作集,如果不同的流表之间的共有操作集中存在相同的表项,则不需要重复将该表项卸载到硬件,从而节省了硬件的存储空间。并且,如果硬件中的分类或共有操作集已经存在相应的表项,则不需要重复卸载,减少软硬件的交互频率,提高了CPU的性能。
本申请实施例可以根据上述方法示例对OVS进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以使用硬件的形式实现,也可以使用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。下面以使用对应各个功能划分各个功能模块为例进行说明。
请参见图4,图4是本申请实施例提供的一种流表卸载装置的结构示意图,该流表卸载装置可以包括分类模块401、查找模块402和卸载模块403。
在一种可能的设计中,该流表卸载装置可实现对应于上文方法实施例中的OVS执行的步骤或者流程,例如,可以为OVS和可提供软硬件接口的芯片或电路共同实现。
分类模块401,用于将流表中的匹配项划分为至少一个分类;
查找模块402,用于确定当前记录的第一链表中是否存在与所述至少一个分类中第一分类中的第一表项相同的表项,所述第一链表的表项与所述第一分类的表项的类型相同;
卸载模块403,用于若不存在,则建立所述第一分类中的所述第一表项,并将所述第一分类中的所述第一表项卸载到硬件;若存在,则增加所述第一链表中的第一表项的计数,不将所述第一表项卸载到硬件。
可选的,分类模块401,还用于将所述流表中的操作集划分为共有操作集和私有操作集;
查找模块402,还用于确定当前记录的共有操作链表中是否存在与所述共有操作集中的第二表项相同的表项;
卸载模块403,还用于若不存在,则建立所述共有操作集中的所述第二表项,并将所述共有操作集中的所述第二表项和所述第一私有操作集卸载到硬件;若存在,则增加所述共有操作链表中的所述第二表项的计数,仅将所述私有操作集卸载到硬件。
可选的,卸载模块403,还用于建立所述私有操作集中所有表项;将所述私有操作集中所有表项卸载到硬件。
可选的,分类模块401,还用于将所述流表中的匹配项输入到已训练的网络业务模型中,确定所述匹配项中每个字段与预设的分类模板的匹配度;根据所述匹配度,将所述流表中的匹配项划分为至少一个分类。
可选的,卸载模块403,还用于当所述第一表项未被使用的时长超过第一预设阈值时,减小所述第一链表中的第一表项的计数或从所述硬件中删除所述第一表项。
可选的,卸载模块403,还用于当所述第二表项未被使用的时长超过第二预设阈值时,减小所述共有操作链表中的所述第二表项的计数或从所述硬件中删除所述第二表项。
可选的,所述至少一个分类包括隧道分类、数据链路层L2分类、网络层L3分类和传输层L4分类中的一项或多项。
需要说明的是,各个模块的实现还可以对应参照图2或图3所示的方法实施例的相应描述,执行上述实施例中OVS所执行的方法和功能。
图5是本申请实施例提供的一种计算设备的结构示意图。该计算设备可应用于OVS中,执行上述图2或图3所示的方法实施例中OVS的功能,或者实现上述方法实施例中OVS执行的步骤或者流程。
如图5所示,该计算设备包括处理器501和收发器502。可选地,该计算设备还包括存储器503。其中,处理器501、收发器502和存储器503之间可以通过内部连接通路互相通信,传递控制和/或数据信号,该存储器503用于存储计算机程序,该处理器501用于从该存储器503中调用并运行该计算机程序,以控制该收发器502收发信号。可选地,计算设备还可以包括天线,用于将收发器502输出的上行数据或上行控制信令通过无线信号发送出去。
上述处理器501可以与图4中的分类模块401、查找模块402和卸载模块403对应,可以和存储器503可以合成一个处理装置,处理器501用于执行存储器503中存储的程序代码来实现上述功能。具体实现时,该存储器503也可以集成在处理器501中,或者独立于处理器501。
上述收发器502也可以称为收发单元或收发模块。收发器502可以包括接收器(或称接收机、接收电路)和发射器(或称发射机、发射电路)。其中,接收器用于接收信号,发射器用于发射信号。
应理解,图5所示的计算设备能够实现图2或图3所示方法实施例中涉及OVS的各个过程。计算设备中的各个模块的操作和/或功能,分别为了实现上述方法实施例中的相应流程。具体可参见上述方法实施例中的描述,为避免重复,此处适当省略详述描述。
上述处理器501可以用于执行前面方法实施例中描述的由OVS内部实现的动作,而收发器502可以用于执行发送或接收的动作。具体请见前面方法实施例中的描述,此处不再赘述。
其中,处理器501可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器501也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。通信总线504可以是外设部件互连标准PCI总线或扩展工业标准结构EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信总线504用于实现这些组件之间的连接通信。其中,本申请实施例中收发器502用于与其他节点设备进行信令或数据的通信。存储器503可以包括易失性存储器,例如非挥发性动态随机存取内存(nonvolatile random access memory,NVRAM)、相变化随机存取内存(phase change RAM,PRAM)、磁阻式随机存取内存(magetoresistive RAM,MRAM)等,还可以包括非易失性存储器,例如至少一个磁盘存储器件、电子可擦除可编程只读存储器(electrically erasableprogrammable read-only memory,EEPROM)、闪存器件,例如反或闪存(NOR flash memory)或是反及闪存(NAND flash memory)、半导体器件,例如固态硬盘(solid state disk,SSD)等。存储器503可选的还可以是至少一个位于远离前述处理器501的存储装置。存储器503中可选的还可以存储一组计算机程序代码或配置信息。可选的,处理器501还可以执行存储器503中所存储的程序。处理器可以与存储器和收发器相配合,执行上述申请实施例中计算设备的任意一种方法和功能。
本申请实施例还提供了一种芯片系统,该芯片系统包括处理器,用于支持计算设备以实现上述任一实施例中所涉及的功能,例如生成或处理上述方法中所涉及的流表卸载。在一种可能的设计中,所述芯片系统还可以包括存储器,所述存储器,用于计算设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。其中,芯片系统的输入和输出,分别对应方法实施例的计算设备的接收与发送操作。
本申请实施例还提供了一种流表卸载装置,包括处理器和存储器。所述存储器用于存储计算机程序,所述处理器可用于执行上述方法实施例中的方法。
根据本申请实施例提供的方法,本申请还提供一种计算机程序产品,该计算机程序产品包括:计算机程序,当该计算机程序在计算机上运行时,使得该计算机执行图2或图3所示实施例中任意一个实施例的方法。
根据本申请实施例提供的方法,本申请还提供一种计算机可读介质,该计算机可读介质存储有计算机程序,当该计算机程序在计算机上运行时,使得该计算机执行图2或图3所示实施例中任意一个实施例的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,高密度数字视频光盘(digital video disc,DVD))、或者半导体介质(例如,固态硬盘(solid state disc,SSD))等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种流表卸载方法,其特征在于,所述方法包括:
将流表中的匹配项划分为至少一个分类;
确定当前记录的第一链表中是否存在与所述至少一个分类中第一分类中的第一表项相同的表项,所述第一链表的表项与所述第一分类的表项的类型相同;
若不存在,则建立所述第一分类中的所述第一表项,并将所述第一分类中的所述第一表项卸载到硬件;若存在,则增加所述第一链表中的第一表项的计数,不将所述第一表项卸载到硬件。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
将所述流表中的操作集划分为共有操作集和私有操作集;
确定当前记录的共有操作链表中是否存在与所述共有操作集中的第二表项相同的表项;
若不存在,则建立所述共有操作集中的所述第二表项,并将所述共有操作集中的所述第二表项卸载到硬件;若存在,则增加所述共有操作链表中的所述第二表项的计数,不将所述共有操作集中的所述第二表项卸载到硬件。
3.如权利要求2所述的方法,其特征在于,所述方法还包括:
建立所述私有操作集中所有表项;
将所述私有操作集中所有表项卸载到硬件。
4.如权利要求1所述的方法,其特征在于,所述将流表中的匹配项划分为至少一个分类包括:
将所述流表中的匹配项输入到已训练的网络业务模型中,确定所述匹配项中每个字段与预设的分类模板的匹配度;
根据所述匹配度,将所述流表中的匹配项划分为至少一个分类。
5.如权利要求1所述的方法,其特征在于,所述方法还包括:
当所述第一表项未被使用的时长超过第一预设阈值时,减小所述第一链表中的第一表项的计数或从所述硬件中删除所述第一表项。
6.如权利要求2所述的方法,其特征在于,所述方法还包括:
当所述第二表项未被使用的时长超过第二预设阈值时,减小所述共有操作链表中的所述第二表项的计数或从所述硬件中删除所述第二表项。
7.如权利要求1-6任一项所述的方法,其特征在于,所述至少一个分类包括隧道分类、数据链路层L2分类、网络层L3分类和传输层L4分类中的一项或多项。
8.一种流表卸载装置,其特征在于,所述装置包括:
分类模块,用于将流表中的匹配项划分为至少一个分类;
查找模块,用于确定当前记录的第一链表中是否存在与所述至少一个分类中第一分类中的第一表项相同的表项,所述第一链表的表项与所述第一分类的表项的类型相同;
卸载模块,用于若不存在,则建立所述第一分类中的所述第一表项,并将所述第一分类中的所述第一表项卸载到硬件;若存在,则增加所述第一链表中的第一表项的计数,不将所述第一表项卸载到硬件。
9.如权利要求8所述的装置,其特征在于,
所述分类模块,还用于将所述流表中的操作集划分为共有操作集和私有操作集;
所述查找模块,还用于确定当前记录的共有操作链表中是否存在与所述共有操作集中的第二表项相同的表项;
所述卸载模块,还用于若不存在,则建立所述共有操作集中的所述第二表项,并将所述共有操作集中的所述第二表项和所述第一私有操作集卸载到硬件;若存在,则增加所述共有操作链表中的所述第二表项的计数,仅将所述私有操作集卸载到硬件。
10.一种计算设备,其特征在于,包括存储器和处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使得所述计算设备执行权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211654685.2A CN116032837A (zh) | 2022-12-22 | 2022-12-22 | 一种流表卸载方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211654685.2A CN116032837A (zh) | 2022-12-22 | 2022-12-22 | 一种流表卸载方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116032837A true CN116032837A (zh) | 2023-04-28 |
Family
ID=86075247
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211654685.2A Pending CN116032837A (zh) | 2022-12-22 | 2022-12-22 | 一种流表卸载方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116032837A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116506355A (zh) * | 2023-06-27 | 2023-07-28 | 珠海星云智联科技有限公司 | 卸载流表存储的处理方法及相关装置 |
-
2022
- 2022-12-22 CN CN202211654685.2A patent/CN116032837A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116506355A (zh) * | 2023-06-27 | 2023-07-28 | 珠海星云智联科技有限公司 | 卸载流表存储的处理方法及相关装置 |
CN116506355B (zh) * | 2023-06-27 | 2023-09-05 | 珠海星云智联科技有限公司 | 卸载流表存储的处理方法及相关装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2001251351A (ja) | パケット交換機における入力パケット処理方式 | |
WO2016095345A1 (zh) | 报文转发的方法及网络设备 | |
JP4890613B2 (ja) | パケットスイッチ装置 | |
CN113746749A (zh) | 网络连接设备 | |
WO2021121203A1 (zh) | 业务表的配置方法、装置、网络设备和存储介质 | |
WO2018192587A1 (zh) | 一种查表方法及装置、计算机存储介质 | |
US20060007917A1 (en) | Frame transfer method and edge switch | |
CN116032837A (zh) | 一种流表卸载方法及装置 | |
CN113691466A (zh) | 一种数据的传输方法、智能网卡、计算设备及存储介质 | |
CN114567614B (zh) | 基于fpga实现arp协议处理的方法及装置 | |
US20240056393A1 (en) | Packet forwarding method and device, and computer readable storage medium | |
US11436172B2 (en) | Data frame interface network device | |
CN111865801B (zh) | 一种基于Virtio端口传输数据的方法和系统 | |
JP2015507408A (ja) | 効率的なネットワークアドレス変換およびアプリケーションレベルゲートウェイ処理のための装置および方法 | |
CN116886605B (zh) | 一种流表卸载系统、方法、设备以及存储介质 | |
US20050044261A1 (en) | Method of operating a network switch | |
CN116366534B (zh) | 基于硬件卸载的组播流量复制的方法以及相关装置 | |
CN117714398B (zh) | 一种数据传输系统、方法、电子设备及存储介质 | |
CN114124858B (zh) | 控制方法及控制设备 | |
WO2022068503A1 (zh) | 电路、芯片和电子设备 | |
CN111050339B (zh) | 一种基于协议无感知转发的高速数据更新系统及方法 | |
CN111585918B (zh) | 一种应用于存储转发机制交换机的存储转发装置和方法 | |
WO2024078356A1 (zh) | 规则处理、规则查找方法、装置、设备及可读存储介质 | |
CN117692408A (zh) | Can帧发送方法、装置及系统、计算设备及存储介质 | |
CN114327247A (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 |