一种流表处理方法、装置和智能网卡、交换机和存储介质
文献发布时间:2024-05-31 01:29:11
技术领域
本公开涉及但不限于计算机网络技术领域,尤其涉及一种流表处理方法、装置和智能网卡、网络交换机和存储介质。
背景技术
OpenvSwich,Open Virtual Switch,开放虚拟软交换机,简称OVS,是运行在虚拟化平台上的虚拟软件交换机,具有交换机的主要功能,对流经的数据包进行处理,包括:修改、转发、访问控制等。OVS支持OpenFlow开放流协议,为虚拟机提供对外数据交互的通道。
随着网络流量的迅速增长,为了释放虚拟机服务器的CPU计算能力以保障复杂业务功能的执行性能,一些可实现方案中将虚拟交换机功能卸载到网卡,智能网卡应运而生。智能网卡实现了网络和计算资源同在一张卡上的融合,可以看作一个可以编程的网卡,具备了计算能力,用于加速网络、存储或安全等功能。OVS中相关网络功能卸载到智能网卡时,相应的OVS流表也需要对应卸载到智能网卡。
但是,由于智能网卡中卸载流表的存储空间有限,一般只能卸载部分OVS流表,如何克服有限的流表空间的不足,高性能实现相关网络功能,一直是本领域技术探索和改进的方向。
发明内容
本公开实施例提供一种流表处理方法、装置和智能网卡、交换机和存储介质,在智能网卡片内流表未命中的情况下,采用直接存储器访问(DMA,Direct Memory Access)方式从主机(Host)内存中获取更多流表数据,无需Host CPU的OVS慢路径干预,显著提高了智能网卡的整体流表访问速度,进而提升了转发效率。
本公开实施例提供一种流表处理方法,应用于智能网卡,包括,
在待转发数据包未命中第一流表的情况下,采用直接存储器访问DMA方式访问第二流表,并获取第二匹配结果;
根据所述第二匹配结果,处理所述待转发数据包;
其中,所述第一流表保存在所述智能网卡的片内存储器中;所述第二流表保存在所述智能网卡对应主机Host的内存中。
本公开实施例还提供一种流表处理装置,部署于智能网卡中,包括,
流表匹配模块,设置为在待转发数据包未命中第一流表的情况下,采用直接存储器访问DMA方式访问第二流表,并获取第二匹配结果;
数据包处理模块,设置为根据所述第二匹配结果,处理所述待转发数据包;
其中,所述第一流表保存在所述智能网卡的片内存储器中;所述第二流表保存在所述智能网卡对应主机Host的内存中。
本公开实施例还提供一种智能网卡,包括,
处理器和片内存储器;
所述片内存储器设置为,存储第一流表;
所述处理器设置为,在待转发数据包未命中所述第一流表的情况下,采用直接存储器访问DMA方式访问所述智能网卡对应主机Host的内存中的第二流表,并获取第二匹配结果;还设置为根据所述第二匹配结果,处理所述待转发数据包。
本公开实施例还提供一种网络交换机,包括,
智能网卡和主机Host;
所述智能网卡设置为,在待转发数据包未命中第一流表的情况下,采用直接存储器访问DMA方式获取访问第二流表;还设置为根据所述第二流表获取匹配结果,处理所述待转发数据包;
其中,所述第一流表保存在所述智能网卡的片内存储器中;所述第二流表保存在所述Host的内存中。
本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本公开任一实施例所述的流表处理方法。
在阅读并理解了附图和详细描述后,可以明白其他方面。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1为一些可实现方案中流表处理方法流程图;
图2为另一些可实现方案中流表处理方法流程图;
图3为本申请实施例提供的一种流表处理方法流程图;
图4为本申请实施例提供的另一种流表处理方法流程图;
图5为本申请实施例提供的一种流表处理装置结构图;
图6为本申请实施例提供的一种智能网卡结构图;
图7为本申请实施例提供的一种网络交换机结构图;
图8为本申请实施例提供的一种流表处理结果示意图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明,在本申请中如涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
另外,本申请各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
基于成本约束,由于智能网卡的片内存储空间有限,智能网卡只能卸载部分流表(也称为OVS流表),一些可实现方案中,如图1所示,智能网卡的片内存储(memory)中存储部分流表,当流量进入时,优先查找片内存储的流表,如果命中,则根据流表转发(如虚线所示),该转发路径也称为快路径;如果未命中则会把报文上交给Host CPU的软件OVS处理,软件OVS会到Host CPU的DDR(双倍速率同步动态随机存储器,Double Data RateSynchronous Dynamic Random Access Memory)中查询流表确定转发规则(如实线所示),该转发路径也称为快路径。可以看到,该方案中,未命中片内流表的情况下,仍需Host CPU的介入,势必要占用Host CPU的宝贵计算资源,在流表数据量较大,而智能网卡片内存储相对较小的现实情况下,该OVS卸载方案的对释放Host CPU计算能力的贡献十分有限。
另一些可实现方案中,智能网卡中新增了DDR芯片以存储更多流表数据,如图2所示,流量可以在智能网卡上独立查表完成转发,避免了Host CPU的介入。其中,部分流量命中智能网卡的片内存储(如虚线所示),另一部分流量命中新增的DDR(如实线所示)。但是,该方案显著增加了智能网卡的硬件成本以及功耗。
本公开实施例提供一种流表处理方案,应用于智能网卡,如图3所示,包括:
步骤310,在待转发数据包未命中第一流表的情况下,采用直接存储器访问(DMA)方式访问第二流表,并获取第二匹配结果;
步骤320,根据所述第二匹配结果,处理所述待转发数据包;
其中,所述第一流表保存在所述智能网卡的片内存储器中;所述第二流表保存在所述智能网卡对应主机(Host)的内存中。
一些示例性实施例中,所述采用直接存储器访问DMA方式访问第二流表,包括:
所述智能网卡的处理器,通过所述Host中的DMA控制器(DMA)访问所述内存中的所述第二流表。
一些示例性实施例中,所述智能网卡的处理器包括:CPU(central processingunit,中央处理器)、DSP(Digital Signal Processor,数字信号处理器)或FPGA(FieldProgrammable Gate Array,现场可编程门阵列),等。可选地,还可以是其他类型的处理器,不限于本公开示例的方面。
一些示例性实施例中,所述内存包括:双倍速率同步动态随机存储器DDR SDRAM、同步动态随机存储器SDRAM或动态随机存取存贮器RDRAM。
其中,DDR SDRAM简称为DDR。可选地,还可以是其他类型的内存,不限于本公开示例的方面。
可以理解,通过DMA方式访问Host中内存,能够避免一些可实现方案中,未命中片内流表的流量需要提交Host CPU进行流表匹配和进一步处理所造成的对Host CPU计算资源的占用。也就是说,避免了一些可实现方案中Host CPU的OVS慢路径干预,节约了HostCPU的计算资源,同时整体上提高了智能网卡的转发速度;同时,借助Host的内存空间,而无需进一步扩展智能网卡本身的存储空间,在满足流表存储需求的同时,避免了扩大智能网卡的硬件成本和运行功耗。
一些示例性实施例中,所述智能网卡的片内存储器包括:随机存储器(RAM)。
一些示例性实施例中,如图4所示,还包括:
步骤330,在待转发数据包命中所述第一流表的情况下,根据命中所述第一流表的第一匹配结果处理所述待转发数据。
本公开实施例还提供一种流表处理装置,部署于智能网卡中,如图5所示,包括,
流表匹配模块510,设置为在待转发数据包未命中第一流表的情况下,采用直接存储器访问DMA方式访问第二流表,并获取第二匹配结果;
数据包处理模块520,设置为根据所述第二匹配结果,处理所述待转发数据包;
其中,所述第一流表保存在所述智能网卡的片内存储器中;所述第二流表保存在所述智能网卡对应主机Host的内存中。
一些示例性实施例中,数据包处理模块520还设置为,在待转发数据包命中所述第一流表的情况下,根据命中所述第一流表的第一匹配结果处理所述待转发数据。
本公开实施例还提供一种智能网卡,如图6所示,包括,
处理器610和片内存储器620;
所述片内存储器620设置为,存储第一流表;
所述处理器610设置为,在待转发数据包未命中所述第一流表的情况下,采用直接存储器访问DMA方式访问所述智能网卡对应主机Host的内存中的第二流表,并获取第二匹配结果;还设置为根据所述第二匹配结果,处理所述待转发数据包。
一些示例性实施例中,所述处理器610还设置为,在待转发数据包命中所述第一流表的情况下,根据命中所述第一流表的第一匹配结果处理所述待转发数据。
一些示例性实施例中,所述处理器610包括CPU。
一些示例性实施例中,所述片内存储器620包括RAM。
本公开实施例还提供一种网络交换机,如图7所示,包括,
智能网卡710和主机Host 720;
所述智能网卡710设置为,在待转发数据包未命中第一流表的情况下,采用直接存储器访问DMA方式访问第二流表;还设置为根据所述第二流表获取匹配结果,处理所述待转发数据包;
其中,所述第一流表保存在所述智能网卡710的片内存储器中;所述第二流表保存在所述Host 720的内存中。
一些示例性实施例中,所述智能网卡710还设置为,在待转发数据包命中所述第一流表的情况下,根据命中所述第一流表的第一匹配结果处理所述待转发数据。
一些示例性实施例中,如图8所示,所述智能网卡710包括处理器711(CPU)和片内存储712(Memory);所述Host 720包括处理器(CPU)721和DDR 722。
相应地,当流量进入时,优先查找片内存储712中的第一流表,如果命中,则根据第一匹配结果(第一流表中记录)处理数据包,如虚线所示;如果不命中,则通过DMA方式访问Host的DDR722获取第二匹配结果,根据第二匹配结果处理数据包,如实线所示。
本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本公开任一实施例所述的流表处理方法。
本公开实施提供的流表处理方法,基于部分流表卸载到智能网卡的基本思想,在不进一步扩展智能网卡的片内存储的前提下,通过DMA方式访问对应Host的内存,既保证了整体流表的存储容量,又避免了部分流表卸载方案下,智能网卡片内流表未命中时HostCPU的OVS慢路径干预,显著提高了智能网卡的整体流表访问速度,进而提升了转发效率。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是在本申请的构思下,利用本申请说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本申请的专利保护范围内。
- 一种网卡稳定性测试方法、装置、终端及存储介质
- 导表处理方法、装置、存储介质、处理器及终端
- 数据表处理方法、装置、计算机设备和存储介质
- 数据表处理方法、装置、设备及存储介质
- 一种开启智能门锁的方法、装置、计算装置和存储介质
- 数据流的速率控制方法、智能网卡、云端设备及存储介质
- 数据流的速率控制方法、智能网卡、云端设备及存储介质