CN117714398B - 一种数据传输系统、方法、电子设备及存储介质 - Google Patents

一种数据传输系统、方法、电子设备及存储介质 Download PDF

Info

Publication number
CN117714398B
CN117714398B CN202410160615.4A CN202410160615A CN117714398B CN 117714398 B CN117714398 B CN 117714398B CN 202410160615 A CN202410160615 A CN 202410160615A CN 117714398 B CN117714398 B CN 117714398B
Authority
CN
China
Prior art keywords
data packet
rule
flow table
target
kernel
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
CN202410160615.4A
Other languages
English (en)
Other versions
CN117714398A (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.)
Inspur Electronic Information Industry Co Ltd
Original Assignee
Inspur Electronic Information Industry 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 Inspur Electronic Information Industry Co Ltd filed Critical Inspur Electronic Information Industry Co Ltd
Priority to CN202410160615.4A priority Critical patent/CN117714398B/zh
Publication of CN117714398A publication Critical patent/CN117714398A/zh
Application granted granted Critical
Publication of CN117714398B publication Critical patent/CN117714398B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种数据传输系统、方法、电子设备及存储介质,所属的技术领域为网络数据处理领域。所述数据传输系统包括主机端、以及与所述主机端连接的现场可编程门阵列加速器;所述主机端运行有开放式虚拟交换机和所述开放式虚拟交换机的守护进程;所述现场可编程门阵列加速器的静态区包括硬件流表,所述硬件流表用于存储所述开放式虚拟交换机和/或所述守护进程下发的规则;所述现场可编程门阵列加速器的动态区包括虚拟网络交换机内核,所述虚拟网络交换机内核用于从所述硬件流表中查询与数据包匹配的目标规则,并按照所述目标规则对所述数据包进行处理和转发。本发明能够提高开放式虚拟交换机的灵活性,在多种应用场景下实现数据传输。

Description

