网络接口卡、计算设备以及数据包处理方法与流程

文档序号:23624693发布日期:2021-01-12 10:36阅读:46来源:国知局
本申请涉及计算机
技术领域
:,尤其涉及一种网络接口卡(英文全称:networkinterfacecard,缩写:nic),一种用于处理数据包的计算设备,以及该nic、该计算设备分别执行的数据包处理方法。
背景技术
::云计算环境中,由于需要对数量较高的用户提供服务,因此用于提供云服务的数据中心中的计算设备的数量往往较多,而每个计算设备上又运行了多个虚拟机(英文全称:virtualmachine,缩写:vm),如图1中的vm-1至vm-n。vm与其他计算设备上运行的vm或同一计算设备上的vm之间通过虚拟交换机(英文全称:virtualswitch,缩写:vs)通信,软件定义网络(英文全称:softwaredefinednetworking,缩写:sdn)控制器对各个计算设备上的虚拟交换机集中进行控制。当前常见的虚拟交换机包括openvswitch,sdn控制器通常通过openflow协议定义的流表(英文全称:flowtable)对各个虚拟交换机进行控制。每个计算设备上的硬件资源至少需要支持运行多个vm、虚拟交换机以及虚拟机监视器(英文全称:virtualmachinemonitor),虚拟机监视器又称为虚拟机管理器(英文全称:virtualmachinemanager)或管理程序(英文全称:hypervisor)。每台计算设备的硬件资源有限,如果负担了数据交换任务的虚拟交换机占用的硬件资源太多,则容易影响计算设备上vm的运行,降低工作效率。技术实现要素:本申请提供了一种数据包处理方法,以提升数据包处理效率。本申请的第一方面,提供了一种数据包处理方法,该方法应用于计算设备,该计算设备包括网络接口卡nic和主机,该nic与该主机建立通信连接,该nic与外部网络建立通信连接,该主机运行虚拟机vm,该方法包括:该nic接收源vm发出的数据流的第一数据包;该nic根据该第一数据包的匹配信息查询流表集合;在无法匹配到该数据流对应的流表情况下,该nic向该主机上运行的虚拟交换机转发该第一数据包;其中,该虚拟交换机在接收到该第一数据包后,从sdn控制器获取该数据流对应的流表,以便于该数据流对应的流表被加入到该流表集合。该虚拟交换机通过该第一数据包获取了该数据流对应的流表后,由该虚拟交换机或主机上运行的监控模块将该数据流对应的流表存入该流表集合。实际运行中,该nic接收一个数据包后,根据该数据包的匹配信息查询流表集合,如果无法获取该数据包所在数据流对应的流表,说明该数据包为该数据包所在数据流的首个数据包,或该数据包不是所在数据流的首个数据包,但该流表集合中该数据流对应的流表已经老化。该数据包处理方法,由该nic执行流表与数据包的匹配动作,提升了数据包的处理效率,并且将无法匹配到流表的数据包发送至虚拟交换机,以获取对应的流表用于nic对该数据流后续的数据包的处理。结合第一方面,在第一方面的第一种实现方式中,该nic上配置有nic外部网络端口,该nic外部网络端口用于与外部网络建立通信连接,该主机上运行的虚拟交换机上配置至少一个虚拟交换机端口,每个虚拟交换机端口对应该主机上运行的一个vm,该nic接收该第一数据包前,该方法还包括:该nic接收该虚拟交换机端口的配置信息;该nic根据该虚拟交换机端口的配置信息,在该nic上配置至少一个nic端口,每个nic端口通过单根-输入/输出虚拟化sr-i/ov技术与该主机上运行的一个vm连接。虚拟交换机端口以及nic端口的配置可以在第一方面提供的数据包处理方法之前完成,并且可以由该主机上运行的nic驱动向该nic发送该虚拟交换机端口的配置信息。结合第一方面的第一种实现方式,在第一方面的第二种实现方式中,该数据流对应的流表包括该数据流的数据包的路由信息,在向该虚拟交换机转发该第一数据包之后,该方法还包括:该nic根据该第一数据包的匹配信息查询该流表集合,获取该数据流对应的流表,并根据该数据流的数据包的路由信息转发该第一数据包至该外部网络。该虚拟交换机或主机上运行的监控模块将该数据流对应的流表存入该流表集合后,由该nic根据该第一数据包的匹配信息查询该流表集合,此时该流表集合中已经存有该数据流对应的流表。该nic可以在将该第一数据包发送至该虚拟交换机之后,定期将该第一数据包与该流表集合中的流表进行匹配,或者该数据流对应的流表存入该流表集合后,向该nic发送通知消息,指示该nic执行该第一数据包与该流表集合中的流表的匹配。该实现方式无须该虚拟交换机执行该第一数据包与流表的匹配,降低了该虚拟交换机的工作负担。结合第一方面的第一种实现方式,在第一方面的第三种实现方式中,该数据流对应的流表包括该数据流的数据包的路由信息,该虚拟交换机上配置有虚拟交换机外部网络端口,在向该虚拟交换机转发该第一数据包之后,该方法还包括:该nic接收该虚拟交换机返回的第一数据包,该返回的第一数据包中包含对应于该外部网络的端口标识,该端口标识为虚拟交换机外部网络端口标识或nic外部网络端口标识,该端口标识由该虚拟交换机根据该数据流对应的流表的数据包的路由信息添加;该nic根据该端口标识,转发该第一数据包到该外部网络。该实现方式无须该nic与该第一数据包的匹配,提升了数据包的处理效率。结合第一方面的第一种实现方式,在第一方面的第四种实现方式中,该虚拟交换机与该nic通过队列通信,该队列对应该外部网络;在向该虚拟交换机转发该第一数据包之后,该方法还包括:该nic从该队列接收该第一数据包;该nic根据该队列的队列信息,转发该第一数据包至该外部网络。该实现方式无须该nic与该第一数据包的匹配,与前述第三种实现方式相比,也无需该nic对端口标识的转换,进一步提升了数据包的处理效率。本申请的第二方面,提供了一种nic,该nic用于执行本申请第一方面提供的数据包处理方法。该nic包括:主机接口、网络接口和处理芯片,该网络接口用于与外部网络通信且该网络接口与该处理芯片建立通信连接,该主机接口用于与主机通信且该主机接口与该处理芯片建立通信连接,该主机运行vm;该主机接口,用于接收源vm发出的数据流的第一数据包;该处理芯片,用于根据该第一数据包的匹配信息查询流表集合;在无法匹配到该数据流对应的流表情况下,向该主机上运行的虚拟交换机转发该第一数据包;其中,该虚拟交换机在接收到该第一数据包后,从sdn控制器获取该数据流对应的流表,以便于该数据流对应的流表被加入到该流表集合。该nic能够执行流表与数据包的匹配动作,提升了数据包的处理效率,并且该nic将无法匹配到流表的数据包发送至虚拟交换机,以获取对应的流表用于nic对该数据流后续的数据包的处理。结合第二方面,在第二方面的第一种实现方式中,该nic上配置有nic外部网络端口,该nic外部网络端口对应于该网络接口,该主机上运行的虚拟交换机上配置至少一个虚拟交换机端口,每个虚拟交换机端口对应该主机上运行的一个vm;该处理芯片,还用于接收该虚拟交换机端口的配置信息,根据该虚拟交换机端口的配置信息,在该nic上配置至少一个nic端口,每个nic端口通过sr-i/ov技术与该主机上运行的一个vm连接。结合第二方面的第一种实现方式,在第二方面的第二种实现方式中,该处理芯片,还用于根据该第一数据包的匹配信息查询该流表集合,获取该数据流对应的流表,该数据流对应的流表包括该数据流的数据包的路由信息,并根据该数据流的数据包的路由信息转发该第一数据包至该外部网络。该实现方式中,无须该虚拟交换机与该第一数据包的匹配,降低了该虚拟交换机的工作负担。结合第二方面的第一种实现方式,在第二方面的第三种实现方式中,该虚拟交换机上配置有虚拟交换机外部网络端口;该处理芯片,还用于接收该虚拟交换机返回的第一数据包,该返回的第一数据包中包含对应于该外部网络的端口标识,该端口标识为虚拟交换机外部网络端口标识或nic外部网络端口标识,该端口标识由该虚拟交换机根据该数据流对应的流表的数据包的路由信息添加;还用于根据该端口标识,转发该第一数据包到该外部网络。该实现方式中,该nic无须将该第一数据包与流表进行匹配,提升了数据包的处理效率。结合第二方面的第一种实现方式,在第二方面的第四种实现方式中,该虚拟交换机与该nic通过队列通信,该队列对应该外部网络;该处理芯片,还用于从该队列接收该第一数据包,并根据该队列的队列信息,转发该第一数据包至该外部网络。该实现方式中,该nic无须将该第一数据包与流表进行匹配,并且与前述第三种实现方式相比,该nic也无须对端口标识进行转换,进一步提升了数据包的处理效率。本申请第三方面提供了一种数据包处理方法,该方法应用于计算设备,该计算设备包括网络接口卡nic和主机,该nic与该主机建立通信连接,该nic与外部网络建立通信连接,该主机运行虚拟机vm,该方法包括:该nic接收源vm发出的数据流的第二数据包;该nic根据该第二数据包的匹配信息查询流表集合,获取该数据流对应的流表,该数据流对应的流表包括该数据流的数据包的路由信息;该nic根据该数据流的数据包的路由信息,转发该第二数据包到该外部网络。该数据包处理方法,由该nic执行流表与数据包的匹配动作,提升了数据包的处理效率。结合第三方面,在第三方面的第一种实现方式中,该nic通过sr-i/ov技术与该主机上运行的vm连接;该nic通过与该源vm的连接接收该第二数据包。结合第三方面的第一种实现方式,在第三方面的第二种实现方式中,该nic上配置有nic外部网络端口,该nic外部网络端口用于与外部网络建立通信连接,该数据流的数据包的路由信息指示该nic外部网络端口,该主机上运行的虚拟交换机上配置至少一个虚拟交换机端口,每个虚拟交换机端口对应该主机上运行的一个vm,该nic接收该第二数据包前,该方法还包括:该nic接收该虚拟交换机端口的配置信息;根据该虚拟交换机端口的配置信息,在该nic上配置至少一个nic端口,每个nic端口通过sr-i/ov技术与该主机上运行的一个vm连接。结合第三方面的第二种实现方式,在第三方面的第三种实现方式中,该nic接收源vm发出数据流的第二数据包前,该方法还包括:该nic接收该数据流的第三数据包;该nic根据该第三数据包的匹配信息查询该流表集合;在无法匹配到该数据流对应的流表情况下,该nic向该主机上运行的虚拟交换机转发该第三数据包;其中,该虚拟交换机在接收到该第三数据包后,从sdn控制器获取该数据流对应的流表,以便于该数据流对应的流表被加入到该流表集合。结合第三方面的第三种实现方式,在第三方面的第四种实现方式中,在向该虚拟交换机转发该第三数据包之后,该方法还包括:该nic,根据该第三数据包的匹配信息查询该流表集合,获取该数据流对应的流表,并根据该数据流的数据包的路由信息转发该第三数据包至该外部网络。结合第三方面的第三种实现方式,在第三方面的第五种实现方式中,该虚拟交换机上配置有虚拟交换机外部网络端口,在向该虚拟交换机转发该第三数据包之后,该方法还包括:该nic接收该虚拟交换机返回的第三数据包,该返回的第三数据包中包含对应于该外部网络的端口标识,该端口标识为虚拟交换机外部网络端口标识或nic外部网络端口标识,该端口标识由该虚拟交换机根据该数据流的数据包的路由信息添加;该nic根据该端口标识,转发该第三数据包到该外部网络。结合第三方面的第三种实现方式,在第三方面的第六种实现方式中,该虚拟交换机与该nic通过队列通信,该队列对应该外部网络;在向该虚拟交换机转发该第三数据包之后,该方法还包括:该nic从该队列接收该第三数据包;该nic根据该队列的队列信息,转发该第三数据包至该外部网络。结合第三方面或第三方面的前述任一种实现方式,在第三方面的第七种实现方式中,该nic转发该第二数据包到该外部网络前,该方法还包括:该nic为该第二数据包添加overlay头,生成overlay数据包,该overlay头包括虚拟可扩展局域网vxlan头,或使用通用路由的网络虚拟化nvgre头,或无状态传输隧道stt头;该nic将该第二数据包发送至该外部网络包括:该nic将该overlay数据包发送至该外部网络。需要说明的是,如果该数据流的数据包均采用了overlay技术,该nic也需要对将为该第三数据包添加overlay头。本实现方式中,示例性的提出了该nic为该第二数据包封装overlay头,实际上该nic发送该数据流的数据包至该外部网络前,也会为其封装overlay头。该实现方式中,该nic实现了对overlay头的封装,降低了主机的工作负担。结合第三方面或第三方面的前述任一种实现方式,在第三方面的第八种实现方式中,该nic根据该第二数据包的匹配信息查询流表集合之前,该方法还包括:该nic对该第二数据包进行安全组检查,在确定该第二数据包的安全组检查通过之后,执行根据该第二数据包的匹配信息查询该流表集合的步骤。需要说明的是,如果该数据流的数据包均设置了安全组,,该nic也需要对确定该第三数据包的安全组检查通过后,才根据该第三数据包的匹配信息查询该流表集合。本实现方式中,示例性的提出了该nic对该第二数据包的安全组检查,实际上该nic匹配该数据流的其他数据包之前,也需要对其进行安全组检查。该实现方式中,该nic还实现了对该第二数据包的安全组检查,提升了数据包收发的安全的同时,进一步降低了主机的工作负担。本申请的第四方面提供了一种nic,该nic用于执行前述第三方面提供的数据包处理方法。该nic包括:主机接口、网络接口和处理芯片,该网络接口用于与外部网络通信且该网络接口与该处理芯片建立通信连接,该主机接口用于与主机通信且该主机接口与该处理芯片建立通信连接,该主机运行vm;该主机接口,用于接收源vm发出的数据流的第二数据包;该处理芯片,用于根据该第二数据包的匹配信息查询流表集合,获取该数据流对应的流表,该数据流对应的流表包括该数据流的数据包的路由信息;以及根据该数据流的数据包的路由信息,转发该第二数据包到该外部网络。结合第四方面,在第四方面的第一种实现方式中,该nic通过sr-i/ov技术与该主机上运行的vm连接;该主机接口,用于通过与该源vm的连接接收该第二数据包。结合第四方面的第一种实现方式,在第四方面的第二种实现方式中,该nic上配置有nic外部网络端口,该nic外部网络端口对应于该网络接口,该主机上运行的虚拟交换机上配置至少一个虚拟交换机端口,每个虚拟交换机端口对应该主机上运行的一个vm;该处理芯片,还用于接收该虚拟交换机端口的配置信息,并根据该虚拟交换机端口的配置信息,在该nic上配置至少一个nic端口,每个nic端口通过sr-i/ov技术与该主机上运行的一个vm连接。结合第四方面的第二种实现方式,在第四方面的第三种实现方式中,该网络接口,还用于接收该数据流的第三数据包;该处理芯片,还用于根据该第三数据包的匹配信息查询该流表集合;还用于在无法匹配到该数据流对应的流表情况下,向该主机上运行的虚拟交换机转发该第三数据包;其中,该虚拟交换机在接收到该第三数据包后,从sdn控制器获取该数据流对应的流表,以便于该数据流对应的流表被加入到该流表集合。结合第四方面的第三种实现方式,在第四方面的第四种实现方式中,该处理芯片,还用于根据该第三数据包的匹配信息查询该流表集合,获取该数据流对应的流表,并根据该数据流的数据包的路由信息转发该第三数据包至该外部网络。结合第四方面的第三种实现方式,在第四方面的第五种实现方式中,该处理芯片,还用于接收该虚拟交换机返回的第三数据包,该虚拟交换机上配置有虚拟交换机外部网络端口,该返回的第三数据包中包含对应于该外部网络的端口标识,该端口标识为虚拟交换机外部网络端口标识或nic外部网络端口标识,该端口标识由该虚拟交换机根据该数据流的数据包的路由信息添加,以及根据该端口标识,转发该第三数据包到该外部网络。结合第四方面的第三种实现方式,在第四方面的第六种实现方式中,该虚拟交换机与该nic通过队列通信,该队列对应该外部网络;该处理芯片,还用于从该队列接收该第三数据包;还用于根据该队列的队列信息,转发该第三数据包至该外部网络。结合第四方面或第四方面的前述任一种实现方式,在第四方面的第七种实现方式中,该处理芯片,还用于为该第二数据包添加overlay头,生成overlay数据包,该overlay头包括虚拟可扩展局域网vxlan头,或使用通用路由的网络虚拟化nvgre头,或无状态传输隧道stt头;还用于通过该网络接口将该overlay数据包发送至该外部网络。结合第四方面或第四方面的前述任一种实现方式,在第四方面的第八种实现方式中,该处理芯片根据该第二数据包的匹配信息查询流表集合之前,还用于对该第二数据包进行安全组检查,在确定该第二数据包的安全组检查通过之后,执行根据该第二数据包的匹配信息查询该流表集合的步骤。本申请的第五方面提供了一种计算设备,该计算设备包括网络接口卡nic和主机,该计算设备包括网络接口卡nic和主机,该nic与该主机建立通信连接,该主机上运行虚拟机vm和虚拟交换机,该nic上配置有nic外部网络端口,该nic外部网络端口用于与外部网络建立通信连接;该主机,用于向该nic发送配置信息;该nic,用于根据该配置信息,在该nic上配置至少一个nic端口,每个nic端口通过sr-i/ov技术与该主机上运行的一个vm连接;该nic,还用于接收源vm发出的数据流的第二数据包,根据该第二数据包的匹配信息查询流表集合,获取该数据流对应的流表,该数据流对应的流表包括该数据流的数据包的路由信息;还用于根据该数据流的数据包的路由信息,转发该第二数据包到该外部网络。结合第五方面,在第五方面的第一种实现方式中,该nic,还用于接收该数据流的第三数据包,根据该第三数据包的匹配信息查询该流表集合,在无法匹配到该数据流对应的流表情况下,向该主机转发该第三数据包;该主机,用于在接收到该第三数据包后,从sdn控制器获取该数据流对应的流表,以便于该数据流对应的流表被加入到该流表集合。具体的,该nic向该主机上运行的虚拟交换机发送该第三数据包。该主机,用于在接收到该第三数据包后,从sdn控制器获取该数据流对应的流表,以便于该数据流对应的流表被加入到该流表集合。结合第五方面的第一种实现方式,在第五方面的第二种实现方式中,该nic,还用于根据该第三数据包的匹配信息查询该流表集合,获取该数据流对应的流表,以及根据该数据流的数据包的路由信息转发该第三数据包至该外部网络。该nic在该数据流对应的流表被加入到该流表集合后,根据该第三数据包的匹配信息查询该流表集合。结合第五方面的第一种实现方式,在第五方面的第三种实现方式中,该虚拟交换机上配置有虚拟交换机外部网络端口;该主机,还用于生成返回的第三数据包,该返回的第三数据包中包含对应于该外部网络的端口标识,该端口标识为虚拟交换机外部网络端口标识或nic外部网络端口标识,该端口标识由该主机根据该数据流的数据包的路由信息添加;该nic,还用于接收该返回的第三数据包,并根据该端口标识,转发该第三数据包到该外部网络。该主机在接收到该nic在发来的该第三数据包之后,生成该返回的第三数据包。结合第五方面的第一种实现方式,在第五方面的第四种实现方式中,该虚拟交换机与该nic通过队列通信,该队列对应该外部网络;该主机,还用于将该第三数据包发送至该队列;该nic,还用于从该队列接收该第三数据包,以及根据该队列的队列信息,转发该第三数据包至该外部网络。结合第五方面或第五方面的前述任一种实现方式,在第五方面的第五种实现方式中,该nic,还用于为该第二数据包添加overlay头,生成overlay数据包,该overlay头包括虚拟可扩展局域网vxlan头,或使用通用路由的网络虚拟化nvgre头,或无状态传输隧道stt头;还用于将该overlay数据包发送至该外部网络。结合第五方面或第五方面的前述任一种实现方式,在第五方面的第六种实现方式中,该nic根据该第二数据包的匹配信息查询流表集合之前,还用于对该第二数据包进行安全组检查,在确定该第二数据包的安全组检查通过之后,执行根据该第二数据包的匹配信息查询该流表集合的步骤。本申请的第六方面提供了一种数据包处理方法,该方法运用于前述第五方面提供的计算设备。该方法包括:主机nic发送配置信息;该nic根据该配置信息,在该nic上配置至少一个nic端口,每个nic端口通过sr-i/ov技术与该主机上运行的一个vm连接;该nic接收源vm发出的数据流的第二数据包,根据该第二数据包的匹配信息查询流表集合,获取该数据流对应的流表,该数据流对应的流表包括该数据流的数据包的路由信息;该nic根据该数据流的数据包的路由信息,转发该第二数据包到该外部网络。结合第六方面,在第六方面的第一种实现方式中,该方法还包括:该nic接收该数据流的第三数据包,根据该第三数据包的匹配信息查询该流表集合,在无法匹配到该数据流对应的流表情况下,向该主机转发该第三数据包;该主机在接收到该第三数据包后,从sdn控制器获取该数据流对应的流表,以便于该数据流对应的流表被加入到该流表集合。结合第六方面的第一种实现方式,在第六方面的第二种实现方式中,在该nic向该主机转发该第三数据包之后,该方法还包括:该nic根据该第三数据包的匹配信息查询该流表集合,获取该数据流对应的流表,以及根据该数据流的数据包的路由信息转发该第三数据包至该外部网络。结合第六方面的第一种实现方式,在第六方面的第三种实现方式中,该虚拟交换机上配置有虚拟交换机外部网络端口;在该nic向该主机转发该第三数据包之后,该方法还包括:该主机生成返回的第三数据包,该返回的第三数据包中包含对应于该外部网络的端口标识,该端口标识为虚拟交换机外部网络端口标识或nic外部网络端口标识,该端口标识由该主机根据该数据流的数据包的路由信息添加;该nic接收该返回的第三数据包,并根据该端口标识,转发该第三数据包到该外部网络。结合第六方面的第一种实现方式,在第六方面的第四种实现方式中,该虚拟交换机与该nic通过队列通信,该队列对应该外部网络;在该nic向该主机转发该第三数据包之后,该方法还包括:该主机将该第三数据包发送至该队列;该nic从该队列接收该第三数据包,以及根据该队列的队列信息,转发该第三数据包至该外部网络。结合第六方面或第六方面的前述任一种实现方式,在第六方面的第五种实现方式中,该nic转发该第二数据包到该外部网络具体包括:该nic为该第二数据包添加overlay头,生成overlay数据包,该overlay头包括虚拟可扩展局域网vxlan头,或使用通用路由的网络虚拟化nvgre头,或无状态传输隧道stt头,并将该overlay数据包发送至该外部网络。结合第六方面或第六方面的前述任一种实现方式,在第六方面的第六种实现方式中,该nic根据该第二数据包的匹配信息查询流表集合之前,还对该第二数据包进行安全组检查,在确定该第二数据包的安全组检查通过之后,执行根据该第二数据包的匹配信息查询该流表集合的步骤。本申请的第七方面,提供了一种配置方法,该配置方法应用于主机,该主机与nic建立通信连接,该主机运行vm、虚拟交换机和nic驱动,该主机上运行的虚拟交换机上配置至少一个虚拟交换机端口,每个虚拟交换机端口对应该主机上运行的一个vm,该方法包括:该nic驱动向该nic发送该配置信息,该配置信息指示在该nic上配置至少一个nic端口,每个nic端口通过sr-i/ov技术与该主机上运行的一个vm连接。该nic上还配置了nic外部网络端口,该nic外部网络端口用于该nic与外部网络连接。可选的,可以通过该配置信息实现该nic外部网络端口的配置,或在该nic接收该配置信息之前实现该nic外部网络端口的配置。本申请的第八方面,提供了一种数据包处理方法,该方法应用于执行了本申请第七方面提供的配置方法的主机,该主机运行时执行本申请第五方面提供的数据包处理方法中主机侧的部分。该方法包括:该主机上运行的虚拟交换机接收第三数据包;该虚拟交换机从sdn控制器获取该数据流对应的流表;该虚拟交换机或该主机运行的监控模块将该数据流对应的流表加入到流表集合,以使得该nic根据该流表集合中的该数据流对应的流表,处理该数据流的后续数据包。结合第八方面,在第八方面的第一种实现方式中,在该数据流对应的流表被加入到该流表集合后,该方法还包括:该虚拟交换机向该nic发送通知消息,该通知消息用于通知该nic该数据流对应的流表已经加入到流表集合,以使得该nic根据该流表集合中的该数据流对应的流表,处理该第三数据包。结合第八方面,在第八方面的第二种实现方式中,该数据流对应的流表包括该数据流的数据包的路由信息,该方法还包括:该虚拟交换机根据该数据流的数据包的路由信息生成返回的第三数据包,该返回的第三数据包中包含对应于该外部网络的端口标识,该端口标识为虚拟交换机外部网络端口标识或nic外部网络端口标识,以使该nic根据该端口标识转发该第三数据包到该外部网络。结合第八方面,在第八方面的第三种实现方式中,该虚拟交换机与该nic通过队列通信,该队列对应该外部网络;该方法还包括:该虚拟交换机将该第三数据包发送至该队列;该nic驱动将该队列的队列信息发送至该nic,以使该nic根据该队列的队列信息,从该nic外部网络端口转发该第三数据包至该外部网络。本申请第九方面提供了一种主机,该主机包括处理器、存储器、总线,该处理器和该存储器通过该总线建立通信连接,该处理器运行时,执行前述第七方面提供的配置方法。本申请第十方面提供了一种主机,该主机包括处理器、存储器、总线,该处理器和该存储器通过该总线建立通信连接,该处理器运行时,执行前述第八方面或第八方面的任一种实现方式提供的数据包处理方法。本申请的第十一方面,提供了一种存储介质,该存储介质中存储了程序代码,该程序代码被计算设备运行时,执行第七方面提供的配置方法。该存储介质包括但不限于快闪存储器、硬盘(英文:harddiskdrive,缩写:hdd)或固态硬盘(英文:solidstatedrive,缩写:ssd)。本申请的第十二方面,提供了一种存储介质,该存储介质中存储了程序代码,该程序代码被计算设备运行时,执行第八方面或第八方面的任一种实现方式提供的数据包处理方法。该存储介质包括但不限于快闪存储器、hdd或ssd。本申请的第十三方面,提供了一种计算机程序产品,该计算机程序产品可以为一个软件安装包,该软件安装包被计算设备运行时,执行第七方面提供的配置方法。本申请的第十四方面,提供了一种计算机程序产品,该计算机程序产品可以为一个软件安装包,该软件安装包被计算设备运行时,执行第八方面或第八方面的任一种实现方式提供的数据包处理方法。附图说明为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作以简单地介绍,显而易见的,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为现有技术中数据中心架构的示意图;图2a为本申请实施例提供的sdn架构的示意图;图2b为现有技术中sdn中的计算设备的组织结构示意图;图2c为本申请实施例提供的计算设备的组织结构示意图;图3为本申请实施例提供的又一计算设备的组织结构示意图;图4为本申请实施例提供的数据包处理方法的流程示意图;图5a为本申请实施例提供的另一计算设备的组织结构示意图;图5b为本申请实施例提供的另一计算设备的组织结构示意图;图5c为本申请实施例提供的另一计算设备的组织结构示意图;图5d为本申请实施例提供的另一计算设备的组织结构示意图;图6a为本申请实施例提供的nic的组织结构示意图;图6b为本申请实施例提供的又一nic的组织结构示意图;图6c为本申请实施例提供的又一nic的组织结构示意图。具体实施方式下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。本申请中采用术语第一、第二等来区分各个对象,例如第一数据包、第二数据包等,但各个“第一”、“第二”之间不具有逻辑或时序上的依赖关系。贯穿本说明书,数据包由匹配信息和载荷(英文全称:payload)构成。其中,匹配信息用于与流表的匹配域进行匹配。贯穿本说明书,流表(英文全称:flowtable)用于在sdn中控制数据流,也可以称为sdn流表,具体可以采用符合openflow协议的流表或符合其他协议的流表。流表至少包括匹配域和执行域,该匹配域用于与数据包进行匹配,该执行域用于指示匹配上流表的数据包应该执行的动作。执行域包括了数据包的动作标识,例如转发、丢弃、上送sdn控制器等,执行域还包括了数据包的路由信息,例如数据包的目的端口标识等。贯穿本说明书,数据流(英文全称:dataflow)指示能够匹配相同流表的一系列数据包。具体的,同一数据流中的数据包的匹配信息,均可以匹配上该数据流对应的流表的匹配域。贯穿本说明书,虚拟交换机为安装在计算设备上的,通过软件实现的交换设备,常用于sdn中。常见的虚拟交换机包括openvswitch,缩写为ovs,ovs为一个开源项目提供的虚拟交换机。贯穿本说明书,overlay类型数据包指代采用了overlay封装技术处理的数据包,具体的overlay封装技术包括了虚拟可扩展局域网(英文全称:virtualextensiblelocalareanetwork,缩写:vxlan)技术,使用通用路由的网络虚拟化(英文全称:networkvirtualizationusinggenericroutingencapsulation,缩写:nvgre)技术和无状态传输隧道(英文全称:statelesstransporttunneling,缩写: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之外的部分称之为主机。其中,处理器可以为中央处理器(英文:centralprocessingunit,缩写:cpu),存储设备包括易失性存储器(英文:volatilememory),例如随机存取存储器(英文:random-accessmemory,缩写:ram),以及非易失性存储器(英文:non-volatilememory),例如只读存储器(英文:read-onlymemory,缩写:rom)、快闪存储器、hdd或ssd等。每个主机运行时,其硬件层支持软件层内的虚拟交换机以及多个vm的运行。每个计算设备内的主机和nic建立通信连接,主机通过nic与外部网络通信,例如首先由nic从外部网络获取发往该主机上运行的vm数据包,然后发送至主机上运行的vm,而该主机上运行的vm发往外部网络的数据包首先发送至nic,然后通过nic发送至外部网络。下面以计算设备1为例展示现有技术中的数据包处理流程与本申请提供的数据包处理流程的区别。如图2b,现有技术中,计算设备1内的虚拟交换机从vm接收到数据包后,由该虚拟交换机将该数据包与虚拟交换机可访问流表集合中的流表进行匹配,并根据匹配上的流表的指示,将该数据包发送至与该虚拟交换机相连的nic。由以上数据包的处理流程可见,现有技术中,数据包处理过程中主要的运行压力集中在虚拟交换机上,而虚拟交换机的运行依赖于计算设备上的硬件层的资源,虚拟交换机占用的处理器和存储设备资源越多,计算设备上能够用于vm运行的资源就越少,而如果限定虚拟交换机能够占用的硬件层的资源的上限,那么随着数据流量的增大,虚拟交换机的性能将难以保证。如图2c,本申请提供的数据包处理流程中,计算设备1内的nic从vm接收到数据包后,将该数据包与nic可访问流表集合中的流表进行匹配,并根据匹配上的流表的指示,将该数据包发送至与该nic相连的目的vm或外部网络。该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。如图5a或图5b或图5c所示,vs外部网络端口与nic建立通信连接,该虚拟交换机将目的地为外部网络的报文从虚拟交换机外部网络端口发送至该nic,并由该nic将该报文发送至该外部网络。步骤404,该主机生成第二配置信息,并将该第二配置信息发送至计算设备的nic。具体的,该主机上运行的拦截模块,获取该第一配置信息,将该第一配置信息发送至该主机上运行的nic驱动,该nic驱动根据该第一配置信息,生成该第二配置信息,并发送至该nic。该第一配置信息与该第二配置信息的功能类似,该nic驱动对其转换主要为了符合nic驱动与nic通信的规范。步骤406,该nic根据该第二配置信息,在该nic上配置至少一个nic端口,每个nic端口通过sr-i/ov技术与该主机上运行的一个vm连接。步骤406前,该nic上配置还可以配置nic外部网络端口。该nic外部网络端口的配置可以在步骤406之前或之后完成,或者该nic外部网络端口的配置可以在步骤406中,根据该第二配置信息完成。nic端口具体可以为sr-i/ov技术定义的虚拟功能(英文全称:virtualfunction,缩写:vf)的端口。nic外部网络端口用于与外部网络通信。步骤402至步骤406为可选步骤,且步骤402至步骤406为该虚拟交换机和该nic的配置过程,无须每次执行步骤408及步骤408的后续步骤前都执行一次步骤402至步骤406。如图5a或图5b或图5c,通过该配置过程,主机上运行的vm通过nic端口与nic连接,虚拟交换机上虽然建立了与vm一一对应的vs端口,但主机上运行的vm并不与虚拟交换机连接。本申请中描述数据包的目的地为外部网络的场景,因此虚拟交换机接收到的数据包对应于vs外部网络端口。实际上虚拟交换机接收到的数据包的目的地还可能为计算设备上运行的vm。如图5b,该虚拟交换机和该nic的配置过程中,或该虚拟交换机和该nic的配置过程之前或之后,还需要配置该虚拟交换机与该nic通信的至少一个队列,用于该虚拟交换机将从nic接收到的数据包返回给该nic。队列的配置有两种方式,其一如图5b所示,该虚拟交换机与该nic通过一个队列通信,该虚拟交换机将需要发往该nic的全部数据包发送至该队列;其二如图5c所示,该虚拟交换机与该nic通过多个队列通信,这多个队列中有至少一个队列用于将该虚拟交换机通过vs外部网络端口发出的报文发送至该nic,这多个队列中的其余队列用于将对应于vs端口的报文发送至该nic。该配置过程无须上层管理设备的感知,由该计算设备将本应连接于虚拟交换机的vm连接于nic上,无须上层管理设备对配置信息进行修改,提升了配置过程的兼容性和降低了实现难度。步骤408,该nic接收源vm发出的第一数据包。该nic通过nic端口接收该第一数据包。步骤410,该nic对该第一数据包进行安全组检查,确定该第一数据包的安全组检查通过。确定该源vm是否属于某一静态安全组,若确定该源vm属于某一静态安全组,则判断该第一数据包能否匹配上该静态安全组的任一规则,若该第一数据包能够匹配上该静态安全组的至少一条规则,则该第一数据包通过静态安全组检查。若该源vm不属于任一静态安全组,则无需对该第一数据包进行静态安全组检查,根据第一预设规则直接对该第一数据包进行处理,例如将该第一数据包与nic可访问流表集合中的流表进行匹配。若该源vm属于某一静态安全组,但该第一数据包无法匹配该静态安全组的任一规则,则该第一数据包无法通过安全组检查,根据第二预设规则处理该第一数据包,例如丢弃该第一数据包。以上为设置有白名单的静态安全组的场景,如果设置的为黑名单的静态安全组,与白名单的场景相反,如果该第一数据包属于某一静态安全组但无法匹配该静态安全组的任一规则,则该第一数据包通过静态安全组检查。而如果该源vm属于某一静态安全组,且该第一数据包可以匹配该静态安全组的至少一条规则,则该第一数据包无法通过静态安全组检查。可选的,若设置有动态安全组,则首先判断该源vm是否属于动态安全组,如果该源vm属于动态安全组,则根据该第一数据包查询连接跟踪表(英文全称:connectiontracktable),确认该第一数据包属于哪个连接,并确定该第一数据包该连接的状态以及该第一数据包对应的处理动作,如果该第一数据包的处理动作指示将该第一数据包与nic可访问流表集合中的流表进行匹配,则该第一数据包通过动态安全组检查。以上静态安全组和动态安全组可以同时设置,此时通过静态安全组检查和动态安全组检查的数据包才通过了安全组检查。步骤412,该nic根据该第一数据包的匹配信息查询nic可访问流表集合。若无法匹配nic可访问流表集合中的任一流表,则执行步骤414、步骤416、步骤4181或步骤4182至步骤4184或步骤4185至步骤4186。若能够匹配nic可访问流表集合中的流表,则执行步骤420。如果该第一数据包的匹配信息无法匹配nic可访问流表集合中的任一流表,则该第一数据包为该第一数据包所在的数据流的首个数据包,或该第一数据包不是该数据流的首个数据包,但该数据流对应的流表在nic可访问流表集合中已经被删除。如果该第一数据包的匹配信息能够匹配nic可访问流表集合中的流表,则说明nic可访问流表集合中已经存有该第一数据包所在的数据流对应的流表。步骤414,该nic通过主机端口向该虚拟交换机转发该第一数据包。该主机端口可以为sr-i/ov技术定义的物理功能(英文全称:physicalfunction,缩写:pf)的端口。步骤416,该虚拟交换机在接收到该第一数据包后,获取该数据流对应的流表,该数据流对应的流表被加入到该nic可访问流表集合。该虚拟交换机获取该第一数据包后,将该第一数据包发送至sdn控制器,虚拟交换机可访问流表集合接收sdn控制器根据该第一数据包生成的该数据流对应的流表。虚拟交换机可访问流表集合中,还可能存储有生成该数据流对应的流表所需的信息,例如慢表(英文全称:slowtable),则该虚拟交换机根据该信息生成该数据流对应的流表即可,无须将该第一数据包发送至sdn控制器。该虚拟交换机将该数据流对应的流表存入虚拟交换机可访问流表集合和nic可访问流表集合。或者,该主机上运行的监控模块监控该虚拟交换机获取该数据流对应的流表,该监控模块将该数据流对应的流表存入nic可访问流表集合。由于该数据流对应的流表由sdn控制器生成,而sdn控制器无须知道主机上运行的vm实际连接于nic。因此该数据流的数据包的路由信息具体可以包括vs外部网络端口标识,而vs外部网络端口与nic外部网络端口对应,该数据流的数据包的路由信息指示nic外部网络端口。步骤416后,将该第一数据包发送至其目的地有三种可选的方案,分别为步骤4181、步骤4182至步骤4184和步骤4185至步骤4186,实际步骤416后可以执行这三种可选方案中的任一种。步骤4181,该nic根据该第一数据包的匹配信息查询该nic可访问流表集合,获取该数据流对应的流表,并根据该数据流的数据包的路由信息转发该第一数据包至该外部网络。这种情况下,该nic需要存有vs外部网络端口标识与nic外部网络端口标识的对应关系,该nic获取该数据流的数据包的路由信息包括的vs外部网络端口标识后,将vs端口标识转换为nic外部网络端口标识,并将该第一数据包从该nic外部网络端口发出。步骤416中该虚拟交换机或该监控模块将该数据流对应的流表存储到nic可访问流表集合后,向该nic发送通知消息,该通知消息用于通知该nic该数据流对应的流表已经存储于nic可访问流表集合。该nic接收到该通知信息后,根据该第一数据包的匹配信息在该nic可访问流表集合中可以匹配上该数据流对应的流表。或者,该nic在步骤414后,周期性的根据该第一数据包的匹配信息匹配该nic可访问流表集合的流表,在步骤416执行完毕后该nic的下一次匹配中,该nic根据该第一数据包的匹配信息在该nic可访问流表集合中可以匹配上该数据流对应的流表。可选步骤4181无须虚拟交换机将该第一数据包和该数据流对应的流表进行匹配,降低了虚拟交换机的工作负担。步骤4182,该虚拟交换机将该第一数据包与该虚拟交换机可访问流表集合中的该数据流对应的流表进行匹配,获取该数据流的数据包的路由信息。步骤4183,该虚拟交换机,根据该数据流的数据包的路由信息生成返回的第一数据包,将该返回的第一数据包发送至该nic,该返回的第一数据包中包含对应于该外部网络的端口标识,该端口标识为虚拟交换机外部网络端口标识或nic外部网络端口标识。步骤4184,该nic接收该返回的第一数据包,并根据该端口标识,转发该第二数据包到该外部网络。步骤416中该数据流的数据包的路由信息具体可以包括vs外部网络端口标识。步骤4183中可选的,如图5b,该虚拟交换机将该数据流的数据包的路由信息添加到该返回的第一数据包中,并通过队列发送至该nic。这种情况下,该nic需要存有vs外部网络端口标识与nic外部网络端口标识的对应关系,该nic接收到该返回的第一数据包后,将该vs外部网络端口标识转换为nic外部网络端口标识,并将该第一数据包通过nic外部网络端口发送至外部网络。这种实施方式下该虚拟交换机的负载更低,提升了主机的工作效率。步骤4183中可选的,如图5b,该虚拟交换机获取将该数据流的数据包的路由信息后,将该数据流的数据包的路由信息包括的vs外部网络端口标识转换为nic外部网络端口,并将nic外部网络端口添加到该返回的第一数据包中,并通过队列将该返回的第一数据包发送至该nic。这种情况下,该虚拟交换机需要存有vs外部网络端口标识与nic外部网络端口标识的对应关系。该nic接收到该返回的第一数据包后,将该第一数据包通过nic外部网络端口发送至外部网络。这种实施方式下,nic无须对端口标识进行转换,可以更高效的处理数据包。步骤4185,该虚拟交换机将该第一数据包发送至该外部网络对应的队列。步骤4186,该nic从该外部网络对应的队列接收该第一数据包,并该nic根据该外部网络对应的队列的队列信息,从该nic外部网络端口转发该第一数据包至该外部网络。如图5c,该虚拟交换机与该nic通过多个队列通信,其中队列1用于vs外部网络端口与nic之间的通信。该虚拟交换机将该第一数据包与该虚拟交换机可访问流表集合中的该数据流对应的流表进行匹配,获取该数据流的数据包的路由信息后,例如为vs外部网络端口标识,则该虚拟机交换机将该第一数据包发送至队列1。该nic从队列1获取该第一数据包,该主机上运行的nic驱动向该nic发送队列信息,该队列信息用于通知该nic该第一数据包来自队列1。由于队列1与nic外部网络端口对应,则该nic通过nic外部网络端口将该第一数据包发送至外部网络。这种实施方式与前述两种可选方案相比,虚拟交换机和nic均无需将该数据流的数据包的路由信息转换为nic外部网络端口标识,提升了数据包的转发效率。在这三种可选方案中确认了该第一数据包需要从nic外部网络端口发出后,可选的,该nic还为该第一数据包添加第一overlay头,生成第一overlay数据包,该第一overlay头包括虚拟可扩展局域网vxlan头,或使用通用路由的网络虚拟化nvgre头,或无状态传输隧道stt头。需要说明的是,实际中根据网络设置决定是否为该第一数据包添加overlay头,不一定所有发往外部网络的数据包都需要采用overlay技术。步骤420,该nic根据匹配上的流表中包括的路由信息,转发该第一数据包到该外部网络。该nic根据该第一数据包的匹配信息,在该nic可访问流表集合中匹配上该第一数据包所在数据流对应的流表,根据该流表包括的该数据流的数据包的路由信息转发该第一数据包到该外部网络。由于步骤412中,该nic能够将该第一数据包匹配上nic可访问流表集合中的流表,因此该第一数据包不是所在数据流的首个数据包。步骤420中,获取第一数据包所在数据流对应的流表后,根据该第一数据包所在数据流的网络设置,可选的,还可以为该第一数据包添加第一overlay头以生成第一overlay数据包,该第一overlay头包括vxlan头,或nvgre头,或stt头,再将第一overlay数据包发送至该外部网络。步骤4181或步骤4184或步骤4186或步骤420之后,该nic继续接收该数据流的后续数据包的情况下,例如第二数据包,如果该数据流对应的流表仍存储于nic可访问流表集合中,则nic根据该数据流的数据包的路由信息转发第二overlay数据包到该外部网络,该第二overlay数据包包括该第二数据包和该第二数据包对应的第二overlay头。而实际中由于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-1至vm-n或vm-n+1至vm-n+m。如果该数据包来自vm-1至vm-n,则对该数据包执行前述图4中的数据包处理方法,如果该数据包来自vm-n+1至vm-n+m,则该数据包在虚拟交换机上已经完成与流表的匹配,nic根据匹配结果处理该数据包。这种情况下,从vm-n+1至vm-n+m发出的数据包所在数据流对应的流表,不会被存入nic可访问流表集合。本申请还提供了一种nic600,该nic600可以为前述任一附图提供的nic。该nic600的组织结构示意图如图6a所示,包括主机接口602,网络接口604以及处理芯片606。网络接口604用于与外部网络通信且网络接口604与处理芯片606建立通信连接。主机接口602用于与nic600所连接的主机上运行的虚拟交换机、vm、nic驱动等通信且主机接口602与处理芯片606建立通信连接。前述数据包处理方法中,nic上建立的nic端口、nic外部网络端口和主机端口为虚拟端口,主机端口与nic端口实际通过主机接口602实现与主机的通信,nic外部网络端口通过网络接口604实现与外部网络的通信。参考图3,主机接口602实际可以为nic600与计算设备的总线连接的接口。主机接口602,用于从该nic连接的主机获取配置信息。将该配置信息发送至处理芯片606。处理芯片606,用于根据该配置信息将nic600与该主机上运行的vm连接,并且建立nic外部网络端口。具体的,参考前述步骤406。以上为nic600的配置过程中nic600中各个单元的功能,nic600还可以用于数据包的处理,参考前述数据包处理方法中的步骤408及其步骤408之后的步骤。主机接口602,还用于接收源vm发出的第一数据包,参考步骤408。主机接口602将接收到的该第一数据包发送至处理芯片606。处理芯片606接收到该第一数据包后,对该第一数据包的处理参考前述步骤410、步骤412。处理芯片606,还用于执行步骤412,确定该第一数据包无法匹配nic可访问流表集合中的任一流表的情况下,执行步骤414及后续步骤。步骤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从对应于vs外部网络端口的队列接收该第一数据包,由于处理芯片606预先配置有该队列与nic外部网络端口的对应关系,因此处理芯片606可以获得nic外部网络端口标识。处理芯片606执行步骤412,并确定该第一数据包能够匹配nic可访问流表集合中的流表的情况下,获取匹配上的流表中包括的该数据流的数据包的路由信息。该数据流的数据包的路由信息可以包括vs外部网络端口标识,处理芯片606将vs外部网络端口标识转换为nic外部网络端口标识,并将该第一数据包从nic外部网络端口发送出去。获取第一数据包所在数据流对应的流表后,根据该数据流的网络设置,可选的,处理芯片606可以为该第一数据包添加第一overlay头,生成第一overlay数据包,再将第一overlay数据包发送至该外部网络。以上提供的nic实现了流表匹配功能,对于在nic可访问流表集合中的数据包,将无需发送至虚拟交换机进行处理,降低了主机的负荷,提升了与该nic相连的主机的工作效率。处理芯片606可以通过专用集成电路(英文:application-specificintegratedcircuit,缩写:asic)实现,或可编程逻辑器件(英文:programmablelogicdevice,缩写:pld)实现。上述pld可以是复杂可编程逻辑器件(英文:complexprogrammablelogicdevice,缩写:cpld),现场可编程门阵列(英文:fieldprogrammablegatearray,缩写:fpga),通用阵列逻辑(英文:genericarraylogic,缩写:gal)或其任意组合。具体的,如图6b所示,处理芯片606可以包括overlay芯片6062、流表匹配芯片6064以及安全组检查芯片6066。其中,overlay芯片6062用于封装overlay头。安全组检查芯片6066用于确定数据包是否通过安全组检查,并将通过安全组检查的数据包通过发送至流表匹配芯片6064。流表匹配芯片6064用于将数据包与存储于nic可访问流表集合中的流表进行匹配。overlay芯片6062与安全组检查芯片6066为可选组件。处理芯片606还可以通过处理器、存储设备以及逻辑芯片实现,该逻辑芯片可以由pld或asic实现。该处理芯片606运行时,该处理器和该逻辑芯片各执行一部分功能,两者功能的分配可以有多种。示例性的,如图6c所示,处理芯片606内的处理器工作时,读取存储器内的代码,用于读取进行安全组检查所需的信息,并将安全组检查所需的信息发送至逻辑芯片,以供逻辑芯片对该数据包进行安全组检查,处理器还用于读取nic可访问流表集合中的流表,并将nic可访问流表集合中的流表发送至逻辑芯片,以供逻辑芯片将数据包与该流表进行匹配。处理器还用于获取封装overlay头所需的信息,并发送给至逻辑芯片,以供逻辑芯片封装overlay头。在图6c所示的nic600的处理芯片606中,逻辑芯片也可以由overlay子芯片、流表匹配子芯片、安全组检查子芯片构成。overlay子芯片、安全组检查子芯片为可选组件。图6c所示的nic600的处理芯片606中处理器用于获取流表匹配所需的信息或安全组检查所需的信息或封装overlay头所需的信息,并发送至该逻辑芯片。安全组检查子芯片根据安全组检查所需的信息完成数据包的安全组检查,,而流表匹配子芯片根据流表匹配所需的信息完成数据包的流表匹配,overlay子芯片用于根据处理器发来的信息封装overlay头。本申请还提供了一种数据包处理方法,前述任一附图中的nic运行时执行该方法。该方法具体参考图4对应的数据包处理方法中nic侧执行的部分。本申请还提供了一种配置方法,前述任一附图中的主机运行时执行该方法。该方法具体参考图4对应的数据包处理方法中的步骤402和步骤404。本申请还提供了一种数据包处理方法,前述任一附图中主机运行时执行该方法。该方法具体参考图4对应的数据包处理方法中的步骤408后主机侧执行的方法。具体包括,步骤416、步骤4181中将该数据流对应的流表存储到nic可访问流表集合后向该nic发送通知消息的部分,或步骤4182和步骤4183,或步骤4185。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。结合本申请公开内容所描述的方法可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于ram、快闪存储器、rom、可擦除可编程只读存储器(英文:erasableprogrammablereadonlymemory,缩写:eprom)、电可擦可编程只读存储器(英文:electricallyerasableprogrammablereadonlymemory,缩写:eeprom)、硬盘、光盘或者本领域熟知的任何其它形式的存储介质中。本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请所描述的功能可以用硬件或软件来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。存储介质可以是通用或专用计算机能够存取的任何可用介质。以上该的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上该仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的技术方案的基础之上,所做的任何修改、改进等,均应包括在本申请的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1