CN116089053A - 一种数据处理方法、装置以及存储介质 - Google Patents
一种数据处理方法、装置以及存储介质 Download PDFInfo
- Publication number
- CN116089053A CN116089053A CN202111313489.4A CN202111313489A CN116089053A CN 116089053 A CN116089053 A CN 116089053A CN 202111313489 A CN202111313489 A CN 202111313489A CN 116089053 A CN116089053 A CN 116089053A
- Authority
- CN
- China
- Prior art keywords
- information
- processed
- session
- processing
- forwarding
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种数据处理方法,应用于包括现场可编程逻辑门阵列FPGA的处理设备,其特征在于,包括:确定待处理信息的数据类型;当所述待处理信息的数据类型为业务报文时,根据预设表转发所述待处理信息;当所述待处理信息的数据类型为控制报文时,将所述待处理信息发送至虚拟服务器,以供所述虚拟服务器处理。本发明在数据处理过程中,将业务报文的转发操作经由包括现场可编程逻辑门阵列FPGA的处理设备执行,将需要复杂逻辑处理的控制报文交由虚拟服务器处理,释放了服务器软件侧的计算资源的同时极大的提高了数据包的转发率,降低了负载均衡器的服务器成本。
Description
技术领域
本发明涉及云计算技术领域,尤其涉及一种数据处理方法、装置以及存储介质。
背景技术
随着***的移动信息***(4th Generation Mobile CommunicationTechnology,4G)、第五代的移动信息***技术(5th Generation Mobile CommunicationTechnology,5G)的飞速发展,移动客户端短视频、直播等新兴互联网业务呈现出爆发性的发展态势,其高并发,大流量的特点给应用服务器的性能提出了更高的要求,传统单一服务器已无法满足这种新兴业态的需求。而四层软负载均衡器,因其灵活可扩展的部署模式,大流量分发的功能特性,深受广大用户的青睐并得到广泛应用。
但目前的四层软负载均衡器依然存在无法满足大带宽、超大包转发率(PacketPer Second,PPS)的处理等问题。
发明内容
本发明为了解决上述问题,提供了一种数据处理方法、装置以及存储介质。
本发明的技术方案是这样实现的:
本发明提供了一种数据处理方法,应用于包括现场可编程逻辑门阵列FPGA的处理设备,包括:
确定待处理信息的数据类型;
当所述待处理信息的数据类型为业务报文时,根据预设表转发所述待处理信息;
当所述待处理信息的数据类型为控制报文时,将所述待处理信息发送至虚拟服务器,以供所述虚拟服务器处理。
本发明提供了一种数据处理方法,应用于虚拟服务器,包括:
接收包括现场可编程逻辑门阵列FPGA的处理设备发送的待处理信息;
确定所述待处理信息的数据类型;
若所述待处理信息的数据类型为业务报文,则确定所述待处理信息对应的转发策略,创建与所述待处理信息对应的会话,并将所述转发策略发送至所述处理设备;
若所述待处理信息的数据类型为控制报文,则处理所述待处理信息。
本发明提供了一种数据处理装置,应用于包括现场可编程逻辑门阵列FPGA的处理设备,包括:
确定单元,用于确定待处理信息的数据类型;
处理单元,用于当所述待处理信息的数据类型为业务报文时,根据预设表转发所述待处理信息;
发送单元,当所述待处理信息的数据类型为控制报文时,将所述待处理信息发送至虚拟服务器,以供所述虚拟服务器处理。
本发明提供一种数据处理装置,应用于虚拟服务器,包括:
通信单元,用于接收包括现场可编程逻辑门阵列FPGA的处理设备发送的待处理信息;
判断单元,用于确定所述待处理信息的数据类型;
执行单元,用于若所述待处理信息的数据类型为业务报文,则确定所述待处理信息对应的转发策略,创建与所述待处理信息对应的会话,并将所述转发策略发送至所述处理设备;若所述待处理信息的数据类型为控制报文,则处理所述待处理信息。
本发明提供一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序被处理器执行后,能够实现前述一个或多个技术方案提供的数据处理方法。
本发明实施例提供的数据处理方法、装置以及计算机存储介质,通过将复杂逻辑成本较高的控制报文由虚拟服务器软件处理,将业务数据的查表转发交由FPGA处理,实现了数据平面和控制平面的分离,相较于传统的完全依赖于服务器的中央处理器和软件转发报文,本实施例在释放了服务器的计算资源的同时极大的提高了数据包的转发率,降低了负载均衡器的服务器成本。
附图说明
图1为本发明实施例提供的一种应用于包括现场可编程逻辑门阵列FPGA的处理设备的数据处理方法的流程示意图;
图2为本发明实施例提供的另一种应用于虚拟服务器的数据处理方法的流程示意图;
图3为本发明实施例提供的一种应用于包括现场可编程逻辑门阵列FPGA的处理设备的数据处理装置的结构示意图;
图4为本发明实施例提供的一种应用于虚拟服务器的数据处理装置的结构示意图;
图5为本发明实施例提供的一种计算机存储介质的结构示意图;
图6为本发明实施例提供的一种LVS工作原理示意图;
图7为本发明实施例提供的一种LVS+DPDK原理示意图;
图8为本发明实施例提供的一种基于硬件加速的软负载均衡***的架构图;
图9为本发明实施例提供的一种基于硬件加速的软负载均衡方法的软件部分的架构图;
图10为本发明实施例提供的一种基于硬件加速的软负载均衡方法的硬件部分架构图;
图11为本发明实施例提供的一种基于硬件加速的软件均衡方法的原理示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本发明实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
以下结合说明书附图及具体实施例对本发明的技术方案做进一步的详细阐述。
如图1所示,本实施例提供一种数据处理方法,应用于包括现场可编程逻辑门阵列FPGA的处理设备,包括:
步骤S110:确定待处理信息的数据类型;
步骤S120:当所述待处理信息的数据类型为业务报文时,根据预设表转发所述待处理信息;
步骤S130:当所述待处理信息的数据类型为控制报文时,将所述待处理信息发送至虚拟服务器,以供所述虚拟服务器处理。
在本实施例中,所述处理设备提供报文收发的网口,接收待处理信息,对接收的待处理信息进行分析,判断所述待处理信息的数据类型,其中所述数据类型包括但不限于:控制报文和控制报文。
当待处理信息为业务报文时,查询预设表,将待处理信息与预设表进行匹配,若匹配成功,则对待处理信息进行转发处理。
当待处理信息为控制报文时,处理设备直接将待处理信息发送至虚拟服务器处理。
在一实施例中,预设表中包含会话信息以及会话信息对应的转发策略。所述会话信息包括但不限于:数据的接口以及寻址地址,例如:MAC地址(Media Access ControlAddress,介质访问控制地址),IP地址(Internet Protocol Address,互联网协议地址),PORT地址(端口地址)等。
在一实施例中,所述转发策略用于指示匹配会话信息的待处理信息对应的处理方式,包括但不限于:转发模式、算法、转发的目标IP端口等。
在一实施例中,处理设备接收到待处理信息后会先对所述待处理信息进行解析,判断所述待处理信息的数据类型,若待处理信息为业务报文,则对待处理信息携带的会话信息与预设表进行匹配,若匹配成功,则基于匹配获得的转发策略对待处理信息进行转发处理。
本实施例提供的数据处理方法可以应用在负载均衡超大带宽、超大PPS和超高并发的场景中,所述虚拟服务器可包括:软负载均衡器。由FPGA处理业务报文,并将控制报文交由软负载均衡器处理。
本实施例提供的一种数据处理方法,通过将复杂逻辑成本较高的控制报文由虚拟服务器软件处理,将业务数据的查表转发交由FPGA处理,实现了数据平面和控制平面的分离,相较于传统的完全依赖于服务器的中央处理器和软件转发报文,本实施例在释放了软件侧服务器的计算资源的同时极大的提高了数据包的转发率,降低了负载均衡器的服务器成本。
在一些实施例中,所述根据预设表转发所述待处理数据,包括:
若所述预设表中存在与所述待处理信息对应的会话信息,根据所述会话信息和所述预设表转发所述待处理信息;
若所述预设表中不存在与所述待处理信息对应的会话信息,将所述待处理信息发送至所述虚拟服务器。
在一实施例中,若待处理信息为业务报文,且预设表中不存在待处理信息对应的会话信息,则可确定该待处理信息的数据包为首包且待处理信息对应的发送设备和接收设备之间尚未建立会话。此时,处理设备会直接将待处理信息发送至虚拟服务器,虚拟服务器接收到待处理信息后,对待处理信息进行解析,若确定待处理信息为业务信息,则将待处理信息携带的会话信息与虚拟服务器中的转发策略相匹配,新建与所述待处理信息对应的会话,并将与所述待处理信息的会话信息对应的转发策略发送至处理设备。
在一些实施例中,所述方法还包括:
接收所述虚拟服务器发送的与会话信息对应的转发策略,并将所述转发策略存储在所述预设表中。
在一实施例中,若虚拟服务器新创建会话,则虚拟服务器会向处理设备发送新创建的会话的会话信息对应的转发策略,处理设备接收到与会话信息对应的转发策略后,会将该会话信息对应的转发策略存储在预设表中。当处理设备再次接收到携带有该会话信息的待处理信息时,即可通过匹配预设表,确定对应的转发策略对待处理信息进行转发处理。
在一些实施例中,所述方法还包括:
根据所述虚拟服务器下发的会话删除信息,删除所述预设表中的与所述会话删除信息对应的会话信息。
在一实施例中,所述会话删除信息用于指示处理设备删除指定会话的相关信息。
在一实施例中,处理设备接收到会话删除信息后,会删除所述会话删除信息所指示删除的会话相关的会话信息以及会话信息对应的转发策略。当再次接收到携带有该会话信息的待处理信息时,处理设备就不会直接进行转发操作。
在另一实施例中,所述会话删除信息用于指示处理设备停止转发指定会话对应的待处理信息。处理设备在接收到会话删除信息后,会根据会话删除信息停止转发所述会话删除信息对应的待处理信息。
在一些实施例中,所述方法还包括:
根据所述预设表指示的会话控制信息,对所述会话控制信息对应的会话进行计时;
当所述计时时长大于所述会话控制信息指示的控制阈值时,执行预设表中与所述会话控制信息对应的控制操作。
在一实施例中,预设表中存储有会话控制信息,所述会话控制信息可为虚拟服务器下发的会话控制信息,也可为预设的会话控制信息,可以根据用户需求进行任意设置。该会话控制信息用于指示会话对应的控制策略,控制策略包括但不限于:超时控制、带宽限制、连接限制等。
以超时控制作为一个示例:若会话控制信息可用于指示当会话时长超过预设阈值时,则关闭会话。则FPGA将会对会话进行定时统计,当会话时长超过预设阈值后,则丢弃接收到的报文。
在一些实施例中,当所述待处理信息的数据类型为业务报文时,根据预设表转发所述待处理信息,包括:
根据所述待处理信息的五元组信息,查询所述预设表,确定所述预设表中是否存在与所述五元组信息匹配的信息;其中,所述五元组信息包括:源互联网协议(InternetProtocol,IP)地址、目的IP地址、源端口号、目的端口号和协议类型;
若匹配成功,则基于所述预设表中匹配的信息,转发所述待处理信息。
在一实施例中,可将预设表作为哈希表,当业务报文进入处理后,直接根据报文的五元组信息进行查询,若预设表中存在与所述五元组信息匹配的信息,则可确定与之匹配的转发策略,根据所述转发策略转发该业务报文。本实施例通过哈希表的形式加速了待处理数据对应的转发策略的匹配效率,进一步提升了数据的处理效率。
如图2,本实施例提供一种数据处理方法,其特征在于,应用于虚拟服务器,包括:
步骤S210:接收包括现场可编程逻辑门阵列FPGA的处理设备发送的待处理信息;
步骤S220:确定所述待处理信息的数据类型;
步骤S230:若所述待处理信息的数据类型为业务报文,则确定所述待处理信息对应的转发策略,创建与所述待处理信息对应的会话,并将所述转发策略发送至所述处理设备;
步骤S240:若所述待处理信息的数据类型为控制报文,则处理所述待处理信息。
在一实施例中,所述虚拟服务器包括:软负载均衡器。虚拟服务器接收到待处理信息后会先对待处理信息解析,并判断其数据类型是业务报文或控制报文。在一实施例中,虚拟服务器会通过TCP(Transport Control Protocol,传输控制协议)/UDP(User DataProtocol,用户数据报协议)目的端口、报文类型(ARP等)等条件对待处理信息的数据类型做判断。
在一实施例中,虚拟服务器中存储有预设表,预设表包含会话信息以及会话信息对应的转发策略。
在一实施例中,当待处理信息为控制报文时,虚拟服务器将所述待处理信息交由监听在内核协议栈的应用程序进行处理。
在一些实施例中,所述创建与所述待处理信息对应的会话,包括:
根据预设规则,确定所述虚拟服务器的工作模式;
根据所述工作模式和调度算法创建与所述待处理信息对应的会话。
在一实施例中,所述虚拟服务器包括:LVS(linux virtual server,linux虚拟服务器)负载均衡器。
在一实施例中,所述工作模式和调度算法分别为LVS工作模式和LVS调度算法。虚拟服务器接收到待处理信息为业务报文后,将待处理信息转发至LVS处理程序。具体的,LVS处理程序根据预设规则,获取LVS工作模式,并根据获取的LVS工作模式和调度算法确定的转换后的IP、端口等信息进行会话的创建。
在一实施例中,LVS工作模式包括:基于网络地址转换(Network AddressTranslation,NAT)的负载均衡模式,基于直接路由(Direct Routing,DR)的负载均衡模式,基于TUN(IP隧道)的负载均衡模式等。
预设规则包括:通信协议与LVS工作模式之间的映射关系。在另一实施例中,预设规则可为:优先采用基于DR的负载均衡模式。在一实施例中,预设规则可根据用户需求进行设置。
在一实施例中,所述虚拟服务器还包括:DPDK(Data Plane Development Kit,数据平面开发工具包)。虚拟服务器通过DPDK驱动接收来自处理设备的数据。
在一实施例中,DPDK在接收到处理设备发送的待处理信息后,判断待处理信息的数据类型,若待处理信息为控制报文,则直接将待处理信息发送至KNI(Kernel NICInterface,内核NIC接口),交由监听在内核协议栈上的应用程序处理,例如:BGP协议的程序。若待处理信息为业务报文,则将待处理信息发送至LVS处理逻辑进行处理。
在一实施例中,若待处理信息为业务报文,虚拟服务器会将待处理信息与LVS中配置的转发策略进行匹配,确定所述待处理信息对应的转发策略。
在一些实施例中,所述将所述会话的会话信息对应的转发策略发送至所述处理设备,包括:
若所述业务报文为TCP报文,判断所述会话的会话状态;
在所述会话状态为数据传输状态时,将所述会话信息对应的转发策略发送至所述处理设备。
在一些实施例中,所述方法还包括:若接收到停止会话信息,则删除与所述停止会话信息对应的会话,并向所述处理设备发送会话删除信息。其中,所述会话删除信息用于指示所述处理设备删除所述会话的相关信息。
在一实施例中,所述停止会话信息包括reset(重置)报文。
在一实施例中,所述方法还包括:若会话时长超过所述会话控制信息所指示的超时控制的控制阈值,则删除会话,并向所述处理设备发送会话删除信息。
在一些实施例中,所述方法还包括:设置所述待处理信息对应的会话的控制信息,并将所述会话控制信息发送至所述处理设备。
在一实施例中,所述会话控制信息用于指示会话对应的控制策略,控制策略包括但不限于:超时控制、带宽限制、连接限制等。
本实施例中,虚拟服务器在所述待处理信息为控制报文时对待处理信息进行复杂逻辑处理,在所述待处理信息为业务报文时利用负载均衡器创建会话,并确定转发策略发送至处理设备,以供所述处理设备根据建立的会话和转发策略对属于该会话的待处理信息进行转发处理。本实施例通过将控制报文和业务报文分别采用虚拟服务器和包括FPGA的处理设备进行处理,将控制平面与数据平面分离,提升了数据转发的性能。
如图3所示,本实施例提供一种数据处理装置300,应用于包括现场可编程逻辑门阵列FPGA的处理设备,包括:
确定单元310,用于确定待处理信息的数据类型;
处理单元320,用于当所述待处理信息的数据类型为业务报文时,根据预设表转发所述待处理信息;
发送单元330,当所述待处理信息的数据类型为控制报文时,将所述待处理信息发送至虚拟服务器,以供所述虚拟服务器处理。
一些实施例中,所述处理单元具体用于:
若所述预设表中存在与所述待处理信息对应的会话信息,根据所述会话信息和所述预设表转发所述待处理信息;
若所述预设表中不存在与所述待处理信息对应的会话信息,将所述待处理信息发送至所述虚拟服务器。
一些实施例中,所述装置还包括:接收单元,用于接收所述虚拟服务器发送的与会话信息对应的转发策略,并将所述转发策略存储在所述预设表中。
一些实施例中,所述处理单元还用于:根据所述虚拟服务器下发的会话删除信息,删除所述预设表中的与所述会话删除信息对应的会话信息。
一些实施例中,所述处理单元还用于:
根据所述预设表指示的会话控制信息,对所述会话控制信息对应的会话进行计时;
当所述计时时长大于所述会话控制信息指示的控制阈值时,执行预设表中与所述会话控制信息对应的控制操作。
一些实施例中,所述处理单元还用于:
根据所述待处理信息的五元组信息,查询所述预设表,确定所述预设表中是否存在与所述五元组信息匹配的信息;其中,所述五元组信息包括:源互联网协议(InternetProtocol,IP)地址、目的IP地址、源端口号、目的端口号和协议类型;
若匹配成功,则基于所述预设表中匹配的信息,转发所述待处理信息。
如图4所示,本实施例提供一种数据处理装置400,应用于虚拟服务器,包括:
通信单元410,用于接收包括现场可编程逻辑门阵列FPGA的处理设备发送的待处理信息;
判断单元420,用于确定所述待处理信息的数据类型;
执行单元430,用于若所述待处理信息的数据类型为业务报文,则确定所述待处理信息对应的转发策略,创建与所述待处理信息对应的会话,并将所述转发策略发送至所述处理设备;若所述待处理信息的数据类型为控制报文,则处理所述待处理信息。
一些实施例中,所述执行单元,还用于根据预设规则,确定所述虚拟服务器的工作模式;根据所述工作模式和调度算法创建与所述待处理信息对应的会话。
一些实施例中,所述执行单元,还用于若所述业务报文为TCP报文,判断所述会话的会话状态;在所述会话状态为数据传输状态时,将所述会话信息对应的转发策略发送至所述处理设备。
一些实施例中,所述通信单元,还用于若接收到停止会话信息,则删除与所述停止会话信息对应的会话,并向所述处理设备发送会话删除信息。其中,所述会话删除信息用于指示所述处理设备删除所述会话的相关信息。
在一些实施例中,所述装置还包括:设置单元,用于设置所述待处理信息对应的会话的控制信息,并将所述会话控制信息发送至所述处理设备。
本发明实施例还提供一种计算机存储介质,该计算机存储介质500存储有计算机程序,所述计算机程序被处理器执行后,能够实现前述一个或多个技术方案提供的数据处理方法。
如图5所示,本发明实施例提供的计算机存储介质500包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。可选为,所述计算机存储介质可为非瞬间存储介质。
以下结合上述实施例提供一个具体示例:
LVS(Linux Virtual Server,Linux虚拟服务器)是Linux***的默认软负载均衡器,基于netfilter实现,提供了基于Linux内核协议栈提供四层软负载均衡器功能。
LVS工作原理示意图如图6所示。当客户端的请求到达软负载均衡器的内核空间时,首先会达到PREROUTING链。当内核发现请求的数据包的目的地址是本机时,将数据包送往INPUT链。当数据包达到INPUT链时,首先会被IPVS检查,如果数据包里面的目的地址及端口没有在IPVS规则里面,则这条数据包将被放行至用户空间。如果数据包里面的目的地址和端口在IPVS规则里面,那么这条数据报文的目的地址会被修改为通过负责均衡算法选好的后端服务器(DNAT),并发往POSROUTING链。最后经由POSTROUTING链发往后端的服务器。
开源LVS版本有3种工作模式,每种模式工作原理截然不同,说各种模式都有自己的优缺点,分别适合不同的应用场景,不过最终本质的功能都是能实现均衡的流量调度和良好的扩展性。其主要包括以下三种模式:DR模式、NAT模式、Tunnel模式,采用LVS方法的优势是linux内核自带,而且不需要安装额外的包就可以使用,但是在大带宽、低延迟、高并发的场景,LVS已经无法满足需求,其冗长的协议栈,和复杂的调度逻辑,很容易形成性能瓶颈。
基于上述问题,研究人员提出了LVS的DPDK加速方案,LVS的DPDK加速方案,使用了DPDK的核绑定,无锁队列,自定义轻量级IP协议栈等技术,所有报文都在用户态处理。绕过了内核协议栈复杂繁琐的处理流程。
LVS+DPDK原理示意图如图7所示。其报文处理流程为:硬件中断-->放弃中断流程-->通过Poll Mode Driver(轮询模式驱动程序)获取包)-->进入用户层协议栈-->逻辑层-->业务层。DPDK加速的LVS原生继承了LVS的三大模式(DR,NAT,TUN),但是因为DPDK接管了网卡,没有协议栈,在配置和管理方面会有不同,性能在原生的基础上有很大的提升。但是一旦带宽超过50Gbps,在小包占比较大的时候,CPU(Central Processing Unit,中央处理器)会很容易成为瓶颈,因为带宽越大,报文越小,PPS(Packet Per Second,每秒数据包数)就会越大,而DPDK是基于轮询的机制,收包的速率依赖于CPU时间片大小,PPS是需要CPU时间片去处理的,所以PPS一旦超过一定值,将会导致无差别丢包。
现有技术的缺点:
如图6所示,开源版本的LVS基于netfilter,在linux内核协议栈实现,调用链复杂,一个报文需要经过多条链,而netfilter在大流量的情况下,性能很差,而且报文进入内核协议栈,无法采用网卡的快速路径转发,无法满足大带宽,超大PPS(Packet Per Second)的处理。
如图7所示,DPDK加速的LVS虽然相比于图6的开源LVS,已经提升了很大性能,而且DPDK也是比较热门的加速技术。但是DPDK依赖CPU转发能力,在超大带宽场景(40G以上),小包占比大的时候,由于PPS极大,CPU转发不过来,导致小包性能很差,而且DPDK需要独占网卡,网卡被DPDK接管后,报文不会走内核态,很难维护管理,网络抓包分析成为一大难题。
为解决如上的问题,本示例提出了一种兼顾绕开内核协议栈、不依赖CPU转发性能、提升转发PPS、不占用内核网卡等、避开图6,图7的缺点的方法,采用硬件加速。即不经过内核协议栈,业务数据不走CPU,而且转发性能极高、不依赖于网卡。
本示例提案提出了一种基于硬件加速的软负载均衡方法,适用于负载均衡超大带宽、超大PPS和超高并发的场景,解决纯软件方案所带来的性能瓶颈问题。该方法分为软件部分和硬件FPGA部分:软件部分采用DPDK实现,采用轻量级IP协议栈,负责建立会话、销毁会话、管理配置、实现控制协议、FPGA操作等,是慢速通道;硬件部分只负责业务转发,是快速通道。此方法由FPGA卡提供网口,业务报文直接从快速通道转发,不需要另外配置专门的网卡,避免了超大带宽报文从PCIE转发到FPGA卡导致的性能瓶颈和延迟过长的问题。
下面从软件调度和硬件处理逻辑两方面,对本提案分别做进一步的说明。
本示例提供的方案具体实现说明如下:
本示例提供的方案的软件部分负责控制平面,具体实现介绍如下:
本示例的方案软件部分是在LVS+DPDK的基础上二次开发。LVS负责算法控制、配置管理、提供逻辑上的功能;DPDK负责接收首包建立会话,控制报文获取并把报文发送到KNI(DPDK的kernel Network Interface)口去满足特定协议。
本示例提供的一种基于硬件加速的软负载均衡方法的软件部分的架构图,如图9所示。Client是业务发起方,需要走控制报文和业务报文,此方法由FPGA提供网口,进行报文转发,不依赖单独的网卡。FPGA负责查表转发,如果会话表不在FPGA里,则把报文送给DPDK,DPDK判断TCP还是UDP协议,做不同的处理。如果是UDP首包,则立即创建会话并将会话下发到FPGA,后续报文由FPGA进行查表转发,由定时器进行超时删除会话。如果是TCP报文,则仅当进入ESTABLISB数据传输状态时,将会话下发到FPGA,当收到FIN/RST报文(关闭请求)上送CPU,由CPU删除会话,如果收不到FIN/RST报文,则由定时器超时后删除会话。
DPDK收到报文之后,通过TCP/UDP目的端口、报文类型(ARP等)等条件进行过滤,如果发现是控制协议报文,则发送给KNI接口,KNI将报文发送给内核协议栈,将报文交给监听在内核协议栈上的应用程序处理,例如:处理BGP协议的程序。如果是业务报文,则转发到LVS处理逻辑,如果业务报文匹配了LVS中配置的转发策略,则进行会话新建并进行业务流量转发。
LVS收到业务报文之后,根据配置的规则,获取LVS工作模式,调度算法,转换后的IP、端口等信息进行会话新建,会话新建完成后,将会话下发到FPGA接口,做为流表的形式存在FPGA中,并且本地存一份流表。
本示例提供的方案的硬件部分负责数据平面,具体实现说明如下:
本示例采用FPGA实现报文收发、报文处理、规则下发、规则查询,并且报文上送等功能,FPGA做为快速通路,自带DDR内存(Double Data Rate,双倍速率同步动态随机存储器),实现转发性能的提高。
本示例提供的一种基于硬件加速的软负载均衡方法的硬件部分架构图,如图10所示。业务报文通过100G物理网口把报文收上来,送到报文分析模块;如果是控制报文,直接通过DMA送给DPDK的轮询模式驱动程序,DPDK通过KNI接***由监听在内核协议栈的应用程序处理;如果业务报文,则去查询DDR中的预设表,其中所述预设表包括流表规则,如果预设表中没有相关的会话信息,报文上送CPU给DPDK,DPDK采用LVS的逻辑去新建会话、根据下发的规则获取转发模式、算法、转换的IP端口等,并定义好流表格式,调用FPGA流表设置接口,设置流表规则到FPGA的预设表中。FPGA的预设表将流表规则作为hash表,并做会话定时处理,判断超时状态;当不是控制报文的报文后面再进入FPGA的时候,FPGA的报文处理模块可以使用报文的五元组查询hash表,快速的匹配到这条规则,并做处理,报文直接转发,实现快路径。
本示例提供的基于硬件加速的软负载均衡方法的数据处理示意图,如图10所示,控制平面和数据平面分离,分别由不同的部分实现:软件部分负责控制平面,实现软负载均衡器的逻辑,为慢速通道;硬件部分负责数据平面,负责查表转发,为快速通道;不同的平面负责不同的功能。通过数据平面进行报文转发使CPU只有在控制平面才使用得到,释放了CPU的计算资源,而且采用DPDK驱动,也方便使用和移植,开发人员不需要另外开发驱动。
本示例提供的基于硬件加速的软负载均衡方法,应用于基于硬件加速的软负载均衡******,如图8所示,图8为一种基于硬件加速的软负载均衡***的架构图。所述***包括:FPGA和软负载均衡器(所述软负载均衡器包括DPDK和LVS处理程序)。
图11为本示例提供的一种基于硬件加速的软件均衡方法的原理示意图。本示例提供的基于硬件加速的软负载均衡方法,包括:
1、FPGA接收待处理数据信息,查询预设表进行转发,若查表失败则将待处理信息由DPDK驱动上传至CPU处理。如果预设表中有这个会话信息,那就走快速通道,直接由FPGA根据预设表对待处理数据信息重新封装,重写报文。
具体的,当VIP流量(报文)发送至FPGA时,FPGA查询其存储的预设表,进行查表转发,若在预设表中没有查到匹配的信息,查表失败就将报文上送至CPU,即将报文送到控制平面。若查表成功,则根据匹配的预设表的信息转发报文。
2、CPU接收到报文后,判断报文是否为控制报文,若为控制报文则直接利用控制逻辑处理,若是数据报文(业务报文),则新建会话,并将会话信息对应的转发策略发送至FPGA。
具体的,控制面收到报文之后,若报文为控制报文就走控制逻辑,通过LVS+DPDK进行处理,例如:OSPF、BGP、VRRP等报文,可以通过KNI等接口,将报文送至内核协议栈处理。若报文为业务报文(数据报文),则判定该报文为首包,属于新的会话。CPU会去新建该报文对应的会话,再把会话信息以及会话信息对应的转发策略设置到FPGA的预设表里,在新建会话之后,也要封装相应的报文发送给客户端。
3、FPGA根据预设表中控制平面设置下来的超时信息、带宽限制、连接限制等等,对会话做定时统计,并进行相关的操作,如果超过了阈值,就关闭会话,或者丢弃报文,具体的操作根据需求可以设置到预设表由FPGA去判断。
4、当超时或者收到reset报文等指示会话连接断开的信息时,CPU会调用控制平面的接口,更新软件的会话表,删除对应的会话。
本示例提出了一种硬件加速的软负载均衡的方法。相对于当前采用LVS或者LVS+DPDK实现,依赖于LVS的软件处理,报文都需要经过CPU和网卡,而且会话表占用内存的方法,本示例通过将控制面和数据面分离,数据FPGA报文不经过CPU和网卡,是当前技术从未考虑和涉及的。本示例使用DPDK驱动作为控制平面报文路径,只需要在会话建立和控制报文处理的时候,使用LVS的处理逻辑,而FPGA的寄存器调用,硬件设置等对上层透明,软件层的改动小,只需要做DPDK的Poll Mode Driver的适配。此方法是开源方案从未考虑和涉及的。
一方面,本示例在软件层面,依然使用LVS+DPDK的代码,只需要做少许的修改,FPGA开发和Poll Mode Driver的实现可以由专业团队负责,软负载均衡器只需要适配FPGA的Poll Mode Driver就能完成代码的开发。本示例提案在软负载均衡器的开发较少,可以实现软硬件解耦。另一方面,本示例提案采用控制平面和数据平面分离的方法,控制平面负责慢路径的控制报文和收包建立会话报文的处理,报文只有在新建会话大的时候CPU才会有负载,相比于传统的软负载均衡,完全依赖于CPU和软件转发报文,CPU很容易存在瓶颈。而数据平面因为使用硬件,复杂逻辑成本较高由软件处理,FPGA只实现简单的进行查表转发,实现快速路径。本示例提供的方法极大的提高了负载均衡***的处理带宽和PPS,而且释放了服务器的CPU,使之可以实现混合部署,降低了负载均衡器的服务器成本。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个***,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理模块中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (13)
1.一种数据处理方法,应用于包括现场可编程逻辑门阵列FPGA的处理设备,其特征在于,包括:
确定待处理信息的数据类型;
当所述待处理信息的数据类型为业务报文时,根据预设表转发所述待处理信息;
当所述待处理信息的数据类型为控制报文时,将所述待处理信息发送至虚拟服务器,以供所述虚拟服务器处理。
2.根据权利要求1所述的方法,其特征在于,所述根据预设表转发所述待处理数据,包括:
若所述预设表中存在与所述待处理信息对应的会话信息,根据所述会话信息和所述预设表转发所述待处理信息;
若所述预设表中不存在与所述待处理信息对应的会话信息,将所述待处理信息发送至所述虚拟服务器。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述虚拟服务器发送的与会话信息对应的转发策略,并将所述转发策略存储在所述预设表中。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述虚拟服务器下发的会话删除信息,删除所述预设表中的与所述会话删除信息对应的会话信息。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述预设表指示的会话控制信息,对所述会话控制信息对应的会话进行计时;
当所述计时时长大于所述会话控制信息指示的控制阈值时,执行预设表中与所述会话控制信息对应的控制操作。
6.根据权利要求1所述的方法,其特征在于,所述当所述待处理信息的数据类型为业务报文时,根据预设表转发所述待处理信息,包括:
根据所述待处理信息的五元组,查询所述预设表,确定所述预设表中是否存在与所述待处理信息对应的会话信息;其中,所述五元组包括:源互联网协议IP地址、目的IP地址、源端口号、目的端口号和协议类型。
7.一种数据处理方法,应用于虚拟服务器,其特征在于,包括:
接收包括现场可编程逻辑门阵列FPGA的处理设备发送的待处理信息;
确定所述待处理信息的数据类型;
若所述待处理信息的数据类型为业务报文,则确定所述待处理信息对应的转发策略,创建与所述待处理信息对应的会话,并将所述转发策略发送至所述处理设备;
若所述待处理信息的数据类型为控制报文,则处理所述待处理信息。
8.根据权利要求7所述的方法,其特征在于,所述创建与所述待处理信息对应的会话,包括:
根据预设规则,确定所述虚拟服务器的工作模式;
根据所述工作模式和调度算法创建与所述待处理信息对应的会话。
9.根据权利要求7所述的方法,其特征在于,所述方法还包括:设置所述待处理信息对应的会话的会话控制信息,并将所述会话控制信息发送至所述处理设备。
10.根据权利要求7所述的方法,其特征在于,所述方法还包括:若接收到停止会话信息,则删除与所述停止会话信息对应的会话,并向所述处理设备发送会话删除信息。
11.一种数据处理装置,应用于包括现场可编程逻辑门阵列FPGA的处理设备,其特征在于,包括:
确定单元,用于确定待处理信息的数据类型;
处理单元,用于当所述待处理信息的数据类型为业务报文时,根据预设表转发所述待处理信息;
发送单元,当所述待处理信息的数据类型为控制报文时,将所述待处理信息发送至虚拟服务器,以供所述虚拟服务器处理。
12.一种数据处理装置,应用于虚拟服务器,其特征在于,包括:
通信单元,用于接收包括现场可编程逻辑门阵列FPGA的处理设备发送的待处理信息;
判断单元,用于确定所述待处理信息的数据类型;
执行单元,用于若所述待处理信息的数据类型为业务报文,则确定所述待处理信息对应的转发策略,创建与所述待处理信息对应的会话,并将所述转发策略发送至所述处理设备;若所述待处理信息的数据类型为控制报文,则处理所述待处理信息。
13.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序被处理器执行后,能够实现权利要求1至10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111313489.4A CN116089053A (zh) | 2021-11-08 | 2021-11-08 | 一种数据处理方法、装置以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111313489.4A CN116089053A (zh) | 2021-11-08 | 2021-11-08 | 一种数据处理方法、装置以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116089053A true CN116089053A (zh) | 2023-05-09 |
Family
ID=86210697
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111313489.4A Pending CN116089053A (zh) | 2021-11-08 | 2021-11-08 | 一种数据处理方法、装置以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116089053A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116599892A (zh) * | 2023-07-17 | 2023-08-15 | 浪潮电子信息产业股份有限公司 | 一种服务器***、路由方法、装置及电子设备和存储介质 |
-
2021
- 2021-11-08 CN CN202111313489.4A patent/CN116089053A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116599892A (zh) * | 2023-07-17 | 2023-08-15 | 浪潮电子信息产业股份有限公司 | 一种服务器***、路由方法、装置及电子设备和存储介质 |
CN116599892B (zh) * | 2023-07-17 | 2023-10-03 | 浪潮电子信息产业股份有限公司 | 一种服务器***、路由方法、装置及电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220393974A1 (en) | Packet Processing System and Method, Machine-Readable Storage Medium, and Program Product | |
US10564994B2 (en) | Network policy implementation with multiple interfaces | |
US8059562B2 (en) | Listener mechanism in a distributed network system | |
JP4638658B2 (ja) | オフロードされたネットワークスタックの状態オブジェクトをアップロードする方法及びそれを同期する方法 | |
US7961733B2 (en) | Method and apparatus for performing network processing functions | |
US9485178B2 (en) | Packet coalescing | |
US7930349B2 (en) | Method and apparatus for reducing host overhead in a socket server implementation | |
CN101217464B (zh) | 一种udp数据包的传输方法 | |
US8094670B1 (en) | Method and apparatus for performing network processing functions | |
CN101217493A (zh) | 一种tcp数据包的传输方法 | |
JP2003333076A (ja) | ネットワークスタックをオフロードする方法 | |
CN112929264B (zh) | 业务流量传输方法、***及网络设备 | |
CN111404817B (zh) | 一种提升网络通信设备分片数据包转发性能的方法及*** | |
WO2021008591A1 (zh) | 数据传输方法、装置及*** | |
US7469295B1 (en) | Modified round robin load balancing technique based on IP identifier | |
CN111740910A (zh) | 一种报文处理方法、装置、网络传输设备及报文处理*** | |
CN113965521B (zh) | 数据包的传输方法、服务器及存储介质 | |
CN113726636B (zh) | 软件转发设备的数据转发方法、***及电子设备 | |
CN116089053A (zh) | 一种数据处理方法、装置以及存储介质 | |
US10298494B2 (en) | Reducing short-packet overhead in computer clusters | |
CN114268518A (zh) | 一种实现sdwan数据隧道转发加速的方法及*** | |
WO2024037366A1 (zh) | 转发规则下发方法、智能网卡及存储介质 | |
CN115827266A (zh) | 多cpu***异构计算机***中消息转发框架的方法及*** | |
CN111988154B (zh) | 一种网络传输加速的方法、装置及计算机可读存储介质 | |
WO2014067055A1 (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 |