CN114448891B - 流表同步方法、装置、设备和介质 - Google Patents

流表同步方法、装置、设备和介质 Download PDF

Info

Publication number
CN114448891B
CN114448891B CN202210094730.7A CN202210094730A CN114448891B CN 114448891 B CN114448891 B CN 114448891B CN 202210094730 A CN202210094730 A CN 202210094730A CN 114448891 B CN114448891 B CN 114448891B
Authority
CN
China
Prior art keywords
flow table
data packet
hash
network card
hardware
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
CN202210094730.7A
Other languages
English (en)
Other versions
CN114448891A (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.)
Shenzhen Xingyun Zhilian Technology Co ltd
Original Assignee
Shenzhen Xingyun Zhilian Technology 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 Shenzhen Xingyun Zhilian Technology Co ltd filed Critical Shenzhen Xingyun Zhilian Technology Co ltd
Priority to CN202210094730.7A priority Critical patent/CN114448891B/zh
Publication of CN114448891A publication Critical patent/CN114448891A/zh
Application granted granted Critical
Publication of CN114448891B publication Critical patent/CN114448891B/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
    • H04L45/7453Address table lookup; Address filtering using hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Abstract

本申请提供了一种流表同步方法、装置、设备及介质,其中,该方法包括:通过物理网卡获取数据包对应的目标哈希值;通过物理网卡根据目标哈希值,确定硬件流表中是否存在与数据包匹配的硬件流表项;在硬件流表中存在与数据包匹配的硬件流表项的情况下,通过物理网卡获得数据包对应的流命中信息,将流命中信息和目标哈希值传输给开放式虚拟化软件交换机OVS;通过OVS根据目标哈希值和流命中信息,确定软件流表中与数据包匹配的软件流表项,并对软件流表项进行同步更新。实施本申请,可以在硬件流表和软件流表的同步通道传输容量有限的情况下,增加单次同步可传输的流表项的条数。

Description

