协议栈选择方法、装置及设备制造方法及图纸

技术编号:11362148 阅读:97 留言:0更新日期:2015-04-29 12:45
本发明专利技术公开了一种协议栈选择方法、装置及设备,该方法包括:接收虚拟机发送的套接字socket创建指令;选择一个协议栈实例;在选定的所述协议栈实例中按照所述socket创建指令创建socket;将创建的所述socket和所述协议栈实例的标识的对应关系发送给所述虚拟机,以使所述虚拟机按照所述对应关系,在所述协议栈实例中基于创建的所述socket对数据进行处理。能够使得同一物理主机上设置的多个虚拟机之间可以共享网络协议处理能力,使得各虚拟机的协议栈负载均衡,提高系统的可靠性。

【技术实现步骤摘要】
协议栈选择方法、装置及设备
本专利技术涉及计算机
,尤其是涉及一种协议栈选择方法、装置及设备。
技术介绍
在计算机
中,虚拟化技术是一种通过组合或分割现有的计算机资源,使得该些资源表现为一个或多个操作环境,从而提供优于原有资源配置的访问方式的技术。如图1所示,在虚拟化环境下,主要包括虚拟机(英文:VirtualMachine,缩写:VM)、虚拟机管理器(英文:Hypervisor)。虚拟化环境是以物理环境为基础的。也就是说,要实现虚拟化技术,需要物理主机提供运行虚拟化环境的基础。虚拟机是指通过软件模拟的具有完整硬件系统功能的、运行在一个虚拟化环境中的完整计算机系统。在虚拟化环境中,虚拟机管理器用于对虚拟机进行管理,转发虚拟机传输的数据,其中转发虚拟机传输的数据可以是通过虚拟机管理器中的虚拟交换机(VirtualSwitch)来完成的,具体如图1中所示的实线传输路径。虚拟机在数据处理过程中,包括创建套接字(英文:socket)、协议处理、协议处理后的数据通过虚拟网络接口卡(英文:VirtualNetworkInterfaceCard,缩写:VirtualNIC)传输给虚拟交换机,通过虚拟交换机传输给物理网络接口卡。转发虚拟机传输的数据还可以是由虚拟网络接口卡将处理后的数据直接传输给物理网络接口卡,具体如图1中虚线所示的传输路径。在虚拟化环境下,协议处理功能一般设置在虚拟机内部,称之为虚拟机中的协议栈。由于虚拟机之间具有隔离性,因此,一个物理主机中虽然存在多个协议栈,但由于虚拟机之间的隔离性,虚拟机中的协议栈彼此之间也是隔离的,无法共享,即虚拟机A中的协议栈不能同时为虚拟机B服务。并且由于虚拟机之间的隔离性,虚拟机之间无法共享同一物理主机的网络处理能力。因此在该种情况下,由于虚拟机中的协议栈之间相互隔离,其负载不均衡导致协议处理能力较差,从而使得协议处理能力较差的协议栈可能成为对应的虚拟机的瓶颈。例如图1所示,数据处理过程中,虚拟机1#中的协议栈A的负载很高,已经达到100%满负荷情况,而虚拟机2#中的协议栈B的负载为50%,虚拟机3#中的协议栈C的负载为10%,但是协议处理过程中,协议栈A无法使用协议栈C或协议栈B提供的协议处理能力,当数据分配给协议栈A后,协议栈A只能超负荷运行进行协议处理或者不能进行协议处理。综上所述,在虚拟化环境下,在处理数据时,多个虚拟机之间不可以共享物理主机的网络协议处理能力,当部分虚拟机的协议栈负荷较高的情况下,系统可靠性较差。
技术实现思路
本专利技术提供了一种协议栈选择方法、装置及设备,能够使得同一物理主机上设置的多个虚拟机之间可以共享网络协议处理能力,使得各虚拟机的协议栈负载均衡,提高系统的可靠性。第一方面,提供了一种协议栈选择方法,包括:接收虚拟机发送的套接字socket创建指令;选择一个协议栈实例;在选定的所述协议栈实例中按照所述socket创建指令创建socket;将创建的所述socket和所述协议栈实例的标识的对应关系发送给所述虚拟机,以使所述虚拟机按照所述对应关系,在所述协议栈实例中基于创建的所述socket对数据进行处理。在第一方面的第一种可能的实现方式中,所述选择一个协议栈实例,具体为:至少按照下述方式中的一种选择一个协议栈实例:按照负载均衡原则,在主机中的至少一个协议栈实例中,选择一个协议栈实例;确定待根据所述socket创建指令创建的socket对应的应用进程,按照所述应用进程创建socket的历史信息确定所述应用进程的业务特征,按照所述应用进程的业务特征在所述主机中的至少一个协议栈实例中,选择一个协议栈实例;按照预先存储的虚拟机标识和协议栈实例标识之间的对应关系,在所述主机中的至少一个协议栈实例中,选择一个协议栈实例;按照待根据所述socket创建指令创建的socket的属性信息,在所述主机中的至少一个协议栈实例中,选择一个协议栈实例。在第一方面的第二种可能的实现方式中,所述选择一个协议栈实例之前,还包括:按照下述方式中的一种确定用于传输数据的虚拟设备不是虚拟网络接口卡NIC:按照静态指定的方式,确定用于传输数据的虚拟设备不是虚拟NIC;确定待根据所述socket创建指令创建的socket对应的应用进程,按照所述应用进程创建socket的历史信息确定所述应用进程的业务特征,按照所述应用进程的业务特征,确定用于传输数据的虚拟设备不是虚拟NIC;按照待根据所述socket创建指令创建的socket的属性信息,确定用于传输数据的虚拟设备不是虚拟NIC。结合第一方面以及第一方面的第一种~第二种可能的实现方式,在第一方面的第三种可能的实现方式中,在所述将创建的所述socket和所述协议栈实例的标识的对应关系发送给所述虚拟机之后,还包括:接收所述虚拟机传递的对所述socket进行控制操作的控制指令,根据所述socket和所述协议栈实例的标识的对应关系,确定和所述控制指令中的所述socket对应的所述协议栈实例;在所述协议栈实例上按照所述控制指令对所述socket进行操作;将对所述socket进行操作的操作结果传输至所述虚拟机。结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,若所述控制指令是基于所述socket在虚拟机之间传输数据,则所述在所述协议栈实例上按照所述控制指令对所述socket进行操作,包括:将基于所述socket在虚拟机之间传输的数据,通过所述协议栈实例,传输至待传输的虚拟机中的协议栈卸载装置,所述协议栈卸载装置在虚拟机中用于在协议栈实例和虚拟机之间进行数据传输。结合第一方面的第三种可能的实现方式,在第一方面的第五种可能的实现方式中,在所述接收所述虚拟机传递的对所述socket进行控制操作的控制指令之后,还包括:确定用于传输数据的虚拟设备不是虚拟网络接口卡NIC。结合第一方面和第一方面的第一种~第二种可能的实现方式,在第一方面的第六种可能的实现方式中,在所述将创建的所述socket和所述协议栈实例的标识的对应关系发送给所述虚拟机之后,还包括:接收将所述协议栈实例接收到的数据传输给所述socket对应的应用进程的数据传输指令,根据存储的所述socket和所述协议栈实例标识的对应关系,确定所述数据传输指令中的所述socket对应的所述协议栈实例;将所述协议栈实例接收到的数据通过所述协议栈实例,传输至所述虚拟机中所述socket对应的应用进程。结合第一方面的第六种可能的实现方式,在第一方面的第七种可能的实现方式中,所述协议栈实例接收到的数据至少是下述数据中的一种:所述协议栈实例对接收到的数据处理后的处理结果;所述协议栈实例接收到的同一主机中不同虚拟机之间传输的数据。第二方面,提供了一种协议栈选择装置,包括:接收模块,用于接收虚拟机发送的套接字socket创建指令,并将所述socket创建指令传输给选择模块;所述选择模块,用于选择一个协议栈实例;创建模块,用于在选定的所述协议栈实例中按照所述socket创建指令创建socket;发送模块,用于将创建的所述socket和所述协议栈实例的标识的对应关系发送给所述虚拟机,以使所述虚拟机按照所述对应关系,在所述协议栈实例中基于创建的所述socket对数据进行处理。结合第二方面,在本文档来自技高网
...

