网络虚拟化方法及设备与流程

文档序号:11930227阅读:333来源:国知局
本申请涉及计算机领域,尤其涉及一种网络虚拟化方法及设备。
背景技术
::一般来说,虚拟机与物理机在生产环境下处于完全的网络隔离状态,要么在2层(以太网级协议或TCP协议)隔离开,要么在3层(IP协议)上隔离开。这使得虚拟化环境下的生产系统网络配置极为复杂。其实对于一般应用来说,网络隔离性的要求性并不高。例如典型场景是在虚拟机内运行“要求物理机网络环境”的第三方应用程序,对于这种应用,有时甚至没有源代码。这种情况下,网络子系统的隔离性更多指的是物理机网络资源在命名空间上的隔离,称这种隔离性为“轻量级网络隔离”。在虚拟化环境下,虚拟机与物理机运行的是各自独立的操作系统,它们的协议栈是完全独立运行的。两套协议栈在资源的命名上完全没有交互,这导致了两者完全无法实现网络地址资源的良性共享,也就无法在虚拟机内安全运行“要求物理机网络环境”下的应用程序了。现有技术中,有如下三种常规的网络虚拟化技术方案:1.NAT技术,即在物理机上通过NAT地址变换将流量导入导出到虚拟网络上;2.桥接技术,即在物理机上通过2层转发技术将流量导入导出到虚拟网络上;3.将虚拟机的网络在3层以上彻底虚拟化,由虚拟网络中的某个网关把流量转发到物理网络环境中。以上三种现有方案都可以做到完全隔离的目的,但对于轻量级网络隔离场景过于笨重,甚至还有功能限制:1.NAT技术,物理机操作系统必须维护复杂的地址转换状态机,在网络转发的核心路径上还需要执行昂贵的地址转换操作,这种方法也难于实现在虚拟机中提供接受被动连接请求的网络服务;2.桥接技术,物理机操作系统必须维护复杂的地址转换状态机和执行地址转换,代价虽然比NAT方法低,但在2层进行网络虚拟化的缺点在于我们需要事先确定好虚拟2层网络的配置、2层地址转换等问题,维护整个环境的综合成本甚至大于NAT技术的成本。3.将虚拟机的网络在3层以上彻底虚拟化,这种方法比桥接更进一步。虚拟网络与物理网络的边界可能位于另一台机器上,这其间的配置管理代价和运行开销都非常大,很难获得与物理机协议栈上相妨的性能指标。技术实现要素:本申请的一个目的是提供一种网络虚拟化方法及设备,能够解决轻量级网络隔离场景中隔离方案过于笨重的问题。根据本申请的一个方面,提供了一种网络虚拟化方法,该方法包括:将物理机的网络配置镜像到虚拟机上;对虚拟机上的网络协议栈加以端口使用限制;由所述物理机为所述虚拟机分配仅供其使用的端口;其中,所述端口使用限制包括禁止传输层通信协议连接的目标地址使用物理机上的传输层通信协议端口,以及禁用原始套接字接口。进一步地,上述方法中,将物理机的网络配置镜像到虚拟机上包括:将所述物理机上的网卡的配置镜像到虚拟机上;关闭所述虚拟机上的网卡的地址解析协议;将所述物理机上的网卡的网际互连的协议地址镜像到所述虚拟机上,但将所述虚拟机上的网络掩码设置为32;将所述物理机上的默认路由器设为所述虚拟机的默认路由器,并将虚 拟机的默认路由器的物理地址设置成虚构的地址;将所述物理机上的地址解析协议信息包过滤系统的规则镜像到对应的虚拟机。进一步地,上述方法中,将物理机的网络配置镜像到虚拟机上,还包括:将所述物理机上的多队列和中断配置镜像到虚拟机上。进一步地,上述方法中,将物理机的网络配置镜像到虚拟机上,还包括:将所述物理机上的域名系统配置镜像到虚拟机上。进一步地,上述方法中,所述端口使用限制还包括:除了传输层通信协议,只允许预设协议的流量进出所述虚拟机,所述预设协议的流量包括地址解析协议请求和响应的流量及预设类型的网际控制报文协议的流量。进一步地,上述方法中,由所述物理机为所述虚拟机分配仅供其使用的端口,包括:所述物理机根据所述虚拟机的镜像端口的分配请求,建立一个传输控制协议套接字;所述物理机检查所述虚拟机的镜像端口的分配请求的类型,若是绑定系统调用,则执行绑定系统调用,在传输控制协议绑定哈希表中占据一个镜像端口,若是连接系统调用,则执行连接系统调用,在传输控制协议已经建立的哈希表中占据一个镜像端口,若占据成功,则在所述传输控制协议套接字中保存对应的虚拟机标识,并标识该传输控制协议套接字为镜像套接字,所述镜像套接字中包括所述占据的镜像端口,并向虚拟机返回分配功能的响应;若占据不成功,则关闭所述传输控制协议套接字,并向虚拟机返回分配失败的响应。进一步地,上述方法中,由所述物理机为所述虚拟机分配仅供其使用的端口之后,还包括:虚拟机将经过其传输控制协议套接字层、传输控制协议栈和网络之间 互连的协议层后,输出的传输控制协议及网络之间互连的协议的报文不通过其网卡,直接传递到所述物理机的操作系统中,其中,所述报文为依次封装好目标4、3、2层地址的报文;所述物理机上的地址解析协议层替换掉所述报文中目标2层地址后,将该报文通过其网卡发送出去。进一步地,上述方法中,由所述物理机为所述虚拟机分配仅供其使用的端口之后,还包括:物理机判断接收到的报文是否为传输控制协议及网络之间互连的协议的报文,若是,在所述传输控制协议已经建立的哈希表中查找是否有对应于该报文的传输控制协议套接字,若查找到,判断该传输控制协议套接字是否为镜像套接字,若是镜像套接字,则物理机将进行其内核的报文进行4层之前的除类型接收装卸、填充套接字和网络轮循接口操作之外的所有操作后,将所述报文送入虚拟机的传输控制协议层,若不是镜像套接字,则将所述报文转到常规协议栈进行处理;若未查找到,则将所述报文转到常规协议栈进行处理;若否,则将所述报文转到常规协议栈进行处理。根据本申请的另一个方面,还提供一种网络虚拟化设备,该设备包括:镜像装置,用于将物理机的网络配置镜像到虚拟机上;协议栈限制装置,用于对虚拟机上的网络协议栈加以端口使用限制;物理机,用于由所述物理机为所述虚拟机分配仅供其使用的端口;其中,所述端口使用限制包括禁止传输层通信协议连接的目标地址使用物理机上的传输层通信协议端口,以及禁用原始套接字接口。进一步地,上述设备中,所述镜像装置,用于将所述物理机上的网卡 的配置镜像到虚拟机上;关闭所述虚拟机上的网卡的地址解析协议;将所述物理机上的网卡的网际互连的协议地址镜像到所述虚拟机上,但将所述虚拟机上的网络掩码设置为32;将所述物理机上的默认路由器设为所述虚拟机的默认路由器,并将虚拟机的默认路由器的物理地址设置成虚构的地址;将所述物理机上的地址解析协议信息包过滤系统的规则镜像到对应的虚拟机。进一步地,上述设备中,所述镜像装置,还用于将所述物理机上的多队列和中断配置镜像到虚拟机上。进一步地,上述设备中,所述镜像装置,还用于将所述物理机上的域名系统配置镜像到虚拟机上。进一步地,上述设备中,所述端口使用限制还包括:除了传输层通信协议,只允许预设协议的流量进出所述虚拟机,所述预设协议的流量包括地址解析协议请求和响应的流量及预设类型的网际控制报文协议的流量。进一步地,上述设备中,所述物理机,用于根据所述虚拟机的镜像端口的分配请求,建立一个传输控制协议套接字;检查所述虚拟机的镜像端口的分配请求的类型,若是绑定系统调用,则执行绑定系统调用,在传输控制协议绑定哈希表中占据一个镜像端口,若是连接系统调用,则执行连接系统调用,在传输控制协议已经建立的哈希表中占据一个镜像端口,若占据成功,则在所述传输控制协议套接字中保存对应的虚拟机标识,并标识该传输控制协议套接字为镜像套接字,所述镜像套接字中包括所述占据的镜像端口,并向虚拟机返回分配功能的响应;若占据不成功,则关闭所述传输控制协议套接字,并向虚拟机返回分配失败的响应。进一步地,上述设备中,所述设备还包括虚拟机,用于将经过其传输控制协议套接字层、传输控制协议栈和网络之间互连的协议层后,输出的传输控制协议及网络之间互连的协议的报文不通过其网卡,直接传递到所 述物理机的操作系统中,其中,所述报文为依次封装好目标4、3、2层地址的报文;所述物理机,还用于将其上的地址解析协议层替换掉所述报文中目标2层地址后,将该报文通过其网卡发送出去。进一步地,上述设备中,所述物理机,还用于判断接收到的报文是否为传输控制协议及网络之间互连的协议的报文,若是,在所述传输控制协议已经建立的哈希表中查找是否有对应于该报文的传输控制协议套接字,若查找到,判断该传输控制协议套接字是否为镜像套接字,若是镜像套接字,则物理机将进行其内核的报文进行4层之前的除类型接收装卸、填充套接字和网络轮循接口操作之外的所有操作后,将所述报文送入虚拟机的传输控制协议层,若不是镜像套接字,则将所述报文转到常规协议栈进行处理;若未查找到,则将所述报文转到常规协议栈进行处理;若否,则将所述报文转到常规协议栈进行处理。与现有技术相比,本申请通过将物理机的网络配置镜像到虚拟机上,实现模拟物理机网络环境的目的,一方面,对应用进程造成了“直接运行物理网络”的假象,同时因为虚拟机和物理机操作系统内核的独立性自然满足了轻量级网络隔离性的要求,另一方面,对于虚拟机和物理机操作系统内核来说,隔离后的网络配置也与常规情况下几无区别,也不需要进行任何的全局网络配置修改,所以从协议栈上来说也没有复杂修改,整个系统的维护成本也很低。另外,如果允许虚拟机内的进程的任意绑定端口,就可以出现在不同虚拟机之间,或者虚拟机和物理机之间创建出端口冲突的TCP连接。因此,虚拟机在分配TCP协议的端口资源时必须与物理机操作系统协商,本申请通过由所述物理机为所述虚拟机分配仅供其使用的端口,以避免端口冲突的问题。此外,本申请在网络隔离性上在传统的网络虚拟化和容器环境下的网络子系统寻找到了一个微妙的平衡,它以TCP/IP网络协议中的3层为界,3层 及以下的绝大多数配置虚拟机从物理机上镜像,4层以上的配置由物理机操作系统与虚拟机操作系统配合管理,以保证物理机网络环境通信机制的一致性,解决轻量级网络隔离场景中隔离方案过于笨重的问题。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:图1示出根据本申请一个方面的一种网络虚拟化方法的流程图;图2示出本申请一优选实施例的网络虚拟化方法的流程图;图3示出本申请另一优选实施例的网络虚拟化方法的流程图;图4示出本申请又一优选实施例的网络虚拟化方法的流程图;图5示出根据本申请另一个方面的一种网络虚拟化设备的模块图。附图中相同或相似的附图标记代表相同或相似的部件。具体实施方式下面结合附图对本申请作进一步详细描述。在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦 除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。如图1所示,根据本申请的一个方面,提供一种网络虚拟化方法,其中,该方法包括:步骤S1,将物理机的网络配置镜像到虚拟机上;步骤S2,对虚拟机上的网络协议栈加以端口使用限制;步骤S3,由所述物理机为所述虚拟机分配仅供其使用的端口;其中,所述端口使用限制包括禁止传输层通信协议连接的目标地址使用物理机上的传输层通信协议端口,以及禁用原始套接字接口。本实施例通过将物理机的网络配置镜像到虚拟机上达到在虚拟机上,实现模拟物理机网络环境的目的,一方面,对应用进程造成了“直接运行物理网络”的假象,同时因为虚拟机和物理机操作系统内核的独立性自然满足了轻量级网络隔离性的要求,另一方面,对于虚拟机和物理机操作系统内核来说,隔离后的网络配置也与常规情况下几无区别,也不需要进行任何的全局网络配置修改,所以从协议栈上来说也没有复杂修改,整个系统的维护成本也很低。另外,如果允许虚拟机内的进程的任意绑定端口,就可以出现在不同虚拟机之间,或者虚拟机和物理机之间创建出端口冲突的TCP连接。因此,虚拟机在分配TCP协议的端口资源时必须与物理机操作系统协商,由所述物理机为所述虚拟机分配仅供其使用的端口,以避免端口冲突的问题。本申请原则上可以在任意操作系统和任意传输层协议上实现,下文以Linux操作系统上TCP协议为例。本申请网络虚拟化方法一优选的实施例中,步骤S1,将物理机的网络 配置镜像到虚拟机上,包括:将所述物理机上的网卡(NIC,NetworkInterfaceCard)的配置镜像到虚拟机上,实现虚拟机上的应用程序看到的是物理机一样的两层网络,在此,物理机上的网卡的配置包括VLANID、MAC地址;关闭所述虚拟机上的网卡的地址解析(ARP,AddressResolutionProtocol)协议,实现虚拟机网络构成为只有一台主机的网络的假象;将所述物理机上的网卡(NIC)的网际互连的协议(IP)地址镜像到所述虚拟机上,但将所述虚拟机上的网络掩码设置为32,实现虚拟机网络构成为只有一台主机的网络的假象;将所述物理机上的默认路由器设为所述虚拟机的默认路由器,并将虚拟机的默认路由器的物理地址(MAC,MediaAccessControl)设置成虚构的地址(FakedMAC),实现隐藏物理网络细节,以达到更好的物理网络隔离性;将所述物理机上的地址解析协议信息包过滤系统(iptables)的规则镜像到对应的虚拟机,从而出于正确性的考虑,保证虚拟机内运行的程序与在物理机上运行的效果一样。本申请网络虚拟化方法一优选的实施例中,步骤S1,将物理机的网络配置镜像到虚拟机上,还包括:将所述物理机上的多队列和中断配置镜像到虚拟机上,从而使虚拟机的协议栈性能更高。本申请网络虚拟化方法一优选的实施例中,步骤S1,将物理机的网络配置镜像到虚拟机上,还包括:将所述物理机上的域名系统(DNS,DomainNameSyste)配置镜像到虚拟机上,从而实现通过过滤或者劫持虚拟机对外的DNS请求,限制虚拟机访问的目标网络服务。可在虚拟机启动时镜像以上配置,当物理机以上配置修改时也需要及时 更新镜像的配置,但这种是很少见的情况,因为以上配置的变化也会导致物理机网络通信暂时中断。本申请网络虚拟化方法一优选的实施例中,步骤S2,对虚拟机上的网络协议栈加以端口使用限制,其中,所述端口使用限制包括:不允许传输层通信协议(TCP)连接的目标地址是物理机上的传输层通信协议(TCP)端口,在此,出于隔离性考虑,不允许虚拟机访问物理机端口;不允许使用原始套接字接口(rawsocket),从而保证隔离性要求。优选地,该端口使用限制还包括:除了传输层通信协议,只允许预设协议的流量进出所述虚拟机,所述预设协议的流量包括地址解析协议(ARP)请求和响应的流量及预设类型的网际控制报文协议(ICMP,InternetControlMessageProtocol)的流量,从而保证正确性要求,其中,预设类型的网际控制报文协议,例如端口/主机不可达等(不支持ECHO)。如图2所示,本申请网络虚拟化方法一优选的实施例中,步骤S3,由所述物理机为所述虚拟机分配仅供其使用的端口,即在物理机操作系统中分配镜像端口(mirroredports)的过程,包括:步骤S21,所述物理机根据所述虚拟机的镜像端口的分配请求,建立一个传输控制协议套接字(TCPSocket);步骤S22,所述物理机检查所述虚拟机的镜像端口(mirroredport)的分配请求的类型,若是绑定(bind())系统调用,则步骤S23,执行绑定系统调用,在传输控制协议绑定哈希表(TCPbindhash)中占据一个镜像端口(mirroredports),若是连接系统(connect())调用,则步骤S24,执行连接系统调用,在传输控制协议(TCP)已经建立的哈希表(establishedhash)中占据一个镜像端口(mirroredports),若占据成功,则步骤S25,在所述传输控制协议套接字中保存对应的虚拟机标识,并标识该传输控制协议套接字为镜像套接字,所述镜像套接字中包括所述占据的镜像端口,并步骤S26,向虚拟机返回分配功能的响应;若占据不成功,则步骤S27,关闭所述传输控制协议套接字,并步骤S28,向虚拟机返回分配失败的响应。具体的,以虚拟机内的某个进程主动建立TCP连接为例。如果允许虚拟机内的进程的任意绑定端口,就可以出现在不同虚拟机之间,或者虚拟机和物理机之间创建出端口冲突的TCP连接。因此,需要限制虚拟机能够创建的TCP连接的4元组的取值范围。这样,虚拟机在分配TCP协议的端口资源时必须与物理机操作系统协商,将这种需要协商的端口称为“mirroredports”,分配mirroredports的入口有:1.bind()系统调用。需要无条件向物理机操作系统申请mirroredports;2.connect()系统调用。但是如果目标地址是一个本虚拟机(loopback)地址,则不必要申请mirroredports。如图3所示,本申请网络虚拟化方法一优选的实施例中,步骤S3,由所述物理机为所述虚拟机分配仅供其使用的端口之后,还包括虚拟机上发送TCP报文的流程:步骤S31,虚拟机将经过其传输控制协议套接字(TCPsocket)层、传输控制(TCP)协议栈和网络之间互连的协议(IP)层后,输出的传输控制协议及网络之间互连的协议的报文,步骤S32,不通过其网卡,直接传递到所述物理机的操作系统中,其中,所述报文为依次封装好目标4、3、2层地址的报文,具体的,所述2层如以太网层,所述3层如IP层,所述4层如TCP层、UDP层,虚拟机的发包流程与原操作系统的发包流程完全相同,TCP报文从虚拟机的系统调用接口进入内术,经过传输控制协议套接字(TCPsocket)层、传输控制(TCP)协议栈和网络之间互连的协议(IP)层后,输出的依次封装好4、3、2层报头的传输控制协议及网络之间互连的协议的报文;步骤S33,所述物理机上的地址解析协议层替换掉所述报文中目标2层地址后,步骤S34,将该报文通过其网卡发送出去。由于经过镜像配置,TCP端口不会冲突,物理机转发报文时不需要作额外的检查,使物理机转发报文的操作得到了简化。如图4所示,本申请网络虚拟化方法一优选的实施例中,步骤S3,由所述物理机为所述虚拟机分配仅供其使用的端口之后,还包括物理机上接收到mirroredsockets报文的流程:步骤S41,物理机判断接收到的报文是否为传输控制协议及网络之间互连的协议的报文,若是,步骤S42,在所述传输控制协议已经建立的哈希表(TCPestablishedhash)中查找是否有对应于该报文的传输控制协议套接字(TCPSocket),若查找到,步骤S43,判断该传输控制协议套接字(TCPSocket)是否为镜像套接字(mirroredsocket),若是镜像套接字,则步骤S44,物理机将进行其内核的报文进行4层之前的除类型接收装卸(GRO)、填充套接字(PACKEDSOCKET)和网络轮循接口(NETPOLL)操作之外的所有操作后,步骤S45,将所述报文送入虚拟机的传输控制协议(TCP)层,若不是镜像套接字,则步骤S46,将所述报文转到常规协议栈进行处理;若未查找到,则步骤S46,将所述报文转到常规协议栈进行处理;若否,则步骤S46,将所述报文转到常规协议栈进行处理。在此,类型接收装卸(GRO)操作是Linux协议栈的优化机制,本实施例里不需要进行,另外,由于本实施例中不需要物理机显示虚拟机的报文,为避免guest的流量进入HOST,所以也不需要进行填充套接字(PACKEDSOCKET)和网络轮循接口(NETPOLL)操作,本实施例简化了物理机上接收报文的操作。如图5所示,根据本申请的另一面,还提供一种网络虚拟化设备,所述设备100包括:镜像装置1,用于将物理机的网络配置镜像到虚拟机上;协议栈限制装置2,用于对虚拟机上的网络协议栈加以端口使用限制;物理机3,用于由所述物理机为所述虚拟机分配仅供其使用的端口。本实施例通过将物理机的网络配置镜像到虚拟机上,实现模拟物理机网络环境的目的,一方面,对应用进程造成了“直接运行物理网络”的假象,同时因为虚拟机和物理机操作系统内核的独立性自然满足了轻量级网络隔离性的要求,另一方面,对于虚拟机和物理机操作系统内核来说,隔离后的网络配置也与常规情况下几无区别,也不需要进行任何的全局网络配置修改,所以从协议栈上来说也没有复杂修改,整个系统的维护成本也很低。另外,如果允许虚拟机内的进程的任意绑定端口,就可以出现在不同虚拟机之间,或者虚拟机和物理机之间创建出端口冲突的TCP连接。因此,虚拟机在分配TCP协议的端口资源时必须与物理机操作系统协商,由所述物理机为所述虚拟机分配仅供其使用的端口,以避免端口冲突的问题。本申请原则上可以在任意操作系统和任意传输层协议上实现,下文以Linux操作系统上TCP协议为例。本申请网络虚拟化设备一优选的实施例中,所述镜像装置1,用于将所述物理机上的网卡的配置镜像到虚拟机上,实现虚拟机上的应用程序看到的是物理机一样的两层网络,在此,物理机上的网卡的配置包括VLANID、MAC地址;关闭所述虚拟机上的网卡的地址解析协议,实现虚拟机网络构成为只有一台主机的网络的假象;将所述物理机上的网卡的网际互连的协议地址镜像到所述虚拟机上,但将所述虚拟机上的网络掩码设置为32,实现虚拟机网络构成为只有一台主机的网络的假象;将所述物理机上的默认路由器设为所述虚拟机的默认路由器,并将虚拟机的默认路由器的物理地址设置成虚构的地址,实现隐藏物理网络细节,以达到更好的物理网络隔离性;将所述物理机上的地址解析协议信息包过滤系统的规则镜像到对应的虚拟机,从而出于正确性的考虑,保证虚拟机内运行的程序与在物理机 上运行的效果一样。本申请网络虚拟化设备一优选的实施例中,所述镜像装置1,还用于将所述物理机上的多队列和中断配置镜像到虚拟机上,从而使虚拟机的协议栈性能更高。本申请网络虚拟化设备一优选的实施例中,所述镜像装置,还用于将所述物理机上的域名系统配置镜像到虚拟机上,从而实现通过过滤或者劫持虚拟机对外的DNS请求,限制虚拟机访问的目标网络服务。可在虚拟机启动时镜像以上配置,当物理机以上配置修改时也需要及时更新镜像的配置,但这种是很少见的情况,因为以上配置的变化也会导致物理机网络通信暂时中断。本申请网络虚拟化设备一优选的实施例中,所述端口使用限制包括:不允许传输层通信协议连接的目标地址是物理机上的传输层通信协议端口,在此,出于隔离性考虑,不允许虚拟机访问物理机端口;不允许使用原始套接字接口,从而保证隔离性要求。优选地,该端口使用限制还包括:除了传输层通信协议,只允许预设协议的流量进出所述虚拟机,所述预设协议的流量包括地址解析协议(ARP)请求和响应的流量及预设类型的网际控制报文协议(ICMP,InternetControlMessageProtocol)的流量,从而保证正确性要求,其中,预设类型的网际控制报文协议,例如端口/主机不可达等(不支持ECHO)。可参考图2,本申请网络虚拟化设备一优选的实施例中,所述物理机3,用于根据所述虚拟机的镜像端口的分配请求,建立一个传输控制协议套接字;检查所述虚拟机的镜像端口的分配请求的类型,若是绑定系统调用,则执行绑定系统调用,在传输控制协议绑定哈希表中占据一个镜像端口,若是连接系统调用,则执行连接系统调用,在传输控制协议已经建立的哈希表中占据一个镜像端口,若占据成功,则在所述传输控制协议套接字中保存对应 的虚拟机标识,并标识该传输控制协议套接字为镜像套接字,所述镜像套接字中包括所述占据的镜像端口,并向虚拟机返回分配功能的响应;若占据不成功,则关闭所述传输控制协议套接字,并向虚拟机返回分配失败的响应。具体的,以虚拟机内的某个进程主动建立TCP连接为例。如果允许虚拟机内的进程的任意绑定端口,就可以出现在不同虚拟机之间,或者虚拟机和物理机之间创建出端口冲突的TCP连接。因此,需要限制虚拟机能够创建的TCP连接的4元组的取值范围。这样,虚拟机在分配TCP协议的端口资源时必须与物理机操作系统协商,将这种需要协商的端口称为“mirroredports”,分配mirroredports的入口有:1.bind()系统调用。需要无条件向物理机操作系统申请mirroredports;2.connect()系统调用。但是如果目标地址是一个本虚拟机(loopback)地址,则不必要申请mirroredports。如图5和3所示,本申请网络虚拟化设备一优选的实施例中,所述设备100还包括虚拟机4,用于将经过其传输控制协议套接字层、传输控制协议栈和网络之间互连的协议层后,输出的传输控制协议及网络之间互连的协议的报文不通过其网卡,直接传递到所述物理机的操作系统中,其中,所述报文为依次封装好目标4、3、2层地址的报文,具体的,所述2层如以太网层,所述3层如IP层,所述4层如TCP层、UDP层,虚拟机的发包流程与原操作系统的发包流程完全相同,TCP报文从虚拟机的系统调用接口进入内术,经过传输控制协议套接字(TCPsocket)层、传输控制(TCP)协议栈和网络之间互连的协议(IP)层后,输出的依次封装好4、3、2层报头的传输控制协议及网络之间互连的协议的报文;所述物理机,还用于将其上的地址解析协议层替换掉所述报文中目标2层地址后,将该报文通过其网卡发送出去。由于经过镜像配置,TCP端口不会冲突,物理机转发报文时不需要作额外的检查,使物理机转发报文的操作得到了简化。可参考如4,本申请网络虚拟化设备一优选的实施例中,所述物理机3,还用于判断接收到的报文是否为传输控制协议及网络之间互连的协议的报文,若是,在所述传输控制协议已经建立的哈希表中查找是否有对应于该报文的传输控制协议套接字,若查找到,判断该传输控制协议套接字是否为镜像套接字,若是镜像套接字,则物理机将进行其内核的报文进行4层之前的除类型接收装卸、填充套接字和网络轮循接口操作之外的所有操作后,将所述报文送入虚拟机的传输控制协议层,若不是镜像套接字,则将所述报文转到常规协议栈进行处理;若未查找到,则将所述报文转到常规协议栈进行处理;若否,则将所述报文转到常规协议栈进行处理。在此,类型接收装卸(GRO)操作是Linux协议栈的优化机制,本实施例里不需要进行,另外,由于本实施例中不需要物理机显示虚拟机的报文,为避免guest的流量进入HOST,所以也不需要进行填充套接字(PACKEDSOCKET)和网络轮循接口(NETPOLL)操作,本实施例简化了物理机上接收报文的操作。综上所述,本申请通过将物理机的网络配置镜像到虚拟机上,实现模拟物理机网络环境的目的,一方面,对应用进程造成了“直接运行物理网络”的假象,同时因为虚拟机和物理机操作系统内核的独立性自然满足了轻量级网络隔离性的要求,另一方面,对于虚拟机和物理机操作系统内核来说,隔离后的网络配置也与常规情况下几无区别,也不需要进行任何的全局网络配置修改,所以从协议栈上来说也没有复杂修改,整个系统的维护成本也很低。另外,如果允许虚拟机内的进程的任意绑定端口,就可以出现在不同虚拟机之间,或者虚拟机和物理机之间创建出端口冲突的TCP连接。因此,虚拟机在分配TCP协议的端口资源时必须与物理机操作系统协商,本申请通过由所述物理机为所述虚拟机分配仅供其使用的端口,以避免端口冲突的问题。此外,本申请在网络隔离性上在传统的网络虚拟化和容器环境下的网络子系统寻找到了一个微妙的平衡,它以TCP/IP网络协议中的3层为界,3层及以下的绝大多数配置虚拟机从物理机上镜像,4层以上的配置由物理机操作 系统与虚拟机操作系统配合管理,以保证物理机网络环境通信机制的一致性,解决轻量级网络隔离场景中隔离方案过于笨重的问题。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限 定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1