流表同步方法、装置、设备和介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种流表同步方法、装置、设备和介质。
背景技术
数据流中的数据包通过网卡进入虚拟交换机后,虚拟交换机会将对该数据包的处理过程记录下来并生成相关的流表项,填充到软件流表中,以便后续根据软件流表完成对其他数据包的处理。此外,还可以将软件流表卸载到网卡上,生成硬件流表,从而在数据包经过网卡时,根据硬件流表命中的硬件流表项,来对数据包进行相应处理,不再将数据包转发至虚拟交换机,提高处理效率。
在数据包命中硬件流表项后,需要将硬件流表的命中信息和老化信息等同步更新到软件流表中,此过程需要以数据包的键(Key)值作为标识来确定需要更新的软件流表项,而该Key值一般包括数据包的五元组信息(源IP地址,目的IP地址,协议类型,源端口号,目的端口号),占用资源较多,因此在同步通道传输容量有限的情况下,单次同步可传输的流表项的条数较少。
发明内容
为解决上述问题,本申请实施例公开了一种流表同步方法、装置、设备和介质,可以在软件流表和硬件流表的同步通道容量有限的情况下,提高单次同步可传输的流表项的条数。
第一方面,本申请提供一种流表同步方法,所述方法包括:
通过物理网卡获取数据包对应的目标哈希值,所述目标哈希值是利用目标哈希算法对所述数据包的键Key值进行哈希处理获得的;
通过所述物理网卡根据所述目标哈希值,确定硬件流表中是否存在与所述数据包匹配的硬件流表项,所述硬件流表包括利用所述目标哈希算法对硬件流表项的Key值进行哈希处理后获得的哈希值;
在硬件流表中存在与所述数据包匹配的硬件流表项的情况下,通过所述物理网卡获得所述数据包对应的流命中信息,将所述流命中信息和所述目标哈希值传输给开放式虚拟化软件交换机OVS;
通过所述OVS根据所述目标哈希值和所述流命中信息,确定软件流表中与所述数据包匹配的软件流表项,并对所述软件流表项进行同步更新,所述软件流表包括利用所述目标哈希算法对软件流表项的Key值进行哈希处理后获得的哈希值。
在一种可能的实施例中,所述通过物理网卡获取数据包对应的目标哈希值之前,还包括:
获取所述物理网卡对应的硬件流表存储容量;
根据所述硬件流表存储容量确定所述物理网卡可存储的硬件流表项的最大数目;
根据所述最大数目确定所述目标哈希算法。
在一种可能的实施例中,所述根据所述硬件流表存储容量确定所述物理网卡可存储的硬件流表项的最大数目,包括:
获取所述物理网卡对应的硬件流表项的平均长度,根据所述硬件流表存储容量和所述硬件流表项的平均长度,确定所述物理网卡可存储的硬件流表项的最大数目。
在一种可能的实施例中,所述根据所述最大数目确定所述目标哈希算法,包括:
根据所述最大数目,确定与所述最大数目对应的哈希桶深度;
根据所述哈希桶深确定N种哈希函数,并根据所述N种哈希函数确定所述目标哈希算法,其中,根据所述目标哈希算法对所述最大数目的硬件流表项的Key值分别进行哈希处理后获得的哈希值分布均匀,所述N为大于或等于1的整数。
在一种可能的实施例中,所述根据所述最大数目确定所述目标哈希算法之后,还包括:
将所述目标哈希算法配置到所述物理网卡中。
在一种可能的实施例中,所述通过物理网卡获取数据包对应的哈希值之前,还包括:
通过所述物理网卡接收所述数据包,并提取所述数据包的Key值;
利用所述目标哈希算法对所述数据包的Key值进行哈希处理,获得所述目标哈希值。
在一种可能的实施例中,所述通过物理网卡获取数据包对应的哈希值之前,还包括:
将所述软件流表卸载至所述物理网卡,获得所述硬件流表。
第二方面,本申请提供一种流表同步装置,所述装置包括:
第一获取模块,用于获取数据包对应的目标哈希值,所述目标哈希值是利用目标哈希算法对所述数据包的键Key值进行哈希处理获得的;
匹配模块,用于根据所述目标哈希值,确定硬件流表中是否存在与所述数据包匹配的硬件流表项,所述硬件流表包括利用所述目标哈希算法对硬件流表项的Key值进行哈希处理后获得的哈希值;
传输模块,用于在硬件流表中存在与所述数据包匹配的硬件流表项的情况下,通过所述物理网卡获得所述数据包对应的流命中信息,将所述流命中信息和所述目标哈希值传输给开放式虚拟化软件交换机OVS;
同步模块,用于根据所述目标哈希值和所述流命中信息,确定软件流表中与所述数据包匹配的软件流表项,并对所述软件流表项进行同步更新,所述软件流表包括利用所述目标哈希算法对软件流表项的Key值进行哈希处理后获得的哈希值。
在一种可能的设计中,所述装置还包括:
第二获取模块,用于获取所述物理网卡对应的硬件流表存储容量;
计算模块,用于根据所述硬件流表存储容量确定所述物理网卡可存储的硬件流表项的最大数目;
确定模块,用于根据所述最大数目确定所述目标哈希算法。
在一种可能的设计中,所述计算模块,具体用于:
获取所述物理网卡对应的硬件流表项的平均长度,根据所述硬件流表存储容量和所述硬件流表项的平均长度,确定所述物理网卡可存储的硬件流表项的最大数目。
在一种可能的设计中,所述确定模块具体用于:
根据所述最大数目,确定与所述最大数目对应的哈希桶深度;
根据所述哈希桶深确定N种哈希函数,并根据所述N种哈希函数确定所述目标哈希算法,其中,根据所述目标哈希算法对所述最大数目的硬件流表项的Key值分别进行哈希处理后获得的哈希值分布均匀,所述N为大于或等于1的整数。
在一种可能的设计中,所述装置还包括:
配置模块,用于将所述目标哈希算法配置到所述物理网卡中。
在一种可能的设计中,所述装置还包括:
接收模块,用于接收所述数据包;
提取模块,用于提取所述数据包的Key值;
处理模块,用于利用所述目标哈希算法对所述数据包的Key值进行哈希处理,获得所述目标哈希值。
在一种可能的设计中,所述装置还包括:
流表卸载模块,用于将所述软件流表卸载至所述物理网卡,获得所述硬件流表。
第三方面,本申请提供一种电子设备,包括:存储器、处理器,其中所述存储器和所述处理器被相互可通信地连接;其中所述存储器存储有程序指令;所述程序指令被所述处理器执行时,使所述处理器执行如第一方面以及第一方面中任一可能的实现方式描述的方法。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序;当所述计算机程序在一个或多个处理器上运行时,执行如第一方面以及第一方面中任一可能的实现方式描述的方法。
本申请实施例中,通过利用目标哈希算法获得数据包对应的目标哈希值,根据该目标哈希值确定硬件流表中是否存在与数据包匹配的硬件流表项,并在确定存在匹配的硬件流表项的情况下,将该目标哈希值和数据包对应的流命中信息传输至宿主机中的OVS;根据该目标哈希值来确定软件流表中与数据包匹配的软件流表项,并根据数据包对应的流命中信息进行软件流表的更新,完成流表同步。通过将数据包对应的目标哈希值传输至宿主机中的OVS后,可直接根据该目标哈希值来查找匹配的软件流表项,与不采用本申请的实施例中的方法相比,减少了哈希处理的次数,从而节省了处理时间,提高了流表同步效率。而软件流表包括利用目标哈希算法对软件流表项的Key值进行哈希处理后获得的哈希值,硬件流表包括利用目标哈希算法对硬件流表项的Key值进行哈希处理后获得的哈希值,将目标哈希算法在软件流表和硬件流表中进行配置使用,使得可以根据数据包对应的目标哈希值来查找匹配的软件流表项和硬件流表项,因而在流表同步通道中可以传输目标哈希值,而不是传输数据包的Key值,从而降低了单个命中流表项相关的同步信息所占的传输资源,在同步通道容量有限的情况下可以使得单次同步可传输的流表项的条数增加。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一种流表同步方法的系统图;
图2为本申请实施例提供的一种流表同步方法的流程示意图;
图3为本申请实施例提供的另一种流表同步方法的流程示意图;
图4为本申请实施例提供的一种流表同步装置的结构示意图。
图5为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步详细描述。
本申请的说明书、权利要求书及附图中的术语“第一”和“第二”等仅用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备等,没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元等,或可选地还包括对于这些过程、方法、产品或设备等固有的其它步骤或单元。
在本文中提及的“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现上述短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员可以显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上,“至少两个(项)”是指两个或三个及三个以上,“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”。
下面结合附图对本发明进行详细描述。
请参阅图1,图1为本申请实施例提供的一种流表同步方法的系统图。如图1所示,此系统可以包含处理器和物理网卡。其中,该处理器可以为宿主机(host)中的处理器,该处理器可以运行软件交换机,如开放式虚拟化软件交换机(OpenvSwitch,简称OVS),软件交换机(在本申请中也可称为虚拟交换机)可以用于实现宿主机的虚拟机之间的数据交换转发,而数据交换转发的依据就是流表。可理解的,该宿主机还包括存储器、通信接口等必要部件。本申请实施例中的执行主体,可以理解为上述宿主机中的处理器。而物理网卡和上述处理器连接,可以实现硬件流表卸载功能,该物理网卡可以包括智能网卡,也可以包括普通物理网卡和物理卸载卡等设备的组合,为便于描述,本申请统一称为物理网卡。该物理网卡可以包括现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)或者专用集成电路(Application Specific Integrated Circuit,ASIC)。
请参阅图2,图2为本申请实施例提供的一种流表同步方法的流程示意图,该方法可以包括以下步骤:
步骤201,通过物理网卡获取数据包对应的目标哈希值。
其中,数据包被物理网卡接收和处理,可以获得该数据包对应的目标哈希值,该目标哈希值是物理网卡利用目标哈希算法对数据包的Key值进行哈希处理获得的,而该目标哈希算法可以是预先配置存储在物理网卡中的。一般的,数据包的键Key值可以包括数据包的五元组信息,如(源IP地址,目的IP地址,协议类型,源端口号,目的端口号),该Key值占用字节数较大,例如,可能为80字节,因而将该Key值通过网卡与宿主机的传输通道进行传输时,会占用较多传输资源,不利于提高传输速率。而利用目标哈希算法对该Key值进行哈希处理后,得到与数据包对应的目标哈希值,该目标哈希值占用字节数较小,若该目标哈希值在传输通道中传输,占用传输资源较少。
步骤202,通过该物理网卡根据该目标哈希值,确定硬件流表中是否存在与该数据包匹配的硬件流表项。
本申请实施例中,主要利用流表来确定对数据包的转发处理,也即根据数据包是否命中流表中的流表项来确定对上述数据包的处理方式。具体的,在数据包命中流表项的情况下,即确定数据包与流表中的某个流表项匹配的情况下,根据该匹配的流表项中包括的流控制信息(流控制信息可以包括对数据包进行转发、丢弃等)对数据包进行处理,并修改该匹配的流表项中包括的流状态信息(流状态信息可以包括数据流的统计信息、用于老化的时间戳等)。而本申请中,由于物理网卡包括硬件流表,可以先确定硬件流表中是否存在与该数据包匹配的硬件流表项,在确定存在匹配的硬件流表项的情况下,直接根据匹配的硬件流表项来确定对上述数据包的处理方式,而无需再将数据包转发至宿主机中的虚拟交换机,根据数据包是否命中宿主机中的软件流表项来确定对数据包的处理方式,因而可以提高数据处理效率。可理解的,本申请中,可以利用数据包对应的目标哈希值与流表项包括的哈希值是否匹配,来确定数据包是否命中流表项,因而硬件流表中包括利用目标哈希算法对硬件流表项的Key值进行哈希处理后获得的哈希值,该硬件流表中包括的哈希值可以是在进行硬件流表卸载时由软件下发的。
步骤203,在硬件流表中存在与该数据包匹配的硬件流表项的情况下,通过该物理网卡获得该数据包对应的流命中信息,将该流命中信息和该目标哈希值传输给开放式虚拟化软件交换机OVS。
根据目标哈希值来确定数据包是否命中硬件流表项,在确定命中硬件流表项的情况下,也即在硬件流表中存在与该数据包匹配的硬件流表项的情况下,可以获得该数据包对应的流命中信息,其中,该流命中信息可以包括是否命中、命中次数等信息,还可以包括命中数据流的老化信息等。该流命中信息和目标哈希值需要同步至宿主机中的软件流表,以保证软件流表的数据有效,因此通过物理网卡将该流命中信息和目标哈希值传输给宿主机中的OVS。可理解的,在硬件流表中存在与该数据包匹配的硬件流表项的情况下,可以根据匹配的硬件流表项包括的流控制信息等,通过物理网卡对该数据包执行相应处理。并需要将硬件流表发生变化的信息同步给软件流表。
步骤204,通过该OVS根据该目标哈希值和该流命中信息,确定软件流表中与该数据包匹配的软件流表项,并对该软件流表项进行同步更新。
可理解的,宿主机中的OVS可以根据上述目标哈希值,来确定软件流表中与上述数据包匹配的软件流表项,并根据上述与目标哈希值相关联的流命中信息,对匹配的软件流表项进行同步更新,从而完成软件流表的同步。其中,软件流表包括利用上述目标哈希算法对软件流表项的Key值进行哈希处理后获得的哈希值,该哈希值可以是在进行硬件流表卸载前获得的,并在进行硬件流表卸载时将该哈希值下发至物理网卡中。
在一种实施例中,若不实施本申请,进行软件流表和硬件流表的同步过程可以包括以下步骤:物理网卡根据第一哈希算法对数据包的Key值进行哈希处理,获得数据包对应的第一哈希值,根据该第一哈希值确定数据包是否命中硬件流表项;在确定数据包命中硬件流表项的情况下,获得该数据包对应的流命中信息,并将该流命中信息和数据包的Key值传输至宿主机中;宿主机中的软件根据第二哈希算法对数据包的Key值进行哈希处理,获得该数据包对应的第二哈希值,根据该第二哈希值确定数据包是否命中软件流表项;在确定数据包命中软件流表项的情况下,根据该数据包对应的流命中信息,对软件流表进行更新同步。其中,硬件流表中包括的硬件流表项对应的哈希值是根据第一哈希算法获得的,而软件流表中包括的软件流表项对应的哈希值是根据第二哈希算法获得的。因而在确定数据包是否命中硬件流表项和是否命中软件流表项时,分别需要进行哈希计算,从而导致流表同步过程效率较低;并且,确定数据包命中硬件流表项后需要将该数据包的Key值传输至宿主机中,由于数据包的Key值占用字节数较大,而宿主机和物理网卡之间的传输通道容量有限,单次同步可传输的流表项条数较少,也会导致流表同步效率较低。
而本申请实施例中,通过利用目标哈希算法获得数据包对应的目标哈希值,根据该目标哈希值确定硬件流表中是否存在与数据包匹配的硬件流表项,并在确定存在匹配的硬件流表项的情况下,将该目标哈希值和数据包对应的流命中信息传输至宿主机中的OVS;根据该目标哈希值来确定软件流表中与数据包匹配的软件流表项,并根据数据包对应的流命中信息进行软件流表的更新,完成流表同步。通过将数据包对应的目标哈希值传输至宿主机中的OVS后,可直接根据该目标哈希值来查找匹配的软件流表项,与不采用本申请的实施例中的方法相比,减少了哈希处理的次数,从而节省了处理时间,提高了流表同步效率。而软件流表包括利用目标哈希算法对软件流表项的Key值进行哈希处理后获得的哈希值,硬件流表包括利用目标哈希算法对硬件流表项的Key值进行哈希处理后获得的哈希值,将目标哈希算法在软件流表和硬件流表中进行配置使用,使得可以根据数据包对应的目标哈希值来查找匹配的软件流表项和硬件流表项,因而在流表同步通道中可以传输目标哈希值,而不是传输数据包的Key值,从而降低了单个命中流表项相关的同步信息所占的传输资源,在同步通道容量有限的情况下可以使得单次同步可传输的流表项的条数增加。
请参阅图3,图3为本申请实施例提供的另一种流表同步方法的流程示意图,如图3所示,该方法可以包括以下步骤:
步骤301,获取物理网卡对应的硬件流表存储容量;
可理解的,可以在物理网卡的硬件流表卸载功能被配置后,从物理网卡中获得该物理网卡对应的硬件流表存储容量,该硬件流表存储容量为该物理网卡的预配置信息,可以与物理网卡的设备属性相关,示例性的,不同品牌、不同型号的物理网卡,其对应的硬件流表存储容量可能不同。可选的,获取物理网卡对应的硬件流表存储容量后,可以在宿主机中申请目标大小的存储空间,该存储空间用于存储卸载到物理网卡后获得的硬件流表对应的缓存流表,而目标大小等于上述硬件流表存储容量。可理解的,本申请所有实施例中提到的硬件流表和软件流表的同步,实质上可以是指硬件流表和上述目标大小的存储空间中的缓存流表的同步,因此可以将本申请所有实施例中提到的软件流表理解为该缓存流表。因为硬件流表和软件流表对应的存储空间容量相同,因此可以利用相同的哈希算法来计算硬件流表项和软件流表项对应的哈希值,从而可以将数据包对应的哈希值作为查找依据来进行流表查找。
步骤302,根据该硬件流表存储容量确定该物理网卡可存储的硬件流表项的最大数目;
在一个实施例中,可以先获取该物理网卡对应的硬件流表项的平均长度,根据该硬件流表存储容量和该硬件流表项的平均长度,确定该物理网卡可存储的硬件流表项的最大数目。可理解的,物理网卡对应的硬件流表项的平均长度,也可以是物理网卡的预配置信息,该平均长度可能与该物理网卡的设备属性相关。根据硬件流表项的平均长度,以及硬件流表存储容量,可以确定该物理网卡可存储的硬件流表项的最大数目。本申请中,查找硬件流表时是根据哈希值作为查找依据的,因此需要尽量保证哈希值的可区分性,也即不同的流表项对应的哈希值不同,换句话说,要尽量减少哈希冲突。而哈希冲突与哈希算法的选择、需要进行哈希处理的数据个数(即硬件流表项的最大数目)有关系。因此通过确定物理网卡可存储的硬件流表项的最大数据,来选择合适的哈希算法,从而可以尽量减少哈希冲突,保证流表查找效率。
步骤303,根据该最大数目确定该目标哈希算法。
在一个实施例中,可以先根据该最大数目,确定与该最大数目对应的哈希桶深度;再根据该哈希桶深确定N种哈希函数,并根据该N种哈希函数确定该目标哈希算法,其中,根据该目标哈希算法对该最大数目的硬件流表项的Key值分别进行哈希处理后获得的哈希值分布均匀,该N为大于或等于1的整数。哈希桶深度可以理解为利用哈希函数进行哈希计算的次数,一般来说,在需要进行哈希处理的数据个数较大的情况下,增加哈希桶深度,有利于减少哈希冲突,因此,为了使得利用目标哈希算法对不同流表项分别进行哈希处理后获得的哈希值分布均匀,也即使得不同的流表项对应的哈希值不同,可以先根据硬件流表项的最大数目确定合适的哈希桶深度,将其作为与该最大数据对应的哈希桶深度。接着,根据该哈希桶深度确定N种哈希函数,其中,该哈希桶深度与N具有关联关系,示例性的,该N可以等于该哈希桶深度,根据N种哈希函数可以确定上述目标哈希算法,可理解的,该N种哈希函数可以为不同的哈希函数,也可以包括相同的哈希函数,本申请对此不作限制。示例性的,目标哈希算法可以为:利用哈希函数1对Key值中的所有项进行哈希计算获得哈希值;或者,利用哈希函数1对Key值进行哈希计算获得哈希值1,利用哈希函数2对Key值进行哈希计算获得哈希值2,利用哈希函数3对哈希值1和哈希值2进行哈希计算获得哈希值;或者,利用哈希函数1对Key值中的项1和项2进行哈希计算,获得哈希值1,再利用哈希函数2对Key值中的项3和上述哈希值1进行哈希计算,获得哈希值2,将该哈希值2作为哈希处理后获得的哈希值。本申请对哈希函数的类型和利用哈希函数确定目标哈希算法的具体方式不作限定。
可选的,在确定目标哈希算法后,可以利用该目标哈希算法对软件流表项的Key值进行哈希处理,使得软件流表包括利用目标哈希算法对软件流表项的Key值进行哈希处理后获得的哈希值,进而在硬件流表和软件流表的同步过程中,接收到物理网卡传输的数据包对应的目标哈希值后,可以根据该目标哈希值与软件流表中软件流表项对应的哈希值是否匹配,来确定与数据包匹配的软件流表项,这样才能对该软件流表项进行更新同步。可选的,还可以在流表卸载的过程中,将软件流表项对应的哈希值下发至物理网卡,从而使得物理网卡无需再重新计算硬件流表项对应的哈希值,也可实现根据数据包对应的目标哈希值来查找硬件流表。
步骤304,将该目标哈希算法配置到该物理网卡中。
在确定目标哈希算法后,可将目标哈希算法配置到物理网卡中,以使得物理网卡可以利用目标哈希算法,对接收到的数据包进行哈希处理,获得数据包对应的目标哈希值,从而使得在物理网卡和在宿主机中对流表项/数据包的Key值进行哈希处理时所使用的哈希算法相同,且在软件流表和硬件流表的同步过程中在同步通道中可以传输目标哈希值,从而在同步通道容量有限的情况下增加单次同步可传输的数据流条数。
步骤305,通过物理网卡获取数据包对应的目标哈希值。
在一个实施例中,通过物理网卡获取数据包对应的目标哈希值之前,可以先将上述宿主机中的软件流表卸载至该物理网卡,获得该硬件流表。进而可以在接收到数据包之后进行硬件流表的查找,确定数据包是否命中硬件流表项。可理解的,在流表卸载过程中宿主机中的软件会将利用目标哈希算法对软件流表项的Key值进行哈希处理后获得的哈希值下发至物理网卡,也即获得的硬件流表中包括每条硬件流表项对应的哈希值,该哈希值可以理解为是利用目标哈希算法对硬件流表项进行哈希处理获得的,这样,之后可以通过将数据包对应的目标哈希值与硬件流表项对应的哈希值进行查找比较,来确定数据包是否命中硬件流表项。
在一个实施例中,获得硬件流表后,可以通过物理网卡接收到数据包,并提取该数据包的Key值;然后利用目标哈希算法对该数据包的Key值进行哈希处理,从而获得上述数据包对应的目标哈希值。
步骤306,通过该物理网卡根据该目标哈希值,确定硬件流表中是否存在与该数据包匹配的硬件流表项。
步骤307,在硬件流表中存在与该数据包匹配的硬件流表项的情况下,通过该物理网卡获得该数据包对应的流命中信息,将该流命中信息和该目标哈希值传输给开放式虚拟化软件交换机OVS。
步骤308,通过该OVS根据该目标哈希值和该流命中信息,确定软件流表中与该数据包匹配的软件流表项,并对该软件流表项进行同步更新。
其中,步骤305-步骤308的具体描述可参照上述步骤201-步骤204,在此不再赘述。
本申请实施例中,通过获取物理网卡对应的硬件流表存储容量,根据该硬件流表存储容量确定物理网卡可存储的硬件流表项的最大数目,并根据该最大数目确定目标哈希算法,从而可以获得合适的目标哈希算法,减少了哈希冲突,从而在根据通过目标哈希算法获得的哈希值来查找匹配的流表项时,保证流表查找效率。而将该目标哈希算法配置到物理网卡中,使得在硬件流表和软件流表的同步过程中,能够根据利用目标哈希算法对数据包的Key值进行哈希处理后获得的目标哈希值作为查找依据来进行硬件流表项和软件流表项的查找匹配,且在软硬件流表同步通道中传输目标哈希值,减少了单条命中流表项相关的同步信息所占用的资源,在同步通道容量有限的情况下,增加了单次同步可以传输的流表项的条数。
请参阅图4,图4为本申请实施例提供的一种流表同步装置的结构示意图,如图4所示,该装置包括第一获取模块11、匹配模块12、传输模块13、同步模块14,还可以包括第二获取模块、计算模块、确定模块、配置模块、接收模块、提取模块、处理模块、流表卸载模块,其中:
第一获取模块11,用于获取数据包对应的目标哈希值,该目标哈希值是利用目标哈希算法对该数据包的键Key值进行哈希处理获得的;
匹配模块12,用于根据该目标哈希值,确定硬件流表中是否存在与该数据包匹配的硬件流表项,该硬件流表包括利用该目标哈希算法对硬件流表项的Key值进行哈希处理后获得的哈希值;
传输模块13,用于在硬件流表中存在与该数据包匹配的硬件流表项的情况下,通过该物理网卡获得该数据包对应的流命中信息,将该流命中信息和该目标哈希值传输给开放式虚拟化软件交换机OVS;
同步模块14,用于根据该目标哈希值和该流命中信息,确定软件流表中与该数据包匹配的软件流表项,并对该软件流表项进行同步更新,该软件流表包括利用该目标哈希算法对软件流表项的Key值进行哈希处理后获得的哈希值。
在一种可能的设计中,该装置还包括:
第二获取模块,用于获取该物理网卡对应的硬件流表存储容量;
计算模块,用于根据该硬件流表存储容量确定该物理网卡可存储的硬件流表项的最大数目;
确定模块,用于根据该最大数目确定该目标哈希算法。
在一种可能的设计中,该计算模块,具体用于:
获取该物理网卡对应的硬件流表项的平均长度,根据该硬件流表存储容量和该硬件流表项的平均长度,确定该物理网卡可存储的硬件流表项的最大数目。
在一种可能的设计中,该确定模块具体用于:
根据该最大数目,确定与该最大数目对应的哈希桶深度;
根据该哈希桶深确定N种哈希函数,并根据该N种哈希函数确定该目标哈希算法,其中,根据该目标哈希算法对该最大数目的硬件流表项的Key值分别进行哈希处理后获得的哈希值分布均匀,该N为大于或等于1的整数。
在一种可能的设计中,该装置还包括:
配置模块,用于将该目标哈希算法配置到该物理网卡中。
在一种可能的设计中,该装置还包括:
接收模块,用于接收该数据包;
提取模块,用于提取该数据包的Key值;
处理模块,用于利用该目标哈希算法对该数据包的Key值进行哈希处理,获得该目标哈希值。
在一种可能的设计中,该装置还包括:
流表卸载模块,用于将该软件流表卸载至该物理网卡,获得该硬件流表。
请参阅图5,图5为本申请实施例提供的一种电子设备的结构示意图。如图5所示,上述电子设备包括存储器501、处理器502和物理网卡503。其中,该存储器501、处理器502和物理网卡503通过总线实现彼此之间的通信连接。
其中,存储器501用于提供存储空间,存储空间中可以存储操作系统和计算机程序等数据。存储器501包括但不限于是随机存储记忆体(random access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasable programmable readonly memory,EPROM)、或便携式只读存储器(compact disc read-only memory,CD-ROM)。该存储器501用于存储应用程序及数据,如存储OVS的应用程序和软件流表等。
处理器502是进行算术运算和逻辑运算的模块,可以是中央处理器(centralprocessing unit,CPU)、显卡处理器(graphics processing unit,GPU)或微处理器(microprocessor unit,MPU)等处理模块中的一种或者多种的组合。
存储器501中存储有计算机程序,处理器502调用存储器501中存储的计算机程序,使OVS和物理网卡503协同实现如本申请上述各实施例所示的流表同步方法:
可选的,本申请实施例中的处理器可以实现如图4中的同步模块14、第二获取模块、计算模块、确定模块、配置模块、流表卸载模块的功能,物理网卡503可以用于实现如图4中的第一获取模块11、匹配模块12、传输模块13、接收模块、提取模块、处理模块的功能,本申请对此不做限定。
本申请实施例还提供一种电子设备,该电子设备包括处理器和存储器,其中该存储器和该处理器被相互可通信地连接;其中该存储器存储有程序指令;该电子设备与物理网卡通信连接,其中,该电子设备的存储器中的该程序指令被该处理器执行时,使该处理器执行如本申请上述方法实施例所示的方法。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当该计算机程序在一个或多个处理器上运行时,可以实现上述方法实施例所示的方法。
本领域普通技术人员可以理解实现该实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如该各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。

