CN107948071B - 报文转发方法及装置 - Google Patents
报文转发方法及装置 Download PDFInfo
- Publication number
- CN107948071B CN107948071B CN201610890483.6A CN201610890483A CN107948071B CN 107948071 B CN107948071 B CN 107948071B CN 201610890483 A CN201610890483 A CN 201610890483A CN 107948071 B CN107948071 B CN 107948071B
- Authority
- CN
- China
- Prior art keywords
- message
- network card
- function
- user
- operating system
- 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
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例公开了报文转发方法及装置,应用于网卡。方法包括:接收该网卡所在设备以外的设备发送的报文;根据预设分类规则,判断该报文是否为控制平面报文;若是,将该报文通过目标功能转发给该网卡对应的操作系统;其中,目标功能为该网卡通过虚拟化技术生成的功能,目标功能由操作系统的内核中的网卡的驱动进行管理。通过本方案可以提高报文的本地转发效率。
Description
技术领域
本发明涉及计算机技术领域,特别涉及报文转发方法及装置。
背景技术
报文(packet)是网络中交换与传输的数据单元,即站点一次性要发送的数据块,一般可以分为数据平面报文和控制平面报文,主要通过网卡接收或发送。其中,网卡接收的报文中需交给用户态报文处理应用程序的报文称作数据平面报文,其他的需交给网卡对应的操作系统的报文称作控制平面报文。如何将网卡接收到的报文实现本地高效安全的转发是一项重要的议题。
其中,常见的如基于用户态报文处理框架的系统中,用户态报文处理应用程序启动后,将网卡直接截获,如图1所示,网卡收到的所有报文,都通过用户态报文处理框架(例如英特尔DPDK,Data Plane Development Kit,数据平面开发套件)直接发送给用户态报文处理应用程序,用户态报文处理应用程序收到报文后,将需要由本地用户态应用程序或操作系统处理的控制平面报文通过操作系统中的内核TAP驱动接口转发给内核TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/因特网互联协议)协议栈,这个过程涉及报文从用户态向内核态的拷贝,并引发系统调用,其中,TAP为系统的虚拟网卡;同时,当本地用户态应用程序需要发送报文时,报文从用户态拷贝到内核态,经由内核TCP/IP协议栈处理完毕后,发送给内核TAP驱动,此时,由于TAP驱动不能在接收到报文时主动进行转发,需要用户态报文处理应用程序对TAP驱动进行轮询,并从TAP驱动中,将报文拷贝到用户态,再调用用户态报文处理框架的API(Application ProgrammingInterface,应用程序编程接口),将报文通过网卡发送出去。不难看出,传统的基于TAP接口的方式,报文的本地转发需要经过多次的用户态与内核态间的数据拷贝,并触发多次用户态和内核态程序的调度,导致报文的本地转发效率较低。
发明内容
本发明实施例的目的在于提供报文转发方法及装置,以提高报文的本地转发效率。具体技术方案如下:
第一方面,本发明实施例提供了一种报文转发方法,应用于网卡,所述方法包括:
接收所述网卡所在设备以外的设备发送的报文;
根据预设分类规则,判断所述报文是否为控制平面报文;
若是,将所述报文通过目标功能转发给所述网卡对应的操作系统;其中,所述目标功能为所述网卡通过虚拟化技术生成的功能,所述目标功能由所述操作系统的内核中的所述网卡的驱动进行管理。
可选地,所述根据预设分类规则,判断所述报文是否为控制平面报文,包括:
判断所述报文的目的地址是否为本机地址;
若是,判定所述报文为控制平面报文;
可选地,所述虚拟化技术为单根虚拟化I/O技术。
可选地,所述目标功能为物理功能。
可选地,本发明实施例所提供的报文转发方法,还包括:
若所述报文不是控制平面报文,将所述报文通过所述网卡的虚拟功能转发给用户态报文处理应用程序。
可选地,所述接收所述网卡所在设备以外的设备发送的报文的步骤之前,所述方法还包括:
利用所述单根虚拟化I/O技术,生成所述物理功能和所述虚拟功能;
启动所述用户态报文处理应用程序;
将所述用户态报文处理应用程序与所述虚拟功能进行绑定。
可选地,所述将所述报文通过所述网卡的虚拟功能转发给用户态报文处理应用程序,包括:
将所述报文通过所述虚拟功能转发给用户态报文处理框架,再通过所述用户态报文处理框架转发给所述用户态报文处理应用程序;其中,所述虚拟功能由所述用户态报文处理框架管理。
第二方面,本发明实施例提供了一种报文转发方法,应用于网卡,所述方法包括:
通过目标功能接收所述网卡对应的操作系统发送的第一类报文;其中,所述目标功能为所述网卡通过虚拟化技术生成的功能,所述目标功能由所述操作系统的内核中的所述网卡的驱动进行管理。
通过所述目标功能转发所述第一类报文。
可选地,所述虚拟化技术为单根虚拟化I/O技术。
可选地,所述目标功能为物理功能。
可选地,本发明实施例所提供的报文转发方法,还包括:
通过所述网卡的虚拟功能接收用户态报文处理框架转发的第二类报文,并转发所述第二类报文;其中,所述虚拟功能由所述用户态报文处理框架管理。
可选地,所述第二类报文为用户态报文处理应用程序发送的报文。
可选地,所述通过目标功能接收操作系统发送的第一类报文的步骤之前,所述方法还包括:
利用所述单根虚拟化I/O技术,生成所述物理功能和所述虚拟功能;
启动所述用户态报文处理应用程序;
将所述用户态报文处理应用程序与所述虚拟功能进行绑定。
第三方面,本发明实施例提供了一种报文转发装置,应用于网卡,所述装置包括:
第一报文接收模块,用于接收所述网卡所在设备以外的设备发送的报文;
判断模块,用于根据预设分类规则,判断所述报文是否为控制平面报文;
第一报文转发模块,用于在所述判断模块的结果为是的情况下,将所述报文通过目标功能转发给所述网卡对应的操作系统;其中,所述目标功能为所述网卡通过虚拟化技术生成的功能,所述目标功能由所述操作系统的内核中的所述网卡的驱动进行管理。
可选地,所述判断模块,具体用于:
判断所述报文的目的地址是否为本机地址;
若是,判定所述报文为控制平面报文。
可选地,所述虚拟化技术为单根虚拟化I/O技术。
可选地,所述目标功能为物理功能。
可选地,本发明实施例所提供的报文转发装置,还包括:
第二报文转发模块,用于当所述报文为数据平面报文时,将所述报文通过所述网卡的虚拟功能转发给用户态报文处理应用程序。
可选地,本发明实施例所提供的报文转发装置,还包括:
第一功能生成模块,用于在所述第一报文接收模块接收所述网卡所在设备以外的设备发送的报文之前,利用所述单根虚拟化I/O技术,生成所述物理功能和所述虚拟功能;
第一启动模块,用于启动所述用户态报文处理应用程序;
第一绑定模块,用于将所述用户态报文处理应用程序与所述虚拟功能进行绑定。
可选地,所述第二报文转发模块,具体用于:
将所述报文通过所述虚拟功能转发给用户态报文处理框架,再通过所述用户态报文处理框架转发给所述用户态报文处理应用程序;其中,所述虚拟功能由所述用户态报文处理框架管理。
第四方面,本发明是实施例提供了一种报文转发装置,应用于网卡,所述装置包括:
第二报文接收模块,用于通过目标功能接收操作系统发送的第一类报文;其中,所述目标功能为所述网卡通过虚拟化技术生成的功能,所述目标功能由所述操作系统的内核中的所述网卡的驱动进行管理。
第三报文转发模块,用于通过所述目标功能转发所述第一类报文。
可选地,所述虚拟化技术为单根虚拟化I/O技术。
可选地,所述目标功能为物理功能。
可选地,本发明实施例所提供的报文转发装置,还包括:
第四报文转发模块,用于通过所述网卡的虚拟功能接收用户态报文处理框架转发的第二类报文,并转发所述第二类报文;其中,所述虚拟功能由所述用户态报文处理框架管理。
可选地,所述第二类报文为用户态报文处理应用程序发送的报文。
可选地,本发明实施例所提供的报文转发装置,还包括:
第二功能生成模块,用于在所述第二报文接收模块通过目标功能接收操作系统发送的第一类报文之前,利用所述单根虚拟化I/O技术,生成所述物理功能和所述虚拟功能;
第二启动模块,用于启动所述用户态报文处理应用程序;
第二绑定模块,用于将所述用户态报文处理应用程序与所述虚拟功能进行绑定。
应用本发明实施例提供的技术方案,在网卡接收到该网卡所在设备以外的设备发送的报文时,根据预设分类规则,判断该报文是否为控制平面报文,若是,将该报文通过目标功能转发给该网卡对应的操作系统;其中,目标功能为该网卡通过虚拟化技术生成的功能,由操作系统的内核中的所述网卡的驱动进行管理。可以看出,控制平面报文,即需要交给操作系统处理的报文,可以直接经过目标功能转发给操作系统,无需经过用户态报文处理应用程序接收后再转发给操作系统,减少了报文由用户态向内核态拷贝的次数,以及触发用户态和内核态程序调度的次数,提高了报文的本地转发效率。
同理,当该网卡对应的操作系统需要向该网卡所在设备以外的设备发送报文时,可通过目标功能接收操作系统发送的报文,然后进行转发,不需再将报文从内核态拷贝到用户态,然后调用用户态报文处理框架的API,通过网卡发送出去,减少了报文由内核态向用户态的拷贝次数,及触发内核态和用户态程序调度的次数,进一步提高了报文的本地转发效率。
当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中基于用户态报文处理框架的报文本地转发过程示意图;
图2为本发明实施例所提供的报文转发方法的一种流程示意图;
图3为本发明实施例所提供的报文转发方法的第二种流程示意图;
图4为本发明实施例所提供的报文转发方法的第三种流程示意图;
图5为本发明实施例所提供的报文转发方法的第四种流程示意图;
图6为本发明实施例所提供的报文转发方法的第五种流程示意图;
图7为现有技术中另一种基于用户态报文处理框架的报文本地转发过程示意图;
图8为基于本发明实施例所提供的报文转发方法的报文本地转发过程示意图;
图9为本发明实施例所提供的一个具体实施例中负载均衡设备的示意框图;
图10为本发明实施例所提供的一个具体实施例的报文本地转发过程示意图;
图11为本发明实施例所提供的报文转发方法的第六种流程示意图;
图12为本发明实施例所提供的报文转发装置的第一种结构示意图;
图13为本发明实施例所提供的报文转发装置的第二种结构示意图;
图14为本发明实施例所提供的报文转发装置的第三种结构示意图;
图15为本发明实施例所提供的报文转发装置的第四种结构示意图;
图16为本发明实施例所提供的报文转发装置的第五种结构示意图;
图17为本发明实施例所提供的报文转发装置的第六种结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了提高报文的本地转发效率,本发明实施例提供了报文转发方法及装置。
下面首先对本发明实施例所提供的报文转发方法进行介绍,为清楚起见,将分别针对网卡所在设备以外的设备发送的报文与网卡所在设备发送的报文来进行说明。
针对网卡所在设备以外的设备发送的报文,如图2所示,本发明实施例提供的一种报文转发方法,应用于网卡,可以包括如下步骤:
S201,接收该网卡所在设备以外的设备发送的报文。
其中,设备可以是一台物理主机,那么,接收该网卡所在设备以外的设备发送的报文,即是接收外部物理主机发送的报文,当然,设备不限于一台物理主机,例如,设备还可以指负载均衡设备。
S202,根据预设分类规则,判断该报文是否为控制平面报文,如果是,执行S203。
该网卡在收到来自外部设备的报文后,首先判断该报文是否为控制平面报文,如果是,执行S203。
需要说明的是,实际应用中,可以针对该网卡,按照预设分类规则,配置网卡内置分类器,实现分类功能,将接收到的报文中的控制平面报文过滤出来。当然,上述提到的网卡内置分类器,由于网卡种类的不同,也可以是其他名称,例如网卡过滤器,但其功能相似,都能够按照预设分类规则,对接收到的报文进行分类过滤。其中,针对不同的网卡,按照预设分类规则,配置网卡内置分类器的具体过程属于现有技术,这里不再赘述。
本领域技术人员可以理解的是,所述根据预设分类规则,判断该报文是否为控制平面报文,可以包括:判断该报文的目的地址是否为本机地址;若是,判定该报文为控制平面报文。其中,报文的目的地址可以为目的IP地址;本机地址可以为该网卡所在设备的IP地址,也就是与该网卡绑定的IP地址。此外,需要说明的是,若该报文不为控制平面报文,可以理解的是,该报文为数据平面报文。
举例而言,假设网卡所在设备为一台主机,且该主机的IP地址为192.168.1.2,那么,若接收到的报文目的IP地址为192.168.1.2,该报文便为控制平面报文,否则该报文为数据平面报文。
S203,将该报文通过目标功能转发给该网卡对应的操作系统。
需要说明的是,该网卡可以将判定为控制平面报文的报文通过目标功能转发给对应的操作系统,其中,需要转发给本地用户态应用程序的报文会在操作系统内核中的网卡驱动接收后转发给内核TCP/IP协议栈,经TCP/IP协议栈处理后转发给本地用户态应用程序。此外,数据平面报文将通过网卡的除目标功能之外的功能转发给用户态报文处理应用程序。
其中,目标功能为该网卡通过虚拟化技术生成的功能,且目标功能由操作系统的内核中的网卡的驱动进行管理。
实际应用中,虚拟化技术可以为单根虚拟化I/O技术(SR-IOV,Single-root I/Ovirtualization),一种基于硬件的虚拟化解决方案,可提高性能和可伸缩性。基于SR-IOV技术,网卡可以生成一个物理功能(PF,Physical Function)和至少一个虚拟功能(VF,Virtual Function),在报文转发过程中,目标功能可以为物理功能或虚拟功能,需在报文转发前,将目标功能交由该网卡对应的操作系统的内核中的网卡驱动进行管理。
应用图2所示实施例提供的技术方案,在网卡接收到该网卡所在设备以外的设备发送的报文时,根据预设分类规则,判断该报文是否为控制平面报文,若是,将该报文通过目标功能转发给该网卡对应的操作系统;其中,目标功能为该网卡通过虚拟化技术生成的功能,由操作系统的内核中的网卡的驱动进行管理。可以看出,控制平面报文,即需要交给操作系统处理的报文,可以直接经过目标功能转发给操作系统,无需经过用户态报文处理应用程序接收后再转发给操作系统,减少了报文由用户态向内核态拷贝的次数,以及触发用户态和内核态程序调度的次数,提高了报文的本地转发效率。
更进一步的,如图3所示,当目标功能为物理功能时,本发明实施例所提供的一种报文转发方法,还可以包括:
S204,将该报文通过网卡的虚拟功能转发给用户态报文处理应用程序。
需要说明的是,当目标功能为物理功能时,若该网卡接收到的报文不是控制平面报文,而是数据平面报文,即S202的执行结果为否,则执行S204,即,将该报文通过网卡的虚拟功能转发给用户态报文处理应用程序。
具体的,所述将该报文通过网卡的虚拟功能转发给用户态报文处理应用程序,可以包括:
将该报文通过虚拟功能转发给用户态报文处理框架,再通过用户态报文处理框架转发给用户态报文处理应用程序;其中,虚拟功能由用户态报文处理框架管理。
实际应用中,用户态报文处理框架可以为DPDK,关于DPDK为现有技术,此处不再赘述。
具体的,本发明实施例的S203可以为S203A:
将该报文通过物理功能转发给网卡对应的操作系统。
应用图3所示实施例提供的技术方案,在网卡接收到该网卡所在设备以外的设备发送的报文时,根据预设分类规则,判断该报文是否为控制平面报文,若是,将该报文通过目标功能转发给该网卡对应的操作系统;其中,目标功能为该网卡通过虚拟化技术生成的功能,由操作系统的内核中的网卡的驱动进行管理。可以看出,控制平面报文,即需要交给操作系统处理的报文,可以直接经过目标功能转发给操作系统,无需经过用户态报文处理应用程序接收后再转发给操作系统,减少了报文由用户态向内核态拷贝的次数,以及触发用户态和内核态程序调度的次数,提高了报文的本地转发效率。
此外,现有技术中,网卡所在设备的可维护性和稳定性不高,具体体现在,网卡归用户态报文处理应用程序管理,一旦用户态报文处理应用程序因为Bug或其他原因关闭,该网卡对应的操作系统将无法接收控制平面报文,导致该网卡所在的设备脱离管理,出现无法登录等现象;而图3所示实施例提供的技术方案中,分别利用虚拟功能和物理功能来转发数据平面报文和控制平面报文,并将虚拟功能交由用户态报文处理框架管理,物理功能交由该网卡对应的操作系统管理,这样,即使用户态报文处理应用程序由于异常关闭,操作系统仍可以正常管理该网卡和接收其转发的控制平面报文,不会导致该网卡所在设备脱离管理,提升了管理的便利性。需要说明的是,现有技术中,针对上述网卡所在设备可能脱离管理的现象,也可以额外添加一块网卡用于接收控制平面报文,并将其交由操作系统管理,但与之相比,应用本发明实施例所提供的技术方案,成本更低。
更进一步的,在图3所示实施例的基础上,如图4所示,在S201之前,本发明实施例所提供的一种报文转发方法还可以包括:
S205,利用单根虚拟化I/O技术,生成物理功能和虚拟功能。
其中,单根虚拟化I/O技术已在图2的S203中作了相关介绍,而物理功能与虚拟功能具体如何生成也属于现有技术,此处一并不作赘述。
需要强调的是,该网卡的物理功能只有一个,而虚拟功能则至少包括一个,可以为多个;其中,在用户态报文处理应用程序启动前,物理功能由操作系统管理。
S206,启动用户态报文处理应用程序。
需要说明的是,在现有技术中,用户态报文处理应用程序启动后便会截获该网卡,导致控制平面报文不能直接转发给操作系统,本发明实施例所提供的技术方案中,通过SR-IOV技术,在启动用户态报文处理应用程序前,生成物理功能和虚拟功能,可以防止上述现象发生。
S207,将用户态报文处理应用程序与虚拟功能进行绑定。
其中,启动用户态报文处理应用程序后,可以将用户态报文处理应用程序与虚拟功能进行绑定,以进行后续报文的转发。
需要说明的是,用户态报文处理应用程序与虚拟功能一对一的关系,当用户态报文处理应用程序为多个时,相应地,需要生成多个虚拟功能,一一进行绑定,具体对应关系,此处不作限定。
此外,实际应用中,还可以对用户态报文处理应用程序绑定的虚拟功能进行调整,包括绑定其他的虚拟功能或者绑定物理功能,具体地,需要先将用户态报文处理应用程序进行关闭,再进行配置,实现绑定调整,其中,具体配置过程属于现有技术,此处不再赘述。
应用图4所示实施例提供的技术方案,在网卡接收到该网卡所在设备以外的设备发送的报文时,根据预设分类规则,判断该报文是否为控制平面报文,若是,将该报文通过目标功能转发给该网卡对应的操作系统;其中,目标功能为该网卡通过虚拟化技术生成的功能,由操作系统的内核中的网卡的驱动进行管理。可以看出,控制平面报文,即需要交给操作系统处理的报文,可以直接经过目标功能转发给操作系统,无需经过用户态报文处理应用程序接收后再转发给操作系统,减少了报文由用户态向内核态拷贝的次数,以及触发用户态和内核态程序调度的次数,提高了报文的本地转发效率。
此外,现有技术中,网卡所在设备的可维护性和稳定性不高,具体体现在,网卡归用户态报文处理应用程序管理,一旦用户态报文处理应用程序因为Bug或其他原因关闭,该网卡对应的操作系统将无法接收控制平面报文,导致该网卡所在的设备脱离管理,出现无法登录等现象;而图4所示实施例提供的技术方案中,分别利用虚拟功能和物理功能来转发数据平面报文和控制平面报文,并将虚拟功能交由用户态报文处理框架管理,物理功能交由该网卡对应的操作系统管理,这样,即使用户态报文处理应用程序由于异常关闭,操作系统仍可以正常管理该网卡和接收其转发的控制平面报文,不会导致该网卡所在设备脱离管理,提升了管理的便利性。需要说明的是,现有技术中,针对上述网卡所在设备可能脱离管理的现象,通常会额外添加一块网卡用于接收控制平面报文,并将其交由操作系统管理,与之相比,应用本发明实施例所提供的技术方案,成本更低。
在接收该网卡所在设备以外设备发送的报文之前,还可以利用单根虚拟化I/O技术,生成物理功能和虚拟功能,并在启动用户态报文处理应用程序后,将用户态报文处理应用程序与虚拟功能进行绑定,以进行后续报文的转发。
针对网卡所在设备发送的报文,如图5所示,本发明实施例所提供的一种报文转发方法可以包括:
S501,通过目标功能接收操作系统发送的第一类报文。
其中,目标功能可以为该网卡通过虚拟化技术生成的功能,由该网卡所在设备的操作系统的内核中的网卡驱动进行管理。
具体的,虚拟化技术可以为单根I/O虚拟化技术,相应地,目标功能可以为物理功能或虚拟功能,相关内容在图2的S203步骤已作相关介绍,这里不再赘述。
需要说明的是,第一类报文一般为发送给该网卡所在设备以外的设备的报文,可能为本地用户态应用程序发送的报文,具体的,用户态应用程序发送的报文首先经内核TCP/IP协议栈进行处理,然后通过内核网卡驱动主动发送给网卡的目标功能。
S502,通过目标功能转发第一类报文。
其中,目标功能接收到操作系统发送的第一类报文后,会将其转发出去,具体的,可以将其转发给第一类报文的目的地址对应的设备。
应用图5所示实施例提供的技术方案,当该网卡对应的操作系统需要向该网卡所在设备以外的设备发送报文时,可通过目标功能接收操作系统发送的报文,然后进行转发,不需再将报文从内核态拷贝到用户态,然后调用用户态报文处理框架的API,通过网卡发送出去,减少了报文由内核态向用户态的拷贝次数,及触发内核态和用户态程序调度的次数,提高了报文的本地转发效率。
更进一步的,在图5所示实施例的基础上,如图6所示,当所述目标功能为物理功能时,本发明实施例所提供的一种报文转发方法还可以包括:
S503,通过网卡的虚拟功能接收用户态报文处理框架转发的第二类报文,并转发第二类报文。
其中,当目标功能为物理功能时,用户态报文处理框架转发的第二类报文将由该网卡的虚拟功能接收并进行转发,具体的,可以转发给第二类报文的目的地址对应的设备。
需要说明的是,虚拟功能由用户态报文处理框架管理;第二类报文可以为用户态报文处理应用程序主动发送的报文。其中,用户态报文处理框架可以为DPDK,关于DPDK为现有技术,此处不再赘述。
具体的,本发明实施例的S501为S501A:
通过物理功能接收操作系统发送的第一类报文;
本发明实施例的S502为S502A:
通过物理功能转发第一类报文。
需要说明的是,现有技术中公开了另一种本地报文转发方法,基于此方法的报文转发过程如图7所示,与图1所示报文转发过程类似,不同之处在于,它将内核TAP驱动替换成了DPDK框架中提供的一种KNI(Kernel NIC Interface,内核网络控制器接口)驱动,可以理解的是,由于KNI驱动的报文缓存与用户态存在映射关系,其实际对应的物理内存地址相同,因此,当用户态报文处理应该程序接收到控制平面报文后,KNI驱动可以直接读取,不需将报文从用户态向内核态拷贝,同样当操作系统向外部发送报文时,KNI驱动接收到报文后,用户态报文处理应用程序也可以直接进行读取,无需将报文从内核态向用户态拷贝,在一定程度上,提高了本地报文转发效率。但是,该方案中,网卡仍属于用户态报文处理应用程序管理,一旦用户态报文处理应用程序由于Bug(系统漏洞)或其他原因关闭,无法顺利接收到报文,那么,KNI驱动也将无法读取到控制平面报文,导致网卡所在设备脱离管理,出现无法登录等现象,而图6所示实施例提供的解决方案中,即使用户态报文处理应用程序由于异常关闭,操作系统仍可以通过物理功能正常管理该网卡和接收其转发的控制平面报文,不会导致该网卡所在设备脱离管理,提升了管理的便利性。
应用图6所示实施例提供的技术方案,当该网卡对应的操作系统需要向该网卡所在设备以外的设备发送报文时,可通过目标功能接收操作系统发送的报文,然后进行转发,不需再将报文从内核态拷贝到用户态,然后调用用户态报文处理框架的API,通过网卡发送出去,减少了报文由内核态向用户态的拷贝次数,及触发内核态和用户态程序调度的次数,提高了报文的本地转发效率。
此外,现有技术中,网卡所在设备的可维护性和稳定性不高,具体体现在,网卡归用户态报文处理应用程序管理,一旦用户态报文处理应用程序因为Bug或其他原因关闭,该网卡对应的操作系统将无法接收控制平面报文,导致该网卡所在的设备脱离管理,出现无法登录等现象;而图6所示实施例提供的技术方案中,分别利用虚拟功能和物理功能来转发数据平面报文和控制平面报文,并将虚拟功能交由用户态报文处理框架管理,物理功能交由该网卡对应的操作系统管理,这样,即使用户态报文处理应用程序由于异常关闭,操作系统仍可以正常管理该网卡和接收其转发的控制平面报文,不会导致该网卡所在设备脱离管理,提升了管理的便利性。需要说明的是,现有技术中,针对上述网卡所在设备可能脱离管理的现象,通常会额外添加一块网卡用于接收控制平面报文,并将其交由操作系统管理,与之相比,应用本发明实施例所提供的技术方案,成本更低。
需要说明的是,基于图3和图6所示实施例提供的技术方案,报文本地转发过程可以参见图8所示,在网卡接收到该网卡所在设备以外的设备发送的报文时,经过网卡内置分类器的过滤,若该报文为控制平面报文,将其通过物理功能转发给内核网卡驱动,再由内核网卡驱动转发给内核TCP/IP协议栈进行处理,处理后的报文根据需要转发给本地普通用户态应用程序;若该报文为数据平面报文,则将其通过虚拟功能转发给用户态报文处理框架,再由用户态报文处理框架转发给用户态报文处理应用程序。另一方面,当该网卡对应的操作系统需要向该网卡所在设备以外的设备发送报文时,具体的,普通用户态应用程序需要向外发送报文,首先将该报文经过内核TCP/IP协议栈处理,然后将处理后的报文通过内核网卡驱动转发给物理功能,由物理功能向该报文目的地址对应的设备进行转发;当用户态报文处理应用程序需要主动发送报文时,需经用户态报文处理框架转发给虚拟功能,再由虚拟功能向该报文目的地址对应的设备进行转发。
可以看出与图1所示报文本地转发过程相比,控制平面报文可以直接由物理功能转发给操作系统,而不需要经过用户态报文处理应用程序的转发,避免了报文由用户态向内核态的拷贝;另一方面,当操作系统需要向网卡所在设备以外的设备发送报文时,可直接经过物理功能进行转发,同样不再需要经过用户态报文处理应用程序的转发,省略了报文由内核态向用户态的拷贝过程;同时,都减少了在报文拷贝过程中触发用户态和内核态程序调度的次数,有效地提高了本地报文转发的效率。
此外,物理功能由网卡对应的操作系统管理,这样,即使用户态报文处理应用程序由于异常关闭,操作系统仍可以正常管理该网卡和接收其转发的控制平面报文,不会导致该网卡所在设备脱离管理,提升了管理的便利性。
为方案清楚起见,针对图4和图6所示实施例提供的报文转发方法,下面将结合具体的应用实例进行介绍。假设网卡所在设备是一个负载均衡设备,本机IP地址为192.168.0.2,负载均衡VIP(Virtual IP)1为120.92.0.1,VIP2为120.92.0.2,即该负载均衡设备用于将目的IP地址为120.92.0.1的报文转发给服务1的三台机器,将目的IP地址为120.92.0.2的报文转发给服务2的两台机器,如图9所示;而去往192.168.0.2的报文,即控制平面报文,则转交给负载均衡设备本身的操作系统处理。
实际应用中,首先需要在接收外部报文之前,利用SR-IOV技术,生成网卡的物理功能PF和虚拟功能VF1,此时,负载均衡设备的操作系统上可以看到VF1和PF,然后根据预设规则,配置网卡内置分类器,使得目的IP地址为192.168.0.2的报文,发送给物理功能PF,目的IP地址为120.92.0.1或120.92.0.2的报文,发送给虚拟功能VF1;然后,启动负载均衡设备的负载均衡程序,即用户态报文处理应用程序,将其绑定在VF1上。
本应用实例的报文本地转发过程如图10所示,当负载均衡设备的网卡收到目的IP地址为192.168.0.2的报文时,网卡内置分类器会将其发送给PF,此时PF被操作系统内核中的网卡驱动管理,该报文经过网卡驱动后,交由操作系统的内核TCP/IP协议栈进行处理;当负载均衡设备的网卡收到的报文目的IP地址不是192.168.0.2,而是120.92.0.1或120.92.0.2时,网卡内置分类器会将其交给VF1,该报文则经由用户态报文处理框架DPDK直接交给负载均衡程序进行处理;相应地,操作系统发送的报文将由PF接收并进行转发,负载均衡程序主动发送的报文则由VF1接收并进行转发。
更进一步的,在图6所示实施例的基础上,如图11所示,在S501A之前,本发明实施例所提供的一种报文转发方法还可以包括:
S504,利用单根虚拟化I/O技术,生成物理功能和虚拟功能。
其中,单根虚拟化I/O技术已在图2的S203中作了相关介绍,而物理功能与虚拟功能具体如何生成也属于现有技术,此处一并不作赘述。
需要强调的是,该网卡的物理功能只有一个,而虚拟功能则至少包括一个,可以为多个;其中,在用户态报文处理应用程序启动前,物理功能由操作系统管理。
S505,启动用户态报文处理应用程序。
需要说明的是,在现有技术中,用户态报文处理应用程序启动后便会截获该网卡,导致控制平面报文不能直接转发给操作系统,本发明实施例所提供的技术方案中,通过SR-IOV技术,在启动用户态报文处理应用程序前,生成物理功能和虚拟功能,可以防止上述现象发生。
S506,将用户态报文处理应用程序与虚拟功能进行绑定。
其中,启动用户态报文处理应用程序后,可以将用户态报文处理应用程序与虚拟功能进行绑定,以进行后续报文的转发。
需要说明的是,用户态报文处理应用程序与虚拟功能一对一的关系,当用户态报文处理应用程序为多个时,相应地,需要生成多个虚拟功能,一一进行绑定,具体对应关系,此处不作限定。
此外,实际应用中,还可以对用户态报文处理应用程序绑定的虚拟功能进行调整,包括绑定其他虚拟功能或者绑定物理功能,具体地,需要先将用户态报文处理应用程序进行关闭,再对该网卡进行配置,实现绑定调整,其中,具体配置过程属于现有技术,此处不再赘述。
应用图11所示实施例提供的技术方案,在网卡接收到该网卡所在设备以外的设备发送的报文时,根据预设分类规则,判断该报文是否为控制平面报文,若是,将该报文通过目标功能转发给该网卡对应的操作系统;其中,目标功能为该网卡通过虚拟化技术生成的功能,由操作系统的内核中的网卡的驱动进行管理。可以看出,控制平面报文,即需要交给操作系统处理的报文,可以直接经过目标功能转发给操作系统,无需经过用户态报文处理应用程序接收后再转发给操作系统,减少了报文由用户态向内核态拷贝的次数,以及触发用户态和内核态程序调度的次数,提高了报文的本地转发效率。
此外,现有技术中,网卡所在设备的可维护性和稳定性不高,具体体现在,网卡归用户态报文处理应用程序管理,一旦用户态报文处理应用程序因为Bug或其他原因关闭,该网卡对应的操作系统将无法接收控制平面报文,导致该网卡所在的设备脱离管理,出现无法登录等现象;而图11所示实施例提供的技术方案中,分别利用虚拟功能和物理功能来转发数据平面报文和控制平面报文,并将虚拟功能交由用户态报文处理框架管理,物理功能交由该网卡对应的操作系统管理,这样,即使用户态报文处理应用程序由于异常关闭,操作系统仍可以正常管理该网卡和接收其转发的控制平面报文,不会导致该网卡所在设备脱离管理,提升了管理的便利性。需要说明的是,现有技术中,针对上述网卡所在设备可能脱离管理的现象,通常会额外添加一块网卡用于接收控制平面报文,并将其交由操作系统管理,与之相比,应用本发明实施例所提供的技术方案,成本更低。
在接收该网卡所在设备以外设备发送的报文之前,还可以利用单根虚拟化I/O技术,生成物理功能和虚拟功能,并在启动用户态报文处理应用程序后,将用户态报文处理应用程序与虚拟功能进行绑定,以进行后续报文的转发。
需要强调的是,本发明实施例所涉及的“第一类报文”中的“第一”和“第二类报文”中的“第二类”仅仅从命名上区分不同的报文,并不具有任何限定意义。
相应于上述方法实施例,针对网卡所在设备以外的设备发送的报文,本发明实施例提供了一种报文转发装置,如图12所示,所述装置可以包括:
第一报文接收模块1201,用于接收所述网卡所在设备以外的设备发送的报文;
判断模块1202,用于根据预设分类规则,判断所述报文是否为控制平面报文;
第一报文转发模块1203,用于在所述判断模块1202的结果为是的情况下,将所述报文通过目标功能转发给所述网卡对应的操作系统;其中,所述目标功能为所述网卡通过虚拟化技术生成的功能,所述目标功能由所述操作系统的内核中的所述网卡的驱动进行管理。
应用图12所示实施例提供的技术方案,在网卡接收到该网卡所在设备以外的设备发送的报文时,根据预设分类规则,判断该报文是否为控制平面报文,若是,将该报文通过目标功能转发给该网卡对应的操作系统;其中,目标功能为该网卡通过虚拟化技术生成的功能,由操作系统的内核中的所述网卡的驱动进行管理。可以看出,控制平面报文,即需要交给操作系统处理的报文,可以直接经过目标功能转发给操作系统,无需经过用户态报文处理应用程序接收后再转发给操作系统,减少了报文由用户态向内核态拷贝的次数,以及触发用户态和内核态程序调度的次数,提高了报文的本地转发效率。
其中,所述判断模块1202,具体可以用于:
判断所述报文的目的地址是否为本机地址;
若是,判定所述报文为控制平面报文。
具体的,所述虚拟化技术可以为单根虚拟化I/O技术。
具体的,所述目标功能可以为物理功能。
更进一步的,当所述目标功能为物理功能时,在包含第一报文接收模块1201,判断模块1202,第一报文转发模块1203的基础上,如图13所示,本发明实施例所提供的一种报文转发装置还可以包括:
第二报文转发模块1204,用于在所述判断模块1202的结果为否的情况下,将所述报文通过所述网卡的虚拟功能转发给用户态报文处理应用程序。
应用图13所示实施例提供的技术方案,在网卡接收到该网卡所在设备以外的设备发送的报文时,根据预设分类规则,判断该报文是否为控制平面报文,若是,将该报文通过目标功能转发给该网卡对应的操作系统;其中,目标功能为该网卡通过虚拟化技术生成的功能,由操作系统的内核中的网卡的驱动进行管理。可以看出,控制平面报文,即需要交给操作系统处理的报文,可以直接经过目标功能转发给操作系统,无需经过用户态报文处理应用程序接收后再转发给操作系统,减少了报文由用户态向内核态拷贝的次数,以及触发用户态和内核态程序调度的次数,提高了报文的本地转发效率。
此外,现有技术中,网卡所在设备的可维护性和稳定性不高,具体体现在,网卡归用户态报文处理应用程序管理,一旦用户态报文处理应用程序因为Bug或其他原因关闭,该网卡对应的操作系统将无法接收控制平面报文,导致该网卡所在的设备脱离管理,出现无法登录等现象;而图13所示实施例提供的解决方案中,分别利用虚拟功能和物理功能来转发数据平面报文和控制平面报文,并将虚拟功能交由用户态报文处理框架管理,物理功能交由该网卡对应的操作系统管理,这样,即使用户态报文处理应用程序由于异常关闭,操作系统仍可以正常管理该网卡和接收其转发的控制平面报文,不会导致该网卡所在设备脱离管理,提升了管理的便利性。需要说明的是,现有技术中,针对上述网卡所在设备可能脱离管理的现象,通常会额外添加一块网卡用于接收控制平面报文,并将其交由操作系统管理,与之相比,应用本发明实施例所提供的技术方案,成本更低。
其中,所述第二报文转发模块1204,具体可以用于:
将所述报文通过所述虚拟功能转发给用户态报文处理框架,再通过所述用户态报文处理框架转发给所述用户态报文处理应用程序;其中,所述虚拟功能由所述用户态报文处理框架管理。
更进一步的,在包含第一报文接收模块1201,判断模块1202,第一报文转发模块1203,第二报文转发模块1204的基础上,如图14所示,本发明实施例所提供的一种报文转发装置还可以包括:
第一功能生成模块1205,用于在所述第一报文接收模块1201接收所述网卡所在设备以外的设备发送的报文之前,利用所述单根虚拟化I/O技术,生成所述物理功能和所述虚拟功能;
第一启动模块1206,用于启动所述用户态报文处理应用程序;
第一绑定模块1207,用于将所述用户态报文处理应用程序与所述虚拟功能进行绑定。
应用图14所示实施例提供的技术方案,在网卡接收到该网卡所在设备以外的设备发送的报文时,根据预设分类规则,判断该报文是否为控制平面报文,若是,将该报文通过目标功能转发给该网卡对应的操作系统;其中,目标功能为该网卡通过虚拟化技术生成的功能,由操作系统的内核中的网卡的驱动进行管理。可以看出,控制平面报文,即需要交给操作系统处理的报文,可以直接经过目标功能转发给操作系统,无需经过用户态报文处理应用程序接收后再转发给操作系统,减少了报文由用户态向内核态拷贝的次数,以及触发用户态和内核态程序调度的次数,提高了报文的本地转发效率。
此外,现有技术中,网卡所在设备的可维护性和稳定性不高,具体体现在,网卡所在设备的可维护性和稳定性不高,具体体现在,网卡归用户态报文处理应用程序管理,一旦用户态报文处理应用程序因为Bug或其他原因关闭,该网卡对应的操作系统将无法接收控制平面报文,导致该网卡所在的设备脱离管理,出现无法登录等现象;而图14所示实施例提供的技术方案中,分别利用虚拟功能和物理功能来转发数据平面报文和控制平面报文,并将虚拟功能交由用户态报文处理框架管理,物理功能交由该网卡对应的操作系统管理,这样,即使用户态报文处理应用程序由于异常关闭,操作系统仍可以正常管理该网卡和接收其转发的控制平面报文,不会导致该网卡所在设备脱离管理,提升了管理的便利性。需要说明的是,现有技术中,针对上述网卡所在设备可能脱离管理的现象,通常会额外添加一块网卡用于接收控制平面报文,并将其交由操作系统管理,与之相比,应用本发明实施例所提供的技术方案,成本更低。
在接收该网卡所在设备以外设备发送的报文之前,还可以利用单根虚拟化I/O技术,生成物理功能和虚拟功能,并在启动用户态报文处理应用程序后,将用户态报文处理应用程序与虚拟功能进行绑定,以进行后续报文的转发。
针对网卡所在设备发送的报文,如图15所示,本发明实施例提供了一种报文转发装置,应用于网卡,所述装置可以包括:
第二报文接收模块1501,用于通过目标功能接收操作系统发送的第一类报文;其中,所述目标功能为所述网卡通过虚拟化技术生成的功能,所述目标功能由所述操作系统的内核中的所述网卡的驱动进行管理。
第三报文转发模块1502,用于通过所述目标功能转发所述第一类报文。
应用图15所示实施例提供的技术方案,当该网卡对应的操作系统需要向该网卡所在设备以外的设备发送报文时,可通过目标功能接收操作系统发送的报文,然后进行转发,不需再将报文从内核态拷贝到用户态,然后调用用户态报文处理框架的API,通过网卡发送出去,减少了报文由内核态向用户态的拷贝次数,及触发内核态和用户态程序调度的次数,提高了报文的本地转发效率。
具体的,所述虚拟化技术可以为单根虚拟化I/O技术。
具体的,所述目标功能可以为物理功能。
更进一步的,当所述目标功能为物理功能时,在包含第二报文接收模块1501,第三报文转发模块1502的基础上,如图16所示,本发明实施例所提供的一种报文转发装置还可以包括:
第四报文转发模块1503,用于通过所述网卡的虚拟功能接收用户态报文处理框架转发的第二类报文,并转发所述第二类报文;其中,所述虚拟功能由所述用户态报文处理框架管理。
应用图16所示实施例提供的技术方案,当该网卡对应的操作系统需要向该网卡所在设备以外的设备发送报文时,可通过目标功能接收操作系统发送的报文,然后进行转发,不需再将报文从内核态拷贝到用户态,然后调用用户态报文处理框架的API,通过网卡发送出去,减少了报文由内核态向用户态的拷贝次数,及触发内核态和用户态程序调度的次数,提高了报文的本地转发效率。
此外,现有技术中,网卡所在设备的可维护性和稳定性不高,具体体现在,网卡所在设备的可维护性和稳定性不高,具体体现在,网卡归用户态报文处理应用程序管理,一旦用户态报文处理应用程序因为Bug或其他原因关闭,该网卡对应的操作系统将无法接收控制平面报文,导致该网卡所在的设备脱离管理,出现无法登录等现象;而图16所示实施例提供的技术方案中,分别利用虚拟功能和物理功能来转发数据平面报文和控制平面报文,并将虚拟功能交由用户态报文处理框架管理,物理功能交由该网卡对应的操作系统管理,这样,即使用户态报文处理应用程序由于异常关闭,操作系统仍可以正常管理该网卡和接收其转发的控制平面报文,不会导致该网卡所在设备脱离管理,提升了管理的便利性。需要说明的是,现有技术中,针对上述网卡所在设备可能脱离管理的现象,通常会额外添加一块网卡用于接收控制平面报文,并将其交由操作系统管理,与之相比,应用本发明实施例所提供的技术方案,成本更低。
具体的,所述第二类报文可以为用户态报文处理应用程序发送的报文。
更进一步的,在包含第二报文接收模块1501,第三报文转发模块1502,第四报文转发模块1503的基础上,如图17所示,本发明实施例所提供的一种报文转发装置还可以包括:
第二功能生成模块1504,用于在所述第二报文接收模块1501通过目标功能接收操作系统发送的第一类报文之前,利用所述单根虚拟化I/O技术,生成所述物理功能和所述虚拟功能;
第二启动模块1505,用于启动所述用户态报文处理应用程序;
第二绑定模块1506,用于将所述用户态报文处理应用程序与所述虚拟功能进行绑定。
应用图17所示实施例提供的技术方案,在网卡接收到该网卡所在设备以外的设备发送的报文时,根据预设分类规则,判断该报文是否为控制平面报文,若是,将该报文通过目标功能转发给该网卡对应的操作系统;其中,目标功能为该网卡通过虚拟化技术生成的功能,由操作系统的内核中的网卡的驱动进行管理。可以看出,控制平面报文,即需要交给操作系统处理的报文,可以直接经过目标功能转发给操作系统,无需经过用户态报文处理应用程序接收后再转发给操作系统,减少了报文由用户态向内核态拷贝的次数,以及触发用户态和内核态程序调度的次数,提高了报文的本地转发效率。
此外,现有技术中,网卡所在设备的可维护性和稳定性不高,具体体现在,网卡所在设备的可维护性和稳定性不高,具体体现在,网卡归用户态报文处理应用程序管理,一旦用户态报文处理应用程序因为Bug或其他原因关闭,该网卡对应的操作系统将无法接收控制平面报文,导致该网卡所在的设备脱离管理,出现无法登录等现象;而图17所示实施例提供的技术方案中,分别利用虚拟功能和物理功能来转发数据平面报文和控制平面报文,并将虚拟功能交由用户态报文处理框架管理,物理功能交由该网卡对应的操作系统管理,这样,即使用户态报文处理应用程序由于异常关闭,操作系统仍可以正常管理该网卡和接收其转发的控制平面报文,不会导致该网卡所在设备脱离管理,提升了管理的便利性。需要说明的是,现有技术中,针对上述网卡所在设备可能脱离管理的现象,通常会额外添加一块网卡用于接收控制平面报文,并将其交由操作系统管理,与之相比,应用本发明实施例所提供的技术方案,成本更低。
在接收该网卡所在设备以外设备发送的报文之前,还可以利用单根虚拟化I/O技术,生成物理功能和虚拟功能,并在启动用户态报文处理应用程序后,将用户态报文处理应用程序与虚拟功能进行绑定,以进行后续报文的转发。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (18)
1.一种报文转发方法,其特征在于,应用于网卡,所述方法包括:
接收所述网卡所在设备以外的设备发送的报文;
根据预设分类规则,判断所述报文是否为控制平面报文;
若是,将所述报文通过目标功能转发给所述网卡对应的操作系统;其中,所述目标功能为所述网卡通过虚拟化技术生成的功能,所述目标功能由所述操作系统的内核中的所述网卡的驱动进行管理,所述虚拟化技术为单根虚拟化I/O技术,所述目标功能为物理功能。
2.根据权利要求1所述的方法,其特征在于,所述根据预设分类规则,判断所述报文是否为控制平面报文,包括:
判断所述报文的目的地址是否为本机地址;
若是,判定所述报文为控制平面报文。
3.根据权利要求2所述的方法,其特征在于,还包括:
若所述报文不是控制平面报文,将所述报文通过所述网卡的虚拟功能转发给用户态报文处理应用程序。
4.根据权利要求3所述的方法,其特征在于,所述接收所述网卡所在设备以外的设备发送的报文的步骤之前,所述方法还包括:
利用所述单根虚拟化I/O技术,生成所述物理功能和所述虚拟功能;
启动所述用户态报文处理应用程序;
将所述用户态报文处理应用程序与所述虚拟功能进行绑定。
5.根据权利要求4所述的方法,其特征在于,所述将所述报文通过所述网卡的虚拟功能转发给用户态报文处理应用程序,包括:
将所述报文通过所述虚拟功能转发给用户态报文处理框架,再通过所述用户态报文处理框架转发给所述用户态报文处理应用程序;其中,所述虚拟功能由所述用户态报文处理框架管理。
6.一种报文转发方法,其特征在于,应用于网卡,所述方法包括:
通过目标功能接收所述网卡对应的操作系统发送的第一类报文;其中,所述目标功能为所述网卡通过虚拟化技术生成的功能,所述目标功能由所述操作系统的内核中的所述网卡的驱动进行管理,所述第一类报文是本地用户态应用程序生成并转发至操作系统的;
通过所述目标功能转发所述第一类报文,所述虚拟化技术为单根虚拟化I/O技术,所述目标功能为物理功能。
7.根据权利要求6所述的方法,其特征在于,还包括:
通过所述网卡的虚拟功能接收用户态报文处理框架转发的第二类报文,并转发所述第二类报文;其中,所述虚拟功能由所述用户态报文处理框架管理。
8.根据权利要求7所述的方法,其特征在于,所述第二类报文为用户态报文处理应用程序发送的报文。
9.根据权利要求8所述的方法,其特征在于,所述通过目标功能接收操作系统发送的第一类报文的步骤之前,所述方法还包括:
利用所述单根虚拟化I/O技术,生成所述物理功能和所述虚拟功能;
启动所述用户态报文处理应用程序;
将所述用户态报文处理应用程序与所述虚拟功能进行绑定。
10.一种报文转发装置,其特征在于,应用于网卡,所述装置包括:
第一报文接收模块,用于接收所述网卡所在设备以外的设备发送的报文;
判断模块,用于根据预设分类规则,判断所述报文是否为控制平面报文;
第一报文转发模块,用于在所述判断模块的结果为是的情况下,将所述报文通过目标功能转发给所述网卡对应的操作系统;其中,所述目标功能为所述网卡通过虚拟化技术生成的功能,所述目标功能由所述操作系统的内核中的所述网卡的驱动进行管理,所述虚拟化技术为单根虚拟化I/O技术,所述目标功能为物理功能。
11.根据权利要求10所述的装置,其特征在于,所述判断模块,具体用于:
判断所述报文的目的地址是否为本机地址;
若是,判定所述报文为控制平面报文,所述虚拟化技术为单根虚拟化I/O技术,所述目标功能为物理功能。
12.根据权利要求11所述的装置,其特征在于,还包括:
第二报文转发模块,用于在所述判断模块的结果为否的情况下,将所述报文通过所述网卡的虚拟功能转发给用户态报文处理应用程序。
13.根据权利要求12所述的装置,其特征在于,还包括:
第一功能生成模块,用于在所述第一报文接收模块接收所述网卡所在设备以外的设备发送的报文之前,利用所述单根虚拟化I/O技术,生成所述物理功能和所述虚拟功能;
第一启动模块,用于启动所述用户态报文处理应用程序;
第一绑定模块,用于将所述用户态报文处理应用程序与所述虚拟功能进行绑定。
14.根据权利要求13所述的装置,其特征在于,所述第二报文转发模块,具体用于:
将所述报文通过所述虚拟功能转发给用户态报文处理框架,再通过所述用户态报文处理框架转发给所述用户态报文处理应用程序;其中,所述虚拟功能由所述用户态报文处理框架管理。
15.一种报文转发装置,其特征在于,应用于网卡,所述装置包括:
第二报文接收模块,用于通过目标功能接收所述网卡对应的操作系统发送的第一类报文;其中,所述目标功能为所述网卡通过虚拟化技术生成的功能,所述目标功能由所述操作系统的内核中的所述网卡的驱动进行管理,所述第一类报文是本地用户态应用程序生成并转发至操作系统的;
第三报文转发模块,用于通过所述目标功能转发所述第一类报文,所述虚拟化技术为单根虚拟化I/O技术,所述目标功能为物理功能。
16.根据权利要求15所述的装置,其特征在于,还包括:
第四报文转发模块,用于通过所述网卡的虚拟功能接收用户态报文处理框架转发的第二类报文,并转发所述第二类报文;其中,所述虚拟功能由所述用户态报文处理框架管理。
17.根据权利要求16所述的装置,其特征在于,所述第二类报文为用户态报文处理应用程序发送的报文。
18.根据权利要求17所述的装置,其特征在于,还包括:
第二功能生成模块,用于在所述第二报文接收模块通过目标功能接收操作系统发送的第一类报文之前,利用所述单根虚拟化I/O技术,生成所述物理功能和所述虚拟功能;
第二启动模块,用于启动所述用户态报文处理应用程序;
第二绑定模块,用于将所述用户态报文处理应用程序与所述虚拟功能进行绑定。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610890483.6A CN107948071B (zh) | 2016-10-12 | 2016-10-12 | 报文转发方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610890483.6A CN107948071B (zh) | 2016-10-12 | 2016-10-12 | 报文转发方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107948071A CN107948071A (zh) | 2018-04-20 |
CN107948071B true CN107948071B (zh) | 2020-12-11 |
Family
ID=61928297
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610890483.6A Active CN107948071B (zh) | 2016-10-12 | 2016-10-12 | 报文转发方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107948071B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108900327B (zh) * | 2018-06-20 | 2021-06-18 | 昆明理工大学 | 一种基于dpdk的天文数据采集和实时处理方法 |
CN109194558B (zh) * | 2018-07-25 | 2021-03-05 | 东软集团股份有限公司 | 隧道报文认证转发方法及系统 |
CN110932890B (zh) * | 2019-11-20 | 2022-09-09 | 厦门网宿有限公司 | 一种数据传输方法、服务器及计算机可读存储介质 |
CN111580936B (zh) * | 2020-05-19 | 2024-02-09 | 超越科技股份有限公司 | 虚拟化数据处理方法和系统 |
CN113382014B (zh) * | 2021-06-23 | 2022-12-06 | 中移(杭州)信息技术有限公司 | 协商处理方法、装置、终端设备以及存储介质 |
CN115442173B (zh) * | 2022-06-07 | 2024-02-06 | 北京车和家信息技术有限公司 | 车辆报文转发、处理方法、装置、电子设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102081552A (zh) * | 2009-12-01 | 2011-06-01 | 华为技术有限公司 | 一种物理机到虚拟机的在线迁移方法、装置和系统 |
CN103441879A (zh) * | 2013-08-29 | 2013-12-11 | 华为技术有限公司 | 一种网络通道切换方法及装置 |
CN103905309A (zh) * | 2012-12-28 | 2014-07-02 | 中国电信股份有限公司 | 虚拟机之间的数据交换方法和系统 |
CN104615480A (zh) * | 2015-02-04 | 2015-05-13 | 上海交通大学 | 基于numa高性能网络处理器负载的虚拟处理器调度方法 |
CN104796337A (zh) * | 2015-04-10 | 2015-07-22 | 京信通信系统(广州)有限公司 | 一种转发报文的方法及装置 |
CN105656808A (zh) * | 2015-12-29 | 2016-06-08 | 京信通信技术(广州)有限公司 | 报文处理方法及其系统 |
CN105765946A (zh) * | 2013-11-26 | 2016-07-13 | 瑞典爱立信有限公司 | 支持数据网络中的服务链接的方法和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130034094A1 (en) * | 2011-08-05 | 2013-02-07 | International Business Machines Corporation | Virtual Switch Data Control In A Distributed Overlay Network |
-
2016
- 2016-10-12 CN CN201610890483.6A patent/CN107948071B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102081552A (zh) * | 2009-12-01 | 2011-06-01 | 华为技术有限公司 | 一种物理机到虚拟机的在线迁移方法、装置和系统 |
CN103905309A (zh) * | 2012-12-28 | 2014-07-02 | 中国电信股份有限公司 | 虚拟机之间的数据交换方法和系统 |
CN103441879A (zh) * | 2013-08-29 | 2013-12-11 | 华为技术有限公司 | 一种网络通道切换方法及装置 |
CN105765946A (zh) * | 2013-11-26 | 2016-07-13 | 瑞典爱立信有限公司 | 支持数据网络中的服务链接的方法和系统 |
CN104615480A (zh) * | 2015-02-04 | 2015-05-13 | 上海交通大学 | 基于numa高性能网络处理器负载的虚拟处理器调度方法 |
CN104796337A (zh) * | 2015-04-10 | 2015-07-22 | 京信通信系统(广州)有限公司 | 一种转发报文的方法及装置 |
CN105656808A (zh) * | 2015-12-29 | 2016-06-08 | 京信通信技术(广州)有限公司 | 报文处理方法及其系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107948071A (zh) | 2018-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107948071B (zh) | 报文转发方法及装置 | |
US20200351204A1 (en) | Method, apparatus, and system for load balancing of service chain | |
US9535871B2 (en) | Dynamic routing through virtual appliances | |
US9270608B2 (en) | Multi-stage large send offload | |
US9454392B2 (en) | Routing data packets between virtual machines using shared memory without copying the data packet | |
US9363172B2 (en) | Managing a configurable routing scheme for virtual appliances | |
US20160077872A1 (en) | Data processing apparatus and data processing method | |
US20110125949A1 (en) | Routing packet from first virtual machine to second virtual machine of a computing device | |
US9535732B2 (en) | Zero copy transmission in virtualization environment | |
US9083611B2 (en) | Method and system for virtual network interface cards (VNICs) over aggregation spanning multiple switches | |
US20120317566A1 (en) | Virtual machine packet processing | |
US20180189084A1 (en) | Data flow affinity for heterogenous virtual machines | |
EP3242440A1 (en) | Fault tolerant method, apparatus and system for virtual machine | |
CN108965148B (zh) | 一种处理器及报文处理方法 | |
US11055159B2 (en) | System and method for self-healing of application centric infrastructure fabric memory | |
US20200028785A1 (en) | Virtual machine packet processing offload | |
CN106331065A (zh) | 一种用于具有服务容器的主机系统的代理应用以及系统 | |
US20180248805A1 (en) | Eliminating data traffic redirection in scalable clusters | |
CN104199716B (zh) | 一种虚拟机热迁移的方法、物理主机及系统 | |
KR102153585B1 (ko) | 네트워크 기능 가상화 장치 및 방법 | |
CN109218458B (zh) | Mac地址的写入方法、设备及计算机可读存储介质 | |
CN104468311A (zh) | 一种物理网卡虚拟成多个虚拟网卡的方法及系统 | |
US11750475B1 (en) | Monitoring customer application status in a provider network | |
CN107231409B (zh) | Dns数据处理方法、装置、存储介质及计算机设备 | |
CN110311868B (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 |