一种数据传输系统、方法、电子设备及存储介质
技术领域
本发明涉及网络数据处理领域,特别涉及一种数据传输系统、方法、电子设备及存储介质。
背景技术
软件定义网络(SDN,Software Defined Network)技术是一种网络管理方法,用于实现网络虚拟化。软件定义网络的核心技术OpenFlow(网上通信协议)将控制平面与转发平面分离,提供了控制平面的可编程能力。开放式虚拟交换机软件OVS(Open VirtualSwitch)是OpenFlow架构下的虚拟交换机软件,可以根据控制器配置的流表规则实现对数据流的处理和转发操作。
相关技术中,通常将开放式虚拟交换机的数据包解析、处理流程固化到智能网卡中,只能按照固定的方式定义网络数据处理转发逻辑,导致开放式虚拟交换机不具备扩展能力,数据传输的灵活性较低。
因此,如何提高开放式虚拟交换机的灵活性,在多种应用场景下实现数据传输是本领域技术人员目前需要解决的技术问题。
发明内容
本发明的目的是提供一种数据传输系统、方法、电子设备及存储介质,能够提高开放式虚拟交换机的灵活性,在多种应用场景下实现数据传输。
为解决上述技术问题,本发明提供一种数据传输系统,所述数据传输系统包括主机端、以及与所述主机端连接的现场可编程门阵列加速器;
所述主机端运行有开放式虚拟交换机和所述开放式虚拟交换机的守护进程;
所述现场可编程门阵列加速器的静态区包括硬件流表,所述硬件流表用于存储所述开放式虚拟交换机和/或所述守护进程下发的规则;
所述现场可编程门阵列加速器的动态区包括虚拟网络交换机内核,所述虚拟网络交换机内核用于从所述硬件流表中查询与数据包匹配的目标规则,并按照所述目标规则对所述数据包进行处理和转发;其中,所述虚拟网络交换机内核的硬件重构通过动态功能切换技术实现,所述虚拟网络交换机内核的控制面的规则由所述守护进程进行管理,所述虚拟网络交换机内核的数据面的处理逻辑通过目标语言编译得到,所述目标语言为面向数据包处理和流可编程语言。
可选的,所述虚拟网络交换机内核包括通过所述目标语言编译得到的查表引擎;
所述查表引擎用于根据所述数据包中的关键字查询对应的目标规则;所述查表引擎还用于按照所述目标规则对所述数据包执行重组操作,以便将重组后的数据包进行转发。
可选的,所述查表引擎还用于从所述数据包中提取四元组作为所述关键字;
其中,所述四元组包括网络类型、源互联网协议地址、目的互联网协议地址和源端口号。
可选的,所述虚拟网络交换机内核包括管理引擎;
所述管理引擎用于对所述硬件流表中的规则执行管理操作;
其中,所述管理操作包括规则添加操作、规则修改操作、规则删除操作和规则老化操作中的任一项或任几项的组合。
可选的,所述现场可编程门阵列加速器的动态区还包括计算加速内核,所述计算加速内核用于对所述虚拟网络交换机内核传输的数据包进行处理并将处理结果返回至所述虚拟网络交换机内核。
可选的,所述计算加速内核的硬件重构通过动态功能切换技术实现,所述计算加速内核的算法逻辑通过预设语言编译得到。
可选的,所述静态区还包括通过半虚拟化技术实现的数据通道。
可选的,所述数据通道包括物理功能通道和/或虚拟功能通道;
所述物理功能通道用于实现所述现场可编程门阵列加速器与所述开放式虚拟交换机的数据交互,所述虚拟功能通道用于实现所述现场可编程门阵列加速器与所述主机端中虚拟机的数据交互。
可选的,所述目标规则包括数据包处理规则和/或数据包转发规则;所述数据包处理规则用于设置所述数据包的包头字段,所述数据包转发规则用于设置所述数据包的转发端口号。
可选的,所述主机端包括用户空间和内核空间;所述用户空间中运行有所述守护进程和数据库,所述内核空间中运行有开放式虚拟交换机、本地流表和流表规则下发接口;
所述守护进程用于将所述数据库中的规则下发至所述本地流表和硬件流表;所述开放式虚拟交换机用于通过流表规则下发接口将本地流表中的规则下发至所述硬件流表。
可选的,所述虚拟网络交换机内核还用于,在所述硬件流表不存在所述与数据包匹配的所述目标规则时,将所述数据包上传至所述内核空间的开放式虚拟交换机;
所述开放式虚拟交换机还用于在所述本地流表中查询所述目标规则。
可选的,所述开放式虚拟交换机还用于,在所述本地流表不存在所述与数据包匹配的所述目标规则时,将所述数据包上传至所述用户空间的守护进程;
所述守护进程还用于在所述数据库中查询所述目标规则。
本发明还提供了一种数据传输方法,应用于与主机端连接的现场可编程门阵列加速器,所述数据传输方法包括:
在静态区实现硬件流表;
通过动态功能切换技术实现虚拟网络交换机内核的硬件重构,并通过目标语言编译所述虚拟网络交换机内核的数据面的处理逻辑,以便在动态区实现所述虚拟网络交换机内核;其中,所述虚拟网络交换机内核的控制面的规则由开放式虚拟交换机的守护进程进行管理;所述目标语言为面向数据包处理和流可编程语言;
利用所述硬件流表存储所述开放式虚拟交换机和/或所述守护进程下发的规则;其中,所述开放式虚拟交换机和所述守护进程运行于所述主机端;
若接收到数据包,则利用所述虚拟网络交换机内核从所述硬件流表中查询与所述数据包匹配的目标规则,并按照所述目标规则对所述数据包进行处理和转发。
可选的,还包括:
若接收到所述守护进程下发的规则管理指令,则利用所述虚拟网络交换机内核中的管理引擎对所述硬件流表中的规则执行管理操作;其中,所述管理操作包括规则添加操作、规则修改操作、规则删除操作和规则老化操作中的任一项或任几项的组合。
可选的,利用所述虚拟网络交换机内核从所述硬件流表中查询与所述数据包匹配的目标规则,并按照所述目标规则对所述数据包进行处理和转发,包括:
利用所述虚拟网络交换机内核中的查表引擎查询所述数据包对应的目标规则并按照所述目标规则对所述数据包执行重组操作,以便将重组后的数据包进行转发;其中,所述查表引擎通过所述目标语言编译得到。
可选的,还包括:
根据用户配置在所述现场可编程门阵列加速器的动态区实现计算加速内核;其中,所述计算加速内核的硬件重构通过动态功能切换技术实现,所述计算加速内核的算法逻辑通过预设语言编译得到;
相应的,按照所述目标规则对所述数据包进行处理和转发,包括:
若所述数据包为需要所述计算加速内核处理的数据包,则将所述数据包转发至所述计算加速内核;
利用所述计算加速内核对所述数据包进行处理,并将处理后的数据包返回至所述虚拟网络交换机内核,以便所述虚拟网络交换机内核按照所述目标规则对所述计算加速内核处理后的数据包进行转发。
可选的,按照所述目标规则对所述数据包进行处理和转发,包括:
若所述数据包为地址解析协议请求数据包,则按照所述目标规则将所述地址解析协议请求数据包转发至所述主机端或虚拟机;
相应的,还包括:
接收所述主机端或所述虚拟机返回的地址解析协议应答数据包,并利用所述虚拟网络交换机内核从所述硬件流表中查询与所述地址解析协议应答数据包匹配的新的目标规则,按照所述新的目标规则对所述地址解析协议应答数据包进行转发。
可选的,在利用所述虚拟网络交换机内核从所述硬件流表中查询与所述数据包匹配的目标规则之后,还包括:
若所述硬件流表中不存在与所述数据包匹配的所述目标规则,则将所述数据包上传至所述主机端,以便所述主机端从内核空间和/或用户空间中查询所述目标规则并按照所述目标规则对所述数据包进行处理;
接收所述主机端下发的所述目标规则和处理后的数据包;
转发所述主机端处理后的数据包;
将所述目标规则存储至所述硬件流表。
可选的,将所述数据包上传至所述主机端,包括:
为所述数据包的包头添加标识字段和转发端口字段,并将所述标识字段设置为目标字段值;
将添加所述标识字段和所述转发端口字段的数据包上传至所述主机端,以便所述主机端从内核空间和/或用户空间中查询所述目标规则并按照所述目标规则对所述数据包进行处理;其中,所述主机端对所述数据包进行的处理包括将所述目标规则对应的目标转发端口写入所述转发端口字段。
可选的,转发所述主机端处理后的数据包,包括:
根据所述转发端口字段对应的目标转发端口转发所述主机端处理后的数据包。
本发明还提供了一种存储介质,其上存储有计算机程序,所述计算机程序执行时实现上述数据传输方法执行的步骤。
本发明还提供了一种电子设备,包括上述任一种数据传输系统中的主机端和现场可编程门阵列加速器。
本发明提供了一种数据传输系统,所述数据传输系统包括主机端、以及与所述主机端连接的现场可编程门阵列加速器;所述主机端运行有开放式虚拟交换机和所述开放式虚拟交换机的守护进程;所述现场可编程门阵列加速器的静态区包括硬件流表,所述硬件流表用于存储所述开放式虚拟交换机和/或所述守护进程下发的规则;所述现场可编程门阵列加速器的动态区包括虚拟网络交换机内核,所述虚拟网络交换机内核用于从所述硬件流表中查询与数据包匹配的目标规则,并按照所述目标规则对所述数据包进行处理和转发;其中,所述虚拟网络交换机内核的硬件重构通过动态功能切换技术实现,所述虚拟网络交换机内核的控制面的规则由所述守护进程进行管理,所述虚拟网络交换机内核的数据面的处理逻辑通过目标语言编译得到,所述目标语言为面向数据包处理和流可编程语言。
本发明提供的数据传输系统包括主机端和现场可编程门阵列加速器,主机端运行有开放式虚拟交换机及其对应的守护进程,现场可编程门阵列加速器包括静态区和动态区。主机端中运行的开放式虚拟交换机和/或守护进程将规则下发至静态区的硬件流表,动态区中虚拟网络交换机内核的可以查询硬件流表中的规则,进而实现对数据包的处理和转发。上述所述虚拟网络交换机内核的硬件重构通过动态功能切换技术实现,且虚拟网络交换机内核的控制面的规则由开放式虚拟交换机软件进行管理、数据面的处理逻辑通过面向数据包处理和流可编程语言编译得到,本发明的数据传输线系统可以实现对数据处理平面的快速重构和可编程。因此本发明的有益效果为:提高开放式虚拟交换机的灵活性,在多种应用场景下实现数据传输。本发明同时还提供了一种数据传输方法、一种存储介质和一种电子设备,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例所提供的一种数据传输系统的结构示意图;
图2为本发明实施例所提供的一种虚拟网络交换机内核的结构示意图;
图3为本发明实施例所提供的一种数据包处理流程图;
图4为本发明实施例所提供的一种虚拟网络交换机内核对数据包的处理和转发示意图;
图5为本发明实施例所提供的一种数据传输方法的流程图;
图6为本发明实施例所提供的一种电子设备的结构示意图;
图7为本发明实施例所提供的一种存储介质的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面请参见图1,图1为本发明实施例所提供的一种数据传输系统的结构示意图。上述数据传输系统包括主机端、以及与所述主机端连接的FPGA(Field Programmable GateArray,现场可编程门阵列)加速器,图中A表示主机端,B表示FPGA加速器。
上述数据传输系统中的主机端中运行有开放式虚拟交换机软件OVS,具体的,上述开放式虚拟交换机软件包括开放式虚拟交换机和所述开放式虚拟交换机的守护进程。
FPGA加速器的硬件逻辑分为静态区和动态区,FPGA加速器可以通过PCIe(外围组件互连扩展,Peripheral Component Interconnect Express)接口插入所述主机端。
上述FPGA加速器的静态区包括硬件流表,所述硬件流表用于存储所述开放式虚拟交换机软件下发的规则;具体的,主机端的开放式虚拟交换机和/或守护进程可以向硬件流表下发规则。主机端的开放式虚拟交换机软件可以主动将规则下发至硬件流表进行保存;FPGA加速器也可以请求主机端的开放式虚拟交换机软件下发规则。
FPGA加速器的动态区包括具备路由交互功能的虚拟网络交换机内核vSwitchKernel,所述虚拟网络交换机内核用于从所述硬件流表中查询与数据包匹配的目标规则,并按照所述目标规则对所述数据包进行处理和转发;所述目标规则可以包括数据包处理规则和数据包转发规则;所述数据包处理规则用于设置所述数据包的包头字段,所述数据包转发规则用于设置所述数据包的转发端口号。
其中,所述虚拟网络交换机内核的硬件重构通过动态功能切换技术(DFX,DynamicFucntion eXchange)实现,所述虚拟网络交换机内核的控制面的规则由开放式虚拟交换机软件OVS的守护进程进行管理、数据面的处理逻辑通过目标语言编译得到。目标语言为面向数据包处理和流可编程语言,具体的,目标语言可以为P4语言(Programming Protocol-independent Packet Processor,独立于编程协议的分组处理器语言)或verilog语言(硬件描述语言)。
P4语言是一种对协议无关的包处理器进行编程的语言,作为一种可行的实施方式,本实施例可以对P4语言编写的P4程序进行编译得到虚拟网络交换机内核。基于P4技术可以根据应用场景对数据平面处理逻辑和数据平面转发逻辑进行灵活的修改,在收到用户的修改指令后,可以根据修改指令对硬件流表中的规则进行修改,从而可以修改处理和转发的参数。基于P4技术可以根据应用场景对数据面转发逻辑进行灵活的修改。本实施例基于FPGA加速器提出了动态功能切换技术DFX+P4的数据处理平面硬件可重构的架构,基于P4技术实现对网络数据处理平面的可编程,基于动态功能切换技术DFX技术实现对数据处理平面的快速重构,可根据应用场景的不同灵活的定义网络数据处理转发逻辑。如果想要修改虚拟网络交换机内核的数据面处理转发逻辑,可以修改P4程序并重新编译得到新的虚拟网络交换机内核,然后利用DFX技术对FPGA加速器中原有的虚拟网络交换机内核进行更新。
具体的,现场可编程门阵列加速器可以通过以下操作实现数据传输:在静态区实现硬件流表;通过动态功能切换技术实现虚拟网络交换机内核的硬件重构,并通过目标语言编译所述虚拟网络交换机内核的数据面的处理逻辑,以便在动态区实现所述虚拟网络交换机内核;其中,所述虚拟网络交换机内核的控制面的规则由开放式虚拟交换机的守护进程进行管理;所述目标语言为面向数据包处理和流可编程语言;利用所述硬件流表存储所述开放式虚拟交换机和/或所述守护进程下发的规则;其中,所述开放式虚拟交换机和所述守护进程运行于所述主机端;若接收到数据包,则利用所述虚拟网络交换机内核从所述硬件流表中查询与所述数据包匹配的目标规则,并按照所述目标规则对所述数据包进行处理和转发。
本实施例提供的数据传输系统包括主机端和现场可编程门阵列加速器,主机端运行有开放式虚拟交换机及其对应的守护进程,现场可编程门阵列加速器包括静态区和动态区。主机端中运行的开放式虚拟交换机和/或守护进程将规则下发至静态区的硬件流表,动态区中虚拟网络交换机内核的可以查询硬件流表中的规则,进而实现对数据包的处理和转发。上述所述虚拟网络交换机内核的硬件重构通过动态功能切换技术实现,且虚拟网络交换机内核的控制面的规则由开放式虚拟交换机软件进行管理、数据面的处理逻辑通过面向数据包处理和流可编程语言编译得到,本实施例的数据传输线系统可以实现对数据处理平面的快速重构和可编程。因此本实施例可以提高开放式虚拟交换机的灵活性,在多种应用场景下实现数据传输。
作为对于图1所示的数据传输系统的进一步介绍,所述现场可编程门阵列加速器的动态区还包括计算加速内核,所述计算加速内核用于对所述虚拟网络交换机内核传输的数据包进行处理并将处理结果返回至所述虚拟网络交换机内核。上述计算加速内核的硬件重构通过动态功能切换技术实现,所述计算加速内核的算法逻辑可以通过预设语言(如程序设计语言C/C++、开放计算语言OpenCL或硬件描述语言Verilog)编译得到。
具体的,现场可编程门阵列加速器可以根据用户配置在所述现场可编程门阵列加速器的动态区实现计算加速内核。相应的,现场可编程门阵列加速器可以按照如下方式对所述数据包进行转发,包括:若所述数据包为需要所述计算加速内核处理的数据包,则将所述数据包转发至所述计算加速内核;利用所述计算加速内核对所述数据包进行处理,并将处理后的数据包返回至所述虚拟网络交换机内核,以便所述虚拟网络交换机内核按照所述目标规则对所述计算加速内核处理后的数据包进行转发。
作为对于图1所示的数据传输系统的进一步介绍,上述静态区还包括通过半虚拟化技术实现的数据通道。具体的。本实施例可以在静态区通过Virtio(半虚拟化虚拟机管理程序中位于设备之上的抽象层)技术实现数据通道,数据通道用于实现FPGA加速器与主机端之间的数据交互。上述静态区还包括管理模块,用于实现对FPGA加速器的板卡管理操作。
进一步的,上述数据通道包括物理功能通道Virtio-PF(Physical Function)和/或虚拟功能通道Virtio-VF(Virtual Function)。所述物理功能通道用于实现FPGA加速器与开放式虚拟交换机的数据交互,所述虚拟功能通道用于实现FPGA加速器与所述主机端中虚拟机的数据交互。
作为对于图1所示的数据传输系统的进一步介绍,上述主机端包括用户空间和内核空间;所述用户空间中运行有所述开放式虚拟交换机软件的守护进程ovs-vswitchd和数据库ovsdb,所述内核空间中运行有开放式虚拟交换机openvswitch(又称开放式虚拟交换机软件OVS的快速路径)、本地流表和流表规则下发接口tc-flower和驱动。流表规则下发接口可以通过驱动与物理功能通道连接。
具体的,上述守护进程用于将所述数据库中的规则下发至所述本地流表和硬件流表;所述开放式虚拟交换机用于通过流表规则下发接口将本地流表中的规则下发至所述硬件流表。
进一步的,主机端的用户空间中还包括网桥配置工具ovs-vsctl和流表配置工具ovs-ofctl。主机端的用户空间还可以包括虚拟操作系统模拟器QEMU(Quick EMUlator),虚拟操作系统模拟器QEMU中运行多个虚拟机VM。虚拟网络交换机内核包括物理网口Ether。上述虚拟操作系统模拟器中运行的虚拟机可以通过所述虚拟功能通道与所述FPGA加速器连接。
本实施例所提供的数据传输系统可以实现逐级查询规则的操作;具体的,所述虚拟网络交换机内核还用于在所述硬件流表不存在所述与数据包匹配的所述目标规则时,将所述数据包上传至所述内核空间的开放式虚拟交换机;所述开放式虚拟交换机还用于在所述本地流表中查询所述目标规则。所述开放式虚拟交换机还用于在所述本地流表不存在所述与数据包匹配的所述目标规则时,将所述数据包上传至所述用户空间的守护进程;所述守护进程还用于在所述数据库中查询所述目标规则。若守护进程未查询到目标规则,则可以丢弃数据包。
具体的,在利用所述虚拟网络交换机内核从所述硬件流表中查询与所述数据包匹配的目标规则之后,若所述硬件流表中不存在与所述数据包匹配的所述目标规则,则将所述数据包上传至所述主机端,以便所述主机端从内核空间和/或用户空间中查询所述目标规则并按照所述目标规则对所述数据包进行处理;接收所述主机端下发的所述目标规则和处理后的数据包;转发所述主机端处理后的数据包;将所述目标规则存储至所述硬件流表。
现场可编程门阵列可以为所述数据包的包头添加标识字段和转发端口字段,并将所述标识字段设置为目标字段值;现场可编程门阵列加速器可以将添加所述标识字段和所述转发端口字段的数据包上传至所述主机端,以便所述主机端从内核空间和/或用户空间中查询所述目标规则并按照所述目标规则对所述数据包进行处理。其中,所述主机端对所述数据包进行的处理包括将所述目标规则对应的目标转发端口写入所述转发端口字段。现场可编程门阵列加速器可以根据所述转发端口字段对应的目标转发端口转发所述主机端处理后的数据包。
在本实施例中,经过虚拟网络交换机内核转发的设备包括本地服务器主机、本地服务器上的虚拟机(本地虚拟机)、FPGA加速器中的计算加速内核和外部服务器上的虚拟机(外部虚拟机),对应的输入端口为物理功能通道的接收队列RXQ、虚拟功能通道的接收队列RXQ、计算加速内核的接口AXIS和物理网口Ether,对应的输出端口为物理功能通道(Virtio-PF)的发送队列TXQ、虚拟功能通道(Virtio-VF)的发送队列TXQ、计算加速内核的接口AXIS(AXI Stream,一种用于芯片内部数据流传输的标准协议接口)和物理网口Ether。本实施例在FPGA加速器根本功能的基础上,提出了在静态区引入Virtio(半虚拟化虚拟机管理程序中位于设备之上的抽象层)技术实现虚拟化功能、在动态区实现路由交换功能的虚拟网络交换机内核vSwitch Kernel,实现本地主机、本地虚拟机、外部虚拟机,以及计算加速内核之间数据交互的方法。
请参见图2,图2为本发明实施例所提供的一种虚拟网络交换机内核的结构示意图,虚拟网络交换机内核包括管理引擎、输入仲裁模块、查表引擎和输出仲裁模块。输入仲裁模块与查表引擎连接,输入仲裁模块用于从预设通道中选择当前时刻进行处理转发的数据包,并将所述数据包输入所述查表引擎;输出仲裁模块与查表引擎连接的,输出仲裁模块用于将所述查表引擎重组后的数据包通过所述预设通道进行转发;其中,所述预设通道包括物理功能通道、虚拟功能通道、计算加速内核的通道或物理网口。
虚拟网络交换机内核中的管理引擎用于对所述硬件流表中存储的规则执行管理操作。管理引擎负责所有操作的管理和调度,包括对规则的添加、修改、删除、老化等,同时管理引擎中存储规则的状态并计时,如老化时间。查表引擎负责获取数据包的关键字、流表规则的查找匹配、数据包的重组。输入仲裁模块负责从众多输入通道中选择当前时刻进行处理转发的数据包,输出仲裁模块负责根据匹配规则中定义的转发端口将处理后的数据包转发出去,若没有匹配规则,则默认上传给开放式虚拟交换机软件进行处理。
作为对于图2所示的网络交换机内核的进一步介绍,虚拟网络交换机内核包括管理引擎;所述管理引擎用于对所述硬件流表中的规则执行管理操作;其中,所述管理操作包括规则添加操作、规则修改操作、规则删除操作和规则老化操作中的任一项或任几项的组合。
进一步的,现场可编程门阵列加速器的管理引擎若接收到所述开放式虚拟交换机的守护进程下发的规则管理指令,现场可编程门阵列加速器则利用所述虚拟网络交换机内核中的管理引擎对所述硬件流表中的规则执行管理操作。
具体的,上述管理引擎包括规则添加模块、规则修改模块、规则删除模块和规则老化模块。规则添加模块,用于将所述开放式虚拟交换机软件下发的规则存储至所述硬件流表;规则修改模块,用于根据所述开放式虚拟交换机软件下发的修改指令对所述硬件流表中的规则进行修改;规则删除模块,用于根据所述开放式虚拟交换机软件下发的删除指令对所述硬件流表中的规则进行删除;规则老化模块,用于根据所述硬件流表中每条规则的老化时间进行计时,并将达到所述老化时间的规则进行删除。
上述规则老化模块包括状态维护单元、计时单元和执行单元。状态维护单元,用于在状态表中记录所述硬件流表中每条规则的老化时间;计时单元,用于对所述硬件流表中每条规则的存在时间进行计时;执行单元,用于对所述存在时间达到所述老化时间的规则进行删除。
作为对于图2所示的网络交换机内核的进一步介绍,可以通过物理功能通道向管理引擎传输指令和/或参数。
作为对于图2所示的网络交换机内核的进一步介绍,所述虚拟网络交换机内核还包括通过目标语言编译得到的查表引擎;所述查表引擎用于根据所述数据包中的关键字查询对应的目标规则;所述查表引擎还用于按照所述目标规则对所述数据包执行重组操作,以便将重组后的数据包进行转发。上述查表引擎还用于从所述数据包中提取四元组作为所述关键字;其中,所述四元组包括网络类型、源互联网协议地址、目的互联网协议地址和源端口号。
进一步的,现场可编程门阵列加速器可以通过目标语言(如P4语言)编译得到查表引擎,进而构建得到的查表引擎查询所述数据包对应的目标规则并按照所述目标规则对所述数据包执行重组操作,以便将重组后的数据包进行转发。
作为一种可行的实施方式,上述查表引擎通过对可以通过P4语言定义的数据平面处理逻辑和数据平面转发逻辑进行编译得到。查表引擎可以通过基于P4技术开发,配合前后端P4编译器,可对P4语言定义的数据平面处理和转发逻辑进行编译并映射到硬件中,实现对数据包的解析、查表匹配和重组,根据匹配规则完成对数据包的处理,获取转发端口信息。
具体的,上述查表引擎包括与输入仲裁模块连接的解析模块、内容寻址存储器TCAM(Ternary Content Addressable Memory)、先进先出存储器FIFO(First Input FirstOutput)和重组模块。解析模块与内容寻址存储器连接,解析模块还与先进先出存储器FIFO连接。解析模块,用于从所述数据包中提取关键字;内容寻址存储器,用于查询所述硬件流表中与所述关键字匹配的所述目标规则;先进先出存储器,用于存储所述数据包;重组模块,用于按照所述目标规则对所述数据包执行重组操作。上述解析模块用于从所述数据包中提取四元组作为所述关键字;其中,所述四元组包括网络类型、源IP(互联网协议)地址、目的IP地址和源端口号。进一步的,上述目标规则包括数据包处理规则和/或数据包转发规则;所述数据包处理规则用于设置所述数据包的包头字段,所述数据包转发规则用于设置所述数据包的转发端口号;相应的,所述重组模块,用于按照所述数据包处理规则和/或所述数据包转发规则对所述数据包执行重组操作。重组模块包括第一重组单元和第二重组单元。第一重组单元,用于按照所述目标规则对所述数据包的目的MAC地址(硬件地址)进行修改;第二重组单元,用于按照所述目标规则对所述数据包的源端口号进行修改。
输入仲裁模块选择待处理的数据包传输给查表引擎,解析模块负责从数据包中提取关键字,并将原始数据包存入先进先出存储器FIFO中。内容寻址存储器TCAM用于存储规则,支持掩码匹配。重组模块负责从先进先出存储器FIFO中取出数据包,根据匹配规则对包头进行重组。流表规则通过AXI Lite(简化的高级可扩展接口)通道存储到内容寻址存储器TCAM中,数据包通过AXI Stream通道传输到查表引擎进行查表匹配。AXI Lite通道为用于低吞吐量存储器映射通信的通道,AXI Stream通道为用于高速流传输数据的通道。查表引擎基于P4技术开发,配合前后端P4编译器,可对P4语言定义的数据面处理和转发逻辑进行编译,并映射到硬件中,实现对数据包的解析、查表匹配和重组,根据匹配规则完成对数据包的处理,获取转发端口信息。查表引擎将处理后的数据包和转发端口传递给输出仲裁模块,由输出仲裁模块根据转发端口选择特定的数据通道将数据包转发出去。
本发明提出了在开放式虚拟交换机软件OVS架构下实现对P4流表规则动态配置和管理的方法,通过流表规则下发接口tc-flower和相应的驱动,实现OVS流表规则到硬件流表规则存储方式的转换,从而实现对硬件流表规则动态的增加、删除、修改、老化处理。
管理引擎对硬件流表中的规则进行管理的说明如下:
在本发明中,对于流表规则的下发和管理由开放式虚拟交换机软件OVS实现,通过流表规则下发接口tc-flower和驱动构建规则下发通道,配合虚拟网络交换机内核vSwitchKernel中的管理引擎,实现硬件流表规则的添加、修改、删除和老化处理,具体处理流程如下。
规则添加:当数据包在硬件流表中未匹配到规则时,虚拟网络交换机内核vSwitchKernel将匹配失败的数据包上传给开放式虚拟交换机软件OVS进行查表匹配,开放式虚拟交换机软件OVS在查表匹配成功后将规则通过流表规则下发接口tc-flower传递给驱动,上述规则包含开放式虚拟交换机软件OVS定义的所有匹配项、对应的掩码和动作。驱动根据实际的硬件定义选择出有用的匹配项(如本实施例定义的四元组)、相应的掩码和动作,按照内容寻址存储器TCAM的规则存储格式配置地址和数据,通过物理功能通道将规则添加到硬件的流表中。
规则修改:当通过开放式虚拟交换机软件OVS的流表管理工具ovs-ofctl对数据库中的流表规则进行修改时,会同步将修改后的规则通过流表规则下发接口tc-flower传递给驱动。驱动根据实际的硬件定义选择出有用的匹配项、相应的掩码和动作,然后按照内容寻址存储器TCAM的规则存储格式配置地址和数据,通过物理功能通道对硬件中的原始规则进行修改。
规则删除:当通过开放式虚拟交换机软件OVS的流表管理工具ovs-ofctl对数据库中的流表规则进行删除时,会同步将删除的规则通过流表规则下发接口tc-flower传递给驱动。驱动根据实际的硬件定义选择出有用的匹配项、相应的掩码,然后按照内容寻址存储器TCAM的规则存储格式配置地址和数据,通过物理功能通道对硬件中的规则进行删除。
规则老化:在管理引擎的状态表中记录了每条规则的老化时间,老化操作由管理引擎间隔一段时间自动生成。管理引擎取出状态表中每条规则的老化时间,并减小老化时间,如果老化时间减小到零则删除该规则。
本实施例提出的数据传输系统可以应用于数据中心、云服务等场景, FPGA加速器通过PCIe接口插入服务器,服务器运行Linux系统,分为内核空间和用户空间。在用户空间运行开放式虚拟交换机软件OVS的守护进程ovs-vswitchd和数据库ovsdb,以及网桥和流表的配置工具,如ovs-vsctl、ovs-ofctl。内核空间运行开放式虚拟交换机openvswitch、流表规则下发接口tc-flower以及相应的流表和驱动。
FPGA加速器的硬件逻辑分为静态区和动态区,静态区主要实现板卡管理、Virtio数据通道、HBM(High Bandwidth Memory 高带宽存储器)内存,即存储流表,等共用基础设施,通过DMA(Direct Memory Access,直接内存访问)引擎和AXI(Advanced eXtensibleInterface,高级可扩展接口)总线实现数据传输;动态区实现卸载到FPGA硬件的开放式虚拟交换机软件OVS快速路径,以及图像处理、压缩解压缩等内核。虚拟网络交换机内核实现数据包的解析、查表和重组,计算加速内核实现网络加速和计算加速功能。物理功能通道与流表规则下发接口tc-flower、驱动进行数据交互,实现匹配失败的数据包的上传和规则的下发;通过虚拟功能通道与虚拟操作系统模拟器QEMU中的各个虚拟机实现数据流的传输;通过物理网口Ether与外部的服务器进行数据流的传输。
进一步的,上述虚拟网络交换机内核还用于在所述硬件流表中不存在与数据包匹配的目标规则时,通过所述物理功能通道将所述数据包上传至所述内核空间的开放式虚拟交换机。所述内核空间的开放式虚拟交换机,用于判断所述本地流表中是否存在所述数据包对应的目标规则;若存在,则按照所述目标规则对所述数据包进行处理,并将处理后的数据包下发至所述虚拟网络交换机内核,以便所述虚拟网络交换机内核转发所述处理后的数据包;若不存在,则将所述数据包上传至所述用户空间的守护进程。所述用户空间的守护进程,用于判断所述数据库中是否存在所述数据包对应的目标规则;若存在,则按照所述目标规则对所述数据包进行处理,并将处理后的数据包下发至所述虚拟网络交换机内核,以便所述虚拟网络交换机内核转发所述处理后的数据包;若不存在,则丢弃所述数据包。
进一步的,上述内核空间的流表规则下发接口分别与所述内核空间的开放式虚拟交换机、以及所述物理功能通道连接。
进一步的,上述虚拟网络交换机内核具体用于在所述硬件流表中不存在与数据包匹配的目标规则时,为所述数据包的包头添加标识字段和转发端口字段,并将所述标识字段设置为目标字段值,通过所述物理功能通道将设置所述标识字段后的数据包上传至所述内核空间的开放式虚拟交换机。
进一步的,上述虚拟网络交换机内核还用于,若接收到所述内核空间的开放式虚拟交换机下发的包含所述目标字段值的数据包,则按照包含所述目标字段值的数据包中的转发端口号进行转发。
图3为本发明实施例所提供的一种数据包处理流程图,如图3所示,开始后虚拟网络交换机内核进行查表匹配,若匹配成功,则由虚拟网络交换机内核处理数据包并转发数据包。若虚拟网络交换机内核未匹配成功,则将数据包上传到内核空间开放式虚拟交换机,由内核空间开放式虚拟交换机查表匹配;若内核空间开放式虚拟交换机匹配成功,则根据规则处理数据包并返回虚拟网络交换机内核转发,下发匹配规则至硬件流表中;若内核空间开放式虚拟交换机匹配不成功则将数据包上传至用户空间守护进程,由用户空间守护进程查表匹配;若用户空间守护进程查表匹配成功,则根据规则处理数据包并返回虚拟网络交换机内核转发,下发匹配规则至硬件流表中;若用户空间守护进程查表匹配不成功,则丢弃数据包。
在FPGA加速器上电启动后,FPGA的硬件流表中不存在任何规则,当有新的数据包达到虚拟网络交换机内核后,数据包匹配失败,虚拟网络交换机内核默认通过物理功能通道将数据包通过流表规则下发接口tc-flower传递给开放式虚拟交换机openvswitch。如果数据包是首包,开放式虚拟交换机openvswitch也不存在匹配的规则,则开放式虚拟交换机openvswitch继续上传给守护进程ovs-vswitchd,守护进程ovs-vswitchd查询数据库中的规则,根据匹配规则的动作对数据包进行处理,然后将数据包重新下发给FPGA加速器进行转发,同时将匹配规则下发给内核空间和FPGA硬件上的流表。如果守护进程ovs-vswitchd也匹配失败,则直接将数据包丢弃。如果数据包不是首包,开放式虚拟交换机openvswitch的流表中存在匹配的规则,则由开放式虚拟交换机openvswitch直接对数据包进行处理,然后将数据包重新下发给FPGA加速器进行转发,同时将规则下发给FPGA加速器上的流表。这样同一数据流的后续数据包可以直接在FPGA加速器中完成处理和转发,释放CPU(CentralProcessing Unit,中央处理器)资源,提高数据转发的效率。
对于上传到内核和用户空间处理的数据包,本发明提出了与整体架构适应的首包处理方案。对于匹配失败的数据包,虚拟网络交换机内核会在数据包的包头添加一个标识字段和转发端口字段,并将标识设置为特定值,如0x5555,转发端口初始值为0x0000。软件在收到这样的数据包后进行查表匹配,并根据匹配规则对数据包进行处理,然后将实际的转发端口存入转发端口字段。软件在处理完成后,将数据包返回给FPGA加速器,虚拟网络交换机内核vSwitch在识别到标识0x5555以后,识别出这是软件处理后返回的数据包,则提取出转发端口号,根据端口号将数据包从对应的端口转发出去,不再进行查表匹配的操作,缩短转发时间。该方法不仅适用于首包处理的情况,也适用于主机直接发送的数据包,主机发送的数据包可以直接带着转发的端口号,然后将数据包传给虚拟网络交换机内核vSwitch直接转发,而无需经过匹配失败再次回到主机进行处理的流程。
在传统的智能网卡中,数据平面主要完成对IP数据包的转发,ARP(AddressResolution Protocol,地址解析协议)数据包主要通过二层交换机进行广播,容易引发网络风暴。本实施例构造以网络类型、源IP地址、目的IP地址和源端口号为匹配字段的四元组,支持掩码匹配,动作包含单纯的转发、修改目的MAC地址后转发、修改源端口号后转发,以及未匹配到规则将数据包上传给软件。需要说明的是本实施例的架构并不局限匹配字段的选择,用户可根据自己的需求进行添加。在数据面的处理逻辑中,引入对ARP数据包的处理逻辑,并在流表中添加了对ARP数据包进行转发的规则,同时实现对ARP和IP数据包的处理转发。同时也引入了路由到加速计算内核的处理逻辑,使得用户可以通过配置流表规则使数据先路由到需要的计算加速内核进行处理,完后再转发出去。
若所述数据包为地址解析协议数据包,则所述查表引擎还用于接收所述地址解析协议数据包对应的请求包和应答包,并按照所述硬件流表中与所述请求包和应答包匹配的目标规则转发所述请求包和应答包。所述FPGA加速器的动态区还包括通过动态功能切换技术实现的计算加速内核;相应的,所述查表引擎还用于将所述数据包转发至所述计算加速内核;所述计算加速内核用于对所述数据包进行处理,并将处理后的数据包发送至所述查表引擎,以便所述查表引擎根据所述硬件流表中与所述处理后的数据包匹配的规则进行转发。所述计算加速内核包括具备图像处理和/或具备压缩与解压缩等功能的内核。
请参见图4,图4为本发明实施例所提供的一种虚拟网络交换机内核对数据包的处理和转发示意图,本地虚拟机和路由器可以向输入仲裁模块输入数据包,数据包的种类包括ARP数据包、IP数据包、需要计算加速内核处理的IP数据包以及计算加速内核处理后的IP数据包。图中还示出了主机端和计算加速内核,查表引擎中进行关键字匹配时,可以对网络类型进行精确匹配,对源IP地址进行掩码匹配,对目的IP地址进行前缀匹配,对源端口号进行掩码匹配。查表引擎执行的动作包括:转发到路由器或本地虚拟机;修改目的MAC后转发到本地虚拟机;修改源端口号后转发到计算加速内核;匹配失败上传到主机端。
各类数据包的处理流程如下:
若数据包的类型为ARP数据包,处理流程如下:本地虚拟机在发送IP数据包之前,需要知道对方的目的MAC地址,所以首先发送ARP请求数据包。ARP请求数据包到达查表引擎后,解析模块提取关键字进行查表匹配(实际根据网络类型和目的IP地址进行匹配),获取转发的端口,输出仲裁模块将ARP请求包转发给本地主机或虚拟机。本地主机或虚拟机产生ARP应答包返回给查表引擎,再次根据关键字进行匹配,获取转发端口,将ARP应答包返回给发起请求的本地虚拟机。
若数据包的类型为普通的IP数据包处理流程如下:查表引擎在接收到IP数据包后,解析模块提取关键字进行查表匹配(实际根据网络类型和目的IP地址进行匹配,目的IP地址支持前缀匹配,优先级低于全词匹配),重组模块根据匹配规则确定是否修改目的MAC地址(转发给本地虚拟机和外部虚拟机的处理方式不同),然后输出仲裁模块根据转发端口将处理后的数据包转发给本地或外部的虚拟机。
若数据包的类型为需要计算加速内核处理的IP数据包:对于有特殊处理需求的数据包,如进行图像处理、压缩解压缩等处理,查表引擎在接收到IP数据包后,解析模块提取关键字进行查表匹配(实际根据网络类型、源IP地址和源端口号进行匹配,规则优先级高于普通IP数据包转发规则),重组模块根据匹配规则修改源端口号,然后输出仲裁模块根据转发端口将处理后的数据包转发给对应的计算加速内核进行处理。由计算加速内核处理后的数据包再次回到查表引擎,按照普通IP数据包的处理流程,将数据包转发给本地或外部的虚拟机。
上述实施例提出了在P4编程框架下实现ARP路由、计算加速内核路由、首包处理的方法,通过设计新的流表结构、流表规则和处理逻辑实现对ARP数据包、需要计算加速内核处理的数据包、匹配失败的数据包的处理和转发,使计算融入网络,实现算网融合。
下面通过在实际应用中的实施例说明上述实施例描述的流程。
传统的开放式虚拟交换机软件OVS包含用户空间的慢速路径和内核空间的快速路径两部分,当数据包达到开放式虚拟交换机软件OVS后,首先在内核空间进行查表匹配,根据匹配规则对数据包进行处理和转发。如果在内核空间的流表中没有查找到匹配的规则,则将数据包上传到用户空间,匹配用户空间数据库中的流表规则,按照匹配规则对数据包进行处理和转发,同时将匹配的规则下发到内核空间的流表。
随着人工智能、大数据、云计算的飞速发展,数据中心的网络带宽需求也在不断增长。以开放式虚拟交换机软件OVS为代表的虚拟网络交换软件在处理网络流量时消耗越来越多的CPU算力,单纯使用CPU实现网络数据转发出现性能瓶颈。将OVS的快速路径以及一些其它的计算加速算法卸载到硬件中,由硬件完成数据包的处理和转发可有效的释放CPU资源,提升网络接口速率。
现有开放式虚拟交换机软件OVS卸载方案的主要思想是将快速路径卸载到智能网卡中,当数据流到达智能网卡时,首先查询智能网卡中的流表规则,如果存在匹配的规则,则根据匹配规则的动作进行处理和转发;如果匹配失败,则上传到内核空间和用户空间进行查表匹配,并根据匹配规则进行处理和转发,同时将匹配规则下发到智能网卡中。这样同一数据流的后续数据包可以直接在智能网卡中完成处理和转发,提升数据中心的网络带宽。
开放式虚拟交换机软件OVS是基于OpenFlow协议的应用,随着OpenFlow协议的不断演化和完善,规则的匹配字段也在不断的增加,对于不同的应用场景,匹配字段和处理逻辑是不同的。现有的开放式虚拟交换机软件OVS解决方案只为用户提供了控制平面的可编程能力,数据平面的处理流程通常固化到智能网卡中。正常情况下,由于数据包解析、处理流程固化到智能网卡中,所以设备在协议的支持方面并不具备扩展能力。而且厂商扩展匹配字段和修改处理流程等特性的代价也非常高,需要将以前的硬件重新设计,势必导致更新成本高,研发周期长等一系列问题。此外,对于像图像处理、压缩解压缩等一些特殊的计算加速任务,智能网卡也不支持,无法根据上层应用的需求灵活的选择是否进行特殊处理。
针对现有智能网卡不方便进行图像处理、压缩解压缩等一些特殊的计算加速任务,以及不具备计算加速内核路由路径的问题。本实施例在开放式虚拟交换机软件OVS的框架下,基于FPGA加速器提出了DFX+P4的编程架构。在FPGA加速器中,可以根据用户的需求在动态区灵活的添加计算加速内核,完成特定的计算加速任务。同时提出在静态区引入Virtio实现虚拟化功能,以及在动态区中引入路由交互功能的虚拟网络交换机内核vSwitch Kernel,由虚拟网络交换机内核vSwitch Kernel根据配置的规则完成主机、虚拟机、计算加速内核之间的转发处理。规则的管理和下发由开放式虚拟交换机软件OVS完成,实现控制平面的可编程。基于P4技术实现对数据平面的可编程,可根据应用场景的需求扩展匹配字段和修改处理流程,通过P4编译器进行编译并映射到硬件中,更新硬件的处理转发逻辑。基于DFX技术实现对硬件的可重配置,将用户使用P4语言重新定义的数据平面的处理逻辑(即虚拟网络交换机内核vSwitch Kernel),以及通过C语言、硬件描述语言Verilog等实现的计算加速内核动态的加载到FPGA中,实现转发逻辑和计算加速任务的快速更新。
同时本发明提出了一种新的转发逻辑,配合相应的流表规则,可配置有特殊需求的数据包优先路由到FPGA加速器中的计算加速内核中进行处理,在经过计算加速内核处理完成后再进行转发。通过添加这一数据路径,上层应用可根据自己的需求灵活的选择数据预处理和后处理的方式,可将CPU中执行的网络处理任务、计算加速任务卸载到FPGA加速器中,进一步释放CPU的计算资源。同时,在数据面的处理逻辑中,引入对ARP数据包的处理逻辑,并在流表中添加对ARP数据包进行转发的规则。虚拟网络交换机内核vSwitch Kernel能够识别出ARP数据包,并对ARP数据包进行查表匹配,然后根据匹配规则将ARP数据包转发给特定的主机和虚拟机进行处理。ARP数据包匹配失败上传和ARP流表规则的下发与IP数据包的处理流程一致。在虚拟网络交换机内核中实现对ARP数据包的路由转发,替代传统交换机实现二层的转发功能,精简系统架构,避免广播,降低网络风暴的概率。
请参见图5,图5为本发明实施例所提供的一种数据传输方法的流程图,该方法可以应用于与主机端连接的现场可编程门阵列加速器,所述数据传输方法包括如下步骤:
S501:在静态区实现硬件流表。
S502:通过动态功能切换技术实现虚拟网络交换机内核的硬件重构,并通过目标语言编译所述虚拟网络交换机内核的数据面的处理逻辑,以便在动态区实现虚拟网络交换机内核。
其中,所述虚拟网络交换机内核的控制面的规则由开放式虚拟交换机的守护进程进行管理;所述目标语言为面向数据包处理和流可编程语言。
S503:利用所述硬件流表存储所述开放式虚拟交换机和/或所述守护进程下发的规则。其中,所述开放式虚拟交换机和所述守护进程运行于所述主机端。
S504:若接收到数据包,则利用所述虚拟网络交换机内核从所述硬件流表中查询与所述数据包匹配的目标规则,并按照所述目标规则对所述数据包进行处理和转发。
本实施例所提供的数据传输系统可以实现逐级查询规则的操作;具体的,所述虚拟网络交换机内核还用于在所述硬件流表不存在所述与数据包匹配的所述目标规则时,将所述数据包上传至所述内核空间的开放式虚拟交换机;所述开放式虚拟交换机还用于在所述本地流表中查询所述目标规则。所述开放式虚拟交换机还用于在所述本地流表不存在所述与数据包匹配的所述目标规则时,将所述数据包上传至所述用户空间的守护进程;所述守护进程还用于在所述数据库中查询所述目标规则。若守护进程未查询到目标规则,则可以丢弃数据包。
进一步的,若接收到所述开放式虚拟交换机的守护进程下发的规则管理指令,则现场可编程门阵列加速器可以利用所述虚拟网络交换机内核中的管理引擎对所述硬件流表中的规则执行管理操作。
其中,所述管理操作包括规则添加操作、规则修改操作、规则删除操作和规则老化操作中的任一项或任几项的组合。
进一步的,现场可编程门阵列加速器对所述数据包进行转发的过程包括:利用所述虚拟网络交换机内核中的查表引擎查询所述数据包对应的目标规则并按照所述目标规则对所述数据包执行重组操作,以便将重组后的数据包进行转发;其中,所述查表引擎通过目标语言编译得到。
进一步的,还包括:
现场可编程门阵列加速器还可以根据用户配置在动态区实现计算加速内核;其中,所述计算加速内核的硬件重构通过动态功能切换技术实现,所述计算加速内核的算法逻辑可以通过预设语言(如程序设计语言C/C++、开放计算语言OpenCL或硬件描述语言Verilog)编译得到。
相应的,现场可编程门阵列加速器按照所述目标规则对所述数据包进行处理和转发的过程包括:若所述数据包为需要所述计算加速内核处理的数据包,则将所述数据包转发至所述计算加速内核;利用所述计算加速内核对所述数据包进行处理,并将处理后的数据包返回至所述虚拟网络交换机内核,以便所述虚拟网络交换机内核按照所述目标规则对所述计算加速内核处理后的数据包进行转发。
进一步的,现场可编程门阵列加速器按照所述目标规则对所述数据包进行处理和转发的过程包括:若所述数据包为地址解析协议请求数据包,则按照所述目标规则将所述地址解析协议请求数据包转发至所述主机端或虚拟机。
相应的,现场可编程门阵列加速器还可以执行以下操作:接收所述主机端或所述虚拟机返回的地址解析协议应答数据包,并利用所述虚拟网络交换机内核从所述硬件流表中查询与所述地址解析协议应答数据包匹配的新的目标规则,按照所述新的目标规则对所述地址解析协议应答数据包进行转发。
进一步的,在利用所述虚拟网络交换机内核从所述硬件流表中查询与所述数据包匹配的目标规则之后,现场可编程门阵列加速器执行的操作还包括:若所述硬件流表中不存在与所述数据包匹配的所述目标规则,则将所述数据包上传至所述主机端,以便所述主机端从内核空间和/或用户空间中查询所述目标规则并按照所述目标规则对所述数据包进行处理;接收所述主机端下发的所述目标规则和处理后的数据包;转发所述主机端处理后的数据包;将所述目标规则存储至所述硬件流表。
进一步的,现场可编程门阵列加速器将所述数据包上传至所述主机端的过程包括:为所述数据包的包头添加标识字段和转发端口字段,并将所述标识字段设置为目标字段值;将添加所述标识字段和所述转发端口字段的数据包上传至所述主机端,以便所述主机端从内核空间和/或用户空间中查询所述目标规则并按照所述目标规则对所述数据包进行处理;其中,所述主机端对所述数据包进行的处理包括将所述目标规则对应的目标转发端口写入所述转发端口字段。相应的,现场可编程门阵列加速器转发所述主机端处理后的数据包的过程包括:根据所述转发端口字段对应的目标转发端口转发所述主机端处理后的数据包。
由于方法部分的实施例与系统部分的实施例相互对应,因此方法部分的实施例请参见系统部分的实施例的描述,这里暂不赘述。
请参见图6,图6为本发明实施例所提供的一种电子设备的结构示意图,该电子设备包括主机端A和现场可编程门阵列加速器B。
所述主机端A中运行有开放式虚拟交换机和所述开放式虚拟交换机的守护进程;所述现场可编程门阵列加速器B的静态区包括硬件流表,所述硬件流表用于存储所述开放式虚拟交换机和/或所述守护进程下发的规则。通信接口3用于实现主机端A与现场可编程门阵列加速器B的信息交互。
所述现场可编程门阵列加速器B的动态区包括虚拟网络交换机内核,所述虚拟网络交换机内核用于从所述硬件流表中查询与数据包匹配的目标规则,并按照所述目标规则对所述数据包进行处理和转发;其中,所述虚拟网络交换机内核的硬件重构通过动态功能切换技术实现,所述虚拟网络交换机内核的控制面的规则由所述守护进程进行管理,所述虚拟网络交换机内核的数据面的处理逻辑通过目标语言编译得到,所述目标语言为面向数据包处理和流可编程语言。
上述主机端A包括:
通信接口1,能够与其它设备比如网络设备等进行信息交互。
处理器2,与通信接口1连接,以实现与其它设备进行信息交互,用于运行计算机程序时,执行上述规则下发和规则管理方案。而所述计算机程序存储在存储器3上。
当然,实际应用时,电子设备中的各个组件通过总线系统4耦合在一起。可理解,总线系统4用于实现这些组件之间的连接通信。总线系统4除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图6中将各种总线都标为总线系统4。
本发明实施例中的存储器3用于存储各种类型的数据以支持电子设备的操作。这些数据的示例包括:用于在电子设备上操作的任何计算机程序。
可以理解,存储器3可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random AccessMemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,SynchronousDynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本发明实施例描述的存储器3旨在包括但不限于这些和任意其它适合类型的存储器。
本发明还提供了一种存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory ,ROM)、随机存取存储器(Random Access Memory ,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。图7为本发明实施例所提供的一种存储介质的结构示意图,该存储介质可以为非易失或非瞬时的存储芯片,具体包括译码驱动、存储矩阵、读写电路、地址线、数据线、片选线和读/写控制线。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (12)

1.一种数据传输系统,其特征在于,所述数据传输系统包括主机端、以及与所述主机端连接的现场可编程门阵列加速器;
所述主机端运行有开放式虚拟交换机和所述开放式虚拟交换机的守护进程;
所述现场可编程门阵列加速器的静态区包括硬件流表,所述硬件流表用于存储所述开放式虚拟交换机和/或所述守护进程下发的规则;
所述现场可编程门阵列加速器的动态区包括虚拟网络交换机内核,所述虚拟网络交换机内核用于从所述硬件流表中查询与数据包匹配的目标规则,并按照所述目标规则对所述数据包进行处理和转发;其中,所述虚拟网络交换机内核的硬件重构通过动态功能切换技术实现,所述虚拟网络交换机内核的控制面的规则由所述守护进程进行管理,所述虚拟网络交换机内核的数据面的处理逻辑通过目标语言编译得到,所述目标语言为面向数据包处理和流可编程语言;
对应地,所述虚拟网络交换机内核包括通过所述目标语言编译得到的查表引擎;
所述查表引擎用于根据所述数据包中的关键字查询对应的目标规则;所述查表引擎还用于按照所述目标规则对所述数据包执行重组操作,以便将重组后的数据包进行转发;其中,所述查表引擎包括与输入仲裁模块连接的解析模块、内容寻址存储器、先进先出存储器和重组模块;内容寻址存储器,用于查询所述硬件流表中与所述关键字匹配的目标规则;所述目标规则包括流表规则,通过简化的高级可扩展接口通道进行存储;
对应地,所述查表引擎还用于从所述数据包中提取四元组作为所述关键字;
其中,所述四元组包括网络类型、源互联网协议地址、目的互联网协议地址和源端口号;所述查表引擎进行关键字匹配时,对网络类型进行精确匹配,对源IP地址进行掩码匹配,对目的IP地址进行前缀匹配,对源端口号进行掩码匹配;
对应地,所述目标语言为P4语言,所述查表引擎通过对P4语言定义的数据平面处理逻辑和数据平面转发逻辑编译,具体包括:基于P4技术,配合前后端P4编译器,对P4语言定义的数据平面处理和转发逻辑进行编译并映射到硬件中以实现对数据包的解析、查表匹配和重组;并根据匹配规则完成对数据包的处理;
对应地,所述现场可编程门阵列加速器的动态区还包括计算加速内核,所述计算加速内核用于对所述虚拟网络交换机内核传输的数据包进行处理并将处理结果返回至所述虚拟网络交换机内核;
对应地,所述计算加速内核的硬件重构通过动态功能切换技术实现,所述计算加速内核的算法逻辑通过预设语言编译得到;
对应地,所述静态区还包括通过半虚拟化技术实现的数据通道,所述数据通道包括物理功能通道和/或虚拟功能通道;
所述物理功能通道用于实现所述现场可编程门阵列加速器与所述开放式虚拟交换机的数据交互,所述虚拟功能通道用于实现所述现场可编程门阵列加速器与所述主机端中虚拟机的数据交互;
对应地,所述目标规则包括数据包处理规则和/或数据包转发规则;所述数据包处理规则用于设置所述数据包的包头字段,所述数据包转发规则用于设置所述数据包的转发端口号;其中,在所述数据包匹配失败时,所述虚拟网络交换机内核在所述数据包的包头添加一个标识字段和转发端口字段,并将标识设置为特定值;
对应地,所述主机端包括用户空间和内核空间;所述用户空间中运行有所述守护进程和数据库,所述内核空间中运行有开放式虚拟交换机、本地流表和流表规则下发接口;
所述守护进程用于将所述数据库中的规则下发至所述本地流表和硬件流表;所述开放式虚拟交换机用于通过流表规则下发接口将本地流表中的规则下发至所述硬件流表;
对应地,所述虚拟网络交换机内核还用于,在所述硬件流表不存在所述与数据包匹配的所述目标规则时,将所述数据包上传至所述内核空间的开放式虚拟交换机;
所述开放式虚拟交换机还用于在所述本地流表中查询所述目标规则;
对应地,所述开放式虚拟交换机还用于,在所述本地流表不存在所述与数据包匹配的所述目标规则时,将所述数据包上传至所述用户空间的守护进程;
所述守护进程还用于在所述数据库中查询所述目标规则。
2.根据权利要求1所述数据传输系统,其特征在于,所述虚拟网络交换机内核包括管理引擎;
所述管理引擎用于对所述硬件流表中的规则执行管理操作;
其中,所述管理操作包括规则添加操作、规则修改操作、规则删除操作和规则老化操作中的任一项或任几项的组合。
3.一种数据传输方法,其特征在于,应用于权利要求1或2的数据传输系统的与主机端连接的现场可编程门阵列加速器,所述数据传输方法包括:
在静态区实现硬件流表;
通过动态功能切换技术实现虚拟网络交换机内核的硬件重构,并通过目标语言编译所述虚拟网络交换机内核的数据面的处理逻辑,以便在动态区实现所述虚拟网络交换机内核;其中,所述虚拟网络交换机内核的控制面的规则由开放式虚拟交换机的守护进程进行管理;所述目标语言为面向数据包处理和流可编程语言;
利用所述硬件流表存储所述开放式虚拟交换机和/或所述守护进程下发的规则;其中,所述开放式虚拟交换机和所述守护进程运行于所述主机端;
若接收到数据包,则利用所述虚拟网络交换机内核从所述硬件流表中查询与所述数据包匹配的目标规则,并按照所述目标规则对所述数据包进行处理和转发。
4.根据权利要求3所述数据传输方法,其特征在于,还包括:
若接收到所述守护进程下发的规则管理指令,则利用所述虚拟网络交换机内核中的管理引擎对所述硬件流表中的规则执行管理操作;其中,所述管理操作包括规则添加操作、规则修改操作、规则删除操作和规则老化操作中的任一项或任几项的组合。
5.根据权利要求3所述数据传输方法,其特征在于,利用所述虚拟网络交换机内核从所述硬件流表中查询与所述数据包匹配的目标规则,并按照所述目标规则对所述数据包进行处理和转发,包括:
利用所述虚拟网络交换机内核中的查表引擎查询所述数据包对应的目标规则并按照所述目标规则对所述数据包执行重组操作,以便将重组后的数据包进行转发。
6.根据权利要求3所述数据传输方法,其特征在于,还包括:
根据用户配置在所述现场可编程门阵列加速器的动态区实现计算加速内核;
相应的,按照所述目标规则对所述数据包进行处理和转发,包括:
若所述数据包为需要所述计算加速内核处理的数据包,则将所述数据包转发至所述计算加速内核;
利用所述计算加速内核对所述数据包进行处理,并将处理后的数据包返回至所述虚拟网络交换机内核,以便所述虚拟网络交换机内核按照所述目标规则对所述计算加速内核处理后的数据包进行转发。
7.根据权利要求3所述数据传输方法,其特征在于,按照所述目标规则对所述数据包进行处理和转发,包括:
若所述数据包为地址解析协议请求数据包,则按照所述目标规则将所述地址解析协议请求数据包转发至所述主机端或虚拟机;
相应的,还包括:
接收所述主机端或所述虚拟机返回的地址解析协议应答数据包,并利用所述虚拟网络交换机内核从所述硬件流表中查询与所述地址解析协议应答数据包匹配的新的目标规则,按照所述新的目标规则对所述地址解析协议应答数据包进行转发。
8.根据权利要求3所述数据传输方法,其特征在于,在利用所述虚拟网络交换机内核从所述硬件流表中查询与所述数据包匹配的目标规则之后,还包括:
若所述硬件流表中不存在与所述数据包匹配的所述目标规则,则将所述数据包上传至所述主机端,以便所述主机端从内核空间和/或用户空间中查询所述目标规则并按照所述目标规则对所述数据包进行处理;
接收所述主机端下发的所述目标规则和处理后的数据包;
转发所述主机端处理后的数据包;
将所述目标规则存储至所述硬件流表。
9.根据权利要求8所述数据传输方法,其特征在于,将所述数据包上传至所述主机端,包括:
为所述数据包的包头添加标识字段和转发端口字段,并将所述标识字段设置为目标字段值;
将添加所述标识字段和所述转发端口字段的数据包上传至所述主机端,以便所述主机端从内核空间和/或用户空间中查询所述目标规则并按照所述目标规则对所述数据包进行处理;其中,所述主机端对所述数据包进行的处理包括将所述目标规则对应的目标转发端口写入所述转发端口字段。
10.根据权利要求9所述数据传输方法,其特征在于,转发所述主机端处理后的数据包,包括:
根据所述转发端口字段对应的目标转发端口转发所述主机端处理后的数据包。
11.一种电子设备,其特征在于,包括如权利要求1或2所述的数据传输系统中的主机端和现场可编程门阵列加速器。
12.一种存储介质,其特征在于,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如权利要求3至10任一项所述数据传输方法的步骤。
CN202410160615.4A 2024-02-05 2024-02-05 一种数据传输系统、方法、电子设备及存储介质 Active CN117714398B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410160615.4A CN117714398B (zh) 2024-02-05 2024-02-05 一种数据传输系统、方法、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410160615.4A CN117714398B (zh) 2024-02-05 2024-02-05 一种数据传输系统、方法、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN117714398A CN117714398A (zh) 2024-03-15
CN117714398B true CN117714398B (zh) 2024-05-10

Family

ID=90161039

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410160615.4A Active CN117714398B (zh) 2024-02-05 2024-02-05 一种数据传输系统、方法、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117714398B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109068279A (zh) * 2018-09-26 2018-12-21 广东小天才科技有限公司 一种路线确定方法、装置、终端设备及存储介质
CN109558211A (zh) * 2018-11-27 2019-04-02 上海瓶钵信息科技有限公司 保护可信应用与普通应用的交互完整性和保密性的方法
CN110419200A (zh) * 2017-03-10 2019-11-05 微软技术许可有限责任公司 虚拟过滤平台中的分组处理器
CN111726305A (zh) * 2020-06-18 2020-09-29 广州市品高软件股份有限公司 一种面向虚拟机的多级流表管控方法及系统
US10862709B1 (en) * 2017-01-18 2020-12-08 Amazon Technologies, Inc. Conditional flow policy rules for packet flows in provider network environments
CN116599892A (zh) * 2023-07-17 2023-08-15 浪潮电子信息产业股份有限公司 一种服务器系统、路由方法、装置及电子设备和存储介质
CN116723162A (zh) * 2023-08-10 2023-09-08 浪潮电子信息产业股份有限公司 一种网络首包处理方法、系统、装置、介质及异构设备
CN117240790A (zh) * 2022-06-06 2023-12-15 华为技术有限公司 流表规则的管理方法、流量管理方法、系统及存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10862709B1 (en) * 2017-01-18 2020-12-08 Amazon Technologies, Inc. Conditional flow policy rules for packet flows in provider network environments
CN110419200A (zh) * 2017-03-10 2019-11-05 微软技术许可有限责任公司 虚拟过滤平台中的分组处理器
CN109068279A (zh) * 2018-09-26 2018-12-21 广东小天才科技有限公司 一种路线确定方法、装置、终端设备及存储介质
CN109558211A (zh) * 2018-11-27 2019-04-02 上海瓶钵信息科技有限公司 保护可信应用与普通应用的交互完整性和保密性的方法
CN111726305A (zh) * 2020-06-18 2020-09-29 广州市品高软件股份有限公司 一种面向虚拟机的多级流表管控方法及系统
CN117240790A (zh) * 2022-06-06 2023-12-15 华为技术有限公司 流表规则的管理方法、流量管理方法、系统及存储介质
CN116599892A (zh) * 2023-07-17 2023-08-15 浪潮电子信息产业股份有限公司 一种服务器系统、路由方法、装置及电子设备和存储介质
CN116723162A (zh) * 2023-08-10 2023-09-08 浪潮电子信息产业股份有限公司 一种网络首包处理方法、系统、装置、介质及异构设备

Also Published As

Publication number Publication date
CN117714398A (zh) 2024-03-15

Similar Documents

Publication Publication Date Title
US20200228433A1 (en) Computer-readable recording medium including monitoring program, programmable device, and monitoring method
CN111459418B (zh) 一种基于rdma的键值存储系统传输方法
CN107113241B (zh) 路由确定方法、网络配置方法以及相关装置
WO2019185051A1 (zh) 一种基于集成流表转发报文的方法及装置
CN112333169B (zh) 一种报文处理方法、装置、电子设备及计算机可读介质
US10728335B2 (en) Data processing method, storage system, and switching device
JP2004172917A (ja) パケット検索装置及びそれに用いるパケット処理検索方法並びにそのプログラム
US20200364080A1 (en) Interrupt processing method and apparatus and server
CN113746749A (zh) 网络连接设备
US11398981B2 (en) Path creation method and device for network on chip and electronic apparatus
CN109088957B (zh) Nat规则管理的方法、装置和设备
CN109525518B (zh) 一种基于fpga的ip报文网络地址转换方法及装置
CN113472624A (zh) 一种基于vDPA实现虚拟网络数据包转发的方法及应用
US20120140640A1 (en) Apparatus and method for dynamically processing packets having various characteristics
CN116599892B (zh) 一种服务器系统、路由方法、装置及电子设备和存储介质
CN108365976B (zh) 网络服务的优化方法及装置
JP5961745B2 (ja) 通信装置またはパケット転送方法
CN113411380A (zh) 基于fpga可编程会话表的处理方法、逻辑电路和设备
CN117714398B (zh) 一种数据传输系统、方法、电子设备及存储介质
CN114327262B (zh) 一种用于智能网卡的维护端口映射的方法和装置
CN107517161B (zh) 一种网络处理器查表方法、网络处理器和查表系统
CN115499889A (zh) 基于vpp的upf转发面实现方法、装置、系统及相关设备
CN115941630A (zh) 基于dpu的跨网卡转发方法、系统、介质、cpu处理器及智能网卡
CN111125493A (zh) 一种基于协议无感知转发的高速数据查询系统及方法
US11855889B2 (en) Information processing device, information processing method, and computer-readable medium of providing dummy response when memory search is unnecessary

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