Claims (7)

1.一种流表同步方法,其特征在于,所述方法包括:
获取物理网卡对应的硬件流表存储容量;
获取所述物理网卡对应的硬件流表项的平均长度,根据所述硬件流表存储容量和所述硬件流表项的平均长度,确定所述物理网卡可存储的硬件流表项的最大数目;
根据所述最大数目,确定与所述最大数目对应的哈希桶深度;
根据所述哈希桶深确定N种哈希函数,并根据所述N种哈希函数确定目标哈希算法,其中,根据所述目标哈希算法对所述最大数目的硬件流表项的Key值分别进行哈希处理后获得的哈希值分布均匀,所述N为大于或等于1的整数;
通过所述物理网卡获取数据包对应的目标哈希值,所述目标哈希值是利用所述目标哈希算法对所述数据包的键Key值进行哈希处理获得的;
通过所述物理网卡根据所述目标哈希值,确定硬件流表中是否存在与所述数据包匹配的硬件流表项,所述硬件流表包括利用所述目标哈希算法对硬件流表项的Key值进行哈希处理后获得的哈希值;
在硬件流表中存在与所述数据包匹配的硬件流表项的情况下,通过所述物理网卡获得所述数据包对应的流命中信息,将所述流命中信息和所述目标哈希值传输给开放式虚拟化软件交换机OVS;
通过所述OVS根据所述目标哈希值和所述流命中信息,确定软件流表中与所述数据包匹配的软件流表项,并对所述软件流表项进行同步更新,所述软件流表包括利用所述目标哈希算法对软件流表项的Key值进行哈希处理后获得的哈希值。
2.如权利要求1所述的方法,其特征在于,所述通过所述物理网卡获取数据包对应的目标哈希值之前,还包括:
将所述目标哈希算法配置到所述物理网卡中。
3.如权利要求2所述的方法,其特征在于,所述通过所述物理网卡获取数据包对应的目标哈希值,包括:
通过所述物理网卡接收所述数据包,并提取所述数据包的Key值;
利用所述目标哈希算法对所述数据包的Key值进行哈希处理,获得所述目标哈希值。
4.如权利要求3所述的方法,其特征在于,所述通过所述物理网卡获取数据包对应的目标哈希值之前,还包括:
将所述软件流表卸载至所述物理网卡,获得所述硬件流表。
5.一种流表同步装置,其特征在于,所述装置包括:
第二获取模块,用于获取物理网卡对应的硬件流表存储容量;
计算模块,用于获取所述物理网卡对应的硬件流表项的平均长度,根据所述硬件流表存储容量和所述硬件流表项的平均长度,确定所述物理网卡可存储的硬件流表项的最大数目;
确定模块,用于根据所述最大数目,确定与所述最大数目对应的哈希桶深度;
所述确定模块,还用于根据所述哈希桶深确定N种哈希函数,并根据所述N种哈希函数确定目标哈希算法,其中,根据所述目标哈希算法对所述最大数目的硬件流表项的Key值分别进行哈希处理后获得的哈希值分布均匀,所述N为大于或等于1的整数;
第一获取模块,用于获取数据包对应的目标哈希值,所述目标哈希值是利用所述目标哈希算法对所述数据包的键Key值进行哈希处理获得的;
匹配模块,用于根据所述目标哈希值,确定硬件流表中是否存在与所述数据包匹配的硬件流表项,所述硬件流表包括利用所述目标哈希算法对硬件流表项的Key值进行哈希处理后获得的哈希值;
传输模块,用于在硬件流表中存在与所述数据包匹配的硬件流表项的情况下,通过所述物理网卡获得所述数据包对应的流命中信息,将所述流命中信息和所述目标哈希值传输给开放式虚拟化软件交换机OVS;
同步模块,用于根据所述目标哈希值和所述流命中信息,确定软件流表中与所述数据包匹配的软件流表项,并对所述软件流表项进行同步更新,所述软件流表包括利用所述目标哈希算法对软件流表项的Key值进行哈希处理后获得的哈希值。
6.一种电子设备,其特征在于,包括:存储器、处理器,其中所述存储器和所述处理器被相互可通信地连接;其中所述存储器存储有程序指令;所述程序指令被所述处理器执行时,使所述处理器执行如权利要求1-4中任一项所述的方法的步骤。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序;当所述计算机程序在一个或多个处理器上运行时,执行如权利要求1-4中任一项所述的方法的步骤。
CN202210094730.7A 2022-01-26 2022-01-26 流表同步方法、装置、设备和介质 Active CN114448891B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210094730.7A CN114448891B (zh) 2022-01-26 2022-01-26 流表同步方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210094730.7A CN114448891B (zh) 2022-01-26 2022-01-26 流表同步方法、装置、设备和介质

