本发明实施例涉及计算机领域,并且更具体地,涉及一种多队列或设备的选择方法和计算节点。
背景技术:多队列网卡是一种技术,最初是用来解决网络输入输出(IO)的业务质量(QoS)问题的,后来随着网络IO的带宽的不断提升,单核CPU不能完全满足网卡的需求,通过多队列网卡驱动的支持,当收包时将各个队列通过中断绑定到不同的核上,以满足网卡的收包性能需求;当发包时,通过选择不同的队列,满足负载均衡需求,提高发包速度。随着虚拟化技术的发展,在虚拟机上的虚拟网卡也开始使用多队列技术,比如基于内核的虚拟机(Kernel-basedVirtualMachine,KVM)的VirtIO架构就应用多队列技术来提高虚拟机的网络IO吞吐量,并降低单个CPU的负载。在使用网卡时,通常也会把多个物理网卡进行聚合,这个聚合起来的设备看起来是一个单独的网卡设备(虚拟网卡)。这个虚拟网卡设备通过不同的物理网卡进行收发包。在虚拟化环境下,虚拟机和物理网卡在发送和接收每一个网络数据包的时候,都会使用队列选择算法来选择发送队列和接收队列,选择算法计算重复,系统运算的效率较低。
技术实现要素:本发明实施例提供一种多队列或设备的选择方法和计算节点,能够提高计算节点的系统性能。第一方面,提供了一种多队列或设备的选择方法,该方法包括:计算节点的选择策略管理单元向该计算节点的第一选择单元发送复用指示信息,该复用指示信息用于指示该第一选择单元复用该计算节点的第二选择单元已计算的选择参数,该第一选择单元用于确定第一队列或设备中选择使用的队列或设备,该第二选择单元用于确定第二队列或设备中选择使用的队列或设备,该选择参数用于该第二选择单元确定该第二队列或设备中选择使用的队列或设备;该第一选择单元根据该复用指示信息获取该选择参数;该第一选择单元根据该选择参数确定该第一队列或设备中选择使用的队列或设备。结合第一方面,在第一种可能的实现方式中,具体实现为,该第一选择单元设置在该计算节点的虚拟机VM上,该选择策略管理单元和该第二选择单元设置在该计算节点的宿主机Host上,其中该计算节点的选择策略管理单元向该计算节点的第一选择单元发送复用指示信息具体实现为:该计算节点的选择策略管理单元通过设置在该VM上的选择策略代理单元向该计算节点的第一选择单元发送复用指示信息。结合第一方面,在第二种可能的实现方式中,具体实现为:该选择策略管理单元、该第一选择单元和该第二选择单元设置在该计算节点的Host上。结合第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第三种可能的实现方式中,具体实现为:当该计算节点用于接收数据包时,该第二选择单元为该数据包输入时经过的选择单元中在该第一选择单元之前的选择单元。结合第一方面,在第四种可能的实现方式中,具体实现为:该选择策略管理单元和该第一选择单元设置在该计算节点的Host上,该第二选择单元设置在该计算节点的VM上。结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,具体实现为:当该计算节点用于从该VM往该计算节点之外发送数据包时,该第二选择单元为该数据包输出时经过的选择单元中在该第一选择单元之前的选择单元。结合第一方面的第三种可能的实现方式或第一方面的第五种可能的实现方式,在第六种可能的实现方式中,具体实现为:该选择参数由以下至少一个参数确定:该数据包的目标MAC地址、本地MAC地址、目标IP地址、本地IP地址、目标Port地址、本地Port地址。结合第一方面或第一方面的第一种可能的实现方式至第一方面的第六种可能的实现方式中任一种可能的实现方式,在第七种可能的实现方式中,该方法还包括:该选择策略管理单元向该第二选择单元发送选择策略;该第二选择单元根据该选择策略确定该选择参数。第二方面,提供了一种计算节点,包括:选择策略管理单元、第一选择单元和第二选择单元,其中,该第二选择单元用于确定选择参数确定该第二队列或设备中选择使用的队列或设备,该队列或设备选择参数用于该第二选择单元确定该第二队列或设备中选择使用的队列或设备;该选择策略管理单元用于向该第一选择单元发送复用指示信息,该复用指示信息用于指示该第一选择单元复用该第二选择单元已计算的队列或设备选择参数;该第一选择单元用于根据该复用指示信息获取该队列或设备选择参数,并根据该选择参数确定第一队列或设备中选择使用的队列或设备。结合第二方面,在第一种可能的实现方式中,具体实现为:该第一选择单元设置在该计算节点的虚拟机VM上,该选择策略管理单元和该第二选择单元设置在该计算节点的宿主机Host上;该选择策略管理单元具体用于通过设置在该VM上的选择策略代理单元向该第一选择单元发送复用指示信息。结合第二方面,在第二种可能的实现方式中,具体实现为:该选择策略管理单元、该第一选择单元和该第二选择单元设置在该计算节点的Host上。结合第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式,在第三种可能的实现方式中,具体实现为:当该计算节点用于接收数据包时,该第二选择单元为该数据包输入时经过的选择单元中在该第一选择单元之前的选择单元。结合第二方面,在第四种可能的实现方式中,具体实现为:该选择策略管理单元和该第一选择单元设置在该计算节点的Host上,该第二选择单元设置在该计算节点的VM上。结合第二方面的第四种可能的实现方式,在第五种可能的实现方式中,具体实现为:当该计算节点用于从该VM往该计算节点之外发送数据包时,该第二选择单元为该数据包输出时经过的选择单元中在该第一选择单元之前的选择单元。结合第二方面的第三种可能的实现方式或第二方面的第五种可能的实现方式,在第六种可能的实现方式中,具体实现为:该选择参数由以下至少一个参数确定:该数据包的目标MAC地址、本地MAC地址、目标IP地址、本地IP地址、目标Port地址、本地Port地址。结合第二方面或第二方面的第一种可能的实现方式至第二方面的第六种可能的实现方式中任一种可能的实现方式,在第七种可能的实现方式中,具体实现为:该选择策略管理单元还用于向该第二选择单元发送选择策略;该第二选择单元还用于根据该选择策略确定该队列或设备选择参数。基于以上技术方案,本发明实施例中,计算节点通过复用已计算的选择参数,能够减少不必要的运算,提高计算节点的系统性能。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例的应用场景的流程示意图。图2是本发明实施例多队列或设备的选择方法流程图。图3是本发明一个实施例计算节点发送数据包的流程示意图。图4是本发明另一实施例计算节点接收数据包的流程示意图。图5是本发明一个实施例计算节点的结构示意图。图6是本发明另一实施例计算节点的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。为了方便理解本发明实施例,首先在此介绍本发明实施例描述中会引入的几个要素。虚拟机(VirtualMachine,VM):通过虚拟机软件可以在一台物理计算机上模拟出一台或者多台虚拟的计算机,而这些虚拟机就像真正的计算机那样进行工作,虚拟机上可以安装操作系统和应用程序,虚拟机还可访问网络资源。对于在虚拟机中运行的应用程序而言,虚拟机就像是在真正的计算机中进行工作。硬件层:虚拟化环境运行的硬件平台。其中,硬件层可包括多种硬件,例如某计算节点的硬件层可包括CPU和内存,还可以包括网卡、存储器等等高速/低速输入/输出(I/O,Input/Output)设备。宿主机(Host):作为管理层,用以完成硬件资源的管理、分配;为虚拟机呈现虚拟硬件平台;实现虚拟机的调度和隔离。其中,Host可能是虚拟机监控器(VirtualMachineMonitor,VMM);或者,有时VMM和1个特权虚拟机配合,两者结合组成Host(例如,本实施例中的计算机节点)。其中,虚拟硬件平台对其上运行的各个虚拟机提供各种硬件资源,如提供虚拟CPU、内存、虚拟磁盘、虚拟网卡等等。其中,该虚拟磁盘可对应Host的一个文件或者一个逻辑块设备。虚拟机可以运行在Host为其准备的虚拟硬件平台上,Host上可以运行一个或多个虚拟机。VMM:虚拟机监控器(VirtualMachineMonitor),它是计算机软件和硬件组成的平台,可以创建和运行一个或多个虚拟机,VMM为这些虚拟机的操作系统提供虚拟硬件环境并对这些虚拟机的运行进行管理。多种操作系统的虚拟机可以共享虚拟化硬件资源,例如CPU、存储和网络。KVM:一个开源的系统虚拟化模块,一种VMM的开源实现。VirtIO:是开源KVM虚拟化平台下为虚拟机提供IO能力的一种前后端框架,分成前端驱动和后端驱动两部分。VirtIO框架的其中一个功能就是为虚拟机提供虚拟网卡,前端驱动运行在虚拟机内部,生成前端网卡,后端驱动运行在Host上,生成后端网卡。后端网卡负责在硬件网卡和前端网卡之间传输网络流量。TAP:在计算机网络中,TAP是操作系统内核中的虚拟网络设备,该虚拟网络设备全部用软件实现,并向运行于操作系统上的软件提供与硬件的网络设备完全相同的功能。TAP可视为等同于一个以太网设备,操作第二层数据包如以太网数据帧。操作系统通过TAP设备向绑定该设备的用户空间的程序发送数据,反之,用户空间的程序也可以像操作硬件网络设备那样,通过TAP设备发送数据。图1是本发明实施例的应用场景的流程示意图,用于发送虚拟机应用的数据包。在图1所示的应用场景系统架构图,可包括宿主机、虚拟机及连接虚拟机和宿主机的虚拟监控器VMM。其中,Host可包括队列选择单元C,队列选择单元C对应的物理网卡队列(例如,图1的物理网卡队列中的tx0、tx1等),设备选择单元B,开放虚拟交换机/网桥(openvswitch/bridge)等网络单元,套接字(socket)队列(例如,图1中基于tap机制生成的sock0、sock1等),网卡前端驱动队列(例如,图1的tx0、tx1等),网卡后端驱动队列(例如,图1的vhost-tx0、vhost-tx1等),应用(例如,图1的app1、app2等)。其中,网卡前端驱动队列(例如,图1的tx0、tx1等)分别绑定到不同的CPU;网卡后端驱动队列(例如,图1的vhost-tx0、vhost-tx1等)也分别绑定到不同的CPU。当发包时,网卡前端驱动队列会通过“队列选择单元A”选择发送数据包的前端发送队列。网卡后端驱动队列生成对应前端”tx”发包队列的多个“vhost-tx”后端发包队列,该多个“vhost-tx”后端发包队列接收从网卡前端驱动的发送过来的数据包。根据TAP机制生成的多个socket(例如,图1的sock0、sock1等等),接收到“vhost-tx”后端发包队列的数据包后,提交给openvswitch或者bridge等网络模块。同时,“聚合层”聚合后的虚拟网卡从openvswitch或者bridge得到数据包后,会通过“设备选择单元B”来选择相应的“slave设备”,每个“slave设备”代表一个真实的物理网卡设备。(如果是多层聚合,则每个“slave设备”代表一个虚拟网卡设备)。最后系统调用“队列选择单元C”来选择物理网卡队列。在图1所示的系统架构图中,“队列选择单元A”、“设备选择单元B”、“队列选择单元C”的运行相互独立,可能使用不同的算法和装置,因而可能导致不同的应用程序发送的数据包最后依然从某个特定的物理队列发送出去,并且每次采用不同的算法计算,影响了系统效率。当然,本发明实施例的方法并不仅限于图1所示的应用场景中,图1的应用场景仅仅是为了便于结合本发明实施例的方法理解本发明实施例的方案。图2是本发明实施例多队列或设备的选择方法流程图。图2的方法由计算节点执行。201,计算节点的选择策略管理单元向该计算节点的第一选择单元发送复用指示信息。其中,该复用指示信息用于指示该第一选择单元复用该计算节点的第二选择单元已计算的选择参数,该第一选择单元用于确定第一队列或设备中选择使用的队列或设备,该第二选择单元用于确定第二队列或设备中选择使用的队列或设备,该选择参数用于该第二选择单元确定该第二队列或设备中选择使用的队列或设备。202,该第一选择单元根据该复用指示信息获取该选择参数。203,该第一选择单元根据该选择参数确定该第一队列或设备中选择使用的队列或设备。其中,第一队列或设备指第一选择单元对应的多个队列资源或多个设备资源,第二队列或设备指第二选择单元对应的多个队列资源或多个设备资源。例如,在图1中,队列选择单元A对应网卡前端驱动队列的资源(tx0、tx1等),设备选择单元B对应Slave设备的资源(slave0,slave1等),设备选择单元C对应物理网卡队列的资源(tx0、tx1等)。第一选择单元可从第一队列或设备中确定选择使用的队列资源或设备资源,第二选择单元可从第二队列或设备中确定选择使用的队列资源或设备资源。本发明实施例中,计算节点通过复用已计算的选择参数,能够减少不必要的运算,提高了系统的性能。另外,本发明实施例的方法,通过复用已计算的选择参数,还可避免不同选择单元因采用不同算法而导致的某一队列或设备拥塞问题。另外,当计算节点的不同选择单元下的多个队列或设备绑定到不同的CPU时,本发明实施例的方法,通过复用已计算的选择参数,还可避免不同选择单元因采用不同算法而导致数据在不同CPU间的切换,即避免不同选择单元因采用不同算法而导致cache的乒乓效应。本发明实施例中,计算节点可包括:硬件层、运行在该硬件层之上的宿主机Host、以及运行在该Host之上的虚拟机VM,其中,选择策略管理单元、第一选择单元、第一队列或设备、第二选择单元以及第二队列或设备,可以部署在计算节点的Host或VM上。本发明的一个实施例,该第一选择单元设置在该计算节点的VM上,该选择策略管理单元和该第二选择单元设置在该计算节点的宿主机(Host)上。进一步地,该计算节点的选择策略管理单元向该计算节点的第一选择单元发送复用指示信息可包括:该计算节点的选择策略管理单元通过设置在该VM上的选择策略代理单元向该计算节点的第一选择单元发送复用指示信息。进一步地,当该计算节点用于接收数据包时,该第二选择单元为该数据包输入时经过的选择单元中在该第一选择单元之前的选择单元。优选地,当该计算节点用于接收数据包时,该第二选择单元为该数据包输入时经过的设置在该Host的第一个选择单元。本发明的另一实施例,该选择策略管理单元、该第一选择单元和该第二选择单元设置在该计算节点的Host上。进一步地,当该计算节点用于接收数据包时,该第二选择单元为该数据包输入时经过的选择单元中在该第一选择单元之前的选择单元。优选地,当该计算节点用于接收数据包时,该第二选择单元为该数据包输入时经过的设置在该Host的第一个选择单元。本发明的再一实施例,该选择策略管理单元和该第一选择单元设置在该计算节点的Host上,该第二选择单元设置在该计算节点的VM上。进一步地,当该计算节点用于从该VM往该计算节点之外发送数据包时,该第二选择单元为该数据包输出时经过的选择单元中在该第一选择单元之前的选择单元。优选地,当该计算节点用于从该VM往该计算节点之外发送数据包时,该第二选择单元为该数据包输出时经过的设置在该VM上的第一个选择单元。可选地,当该计算节点用于接收数据包时,或者当该计算节点用于从该VM往该计算节点之外发送数据包时,该选择参数由以下至少一个参数确定:该数据包的目标媒体接入控制(MediaAccessControl,MAC)地址、本地MAC地址、目标互联网协议(InternetProtocol,IP)地址、本地IP地址、目标端口(Port)地址、本地Port地址。可选地,该方法还可包括:该选择策略管理单元向该第二选择单元发送选择策略,并根据该选择策略确定该选择参数。进一步地,当该选择策略管理单元设置在该计算节点的Host上,该第二选择单元设置在该计算节点的VM上时,该选择策略管理单元向该第二选择单元发送选择策略可包括:该选择策略管理单元通过设置在该计算节点的VM上的选择策略代理单元向该第二选择单元发送选择策略。下面将结合具体的实施例,对本发明实施例的方法作进一步的描述。图3是本发明实施例计算节点发送数据包的流程示意图。图3中,计算节点可包括硬件层、运行在硬件层之上的宿主机Host、以及运行在Host之上的虚拟机VM。其中,Host可包括队列选择单元C,队列选择单元C对应的物理网卡队列(例如,图3的tx0、tx1等),设备选择单元B,设备选择单元B对应的slave设备(例如,图3的聚合层聚合后的虚拟网卡slave0、slave1等),以及选择策略管理单元。VM可包括选择策略代理单元和队列选择单元A,队列选择单元A对应的网卡前端驱动队列(例如,图3中的tx0、tx1等)。当然,Host还可包括openvswitch/bridge等网络单元,socket队列(例如,图3中基于tap机制生成的sock0、sock1等),网卡后端驱动队列(例如,图3的vhost-tx0、vhost-tx1等),VM还可包括应用(例如,图3的app1、app2等),本发明实施例在此不作限制。宿主机和虚拟机中的虚拟网卡设备的建立方法,可以参考现有技术的内容,本发明实施例在此不作赘述。其中,图3中的设备选择单元B和队列选择单元C相当于步骤201中的第一选择单元,slave设备(slave0、slave1等)和物理网卡队列(tx0、tx1等)相当于步骤201中的第一队列或设备,队列选择单元A相当于步骤201中的第二选择单元,网卡前端驱动队列(tx0、tx1等)相当于步骤201中的第二队列或设备。本发明的一个实施例如图3所示,虚拟机的两个应用app1和app2向外界发送数据包。其中,网卡前端驱动队列tx0、tx1等分别绑定到不同的CPU;网卡后端驱动队列vhost-tx0、vhost-tx1等也分别绑定到不同的CPU,其实现可参考现有技术,本发明实施例在此不再赘述。当数据包发包流程进入虚拟机的内核态时,队列选择单元A可选择合适的算法,确定虚拟机中的网卡前端驱动队列中用于传输app1和app2的虚拟网卡设备。一种可能的方式,队列选择单元A可采用哈希(Hash)算法,根据数据包中的目标MAC地址、本地MAC地址、目标IP地址、本地IP地址、目标Port地址、本地Port地址等的一个或多个参数,获得一个选择参数(相当于本发明步骤1中提到的选择参数)。如图3所示,队列选择单元A可根据app1的数据包的相关参数信息(包括数据包中的目标MAC地址、本地MAC地址、目标IP地址、本地IP地址、目标Port地址、本地Port地址等的一种)确定第一选择参数,进而确定用于传输app1的数据包的虚拟网卡设备tx0;根据app2的数据包的相关参数信息确定第二选择参数,进而确定用于传输app2的数据包的虚拟网卡设备tx3。宿主机的选择策略管理单元可向设备选择单元B和队列选择单元C发送复用指示信息,指示复用队列选择单元A已计算的选择参数。设备选择单元B和队列选择单元C可根据复用指示信息获取队列选择单元A已计算的选择参数。另外,在队列选择单元A计算选择参数,选择网卡前端驱动队列之前,选择策略管理单元还可通过选择策略代理单元向队列选择单元A发送选择策略,该选择策略可用于指示队列选择单元A选择网卡前端驱动队列时采用的策略,例如,指示队列选择单元A选择某种算法计算选择参数以选择网卡前端驱动队列,等等。队列选择单元A可根据该选择策略确定选择参数。设备选择单元B和队列选择单元C可根据复用指示信息获取队列选择单元A已计算的选择参数可以参考现有技术的内容,例如,在linux操作系统中,队列选择单元A可将选择参数存储到套接字缓冲区(SKB)包中,而在Windows操作系统中,队列选择单元A可将选择参数存储到网络驱动接口规范补丁(NetworkDriverInterfaceSpecificationPATCH,NDIS_PATCH)包中;设备选择单元B和队列选择单元C从SKB包或NDIS_PATCH包获取相应的选择参数。设备选择单元B和队列选择单元C获取相应的选择参数,可根据选择参数选择用于传输数据包的设备。例如,在图3中,设备选择单元B可根据第一选择参数确定用于传输app1数据包的slave0,根据第二选择参数确定用于传输app2数据包的slave1;队列选择单元C可根据第一选择参数确定物理网卡队列中用于传输app1数据包的tx0,根据第二选择参数确定物理网卡队列中用于传输app2数据包的tx3。设备选择单元B和队列选择单元C通过复用选择参数,可减少设备选择单元B和队列选择单元C的计算量,提高效率。同时,设备选择单元B和队列选择单元C复用选择参数也相当于采用相同的队列设备选择算法,避免了某个队列设备资源拥塞的问题。再者,对于绑定到CPU的队列或设备而言,复用选择参数可以一定程度上保证选择使用的队列或设备是绑定到同一个CPU上的,从而避免了数据包在不同CPU之间来回切换的问题。图4是本发明实施例计算节点接收数据包的流程示意图。图4中,计算节点可包括硬件层、运行在硬件层之上的宿主机Host、以及运行在Host之上的虚拟机VM。其中,Host可包括队列选择单元C,队列选择单元C对应的物理网卡队列(例如,图4的rx0、rx1等),队列选择单元D,队列选择单元D对应的socket队列或设备(例如,图4中基于tap机制生成的sock0、sock1等),以及选择策略管理单元。VM可包括选择策略代理单元和队列选择单元A,队列选择单元A对应的网卡前端驱动队列(例如,图4中的rx0、rx1等)。当然,Host还可包括openvswitch/bridge等网络单元,Slave设备(例如,图4中聚合层聚合后的虚拟网卡的slave0、slave1等),网卡后端驱动队列(例如,图4的vhost-rx0、vhost-rx1等),VM还可包括应用(例如,图4的app1、app2等),本发明实施例在此不作限制。宿主机和虚拟机中的虚拟网卡设备的建立方法,可以参考现有技术的内容,本发明实施例在此不作赘述。其中,图4中的队列选择单元D和队列选择单元A相当于步骤201中的第一选择单元,socket队列(sock0、sock1等)和网卡前端驱动队列(rx0、rx1等)相当于步骤201中的第一队列或设备,队列选择单元C相当于步骤201中的第二选择单元,物理网卡队列(rx0、rx1等)相当于步骤201中的第二队列或设备。本发明的一个实施例如图4所示,外界向虚拟机的两个应用app1和app2发送数据包。当数据包发包流程进入宿主机,队列选择单元C可选择合适的算法,确定物理网卡队列中用于传输app1和app2的网卡设备。一种可能的方式,队列选择单元C可采用哈希(Hash)算法,根据数据包中的目标MAC地址、本地MAC地址、目标IP地址、本地IP地址、目标Port地址、本地Port地址等的一个或多个参数,获得一个选择参数(相当于本发明步骤1中提到的选择参数)。如图4所示,队列选择单元C可根据发给app1的数据包的相关参数信息(包括数据包中的目标MAC地址、本地MAC地址、目标IP地址、本地IP地址、目标Port地址、本地Port地址等的至少一种)确定第一选择参数,进而确定用于传输发给app1的数据包的网卡设备rx0;根据发给app2的数据包的相关参数信息确定第二选择参数,进而确定用于传输发给app2的数据包的网卡设备rx3。宿主机的选择策略管理单元可向队列选择单元D和虚拟机的队列选择单元A发送复用指示信息,指示复用队列选择单元C已计算的选择参数。宿主机的选择策略管理单元在向虚拟机的队列选择单元A发送复用指示信息时,可通过虚拟机的选择策略代理单元向虚拟机的队列选择单元A发送;宿主机的选择策略管理单元在向宿主机的队列选择单元D发送复用指示信息时,可直接向宿主机的队列选择单元D发送。另外,在队列选择单元C计算选择参数,选择物理网卡队列之前,选择策略管理单元还可直接向队列选择单元C发送选择策略,该选择策略可用于指示队列选择单元C选择物理网卡队列时采用的策略,例如,指示队列选择单元C选择某种算法计算选择参数以选择物理网卡队列,等等。队列选择单元C可根据该选择策略确定选择参数。设备选择单元B和队列选择单元A可根据复用指示信息获取队列选择单元C已计算的选择参数,获取的方式与图3的实施例中设备选择单元B和队列选择单元C选择参数的方式类似,本发明实施例在此不再赘述。队列选择单元D和队列选择单元A获取相应的选择参数,可根据选择参数选择用于传输数据包的设备。例如,在图4中,队列选择单元D可根据第一选择参数确定宿主机socket队列用于传输app1数据包的sock0,根据第二选择参数确定宿主机socket队列中用于传输app2数据包的sock3;队列选择单元A可根据第一选择参数确定虚拟机网卡前端驱动队列用于传输app1数据包的rx0,根据第二选择参数确定虚拟机网卡前端驱动队列中用于传输app2数据包的rx3。队列选择单元D和队列选择单元A通过复用选择参数,可减少队列选择单元D和队列选择单元A的计算量,提高效率。同时,队列选择单元D和队列选择单元A复用选择参数也相当于采用相同的队列设备选择算法,避免了某个队列设备资源拥塞的问题。再者,对于绑定到CPU的队列或设备而言,复用选择参数可以一定程度上保证选择使用的队列或设备是绑定到同一个CPU上的,从而避免了数据包在不同CPU之间来回切换的问题。图5是本发明实施例计算节点500的结构示意图。计算节点500可包括:选择策略管理单元501、第一选择单元502、第一队列或设备、第二选择单元503和第二队列或设备。第二选择单元503用于选择参数并确定第二队列或设备中选择使用的队列或设备。其中,该选择参数用于第二选择单元503确定第二队列或设备中选择使用的队列或设备。选择策略管理单元501用于向第一选择单元502发送复用指示信息。其中,该复用指示信息指示第一选择单元502复用第二选择单元503已计算的选择参数。第一选择单元502用于根据该复用指示信息获取该选择参数,并根据该选择参数确定第一队列或设备中选择使用的队列或设备。本发明实施例中,计算节点500通过复用已计算的选择参数,能够减少不必要的运算,提高了系统的性能。另外,本发明实施例中,计算节点500通过复用已计算的选择参数,还可避免不同选择单元因采用不同算法而导致的某一队列或设备拥塞问题。另外,本发明实施例中,当计算节点500的不同选择单元下的多个队列或设备绑定到不同的CPU时,计算节点500通过复用已计算的选择参数,还可避免不同选择单元因采用不同算法而导致数据在不同CPU间的切换,即避免不同选择单元因采用不同算法而导致cache的乒乓效应。本发明实施例中,计算节点500可包括:硬件层、运行在该硬件层之上的宿主机Host、以及运行在该Host之上的虚拟机VM。其中,选择策略管理单元501、第一选择单元502和第二选择单元503第二队列或设备,可以部署在计算节点500的Host或VM上。Host上的单元向VM上的单元发送信息,或者VM上的单元向Host上的单元发送信息,可参考现有技术实现,本发明实施例在此不再赘述。另外,本发明实施例中提到的选择单元,都是指用于对多个队列或设备进行选择的单元。本发明的一个实施例,第一选择单元502设置在计算节点500的虚拟机VM上,选择策略管理单元501和第二选择单元503设置在该计算节点的宿主机Host上。进一步地,选择策略管理单元501具体用于通过设置在该VM上的选择策略代理单元向第一选择单元502发送复用指示信息。进一步地,当计算节点500用于接收数据包时,第二选择单元503为该数据包输入时经过的选择单元中在第一选择单元502之前的选择单元。优选地,当计算节点500用于接收数据包时,第二选择单元503为该数据包输入时经过的设置在该Host的第一个选择单元。本发明的另一实施例,选择策略管理单元501、第一选择单元502和第二选择单元503设置在计算节点500的Host上。进一步地,当计算节点500用于接收数据包时,第二选择单元503为该数据包输入时经过的选择单元中在第一选择单元502之前的选择单元。优选地,当计算节点500用于接收数据包时,第二选择单元503为该数据包输入时经过的设置在该Host的第一个选择单元。本发明的再一实施例,选择策略管理单元501和第一选择单元502设置在计算节点500的Host上,第二选择单元503设置在该计算节点的VM上。进一步地,当计算节点500用于从该VM往计算节点500之外发送数据包时,第二选择单元503为该数据包输入时经过的选择单元中在第一选择单元502之前的选择单元。优选地,当计算节点500用于从该VM往计算节点500之外发送数据包时,第二选择单元503为该数据包输出时经过的设置在该VM上的第一个选择单元。可选地,当计算节点500用于接收数据包时,或者当计算节点500用于从该VM往计算节点500之外发送数据包时,该选择参数由以下至少一个参数确定:该数据包的目标MAC地址、本地MAC地址、目标IP地址、本地IP地址、目标Port地址、本地Port地址。可选地,选择策略管理单元501还用于向第二选择单元503发送选择策略。第二选择单元503还用于根据该选择策略确定该选择参数。进一步地,选择策略管理单元501设置在计算节点500的Host上,第二选择单元503设置在该计算节点的VM上时,选择策略管理单元501向第二选择单元503发送选择策略可包括:选择策略管理单元501通过设置在计算节点500的VM上的选择策略代理单元向第二选择单元503发送选择策略。另外,计算节点500还可执行图2至图4的实施例中所示的方法,本发明实施例在此不再赘述。图6是本发明实施例计算节点600的结构示意图。计算节点600可包括:选择策略管理处理器603、第一选择处理器601、第二选择处理器602和存储器604。存储器604可以包括只读存储器和随机存取存储器,并向第一选择处理器601、第二选择处理器602和选择策略管理处理器603提供指令和数据。存储器604的一部分还可以包括非易失性随机存取存储器(NVRAM)。存储器604存储了如下的元素,可执行模块或者数据结构,或者它们的子集,或者它们的扩展集:操作指令:包括各种操作指令,用于实现各种操作。操作系统:包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。在本发明实施例中,第一选择处理器601、第二选择处理器602和选择策略管理处理器603通过调用存储器604存储的操作指令(该操作指令可存储在操作系统中),执行如下操作:第二选择处理器602确定选择参数并确定第二队列或设备中选择使用的队列或设备,其中,该选择参数用于第二选择处理器602确定第二队列或设备中选择使用的队列或设备;选择策略管理处理器603向第一选择处理器601发送复用指示信息,其中,该复用指示信息指示第一选择处理器601复用第二选择处理器602已计算的选择参数;第一选择处理器601用于根据该复用指示信息获取该选择参数,并根据该选择参数确定第一队列或设备中选择使用的队列或设备。本发明实施例中,计算节点600通过复用已计算的选择参数,能够减少不必要的运算,提高了系统的性能。另外,本发明实施例中,计算节点600通过复用已计算的选择参数,还可避免不同选择单元因采用不同算法而导致的某一队列或设备拥塞问题。第一选择处理器601、第二选择处理器602和选择策略管理处理器603控制计算节点600的操作,第一选择处理器601、第二选择处理器602和选择策略管理处理器603还可以称为CPU(CentralProcessingUnit,中央处理单元)。存储器604可以包括只读存储器和随机存取存储器,并向CPU提供指令和数据。存储器604的一部分还可以包括非易失性随机存取存储器(NVRAM)。具体的应用中,用户设备900的各个组件通过总线系统605耦合在一起,其中总线系统605除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统605。上述本发明实施例揭示的方法可以应用于第一选择处理器601、第二选择处理器602和选择策略管理处理器603中,或者由第一选择处理器601、第二选择处理器602和选择策略管理处理器603实现。第一选择处理器601、第二选择处理器602和选择策略管理处理器603可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过第一选择处理器601、第二选择处理器602和选择策略管理处理器603中的硬件的集成逻辑电路或者软件形式的指令完成。上述的第一选择处理器601、第二选择处理器602和选择策略管理处理器603可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器604,第一选择处理器601、第二选择处理器602和选择策略管理处理器603读取存储器604中的信息,结合其硬件完成上述方法的步骤。另外,第一选择处理器601、第二选择处理器602和选择策略管理处理器603在物理实现上各自可以是一个实现其功能的CPU,也可以是计算节点600的CPU中用于实现第一选择处理器601、第二选择处理器602和选择策略管理处理器603各自功能的部分CPU资源。本发明实施例中,计算节点可包括:硬件层、运行在该硬件层之上的宿主机Host、以及运行在该Host之上的虚拟机VM。其中,第一选择处理器601、第二选择处理器602和选择策略管理处理器603可以是应用于计算节点的Host或VM上的CPU资源。应用于Host上的处理器向应用于VM上的处理器发送信息,或者应用于VM上的处理器向应用于Host上的处理器发送信息,可参考现有技术实现,本发明实施例在此不再赘述。另外,本发明实施例中提到的选择处理器,都是指用于对多个队列或设备进行选择的处理器。本发明的一个实施例,第一选择处理器601是应用于计算节点600的虚拟机VM上的CPU资源,选择策略管理处理器603和第二选择处理器602是应用于计算节点600的宿主机Host的CPU资源。进一步地,在用于向第一选择处理器601发送复用指示信息,选择策略管理处理器603具体用于通过选择策略代理处理器向第一选择处理器601发送复用指示信息,其中选择策略代理处理器是应用于该VM上的CPU资源,用于接收第一选择处理器601发送复用指示信息并向第一选择处理器601转发该复用指示信息。进一步地,当计算节点600用于接收数据包时,第二选择处理器602为该数据包输入时经过的选择处理器中在第一选择处理器601之前的选择处理器。优选地,当计算节点600用于接收数据包时,第二选择处理器602为该数据包输入时经过的设置在该Host的第一个选择处理器。本发明的另一实施例,选择策略管理处理器603、第一选择处理器601和第二选择处理器602是应用于计算节点600的Host上的CPU资源。进一步地,当计算节点600用于接收数据包时,第二选择处理器602为该数据包输入时经过的选择处理器中在第一选择处理器601之前的选择处理器。优选地,当计算节点600用于接收数据包时,第二选择处理器602为该数据包输入时经过的设置在该Host的第一个选择处理器。本发明的再一实施例,选择策略管理处理器603和第一选择处理器601是应用于计算节点600的Host上的CPU资源,第二选择处理器602是应用于计算节点600的VM上的CPU资源。进一步地,当计算节点600用于从该VM往计算节点600之外发送数据包时,第二选择处理器602为该数据包输入时经过的选择处理器中在第一选择处理器601之前的选择处理器。优选地,当计算节点600用于从该VM往计算节点600之外发送数据包时,第二选择处理器602为该数据包输出时经过的设置在该VM上的第一个选择处理器。可选地,当计算节点600用于接收数据包时,或者当计算节点600用于从该VM往计算节点600之外发送数据包时,该选择参数由以下至少一个参数确定:该数据包的目标MAC地址、本地MAC地址、目标IP地址、本地IP地址、目标Port地址、本地Port地址。可选地,选择策略管理处理器603还用于向第二选择处理器602发送选择策略。第二选择处理器602还用于根据该选择策略确定该选择参数。进一步地,选择策略管理处理器603是应用于计算节点600的Host上的CPU资源,第二选择处理器602是应用于该计算节点的VM上的CPU资源时,选择策略管理处理器603向第二选择处理器602发送选择策略可包括:选择策略管理处理器603通过选择策略代理处理器向第二选择处理器602发送选择策略。其中选择策略代理处理器是应用于该VM上的CPU资源,还可用于接收第一选择处理器601发送选择策略并向第一选择处理器601转发该选择策略。另外,计算节点600还可执行图2至图4的实施例中所示的方法,本发明实施例在此不再赘述。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。