CN116599892A - 一种服务器系统、路由方法、装置及电子设备和存储介质 - Google Patents

一种服务器系统、路由方法、装置及电子设备和存储介质 Download PDF

Info

Publication number
CN116599892A
CN116599892A CN202310868741.0A CN202310868741A CN116599892A CN 116599892 A CN116599892 A CN 116599892A CN 202310868741 A CN202310868741 A CN 202310868741A CN 116599892 A CN116599892 A CN 116599892A
Authority
CN
China
Prior art keywords
rule
data packet
module
matching
target
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.)
Granted
Application number
CN202310868741.0A
Other languages
English (en)
Other versions
CN116599892B (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 CN202310868741.0A priority Critical patent/CN116599892B/zh
Publication of CN116599892A publication Critical patent/CN116599892A/zh
Application granted granted Critical
Publication of CN116599892B publication Critical patent/CN116599892B/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/02Topology update or discovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9017Indexing; Data structures therefor; Storage structures using directory or table look-up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • 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/76Routing in software-defined topologies, e.g. routing between virtual machines
    • 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/45579I/O management, e.g. providing access to device drivers or storage
    • 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/45583Memory management, e.g. access or allocation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本申请公开了一种服务器系统、路由方法、装置及电子设备和存储介质,涉及计算机技术领域,该服务器系统包括服务器主机和与服务器主机连接的现场可编程门阵列;服务器主机包括多个虚拟机;现场可编程门阵列包括板卡管理模块、内存、数据通道、第一路由模块、核函数模块,内存连接数据通道和第一路由模块,数据通道通过物理功能通道连接服务器主机、通过多个虚拟功能通道连接多个虚拟机,数据通道连接第一路由模块,第一路由模块连接核函数模块;内存用于存储服务器主机下发的规则,第一路由模块用于根据内存存储的规则的动作对数据包进行处理和转发,核函数模块用于实现计算函数。本申请实现了灵活修改流表规则和数据处理逻辑。

Description

一种服务器系统、路由方法、装置及电子设备和存储介质
技术领域
本申请涉及计算机技术领域,更具体地说,涉及一种服务器系统、路由方法、装置及电子设备和存储介质。
背景技术
OVS(Open Virtual Switch 开放的虚拟交换机)是SDN领域的重要组成部分,具备网络功能丰富、灵活度高、可移植性强等特性。OVS具备快速路径和慢速路径,分别位于内核空间和用户空间。当数据流到达OVS时,首先在内核空间进行查表匹配,如果匹配成功,则根据匹配规则的动作进行处理和转发;如果匹配失败,则上传到用户空间进行查表匹配,并根据匹配规则的动作进行处理和转发,同时将匹配规则下发到内核空间的流表中。
在相关技术中,OVS卸载方案的主要思想是将快速路径卸载到智能网卡中,当数据流到达智能网卡时,首先查询智能网卡中的流表规则,如果存在匹配的规则,则根据匹配规则的动作进行处理和转发;如果匹配失败,则上传到内核空间和用户空间进行查表匹配,并根据匹配规则进行处理和转发,同时将匹配规则下发到智能网卡中。这样同一数据流的后续数据包可以直接在智能网卡中完成处理和转发,极大提升数据中心的网络带宽。
在智能网卡的框架下,需要根据应用场景确定流表的结构,并据此实现智能网卡的硬件逻辑。在智能网卡的硬件逻辑确定后,无法支持新的匹配字段,只能在现有协议上进行开发。此外,对于加解密等特殊的计算任务,智能网卡一般也不支持,无法根据上层应用的需求灵活的选择是否进行加解密等特殊处理。
因此,如何实现灵活修改流表的结构,同时根据上层应用需求灵活定义数据流处理流程是本领域技术人员需要解决的技术问题。
发明内容
本申请的目的在于提供一种服务器系统、路由方法、装置及电子设备和存储介质,实现了灵活修改流表规则,同时根据上层应用需求灵活定义数据流处理流程。
为实现上述目的,本申请提供了一种服务器系统,包括服务器主机和与所述服务器主机连接的现场可编程门阵列;
所述服务器主机包括多个虚拟机;
所述现场可编程门阵列包括板卡管理模块、内存、数据通道、第一路由模块、核函数模块,所述内存连接所述数据通道和所述第一路由模块,所述数据通道通过物理功能通道连接所述服务器主机、通过多个虚拟功能通道连接多个所述虚拟机,所述数据通道连接所述第一路由模块,所述第一路由模块连接所述核函数模块,所述第一路由模块通过物理接口连接其他服务器主机;
所述内存用于存储所述服务器主机下发的规则,所述第一路由模块用于根据所述内存存储的规则的动作对数据包进行处理和转发,所述核函数模块用于实现计算函数。
其中,所述服务器主机包括用户空间和内核空间,所述用户空间包括开放虚拟交换机的守护进程、数据库和多个虚拟机,所述守护进程与所述数据库连接,所述内核空间包括第二路由模块、流表规则下发通道和驱动,所述第二路由模块与所述守护进程连接,所述第二路由模块通过所述流表规则下发通道连接所述驱动;
所述数据通道通过所述物理功能通道连接所述驱动;
所述守护进程用于根据匹配规则的动作对数据包进行处理和转发、向所述内核空间下发规则,所述第二路由模块用于根据所述守护进程下发的规则的动作对数据包进行处理和转发、通过所述流表规则下发通道向所述驱动下发规则,所述驱动用于通过所述数据通道将所述守护进程或所述第二路由模块下发的规则下发至所述内存。
其中,所述第一路由模块包括管理引擎、查表引擎和数据缓存区;
所述管理引擎用于对所述内存中的流表进行管理操作,所述管理操作包括查找操作、添加操作、修改操作、删除操作和老化操作中任一项或任几项的组合,所述老化操作为每隔预设时间减少规则的老化时间,当所述老化时间减少到第一预设值时删除对应的规则;
所述查表引擎用于进行查表操作;
所述数据缓存区用于缓存待查表的数据包。
其中,所述第一路由模块还包括输入仲裁模块、解析模块、逆解析模块和输出仲裁模块;
所述输入仲裁模块用于根据数据包到达的时间确定有效数据包;
所述解析模块用于提取所述数据包中的关键字,并将所述数据包存储至所述数据缓存区、将对应的关键字存储到所述管理引擎中的查找指令缓存区;
所述逆解析模块用于从所述数据缓存区取出所述有效数据包,根据匹配规则的动作对所述有效数据包进行处理,并将处理完成的有效数据包和输出端口发送至所述输出仲裁模块;
所述输出仲裁模块用于将所述处理完成的有效数据包从所述输出端口转发。
其中,所述查表引擎包括哈希计算模块和地址处理模块;
所述哈希计算模块用于根据所述关键字计算哈希值,并根据所述哈希值在流表和动作表中确定匹配的规则和动作;
所述地址处理模块用于遍历流表和状态表,对流表中的规则进行老化处理。
其中,所述流表包括多条规则,所述动作表包括多个动作,所述状态表包括多个状态项,所述流表中的规则与所述动作表中的动作一一对应,所述流表中的规则与所述状态表中的状态项一一对应,每条所述规则包括优先级、匹配字段和计数器,所述计数器用于描述所述规则匹配成功的次数,每个所述动作包括动作类型和指令,每个所述状态项包括锁标志、有效标志和计时器,所述锁标志用于描述对应地址的规则是否正在被处理,所述有效标志用于描述对应地址的规则是否有效,所述计时器用于描述对应地址的规则的老化时间。
其中,所述数据缓存区包括先进先出存储器。
其中,所述计算函数包括数据加密函数、数据解密函数、网络加速函数中任一项或任几项的组合。
其中,所述内存包括高带宽存储器。
为实现上述目的,本申请提供了一种路由方法,应用于如上述服务器系统,所述方法包括:
获取数据包,判断现场可编程门阵列中是否存在所述数据包匹配的规则;
若是,则利用所述现场可编程门阵列中的第一路由模块基于在所述现场可编程门阵列中匹配规则的动作对所述数据包进行处理和转发;
若否,则将所述数据包上传至服务器主机的内核空间中的第二路由模块,判断所述第二路由模块对应的流表中是否存在所述数据包匹配的规则;若是,则基于所述第二路由模块对应的流表中匹配规则的动作对所述数据包进行处理和转发;若否,则将所述数据包上传至所述服务器主机的用户空间中的守护进程,利用所述守护进程在数据库中查询所述数据包匹配的规则,基于查询到的所述数据包匹配的规则的动作对所述数据包进行处理和转发。
其中,所述利用所述现场可编程门阵列中的第一路由模块基于在所述现场可编程门阵列中匹配规则的动作对所述数据包进行处理和转发,包括:
若所述数据包在所述现场可编程门阵列匹配到的规则为预设规则,则将所述数据包发送至所述现场可编程门阵列中的核函数模块,在所述核函数模块中利用对应的计算函数进行计算处理,并将计算处理完成的数据包重新发送至所述第一路由模块;
相应的,所述将计算处理完成的数据包重新发送至所述第一路由模块之后,还包括:
判断所述现场可编程门阵列中是否存在所述计算处理完成的数据包匹配的规则。
其中,所述基于所述第二路由模块中匹配规则的动作对所述数据包进行处理和转发之后,还包括:
将在所述第二路由模块中匹配到的规则和动作下发至所述现场可编程门阵列的内存中。
其中,所述基于查询到的所述数据包匹配的规则的动作对所述数据包进行处理和转发之后,还包括:
将查询到的所述数据包匹配的规则和动作下发至所述第二路由模块对应的流表、所述现场可编程门阵列的内存中。
其中,所述判断现场可编程门阵列中是否存在所述数据包匹配的规则,包括:
提取所述数据包的关键字,根据预设掩码对所述关键字进行掩码处理得到掩码关键字,对所述掩码关键字进行哈希计算得到哈希值;
根据所述哈希值在所述现场可编程门阵列的内存中查找对应的规则,将所述掩码关键字与查找到的规则的匹配字段进行匹配,判断是否存在匹配的规则。
其中,对所述掩码关键字进行哈希计算得到哈希值,包括:
采用循环冗余算法对所述掩码关键字进行哈希计算得到哈希值。
其中,将所述掩码关键字与查找到的规则的匹配字段进行匹配,判断是否存在匹配的规则,包括:
将所述掩码关键字与查找到的有效规则的匹配字段进行匹配,判断是否存在匹配的有效规则。
其中,同一哈希值对应多个存储空间,用于存储同一哈希值对应的多条规则。
其中,所述数据包包括网际互连协议数据包、地址解析数据包和需要经过核函数处理的数据包中任一项或任几项的组合。
其中,还包括:
获取目标关键字、目标掩码、目标优先级和目标动作,根据所述目标掩码对所述目标关键字进行掩码处理得到掩码目标关键字,对所述掩码目标关键字进行哈希计算得到目标哈希值;
根据所述目标哈希值在所述第一路由模块中的流表中查找对应的规则,对查找到的规则进行锁定;
将所述掩码目标关键字与查找到的有效规则的匹配字段进行匹配,判断是否存在匹配的有效规则;
若是,则根据所述目标优先级和目标动作修改匹配到的有效规则,并更新匹配到的有效规则的状态项,并对所述查找到的规则进行解锁;
若否,则判断是否存在规则无效的存储区域;若是,则将所述掩码目标关键字、所述目标优先级、所述目标动作存储至所述规则无效的存储区域,更新状态项,并对所述查找到的规则进行解锁;若否,则在所述查找到的规则中选择老化时间最小的第一目标规则,根据所述掩码目标关键字、所述目标优先级、所述目标动作修改所述第一目标规则,更新所述第一目标规则的状态项,并对所述查找到的规则进行解锁。
其中,还包括:
获取目标关键字、目标掩码,根据所述目标掩码对所述目标关键字进行掩码处理得到掩码目标关键字,对所述掩码目标关键字进行哈希计算得到目标哈希值;
根据所述目标哈希值在所述第一路由模块中的流表中查找对应的规则;
将所述掩码目标关键字与查找到的有效规则的匹配字段进行匹配,判断是否存在匹配的有效规则;
若存在,则将匹配到的有效规则作为第二目标规则,判断所述第二目标规则是否被锁定;
若未被锁定,则将所述第二目标规则的有效标志设置为无效,并删除所述第二目标规则。
其中,还包括:
每隔预设时间遍历第一路由模块中的流表,将所述流表中每条规则的老化时间减少第二预设值;
当所述老化时间减少到第一预设值时,判断对应的规则是否被锁定,若未被锁定,则删除所述规则。
为实现上述目的,本申请提供了一种路由装置,应用于如上述服务器系统,所述装置包括:
第一判断单元,用于获取数据包,判断现场可编程门阵列中是否存在所述数据包匹配的规则;若是,则启动第一转发单元的工作流程;若否,则启动第二判断单元的工作流程;
所述第一转发单元,用于利用所述现场可编程门阵列中的第一路由模块基于在所述现场可编程门阵列中匹配规则的动作对所述数据包进行处理和转发;
所述第二判断单元,用于将所述数据包上传至服务器主机的内核空间中的第二路由模块,判断所述第二路由模块对应的流表中是否存在所述数据包匹配的规则;若是,则启动第二转发单元的工作流程;若否,则启动第三转发单元的工作流程;
所述第二转发单元,用于基于所述第二路由模块对应的流表中匹配规则的动作对所述数据包进行处理和转发;
所述第三转发单元,用于将所述数据包上传至所述服务器主机的用户空间中的守护进程,利用所述守护进程在数据库中查询所述数据包匹配的规则,基于查询到的所述数据包匹配的规则的动作对所述数据包进行处理和转发。
为实现上述目的,本申请提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述路由方法的步骤。
为实现上述目的,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述路由方法的步骤。
通过以上方案可知,本申请提供的一种服务器主机系统,包括服务器主机和与所述服务器主机连接的现场可编程门阵列;所述服务器主机包括多个虚拟机;所述现场可编程门阵列包括板卡管理模块、内存、数据通道、第一路由模块、核函数模块,所述内存连接所述数据通道和所述第一路由模块,所述数据通道通过物理功能通道连接所述服务器主机、通过多个虚拟功能通道连接多个所述虚拟机,所述数据通道连接所述第一路由模块,所述第一路由模块连接所述核函数模块,所述第一路由模块通过物理接口连接其他服务器主机;所述内存用于存储所述服务器主机下发的规则,所述第一路由模块用于根据所述内存存储的规则的动作对数据包进行处理和转发,所述核函数模块用于实现计算函数。
本申请的有益效果在于:本申请基于FPGA(Field Programmable Gate Array,现场可编程门阵列)同时实现了网络路由和计算加速,通过在FPGA中同时实现网络路由和计算加速的功能,可大幅度的释放CPU资源,实现流表的动态重配置和计算加速功能的路由。在本申请中,根据不同应用场景匹配字段的不同,设计适合该场景的流表结构,生成对应的核函数模块。当应用场景的情况发生变化时,可以动态更新FPGA中的流表,实现OVS功能的灵活切换。在FPGA中除了实现OVS的处理和转发功能,还实现特殊功能的计算函数。当上层应用需要进行特殊的函数计算时加解密时,可以配置流表规则,使数据流在处理和转发之前,先路由到核函数模块进行数据的相应的计算,然后再进行处理和转发。由此可见,本申请实现了灵活修改流表规则和数据处理逻辑。本申请还公开了一种路由方法、装置及一种电子设备和一种计算机可读存储介质,同样能实现上述技术效果。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1为根据一示例性实施例示出的一种服务器系统的结构图;
图2为根据一示例性实施例示出的一种vswitch的内部结构框图;
图3为根据一示例性实施例示出的一种四块存储区域解决哈希冲突的示意图;
图4为根据一示例性实施例示出的一种状态表的示意图;
图5为根据一示例性实施例示出的一种流表的示意图;
图6为根据一示例性实施例示出的一种动作表的示意图;
图7为根据一示例性实施例示出的一种路由方法的流程图;
图8为根据一示例性实施例示出的一种数据包的查找匹配流程图;
图9为根据一示例性实施例示出的一种FPGA中规则修改或添加的流程图;
图10为根据一示例性实施例示出的另一种FPGA中规则修改或添加的流程图;
图11为根据一示例性实施例示出的一种FPGA中规则删除的流程图;
图12为根据一示例性实施例示出的另一种FPGA中规则删除的流程图;
图13为根据一示例性实施例示出的一种FPGA中规则老化处理的流程图;
图14为根据一示例性实施例示出的另一种FPGA中规则老化处理的流程图;
图15为根据一示例性实施例示出的一种路由装置的结构图;
图16为根据一示例性实施例示出的一种电子设备的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。另外,在本申请实施例中,“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例公开了一种服务器系统,实现了灵活修改流表规则,同时根据上层应用需求灵活定义数据流处理流程。
参见图1,根据一示例性实施例示出的一种服务器系统的结构图,如图1所示,包括服务器主机和与所述服务器主机连接的现场可编程门阵列;
所述服务器主机包括多个虚拟机;
所述现场可编程门阵列包括板卡管理模块、内存、数据通道、第一路由模块、核函数模块,所述内存连接所述数据通道和所述第一路由模块,所述数据通道通过物理功能通道连接所述服务器主机、通过多个虚拟功能通道连接多个所述虚拟机,所述数据通道连接所述第一路由模块,所述第一路由模块连接所述核函数模块,所述第一路由模块通过物理接口连接其他服务器主机;
所述内存用于存储所述服务器主机下发的规则,所述第一路由模块用于根据所述内存存储的规则的动作对数据包进行处理和转发,所述核函数模块用于实现计算函数。
本实施例可以应用于数据中心、云服务等场景,FPGA加速器通过PCIe(PeripheralComponent Interconnect Express,一种高速串行计算机扩展总线标准)接口插入服务器主机中,FPGA具备计算效率高、功耗低等特性,可以完成图像处理、数据加解密、压缩解压缩等计算密集型任务,结合动态区+静态区的硬件可重配置结构,可实现高性能、高带宽、低延迟、低功耗的计算加速,以及动态区逻辑的高速重构。
作为一种可行的实施方式,所述服务器主机包括用户空间和内核空间,所述用户空间包括开放虚拟交换机的守护进程、数据库和多个虚拟机,所述守护进程与所述数据库连接,所述内核空间包括第二路由模块、流表规则下发通道和驱动,所述第二路由模块与所述守护进程连接,所述第二路由模块通过所述流表规则下发通道连接所述驱动;所述数据通道通过所述物理功能通道连接所述驱动;所述守护进程用于根据匹配规则的动作对数据包进行处理和转发、向所述内核空间下发规则,所述第二路由模块用于根据所述守护进程下发的规则的动作对数据包进行处理和转发、通过所述流表规则下发通道向所述驱动下发规则,所述驱动用于通过所述数据通道将所述守护进程或所述第二路由模块下发的规则下发至所述内存。
在具体实施中,服务器主机运行Linux系统,分为内核空间和用户空间。在用户空间运行OVS的守护进程ovs-vswitchd、数据库ovsdb和QEMU(Quick Emulator,一个开源的模拟器和虚拟机),QEMU包括多个虚拟机(VM,Virtual Machine ),内核空间运行OVS的快速路径openvswitch(也即第二路由模块)、流表规则下发通道tc-flower、相应的流表和驱动。FPGA加速器的硬件逻辑分为静态区和动态区,静态区主要实现板卡管理、virtio(半虚拟化hypervisor中位于设备之上的抽象层)数据通道、内存等共用设施,此处的内存可以包括高带宽存储器(High Bandwidth Memory,HBM),用于存储流表规则。virtio数据通道通过DMA(Direct Memory Access,直接存储器访问)引擎和AXI(Advanced eXtensible Interface)总线与驱动实现数据传输。动态区实现卸载到FPGA硬件的OVS快速路径vswitch(也即第一路由模块)和核函数模块kernel。virtio通过PF(物理功能)通道与tc-flower(也即流表规则下发通道)的驱动进行数据交互,实现匹配失败的数据包的上传和规则的下发;通过VF(虚拟功能)通道与QEMU中的各个虚拟机(VM)实现数据流的传输,通过物理接口(Ether)与外部的服务器进行数据流的传输。
也即,所述第一路由模块和所述核函数模块位于所述现场可编程门阵列的动态区,基于现场可编程门阵列的硬件可重构技术,可以根据实际需求动态的进行更新。
在FPGA加速器上电启动后,FPGA的流表中不存在任何规则,当有新的数据包达到vswitch后,数据包匹配失败,vswitch默认通过virtio的PF通道将数据包通过tc-flower接口传递给openvswitch。如果数据包是首包,openvswitch也不存在匹配的规则,则openvswitch继续上传给ovs-vswitchd,ovs-vswitchd查询数据库中的规则,根据匹配规则的动作对数据包进行处理和转发,同时将匹配规则下发给内核空间和FPGA硬件上的流表。如果数据包不是首包,openvswitch的流表存在匹配的规则,则由openvswitch进行数据包的处理和转发,同时将规则下发给FPGA硬件上的流表。
经过vswitch处理和转发的设备包括本地服务器主机、本地服务器主机上的虚拟机(本地虚拟机)、FPGA加速器中的kernel和外部服务器上的虚拟机(外部虚拟机),对应的输入和输出端口为virtio的PF通道、virtio的VF通道、kernel的AXIS(AdvancedeXtensible Interface Stream)通道和物理网口Ether。数据流路径可以包括:本地虚拟机之间ARP(Address Resolution Protocol,地址解析协议)数据包和IP(InternetProtocol,网际互连协议)数据包的路由处理和转发、本地虚拟机与外部虚拟机之间IP数据包的路由处理和转发、各虚拟机之间的数据通信,各虚拟机之间进行数据通信可以选择是否经过计算加速kernel进行处理。
vswitch的匹配字段根据应用场景的不同进行不同的选择,分别设计生成对应的vswitch kernel。计算加速kernel视为应用层的应用,其数据流的处理和转发基于TCP(Transmission Control Protoco,传输控制协议)层的源端口号进行,如果有指定的源IP地址和源端口号的数据流到达vswitch,则根据匹配规则转发给对应的计算加速kernel进行处理,并修改数据流的源端口号。这样经过计算加速kernel处理后的数据流会匹配另一条规则,按照规则进行处理后从指定的端口转发。kernel中的计算函数可以包括数据加密函数、数据解密函数、网络加速函数等,可以根据实际应用场景添加不同的计算函数,在此不进行具体限定。在本实施例中,vswitch kernel和计算加速kernel定义在FPGA加速器的动态区,基于硬件可重配置技术用户可根据自己的需求进行动态的变换,以适应不同网络处理逻辑和计算加速功能的需求。本实施例提出了一种流表配置管理和查表匹配的方法,在对传统IP数据包路由的基础上,补充实现了对ARP数据包和计算加速kernel数据包的路由。
作为一种可行的实施方式,所述第一路由模块包括管理引擎、查表引擎和数据缓存区;所述管理引擎用于对所述内存中的流表进行管理操作,所述管理操作包括查找操作、添加操作、修改操作、删除操作和老化操作中任一项或任几项的组合,所述老化操作为每隔预设时间减少规则的老化时间,当所述老化时间减少到第一预设值时删除对应的规则;所述查表引擎用于进行查表操作;所述数据缓存区用于缓存待查表的数据包。
作为一种可行的实施方式,所述第一路由模块还包括输入仲裁模块、解析模块、逆解析模块和输出仲裁模块;所述输入仲裁模块用于根据数据包到达的时间确定有效数据包;所述解析模块用于提取所述数据包中的关键字,并将所述数据包存储至所述数据缓存区,将对应的关键字存储到所述管理引擎中的查找指令缓存区;所述逆解析模块用于从所述数据缓存区取出所述有效数据包,根据匹配规则的动作对所述有效数据包进行处理,并将处理完成的有效数据包和输出端口发送至所述输出仲裁模块;所述输出仲裁模块用于将所述处理完成的有效数据包从所述输出端口转发。
vswitch的内部结构框图如图2所示,主要由管理引擎、输入仲裁模块、解析模块、查表引擎、逆解析模块、输出仲裁模块、数据缓存区构成。管理引擎负责所有操作的管理和调度,输入、输出仲裁模块负责输入、输出通道的选择,解析模块负责对数据包进行解析获得关键字(key),逆解析模块负责根据匹配规则的动作重组数据包,查表引擎负责流表规则的匹配,数据缓存区用于缓存原始数据包。
vswitch对流表的操作包括查找、添加、修改、删除和老化。查找操作是根据解析模块提供的关键字从流表中查找到匹配的规则,并根据匹配规则的动作对数据包进行处理和转发。添加、修改和删除操作是根据驱动下发的匹配项从流表中查找匹配的规则,进行流表规则的添加、修改和删除处理。老化操作由管理引擎间隔一段时间自动生成,用于减小流表中规则的老化时间,当规则的老化时间减小到第一预设值后,删除相应的规则。
除老化操作外,其它每种操作都具有各自的指令缓存。查找指令缓存存储解析模块解析后的关键字(key),添加指令缓存存储驱动下发的优先级(prioprity)、匹配项(match)、掩码(mask)和动作(action),删除指令缓存存储驱动下发的匹配项(match)和掩码(mask)。管理引擎具有一个计时模块,用于提供老化操作的参考时间。状态寄存器存储查表处理和转发过程中的一些状态信息,如匹配失败的数据包数量、指令缓存中剩余的指令数量等。
作为一种可行的实施方式,所述查表引擎包括哈希计算模块和地址处理模块;所述哈希计算模块用于根据所述关键字计算哈希值,并根据所述哈希值在流表和动作表中确定匹配的规则和动作;所述地址处理模块用于遍历流表和状态表,对流表中的规则进行老化处理。
其中,所述流表包括多条规则,所述动作表包括多个动作,所述状态表包括多个状态项,所述流表中的规则与所述动作表中的动作一一对应,所述流表中的规则与所述状态表中的状态项一一对应,每条所述规则包括优先级、匹配字段和计数器,所述计数器用于描述所述规则匹配成功的次数,每个所述动作包括动作类型和指令,每个所述状态项包括锁标志、有效标志和计时器,所述锁标志用于描述对应地址的规则是否正在被处理,所述有效标志用于描述对应地址的规则是否有效,所述计时器用于描述对应地址的规则的老化时间。
查表引擎是虚拟交换机的关键引擎,负责所有操作的查表和匹配。查表引擎包含哈希计算模块、地址处理模块、流表、状态表和动作表。哈希计算模块根据关键字计算哈希值,哈希算法可以采用CRC(循环冗余校验,Cyclic Redundancy Check)算法。查找、添加、删除操作都有各自的哈希计算模块,三种操作的哈希计算并行进行,根据计算的哈希值从流表和动作表的相应地址取出规则进行匹配并执行相应匹配规则的动作。为了解决哈希冲突,同一哈希值对应多个存储空间,用于存储同一哈希值对应的多条规则。例如,每个哈希值可以分配4块存储空间,存储同一哈希值的不同规则,如图3所示,内存中包含4个流表:流表1、流表2、流表3和流表4,哈希值0x0000对应各流表中的规则1,哈希值0x0001对应各流表中的规则2,哈希值0x0002对应各流表中的规则3,依次类推。老化操作不需要哈希计算,取而代之的是地址处理模块,遍历整个状态表和流表,对流表规则进行老化处理。
在进行查表操作时,需要掌握哪些内存空间存储着有效的规则,以及规则的状态,使用状态表对流表规则进行管理。每个哈希值对应的4条规则使用一条状态项(status)表示。每条status由锁标志(lock)、有效标志(valid)和计时器(timer)组成,状态表格式如图4所示,0x0000的位置存储哈希值1对应的规则的状态项,0x0008的位置存储哈希值2对应的规则的状态项,0x0010的位置存储哈希值3对应的规则的状态项,以此类推,0x0018的位置存储后续规则的状态项,各规则的状态项包括锁标志、有效标志和计时器,不同流表中的4条规则对应4个计数器。流表可以被查找、添加、删除、老化操作处理,为了保证同一时刻只有一种操作对同一规则进行处理,使用lock字段对正在被处理的规则上锁。由于查找、删除、老化操作之间回写的字段不同,所以不存在冲突。lock字段占据4位,最低位为1时表示规则正在被添加操作处理,其它操作不能对该规则进行处理,反之则没有被处理。valid字段占据4bit,分别表示同一哈希值的4块存储空间是否存储着有效的规则,为1时表示规则有效,反之无效。timer字段占据14bit,共4个,分别表示4块存储空间中规则的老化时间。
流表中存储着诸多的规则(rule),每条rule由优先级(priority)、匹配字段(match)和计数器(counter)组成,流表格式如图5所示,0x0000的位置存储规则1,0x0010的位置存储规则2,0x0020的位置存储规则3,以此类推,0x0030的位置存储后续规则,每条规则包括优先级、匹配字段和计数器,匹配字段包括源IP地址、目的IP地址、协议类型、源端口号和目的端口号。priority字段为规则的优先级,match字段为进行流表匹配时的匹配字段,counter字段记录每条rule匹配成功的次数。match字段根据应用场景的不同而变化,在本实施例中,为了同时实现对传统IP数据包、ARP数据包和计算加速kernel数据包的处理和转发,构造的规则以五元组为匹配字段,包括32bit的源IP地址(ip_src)、32bit的目的IP地址(ip_dst)、16bit的协议类型(proto)、16bit的源端口号(tp_src)和16bit的目的端口号(tp_dst)组成,共占据112bit,其中协议类型包括ARP协议和IP协议。规则的匹配支持有限数量的掩码(mask)匹配,在匹配时使用不同的mask同时对key进行掩码处理得到有效的关键字(masked_key),再根据masked_key进行查找匹配。如果有多条规则同时匹配成功,则由priority字段决定,priority数值最小的规则生效。
动作表存储执行的动作(action),每条action由类型(type)和指令(instruction)构成,动作表格式如图6所示,0x0000的位置存储动作1,0x0008的位置存储动作2,0x0010的位置存储动作3,以此类推,0x0018的位置存储后续动作,每各动作包括类型和指令,指令包括输出端口和参数。根据应用场景的不同action随之发生变化,此处以支持ARP和IP数据包的处理和转发和计算加速kernel路由为例进行说明。type字段决定数据包执行哪种类型的动作,占据4bit,由低到高每一位分别对应的动作为修改源端口号、修改目的MAC地址、从指定端口转发、丢弃。如果同时进行多个动作,如修改目的MAC地址后处理和转发,则type为4b’0110。instruction字段为动作的参数,包括12bit的输出端口(port)和48bit的参数(parameter)。
数据缓存区包括先进先出(FIFO)存储器,用于存储待查表的数据包。输入仲裁模块根据数据包到来的时间决定哪个端口输入的数据包有效。解析模块负责从数据包中提取关键字存入查找指令缓存中,并将原始数据包存入数据缓存区中。逆解析模块负责从数据缓存区中取出数据包,根据匹配规则的动作对数据包进行处理,处理完成后的数据包连同输出端口一起交给输出仲裁模块。输出仲裁模块将数据包从指定的端口转发。
本实施例基于FPGA加速器动态区、静态区的硬件可重配置的架构,提出了同时具备网络路由和计算加速功能的FPGA加速器方案。通过在动态区中同时实现网络路由和计算加速的功能,可大幅度的释放CPU资源,实现vswitch kernel和计算加速kernel的动态重配置,以及ARP数据包和计算加速kernel数据包的路由。在本实施例中,根据不同应用场景匹配字段的不同,设计适合该场景的流表结构,生成对应的vswitch kernel。在实际应用中,当应用场景的情况发生变化时,可通过动态可重配置技术,快速更换到适合的vswitchkernel,实现OVS功能的灵活切换。在动态区中除了实现OVS的处理和转发功能,还实现数据加解密、网络加速、压缩解压缩等特殊功能的kernel。当上层应用需要经过计算加速kernel进行处理时,可以配置OVS的流表规则,使数据流在处理和转发之前,先路由到计算加速kernel进行数据的特殊处理,然后再进行处理和转发。
本申请实施例公开了一种路由方法,具体的:
参见图7,根据一示例性实施例示出的一种路由方法的流程图,如图7所示,包括:
S101:获取数据包,判断现场可编程门阵列中是否存在所述数据包匹配的规则;若是,则进入S102;若否,则进入S103;
本实施例的执行主体为上述服务器主机系统,在具体实施中,获取数据包,此处的数据包可以包括网际互连协议(IP,Internet Protocol)数据包、地址解析(ARP,AddressResolution Protocol)数据包和需要经过核函数处理的数据包中任一项或任几项的组合,判断服务器主机系统中的FPGA中是否存在数据包匹配的规则;若是,则进入S102;若否,则进入S103。
本实施例对于地址解析数据包基于流表规则进行处理和转发,地址解析数据包不再需要进行二层广播,优化了处理和转发流程,降低网络风暴的风险。以常用的五元组为例进行说明,五元组由IP源地址、IP目的地址、协议类型、源端口号、目的端口号构成,其中对协议类型进行扩展,添加类型号代表ARP数据流。扩展后的vswitch支持对ARP数据包的处理和转发,不再需要对ARP数据流进行广播处理,如果是请求本地虚拟机MAC地址的ARP数据包,直接转发给对应的本地虚拟机,由本地虚拟机产生ARP应答包;如果是请求网桥MAC地址的ARP数据包,则转发给内核空间的openvswitch,由openvswitch产生ARP应答包。
作为一种可行的实施方式,所述判断现场可编程门阵列中是否存在所述数据包匹配的规则,包括:提取所述数据包的关键字,根据预设掩码对所述关键字进行掩码处理得到掩码关键字,对所述掩码关键字进行哈希计算得到哈希值;根据所述哈希值在所述现场可编程门阵列的内存中查找对应的规则,将所述掩码关键字与查找到的规则的匹配字段进行匹配,判断是否存在匹配的规则。
数据包的查找匹配流程如图8所示,数据包达到vswitch后经过解析模块提取关键字存入到管理引擎的查找指令缓存中。查表引擎进行参数获取,也即从查找指令缓存中取出key(关键字),根据预先定义的mask(预设掩码)对关键字进行掩码处理得到masked_key(掩码关键字),然后对masked_key进行哈希计算得到哈希值。作为一种可行的实施方式,采用循环冗余算法对掩码关键字进行哈希计算得到哈希值。根据哈希值从流表中取出4条规则,同时从状态表中取出规则状态。作为一种可行的实施方式,将所述掩码关键字与查找到的规则的匹配字段进行匹配,判断是否存在匹配的规则,包括:将所述掩码关键字与查找到的有效规则的匹配字段进行匹配,判断是否存在匹配的有效规则。将masked_key与valid为1的规则进行查表匹配,判断是否匹配成功,如果匹配失败,则进行数据包上传,上传给openvswitch进行查表匹配,并根据规则进行处理和转发,最后下发匹配规则给vswitch。如果匹配成功,则进行规则选取,也即根据规则的priority选择优先级最高的规则,逆解析模块从数据缓存区取出数据包,根据匹配规则的action对数据包进行处理,本地存储最近被添加操作处理过的流表规则,判断匹配规则是否被添加操作锁定并处理过,若否,则进行状态更新,counter加1,timer恢复最大值,将counter和timer回写到流表和状态表中,最后将数据包通过指定端口进行转发。
S102:利用所述现场可编程门阵列中的第一路由模块基于在所述现场可编程门阵列中匹配规则的动作对所述数据包进行处理和转发;
在本步骤中,若FPGA中存在数据包匹配的规则,则利用第一路由模块基于匹配规则的动作对所述数据包进行处理和转发。
作为一种可行的实施方式,所述利用所述现场可编程门阵列中的第一路由模块基于在所述现场可编程门阵列中匹配规则的动作对所述数据包进行处理和转发,包括:若所述数据包在所述现场可编程门阵列匹配到的规则为预设规则,则将所述数据包发送至所述现场可编程门阵列中的核函数模块,在所述核函数模块中利用对应的计算函数进行计算处理,并将计算处理完成的数据包重新发送至所述第一路由模块;相应的,所述将计算处理完成的数据包重新发送至所述第一路由模块之后,还包括:判断所述现场可编程门阵列中是否存在所述计算处理完成的数据包匹配的规则。
在本实施例中,数据包可以路由到核函数模块kernel,上层应用可以根据需求灵活的选择后处理kernel,对数据流进行加解密、压缩解压缩等特殊的处理流程。如果有指定的源IP地址和源端口号的数据流到达vswitch,则根据匹配规则转发给对应的计算加速kernel进行处理,并修改数据流的源端口号。这样经过计算加速kernel处理后的数据流会匹配另一条规则,按照规则进行处理后从指定的端口转发。
S103:将所述数据包上传至服务器主机的内核空间中的第二路由模块,判断所述第二路由模块对应的流表中是否存在所述数据包匹配的规则;若是,则进入S104;若否,则进入S105;
在本步骤中,若FPGA中不存在数据包匹配的规则,则将数据包上传至服务器主机的内核空间中的第二路由模块,判断第二路由模块对应的流表中是否存在数据包匹配的规则;若是,则进入S104;若否,则进入S105。
S104:基于所述第二路由模块对应的流表中匹配规则的动作对所述数据包进行处理和转发;
在本步骤中,若第二路由模块中存在数据包匹配的规则,则基于第二路由模块中匹配规则的动作对数据包进行处理和转发,并将在第二路由模块中匹配到的规则下发至FPGA的内存。
S105:将所述数据包上传至所述服务器主机的用户空间中的守护进程,利用所述守护进程在数据库中查询所述数据包匹配的规则,基于查询到的所述数据包匹配的规则的动作对所述数据包进行处理和转发。
在本步骤中,若第二路由模块中不存在数据包匹配的规则,则数据包上传至服务器主机的用户空间中的守护进程,利用守护进程在数据库中查询数据包匹配的规则,基于查询到的数据包匹配的规则的动作对数据包进行处理和转发,并将查询到的数据包匹配的规则下发至第二路由模块的流表、所述现场可编程门阵列的内存中。
本申请实施例基于FPGA同时实现了网络路由和计算加速,通过在FPGA中同时实现网络路由和计算加速的功能,可大幅度的释放CPU资源,实现流表的动态重配置和计算加速功能的路由。在本申请中,根据不同应用场景匹配字段的不同,设计适合该场景的流表结构,生成对应的核函数模块。当应用场景的情况发生变化时,可以动态更新FPGA中的流表,实现OVS功能的灵活切换。在FPGA中除了实现OVS的处理和转发功能,还实现特殊功能的计算函数。当上层应用需要进行特殊处理时,可以配置流表规则,使数据流在处理和转发之前,先路由到核函数模块进行数据的相应的计算,然后再进行处理和转发。由此可见,本申请实施例实现了灵活修改流表的结构,同时根据上层应用需求灵活定义数据流处理流程。
本申请实施例介绍FPGA中规则修改或添加流程,具体的:
参见图9,根据一示例性实施例示出的一种FPGA中规则修改或添加的流程图,如图9所示,包括:
S201:获取目标关键字、目标掩码、目标优先级和目标动作,根据所述目标掩码对所述目标关键字进行掩码处理得到掩码目标关键字,对所述掩码目标关键字进行哈希计算得到目标哈希值;
S202:根据所述目标哈希值在所述第一路由模块中的流表中查找对应的规则,对查找到的规则进行锁定;
S203:将所述掩码目标关键字与查找到的有效规则的匹配字段进行匹配,判断是否存在匹配的有效规则;若是,则进入S204;若否,则进入S205;
S204:根据所述目标优先级和目标动作修改匹配到的有效规则,并更新匹配到的有效规则的状态项,并对所述查找到的规则进行解锁;
S205:判断是否存在规则无效的存储区域;若是,则进入S206;若否,则进入S207;
S206:将所述掩码目标关键字、所述目标优先级、所述目标动作存储至所述规则无效的存储区域,更新状态项,并对所述查找到的规则进行解锁;
S207:在所述查找到的规则中选择老化时间最小的第一目标规则,根据所述掩码目标关键字、所述目标优先级、所述目标动作修改所述第一目标规则,更新所述第一目标规则的状态项,并对所述查找到的规则进行解锁。
规则修改或添加的流程如图10所示,驱动下发的规则到达vswitch后存入到管理引擎的添加指令缓存中。查表引擎进行参数获取,也即从添加指令缓存中取出priority(目标优先级)、match(目标关键字)、mask(目标掩码)和action(目标动作),根据mask对match进行掩码处理得到masked_match(掩码目标关键字),然后对masked_match进行哈希计算得到哈希值。根据哈希值从流表中取出4条规则,同时从状态表中取出规则状态并对规则进行锁定。将masked_match与valid为1的规则进行查表匹配,如果匹配成功,则进行规则修改和状态更新,也即修改匹配规则的priority和action,同时更新valid、timer、counter等规则状态,规则解锁。如果匹配失败,则查询是否存在valid为0的空闲存储区域,如果存在,则进行规则添加和状态更新,也即将priority、masked_match、action存入对应存储区域,如果有多个valid为0的区域选择流表序号最小的存储区域,同时更新valid、timer、counter等规则状态,规则解锁。如果不存在valid为0的存储区域,则选择4条规则中timer数值最小的规则,如果有多个timer的数值相等时选择流表序号最小的规则,进行规则修改和状态更新,也即修改相应规则的priority、match和action,同时更新valid、timer、counter等规则状态,规则解锁。
本申请实施例介绍FPGA中规则删除流程,具体的:
参见图11,根据一示例性实施例示出的一种FPGA中规则删除的流程图,如图11所示,包括:
S301:获取目标关键字、目标掩码,根据所述目标掩码对所述目标关键字进行掩码处理得到掩码目标关键字,对所述掩码目标关键字进行哈希计算得到目标哈希值;
S302:根据所述目标哈希值在所述第一路由模块中的流表中查找对应的规则;
S303:将所述掩码目标关键字与查找到的有效规则的匹配字段进行匹配,判断是否存在匹配的有效规则;
S304:若存在,则将匹配到的有效规则作为第二目标规则,判断所述第二目标规则是否被锁定;
S305:若未被锁定,则将所述第二目标规则的有效标志设置为无效,并删除所述第二目标规则。
规则删除的流程如图12所示,驱动下发的规则到达vswitch后存入到管理引擎的删除指令缓存中。查表引擎进行参数获取,也即从删除指令缓存中取出match(目标关键字)和mask(目标掩码),根据mask对match进行掩码处理得到masked_match(掩码目标关键字),然后对masked_match进行哈希计算得到哈希值。根据哈希值从流表中取出4条规则,同时从状态表中取出规则状态。将masked_match与valid为1的规则进行查表匹配,如果匹配成功,则判断该规则是否被添加操作锁定并处理过,如果没有,则将该规则的valid字段置0,删除规则。如果规则被锁定和处理过,或者规则匹配失败,则直接结束删除操作的流程。
本申请实施例介绍FPGA中规则老化处理流程,具体的:
参见图13,根据一示例性实施例示出的一种FPGA中规则老化处理的流程图,如图13所示,包括:
S401:每隔预设时间遍历第一路由模块中的流表,将所述流表中每条规则的老化时间减少第二预设值;
S402:当所述老化时间减少到第一预设值时,判断对应的规则是否被锁定,若未被锁定,则删除所述规则。
老化操作由管理引擎间隔一段时间自动生成,其处理流程如图14所示。查表引擎进行规则选择,取出流表中的规则进行老化处理,也即将规则的老化时间(timer)并减小第二预设值,判断timer是否减小到了第一预设值,例如判断时间是否归零,若是,则判断该规则是否被添加操作锁定并处理过,如果是,则不再重复进行处理,继续遍历规则,若遍历完成,则结束流程,否则选择下一条规则。如果没有被锁定,则将该规则的valid的置0,删除该规则。继续遍历规则,若遍历完成,则结束流程,否则选择下一条规则。如果timer未减小到了第一预设值,同样判断该规则是否被添加操作锁定并处理过,如果是,不再重复进行处理,继续遍历规则,若遍历完成,则结束流程,否则选择下一条规则。如果没有被锁定,则进行状态更新,也即更新该规则的timer,继续遍历规则,若遍历完成,则结束流程,否则选择下一条规则。
下面对本申请实施例提供的一种路由装置进行介绍,下文描述的一种路由装置与上文描述的一种路由方法可以相互参照。
参见图15,根据一示例性实施例示出的一种路由装置的结构图,如图15所示,包括:
第一判断单元100,用于获取数据包,判断现场可编程门阵列中是否存在所述数据包匹配的规则;若是,则启动第一处理和转发单元200的工作流程;若否,则启动第二判断单元300的工作流程;
所述第一转发单元200,用于利用所述现场可编程门阵列中的第一路由模块基于在所述现场可编程门阵列中匹配规则的动作对所述数据包进行处理和转发;
所述第二判断单元300,用于将所述数据包上传至服务器主机的内核空间中的第二路由模块,判断所述第二路由模块对应的流表中是否存在所述数据包匹配的规则;若是,则启动第二转发单元400的工作流程;若否,则启动第三转发单元500的工作流程;
所述第二转发单元400,用于基于所述第二路由模块对应的流表中匹配规则的动作对所述数据包进行处理和转发;
所述第三转发单元500,用于将所述数据包上传至所述服务器主机的用户空间中的守护进程,利用所述守护进程在数据库中查询所述数据包匹配的规则,基于查询到的所述数据包匹配的规则的动作对所述数据包进行处理和转发。
本申请实施例基于FPGA同时实现了网络路由和网络加速,通过在FPGA中同时实现网络路由和计算加速的功能,可大幅度的释放CPU资源,实现流表的动态重配置和计算加速功能的路由。在本申请中,根据不同应用场景匹配字段的不同,设计适合该场景的流表结构,生成对应的核函数模块。当应用场景的情况发生变化时,可以动态更新FPGA中的流表,实现OVS功能的灵活切换。在FPGA中除了实现OVS的处理和转发功能,还实现特殊功能的计算函数。当上层应用需要进行特殊的函数计算时加解密时,可以配置流表规则,使数据流在处理和转发之前,先路由到核函数模块进行数据的相应的计算,然后再进行处理和转发。由此可见,本申请实施例实现了灵活修改流表的结构,同时根据上层应用需求灵活定义数据流处理流程。
在上述实施例的基础上,作为一种优选实施方式,所述第一转发单元200具体用于:若所述数据包在所述现场可编程门阵列匹配到的规则为预设规则,则将所述数据包发送至所述现场可编程门阵列中的核函数模块,在所述核函数模块中利用对应的计算函数进行计算处理,并将计算处理完成的数据包重新发送至所述第一路由模块;
相应的,还包括:
第三判断单元,用于判断所述现场可编程门阵列中是否存在所述计算处理完成的数据包匹配的规则。
在上述实施例的基础上,作为一种优选实施方式,还包括:
第一下发单元,用于将在所述第二路由模块中匹配到的规则和动作下发至所述现场可编程门阵列的内存中。
在上述实施例的基础上,作为一种优选实施方式,还包括:
第二下发单元,用于将查询到的所述数据包匹配的规则和动作下发至所述第二路由模块对应的流表、所述现场可编程门阵列的内存中。
在上述实施例的基础上,作为一种优选实施方式,所述第一判断单元100具体用于:获取数据包,提取所述数据包的关键字,根据预设掩码对所述关键字进行掩码处理得到掩码关键字,对所述掩码关键字进行哈希计算得到哈希值;根据所述哈希值在所述现场可编程门阵列的内存中查找对应的规则,将所述掩码关键字与查找到的规则的匹配字段进行匹配,判断是否存在匹配的规则。
在上述实施例的基础上,作为一种优选实施方式,所述第一判断单元100具体用于:获取数据包,提取所述数据包的关键字,根据预设掩码对所述关键字进行掩码处理得到掩码关键字,采用循环冗余算法对所述掩码关键字进行哈希计算得到哈希值;根据所述哈希值在所述第一路由模块中的流表中查找对应的规则,将所述掩码关键字与查找到的规则进行匹配,判断是否存在匹配的规则。
在上述实施例的基础上,作为一种优选实施方式,所述第一判断单元100具体用于:获取数据包,提取所述数据包的关键字,根据预设掩码对所述关键字进行掩码处理得到掩码关键字,对所述掩码关键字进行哈希计算得到哈希值;根据所述哈希值在所述第一路由模块中的流表中查找对应的规则,将所述掩码关键字与查找到的有效规则的匹配字段进行匹配,判断是否存在匹配的有效规则。
在上述实施例的基础上,作为一种优选实施方式,同一哈希值对应多个存储空间,用于存储同一哈希值对应的多条规则。
在上述实施例的基础上,作为一种优选实施方式,所述数据包包括网际互连协议数据包、地址解析数据包和需要经过核函数处理的数据包中任一项或任几项的组合。
在上述实施例的基础上,作为一种优选实施方式,还包括:
添加或修改单元,用于获取目标关键字、目标掩码、目标优先级和目标动作,根据所述目标掩码对所述目标关键字进行掩码处理得到掩码目标关键字,对所述掩码目标关键字进行哈希计算得到目标哈希值;根据所述目标哈希值在所述第一路由模块中的流表中查找对应的规则,对查找到的规则进行锁定;将所述掩码目标关键字与查找到的有效规则的匹配字段进行匹配,判断是否存在匹配的有效规则;若是,则根据所述目标优先级和目标动作修改匹配到的有效规则,并更新匹配到的有效规则的状态项,并对所述查找到的规则进行解锁;若否,则判断是否存在规则无效的存储区域;若是,则将所述掩码目标关键字、所述目标优先级、所述目标动作存储至所述规则无效的存储区域,更新状态项,并对所述查找到的规则进行解锁;若否,则在所述查找到的规则中选择老化时间最小的第一目标规则,根据所述掩码目标关键字、所述目标优先级、所述目标动作修改所述第一目标规则,更新所述第一目标规则的状态项,并对所述查找到的规则进行解锁。
在上述实施例的基础上,作为一种优选实施方式,还包括:
删除单元,用于获取目标关键字、目标掩码,根据所述目标掩码对所述目标关键字进行掩码处理得到掩码目标关键字,对所述掩码目标关键字进行哈希计算得到目标哈希值;根据所述目标哈希值在所述第一路由模块中的流表中查找对应的规则;将所述掩码目标关键字与查找到的有效规则的匹配字段进行匹配,判断是否存在匹配的有效规则;若存在,则将匹配到的有效规则作为第二目标规则,判断所述第二目标规则是否被锁定;若未被锁定,则将所述第二目标规则的有效标志设置为无效,并删除所述第二目标规则。
在上述实施例的基础上,作为一种优选实施方式,还包括:
老化处理单元,用于每隔预设时间遍历第一路由模块中的流表,将所述流表中每条规则的老化时间减少第二预设值;当所述老化时间减少到第一预设值时,判断对应的规则是否被锁定,若未被锁定,则删除所述规则。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
基于上述程序模块的硬件实现,且为了实现本申请实施例的方法,本申请实施例还提供了一种电子设备,图16为根据一示例性实施例示出的一种电子设备的结构图,如图16所示,电子设备包括:
通信接口1,能够与其它设备比如网络设备等进行信息交互;
处理器2,与通信接口1连接,以实现与其它设备进行信息交互,用于运行计算机程序时,执行上述一个或多个技术方案提供的路由方法。而所述计算机程序存储在存储器3上。
当然,实际应用时,电子设备中的各个组件通过总线系统4耦合在一起。可理解,总线系统4用于实现这些组件之间的连接通信。总线系统4除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图16中将各种总线都标为总线系统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旨在包括但不限于这些和任意其它适合类型的存储器。
上述本申请实施例揭示的方法可以应用于处理器2中,或者由处理器2实现。处理器2可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器2中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器2可以是通用处理器、DSP,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器2可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器3,处理器2读取存储器3中的程序,结合其硬件完成前述方法的步骤。
处理器2执行所述程序时实现本申请实施例的各个方法中的相应流程,为了简洁,在此不再赘述。
在示例性实施例中,本申请实施例还提供了一种存储介质,即计算机存储介质,具体为计算机可读存储介质,例如包括存储计算机程序的存储器3,上述计算机程序可由处理器2执行,以完成前述方法所述步骤。计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、Flash Memory、磁表面存储器、光盘、CD-ROM等存储器。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机、服务器主机、网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (24)

1.一种服务器系统,其特征在于,包括服务器主机和与所述服务器主机连接的现场可编程门阵列;
所述服务器主机包括多个虚拟机;
所述现场可编程门阵列包括板卡管理模块、内存、数据通道、第一路由模块、核函数模块,所述内存连接所述数据通道和所述第一路由模块,所述数据通道通过物理功能通道连接所述服务器主机、通过多个虚拟功能通道连接多个所述虚拟机,所述数据通道连接所述第一路由模块,所述第一路由模块连接所述核函数模块,所述第一路由模块通过物理接口连接其他服务器主机;
所述内存用于存储所述服务器主机下发的规则,所述第一路由模块用于根据所述内存存储的规则的动作对数据包进行处理和转发,所述核函数模块用于实现计算函数。
2.根据权利要求1所述服务器系统,其特征在于,所述服务器主机包括用户空间和内核空间,所述用户空间包括开放虚拟交换机的守护进程、数据库和多个虚拟机,所述守护进程与所述数据库连接,所述内核空间包括第二路由模块、流表规则下发通道和驱动,所述第二路由模块与所述守护进程连接,所述第二路由模块通过所述流表规则下发通道连接所述驱动;
所述数据通道通过所述物理功能通道连接所述驱动;
所述守护进程用于根据匹配规则的动作对数据包进行处理和转发、向所述内核空间下发规则,所述第二路由模块用于根据所述守护进程下发的规则的动作对数据包进行处理和转发、通过所述流表规则下发通道向所述驱动下发规则,所述驱动用于通过所述数据通道将所述守护进程或所述第二路由模块下发的规则下发至所述内存。
3.根据权利要求1所述服务器系统,其特征在于,所述第一路由模块包括管理引擎、查表引擎和数据缓存区;
所述管理引擎用于对所述内存中的流表进行管理操作,所述管理操作包括查找操作、添加操作、修改操作、删除操作和老化操作中任一项或任几项的组合,所述老化操作为每隔预设时间减少规则的老化时间,当所述老化时间减少到第一预设值时删除对应的规则;
所述查表引擎用于进行查表操作;
所述数据缓存区用于缓存待查表的数据包。
4.根据权利要求3所述服务器系统,其特征在于,所述第一路由模块还包括输入仲裁模块、解析模块、逆解析模块和输出仲裁模块;
所述输入仲裁模块用于根据数据包到达的时间确定有效数据包;
所述解析模块用于提取所述数据包中的关键字,并将所述数据包存储至所述数据缓存区、将对应的关键字存储到所述管理引擎中的查找指令缓存区;
所述逆解析模块用于从所述数据缓存区取出所述有效数据包,根据匹配规则的动作对所述有效数据包进行处理,并将处理完成的有效数据包和输出端口发送至所述输出仲裁模块;
所述输出仲裁模块用于将所述处理完成的有效数据包从所述输出端口转发。
5.根据权利要求4所述服务器系统,其特征在于,所述查表引擎包括哈希计算模块和地址处理模块;
所述哈希计算模块用于根据所述关键字计算哈希值,并根据所述哈希值在流表和动作表中确定匹配的规则和动作;
所述地址处理模块用于遍历流表和状态表,对流表中的规则进行老化处理。
6.根据权利要求5所述服务器系统,其特征在于,所述流表包括多条规则,所述动作表包括多个动作,所述状态表包括多个状态项,所述流表中的规则与所述动作表中的动作一一对应,所述流表中的规则与所述状态表中的状态项一一对应,每条所述规则包括优先级、匹配字段和计数器,所述计数器用于描述所述规则匹配成功的次数,每个所述动作包括动作类型和指令,每个所述状态项包括锁标志、有效标志和计时器,所述锁标志用于描述对应地址的规则是否正在被处理,所述有效标志用于描述对应地址的规则是否有效,所述计时器用于描述对应地址的规则的老化时间。
7.根据权利要求3所述服务器系统,其特征在于,所述数据缓存区包括先进先出存储器。
8.根据权利要求1所述服务器系统,其特征在于,所述计算函数包括数据加密函数、数据解密函数、网络加速函数中任一项或任几项的组合。
9.根据权利要求1所述服务器系统,其特征在于,所述内存包括高带宽存储器。
10.一种路由方法,其特征在于,应用于如权利要求1至9任一项所述服务器系统,所述方法包括:
获取数据包,判断现场可编程门阵列中是否存在所述数据包匹配的规则;
若是,则利用所述现场可编程门阵列中的第一路由模块基于在所述现场可编程门阵列中匹配规则的动作对所述数据包进行处理和转发;
若否,则将所述数据包上传至服务器主机的内核空间中的第二路由模块,判断所述第二路由模块对应的流表中是否存在所述数据包匹配的规则;若是,则基于所述第二路由模块对应的流表中匹配规则的动作对所述数据包进行处理和转发;若否,则将所述数据包上传至所述服务器主机的用户空间中的守护进程,利用所述守护进程在数据库中查询所述数据包匹配的规则,基于查询到的所述数据包匹配的规则的动作对所述数据包进行处理和转发。
11.根据权利要求10所述路由方法,其特征在于,所述利用所述现场可编程门阵列中的第一路由模块基于在所述现场可编程门阵列中匹配规则的动作对所述数据包进行处理和转发,包括:
若所述数据包在所述现场可编程门阵列匹配到的规则为预设规则,则将所述数据包发送至所述现场可编程门阵列中的核函数模块,在所述核函数模块中利用对应的计算函数进行计算处理,并将计算处理完成的数据包重新发送至所述第一路由模块;
相应的,所述将计算处理完成的数据包重新发送至所述第一路由模块之后,还包括:
判断所述现场可编程门阵列中是否存在所述计算处理完成的数据包匹配的规则。
12.根据权利要求10所述路由方法,其特征在于,所述基于所述第二路由模块中匹配规则的动作对所述数据包进行处理和转发之后,还包括:
将在所述第二路由模块中匹配到的规则和动作下发至所述现场可编程门阵列的内存中。
13.根据权利要求10所述路由方法,其特征在于,所述基于查询到的所述数据包匹配的规则的动作对所述数据包进行处理和转发之后,还包括:
将查询到的所述数据包匹配的规则和动作下发至所述第二路由模块对应的流表、所述现场可编程门阵列的内存中。
14.根据权利要求10所述路由方法,其特征在于,所述判断现场可编程门阵列中是否存在所述数据包匹配的规则,包括:
提取所述数据包的关键字,根据预设掩码对所述关键字进行掩码处理得到掩码关键字,对所述掩码关键字进行哈希计算得到哈希值;
根据所述哈希值在所述现场可编程门阵列的内存中查找对应的规则,将所述掩码关键字与查找到的规则的匹配字段进行匹配,判断是否存在匹配的规则。
15.根据权利要求14所述路由方法,其特征在于,对所述掩码关键字进行哈希计算得到哈希值,包括:
采用循环冗余算法对所述掩码关键字进行哈希计算得到哈希值。
16.根据权利要求14所述路由方法,其特征在于,将所述掩码关键字与查找到的规则的匹配字段进行匹配,判断是否存在匹配的规则,包括:
将所述掩码关键字与查找到的有效规则的匹配字段进行匹配,判断是否存在匹配的有效规则。
17.根据权利要求14所述路由方法,其特征在于,同一哈希值对应多个存储空间,用于存储同一哈希值对应的多条规则。
18.根据权利要求10所述路由方法,其特征在于,所述数据包包括网际互连协议数据包、地址解析数据包和需要经过核函数处理的数据包中任一项或任几项的组合。
19.根据权利要求10所述路由方法,其特征在于,还包括:
获取目标关键字、目标掩码、目标优先级和目标动作,根据所述目标掩码对所述目标关键字进行掩码处理得到掩码目标关键字,对所述掩码目标关键字进行哈希计算得到目标哈希值;
根据所述目标哈希值在所述第一路由模块中的流表中查找对应的规则,对查找到的规则进行锁定;
将所述掩码目标关键字与查找到的有效规则的匹配字段进行匹配,判断是否存在匹配的有效规则;
若是,则根据所述目标优先级和目标动作修改匹配到的有效规则,并更新匹配到的有效规则的状态项,并对所述查找到的规则进行解锁;
若否,则判断是否存在规则无效的存储区域;若是,则将所述掩码目标关键字、所述目标优先级、所述目标动作存储至所述规则无效的存储区域,更新状态项,并对所述查找到的规则进行解锁;若否,则在所述查找到的规则中选择老化时间最小的第一目标规则,根据所述掩码目标关键字、所述目标优先级、所述目标动作修改所述第一目标规则,更新所述第一目标规则的状态项,并对所述查找到的规则进行解锁。
20.根据权利要求10所述路由方法,其特征在于,还包括:
获取目标关键字、目标掩码,根据所述目标掩码对所述目标关键字进行掩码处理得到掩码目标关键字,对所述掩码目标关键字进行哈希计算得到目标哈希值;
根据所述目标哈希值在所述第一路由模块中的流表中查找对应的规则;
将所述掩码目标关键字与查找到的有效规则的匹配字段进行匹配,判断是否存在匹配的有效规则;
若存在,则将匹配到的有效规则作为第二目标规则,判断所述第二目标规则是否被锁定;
若未被锁定,则将所述第二目标规则的有效标志设置为无效,并删除所述第二目标规则。
21.根据权利要求10所述路由方法,其特征在于,还包括:
每隔预设时间遍历第一路由模块中的流表,将所述流表中每条规则的老化时间减少第二预设值;
当所述老化时间减少到第一预设值时,判断对应的规则是否被锁定,若未被锁定,则删除所述规则。
22.一种路由装置,其特征在于,应用于如权利要求1至9任一项所述服务器系统,所述装置包括:
第一判断单元,用于获取数据包,判断现场可编程门阵列中是否存在所述数据包匹配的规则;若是,则启动第一转发单元的工作流程;若否,则启动第二判断单元的工作流程;
所述第一转发单元,用于利用所述现场可编程门阵列中的第一路由模块基于在所述现场可编程门阵列中匹配规则的动作对所述数据包进行处理和转发;
所述第二判断单元,用于将所述数据包上传至服务器主机的内核空间中的第二路由模块,判断所述第二路由模块对应的流表中是否存在所述数据包匹配的规则;若是,则启动第二转发单元的工作流程;若否,则启动第三转发单元的工作流程;
所述第二转发单元,用于基于所述第二路由模块对应的流表中匹配规则的动作对所述数据包进行处理和转发;
所述第三转发单元,用于将所述数据包上传至所述服务器主机的用户空间中的守护进程,利用所述守护进程在数据库中查询所述数据包匹配的规则,基于查询到的所述数据包匹配的规则的动作对所述数据包进行处理和转发。
23.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求10至21任一项所述路由方法的步骤。
24.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求10至21任一项所述路由方法的步骤。
CN202310868741.0A 2023-07-17 2023-07-17 一种服务器系统、路由方法、装置及电子设备和存储介质 Active CN116599892B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310868741.0A CN116599892B (zh) 2023-07-17 2023-07-17 一种服务器系统、路由方法、装置及电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310868741.0A CN116599892B (zh) 2023-07-17 2023-07-17 一种服务器系统、路由方法、装置及电子设备和存储介质

Publications (2)

Publication Number Publication Date
CN116599892A true CN116599892A (zh) 2023-08-15
CN116599892B CN116599892B (zh) 2023-10-03

Family

ID=87608491

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310868741.0A Active CN116599892B (zh) 2023-07-17 2023-07-17 一种服务器系统、路由方法、装置及电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN116599892B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117714398A (zh) * 2024-02-05 2024-03-15 浪潮电子信息产业股份有限公司 一种数据传输系统、方法、电子设备及存储介质
CN117714398B (zh) * 2024-02-05 2024-05-10 浪潮电子信息产业股份有限公司 一种数据传输系统、方法、电子设备及存储介质

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102957619A (zh) * 2011-08-25 2013-03-06 清华大学 虚拟路由系统及方法
US20140226661A1 (en) * 2013-02-11 2014-08-14 Cisco Technology, Inc. Binary compatible extension architecture in an openflow compliant network environment
US20160094460A1 (en) * 2014-09-30 2016-03-31 Vmware, Inc. Packet Key Parser for Flow-Based Forwarding Elements
US20170126487A1 (en) * 2014-07-11 2017-05-04 Huawei Technologies Co., Ltd. Service deployment method and network functions acceleration platform
CN111324558A (zh) * 2020-02-05 2020-06-23 苏州浪潮智能科技有限公司 数据处理方法、装置、分布式数据流编程框架及相关组件
CN111698164A (zh) * 2020-06-11 2020-09-22 北京金山云网络技术有限公司 虚拟机的网络路由方法、装置和管理服务器
CN112929299A (zh) * 2021-01-27 2021-06-08 广州市品高软件股份有限公司 基于fpga加速卡的sdn云网络实现方法、装置及设备
CN113821310A (zh) * 2021-11-19 2021-12-21 阿里云计算有限公司 数据处理方法、可编程网卡设备、物理服务器及存储介质
CN113868155A (zh) * 2021-11-30 2021-12-31 苏州浪潮智能科技有限公司 一种内存空间扩展方法、装置及电子设备和存储介质
CN115733782A (zh) * 2021-08-26 2023-03-03 瞻博网络公司 用于数据包处理操作的双用户空间-内核空间数据路径
CN115801669A (zh) * 2021-09-09 2023-03-14 瞻博网络公司 针对虚拟专用网的容器化路由协议进程
CN116089053A (zh) * 2021-11-08 2023-05-09 中移(苏州)软件技术有限公司 一种数据处理方法、装置以及存储介质

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102957619A (zh) * 2011-08-25 2013-03-06 清华大学 虚拟路由系统及方法
US20140226661A1 (en) * 2013-02-11 2014-08-14 Cisco Technology, Inc. Binary compatible extension architecture in an openflow compliant network environment
US20170126487A1 (en) * 2014-07-11 2017-05-04 Huawei Technologies Co., Ltd. Service deployment method and network functions acceleration platform
US20160094460A1 (en) * 2014-09-30 2016-03-31 Vmware, Inc. Packet Key Parser for Flow-Based Forwarding Elements
CN111324558A (zh) * 2020-02-05 2020-06-23 苏州浪潮智能科技有限公司 数据处理方法、装置、分布式数据流编程框架及相关组件
CN111698164A (zh) * 2020-06-11 2020-09-22 北京金山云网络技术有限公司 虚拟机的网络路由方法、装置和管理服务器
CN112929299A (zh) * 2021-01-27 2021-06-08 广州市品高软件股份有限公司 基于fpga加速卡的sdn云网络实现方法、装置及设备
CN115733782A (zh) * 2021-08-26 2023-03-03 瞻博网络公司 用于数据包处理操作的双用户空间-内核空间数据路径
CN115801669A (zh) * 2021-09-09 2023-03-14 瞻博网络公司 针对虚拟专用网的容器化路由协议进程
CN116089053A (zh) * 2021-11-08 2023-05-09 中移(苏州)软件技术有限公司 一种数据处理方法、装置以及存储介质
CN113821310A (zh) * 2021-11-19 2021-12-21 阿里云计算有限公司 数据处理方法、可编程网卡设备、物理服务器及存储介质
CN113868155A (zh) * 2021-11-30 2021-12-31 苏州浪潮智能科技有限公司 一种内存空间扩展方法、装置及电子设备和存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
TOMOHIRO UENO; ATSUSHI KOSHIBA; KENTARO SANO: "Virtual Circuit-Switching Network with Flexible Topology for High-Performance FPGA Cluster", 《2021 IEEE 32ND INTERNATIONAL CONFERENCE ON APPLICATION-SPECIFIC SYSTEMS, ARCHITECTURES AND PROCESSORS (ASAP)》 *
刘旭山;王洪波;程时端;: "基于NetFPGA的Open vSwitch核心态实现", 新型工业化, no. 08 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117714398A (zh) * 2024-02-05 2024-03-15 浪潮电子信息产业股份有限公司 一种数据传输系统、方法、电子设备及存储介质
CN117714398B (zh) * 2024-02-05 2024-05-10 浪潮电子信息产业股份有限公司 一种数据传输系统、方法、电子设备及存储介质

Also Published As

Publication number Publication date
CN116599892B (zh) 2023-10-03

Similar Documents

Publication Publication Date Title
US9652505B2 (en) Content search pattern matching using deterministic finite automata (DFA) graphs
US9495479B2 (en) Traversal with arc configuration information
US7949683B2 (en) Method and apparatus for traversing a compressed deterministic finite automata (DFA) graph
US8180803B2 (en) Deterministic finite automata (DFA) graph compression
US8176300B2 (en) Method and apparatus for content based searching
US8861524B2 (en) Method for TCAM lookup using a key in multi-threaded packet processors
US8819217B2 (en) Intelligent graph walking
US20040100956A1 (en) Packet search device, packet processing search method used for the same, and program for the same
KR20150026979A (ko) 어드밴스드 피처를 갖는 정규 표현식 패턴에 대한 비결정성 유한 오토마톤 (nfa) 생성
JP6308601B2 (ja) パケット処理方法およびデバイス
US20200364080A1 (en) Interrupt processing method and apparatus and server
CN113746749A (zh) 网络连接设备
CN115917520A (zh) 用于通过分布式算法为可编程数据平面提供lpm实现的系统
CA2925805A1 (en) An asset management device and method in a hardware platform
CN115917473A (zh) 用分布式lpm实现的高度可扩展算法构建数据结构的系统
CN112118167A (zh) 一种跨网隧道数据快速传输方法
CN116599892B (zh) 一种服务器系统、路由方法、装置及电子设备和存储介质
US20180198704A1 (en) Pre-processing of data packets with network switch application -specific integrated circuit
CN113411380B (zh) 基于fpga可编程会话表的处理方法、逻辑电路和设备
CN117714398B (zh) 一种数据传输系统、方法、电子设备及存储介质
CN117714398A (zh) 一种数据传输系统、方法、电子设备及存储介质
RU2710302C1 (ru) Способ организации работы компонентов сетевого оборудования для обработки сетевых пакетов (4 варианта)
CN116366534A (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