Publications (2)

Publication Number Publication Date
CN114448891A CN114448891A (zh) 2022-05-06
CN114448891B true CN114448891B (zh) 2024-01-02

Family

ID=81368860

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210094730.7A Active CN114448891B (zh) 2022-01-26 2022-01-26 流表同步方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN114448891B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114915587B (zh) * 2022-05-10 2023-12-22 深圳星云智联科技有限公司 流表老化管理方法及相关设备
CN115150328B (zh) * 2022-09-07 2022-11-15 珠海星云智联科技有限公司 一种流表硬件卸载方法、设备及介质
CN116248593A (zh) * 2022-12-30 2023-06-09 天翼云科技有限公司 一种流表关键字匹配方法、装置、电子设备和存储介质
CN117240811A (zh) * 2023-08-30 2023-12-15 中科驭数(北京)科技有限公司 一种数据报文处理方法及系统
CN117312329B (zh) * 2023-11-29 2024-02-23 苏州元脑智能科技有限公司 数据流表生成方法、装置、电子设备及存储介质
CN117527689B (zh) * 2024-01-08 2024-04-09 珠海星云智联科技有限公司 流表卸载方法、系统、设备、集群以及介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101572670A (zh) * 2009-05-07 2009-11-04 成都市华为赛门铁克科技有限公司 一种基于流表的数据包处理方法、装置和网络系统
CN103312618A (zh) * 2013-05-30 2013-09-18 中国人民解放军国防科学技术大学 基于软硬件结合的流管理方法
CN109962832A (zh) * 2017-12-26 2019-07-02 华为技术有限公司 报文处理的方法和装置
CN111131050A (zh) * 2019-12-31 2020-05-08 盛科网络(苏州)有限公司 流表的匹配方法及装置
CN111953609A (zh) * 2020-08-07 2020-11-17 平安科技(深圳)有限公司 基于ovs的数据包处理方法及相关设备
KR102226915B1 (ko) * 2019-10-31 2021-03-11 아토리서치(주) 소프트웨어 정의 네트워크에서 플로우 룰 데이터베이스를 운영하는 방법, 장치 및 컴퓨터 프로그램
CN112866111A (zh) * 2019-11-28 2021-05-28 北京京东尚科信息技术有限公司 流表管理的方法和装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101572670A (zh) * 2009-05-07 2009-11-04 成都市华为赛门铁克科技有限公司 一种基于流表的数据包处理方法、装置和网络系统
CN103312618A (zh) * 2013-05-30 2013-09-18 中国人民解放军国防科学技术大学 基于软硬件结合的流管理方法
CN109962832A (zh) * 2017-12-26 2019-07-02 华为技术有限公司 报文处理的方法和装置
KR102226915B1 (ko) * 2019-10-31 2021-03-11 아토리서치(주) 소프트웨어 정의 네트워크에서 플로우 룰 데이터베이스를 운영하는 방법, 장치 및 컴퓨터 프로그램
CN112866111A (zh) * 2019-11-28 2021-05-28 北京京东尚科信息技术有限公司 流表管理的方法和装置
CN111131050A (zh) * 2019-12-31 2020-05-08 盛科网络(苏州)有限公司 流表的匹配方法及装置
CN111953609A (zh) * 2020-08-07 2020-11-17 平安科技(深圳)有限公司 基于ovs的数据包处理方法及相关设备