【技术保护点】
一种协议栈选择方法,其特征在于,包括:接收虚拟机发送的套接字socket创建指令;选择一个协议栈实例;在选定的所述协议栈实例中按照所述socket创建指令创建socket;将创建的所述socket和所述协议栈实例的标识的对应关系发送给所述虚拟机,以使所述虚拟机按照所述对应关系,在所述协议栈实例中基于创建的所述socket对数据进行处理。

【技术特征摘要】
1.一种协议栈选择方法,其特征在于,包括:接收虚拟机发送的套接字socket创建指令;选择一个协议栈实例;在选定的所述协议栈实例中按照所述socket创建指令创建socket;将创建的所述socket和所述协议栈实例的标识的对应关系发送给所述虚拟机,以使所述虚拟机按照所述对应关系,在所述协议栈实例中基于创建的所述socket对数据进行处理;其中,所述选择一个协议栈实例,具体为:至少按照下述方式中的一种选择一个协议栈实例:按照负载均衡原则,在主机中的至少一个协议栈实例中,选择一个协议栈实例;确定待根据所述socket创建指令创建的socket对应的应用进程,按照所述应用进程创建socket的历史信息确定所述应用进程的业务特征,按照所述应用进程的业务特征在所述主机中的至少一个协议栈实例中,选择一个协议栈实例;按照预先存储的虚拟机标识和协议栈实例标识之间的对应关系,在所述主机中的至少一个协议栈实例中,选择一个协议栈实例;按照待根据所述socket创建指令创建的socket的属性信息,在所述主机中的至少一个协议栈实例中,选择一个协议栈实例;所述选择一个协议栈实例之前,还包括:确定待根据所述socket创建指令创建的socket对应的应用进程,按照所述应用进程创建socket的历史信息确定所述应用进程的业务特征,按照所述应用进程的业务特征,确定用于传输数据的虚拟设备不是虚拟NIC。2.如权利要求1所述的方法,其特征在于,在所述将创建的所述socket和所述协议栈实例的标识的对应关系发送给所述虚拟机之后,还包括:接收所述虚拟机传递的对所述socket进行控制操作的控制指令,根据所述socket和所述协议栈实例的标识的对应关系,确定和所述控制指令中的所述socket对应的所述协议栈实例;在所述协议栈实例上按照所述控制指令对所述socket进行操作;将对所述socket进行操作的操作结果传输至所述虚拟机。3.如权利要求2所述的方法,其特征在于,若所述控制指令是基于所述socket在虚拟机之间传输数据,则所述在所述协议栈实例上按照所述控制指令对所述socket进行操作,包括:将基于所述socket在虚拟机之间传输的数据,通过所述协议栈实例,传输至待传输的虚拟机中的协议栈卸载装置,所述协议栈卸载装置在虚拟机中用于在协议栈实例和虚拟机之间进行数据传输。4.如权利要求2所述的方法,其特征在于,在所述接收所述虚拟机传递的对所述socket进行控制操作的控制指令之后,还包括:确定用于传输数据的虚拟设备不是虚拟网络接口卡NIC。5.如权利要求1所述的方法,其特征在于,在所述将创建的所述socket和所述协议栈实例的标识的对应关系发送给所述虚拟机之后,还包括:接收将所述协议栈实例接收到的数据传输给所述socket对应的应用进程的数据传输指令,根据存储的所述socket和所述协议栈实例标识的对应关系,确定所述数据传输指令中的所述socket对应的所述协议栈实例;将所述协议栈实例接收到的数据通过所述协议栈实例,传输至所述虚拟机中所述socket对应的应用进程。6.如权利要求5所述的方法,其特征在于,所述协议栈实例接收到的数据至少是下述数据中的一种:所述协议栈实例对接收...

【专利技术属性】
技术研发人员:古强文刘飞
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1