CN109074330B - 网络接口卡、计算设备以及数据包处理方法 - Google Patents
网络接口卡、计算设备以及数据包处理方法 Download PDFInfo
- Publication number
- CN109074330B CN109074330B CN201680084595.0A CN201680084595A CN109074330B CN 109074330 B CN109074330 B CN 109074330B CN 201680084595 A CN201680084595 A CN 201680084595A CN 109074330 B CN109074330 B CN 109074330B
- Authority
- CN
- China
- Prior art keywords
- nic
- data packet
- data
- packet
- virtual switch
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/02—Capturing of monitoring data
- H04L43/026—Capturing of monitoring data using flow identification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4633—Interconnection of networks using encapsulation techniques, e.g. tunneling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4641—Virtual LANs, VLANs, e.g. virtual private networks [VPN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/40—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using virtualisation of network functions or resources, e.g. SDN or NFV entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/20—Arrangements for monitoring or testing data switching networks the monitoring system or the monitored elements being virtualised, abstracted or software-defined entities, e.g. SDN or NFV
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/38—Flow based routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/64—Routing or path finding of packets in data switching networks using an overlay routing layer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/70—Virtual switches
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种数据包处理方法,该方法运用于软件定义网络SDN中的计算设备。计算设备中的NIC接收到数据流的数据包后,根据数据包的匹配信息查询流表集合,如果在流表集合中匹配上流表,则根据该流表处理该数据包,如果在流表集合中无法匹配任一流表,则NIC将该数据包发送至虚拟交换机,以使虚拟交换机获取该数据包所在数据流对应的流表,并将该流表存入流表集合以供该NIC能够直接处理该数据包所在数据流的后续数据包。本申请提供的方法降低了虚拟交换机的工作负担,提升了计算设备的工作效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种网络接口卡(英文全称:networkinterface card,缩写:NIC),一种用于处理数据包的计算设备,以及该NIC、该计算设备分别执行的数据包处理方法。
背景技术
云计算环境中,由于需要对数量较高的用户提供服务,因此用于提供云服务的数据中心中的计算设备的数量往往较多,而每个计算设备上又运行了多个虚拟机(英文全称:virtual machine,缩写:VM),如图1中的VM-1至VM-n。VM与其他计算设备上运行的VM或同一计算设备上的VM之间通过虚拟交换机(英文全称:virtual switch,缩写:VS)通信,软件定义网络(英文全称:software defined networking,缩写:SDN)控制器对各个计算设备上的虚拟交换机集中进行控制。当前常见的虚拟交换机包括open vSwitch,SDN控制器通常通过OpenFlow协议定义的流表(英文全称:flow table)对各个虚拟交换机进行控制。
每个计算设备上的硬件资源至少需要支持运行多个VM、虚拟交换机以及虚拟机监视器(英文全称:virtual machine monitor),虚拟机监视器又称为虚拟机管理器(英文全称:virtual machine manager)或管理程序(英文全称:hypervisor)。每台计算设备的硬件资源有限,如果负担了数据交换任务的虚拟交换机占用的硬件资源太多,则容易影响计算设备上VM的运行,降低工作效率。
发明内容
本申请提供了一种数据包处理方法,以提升数据包处理效率。
本申请的第一方面,提供了一种数据包处理方法,该方法应用于计算设备,该计算设备包括网络接口卡NIC和主机,该NIC与该主机建立通信连接,该主机运行虚拟机VM,该方法包括:该NIC接收数据流的第一数据包;该NIC根据该第一数据包的匹配信息查询流表集合;在无法匹配到该数据流对应的流表情况下,该NIC向该主机上运行的虚拟交换机转发该第一数据包;其中,该虚拟交换机在接收到该第一数据包后,从SDN控制器获取该数据流对应的流表,以便于该数据流对应的流表被加入到该流表集合。
该虚拟交换机通过该第一数据包获取了该数据流对应的流表后,由该虚拟交换机或主机上运行的监控模块将该数据流对应的流表存入该流表集合。
实际运行中,该NIC接收一个数据包后,根据该数据包的匹配信息查询流表集合,如果无法获取该数据包所在数据流对应的流表,说明该数据包为该数据包所在数据流的首个数据包,或该数据包不是所在数据流的首个数据包,但该流表集合中该数据流对应的流表已经老化。
该数据包处理方法,由该NIC执行流表与数据包的匹配动作,提升了数据包的处理效率,并且将无法匹配到流表的数据包发送至虚拟交换机,以获取对应的流表用于NIC对该数据流后续的数据包的处理。
结合第一方面,在第一方面的第一种实现方式中,该主机上运行的虚拟交换机上配置至少一个虚拟交换机端口,每个虚拟交换机端口对应该主机上运行的一个VM,该NIC接收该第一数据包前,该方法还包括:该NIC接收该虚拟交换机端口的配置信息;该NIC根据该虚拟交换机端口的配置信息,在该NIC上配置至少一个NIC端口,每个NIC端口通过单根-输入/输出虚拟化(英文全称:single root-input/output virtualization,缩写:SR-I/OV)技术与该主机上运行的一个VM连接。
虚拟交换机端口以及NIC端口的配置可以在第一方面提供的数据包处理方法之前完成,并且可以由该主机上运行的NIC驱动向该NIC发送该虚拟交换机端口的配置信息。
结合第一方面的第一种实现方式,在第一方面的第二种实现方式中,该数据流对应的流表包括该数据流的数据包的路由信息,在向该虚拟交换机转发该第一数据包之后,该方法还包括:该NIC,根据该第一数据包的匹配信息查询该流表集合,获取该数据流对应的流表,并根据该数据流的数据包的路由信息转发该第一数据包至目的VM。该数据流的数据包的路由信息指示该目的VM对应的NIC端口。
该虚拟交换机或主机上运行的监控模块将该数据流对应的流表存入该流表集合后,由该NIC根据该第一数据包的匹配信息查询该流表集合,此时该流表集合中已经存有该数据流对应的流表。该NIC可以在将该第一数据包发送至该虚拟交换机之后,定期将该第一数据包与该流表集合中的流表进行匹配,或者该数据流对应的流表存入该流表集合后,向该NIC发送通知消息,指示该NIC执行该第一数据包与该流表集合中的流表的匹配。
该实现方式无须该虚拟交换机执行该第一数据包与流表的匹配,降低了该虚拟交换机的工作负担。
结合第一方面的第一种实现方式,在第一方面的第三种实现方式中,该数据流对应的流表包括该数据流的数据包的路由信息,在向该虚拟交换机转发该第一数据包之后,该方法还包括:该NIC接收该虚拟交换机返回的第一数据包,该返回的第一数据包中包含该对应于目的VM的端口标识,该端口标识为虚拟交换机端口标识或NIC端口标识;该NIC根据该端口标识,转发该第一数据包到该目的VM,该端口标识由该虚拟交换机根据该数据流的数据包的路由信息添加。
该实现方式无须该NIC与该第一数据包的匹配,提升了数据包的处理效率。
结合第一方面的第一种实现方式,在第一方面的第四种实现方式中,该虚拟交换机与该NIC通过至少一个队列通信,每个队列对应该主机上运行的一个VM;在向该虚拟交换机转发该第一数据包之后,该方法还包括:该NIC从该第一数据包的目的VM对应的队列接收该第一数据包;该NIC根据该目的VM对应的队列的队列信息,从该目的VM对应的NIC端口转发该第一数据包至该目的VM。
该虚拟交换机获取该数据流的数据包的路由信息后,根据该数据流的数据包的路由信息将该第一数据包存入该目的VM对应的队列中。该NIC从该目的VM对应的队列接收该第一数据包,主机上运行的NIC驱动向该NIC发送该目的VM对应的队列的队列信息,该队列信息用于通知该NIC该第一数据包从该目的VM对应的队列获得,该NIC根据预存的队列与NIC端口的对应关系,从该目的VM对应的NIC端口转发该第一数据包至该目的VM。
该实现方式无须该NIC与该第一数据包的匹配,与前述第三种实现方式相比,也无须该NIC对端口标识的转换,进一步提升了数据包的处理效率。
本申请的第二方面,提供了一种NIC,该NIC用于执行本申请第一方面提供的数据包处理方法。该NIC包括:主机接口、网络接口和处理芯片,该网络接口用于与外部网络通信且该网络接口与该处理芯片建立通信连接,该主机接口用于与主机通信且该主机接口与该处理芯片建立通信连接,该主机运行VM;该网络接口,用于接收数据流的第一数据包;该处理芯片,用于根据该第一数据包的匹配信息查询流表集合,在无法匹配到该数据流对应的流表情况下,通过该主机接口向该主机上运行的虚拟交换机转发该第一数据包;其中,该虚拟交换机在接收到该第一数据包后,从SDN控制器获取该数据流对应的流表,以便于该数据流对应的流表被加入到该流表集合。
该NIC能够执行流表与数据包的匹配动作,提升了数据包的处理效率,并且该NIC将无法匹配到流表的数据包发送至虚拟交换机,以获取对应的流表用于NIC对该数据流后续的数据包的处理。
结合第二方面,在第二方面的第一种实现方式中,该主机上运行的虚拟交换机上配置至少一个虚拟交换机端口,每个虚拟交换机端口对应该主机上运行的一个VM;该处理芯片,还用于接收该虚拟交换机端口的配置信息,根据该虚拟交换机端口的配置信息,在该NIC上配置至少一个NIC端口,每个NIC端口通过SR-I/OV技术与该主机上运行的一个VM连接。
结合第二方面的第一种实现方式,在第二方面的第二种实现方式中,该处理芯片,还用于根据该第一数据包的匹配信息查询该流表集合,获取该数据流对应的流表,该数据流对应的流表包括该数据流的数据包的路由信息,并根据该数据流的数据包的路由信息转发该第一数据包至目的VM。
该实现方式中,无须该虚拟交换机与该第一数据包的匹配,降低了该虚拟交换机的工作负担。
结合第二方面的第一种实现方式,在第二方面的第三种实现方式中,该处理芯片,还用于接收该虚拟交换机返回的第一数据包,该返回的第一数据包中包含对应于目的VM的端口标识,该端口标识为虚拟交换机端口标识或NIC端口标识,该端口标识由该虚拟交换机根据该数据流的数据包的路由信息添加,该数据流对应的流表包括该数据流的数据包的路由信息;还用于根据该端口标识,转发该第一数据包到该目的VM。
该实现方式中,该NIC无须将该第一数据包与流表进行匹配,提升了数据包的处理效率。
结合第二方面的第一种实现方式,在第二方面的第四种实现方式中,该虚拟交换机与该NIC通过至少一个队列通信,每个队列对应该主机上运行的一个VM;该处理芯片,还用于从该第一数据包的目的VM对应的队列接收该第二数据包,并根据该目的VM对应的队列的队列信息,从该目的VM对应的NIC端口转发该第二数据包至该目的VM。
该实现方式中,该NIC无须将该第一数据包与流表进行匹配,并且与前述第三种实现方式相比,该NIC也无须对该端口标识进行转换,进一步提升了数据包的处理效率。
本申请第三方面提供了一种数据包处理方法,该方法应用于计算设备,该计算设备包括网络接口卡NIC和主机,该NIC与该主机建立通信连接,该主机运行虚拟机VM,该方法包括:该NIC接收数据流的第二数据包;该NIC根据该第二数据包的匹配信息查询流表集合,获取该数据流对应的流表,该数据流对应的流表包括该数据流的数据包的路由信息;该NIC根据该数据流的数据包的路由信息,转发该第二数据包到目的VM。
该数据包处理方法,由该NIC执行流表与数据包的匹配动作,提升了数据包的处理效率。
结合第三方面,在第三方面的第一种实现方式中,该NIC通过SR-I/OV技术与该主机上运行的VM连接;该NIC根据该数据流的数据包的路由信息,通过该NIC与该目的VM的连接转发该第二数据包到该目的VM。
结合第三方面的第一种实现方式,在第三方面的第二种实现方式中,该主机上运行的虚拟交换机上配置至少一个虚拟交换机端口,每个虚拟交换机端口对应该主机上运行的一个VM;该NIC接收数据流的第二数据包前,该方法还包括:该NIC接收该虚拟交换机端口的配置信息;根据该虚拟交换机端口的配置信息,在该NIC上配置至少一个NIC端口,每个NIC端口通过SR-I/OV技术与该主机上运行的一个VM连接,该数据流的数据包的路由信息指示该目的VM对应的NIC端口。
结合第三方面的第二种实现方式,在第三方面的第三种实现方式中,该NIC接收数据流的第二数据包前,该方法还包括:该NIC接收该数据流的第三数据包;该NIC根据该第三数据包的匹配信息查询该流表集合;在无法匹配到该数据流对应的流表情况下,该NIC向该主机上运行的虚拟交换机转发该第三数据包;其中,该虚拟交换机在接收到该第三数据包后,从SDN控制器获取该数据流对应的流表,以便于该数据流对应的流表被加入到该流表集合。
结合第三方面的第三种实现方式,在第三方面的第四种实现方式中,在向该虚拟交换机转发该第三数据包之后,该方法还包括:该NIC根据该第三数据包的匹配信息查询该流表集合,获取该数据流对应的流表,并根据该数据流的数据包的路由信息转发该第三数据包至该目的VM。
结合第三方面的第三种实现方式,在第三方面的第五种实现方式中,在向该虚拟交换机转发该第三数据包之后,该方法还包括:该NIC接收该虚拟交换机返回的第三数据包,该返回的第三数据包中包含对应于该目的VM的端口标识,该端口标识为虚拟交换机端口标识或NIC端口标识,该端口标识由该虚拟交换机根据该数据流的数据包的路由信息添加;该NIC根据该端口标识,转发该第三数据包到该目的VM。
结合第三方面的第三种实现方式,在第三方面的第六种实现方式中,该虚拟交换机与该NIC通过至少一个队列通信,每个队列对应该主机上运行的一个VM;在向该虚拟交换机转发该第三数据包之后,该方法还包括:该NIC从该目的VM对应的队列接收该第三数据包;该NIC根据该目的VM对应的队列的队列信息,从该目的VM对应的NIC端口转发该第三数据包至该目的VM。
结合第三方面或第三方面的前述任一种实现方式,在第三方面的第七种实现方式中,该NIC接收数据流的第二数据包包括:该NIC接收overlay类型数据包,该overlay类型数据包包括overlay头和该第二数据包,该overlay头包括虚拟可扩展局域网VXLAN头,或使用通用路由的网络虚拟化NVGRE头,或无状态传输隧道STT头;该NIC剥去该overlay类型数据包的overlay头,获取该第二数据包。
需要说明的是,如果该数据流的数据包均采用了overlay技术,该NIC也需要对将该第三数据包对应的overlay头剥离后,才能获取该第三数据包。本实现方式中,示例性的提出了该NIC对该overlay类型数据包的剥离,实际上该NIC接收该数据流的其他overlay类型数据包后,也会将其overlay头剥离以获取内层的数据包。
该实现方式中,该NIC实现了对overlay头的剥离,降低了主机的工作负担。
结合第三方面或第三方面的前述任一种实现方式,在第三方面的第八种实现方式中,该NIC转发该第二数据包到目的VM之前,该方法还包括:该NIC对该第二数据包进行安全组检查,在确定该第二数据包的安全组检查通过之后,执行转发该第二数据包到该目的VM的步骤。
需要说明的是,如果该数据流的数据包均设置了安全组,,该NIC也需要对确定该第三数据包的安全组检查通过后,才转发该第三数据包。本实现方式中,示例性的提出了该NIC对该第二数据包的安全组检查,实际上该NIC转发该数据流的其他数据包之前,也需要对其进行安全组检查。
该实现方式中,该NIC还实现了对该第二数据包的安全组检查,提升了数据包收发的安全的同时,进一步降低了主机的工作负担。
本申请的第四方面提供了一种NIC,该NIC用于执行前述第三方面提供的数据包处理方法。该NIC包括:主机接口、网络接口和处理芯片,该网络接口用于与外部网络通信且该网络接口与该处理芯片建立通信连接,该主机接口用于与主机通信且该主机接口与该处理芯片建立通信连接,该主机运行VM;该网络接口,用于接收数据流的第二数据包;该处理芯片,用于根据该第二数据包的匹配信息查询流表集合,获取该数据流对应的流表,该数据流对应的流表包括该数据流的数据包的路由信息;以及根据该数据流的数据包的路由信息,转发该第二数据包到目的VM。
结合第四方面,在第四方面的第一种实现方式中,该NIC通过SR-I/OV技术与该主机上运行的VM连接;
该处理芯片,用于根据该数据流的数据包的路由信息,通过该NIC与该目的VM的连接转发该第二数据包到该目的VM。
结合第四方面的第一种实现方式,在第四方面的第二种实现方式中,该主机上运行的虚拟交换机上配置至少一个虚拟交换机端口,每个虚拟交换机端口对应该主机上运行的一个VM;该处理芯片,还用于接收该虚拟交换机端口的配置信息,根据该虚拟交换机端口的配置信息在该NIC上配置至少一个NIC端口,每个NIC端口通过SR-I/OV技术与该主机上运行的一个VM连接,该数据流的数据包的路由信息指示该目的VM对应的NIC端口。
结合第四方面的第二种实现方式,在第四方面的第三种实现方式中,该网络接口,还用于接收该数据流的第三数据包;该处理芯片,还用于根据该第三数据包的匹配信息查询该流表集合,在无法匹配到该数据流对应的流表情况下,向该主机上运行的虚拟交换机转发该第三数据包;其中,该虚拟交换机在接收到该第三数据包后,从SDN控制器获取该数据流对应的流表,以便于该数据流对应的流表被加入到该流表集合。
结合第四方面的第三种实现方式,在第四方面的第四种实现方式中,该处理芯片,还用于根据该第三数据包的匹配信息查询该流表集合,获取该数据流对应的流表,并根据该数据流的数据包的路由信息转发该第三数据包至该目的VM。
结合第四方面的第三种实现方式,在第四方面的第五种实现方式中,该处理芯片,还用于接收该虚拟交换机返回的第三数据包,该返回的第三数据包中包含对应于该目的VM的端口标识,该端口标识为虚拟交换机端口标识或NIC端口标识,该端口标识由该虚拟交换机根据该数据流的数据包的路由信息添加;还用于根据该端口标识,转发该第三数据包到该目的VM。
结合第四方面的第三种实现方式,在第四方面的第六种实现方式中,该虚拟交换机与该NIC通过至少一个队列通信,每个队列对应该主机上运行的一个VM;该处理芯片,还用于从该目的VM对应的队列接收该第三数据包,并根据该目的VM对应的队列的队列信息,从该目的VM对应的NIC端口转发该第三数据包至该目的VM。
结合第四方面或第四方面的前述任一种实现方式,在第四方面的第七种实现方式中,该网络接口,用于接收overlay类型数据包,该overlay类型数据包包括overlay头和该第二数据包,该overlay头包括虚拟可扩展局域网VXLAN头,或使用通用路由的网络虚拟化NVGRE头,或无状态传输隧道STT头;该处理芯片,用于剥去该overlay类型数据包的overlay头,获取该第二数据包。
结合第四方面或第四方面的前述任一种实现方式,在第四方面的第八种实现方式中,该处理芯片转发该第二数据包到该目的VM之前,还用于对该第二数据包进行安全组检查,在确定该第二数据包的安全组检查通过之后,执行转发该第二数据包到该目的VM的步骤。
本申请的第五方面提供了一种计算设备,该计算设备包括网络接口卡NIC和主机,该NIC与该主机建立通信连接,该主机上运行虚拟机VM和虚拟交换机,该虚拟交换机上配置至少一个虚拟交换机端口,每个虚拟交换机端口对应该主机上运行的一个VM;该主机,用于向该NIC发送该虚拟交换机端口的配置信息;该NIC,用于根据该虚拟交换机端口的配置信息,在该NIC上配置至少一个NIC端口,每个NIC端口通过SR-I/OV技术与该主机上运行的一个VM连接;该NIC,还用于接收数据流的第二数据包,根据该第二数据包的匹配信息查询流表集合,获取该数据流对应的流表,该数据流对应的流表包括该数据流的数据包的路由信息,该数据流的数据包的路由信息指示目的VM对应的NIC端口,以及根据该数据流的数据包的路由信息,转发该第一数据包到该目的VM。
结合第五方面,在第五方面的第一种实现方式中,该NIC,还用于接收该数据流的第三数据包,根据该第三数据包的匹配信息查询该流表集合,在无法匹配到该数据流对应的流表情况下,向该主机转发该第三数据包;该主机,用于在接收到该第三数据包后,从SDN控制器获取该数据流对应的流表,以便于该数据流对应的流表被加入到该流表集合。
具体的,该NIC向该主机上运行的虚拟交换机发送该第三数据包。
结合第五方面的第一种实现方式,在第五方面的第二种实现方式中,该NIC,还用于根据该第三数据包的匹配信息查询该流表集合,获取该数据流对应的流表,以及根据该数据流的数据包的路由信息转发该第三数据包至该目的VM。
该NIC在该数据流对应的流表被加入到该流表集合后,根据该第三数据包的匹配信息查询该流表集合。
结合第五方面的第一种实现方式,在第五方面的第三种实现方式中,该主机,还用于生成返回的第三数据包,该返回的第三数据包中包含对应于该目的VM的端口标识,该端口标识为虚拟交换机端口标识或NIC端口标识,该端口标识由该主机根据该数据流的数据包的路由信息添加;该NIC,还用于接收该返回的第三数据包,并根据该端口标识,转发该第三数据包到该目的VM。
结合第五方面的第一种实现方式,在第五方面的第四种实现方式中,该虚拟交换机与该NIC通过至少一个队列通信,每个队列对应该主机上运行的一个VM;该主机,还用于将该第三数据包发送至该目的VM对应的队列;该NIC,还用于从该目的VM对应的队列接收该第三数据包,以及根据该目的VM对应的队列的队列信息,从该目的VM对应的NIC端口转发该第三数据包至该目的VM。
该主机在接收到该NIC在发来的该第三数据包之后,将该第三数据包发送至该目的VM对应的队列。
结合第五方面或第五方面的前述任一种实现方式,在第五方面的第五种实现方式中,该NIC,具体用于接收overlay类型数据包,该overlay类型数据包包括overlay头和该第二数据包,该overlay头包括虚拟可扩展局域网VXLAN头,或使用通用路由的网络虚拟化NVGRE头,或无状态传输隧道STT头,以及剥去该overlay类型数据包的overlay头,获取该第二数据包。
结合第五方面或第五方面的前述任一种实现方式,在第五方面的第六种实现方式中,该NIC转发该第二数据包到目的VM之前,还用于对该第二数据包进行安全组检查,在确定该第二数据包的安全组检查通过之后,执行转发该第二数据包到该目的VM的步骤。
本申请的第六方面提供了一种数据包处理方法,该方法运用于前述第五方面提供的计算设备。该方法包括:主机向NIC发送该虚拟交换机端口的配置信息;该NIC根据该虚拟交换机端口的配置信息,在该NIC上配置至少一个NIC端口,每个NIC端口通过SR-I/OV技术与该主机上运行的一个VM连接;该NIC接收数据流的第二数据包,根据该第二数据包的匹配信息查询流表集合,获取该数据流对应的流表,该数据流对应的流表包括该数据流的数据包的路由信息,该数据流的数据包的路由信息指示目的VM对应的NIC端口,以及根据该数据流的数据包的路由信息,转发该第二数据包到该目的VM。
结合第六方面,在第六方面的第一种实现方式中,该方法还包括:该NIC接收该数据流的第三数据包,根据该第三数据包的匹配信息查询该流表集合,在无法匹配到该数据流对应的流表情况下,向该主机转发该第三数据包;该主机在接收到该第三数据包后,从SDN控制器获取该数据流对应的流表,以便于该数据流对应的流表被加入到该流表集合。
结合第六方面的第一种实现方式,在第六方面的第二种实现方式中,在该数据流对应的流表被加入到该流表集合之后,该方法还包括:该NIC根据该第三数据包的匹配信息查询该流表集合,获取该数据流对应的流表,以及根据该数据流的数据包的路由信息转发该第三数据包至该目的VM。
结合第六方面的第一种实现方式,在第六方面的第三种实现方式中,在该NIC向该主机转发该第三数据包之后,该方法还包括:该主机生成返回的第三数据包,该返回的第三数据包中包含对应于该目的VM的端口标识,该端口标识为虚拟交换机端口标识或NIC端口标识,该端口标识由该主机根据该数据流的数据包的路由信息添加;该NIC接收该返回的第三数据包,并根据该端口标识,转发该第三数据包到该目的VM。
结合第六方面的第一种实现方式,在第六方面的第四种实现方式中,该虚拟交换机与该NIC通过至少一个队列通信,每个队列对应该主机上运行的一个VM;在该NIC向该主机转发该第三数据包之后,该方法还包括:该主机将该第三数据包发送至该目的VM对应的队列;该NIC从该目的VM对应的队列接收该第三数据包,以及根据该目的VM对应的队列的队列信息,从该目的VM对应的NIC端口转发该第三数据包至该目的VM。
结合第六方面或第六方面的前述任一种实现方式,在第六方面的第五种实现方式中,该NIC接收该第二数据包具体包括:该NIC接收overlay类型数据包,该overlay类型数据包包括overlay头和该第二数据包,该overlay头包括虚拟可扩展局域网VXLAN头,或使用通用路由的网络虚拟化NVGRE头,或无状态传输隧道STT头,以及剥去该overlay类型数据包的overlay头,获取该第二数据包。
结合第六方面或第六方面的前述任一种实现方式,在第六方面的第六种实现方式中,该NIC转发该第二数据包到目的VM之前,该方法包括:该NIC对该第二数据包进行安全组检查,在确定该第二数据包的安全组检查通过之后,执行转发该第二数据包到该目的VM的步骤。
本申请的第七方面,提供了一种配置方法,该配置方法应用于主机,该主机与NIC建立通信连接,该主机运行VM、虚拟交换机和NIC驱动,该主机上运行的虚拟交换机上配置至少一个虚拟交换机端口,每个虚拟交换机端口对应该主机上运行的一个VM,该方法包括:该NIC驱动向该NIC发送该虚拟交换机端口的配置信息,该虚拟交换机端口的配置信息指示在该NIC上配置至少一个NIC端口,每个NIC端口通过SR-I/OV技术与该主机上运行的一个VM连接。
本申请的第八方面,提供了一种数据包处理方法,该方法应用于执行了本申请第七方面提供的配置方法的主机,该主机运行时执行本申请第五方面提供的数据包处理方法中主机侧的部分。该方法包括:该主机上运行的虚拟交换机接收数据流的第三数据包;该虚拟交换机从SDN控制器获取该数据流对应的流表;该虚拟交换机或该主机运行的监控模块将该数据流对应的流表加入到流表集合。
结合第八方面,在第八方面的第一种实现方式中,在该数据流对应的流表被加入到该流表集合后,该方法还包括:该虚拟交换机向该NIC发送通知消息,该通知消息用于通知该NIC该数据流对应的流表已经加入到流表集合,以使得该NIC根据该流表集合中的该数据流对应的流表,处理该第三数据包。
结合第八方面,在第八方面的第二种实现方式中,该数据流对应的流表包括该数据流的数据包的路由信息,该方法还包括:该虚拟交换机根据该数据流的数据包的路由信息生成返回的第三数据包,将该返回的第三数据包发送至该NIC,该返回的第三数据包中包含对应于该目的VM的端口标识,该端口标识为虚拟交换机端口标识或NIC端口标识,以使该NIC根据该端口标识转发该第三数据包到该目的VM。
结合第八方面,在第八方面的第三种实现方式中,该虚拟交换机与该NIC通过至少一个队列通信,每个队列对应该主机上运行的一个VM;该方法还包括:该虚拟交换机将该第三数据包发送至该目的VM对应的队列;该NIC驱动将该目的VM对应的队列的队列信息发送至该NIC,以使该NIC根据该目的VM对应的队列的队列信息,从该目的VM对应的NIC端口转发该第三数据包至该目的VM。
本申请第九方面提供了一种主机,该主机包括处理器、存储器、总线,该处理器和该存储器通过该总线建立通信连接,该处理器运行时,执行前述第七方面提供的配置方法。
本申请第十方面提供了一种主机,该主机包括处理器、存储器、总线,该处理器和该存储器通过该总线建立通信连接,该处理器运行时,执行前述第八方面或第八方面的任一种实现方式提供的数据包处理方法。
本申请的第十一方面,提供了一种存储介质,该存储介质中存储了程序代码,该程序代码被计算设备运行时,执行第七方面提供的配置方法。该存储介质包括但不限于快闪存储器、硬盘(英文:hard disk drive,缩写:HDD)或固态硬盘(英文:solid state drive,缩写:SSD)。
本申请的第十二方面,提供了一种存储介质,该存储介质中存储了程序代码,该程序代码被计算设备运行时,执行第八方面或第八方面的任意一种实现方式提供的数据包处理方法。该存储介质包括但不限于快闪存储器、HDD或SSD。
本申请的第十三方面,提供了一种计算机程序产品,该计算机程序产品可以为一个软件安装包,该软件安装包被计算设备运行时,执行第七方面提供的配置方法。
本申请的第十四方面,提供了一种计算机程序产品,该计算机程序产品可以为一个软件安装包,该软件安装包被计算设备运行时,执行第八方面或第八方面的任意一种实现方式提供的数据包处理方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作以简单地介绍,显而易见的,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中数据中心架构的示意图;
图2a为本申请实施例提供的SDN架构的示意图;
图2b为现有技术中SDN中的计算设备的组织结构示意图;
图2c为本申请实施例提供的计算设备的组织结构示意图;
图3为本申请实施例提供的又一计算设备的组织结构示意图;
图4为本申请实施例提供的数据包处理方法的流程示意图;
图5a为本申请实施例提供的另一计算设备的组织结构示意图;
图5b为本申请实施例提供的另一计算设备的组织结构示意图;
图5c为本申请实施例提供的另一计算设备的组织结构示意图;
图5d为本申请实施例提供的另一计算设备的组织结构示意图;
图6a为本申请实施例提供的NIC的组织结构示意图;
图6b为本申请实施例提供的又一NIC的组织结构示意图;
图6c为本申请实施例提供的又一NIC的组织结构示意图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
本申请中采用术语第一、第二、第三等来区分各个对象,例如第一数据包、第二数据包、第三数据包等,但各个“第一”、“第二”、“第三”之间不具有逻辑或时序上的依赖关系。
贯穿本说明书,数据包由匹配信息和载荷(英文全称:payload)构成。其中,匹配信息用于与流表的匹配域进行匹配。
贯穿本说明书,流表(英文全称:flow table)用于在SDN中控制数据流,也可以称为SDN流表,具体可以采用符合OpenFlow协议的流表或符合其他协议的流表。流表至少包括匹配域和执行域,该匹配域用于与数据包进行匹配,该执行域用于指示匹配上流表的数据包应该执行的动作。执行域包括了数据包的动作标识,例如转发、丢弃、上送SDN控制器等,执行域还包括了数据包的路由信息,例如数据包的目的端口标识等。
贯穿本说明书,数据流(英文全称:data flow)指示能够匹配相同流表的一系列数据包。具体的,同一数据流中的数据包的匹配信息,均可以匹配上该数据流对应的流表的匹配域。
贯穿本说明书,虚拟交换机为安装在计算设备上的,通过软件实现的交换设备,常用于SDN中。常见的虚拟交换机包括Open vSwitch,缩写为OVS,OVS为一个开源项目提供的虚拟交换机。
贯穿本说明书,overlay类型数据包指代采用了overlay封装技术处理的数据包,具体的overlay封装技术包括了虚拟可扩展局域网(英文全称:virtual extensible localarea network,缩写:VXLAN)技术,使用通用路由的网络虚拟化(英文全称:networkvirtualization using generic routing encapsulation,缩写:NVGRE)技术和无状态传输隧道(英文全称:stateless transport tunneling,缩写:STT)技术。Overlay类型数据包包括两个部分,overlay头和原始数据包,该原始数据包指代VM发出的数据包或经过虚拟交换机的端口发往VM的数据包,该overlay头叠加在该原始数据包上,以用于该overlay类型数据包在overlay网络中传输。不同的overlay封装技术对应于不同的overlay头。
贯穿本说明书,流表集合中包括了一个或多个流表。本申请中包括两个流表集合,即虚拟交换机可访问流表集合和NIC可访问流表集合。虚拟交换机可访问流表集合中的流表供虚拟交换机使用,NIC可访问流表集合中的流表供NIC使用。具体的,如图2c所示,虚拟交换机可访问流表集合一般存储于计算设备的存储设备中,NIC可访问流表集合可以存储于计算设备的存储设备中,也可以存储于NIC内部的存储设备中。若虚拟交换机可访问流表集合和NIC可访问流表集合均存储于计算设备的存储设备中,计算设备在其存储设备中为虚拟交换机可访问流表集合和NIC可访问流表集合分别开辟一块内存空间。本申请的附图中,以NIC可访问流表集合存储于计算设备的存储设备中为例进行介绍,本领域技术人员可以直接推导出NIC可访问流表集合存储于NIC内部的情况。
贯穿本说明书,示例性的采用了SR-IOV的NIC与VM直连的技术,在实际使用中也可以采用其他支持NIC与VM直连的技术。
本申请实施例所应用的SDN架构
图2a为本申请实施例所应用的SDN架构的示意图,图2a中示意性的采用了集中式的SDN控制器,实际中SDN控制器也可以分布式的部署于各个计算设备。
各个计算设备上的硬件层设置有NIC,处理器以及存储设备。本申请中,将每个计算设备除NIC之外的部分称之为主机。其中,处理器可以为中央处理器(英文:centralprocessing unit,缩写:CPU),存储设备包括易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random-access memory,缩写:RAM),以及非易失性存储器(英文:non-volatile memory),例如只读存储器(英文:read-only memory,缩写:ROM)、快闪存储器、HDD或SSD等。每个主机运行时,其硬件层支持软件层内的虚拟交换机以及多个VM的运行。每个计算设备内的主机和NIC建立通信连接,主机通过NIC与外部网络通信,例如首先由NIC从外部网络获取发往该主机上运行的VM数据包,然后发送至主机上运行的VM,而该主机上运行的VM发往外部网络的数据包首先发送至NIC,然后通过NIC发送至外部网络。
下面以计算设备1为例展示现有技术中的数据包处理流程与本申请提供的数据包处理流程的区别。如图2b,现有技术中,计算设备1内的NIC从外部网络接收到数据包后,如果判断该数据包的目的地属于计算设备1则将该数据包发送至虚拟交换机,则由虚拟交换机将该数据包与虚拟交换机可访问流表集合中的流表进行匹配,并根据匹配上的流表的指示,将该数据包发送至与该虚拟交换机相连的目的VM。由以上数据包的处理流程可见,现有技术中,数据包处理过程中主要的运行压力集中在虚拟交换机上,而虚拟交换机的运行依赖于计算设备上的硬件层的资源,虚拟交换机占用的处理器和存储设备资源越多,计算设备上能够用于VM运行的资源就越少,而如果限定虚拟交换机能够占用的硬件层的资源的上限,那么随着数据包流量的增大,虚拟交换机的性能将难以保证。
如图2c,本申请提供的数据包处理流程中,计算设备1内的NIC从外部网络接收到数据包后,如果判断该数据包的目的VM运行于计算设备1上,则将该数据包与NIC可访问流表集合中的流表进行匹配,并根据匹配上的流表的指示,将该数据包发送至与该NIC相连的目的VM。该NIC可访问流表集合内的流表来源于主机,NIC如果无法将该数据包匹配上NIC可访问流表集合中的流表,就会将该数据包发送至虚拟交换机,虚拟交换机向SDN控制器请求获取该数据包对应的流表,并将获取的该数据包对应的流表发送至NIC可访问流表集合,以供NIC在接下来的数据包处理过程中使用。
由以上数据包的处理流程可见,在本申请提供的数据包处理流程中,数据包的处理过程中的一部分运行压力被转移到了NIC上,而NIC作为一个硬件设备,不仅处理效率高,并且其运行无需占用硬件层的其他资源。
需要说明的是,示意性的,图2c中的计算设备1上的所有VM都与NIC相连,实际上也可以只有部分VM与NIC相连,其他部分VM与虚拟交换机相连,具体VM的配置方式并不限定于必须全部都与NIC相连。
图2a和图2c中的计算设备可以通过图3所示的计算设备200实现,其组织结构示意图如图3所示,计算设备200包括了主机以及NIC206,NIC206通过主机的总线208与主机的处理器202以及存储器204建立通信连接,NIC206、处理器202和存储器204之间也可以通过无线传输等其他手段实现通信。计算设备200通过NIC206与外部网络通信。
工作状态下,主机运行了至少一个VM以及虚拟交换机,且用于实现图4提供的数据包处理方法中主机侧的方法的程序代码保存在存储设备204中,并由处理器202执行。工作状态下,NIC206执行图4提供的数据包处理方法中NIC侧的方法。
本申请还提供了一种数据包处理方法,前述SDN架构中的计算设备运行时执行该方法,其流程示意图如图4所示。
步骤402,计算设备的主机接收第一虚拟交换机端口的配置信息,该第一虚拟交换机端口的配置信息指示在虚拟交换机上建立至少一个虚拟交换机端口,每个虚拟交换机端口对应该主机上运行的一个VM。
步骤404,该主机生成第二虚拟交换机端口的配置信息,并将该第二虚拟交换机端口的配置信息发送至计算设备的NIC。
具体的,该主机上运行的拦截模块,获取该第一虚拟交换机端口的配置信息,将该第一虚拟交换机端口的配置信息发送至该主机上运行的NIC驱动,该NIC驱动根据该第一虚拟交换机端口的配置信息,生成该第二虚拟交换机端口的配置信息,并发送至该NIC。该第一虚拟交换机端口的配置信息与该第二虚拟交换机端口的配置信息的功能类似,该NIC驱动对其转换主要为了符合NIC驱动与NIC通信的规范。
步骤406,该NIC根据该第二虚拟交换机端口的配置信息,在该NIC上配置至少一个NIC端口,每个NIC端口通过SR-I/OV技术与该主机上运行的一个VM连接。
NIC端口具体可以为SR-I/OV技术定义的虚拟功能(英文全称:virtual function,缩写:VF)的端口。
步骤402至步骤406为可选步骤,且步骤402至步骤406为该虚拟交换机和该NIC的配置过程,无须每次执行步骤408及步骤408的后续步骤前都执行一次步骤402至步骤406。如图5a或图5b或图5c,通过该配置过程,主机上运行的VM通过NIC端口与NIC连接,虚拟交换机上虽然建立了与VM一一对应的VS端口,但主机上运行的VM并不与虚拟交换机连接。
由于VS端口与VM一一对应,同时VM与NIC端口一一对应,因此VS端口与NIC端口一一对应。在步骤402至步骤406的执行过程中将VS端口与NIC端口的对应关系存入该虚拟交换机,或将VS端口与NIC端口的对应关系存入该NIC。
如图5b或图5c,该虚拟交换机和该NIC的配置过程中,或该虚拟交换机和该NIC的配置过程之前或之后,还需要配置该虚拟交换机与该NIC通信的至少一个队列,用于该虚拟交换机将从NIC接收到的数据包返回给该NIC。队列的配置有两种方式,其一如图5b所示,该虚拟交换机与该NIC通过一个队列通信,该虚拟交换机将需要发往该NIC的全部数据包发送至该队列;其二如图5c所示,该虚拟交换机与该NIC通过n个队列通信,n为该主机上运行的VM的数量,每一个队列与一个VM对应。
该配置过程无须上层管理设备的感知,由该计算设备将本应连接于虚拟交换机的VM连接于NIC上,无须上层管理设备对配置信息进行修改,提升了配置过程的兼容性和降低了实现难度。
步骤408,该NIC接收第一overlay类型数据包,该第一overlay类型数据包包括第一overlay头和该第一数据包,该第一overlay头包括VXLAN头,或NVGRE头,或STT头。
该第一overlay类型数据包可以为外部网络发送至该NIC的。
步骤410,该NIC剥去该第一overlay类型数据包的第一overlay头,获取该第一数据包。
相对于现有技术中,由主机执行剥离overlay头的动作,由NIC剥离overlay头降低了主机的工作负担。
需要说明的是,如果步骤408中该NIC接收的不是overlay类型数据包,而是直接接收到第一数据包,则无须执行步骤410。
步骤412,该NIC根据该第一数据包的匹配信息查询NIC可访问流表集合。若无法匹配NIC可访问流表集合中的任一流表,则执行步骤414、步骤416、步骤4181,或步骤4182至步骤4184,或步骤4185至步骤4186。若能够匹配NIC可访问流表集合中的流表,则执行步骤420。
如果该第一数据包的匹配信息无法匹配NIC可访问流表集合中的任一流表,则该第一数据包为该第一数据包所在的数据流的首个数据包,或该第一数据包不是该数据流的首个数据包,但该数据流对应的流表在NIC可访问流表集合中已经被删除。
如果该第一数据包的匹配信息能够匹配NIC可访问流表集合中的流表,则说明NIC可访问流表集合中已经存有该第一数据包所在的数据流对应的流表。
步骤414,该NIC通过主机端口向该虚拟交换机转发该第一数据包。
该主机端口可以为SR-I/OV技术定义的物理功能(英文全称:physical function,缩写:PF)的端口。
步骤416,该虚拟交换机在接收到该第一数据包后,获取该数据流对应的流表,该数据流对应的流表被加入到该NIC可访问流表集合。
该虚拟交换机获取该第一数据包后,将该第一数据包发送至SDN控制器,并接收SDN控制器根据该第一数据包生成的该数据流对应的流表。虚拟交换机可访问流表集合中,还可能存储有生成该数据流对应的流表所需的信息,例如慢表(英文全称:slow table),则该虚拟交换机根据该信息生成该数据流对应的流表即可,无须将该第一数据包发送至SDN控制器。
该虚拟交换机将该数据流对应的流表存入虚拟交换机可访问流表集合和NIC可访问流表集合。或者,该主机上运行的监控模块监控该虚拟交换机获取该数据流对应的流表,该监控模块将该数据流对应的流表存入NIC可访问流表集合。
由于该数据流对应的流表由SDN控制器生成,而SDN控制器无须知道主机上运行的VM实际连接于NIC。因此该数据流的数据包的路由信息具体可以包括VS端口标识,而VS端口与VM一一对应,同时VM与NIC端口一一对应,因此VS端口与NIC端口一一对应,该数据流的数据包的路由信息指示目的VM的NIC端口。
步骤416后,将该第一数据包发送至其目的VM有三种可选的方案,分别为步骤4181、步骤4182至步骤4184和步骤4185至步骤4186,实际步骤416后可以执行这三种可选方案中的任一种。
步骤4181,该NIC根据该第一数据包的匹配信息查询该NIC可访问流表集合,获取该数据流对应的流表,并根据该数据流的数据包的路由信息转发该第一数据包至该目的VM。
这种情况下,该NIC需要存有VS端口标识与NIC端口标识的对应关系,该NIC获取该数据流的数据包的路由信息包括的VS端口标识后,将VS端口标识转换为NIC端口标识,并将该第一数据包从该NIC端口标识对应的NIC端口发出。
步骤416中该虚拟交换机或该监控模块将该数据流对应的流表存储到NIC可访问流表集合后,向该NIC发送通知消息,该通知消息用于通知该NIC该数据流对应的流表已经存储于NIC可访问流表集合。该NIC接收到该通知信息后,根据该第一数据包的匹配信息在该NIC可访问流表集合中可以匹配上该数据流对应的流表。
或者,该NIC在步骤414后,周期性的根据该第一数据包的匹配信息匹配该NIC可访问流表集合的流表,在步骤416执行完毕后该NIC的下一次匹配中,该NIC根据该第一数据包的匹配信息在该NIC可访问流表集合中可以匹配上该数据流对应的流表。
可选步骤4181无须虚拟交换机将该第一数据包和该数据流对应的流表进行匹配,降低了虚拟交换机的工作负担。
步骤4182,该虚拟交换机将该第一数据包与该虚拟交换机可访问流表集合中的该数据流对应的流表进行匹配,获取该数据流的数据包的路由信息。
步骤4183,该虚拟交换机,根据该数据流的数据包的路由信息生成返回的第一数据包,将该返回的第一数据包发送至该NIC,该返回的第一数据包中包含对应于该目的VM的端口标识,该端口标识为虚拟交换机端口标识或NIC端口标识。
步骤4184,该NIC接收该返回的第一数据包,并根据该端口标识,转发该第二数据包到该目的VM。
如图5b,如步骤416中所述,该数据流的数据包的路由信息具体可以包括VS端口标识。例如,该第一数据包的目的VM为VM-1,VM-1在虚拟交换机上对应的端口为VS端口1,VM-1在NIC上对应的端口为NIC端口1,则该数据流的数据包的路由信息包括VS端口1。步骤4183中,该虚拟交换机生成的该返回的第一数据包中包含了该第一数据包的目的VM的端口标识和该第一数据包,而该第一数据包的目的VM的端口标识为VS端口1或NIC端口1。
步骤4183中可选的,该虚拟交换机将该数据流的数据包的路由信息添加到该返回的第一数据包中,则该目的VM的端口标识为VS端口1,并通过队列发送至该NIC。这种情况下,该NIC需要存有VS端口标识与NIC端口标识的对应关系,该NIC接收到该返回的第一数据包后,将该VS端口1转换为NIC端口1,并将该第一数据包通过NIC端口1发送至VM-1。这种实施方式下该虚拟交换机的负载更低,提升了主机的工作效率。
步骤4183中可选的,该虚拟交换机获取将该数据流的数据包的路由信息后,将该数据流的数据包的路由信息包括的VS端口1转换为NIC端口1,并将NIC端口1添加到该返回的第一数据包中,则该目的VM的端口标识为NIC端口1,并通过队列将该返回的第一数据包发送至该NIC。这种情况下,该虚拟交换机需要存有VS端口标识与NIC端口标识的对应关系。该NIC接收到该返回的第一数据包后,将该第一数据包通过NIC端口1发送至VM-1。这种实施方式下,NIC无须对端口标识进行转换,可以更高效的处理数据包。
步骤4185,该虚拟交换机将该第一数据包发送至该目的VM对应的队列。该虚拟交换机与该NIC通过至少一个队列通信,每个主机上运行的VM对应一个队列。
步骤4186,该NIC从该目的VM对应的队列接收该第一数据包,并该NIC根据该目的VM对应的队列的队列信息,从该目的VM对应的NIC端口转发该第一数据包至该目的VM。
如图5c,该虚拟交换机与该NIC通过至少n个队列通信,n为该主机上运行的VM的数量,每一个队列与一个VM对应。该虚拟交换机将该第一数据包与该虚拟交换机可访问流表集合中的该数据流对应的流表进行匹配,获取该数据流的数据包的路由信息后,例如为VS端口1,而VS端口1对应VM1且VM1对应于队列1,则该虚拟机交换机将该第一数据包发送至队列1。
该NIC从队列1获取该第一数据包,该主机上运行的NIC驱动向该NIC发送队列信息,该队列信息用于通知该NIC该第一数据包来自队列1。由于队列1与VM1的对应,同时VM1与NIC端口1对应,则该NIC通过NIC端口1将该第一数据包发送至VM1。此种方式要求NIC存储有队列与NIC端口的对应关系。这种实施方式与前述两种可选方案相比,虚拟交换机和NIC均无需将该数据流的数据包的路由信息转换为NIC端口标识,提升了数据包的转发效率。
实际的SDN中,VM一般设有安全组,因此在这三种可选方案中确认了该第一数据包的目的VM后,可选的,还需要确认该第一数据包通过安全组检查后,才将该第一数据包发送至该第一数据包的目的VM。
可选的,若设置有静态安全组,首先确定该第一数据包的目的VM是否属于某一静态安全组,若确定该第一数据包的目的VM属于某一静态安全组,则判断该第一数据包能否匹配上该静态安全组的任一规则,若该第一数据包能够匹配上该静态安全组的至少一条规则,则该第一数据包通过静态安全组检查。若该第一数据包的目的VM不属于任一静态安全组,则无需对该第一数据包进行静态安全组检查,根据第一预设规则直接对该第一数据包进行处理,例如将该第一数据包发送至该第一数据包的目的VM。若该第一数据包的目的VM属于某一静态安全组,但该第一数据包无法匹配该静态安全组的任一规则,则该第一数据包无法通过安全组检查,根据第二预设规则处理该第一数据包,例如丢弃该第一数据包。
以上为设置有白名单的静态安全组的场景,如果设置的为黑名单的静态安全组,与白名单的场景相反,如果该第一数据包属于某一静态安全组但无法匹配该静态安全组的任一规则,则该第一数据包通过静态安全组检查。而如果该第一数据包的目的VM属于某一静态安全组,且该第一数据包可以匹配该静态安全组的至少一条规则,则该第一数据包无法通过静态安全组检查。
可选的,若设置有动态安全组,则首先判断该第一数据包的目的VM是否属于动态安全组,如果该目的VM属于动态安全组,则根据该第一数据包查询连接跟踪表(英文全称:connection track table),确认该第一数据包属于哪个连接,并确定该第一数据包该连接的状态以及该第一数据包对应的处理动作,如果该第一数据包的处理动作指示转发该第一数据包至该第一数据包的目的VM,则该第一数据包通过动态安全组检查。
以上静态安全组和动态安全组可以同时设置,此时通过静态安全组检查和动态安全组检查的数据包才通过了安全组检查。步骤416后采用步骤4182至步骤4184或步骤4185至步骤4186的情况下,安全组检查可以由主机上运行的安全组模块实现,因此如果安全组模块确认该第一数据包无法通过安全组检查,则无需将该第一数据包发送至该NIC,提升了NIC的工作效率。而步骤416后采用步骤4181的情况下,对于发送至虚拟交换机的数据包的安全组检查可以在数据包发送回NIC后,由NIC执行。
步骤420,该NIC根据匹配上的流表中包括的路由信息,转发该第一数据包到该第一数据包的目的VM。
该NIC根据该第一数据包的匹配信息,在该NIC可访问流表集合中匹配上该第一数据包所在数据流对应的流表,根据该流表包括的该数据流的数据包的路由信息转发该第一数据包到该第一数据包的目的VM。
由于步骤412中,该NIC能够将该第一数据包匹配上NIC可访问流表集合中的流表,因此该第一数据包不是所在数据流的首个数据包。
步骤420中,该NIC根据匹配上的流表中包括的路由信息后,参照前述安全组检查过程,可选的,该NIC确认该第一数据包通过安全组检查后,才将该第一数据包发送至该第一数据包的目的VM。
步骤4181或步骤4184或步骤4186或步骤420之后,该NIC继续接收该数据流的后续数据包的情况下,例如第二overlay数据包,该第二overlay数据包包括第二数据包和第二数据包对应的第二overlay头,如果该数据流对应的流表仍存储于NIC可访问流表集合中,则NIC根据该数据流的数据包的路由信息转发该第二数据包到该目的VM。而实际中由于NIC可访问流表集合中的流表可能随着时间更新,因此虽然在步骤416中该数据流对应的流表被加入到该NIC可访问流表集合,但NIC根据该第二数据包的匹配信息无法匹配NIC可访问流表集合中的任一流表,这种情况下对该后续数据包执行步骤414、步骤416、步骤4181或步骤4182至步骤4184或步骤4185至步骤4186。
该数据包处理方法,将数据包与流表的匹配功能卸载至NIC上执行,降低了虚拟交换机的工作负担,使得主机的硬件层资源可以更好的服务于VM,提升了计算设备的工作效率。
参考图5d,为本申请提供的另一计算设备的结构示意图,与图5a、图5b或图5c不同,该计算设备中VM-1至VM-n连接于NIC,VM-n+1至VM-n+m连接于虚拟交换机。VM-n+1至VM-n+m可以在执行图4中虚拟交换机和该NIC的配置过程之前就已经配置完毕,或在图4的虚拟交换机和该NIC的配置过程中,有选择的将VM-n+1至VM-n+m连接于虚拟交换机,将VM-1至VM-n连接于NIC,具体可以依据主机的负载情况或根据主机接收到的配置信息中携带的信息来配置一部分VM连接于NIC,其余部分VM连接于虚拟交换机。
图5d的场景下,NIC接收到外部网络发来的数据包的情况下,如果该数据包的目的VM连接于该NIC,则对该数据包执行前述图4中的数据包处理方法,如果该数据包的目的VM连接于该虚拟交换机,则该NIC直接将该数据包发送至该虚拟交换机。由该虚拟交换机完成该数据包的流表匹配,并将该数据包发送至其目的VM。具体的,可以通过流表的设置使得该NIC实现上述功能。例如,目的VM连接于该虚拟交换机的数据包所在数据流对应的流表,不会被存入NIC可访问流表集合,则该NIC接收到目的VM连接于该虚拟交换机的数据包时,无法在NIC可访问流表集合中匹配上流表,则会将该数据包发送至该虚拟交换机;或修改目的VM连接于该虚拟交换机的数据包所在数据流对应的流表后,再将该流表存入NIC可访问流表集合,对该流表的修改包括将该流表的路由信息修改为主机端口,则该NIC接收到目的VM连接于该虚拟交换机的数据包时,在NIC可访问流表集合中匹配上的流表指示将该数据包通过主机端口发送至该虚拟交换机。
本申请还提供了一种NIC600,该NIC600可以为前述任一附图提供的NIC。该NIC600的组织结构示意图如图6a所示,包括主机接口602,网络接口604以及处理芯片606。网络接口604用于与外部网络通信且网络接口604与处理芯片606建立通信连接。主机接口602用于与NIC600所连接的主机上运行的虚拟交换机、VM、NIC驱动等通信且主机接口602与处理芯片606建立通信连接。前述数据包处理方法中,NIC上建立的NIC端口与主机端口为虚拟端口,主机端口与NIC端口实际通过主机接口602实现与主机的通信。参考图3,主机接口602实际可以为NIC600与计算设备的总线连接的接口。
主机接口602,用于从该NIC连接的主机获取虚拟交换机端口的配置信息。将该虚拟交换机端口的配置信息发送至处理芯片606。
处理芯片606,用于根据该虚拟交换机端口的配置信息将NIC600与该主机上运行的VM连接。
具体的,参考前述步骤406,处理芯片606根据该虚拟交换机端口的配置信息在该NIC上配置至少一个NIC端口,每个NIC端口对应该主机上运行的一个VM。
以上为NIC600的配置过程中NIC600中各个单元的功能,NIC600还可以用于数据包的处理,参考前述数据包处理方法中的步骤408及其步骤408之后的步骤。
网络接口604,还用于接收第一overlay类型数据包,参考步骤408。
网络接口604将接收到的该第一overlay类型数据包发送至处理芯片606。
处理芯片606,还用于接收到该第一overlay类型数据包后,对该第一overlay类型数据包的处理参考前述步骤410、步骤412。
处理芯片606,还用于执行步骤412。在步骤412中确定该第一数据包无法匹配NIC可访问流表集合中的任一流表的情况下,执行步骤414及后续步骤。在步骤412中确定该第一数据包能够匹配NIC可访问流表集合中的流表的情况下,执行步骤420。
步骤414后,处理芯片606执行三种可选方案之任一,这三种可选方案分别对应于前述步骤4181、步骤4182至步骤4184中NIC侧执行的部分、步骤4185至步骤4186中NIC侧执行的部分。
可选方案一,对应前述步骤4181,处理芯片606根据该第一数据包的匹配信息查询该NIC可访问流表集合,获取该第一数据包所在的数据流对应的流表,也即获取该数据流的数据包的路由信息包括的VS端口标识,将VS端口标识转换为NIC端口标识。
可选方案二,对应前述步骤4182至步骤4184中NIC侧执行的部分。处理芯片606接收该返回的第一数据包,处理芯片606根据该返回的第一数据包中携带的端口标识获取NIC端口标识。如果该端口标识为虚拟交换机端口标识,则处理芯片606将该虚拟交换机端口标识转换为NIC端口标识。该端口标识也可能为NIC端口标识。
可选方案三,对应前述步骤4185至步骤4186中NIC侧执行的部分。处理芯片606从n个队列中的一个队列接收该第一数据包,由于处理芯片606预先配置有每个队列与NIC端口的对应关系,因此处理芯片606可以获得接收该第一数据包的队列对应的NIC端口标识。
处理芯片606执行步骤412,并确定该第一数据包能够匹配NIC可访问流表集合中的流表的情况下,获取匹配上的流表中包括的该数据流的数据包的路由信息。该数据流的数据包的路由信息可以包括VS端口标识,处理芯片606将VS端口标识转换为NIC端口标识。
处理芯片606执行步骤412后,无论在该第一数据包能否匹配NIC可访问流表集合中的流表的情况下,均会获取该第一数据包对应的NIC端口标识,该NIC端口标识对应于该第一数据包所在数据流的目的VM。处理芯片606确定该第一数据包的目的VM后,还用于对该第一数据包进行安全组检查。处理芯片606在确定该第一数据包的安全组检查通过之后,通过主机接口602将该第一数据包到该目的VM。具体的处理芯片606对该第一数据包进行安全组检查的过程,参考前述数据包处理方法。
需要说明的是,如果网络接口604接收的不是overlay类型数据包,则处理芯片606无须执行步骤410。
以上提供的NIC实现了流表匹配功能,对于在NIC可访问流表集合中的数据包,将无需发送至虚拟交换机进行处理,降低了主机的负荷,提升了与该NIC相连的主机的工作效率。
处理芯片606可以通过专用集成电路(英文:application-specific integratedcircuit,缩写:ASIC)实现,或可编程逻辑器件(英文:programmable logic device,缩写:PLD)实现。上述PLD可以是复杂可编程逻辑器件(英文:complex programmable logicdevice,缩写:CPLD),现场可编程门阵列(英文:field programmable gate array,缩写:FPGA),通用阵列逻辑(英文:generic array logic,缩写:GAL)或其任意组合。
具体的,如图6b所示,处理芯片606可以包括overlay芯片6062、流表匹配芯片6064以及安全组检查芯片6066。其中,overlay芯片6062用于将网络接口804发送至处理芯片606的overlay类型数据包的overlay头剥离。流表匹配芯片6064用于将剥离了overlay头的数据包与存储于NIC可访问流表集合中的流表进行匹配。安全组检查芯片6066用于确定在流表匹配芯片8064中匹配上流表的数据包是否通过安全组检查,并将通过安全组检查的数据包通过主机接口602发送至目的VM。Overlay芯片6062与安全组检查芯片6066为可选组件。
处理芯片606还可以通过处理器、存储设备以及逻辑芯片实现,该逻辑芯片可以由PLD或ASIC实现。该处理芯片606运行时,该处理器和该逻辑芯片各执行一部分功能,两者功能的分配可以有多种。示例性的,如图6c所示,逻辑芯片用于将网络接口604发送至处理芯片606的overlay类型数据包的overlay头剥离。处理芯片606内的处理器工作时,读取存储器内的代码,用于读取NIC可访问流表集合中的流表,并将NIC可访问流表集合中的流表发送至逻辑芯片,以供逻辑芯片将剥离了overlay头的数据包与该流表进行匹配。处理器还用于读取进行安全组检查所需的信息,并将安全组检查所需的信息发送至逻辑芯片,以供逻辑芯片对该数据包进行安全组检查。
在图6c所示的NIC600的处理芯片606中,逻辑芯片也可以由overlay子芯片、流表匹配子芯片、安全组检查子芯片构成。overlay子芯片、安全组检查子芯片为可选组件。overlay子芯片用于将overlay类型数据包的overlay头剥离。图6c所示的NIC600的处理芯片606中处理器用于获取流表匹配或安全组检查所需的信息并将流表匹配或安全组检查所需的信息发送至该逻辑芯片,而流表匹配子芯片根据流表匹配所需的信息完成数据包的流表匹配,安全组检查子芯片根据安全组检查所需的信息完成数据包的安全组检查。
本申请还提供了一种数据包处理方法,前述任一附图中的NIC运行时执行该方法。该方法具体参考图4对应的数据包处理方法中NIC侧执行的部分。
本申请还提供了一种配置方法,前述任一附图中的主机运行时执行该方法。该方法具体参考图4对应的数据包处理方法中的步骤402和步骤404。
本申请还提供了一种数据包处理方法,前述任一附图中主机运行时执行该方法。该方法具体参考图4对应的数据包处理方法中的步骤408后主机侧执行的方法。具体包括,步骤416、步骤4181中将该数据流对应的流表存储到NIC可访问流表集合后向该NIC发送通知消息的部分,或步骤4182和步骤4183,或步骤4185。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
结合本申请公开内容所描述的方法可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于RAM、快闪存储器、ROM、可擦除可编程只读存储器(英文:erasable programmable read only memory,缩写:EPROM)、电可擦可编程只读存储器(英文:electrically erasable programmable read only memory,缩写:EEPROM)、硬盘、光盘或者本领域熟知的任何其它形式的存储介质中。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请所描述的功能可以用硬件或软件来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上该的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上该仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的技术方案的基础之上,所做的任何修改、改进等,均应包括在本申请的保护范围之内。
Claims (17)
1.一种数据包处理方法,其特征在于,所述方法应用于计算设备,所述计算设备包括网络接口卡NIC和主机,所述NIC与所述主机建立通信连接,所述主机运行虚拟机VM,所述方法包括:
所述NIC接收数据流的第一数据包;
所述NIC根据所述第一数据包的匹配信息查询流表集合;
在无法匹配到所述数据流对应的流表情况下,所述NIC向所述主机上运行的虚拟交换机转发所述第一数据包;
其中,所述虚拟交换机在接收到所述第一数据包后,从软件定义网络SDN控制器获取所述数据流对应的流表,以便于所述数据流对应的流表被加入到所述流表集合;
所述数据流对应的流表包括所述数据流的数据包的路由信息,在向所述虚拟交换机转发所述第一数据包之后,所述方法还包括:
所述NIC接收所述虚拟交换机返回的第一数据包,所述返回的第一数据包中包含对应于目的VM的端口标识,所述端口标识为虚拟交换机端口标识或NIC端口标识,所述端口标识由所述虚拟交换机根据所述数据流的数据包的路由信息添加;
所述NIC根据所述端口标识,转发所述第一数据包到所述目的VM。
2.如权利要求1所述的数据包处理方法,其特征在于,所述主机上运行的虚拟交换机上配置至少一个虚拟交换机端口,每个虚拟交换机端口对应所述主机上运行的一个VM,所述NIC接收所述第一数据包前,所述方法还包括:
所述NIC接收所述虚拟交换机端口的配置信息;
所述NIC根据所述虚拟交换机端口的配置信息,在所述NIC上配置至少一个NIC端口,每个NIC端口通过单根-输入/输出虚拟化SR-I/OV技术与所述主机上运行的一个VM连接。
3.一种网络接口卡NIC,其特征在于,所述NIC包括:主机接口、网络接口和处理芯片,所述网络接口用于与外部网络通信且所述网络接口与所述处理芯片建立通信连接,所述主机接口用于与主机通信且所述主机接口与所述处理芯片建立通信连接,所述主机运行VM;
所述网络接口,用于接收数据流的第一数据包;
所述处理芯片,用于根据所述第一数据包的匹配信息查询流表集合,在无法匹配到所述数据流对应的流表情况下,通过所述主机接口向所述主机上运行的虚拟交换机转发所述第一数据包;
其中,所述虚拟交换机在接收到所述第一数据包后,从软件定义网络SDN控制器获取所述数据流对应的流表,以便于所述数据流对应的流表被加入到所述流表集合;
所述处理芯片,还用于接收所述虚拟交换机返回的第一数据包,所述返回的第一数据包中包含对应于目的VM的端口标识,所述端口标识为虚拟交换机端口标识或NIC端口标识,所述端口标识由所述虚拟交换机根据所述数据流的数据包的路由信息添加,所述数据流对应的流表包括所述数据流的数据包的路由信息;还用于根据所述端口标识,转发所述第一数据包到所述目的VM。
4.如权利要求3所述的NIC,其特征在于,所述主机上运行的虚拟交换机上配置至少一个虚拟交换机端口,每个虚拟交换机端口对应所述主机上运行的一个VM;
所述处理芯片,还用于接收所述虚拟交换机端口的配置信息,根据所述虚拟交换机端口的配置信息,在所述NIC上配置至少一个NIC端口,每个NIC端口通过单根-输入/输出虚拟化SR-I/OV技术与所述主机上运行的一个VM连接。
5.一种数据包处理方法,其特征在于,所述方法应用于计算设备,所述计算设备包括网络接口卡NIC和主机,所述NIC与所述主机建立通信连接,所述主机运行虚拟机VM,所述方法包括:
所述NIC接收数据流的第二数据包;
所述NIC根据所述第二数据包的匹配信息查询流表集合,获取所述数据流对应的流表,所述数据流对应的流表包括所述数据流的数据包的路由信息;
所述NIC根据所述数据流的数据包的路由信息,转发所述第二数据包到目的VM;
所述NIC接收数据流的第二数据包前,所述方法还包括:
所述NIC接收所述数据流的第三数据包;
所述NIC根据所述第三数据包的匹配信息查询所述流表集合;
在无法匹配到所述数据流对应的流表情况下,所述NIC向所述主机上运行的虚拟交换机转发所述第三数据包;
其中,所述虚拟交换机在接收到所述第三数据包后,从软件定义网络SDN控制器获取所述数据流对应的流表,以便于所述数据流对应的流表被加入到所述流表集合;
在向所述虚拟交换机转发所述第三数据包之后,所述方法还包括:
所述NIC接收所述虚拟交换机返回的第三数据包,所述返回的第三数据包中包含对应于所述目的VM的端口标识,所述端口标识为虚拟交换机端口标识或NIC端口标识,所述端口标识由所述虚拟交换机根据所述数据流的数据包的路由信息添加;
所述NIC根据所述端口标识,转发所述第三数据包到所述目的VM。
6.如权利要求5所述的数据包处理方法,其特征在于,所述NIC通过单根-输入/输出虚拟化SR-I/OV技术与所述主机上运行的VM连接;
所述NIC根据所述数据流的数据包的路由信息,通过所述NIC与所述目的VM的连接转发所述第二数据包到所述目的VM。
7.如权利要求6所述的数据包处理方法,所述主机上运行的虚拟交换机上配置至少一个虚拟交换机端口,每个虚拟交换机端口对应所述主机上运行的一个VM;
所述NIC接收数据流的第二数据包前,所述方法还包括:
所述NIC接收所述虚拟交换机端口的配置信息;
根据所述虚拟交换机端口的配置信息,在所述NIC上配置至少一个NIC端口,每个NIC端口通过单根-输入/输出虚拟化SR-I/OV技术与所述主机上运行的一个VM连接,所述数据流的数据包的路由信息指示所述目的VM对应的NIC端口。
8.如权利要求5至7任一所述的数据包处理方法,其特征在于,所述NIC接收数据流的第二数据包包括:
所述NIC接收overlay类型数据包,所述overlay类型数据包包括overlay头和所述第二数据包,所述overlay头包括虚拟可扩展局域网VXLAN头,或使用通用路由的网络虚拟化NVGRE头,或无状态传输隧道STT头;
所述NIC剥去所述overlay类型数据包的overlay头,获取所述第二数据包。
9.如权利要求5至7任一所述的数据包处理方法,其特征在于,所述NIC转发所述第二数据包到目的VM之前,所述方法还包括:
所述NIC对所述第二数据包进行安全组检查,在确定所述第二数据包的安全组检查通过之后,执行转发所述第二数据包到所述目的VM的步骤。
10.一种网络接口卡NIC,其特征在于,所述NIC包括:主机接口、网络接口和处理芯片,所述网络接口用于与外部网络通信且所述网络接口与所述处理芯片建立通信连接,所述主机接口用于与主机通信且所述主机接口与所述处理芯片建立通信连接,所述主机运行VM;
所述网络接口,用于接收数据流的第二数据包;
所述处理芯片,用于根据所述第二数据包的匹配信息查询流表集合,获取所述数据流对应的流表,所述数据流对应的流表包括所述数据流的数据包的路由信息;以及根据所述数据流的数据包的路由信息,转发所述第二数据包到目的VM;
所述网络接口,还用于接收所述数据流的第三数据包;
所述处理芯片,还用于根据所述第三数据包的匹配信息查询所述流表集合,在无法匹配到所述数据流对应的流表情况下,向所述主机上运行的虚拟交换机转发所述第三数据包;
其中,所述虚拟交换机在接收到所述第三数据包后,从软件定义网络SDN控制器获取所述数据流对应的流表,以便于所述数据流对应的流表被加入到所述流表集合;
所述处理芯片,还用于接收所述虚拟交换机返回的第三数据包,所述返回的第三数据包中包含对应于所述目的VM的端口标识,所述端口标识为虚拟交换机端口标识或NIC端口标识,所述端口标识由所述虚拟交换机根据所述数据流的数据包的路由信息添加;还用于根据所述端口标识,转发所述第三数据包到所述目的VM。
11.如权利要求10所述的NIC,其特征在于,所述NIC通过单根-输入/输出虚拟化SR-I/OV技术与所述主机上运行的VM连接;
所述处理芯片,用于根据所述数据流的数据包的路由信息,通过所述NIC与所述目的VM的连接转发所述第二数据包到所述目的VM。
12.如权利要求11所述的NIC,其特征在于,所述主机上运行的虚拟交换机上配置至少一个虚拟交换机端口,每个虚拟交换机端口对应所述主机上运行的一个VM;
所述处理芯片,还用于接收所述虚拟交换机端口的配置信息,根据所述虚拟交换机端口的配置信息在所述NIC上配置至少一个NIC端口,每个NIC端口通过单根-输入/输出虚拟化SR-I/OV技术与所述主机上运行的一个VM连接,所述数据流的数据包的路由信息指示所述目的VM对应的NIC端口。
13.如权利要求10至12任一所述的NIC,其特征在于,所述网络接口,用于接收overlay类型数据包,所述overlay类型数据包包括overlay头和所述第二数据包,所述overlay头包括虚拟可扩展局域网VXLAN头,或使用通用路由的网络虚拟化NVGRE头,或无状态传输隧道STT头;
所述处理芯片,用于剥去所述overlay类型数据包的overlay头,获取所述第二数据包。
14.如权利要求10至12任一所述的NIC,其特征在于,所述处理芯片转发所述第二数据包到所述目的VM之前,还用于对所述第二数据包进行安全组检查,在确定所述第二数据包的安全组检查通过之后,执行转发所述第二数据包到所述目的VM的步骤。
15.一种计算设备,其特征在于,所述计算设备包括网络接口卡NIC和主机,所述NIC与所述主机建立通信连接,所述主机上运行虚拟机VM和虚拟交换机,所述虚拟交换机上配置至少一个虚拟交换机端口,每个虚拟交换机端口对应所述主机上运行的一个VM;
所述主机,用于向所述NIC发送所述虚拟交换机端口的配置信息;
所述NIC,用于根据所述虚拟交换机端口的配置信息,在所述NIC上配置至少一个NIC端口,每个NIC端口通过单根-输入/输出虚拟化SR-I/OV技术与所述主机上运行的一个VM连接;
所述NIC,还用于接收数据流的第二数据包,根据所述第二数据包的匹配信息查询流表集合,获取所述数据流对应的流表,所述数据流对应的流表包括所述数据流的数据包的路由信息,所述数据流的数据包的路由信息指示目的VM对应的NIC端口,以及根据所述数据流的数据包的路由信息,转发所述第二数据包到所述目的VM;
所述NIC,还用于接收所述数据流的第三数据包,根据所述第三数据包的匹配信息查询所述流表集合,在无法匹配到所述数据流对应的流表情况下,向所述主机转发所述第三数据包;
所述主机,用于在接收到所述第三数据包后,从软件定义网络SDN控制器获取所述数据流对应的流表,以便于所述数据流对应的流表被加入到所述流表集合;
所述主机,还用于生成返回的第三数据包,所述返回的第三数据包中包含对应于所述目的VM的端口标识,所述端口标识为虚拟交换机端口标识或NIC端口标识,所述端口标识由所述主机根据所述数据流的数据包的路由信息添加;
所述NIC,还用于接收所述返回的第三数据包,并根据所述端口标识,转发所述第三数据包到所述目的VM。
16.如权利要求15所述的计算设备,其特征在于,所述NIC,具体用于接收overlay类型数据包,所述overlay类型数据包包括overlay头和所述第二数据包,所述overlay头包括虚拟可扩展局域网VXLAN头,或使用通用路由的网络虚拟化NVGRE头,或无状态传输隧道STT头;还用于剥去所述overlay类型数据包的overlay头,获取所述第二数据包。
17.如权利要求15所述的计算设备,其特征在于,所述NIC转发所述第二数据包到目的VM之前,还用于对所述第二数据包进行安全组检查,在确定所述第二数据包的安全组检查通过之后,执行转发所述第二数据包到所述目的VM的步骤。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2016/093098 WO2018023499A1 (zh) | 2016-08-03 | 2016-08-03 | 网络接口卡、计算设备以及数据包处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109074330A CN109074330A (zh) | 2018-12-21 |
CN109074330B true CN109074330B (zh) | 2020-12-08 |
Family
ID=61072571
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680084595.0A Active CN109074330B (zh) | 2016-08-03 | 2016-08-03 | 网络接口卡、计算设备以及数据包处理方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10581729B2 (zh) |
EP (1) | EP3340064B1 (zh) |
CN (1) | CN109074330B (zh) |
WO (1) | WO2018023499A1 (zh) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IL238690B (en) | 2015-05-07 | 2019-07-31 | Mellanox Technologies Ltd | Network-based computational accelerator |
US10749808B1 (en) | 2015-06-10 | 2020-08-18 | Amazon Technologies, Inc. | Network flow management for isolated virtual networks |
WO2018023499A1 (zh) * | 2016-08-03 | 2018-02-08 | 华为技术有限公司 | 网络接口卡、计算设备以及数据包处理方法 |
EP3340547B1 (en) | 2016-08-03 | 2019-11-27 | Huawei Technologies Co., Ltd. | Network interface card and data packet processing method |
EP3995955B1 (en) | 2017-06-30 | 2024-10-16 | Huawei Technologies Co., Ltd. | Data processing method, network interface card, and server |
US10382350B2 (en) * | 2017-09-12 | 2019-08-13 | Mellanox Technologies, Ltd. | Maintaining packet order in offload of packet processing functions |
US11469953B2 (en) | 2017-09-27 | 2022-10-11 | Intel Corporation | Interworking of legacy appliances in virtualized networks |
US11502948B2 (en) | 2017-10-16 | 2022-11-15 | Mellanox Technologies, Ltd. | Computational accelerator for storage operations |
US11005771B2 (en) | 2017-10-16 | 2021-05-11 | Mellanox Technologies, Ltd. | Computational accelerator for packet payload operations |
US11750533B2 (en) * | 2017-10-24 | 2023-09-05 | Intel Corporation | Hardware assisted virtual switch |
US10841243B2 (en) | 2017-11-08 | 2020-11-17 | Mellanox Technologies, Ltd. | NIC with programmable pipeline |
US10708240B2 (en) | 2017-12-14 | 2020-07-07 | Mellanox Technologies, Ltd. | Offloading communication security operations to a network interface controller |
CN115037575A (zh) | 2017-12-26 | 2022-09-09 | 华为技术有限公司 | 报文处理的方法和装置 |
US10785020B2 (en) * | 2018-01-19 | 2020-09-22 | Microsoft Technology Licensing, Llc | Hardware offload for QUIC connections |
CN113542125B (zh) | 2018-03-31 | 2022-11-25 | 华为技术有限公司 | 一种基于集成流表转发报文的方法及装置 |
US11108687B1 (en) | 2018-09-12 | 2021-08-31 | Amazon Technologies, Inc. | Scalable network function virtualization service |
CN110912825B (zh) | 2018-09-18 | 2022-08-02 | 阿里巴巴集团控股有限公司 | 一种报文的转发方法、装置、设备及系统 |
US10785146B2 (en) | 2018-09-19 | 2020-09-22 | Amazon Technologies, Inc. | Scalable cell-based packet processing service using client-provided decision metadata |
US10834044B2 (en) | 2018-09-19 | 2020-11-10 | Amazon Technologies, Inc. | Domain name system operations implemented using scalable virtual traffic hub |
CN112714903B (zh) * | 2018-09-19 | 2024-10-15 | 亚马逊科技公司 | 使用客户端提供的决策元数据的基于可缩放小区的包处理服务 |
US10797989B2 (en) | 2018-09-19 | 2020-10-06 | Amazon Technologies, Inc. | Scalable virtual traffic hub interconnecting isolated networks |
US10742446B2 (en) | 2018-09-19 | 2020-08-11 | Amazon Technologies, Inc. | Interconnecting isolated networks with overlapping address ranges via scalable virtual traffic hubs |
US10897417B2 (en) | 2018-09-19 | 2021-01-19 | Amazon Technologies, Inc. | Automated route propagation among networks attached to scalable virtual traffic hubs |
US10824469B2 (en) | 2018-11-28 | 2020-11-03 | Mellanox Technologies, Ltd. | Reordering avoidance for flows during transition between slow-path handling and fast-path handling |
CN111404705B (zh) * | 2019-01-02 | 2023-05-09 | 中国移动通信有限公司研究院 | 一种sdn的优化方法、装置及计算机可读存储介质 |
US11283732B2 (en) * | 2019-03-29 | 2022-03-22 | Juniper Networks, Inc. | Network functions virtualization (NFV) backplane on forwarding microchip |
US11184439B2 (en) | 2019-04-01 | 2021-11-23 | Mellanox Technologies, Ltd. | Communication with accelerator via RDMA-based network adapter |
CN111865801B (zh) * | 2019-04-24 | 2021-10-22 | 厦门网宿有限公司 | 一种基于Virtio端口传输数据的方法和系统 |
CN112019431B (zh) * | 2019-05-29 | 2023-04-18 | 阿里巴巴集团控股有限公司 | 一种转发规则的处理方法、装置及设备 |
IL276538B2 (en) | 2020-08-05 | 2023-08-01 | Mellanox Technologies Ltd | A cryptographic device for data communication |
CN114095153A (zh) | 2020-08-05 | 2022-02-25 | 迈络思科技有限公司 | 密码数据通信装置 |
CN114363256B (zh) * | 2020-09-28 | 2024-10-18 | 华为云计算技术有限公司 | 基于网卡的报文解析方法以及相关装置 |
US11934658B2 (en) | 2021-03-25 | 2024-03-19 | Mellanox Technologies, Ltd. | Enhanced storage protocol emulation in a peripheral device |
US20230195488A1 (en) * | 2021-12-22 | 2023-06-22 | Vmware, Inc. | Teaming of smart nics |
CN114726930A (zh) * | 2022-03-30 | 2022-07-08 | 深信服科技股份有限公司 | 一种数据包跟踪方法、系统、装置及可读存储介质 |
CN115022217A (zh) * | 2022-06-14 | 2022-09-06 | 深信服科技股份有限公司 | 一种网卡检测方法、装置及电子设备和存储介质 |
US12117948B2 (en) | 2022-10-31 | 2024-10-15 | Mellanox Technologies, Ltd. | Data processing unit with transparent root complex |
US12007921B2 (en) | 2022-11-02 | 2024-06-11 | Mellanox Technologies, Ltd. | Programmable user-defined peripheral-bus device implementation using data-plane accelerator (DPA) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101616174A (zh) * | 2009-07-09 | 2009-12-30 | 浪潮电子信息产业股份有限公司 | 一种存储系统io处理路径动态跟踪实现优化系统性能的方法 |
CN103534998A (zh) * | 2011-05-14 | 2014-01-22 | 国际商业机器公司 | 分布式结构协议(dfp)交换网络架构 |
CN103856573A (zh) * | 2012-12-04 | 2014-06-11 | 华为技术有限公司 | 一种互联网协议ip地址的配置方法、装置及系统 |
WO2015173759A1 (en) * | 2014-05-13 | 2015-11-19 | Telefonaktiebolaget L M Ericsson (Publ) | Virtual flow network in a cloud environment |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8116320B2 (en) | 2006-08-07 | 2012-02-14 | Adc Telecommunications, Inc. | Mapping external port using virtual local area network |
US8396005B2 (en) * | 2008-12-02 | 2013-03-12 | Electronics And Telecommunications Research Institute | High-speed IP flow mediation apparatus using network processor |
WO2012044700A1 (en) | 2010-10-01 | 2012-04-05 | Huawei Technologies Co., Ltd. | System and method for controlling the input/output of a virtualized network |
US8670450B2 (en) | 2011-05-13 | 2014-03-11 | International Business Machines Corporation | Efficient software-based private VLAN solution for distributed virtual switches |
WO2013086204A1 (en) | 2011-12-07 | 2013-06-13 | Citrix Systems, Inc. | Controlling a network interface using virtual switch proxying |
US8930690B2 (en) * | 2012-03-21 | 2015-01-06 | Microsoft Corporation | Offloading packet processing for networking device virtualization |
US9225635B2 (en) * | 2012-04-10 | 2015-12-29 | International Business Machines Corporation | Switch routing table utilizing software defined network (SDN) controller programmed route segregation and prioritization |
US9548920B2 (en) | 2012-10-15 | 2017-01-17 | Cisco Technology, Inc. | System and method for efficient use of flow table space in a network environment |
US9008097B2 (en) | 2012-12-31 | 2015-04-14 | Mellanox Technologies Ltd. | Network interface controller supporting network virtualization |
CN203490899U (zh) * | 2013-01-05 | 2014-03-19 | 刘遥 | 多屏移动终端 |
US9210074B2 (en) * | 2013-05-03 | 2015-12-08 | Alcatel Lucent | Low-cost flow matching in software defined networks without TCAMs |
CN103346981B (zh) * | 2013-06-28 | 2016-08-10 | 华为技术有限公司 | 虚拟交换方法、相关装置和计算机系统 |
US9426060B2 (en) * | 2013-08-07 | 2016-08-23 | International Business Machines Corporation | Software defined network (SDN) switch clusters having layer-3 distributed router functionality |
CN104468358B (zh) | 2013-09-25 | 2018-05-11 | 新华三技术有限公司 | 分布式虚拟交换机系统的报文转发方法及设备 |
US9596212B2 (en) * | 2013-11-11 | 2017-03-14 | The Boeing Company | Apparatus, method, and system for hardware-based filtering in a cross-domain infrastructure |
EP3072263B1 (en) * | 2013-11-18 | 2017-10-25 | Telefonaktiebolaget LM Ericsson (publ) | Multi-tenant isolation in a cloud environment using software defined networking |
CN104660574B (zh) | 2013-11-22 | 2018-10-30 | 华为技术有限公司 | 数据中心的配置方法、控制实体和转发实体 |
US9288135B2 (en) | 2013-12-13 | 2016-03-15 | International Business Machines Corporation | Managing data flows in software-defined network using network interface card |
US20150169345A1 (en) * | 2013-12-18 | 2015-06-18 | International Business Machines Corporation | Software-defined networking (sdn) for management of traffic between virtual processors |
CN104731521B (zh) | 2013-12-23 | 2018-02-16 | 伊姆西公司 | 用于配置数据中心的方法及设备 |
CN103916314A (zh) | 2013-12-26 | 2014-07-09 | 杭州华为数字技术有限公司 | 报文转发控制方法和相关装置及物理主机 |
WO2015100656A1 (zh) * | 2013-12-31 | 2015-07-09 | 华为技术有限公司 | 一种实现虚拟机通信的方法和装置 |
CN103873374B (zh) | 2014-03-27 | 2017-08-11 | 新华三技术有限公司 | 虚拟化系统中的报文处理方法及装置 |
US9450884B2 (en) * | 2014-06-11 | 2016-09-20 | Alcatel-Lucent | Software defined networking based congestion control |
US9692698B2 (en) * | 2014-06-30 | 2017-06-27 | Nicira, Inc. | Methods and systems to offload overlay network packet encapsulation to hardware |
US9917769B2 (en) * | 2014-11-17 | 2018-03-13 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and system for virtualizing flow tables in a software-defined networking (SDN) system |
JP6424632B2 (ja) | 2015-01-08 | 2018-11-21 | 富士通株式会社 | 負荷算出方法、負荷算出プログラム及び負荷算出装置 |
CN105871663B (zh) * | 2015-01-19 | 2019-04-05 | 环旭电子股份有限公司 | 无线以太网络控制方法以及无线以太网络系统 |
US10061743B2 (en) * | 2015-01-27 | 2018-08-28 | International Business Machines Corporation | Host based non-volatile memory clustering using network mapped storage |
US20170031704A1 (en) * | 2015-07-31 | 2017-02-02 | Hewlett-Packard Development Company, L.P. | Network port profile for virtual machines using network controller |
US10333897B2 (en) * | 2015-10-23 | 2019-06-25 | Attala Systems Corporation | Distributed firewalls and virtual network services using network packets with security tags |
CN105718301B (zh) * | 2016-01-15 | 2018-10-09 | 浪潮集团有限公司 | 一种基于vSwitch的虚拟机证书迁移方法 |
US10230633B2 (en) * | 2016-01-21 | 2019-03-12 | Red Hat, Inc. | Shared memory communication in software defined networking |
CN106155551A (zh) * | 2016-06-30 | 2016-11-23 | 努比亚技术有限公司 | 信息处理方法和终端 |
EP3340547B1 (en) * | 2016-08-03 | 2019-11-27 | Huawei Technologies Co., Ltd. | Network interface card and data packet processing method |
WO2018023499A1 (zh) * | 2016-08-03 | 2018-02-08 | 华为技术有限公司 | 网络接口卡、计算设备以及数据包处理方法 |
-
2016
- 2016-08-03 WO PCT/CN2016/093098 patent/WO2018023499A1/zh active Application Filing
- 2016-08-03 EP EP16911096.2A patent/EP3340064B1/en active Active
- 2016-08-03 CN CN201680084595.0A patent/CN109074330B/zh active Active
-
2018
- 2018-03-20 US US15/927,005 patent/US10581729B2/en active Active
-
2020
- 2020-02-20 US US16/796,028 patent/US20200204486A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101616174A (zh) * | 2009-07-09 | 2009-12-30 | 浪潮电子信息产业股份有限公司 | 一种存储系统io处理路径动态跟踪实现优化系统性能的方法 |
CN103534998A (zh) * | 2011-05-14 | 2014-01-22 | 国际商业机器公司 | 分布式结构协议(dfp)交换网络架构 |
CN103856573A (zh) * | 2012-12-04 | 2014-06-11 | 华为技术有限公司 | 一种互联网协议ip地址的配置方法、装置及系统 |
WO2015173759A1 (en) * | 2014-05-13 | 2015-11-19 | Telefonaktiebolaget L M Ericsson (Publ) | Virtual flow network in a cloud environment |
Also Published As
Publication number | Publication date |
---|---|
CN109074330A (zh) | 2018-12-21 |
US20200204486A1 (en) | 2020-06-25 |
US10581729B2 (en) | 2020-03-03 |
WO2018023499A1 (zh) | 2018-02-08 |
EP3340064A1 (en) | 2018-06-27 |
EP3340064A4 (en) | 2018-12-26 |
US20180219770A1 (en) | 2018-08-02 |
EP3340064B1 (en) | 2020-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109074330B (zh) | 网络接口卡、计算设备以及数据包处理方法 | |
CN109479028B (zh) | 网络接口卡、计算设备以及数据包处理方法 | |
US10757072B2 (en) | Packet transmission method, apparatus, and system | |
US12095882B2 (en) | Accelerated network packet processing | |
CN112217746B (zh) | 云计算系统中报文处理的方法、主机和系统 | |
US8635614B2 (en) | Method for providing location independent dynamic port mirroring on distributed virtual switches | |
EP3249862B1 (en) | Flow table processing method and device | |
CN112422393B (zh) | 可扩展虚拟局域网报文发送方法、计算机设备和可读介质 | |
US9548890B2 (en) | Flexible remote direct memory access resource configuration in a network environment | |
EP3206339A1 (en) | Network card configuration method and resource management center | |
US11146451B2 (en) | Software defined networking orchestration method and sdn controller | |
CN108337192B (zh) | 一种云数据中心中报文通信方法和装置 | |
US9755854B2 (en) | Tag conversion apparatus | |
US20200244623A1 (en) | Data transmission method, server and offload card | |
US10498637B2 (en) | Switch processing method, controller, switch, and switch processing system | |
CN108173696B (zh) | 数据包处理方法、装置、计算机设备和存储介质 | |
CN106803804B (zh) | 传输报文的方法和装置 | |
CN114553802B (zh) | 一种数据处理方法、装置及网络设备 | |
CN105874757A (zh) | 一种数据处理方法及多核处理器系统 | |
CN115277640A (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 |