Also Published As

Publication number Publication date
CN114448891A (zh) 2022-05-06

Similar Documents

Publication Publication Date Title
CN114448891B (zh) 流表同步方法、装置、设备和介质
CN108153757B (zh) 一种哈希表管理的方法和装置
US9495479B2 (en) Traversal with arc configuration information
US9967187B2 (en) Exact match lookup with variable key sizes
US8180803B2 (en) Deterministic finite automata (DFA) graph compression
US20200159654A1 (en) Pipelined hash table with reduced collisions
CN109618020B (zh) 一种分片报文的网络地址转换方法及装置
CN114726788B (zh) 应用于dpu的报文传输方法及相关装置
WO2023115978A1 (zh) 一种报文处理方法、装置及电子设备
CN115567446A (zh) 报文转发方法、装置、计算设备及卸载卡
US8619790B2 (en) Adaptive cache for caching context and for adapting to collisions in a session lookup table
CN111740910A (zh) 一种报文处理方法、装置、网络传输设备及报文处理系统
EP4135280A1 (en) Message parsing method and apparatus
CN113157609A (zh) 存储系统、数据处理方法、装置、电子设备及存储介质
CN109413118B (zh) 一种实现会话同步的方法、装置及存储介质、程序产品
US9008108B2 (en) Criteria for identifying network frames
CN115801729A (zh) Dns请求处理方法、装置、电子设备及存储介质
CN112416820B (zh) 一种数据包分类存储方法及系统
CN115334013A (zh) 一种流量统计方法、网卡及电子设备
CN109525503B (zh) 一种压缩方法及装置、计算机可读存储介质
CN115996203B (zh) 网络流量分域方法、装置、设备和存储介质
US20230236756A1 (en) Buffer management in an ethernet switch
CN114338528B (zh) 一种表项的查询方法及装置
US11250003B2 (en) Search circuit
CN114827655B (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