虚拟机的数据交换方法、装置和系统的制作方法

文档序号:6532452阅读:439来源:国知局
虚拟机的数据交换方法、装置和系统的制作方法
【专利摘要】本发明实施例提供一种虚拟机的数据交换方法,包括:获取物理主机内需要发送给目的节点的数据,根据该数据确定目的节点为本物理主机内的节点还是本物理主机外的节点,若为本物理主机内的节点,则确定目的虚拟网卡接口,通过该目的虚拟网卡接口对应的虚拟网卡将所述数据发给对应的目的虚拟机,若为本物理主机外的节点,则确定物理网卡接口,通过所述物理网卡接口对应的物理网卡将所述数据发送至所述物理主机外。此外,本发明实施例还提供相应的装置和系统。
【专利说明】虚拟机的数据交换方法、装置和系统
【技术领域】
[0001]本发明涉及通信【技术领域】,具体涉及一种虚拟机的数据交换方法、装置和系统。
【背景技术】
[0002]在虚拟化技术产生以后,多个虚拟机(VM,Virtual Machine)共存于一个主机(Host,后文亦称为物理主机)内部,虚拟机对用户呈现好似一个正常的物理机,因此,除了虚拟机之间有数据交换需求之外,虚拟机与外界网络也有通信的需求。
[0003]现在主流的虚拟机数据交换方案有软交换和硬交换两种,其中,软件交换指的是用软件模仿一个物理交换机的行为,实现较为繁琐;而硬交换指的是在网卡芯片上或利用物理交换机来实现一个交换逻辑的行为,也就是说,虚拟机对外的数据交换发生在硬件上,例如,具体可以使用硬件直通技术,将物理网卡接口直接分配给虚拟机,或者使用SR-1OV (单根 I/O 虚拟技术,Single Root I/O Virtualization)网卡生成的 VF (virtualfunction, SR-1OV设备模拟出来的虚拟设备),使得虚拟机能直接使用网卡,这样,数据交换就可以发生在物理交换机或网卡上的交换逻辑模块上。该方案可以消除虚拟机使用网络对主机的消耗,性能较好,而且网卡内部的第二层交换机(L2switch,Layer2switch)是查询内部VF的媒体接入层(MAC,Media Access Control)转发,逻辑上没有环路,可以避免生成树协议(STP, Spanning Tree Protocol)的开销,实现较为灵活。
[0004]在对现有技术的研究和实践过程中,本发明的发明人发现,虽然现有的这种硬交换方案相对于软交换而言,性能和灵活性都有所提高,但其数据交换效率并不够高,比如,虚拟机通信全部都需要先经过网卡,以及无论是与主机内的单元还是主机外的设备进行通信都会消耗周边原件扩展接口(PCI,Pedpherd Component Interconnect)总线带宽,等等,而且,在该方案中,主机内虚拟机间的通信还会影响主机内的其他虚拟机与主机外设备间的通信。

【发明内容】

[0005]本发明实施例提供一种虚拟机的数据交换方法、装置和系统,可以在不降低其性能和灵活性的前提下,提高数据交换效率,一定程度上消除主机内虚拟机间的通信对主机内的其他虚拟机与主机外设备间的通信的影响。
[0006]第一方面,本发明实施例提供一种虚拟机的数据交换方法,包括:
[0007]获取物理主机内需要发送给目的节点的数据,所述数据中携带目的节点的MAC地址;
[0008]根据所述数据中携带的目的节点的MAC地址确定目的节点为本物理主机内的节点还是本物理主机外的节点;
[0009]若为本物理主机内的节点,则确定目的虚拟接口,通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述数据发给对应的目的虚拟机;
[0010]若为本物理主机外的节点,则确定物理网卡接口(out_port),通过所述物理网卡接口对应的物理网卡将所述数据发送至所述物理主机外。
[0011]在第一种可能的实施方式中,结合第一方面,所述根据所述数据中携带的目的节点的MAC地址确定目的节点为本物理主机内的节点还是本物理主机外的节点,可以包括:
[0012]确定第一映射表中是否存在所述数据中携带的目的节点的MAC地址,所述第一映射表包括MAC地址和虚拟网卡(NIC, Network Interface Card)接口的对应关系;若是,贝丨J确定目的节点为本物理主机内的节点,若否,则确定目的节点为本物理主机外的节点。
[0013]在第二种可能的实施方式中,结合第一方面的第一种可能的实施方式,所述确定目的虚拟网卡接口,通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述数据发给对应的目的虚拟机,可以包括:
[0014]根据所述数据中携带的目的节点的MAC地址从第一映射表中查找与所述MAC地址对应的目的虚拟网卡接口(in_port);
[0015]通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述数据发给对应的目的虚拟机。
[0016]在第三种可能的实施方式中,结合第一方面,所述根据所述数据中携带的目的节点的MAC地址确定目的节点为物理主机内的节点还是物理主机外的节点,可以包括:
[0017]根据所述数据中携带的目的节点的MAC地址从第一映射表中查找与所述MAC地址对应的虚拟网卡接口,所述第一映射表包括MAC地址和虚拟网卡接口的对应关系;
[0018]若查找到与所述MAC地址对应的虚拟网卡接口,则确定目的节点为本物理主机内的节点;
[0019]若查找不到与所述MAC地址对应的虚拟网卡接口,则确定目的节点为本物理主机外的节点;
[0020]其中,所述确定目的虚拟网卡接口为:确定所述查找到的与所述MAC地址对应的虚拟网卡接口为所述目的虚拟网卡接口。
[0021]在第四种可能的实施方式中,结合第一方面,所述确定物理网卡接口,通过所述物理网卡接口对应的物理网卡将所述数据发送至所述物理主机外,可以包括:
[0022]获取接收所述数据时所使用的虚拟网卡接口 ;
[0023]根据所述虚拟网卡接口从第二映射表中查找得到与所述虚拟网卡接口对应的物理网卡接口,所述第二映射表包括虚拟网卡接口和物理网卡接口的对应关系;
[0024]通过所述物理网卡接口对应的物理网卡将所述数据发送至所述物理主机外。
[0025]在第五种可能的实施方式中,结合第一方面的第一种可能的实施方式、第一方面的第二种可能的实施方式、第一方面的第三种可能的实施方式或第一方面的第四种可能的实施方式,该方法还可以包括:
[0026]检测到后端虚拟网卡接入本物理主机时,生成虚拟网卡接口,并在所述第一映射表中添加对应于指定的MAC地址的所述虚拟网卡接口 ;以及,
[0027]检测到后端虚拟网卡从本物理主机上移除时,在所述第一映射表中删除对应于所述指定的MAC地址的所述虚拟网卡接口 ;
[0028]其中,所述第一映射表不进行媒体接入层地址学习(Mac-learning)。
[0029]在第六种可能的实施方式中,结合第一方面,该方法还可以包括:
[0030]通过物理网卡接收来自物理主机外的数据,该来自物理主机外的数据携带目的节点的MAC地址;
[0031]根据所述来自物理主机外的数据中携带的目的节点的MAC地址确定对应目的虚拟网卡接口;
[0032]通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述来自物理主机外的数据发送给对应的目的虚拟机。
[0033]在第七种可能的实施方式中,结合第一方面的第六种可能的实施方式,所述由物理网卡根据所述来自物理主机外的数据中携带的目的节点的MAC地址确定对应目的虚拟网卡接口,可以包括:
[0034]根据所述来自物理主机外的数据中携带的目的节点的MAC地址从第一映射表中查找与所述MAC地址对应的虚拟网卡接口,所述与所述MAC地址对应的虚拟网卡接口为目的虚拟网卡接口,所述第一映射表包括MAC地址和虚拟网卡接口的对应关系。
[0035]此外,可选的,在所述通过物理网卡接收来自物理主机外的数据之后,该方法还可以包括:
[0036]根据所述来自物理主机外的数据中携带的目的节点的MAC地址,从第一映射表中查找不到与所述MAC地址对应的虚拟网卡接口时,丢弃所述来自物理主机外的数据。
[0037]第二方面,本发明实施例还提供一种虚拟机的数据交换装置,包括获取单元、判断单元、第一处理单元和第二处理单元;
[0038]获取单元,用于获取物理主机内需要发送给目的节点的数据,该数据中携带目的节点的MAC地址;
[0039]判断单元,用于根据所述数据中携带的目的节点的MAC地址确定目的节点为物理主机内的节点还是物理主机外的节点;
[0040]第一处理单元,用于在判断单元确定目的节点为物理主机内的节点时,确定目的虚拟网卡接口,通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述数据发给对应的目的虚拟机;
[0041]第二处理单元,用于在判断单元确定目的节点为物理主机外的节点时,确定物理网卡接口,通过所述物理网卡接口对应的物理网卡将所述数据发送至所述物理主机外。
[0042]在第一种可能的实现方式中,结合第二方面,所述判断单元,具体可以用于确定第一映射表中是否存在所述数据中携带的目的节点的MAC地址,若存在所述数据中携带的目的节点的MAC地址,则确定目的节点为本物理主机内的节点,若不存在所述数据中携带的目的节点的MAC地址,则确定目的节点为本物理主机外的节点;所述第一映射表包括MAC地址和虚拟网卡接口的对应关系;
[0043]在第二种可能的实现方式中,结合第二方面的第一种可能的实现方式,所述第一处理单元,具体可以用于在判断单元确定目的节点为本物理主机内的节点时,根据所述数据中携带的目的节点的MAC地址从第一映射表中查找与所述MAC地址对应的目的虚拟网卡接口,所述与所述MAC地址对应的虚拟网卡接口为目的虚拟网卡接口,通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述数据发给对应的目的虚拟机;
[0044]在第三种可能的实现方式中,结合第二方面,所述判断单元,具体可以用于根据所述数据中携带的目的节点的MAC地址从第一映射表中查找与所述MAC地址对应的虚拟网卡接口 ;若查找到与所述MAC地址对应的虚拟网卡接口,则确定目的节点为本物理主机内的节点;若查找不到与所述MAC地址对应的虚拟网卡接口,则确定目的节点为本物理主机外的节点,所述第一映射表包括MAC地址和虚拟网卡接口的对应关系;
[0045]则所述第一处理单元,具体用于在判断单元确定目的节点为本物理主机内的节点时,确定所述查找到的与所述MAC地址对应的虚拟网卡接口为所述目的虚拟网卡接口。
[0046]在第四种可能的实现方式中,结合第二方面,所述第二处理单元,具体可以用于在判断单元确定目的节点为本物理主机外的节点时,获取接收所述数据时所使用的虚拟网卡接口,根据所述虚拟网卡接口从第二映射表中查找得到与所述虚拟网卡接口对应的物理网卡接口,通过所述物理网卡接口对应的物理网卡将所述数据发送至所述物理主机外;所述第二映射表包括虚拟网卡接口和物理网卡接口的对应关系。
[0047]在第五种可能的实现方式中,结合第二方面的第一种可能的实施方式、第二方面的第二种可能的实施方式、第二方面的第三种可能的实施方式或第二方面的第四种可能的实施方式,该数据交换装置,还可以包括检测单元;
[0048]检测单元,用于检测到后端虚拟网卡接入本物理主机时,生成对应的虚拟网卡接口,并在所述第一映射表中添加对应于指定的MAC地址的所述虚拟网卡接口 ;以及,检测到所述后端虚拟网卡从本物理主机上移除时,在所述第一映射表中删除对应于所述指定的MAC地址的所述虚拟网卡接口。
[0049]在第六种可能的实现方式中,结合第二方面,该数据交换装置,还可以包括接收单元、确定单元和发送单元;
[0050]接收单元,用于通过物理网卡接收来自物理主机外的数据,该来自物理主机外的数据携带目的节点的MAC地址;
[0051]确定单元,用于根据所述来自物理主机外的数据中携带的目的节点的MAC地址确定对应目的虚拟网卡接口;
[0052]发送单元,用于通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述来自物理主机外的数据发送给对应的虚拟机。
[0053]在第七种可能的实现方式中,结合第二方面的第六种可能的实施方式,所述确定单元,具体可以用于根据所述来自物理主机外的数据中携带的目的节点的MAC地址从第一映射表中查找与所述MAC地址对应的虚拟网卡接口,所述与所述MAC地址对应的虚拟网卡接口为目的虚拟网卡接口,所述第一映射表包括MAC地址和虚拟网卡接口的对应关系。
[0054]此外,所述确定单元,还可以用于在根据所述来自物理主机外的数据中携带的目的节点的MAC地址,从第一映射表中查找不到与所述MAC地址对应的虚拟网卡接口时,丢弃所述来自物理主机外的数据。
[0055]第三方面,本发明实施例还提供一种通信系统,包括至少两台物理主机,其中所述至少两台物理主机包括第一物理主机和第二物理主机;
[0056]第一物理主机,用于获取第一物理主机内需要发送给目的节点的数据,该数据中携带目的节点的MAC地址,根据所述数据中携带的目的节点的MAC地址确定目的节点为本物理主机(即第一物理主机)内的节点还是本物理主机外的节点;若为本物理主机内的节点,则确定目的虚拟网卡接口,通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述数据发给对应的目的虚拟机;若为本物理主机外的节点,则确定物理网卡接口,通过所述物理网卡接口对应的物理网卡将该数据发送至第二物理主机。[0057]第二物理主机,用于接收第一物理主机发送的数据。
[0058]在第一种可能的实现方式中,结合第三方面,所述第一物理主机,具体可以用于获取本物理主机内需要发送给目的节点的数据,确定第一映射表中是否存在所述数据中携带的目的节点的MAC地址,若所述第一映射表中存在所述数据中携带的目的节点的MAC地址,贝_定目的节点为第一物理主机内的节点,并根据所述数据中携带的目的节点的MAC地址从第一映射表中查找与所述MAC地址对应的虚拟网卡接口,所述与所述MAC地址对应的虚拟网卡接口为目的虚拟网卡接口,通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述数据发给对应的目的虚拟机;若所述第一映射表中不存在所述数据中携带的目的节点的MAC地址,则确定目的节点为本物理主机外的节点,并确定物理网卡接口,通过所述物理网卡接口对应的物理网卡将该数据发送至第二物理主机;所述第一映射表包括MAC地址和虚拟网卡接口的对应关系。
[0059]在第二种可能的实现方式中,结合第三方面,所述第一物理主机,具体用于获取本物理主机内需要发送给目的节点的数据,根据所述数据中携带的目的节点的MAC地址从第一映射表中查找与所述MAC地址对应的虚拟网卡接口,若所述第一映射表中查找到与所述MAC地址对应的虚拟网卡接口,则确定目的节点为第一物理主机内的节点,并确定所述查找到的与所述MAC地址对应的虚拟网卡接口为所述目的虚拟网卡接口,通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述数据发给对应的目的虚拟机;若查找不到与所述MAC地址对应的虚拟网卡接口,则确定目的节点为本物理主机外的节点,并确定物理网卡接口,通过所述物理网卡接口对应的物理网卡将该数据发送至第二物理主机;所述第一映射表包括MAC地址和虚拟网卡接口的对应关系。
[0060]在第三种可能的实现方式中,结合第三方面、第三方面的第一种可能的实现方式或第三方面的第二种可能的实现方式,所述第一物理主机,具体用于获取接收所述数据时所使用的虚拟网卡接口,根据所述虚拟网卡接口从第二映射表中查找得到与所述虚拟网卡接口对应的物理网卡接口,通过所述物理网卡接口对应的物理网卡将所述数据发送至第一物理主机外,所述第二映射表包括虚拟网卡接口和物理网卡接口的对应关系。
[0061]在第四种可能的实现方式中,结合第三方面、第三方面的第一种可能的实现方式或第三方面的第二种可能的实现方式,所述第二物理主机还用于向第一物理主机发送数据;
[0062]所述第一物理主机,还可以用于通过物理网卡接收第二物理主机发送的数据,该数据携带目的节点的MAC地址,根据所述数据的MAC地址确定对应目的虚拟网卡接口,通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述来自第二物理主机的数据发送给对应的目的虚拟机。
[0063]第四方面,本发明实施例还提供一种物理主机,包括位于物理主机内核空间的处理器、运行于物理主机用户空间的至少一个虚拟机和位于物理主机硬件层的至少一个物理网卡,其中:
[0064]处理器,用于获取物理主机内需要发送给目的节点的数据,该数据中携带目的节点的MAC地址,根据所述数据中携带的目的节点的MAC地址确定目的节点为本物理主机内的节点还是本物理主机外的节点,若为本物理主机内的节点,则确定目的虚拟网卡接口,通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述数据发给对应的目的虚拟机,若为本物理主机外的节点,则确定物理网卡接口,将所述数据发送给物理网卡接口对应的物理网卡;
[0065]虚拟机,用于接收所述处理器发送的数据;
[0066]物理网卡,用于接收所述处理器发送的数据,并将所述数据发送至所述物理主机外。
[0067]在第一种可能实现的方式中,结合第四方面,所述处理器,具体可以用于获取物理主机内需要发送给目的节点的数据,确定第一映射表中是否存在所述数据中携带的目的节点的MAC地址,所述第一映射表包括MAC地址和虚拟网卡接口的对应关系;若第一映射表中存在所述数据中携带的目的节点的MAC地址,则确定目的节点为本物理主机内的节点,并根据所述数据中携带的目的节点的MAC地址从所述第一映射表中查找与所述MAC地址对应的虚拟网卡接口,所述与所述MAC地址对应的虚拟网卡接口为目的虚拟网卡接口,通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述数据发给对应的目的虚拟机;若第一映射表中不存在所述数据中携带的目的节点的MAC地址,则确定目的节点为本物理主机外的节点,并确定物理网卡接口,将所述数据发送给所述物理网卡接口对应的物理网卡。
[0068]在第二种可能实现的方式中,结合第四方面,所述处理器具体可以用于获取物理主机内需要发送给目的节点的数据,根据所述数据中携带的目的节点的MAC地址从第一映射表中查找与所述MAC地址对应的目的虚拟网卡接口,所述第一映射表包括MAC地址和虚拟网卡接口的对应关系,若查找到与所述MAC地址对应的虚拟网卡接口,则确定目的节点为本物理主机内的节点,并确定所述查找到的与所述MAC地址对应的虚拟网卡接口为所述目的虚拟网卡接口,通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述数据发给对应的目的虚拟机;若查找不到与所述MAC地址对应的虚拟网卡接口,则确定目的节点为本物理主机外的节点,并确定物理网卡接口,将所述数据发送给所述物理网卡接口对应的物理网卡。
[0069]在第三种可能实现的方式中,结合第四方面、第四方面的第一种可能实现的方式或第四方面的第二种可能实现的方式,所述处理器具体可以用于在确定目的节点为本物理主机外的节点时,获取接收所述数据时所使用的虚拟网卡接口,根据所述虚拟网卡接口从第二映射表中查找得到与所述虚拟网卡接口对应的物理网卡接口,所述第二映射表包括虚拟网卡接口和物理网卡接口的对应关系,将所述数据发送给所述物理网卡接口对应的物理网卡。
[0070]在第四种可能实现的方式中,结合第四方面、第四方面的第一种可能实现的方式或第四方面的第二种可能实现的方式,所述物理网卡还用于接收来自物理主机外的数据,该来自物理主机外的数据携带目的节点的MAC地址,将所述来自物理主机外的数据发送给处理器;
[0071]贝IJ,所述处理器还用于根据所述来自物理主机外的数据中携带的目的节点的MAC地址确定对应的虚拟网卡接口,所述与所述MAC地址对应的虚拟网卡接口为目的虚拟网卡接口,通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述数据发给对应的目的虚拟机。
[0072]在第五种可能实现的方式中,结合第四方面的第四种可能实现的方式,所述处理器,还用于在根据所述来自物理主机外的数据中携带的目的节点的MAC地址,从第一映射表中查找不到与所述MAC地址对应的虚拟网卡接口时,丢弃所述来自物理主机外的数据。
[0073]本发明实施例中,采用获取物理主机内需要发送给目的节点的数据,根据该数据中携带的目的节点的MAC地址确定目的节点为本物理主机内的节点还是本物理主机外的节点;若为本物理主机内的节点,则确定目的虚拟网卡接口,通过该目的虚拟网卡接口对应的虚拟网卡将该数据发给对应的目的虚拟机,若为本物理主机外的节点,则确定物理网卡接口,通过该物理网卡接口对应的物理网卡将该数据发送至所述物理主机外。由于该方案在进行虚拟机的数据交换时,对主机内的虚拟机之间的通信,以及主机内的虚拟机与主机外设备之间的通信进行区分,若为主机内的虚拟机之间的通信,则不需要经过物理网卡,而是直接确定目的虚拟网卡接口,然后与目的虚拟机进行通信,也就是说,此时只是虚拟机间的内容拷贝,因此不会浪费PCI总线带宽,可以提高数据交换效率,也不会影响主机内的其他虚拟机与主机外设备间的通信;而若为主机内的虚拟机与主机外设备之间的通信,则确定物理网卡接口,然后通过该物理网卡接口对应的物理网卡与物理主机外设备进行通信,由于与物理主机外设备进行通信时,都需要经过物理网卡,所以便于对进入物理主机的数据进行控制,比如只要物理网卡不开启混杂模式,那么就可以控制进入物理主机里的数据均为有效数据,减少无效数据的消耗,可以进一步提高数据交换效率;换言之,该方案可以在不降低其性能和灵活性的前提下,提高数据交换效率,一定程度上消除主机内虚拟机间的通信对主机内其他虚拟机与主机外设备间的通信的影响。
【专利附图】

【附图说明】
[0074]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0075]图1是本发明实施例提供的虚拟机的数据交换方法的流程图;
[0076]图2是本发明实施例提供的虚拟机的数据交换方法的另一流程图;
[0077]图3a为本发明实施例提供的虚拟机的数据交换方法的场景示意图;
[0078]图3b是本发明实施例提供的物理主机的结构示意图;
[0079]图3c是本发明实施例提供的虚拟机的数据交换方法中的发送流程图;
[0080]图3d是本发明实施例提供的虚拟机的数据交换方法中的接收流程图;
[0081]图4a是本发明实施例提供的个人计算机访问网页服务器时的场景示意图;
[0082]图4b是本发明实施例提供的个人计算机访问网页服务器的流程图;
[0083]图5a是本发明实施例提供的云桌面用户A访问主机外网站的场景示意图;
[0084]图5b是本发明实施例提供的云桌面用户A访问主机外网站的流程图;
[0085]图6是本发明实施例虚拟机的数据交换装置的结构示意图;
[0086]图7是本发明实施例另一虚拟机的数据交换装置的结构示意图;
[0087]图8a是本发明实施例提供的物理主机的结构示意图;
[0088]图8b是本发明实施例提供的物理主机的另一结构示意图;
[0089]图9是本发明实施例提供的物理主机的再一结构示意图;
[0090]图10是本发明实施例提供的通信系统的结构示意图。【具体实施方式】
[0091]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0092]为了方便理解本发明实施例,首先在此介绍本发明实施例描述中会引入的几个要素。
[0093]媒体接入层(MAC, Media Access Control)位址:硬件位址,用来定义网络设备的位置,一个网卡会有一个全球唯一固定的MAC地址。
[0094]主机(Host):也叫宿主机,是虚拟机所在的主机,亦称为物理主机。
[0095]EthO/本地连接:linux/windows系统中显示网卡的名称。
[0096]桥(Bridge):—个在linux kernel (Iinux内核)里用来模拟交换机的模块。
[0097]网卡(NIC, Network Interface Card),包括虚拟网卡和物理网卡。
[0098]虚拟网卡(virtual nic):在主机里模拟出的一个网卡用来给虚拟机提供网络能力,本身没有对主机外的数据收发能力,需要借助于物理网卡;一般虚拟网卡可以分为前端虚拟网卡和后端虚拟网卡,在本发明实施例中,虚拟网卡主要指的是后端虚拟网卡。
[0099]SR-1OV (Single Root 1/0 Virtualization):单根 1/0 虚拟技术,在一个设备上模拟出多个虚拟硬件以便直接分配给虚拟机,避免了软件模拟的开销。
[0100]VF (virtual function):SR-1OV设备模拟出来的虚拟设备。
[0101]树协议(STP, Spanning Tree Protocol):生成树协议,通过阻断冗余链路,使一个有回路的桥接网络修剪成一个无回路的树形拓扑结构,防止二层网络的广播风暴的产生。
[0102]MAC地址学习(Mac-learning),通过学习每一个进入交换机的报文生成转发所依据的mac-port表,是传统交换机工作的基本原理。
[0103]本发明实施例提供一种虚拟机的数据交换方法、装置和系统。以下分别进行详细说明。
[0104]实施例一、
[0105]本发明实施例站在物理主机内的虚拟机发送数据的角度进行描述,本发明实施例中的物理主机可以是物理服务器等。
[0106]一种虚拟机的数据交换方法,包括:获取物理主机内需要发送给目的节点的数据,根据该数据中携带的目的节点的MAC地址确定目的节点为本物理主机内的节点还是本物理主机外的节点,若为本物理主机内的节点,则确定目的虚拟网卡接口,通过该目的虚拟网卡接口对应的目的虚拟网卡将该数据发给对应的目的虚拟机;若为本物理主机外的节点,则确定物理网卡接口(out_p0rt),通过该物理网卡接口对应的物理网卡将该数据发送至该物理主机外。
[0107]如图1所示,具体流程可以如下:
[0108]101、获取物理主机内需要发送给目的节点的数据,该数据中携带目的节点的MAC地址。
[0109]其中,该目的节点可以是本物理主机内的节点,简称主机内节点,比如虚拟机等,也可以是本物理主机外的节点,简称主机外节点,比如主机外的某个设备(比如其他的物理主机等),等等。
[0110]102、根据步骤101中获取到的数据确定目的节点为主机内节点还是主机外节点,若为主机内节点,则执行步骤103,若为主机外节点,则执行步骤104。
[0111]例如,具体可以将步骤101中获取到的数据发送给物理主机内的后端虚拟网卡(NIC, Network Interface Card),由该后端虚拟网卡将该数据发送给位于物理主机内的交换模块(需要说明的是,这里的交换模块处于物理主机的内核空间中),由交换模块根据该数据确定目的节点为主机内节点还是主机外节点,若为主机内节点,则执行步骤103,若为主机外节点,则执行步骤104。
[0112]其中,步骤“根据该数据确定目的节点为主机内节点还是主机外节点”具体可以采用如下任意一种方式来实现:
[0113]确定第一映射表中是否存在该数据中携带的目的节点的MAC地址,若是,则确定目的节点为主机内节点;若否,则确定目的节点为主机外节点。
[0114]或者,
[0115]根据该数据中携带的目的节点的MAC地址从第一映射表中查找与该MAC地址对应的虚拟网卡接口,若查找到与该MAC地址对应的虚拟网卡接口,则确定目的节点为主机内节点;若查找不到与该MAC地址对应的虚拟网卡接口,则确定目的节点为主机外节点。
[0116]其中,第一映射表可以包括MAC地址和虚拟网卡接口(in_port)的对应关系等信息,比如该第一映射表具体可以为mac-port表。
[0117]需说明的是,虽然该交换模块与现有的桥(Bridge)类似,都维护一个映射表,比如mac-port表,但是该交换模块与现在的Bridge并不同,现有的Bridge需要逐包进行媒体接入层地址学习(Mac-learning),而该第一映射表中的虚拟网卡接口在后端虚拟网卡接口接入主机时生成,并在后端虚拟网卡移除时删除,可以不进行MAC地址学习,也就是说,该第一映射表只在后端虚拟网卡加入或移除时才变化,而无需逐包进行MAC地址学习。
[0118]其中,MAC地址学习,指的是通过学习每一个进入交换机的报文生成转发所依据的第一映射表,比如mac-port表,是传统交换机工作的基本原理。
[0119]相应的,本发明实施例的该虚拟机的数据交换方法还可以包括:
[0120]检测到后端虚拟网卡接入本物理主机时,生成对应的虚拟网卡接口,并在该第一映射表中添加对应于指定的MAC地址的该虚拟网卡接口(比如,在生成对应的虚拟网卡接口时,可以为该生成的虚拟网卡接口指定一个MAC地址,并将该MAC和生成的虚拟网卡接口的对应关系记录在第一映射表中);以及,检测到该后端虚拟网卡从本物理主机上移除时,在该第一映射表中删除对应于该指定的MAC地址的该虚拟网卡接口,即删除该移除的后端虚拟网卡之前接入该物理主机时生成的虚拟网卡接口和该虚拟网卡接口对应的MAC地址。
[0121]103、若在步骤102中确定目的节点为主机内节点,则确定目的虚拟网卡接口,通过该目的虚拟网卡接口对应的目的虚拟网卡将该数据发给对应的目的虚拟机;例如,具体可以如下:
[0122]如果在步骤102中,是通过“第一映射表中是否存在目的节点的MAC地址”来确定目的节点是主机内的节点还是主机外节点的,则此时,可以根据该数据中携带的目的节点的MAC地址从第一映射表中查找与该MAC地址对应的虚拟网卡接口,在本发明实施例中,称为目的虚拟网卡接口,然后根据该目的虚拟网卡接口对应的目的虚拟网卡将所述数据发给对应的目的虚拟机。
[0123]而如果在步骤102中,是通过“从第一映射表中是否能查找到与该MAC地址对应的虚拟网卡接口 ”来确定目的节点是主机内的节点还是主机外节点的,则此时,可以直接根据查找到的虚拟网卡接口对应的虚拟网卡将该数据发给对应的目的虚拟机;即此时,确定目的虚拟网卡接口具体为:
[0124]确定该查找到的与该MAC地址对应的虚拟网卡接口为目的虚拟网卡接口。
[0125]104、若在步骤102中确定目的节点为主机外节点,则确定物理网卡接口(指目的物理网卡接口),通过该物理网卡接口对应的物理网卡将该数据发送至物理主机外。例如,具体可以如下:
[0126]获取接收该数据时所采用的虚拟网卡接口,在本发明实施例中,称为源虚拟网卡接口,根据所述接收该数据时所采用的虚拟网卡接口从第二映射表中查找得到与该虚拟网卡接口对应的物理网卡接口,比如,可以通过查找第二映射表获取该虚拟网卡接口对应的物理网卡接口,然后通过该物理网卡接口对应的物理网卡将该数据发送至该物理主机外。
[0127]其中,第二映射表可以包括虚拟网卡接口和物理网卡接口的对应关系。其中,虚拟网卡接口和物理网卡接口可以是一对一的关系,也可以是多对一的关系,也就是说,同一个物理网卡接口可以对应多个虚拟网卡接口。
[0128]需说明的是,其中,源虚拟网卡接口指的是接收数据时所采用的虚拟网卡接口,而目的虚拟网卡接口指的是通过查找第一映射表所获取到的与该数据中携带的目的节点(t匕如目的虚拟机)的MAC地址所对应的虚拟网卡接口,应当理解的是,通过该虚拟网卡接口接收数据,那这个虚拟网卡接口为源虚拟网卡接口 ;通过该虚拟网卡接口发送数据,那这个虚拟网卡接口为目的虚拟网卡接口,该源虚拟网卡接口和目的虚拟网卡接口可以是相同的接口,也可以是不同的接口。应当理解的是,在实际应用中,网卡(包括物理网卡和虚拟网卡)及网卡接口(包括物理网卡接口和虚拟网卡接口)都是双向的,当针对某个具体的报文(即数据)才有源网卡接口与目的网卡接口(比如目的物理网卡接口或目的虚拟网卡接口等,其中,为了描述方便,目的物理网卡接口在本发明实施例中简称为物理网卡接口)一说,例如,当通过该网卡接口接收上行数据,则该接收上行数据的网卡接口可以称为源网卡接口,具体的,如果该网卡接口为物理网卡接口,则此时,该源网卡接口称为源物理网卡接口;而如果该网卡接口为虚拟网卡接口,则该源网卡接口称为源虚拟网卡接口。又例如,当通过该网卡接口发送下行数据,则该发送下行数据的网卡接口可以称为目的网卡接口,具体的,如果该网卡接口为物理网卡接口,则此时,该目的网卡接口称为目的物理网卡接口 ;而如果该网卡接口为虚拟网卡接口,则该目的网卡接口称为目的虚拟网卡接口等等,在此不再赘述。
[0129]此外,还需说明的是,物理网卡接口在物理网卡接入物理主机时生成,并在物理网卡从物理主机移除时删除。另外,在虚拟网卡接口和物理网卡接口建立对应关系(或称为映射关系)时,后端虚拟网卡的MAC地址也被下发到物理网卡接口对应的物理网卡的单播列表中,以供该物理网卡在接收数据时可以对数据进行过滤。
[0130]由上可知,本发明实施例在进行虚拟机的数据交换时,对主机内的虚拟机之间的通信,以及主机内的虚拟机与主机外设备之间的通信进行区分,若为主机内的虚拟机之间的通信,则不需要经过物理网卡,而是直接确定目的虚拟网卡接口,然后通过目的虚拟网卡接口对应的目的虚拟网卡与目的虚拟机进行通信,也就是说,此时只是虚拟机间的内容拷贝,因此不会浪费PCI总线带宽,可以提高数据交换效率,也不会影响主机内的其他虚拟机与主机外设备间的通信;而若为主机内的虚拟机与主机外设备之间的通信,则确定物理网卡接口,然后通过该物理网卡接口对应的物理网卡与物理主机外设备进行通信,由于与物理主机外设备进行通信时,都需要经过物理网卡,所以便于对进入物理主机的数据进行控制,比如只要物理网卡不开启混杂模式,那么就可以控制进入物理主机里的数据均为有效数据,减少无效数据的消耗,可以进一步提高数据交换效率。
[0131]此外,由于虚拟机在收发数据时,都需要经过物理主机,所以便于后续在主机内为虚拟机提供进一步的功能,比如可以在主机内为虚拟机提供ACL和流控制功能。也就是说,该方案可以在不降低其性能和灵活性的前提下,提高数据交换效率,一定程度上消除主机内虚拟机间的通信对主机内其他虚拟机与主机外设备间的通信的影响、以及便于后续在主机内为虚拟机提供进一步的功能,比如提供ACL和流控制功能。
[0132]实施例二、
[0133]实施例一描述的主要是虚拟机的数据交换方法中发送流程,此外,该虚拟机的数据交换方法还可以包括接收流程,换言之,即站在同一物理主机内的虚拟机接收主机外的数据的角度进行描述;即在实施例一的基础上,该虚拟机的数据交换方法,还可以包括:通过物理网卡接收来自物理主机外的数据,根据该来自物理主机外的数据中携带的目的节点的MAC地址确定对应目的虚拟网卡接口,通过所述目的虚拟网卡接口对应的目的虚拟网卡将该来自物理主机外的数据发送给对应的目的虚拟机。
[0134]如图2所示,具体流程可以如下:
[0135]201、通过物理网卡接收来自物理主机外的数据,该来自物理主机外的数据中携带目的节点的MAC地址。
[0136]202、根据该来自物理主机外的数据中携带的目的节点的MAC地址确定对应目的虚拟网卡接口 ;例如,具体可以如下:
[0137]根据该来自物理主机外的数据中携带的目的节点的MAC地址,从第一映射表中查找与该MAC地址对应的虚拟网卡接口。
[0138]其中,第一映射表可以包括MAC地址和虚拟网卡接口(in_port)的对应关系等信息,比如该第一映射表具体可以为mac-port表。
[0139]其中,该第一映射表中的虚拟网卡接口在后端虚拟网卡接入主机时生成,并在后端虚拟网卡移除时删除,可以不进行MAC地址学习(Mac-1 earning),该第一映射表只在后端虚拟网卡加入或移除时才变化,而无需逐包进行MAC学习。
[0140]此外,如果确定第一映射表中不存在该来自物理主机外的数据中携带的目的节点的MAC地址,则可以直接丢弃该来自物理主机外的数据。即在步骤“通过物理网卡接收来自物理主机外的数据”(即步骤101)之后,该虚拟机的数据交换方法还可以包括:
[0141]根据该来自物理主机外的数据中携带的目的节点的MAC地址,从第一映射表中查找不到与该MAC地址对应的虚拟网卡接口时,丢弃该来自物理主机外的数据。
[0142]需说明的是,正如实施例一种所描述的,在虚拟网卡接口和物理网卡接口建立对应关系(或称为映射关系)时,后端虚拟网卡的MAC地址也可以被下发到物理网卡接口对应的物理网卡的单播列表中,这样,在本步骤(即步骤202)中,物理网卡在接收数据时就可以利用该列表对数据进行过滤,从而使得进入物理主机内的数据均为有效数据,减少无效数据的消耗。
[0143]203、通过所述目的虚拟网卡接口对应的目的虚拟网卡将该来自物理主机外的数据发送给对应的目的虚拟机。例如,具体可以如下:
[0144]通过步骤202中查找到的MAC地址对应的虚拟网卡接口将该来自物理主机外的数据发送给对应的目的虚拟机。
[0145]由上可知,本发明实施例在接收来自主机外的数据时,均需要通过物理网卡,所以可以方便地对进入物理主机的数据进行控制,比如只要物理网卡不开启混杂模式,那么就可以控制进入物理主机里的数据均为有效数据,减少无效数据的消耗,可以提高数据交换效率;此外,由于虚拟机在接收数据时,都需要经过物理主机,所以可以在主机内为虚拟机提供ACL和流控制功能。也就是说,该方案可以在不降低其性能和灵活性的前提下,提高数据交换效率,以及实现在主机内为虚拟机提供ACL和流控制功能。
[0146]根据实施例一和二所描述的方法,以下将在实施三、四和五中举例作进一步详细说明。
[0147]实施例三、
[0148]在本实施例中,将以物理主机为例进行详细说明。
[0149]参见图3a,该图3a为本发明实施例所提供的虚拟机的数据交换方法的场景示意图。
[0150]本发明实施例所提供的虚拟机的数据交换方法的场景包括多个物理主机,其中每个物理主机包括硬件层、该硬件层之上的内核空间和该内核空间之上的用户空间,其中所述用户空间包括一个或多个虚拟机,所述硬件层包括网络连接设备(即物理网卡),处理器以及存储器(图中未示意)等等,所述内核空间可以理解为系统管理层,所述内核空间包括后端虚拟网卡(图中未示意)和交换模块;以及,应当理解的是,每个虚拟机可以包括虚拟硬件(例如虚拟处理器、虚拟网卡等)、所述虚拟硬件之上的客户端操作系统,该客户端操作系统之上的应用程序,其中该客户端操作系统可以包括驱动,例如虚拟网卡驱动;以及,物理主机可以通过物理网卡与物理交换机(Physical Switch)连接,从而实现与英特网(Internet)的连接,以及实现与系统中的其他物理主机进行通信。
[0151]参见图3b,图3b为物理主机的一个结构示意图(为了更好地描述各部件之间的关系,除了物理主机之外,图中还给物理交换机和英特网),其中:
[0152]1、针对虚拟机发送数据:
[0153]虚拟机:用于发送数据(例如报文);具体的,虚拟机I中的应用发送报文,该报文经过虚拟机I中的客户端操作系统(可以理解为虚拟机I的内核)处理后,被传递给虚拟机I中的虚拟网卡驱动,并由该虚拟网卡驱动将处理后的数据传递给后端虚拟网卡I ;
[0154]后端虚拟网卡:用于将收到的数据,传递给交换模块;换言之,数据经后端虚拟网卡进入交换模块处理;
[0155]交换模块:可以称为map_switch,用于接收后端虚拟网卡发送的数据,根据该数据中携带的目的节点的MAC地址确定目的节点为主机内节点还是主机外节点;若为主机内节点,则确定目的虚拟网卡接口,通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述数据发给对应的目的虚拟机;若为主机外节点,则确定物理网卡接口,通过该物理网卡接口将该数据发送给该物理网卡接口对应的物理网卡。
[0156]物理网卡:用于将该数据发送至物理主机外。
[0157]2、此外,针对虚拟机接收数据:
[0158]物理网卡:还用于接收来自本物理主机外的数据,并将该数据传递给交换模块;
[0159]交换模块:还用于接收物理网卡发送的来自物理主机外的数据,根据该数据中携带的目的节点的MAC地址确定对应目的虚拟网卡接口,通过所述目的虚拟网卡接口将数据传递给对应的目的虚拟网卡(即某个后端虚拟网卡,例如后端虚拟网卡I);
[0160]后端虚拟网卡:将数据传递给对应的目的虚拟机,具体的,后端虚拟网卡I将数据传递给对应的目的虚拟机中的该虚拟网卡驱动,由目的虚拟机中的该虚拟网卡驱动传递给目的虚拟机中的客户端操作系统,进而由目的虚拟机中的客户端操作系统传递给目的虚拟机中的对应的应用处理。
[0161]其中,该物理网卡具体可以采用SR-1OV物理网卡,从而可以充分利用SR-1OV物理网卡的多队列网卡的多通路特性,以及网卡自带的二层交换(L2SWitch)逻辑功能,在整体上提闻物理主机的性能。
[0162]基于上述的物理主机的结构示意图,以下将分别从发送流程和接收流程两方面对其数据交换方法进行详细说明。
[0163](一)发送流程;
[0164]如图3c所示,一种虚拟机的数据交换方法,具体流程可以如下:
[0165]A301、获取物理主机内需要发送给目的节点的数据,并将该数据发送给物理主机内的后端虚拟网卡。具体可以如下:
[0166]当虚拟机的应用程序开始发送数据时,获取该数据,并经过虚拟机的内核处理,然后将该数据提交给虚拟机内的虚拟网卡驱动,由虚拟网卡驱动将该数据发送给物理主机内的后端虚拟网卡。
[0167]其中,该目的节点可以是本物理主机内的节点,简称主机内节点,比如虚拟机等,也可以是本物理主机外的节点,简称主机外节点,比如主机外的某个设备,等等。
[0168]A302、后端虚拟网卡将该数据发送给位于物理主机内的交换模块。
[0169]A303、交换模块在接收到该数据后,确定第一映射表中是否存在该数据中携带的目的节点的MAC地址,若确定存在该数据中携带的目的节点的MAC地址,则确定目的节点为主机内节点,即表明当前的通信为主机内通信,于是执行步骤A304 ;若确定不存在该数据中携带的目的节点的MAC地址,则确定目的节点为主机外节点,即表明当前的通信为主机外通信,于是执行步骤A305。
[0170]其中,第一映射表可以包括MAC地址和虚拟网卡接口(in_port)的对应关系等信息,比如该第一映射表具体可以为mac-port表。
[0171]需说明的是,该第一映射表中的虚拟网卡接口在后端虚拟网卡接入主机时生成,并在后端虚拟网卡移除时删除,可以不进行MAC地址学习(Mac-learning),该第一映射表只在后端虚拟网卡加入或移除时才变化,而无需逐包进行MAC地址学习。该第一映射表由交换模块进行维护。
[0172]还需说明的是,除了采用上述方法来确定目的节点为主机内节点还是主机外节点之外,还可以采用如下方法来进行判断:[0173]根据该数据中携带的目的节点的MAC地址从第一映射表中查找与该MAC地址对应的虚拟网卡接口,若查找到与该MAC地址对应的虚拟网卡接口,则确定目的节点为主机内节点,于是执行步骤A304 ;若查找不到与该MAC地址对应的虚拟网卡接口,则确定目的节点为主机外节点,于是执行步骤A305。
[0174]A304、若目的节点为主机内节点,则交换模块确定目的虚拟网卡接口,并通过该目的虚拟网卡接口对应的目的虚拟网卡将该数据发给对应的目的虚拟机,流程结束;例如,具体可以如下:
[0175]交换模块根据该数据中携带的目的节点的MAC地址从第一映射表中查找与该MAC地址对应的虚拟网卡接口(in_port),即目的虚拟网卡接口,然后通过该目的虚拟网卡接口对应的目的虚拟网卡将该数据发给对应的目的虚拟机。
[0176]此外,如果在步骤A303中,是采用“从第一映射表中是否能查找到与该MAC地址对应的虚拟网卡接口 ”的方法来确定目的节点是主机内的节点还是主机外节点的,则此时,可以直接通过查找到的虚拟网卡接口对应的目的虚拟网卡将该数据发给对应的目的虚拟机。
[0177]A305、若目的节点为主机外节点,则交换模块确定物理网卡接口( out_port),通过该物理网卡接口对应的物理网卡将该数据发送至所述物理主机外,流程结束;比如,具体可以如下:
[0178]交换模块通过查找第二映射表获取该数据的源虚拟网卡接口对应的物理网卡接口,然后通过该物理网卡接口对应的物理网卡将该数据发送至所述物理主机外。
[0179]其中,第二映射表可以包括虚拟网卡接口和物理网卡接口的对应关系。其中,虚拟网卡接口和物理网卡接口可以是一对一的关系,也可以是多对一的关系,也就是说,同一个物理网卡接口可以对应多个虚拟网卡接口。
[0180](二)接收流程;
[0181]如图3d所示,一种虚拟机的数据交换方法,具体流程可以如下:
[0182]B301、物理网卡接收来自物理主机外的数据。
[0183]需说明的是,可选的,如果在此之前,虚拟机的MAC地址已经下发至物理网卡的单播列表,则此时物理网卡在接收来自物理主机外的数据之后,就可以对这些数据进行过滤,从而剩下目的MAC地址是本物理主机内虚拟机的数据,即有效数据。
[0184]B302、物理网卡将该来自物理主机外的数据发送给交换模块,由交换模块确定第一映射表中是否存在该自物理主机外的数据中携带的目的节点的MAC地址,若存在该自物理主机外的数据中携带的目的节点的MAC地址,获取该MAC地址对应的虚拟网卡接口。例如,具体可以如下:
[0185]经过中断处理,物理网卡将该数据(即该来自物理主机外的数据)经由物理网卡驱动,提交给物理网卡接口(该物理网卡接口位于交换模块上),由物理网卡接口查询第一映射表,若在第一映射表中查找到该数据中携带的目的节点的MAC地址,则获取该MAC地址对应的虚拟网卡接口(即目的虚拟网卡接口)。
[0186]其中,第一映射表可以包括MAC地址和虚拟网卡接口(in_port)的对应关系等信息,比如该第一映射表具体可以为mac-port表。
[0187]需说明的是,该第一映射表中的虚拟网卡接口在后端虚拟网卡接入主机时生成,并在后端虚拟网卡移除时删除,可以不进行MAC地址学习(Mac-learning),该第一映射表只在后端虚拟网卡加入或移除时才变化,而无需逐包进行MAC地址学习。
[0188]此外,如果物理网卡接口确定第一映射表中不存在该来自物理主机外的数据中携带的目的节点的MAC地址,则可以直接丢弃该数据;当然,如果在步骤B301中已经对数据进行过滤,则一般的,进入物理主机的都是有效数据,即都可以在第一映射表中找到相应的MAC地址。
[0189]B303、交换模块通过步骤B302中确定的虚拟网卡接口对应的目的虚拟网卡将该来自物理主机外的数据发送给对应的目的虚拟机。
[0190]例如,具体可以由物理网卡将该来自物理主机外的数据发送给步骤B302中确定的虚拟网卡接口对应的后端虚拟网卡,然后由后端虚拟网卡将该来自物理主机外的数据发送给该目的虚拟机。
[0191]由上可知,本发明实施例在进行虚拟机的数据交换时,对主机内的虚拟机之间的通信,以及主机内的虚拟机与主机外设备之间的通信进行区分,若为主机内的虚拟机之间的通信,则不需要经过物理网卡,而是直接确定目的虚拟网卡接口,然后通过目的虚拟网卡接口对应的目的虚拟网卡与目的虚拟机进行通信,也就是说,此时只是虚拟机间的内容拷贝,因此不会浪费PCI总线带宽,可以提高数据交换效率,也不会影响主机内的其他虚拟机与主机外设备间的通信;而若为主机内的虚拟机与主机外设备之间的通信,则确定物理网卡接口,然后通过该物理网卡接口对应的与物理主机外设备进行通信,由于与物理主机外设备进行通信时,都需要经过物理网卡,所以便于对进入物理主机的数据进行控制,比如只要物理网卡不开启混杂模式,那么就可以控制进入物理主机里的数据均为有效数据,减少无效数据的消耗,可以进一步提高数据交换效率;
[0192]此外,由于虚拟机在收发数据时,都需要经过物理主机,所以可以在主机内为虚拟机提供ACL和流控制功能。也就是说,该方案可以在不降低其性能和灵活性的前提下,提高数据交换效率,一定程度上消除主机内虚拟机间的通信对主机内其他虚拟机与主机外设备间的通信的影响、以及实现在主机内为虚拟机提供ACL和流控制功能。
[0193]实施例四、
[0194]根据实施例三所描述的方法,在本实施例中,将以该物理主机包括三个虚拟机为例进行说明。
[0195]该物理主机的具体介绍可参见实施例三,而本实施例中,三个虚拟机分别为两台网页(web)服务器的虚拟机和一台数据库服务器的虚拟机,即网页服务器A的虚拟机、网页服务器B的虚拟机和数据库服务器的虚拟机,其中,数据库服务器对这两台网页服务器提供服务。为了描述方便,在本实施例中,将网页服务器A的虚拟机简称为网页服务器A,网页服务器B的虚拟机简称为网页服务器B,将数据库服务器的虚拟机简称为数据库服务器。
[0196]两台网页服务器上和数据库服务器的本地连接接口 ethO均通过虚拟网卡接入交换模块,但是,不指定对应的物理网卡接口,而两台网页服务器的本地连接接口 ethl则均通过虚拟网卡接入交换模块,且指定对应的物理网卡接口。即如图4a所示,具体如下:
[0197]网页服务器A的两个本地连接接口 ethO和ethl分别连接虚拟网卡v_nic2和v_nic3,网页服务器B的两个本地连接接口 ethO和ethl分别连接虚拟网卡v_nic4和v_nic5,数据库的本地连接接口 ethO连接虚拟网卡v_nicl ;虚拟网卡v_nicl、v_nic2、v_nic3、v_nic4和v_nic5分别通过虚拟网卡接口 I (in_portl)、虚拟网卡接口 2 (in_port2)、虚拟网卡接口 3 (in_port3)、虚拟网卡接口 4 (in_port4)和虚拟网卡接口 5 (in_port5)接入交换模块。其中,虚拟网卡接口 3和虚拟网卡接口 5分别指定有对应的物理网卡接口,即虚拟网卡接口 3对应物理网卡接口 I (out_portl),虚拟网卡接口 5对应物理网卡接口 2 (out_port2),并且,将虚拟网卡接口 3对应的虚拟网卡的MAC地址和虚拟网卡接口 5对应的虚拟网卡的MAC地址分别下发给对应的物理网卡,比如该物理网卡具体可以为“SR-1OV”网卡,则此时具体可以下发给各个VF,其中,物理网卡接口 I对应VF2,物理网卡接口 2对应VF3。这样,所有物理主机内部的虚拟机之间的数据通信就可以都不经过物理网卡,而网页服务器在域物理主机外的设备进行通信时,也可以将数据交给各自的VF进行发送。此外,外部用户访问该物理主机时,也可以先在物理网卡处进行数据过滤后分流至VF2和VF3,然后在物理网卡接口处直接发给对应的虚拟机。
[0198]以个人计算机向网页服务器A发送数据为例,如图4b所示,该虚拟机的数据交换方法的具体流程可以如下:
[0199]401、个人计算机发送数据,经由英特网发送至物理交换机。
[0200]402、物理交换机将该数据发送给物理主机上的物理网卡,比如“SR-10V”网卡。
[0201]403、物理网卡对该数据进行内部交换,并将该数据发送给的VF2。
[0202]404、VF2的网卡驱动经过中断处理后,将该数据交给对应的物理网卡接口 I。
[0203]405、物理网卡接口 I查询第一映射表,发现目的节点的MAC地址是虚拟网卡接口3,于是将该数据发给虚拟网卡接口 3。
[0204]406、由于虚拟网卡接口 3对应的虚拟网卡为v_nic3,而v_nic3对应的虚拟机是网页服务器A,因此,虚拟网卡接口 3将该数据发送给网页服务器A,由网页服务器A中的应用程序进行处理。
[0205]由上可知,本发明实施例在接收来自物理主机外的数据时,均需要通过物理网卡(包括VF),所以可以方便地对进入物理主机的数据进行控制,比如只要物理网卡不开启混杂模式,那么就可以控制进入物理主机里的数据均为有效数据,减少无效数据的消耗,可以提高数据交换效率;此外,由于虚拟机在接收数据时,都需要经过物理主机,所以可以在主机内为虚拟机提供ACL和流控制功能。也就是说,该方案可以在不降低其性能和灵活性的前提下,提高数据交换效率,以及实现在主机内为虚拟机提供ACL和流控制功能。
[0206]实施例五、
[0207]与实施例四相同的是,在本实施例中,同样以该物理主机包括三个虚拟机为例进行说明。该物理主机的具体介绍可参见实施例三。与实施例四不同的是,在本实施例中,三个虚拟机分别为桌面云用户A的虚拟机、桌面云用户B的虚拟机和桌面云用户C的虚拟机,简称为桌面云用户A、桌面云用户B和桌面云用户C。
[0208]桌面云用户A的本地连接接口、桌面云用户B的本地连接接口、以及桌面云用户C的本地连接接口 ethO均通过虚拟网卡接入交换模块,且指定对应的物理网卡接口,而桌面云用户C的本地连接接口 ethl在通过虚拟网卡接入交换模块后,不指定对应的物理网卡接口,即如图5a所示,具体如下:
[0209]桌面云用户A的本地连接接口连接虚拟网卡v_nicl,桌面云用户B的本地连接接口连接虚拟网卡v_nic2,桌面云用户C的本地连接接口 ethO连接虚拟网卡v_nic3,桌面云用户C的本地连接接口 ethl连接虚拟网卡v_nic4 ;其中,虚拟网卡v_nicl、v_nic2、v_nic3和v_nic4分别通过虚拟网卡接口 I (in_portl)、虚拟网卡接口 2 (in_port2)、虚拟网卡接口 3 (in_port3)和虚拟网卡接口 4 (in_port4)接入交换模块。其中,虚拟网卡接口 1、虚拟网卡接口 2和虚拟网卡接口 3分别指定有对应的物理网卡接口,即虚拟网卡接口 I和虚拟网卡接口 2均对应物理网卡接口 I (out_portl),而虚拟网卡接口 3对应物理网卡接口 2(out_port2)。虚拟网卡接口 4不指定对应的物理网卡接口。
[0210]以云桌面用户A发出访问网站的数据为例,如图5b所示,该虚拟机的数据交换方法的具体流程可以如下:
[0211]501、桌面云用户A发出访问网站的数据,经由内核处理后,交给桌面云用户A的虚拟机内的虚拟网卡驱动。
[0212]502、虚拟机内的虚拟网卡将该数据发送给物理主机内的后端虚拟网+v_nicl。
[0213]503、v_nicl将该数据通过虚拟网卡接口 I发送给位于物理主机内的交换模块。
[0214]504、交换模块在接收到该数据后,查询第一映射表,确定第一映射表中是否存在该数据中携带的目的节点的MAC地址,由于该数据时发送给主机外的设备的,因此此时在第一映射表中查询不到该目的节点的MAC地址,于是,执行步骤505。
[0215]或者,交换模块在接收到该数据后,也可以根据该数据中携带的目的节点的MAC地址从第一映射表中查找与该MAC地址对应的虚拟网卡接口,由于该数据时发送给主机外的设备的,因此此时在第一映射表中查询不到该目的节点的MAC地址对应的虚拟网卡接口,于是执行步骤505。
[0216]505、交换模块查询第二映射表,获取虚拟网卡接口 I对应的物理网卡接口,即物理网卡接口 1,然后将该数据发送给物理网卡接口 I。
[0217]506、物理网卡接口 I将该数据提交给物理网卡1,并由物理网卡将该数据发送给物理交换机。
[0218]507、物理交换机经由英特网,将该数据发送给相应的网站。
[0219]由上可知,本发明实施例在进行虚拟机的数据交换时,对主机内的虚拟机之间的通信,以及主机内的虚拟机与主机外设备之间的通信进行区分,若为主机内的虚拟机之间的通信,则不需要经过物理网卡,而是直接确定目的虚拟网卡接口,然后通过目的虚拟网卡接口对应的目的虚拟网卡与目的虚拟机进行通信,也就是说,此时只是虚拟机间的内容拷贝,因此不会浪费PCI总线带宽,可以提高数据交换效率,也不会影响主机内的其他虚拟机与主机外设备间的通信;而若为主机内的虚拟机与主机外设备之间的通信,则确定物理网卡接口,然后通过该物理网卡接口对应的物理网卡与物理主机外设备进行通信,由于与物理主机外设备进行通信时,都需要经过物理网卡,所以便于对进入物理主机的数据进行控制,比如只要物理网卡不开启混杂模式,那么就可以控制进入物理主机里的数据均为有效数据,减少无效数据的消耗,可以进一步提高数据交换效率;
[0220]此外,由于虚拟机在收发数据时,都需要经过物理主机,所以便于后续在主机内为虚拟机提供进一步的功能,比如可以在主机内为虚拟机提供ACL和流控制功能。也就是说,该方案可以在不降低其性能和灵活性的前提下,提高数据交换效率,一定程度上消除主机内虚拟机间的通信对主机内其他虚拟机与主机外设备间的通信的影响、以及便于后续在主机内为虚拟机提供进一步的功能,比如提供ACL和流控制功能。
[0221]实施例六、[0222]为了更好地实施以上方法,本发明实施例还提供一种虚拟机的数据交换装置,如图6所示,该虚拟机的数据交换装置包括获取单元601、判断单元602、第一处理单元603和第二处理单元604 ;
[0223]获取单元601,用于获取物理主机内需要发送给目的节点的数据,该数据携带目的节点的MAC地址;
[0224]其中,该目的节点可以是本物理主机内的节点,简称主机内节点,比如虚拟机等,也可以是本物理主机外的节点,简称主机外节点,比如主机外的某个设备,等等。
[0225]判断单元602,用于根据获取单元601获取到的数据中携带的目的节点的MAC地址确定目的节点为主机内节点还是主机外节点;
[0226]第一处理单元603,用于在判断单元602确定目的节点为主机内节点时,确定目的虚拟网卡接口,通过该目的虚拟网卡接口对应的目的虚拟网卡将该数据发给对应的目的虚拟机;
[0227]第二处理单元604,用于在判断单元602确定目的节点为主机外节点时,确定物理网卡接口,通过该物理网卡接口对应的物理网卡将该数据发送至该物理主机外。
[0228]其中,判断单元602,具体可以用于将该数据发送给物理主机内的后端虚拟网卡,由该后端虚拟网卡将该数据发送给位于物理主机内的交换模块,并由交换模块根据该数据确定目的节点为主机内节点还是主机外节点;
[0229]则此时,第一处理单元603,具体可以用于在判断单元602确定目的节点为主机内节点时,由交换模块确定目的虚拟网卡接口,并由交换模块通过该目的虚拟网卡接口对应的目的虚拟网卡将该数据发给对应的目的虚拟机;
[0230]第二处理单元604,具体可以用于在判断单元602确定目的节点为主机外节点时,由交换模块确定物理网卡接口,通过该物理网卡接口对应的物理网卡将该数据发送至所述物理主机外。
[0231]例如,判断单元602,具体可以用于确定第一映射表中是否存在该数据中携带的目的节点的MAC地址,若存在该数据中携带的目的节点的MAC地址,则确定目的节点为主机内节点,若不存在该数据中携带的目的节点的MAC地址,则确定目的节点为主机外节点。
[0232]则此时,第一处理单元603,具体可以用于在判断单元602确定目的节点为主机内节点时,根据该数据中携带的目的节点的MAC地址从第一映射表中查找与该MAC地址对应的虚拟网卡接口,即目的虚拟网卡接口,通过该目的虚拟网卡接口对应的虚拟网卡将该数据发给对应的目的虚拟机。
[0233]或者,又例如,判断单元602,具体可以用于根据该数据中携带的目的节点的MAC地址从第一映射表中查找与该MAC地址对应的虚拟网卡接口 ;若查找到与该MAC地址对应的虚拟网卡接口,则确定目的节点为主机内节点;若查找不到与该MAC地址对应的虚拟网卡接口,则确定目的节点为主机外节点。
[0234]则此时,所述第一处理单元603具体可以在判断单元602确定目的节点为本物理主机内的节点时,确定所述查找到的与所述MAC地址对应的虚拟网卡接口为目的虚拟网卡接口。即:
[0235]所述第一处理单元603,具体可以用于在判断单元602确定目的节点为主机内节点时,确定所述查找到的与所述MAC地址对应的虚拟网卡接口为目的虚拟网卡接口,通过该目的虚拟网卡接口对应的目的虚拟网卡将该数据发给对应的目的虚拟机。
[0236]其中,第一映射表可以包括MAC地址和虚拟网卡接口(in_port)的对应关系等信息,比如该第一映射表具体可以为mac-port表。
[0237]需说明的是,该第一映射表中的虚拟网卡接口在后端虚拟网卡接口接入主机时生成,并在后端虚拟网卡移除时删除,可以不进行MAC地址学习(Mac-learning),该第一映射表只在后端虚拟网卡加入或移除时才变化,而无需逐包进行MAC地址学习。也就是说,该虚拟机的数据交换装置还可以包括检测单元;
[0238]检测单元,用于检测到后端虚拟网卡接入本物理主机时,生成对应的虚拟网卡接口,并在该第一映射表中添加对应于指定的MAC地址的所述虚拟网卡接口 ;以及,检测到该后端虚拟网卡从本物理主机上移除时,在第一映射表中删除对应于该指定的MAC地址的所述虚拟网卡接口。
[0239]可选的,第二处理单元604,具体可以用于在判断单元602确定目的节点为主机外节点时,获取所述数据的源虚拟网卡接口,根据该源虚拟网卡接口从第二映射表中查找得到与该源虚拟网卡接口对应的物理网卡接口,通过该物理网卡接口对应的物理网卡将该数据发送至所述物理主机外。
[0240]其中,第二映射表可以包括虚拟网卡接口和物理网卡接口的对应关系。其中,虚拟网卡接口和物理网卡接口可以是一对一的关系,也可以是多对一的关系,也就是说,同一个物理网卡接口可以对应多个虚拟网卡接口。
[0241]此外,需说明的是,物理网卡接口在物理网卡接入物理主机时生成,并在物理网卡从物理主机移除时删除。另外,在虚拟网卡接口和物理网卡接口建立对应关系(或称为映射关系)时,后端虚拟网卡的MAC地址也被下发到物理网卡接口对应的物理网卡的单播列表中,以供该物理网卡在接收数据时可以对数据进行过滤。
[0242]具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,例如,该虚拟机的数据交换装置具体可以为物理主机等设备,而该物理主机的结构可以参考前述描述内容,这里不再赘述。以上各个单元的具体实施可参见前面的实施例,在此不再赘述。
[0243]由上可知,本发明实施例的虚拟机的数据交换装置在进行虚拟机的数据交换时,对主机内的虚拟机之间的通信,以及主机内的虚拟机与主机外设备之间的通信进行区分,若为主机内的虚拟机之间的通信,则不需要经过物理网卡,而是由第一处理单元603直接确定目的虚拟网卡接口,然后通过目的虚拟网卡接口对应的目的虚拟网卡接口与目的虚拟机进行通信,也就是说,此时只是虚拟机间的内容拷贝,因此不会浪费PCI总线带宽,可以提高数据交换效率,也不会影响其他虚拟机与主机外设备间的通信;而若为主机内的虚拟机与主机外设备之间的通信,则需要由第二处理单元604确定物理网卡接口,然后通过该物理网卡接口对应的物理网卡与物理主机外设备进行通信,由于与物理主机外设备进行通信时,都需要经过物理网卡,所以便于对进入物理主机的数据进行控制,比如只要物理网卡不开启混杂模式,那么就可以控制进入物理主机里的数据均为有效数据,减少无效数据的消耗,可以进一步提闻数据交换效率;
[0244]此外,由于虚拟机在收发数据时,都需要经过物理主机,所以可以在主机内为虚拟机提供ACL和流控制功能。也就是说,该方案可以在不降低其性能和灵活性的前提下,提高数据交换效率,一定程度上消除主机内虚拟机间的通信对主机内其他虚拟机与主机外设备间的通信的影响、以及实现在主机内为虚拟机提供ACL和流控制功能。
[0245]实施例七、
[0246]该虚拟机的数据交换装置除了可以用于发送数据之外,还可以用于接收来自物理主机外的数据,机在实施例六的基础上,如图7所示,该虚拟机的数据交换装置还可以包括接收单元701、确定单元702和发送单元703 ;
[0247]接收单元701,用于通过物理网卡接收来自物理主机外的数据,该来自物理主机外的数据携带目的节点的MAC地址;
[0248]确定单元702,用于根据接收单元701接收到的数据中携带的目的节点的MAC地址确定对应目的虚拟网卡接口;
[0249]发送单元703,用于将通过目的虚拟网卡接口对应的虚拟网卡该数据发送给对应的目的虚拟机。
[0250]比如,具体可以利用该查找到的虚拟网卡接口确定对应的后端虚拟网卡,通过确定的后端虚拟网卡将该数据发送给该目的虚拟机。
[0251 ] 其中,确定单元702,具体可以用于根据所述来自物理主机外的数据中携带的目的节点的MAC地址从第一映射表中查找与该MAC地址对应的虚拟网卡接口,即目的虚拟网卡接口 ;
[0252]其中,第一映射表可以包括MAC地址和虚拟网卡接口(in_port)的对应关系等信息,比如该第一映射表具体可以为mac-port表。
[0253]其中,该第一映射表中的虚拟网卡接口在后端虚拟网卡接入主机时生成,并在后端虚拟网卡移除时删除,可以不进行MAC地址学习(Mac-1 earning),该第一映射表只在后端虚拟网卡加入或移除时才变化,而无需逐包进行MAC地址学习。
[0254]此外,如果物理网卡确定第一映射表中不存在该数据中携带的目的节点的MAC地址,则可以直接丢弃该数据。即:
[0255]确定单元702,还可以用于在根据该来自物理主机外的数据中携带的目的节点的MAC地址,从第一映射表中查找不到与该MAC地址对应的虚拟网卡接口时,丢弃该来自物理主机外的数据。
[0256]具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,例如,该虚拟机的数据交换装置具体可以为物理主机等设备,而该物理主机可以包括处理器、物理网卡和虚拟机等设备,以上各个单元的具体实施可参见前面的实施例,在此不再赘述。
[0257]由上可知,本发明实施例的虚拟机的数据交换装置在接收来自主机外的数据时,均需要通过物理网卡,所以可以方便地对进入物理主机的数据进行控制,比如只要物理网卡不开启混杂模式,那么就可以控制进入物理主机里的数据均为有效数据,减少无效数据的消耗,可以提高数据交换效率;此外,由于虚拟机在接收数据时,都需要经过物理主机,所以可以在主机内为虚拟机提供ACL和流控制功能。也就是说,该方案可以在不降低其性能和灵活性的前提下,提高数据交换效率,以及实现在主机内为虚拟机提供ACL和流控制功倉泛。
[0258]实施例八、[0259]相应的,本发明实施例还提供一种通信系统,如图10所示,该通信系统包括至少两台物理主机,其中所述至少两台物理主机包括第一物理主机1001和第二物理主机1002,其中:
[0260]第一物理主机1001,用于获取本物理主机(即第一物理主机1001)内需要发送给目的节点的数据,该数据携带目的节点的MAC地址,根据该数据中携带的目的节点的MAC地址确定目的节点为本物理主机内节点还是本物理主机外节点;若为本物理主机内节点,则确定目的虚拟网卡接口,通过该目的虚拟网卡接口对应的虚拟网卡将该数据发给对应的目的虚拟机;若为本物理主机外节点,则确定物理网卡接口,通过该物理网卡接口对应的物理网卡将该数据发送至对应的第二物理主机1002。
[0261]第二物理主机1002,用于接收第一物理主机1001发送的数据。
[0262]例如,第一物理主机1001,具体可以用于获取本物理主机(即第一物理主机1001)内需要发送给目的节点的数据,确定第一映射表中是否存在该数据中携带的目的节点的MAC地址,若该第一映射表中存在该数据中携带的目的节点的MAC地址,则确定目的节点为本物理主机(即第一物理主机)内的节点,并根据该数据中携带的目的节点的MAC地址从第一映射表中查找与该MAC地址对应的虚拟网卡接口,即目的虚拟网卡接口,通过该目的虚拟网卡接口对应的虚拟网卡将将该数据发给对应的目的虚拟机;若该第一映射表中不存在该数据中携带的目的节点的MAC地址,则确定目的节点为主机外节点,并确定物理网卡接口,通过该物理网卡接口对应的物理网卡将该数据发送至第二物理主机1002。
[0263]或者,又例如,第一物理主机1001,具体可以用于根据该数据中携带的目的节点的MAC地址从第一映射表中查找与该MAC地址对应的虚拟网卡接口,若查找到与该MAC地址对应的虚拟网卡接口(即目的虚拟网卡接口),则确定目的节点为本物理主机(第一物理主机1001)内的节点,并确定该查找到的与该MAC地址对应的虚拟网卡接口为目的虚拟网卡接口,通过该目的虚拟网卡接口对应的虚拟网卡将该数据发给对应的目的虚拟机;若查找不到与该MAC地址对应的虚拟网卡接口,则确定目的节点为主机外节点,并确定物理网卡接口,通过该物理网卡接口对应的物理网卡将该数据发送至第二物理主机1002。
[0264]其中,第一映射表可以包括MAC地址和虚拟网卡接口的对应关系等信息,比如该第一映射表具体可以为mac-port表。
[0265]可选的,第一物理主机1001,具体可以用于获取该数据的源虚拟网卡接口,根据该数据中携带的源虚拟网卡接口从第二映射表中查找得到与该源虚拟网卡接口对应的物理网卡接口,通过该物理网卡接口对应的物理网卡将该数据发送至第一物理主机1001外。
[0266]其中,第二映射表可以包括虚拟网卡接口和物理网卡接口的对应关系。其中,虚拟网卡接口和物理网卡接口可以是一对一的关系,也可以是多对一的关系,也就是说,同一个物理网卡接口可以对应多个虚拟网卡接口。
[0267]应当理解的是,该第二物理主机1002还可以用于向该第一物理主机发送数据。
[0268]相应的,第一物理主机1001,还可以用于通过物理网卡接收来自第二物理主机1002的数据,该来自第二物理主机1002的数据携带目的节点的MAC地址;根据该来自第二物理主机1002的数据中携带的目的节点的MAC地址确定本物理主机(即第一物理主机1001)内的对应目的虚拟网卡接口 ;通过该目的虚拟网卡接口对应的虚拟网卡将该来自第二物理主机1002的数据发送给对应的目的虚拟机。例如,具体可以如下:[0269]第一物理主机1001,具体可以用于根据该来自第二物理主机1002的数据中携带的目的节点的MAC地址,从第一映射表中查找与该MAC地址对应的虚拟网卡接口,即目的虚拟网卡接口,通过该目的虚拟网卡接口对应的虚拟网卡将该来自第二物理主机1002的数据发送给对应目的虚拟机。
[0270]此外,该第一物理主机1001,还可以用于根据该来自第二物理主机1002的数据中携带的目的节点的MAC地址,从第一映射表中查找不到与该MAC地址对应的虚拟网卡接口时,丢弃该来自第二物理主机1002的数据。
[0271]应当理解的是,在一种实现方式下,本发明实施例提供的任一种虚拟机的数据交换装置集成在所述物理主机内,具体可参见实施例六和七,在此不再赘述。以上各个设备的具体实施可参见前面的实施例,在此不再赘述。
[0272]此外,该通信系统还可以包括其他设备,物理主机外的其他设备,比如物理交换机、其他的服务器和/或个人计算机,等等,在此不再赘述。
[0273]该通信系统同样可以实现实施例六和七中所描述的虚拟机的数据交换装置的有益效果,在此不再赘述。
[0274]实施例九、
[0275]相应的,本发明实施例还提供一种物理主机,如图8a所示,该物理主机包括位于所述物理主机的用户空间的至少一个虚拟机,比如第一虚拟机802A和第二虚拟机802B(仅供示意,对数量不做限定)、位于所述物理主机的内核空间的交换模块800和至少一个虚拟网卡,比如第一虚拟网卡801A和第二虚拟网卡801B (仅供示意,对数量不做限定),以及位于所述物理主机的硬件层的至少一个物理网卡803 (仅供示意,对数量不做限定),其中:
[0276]所述第一虚拟机802A:用于将需要发送给目的节点的数据发送,该数据携带目的节点的MAC地址;
[0277]具体的,第一虚拟机802A中的应用发送数据,该数据经过第一虚拟机802A中的客户端操作系统(可以理解为第一虚拟机802A的内核)处理后,被传递给第一虚拟机802A中的虚拟网卡驱动,并由该虚拟网卡驱动将处理后的数据传递给第一虚拟网卡801A ;
[0278]所述第一虚拟网卡801A:用于将所述数据传递给交换模块800 ;换言之,数据经第一虚拟网卡80IA进入交换模块800处理;
[0279]交换模块800:用于根据该数据中携带的目的节点的MAC地址确定目的节点为主机内节点还是主机外节点;若为主机内节点,则确定目的虚拟网卡接口,通过所述目的虚拟网卡接口将所述数据传递给对应的目的虚拟网卡;若为主机外节点,则确定物理网卡接口,通过该物理网卡接口将该数据传递给该物理网卡接口对应的物理网卡。
[0280]需要说明的是,这里的目的虚拟网卡,例如可以是第二虚拟网卡801B;这里的目的虚拟机,例如可以是第二虚拟机802B ;这里的物理网卡,例如可以是物理网卡803 ;
[0281]所述第二虚拟网卡801B:用于将所述数据传递给对应的目的虚拟机,例如第二虚拟机802B ;
[0282]所述物理网卡803:用于将该数据发送至物理主机外。
[0283]在一种实现方式下,交换模块800,具体可以用于确定第一映射表中是否存在该数据中携带的目的节点的MAC地址,若是,则确定目的节点为主机内节点,并根据该数据中携带的目的节点的MAC地址从第一映射表中查找与该MAC地址对应的目的虚拟网卡接口,通过所述目的虚拟网卡接口将所述数据传递给对应的目的虚拟网卡,比如是第二虚拟网卡80IB ;若否,则确定目的节点为主机外节点,并确定物理网卡接口,通过该物理网卡接口将该数据传递给该物理网卡接口对应的物理网卡803。
[0284]或者,可选的,交换模块800,具体可以用于根据该数据中携带的目的节点的MAC地址从第一映射表中查找与该MAC地址对应的虚拟网卡接口(即目的虚拟网卡接口),若查找到与该MAC地址对应的虚拟网卡接口,则确定目的节点为主机内节点,并确定该查找到的与该MAC地址对应的虚拟网卡接口为目的虚拟网卡接口,通过所述目的虚拟网卡接口将所述数据传递给对应的目的虚拟网卡,比如是第二虚拟网卡801B ;若查找不到与该MAC地址对应的虚拟网卡接口,则确定目的节点为主机外节点,并确定物理网卡接口,通过所述物理网卡接口将所述数据传递给对应的物理网卡803。
[0285]其中,可以根据该数据中携带的源虚拟网卡接口在第二映射表中查找,以得到与该源虚拟网卡接口对应的物理网卡接口,即:
[0286]交换模块800,具体可以用于在确定目的节点为主机外节点时,获取该接收该数据所采用的虚拟网卡接口(亦称为源虚拟网卡接口),根据该数据中携带的源虚拟网卡接口从第二映射表中查找得到与所述源虚拟网卡接口对应的物理网卡接口,通过该物理网卡接口将该数据传递给该物理网卡接口对应的物理网卡803。
[0287]其中,第一映射表可以包括MAC地址和虚拟网卡接口(in_port)的对应关系等信息,比如该第一映射表具体可以为mac-port表。第二映射表可以包括虚拟网卡接口和物理网卡接口的对应关系。其中,虚拟网卡接口和物理网卡接口可以是一对一的关系,也可以是多对一的关系,也就是说,同一个物理网卡接口可以对应多个虚拟网卡接口。
[0288]需说明的是,该第一映射表中的目的虚拟网卡接口在虚拟网卡(具体为后端虚拟网卡)接入主机时生成,并在后端虚拟网卡移除时删除,可以不进行MAC地址学习(Mac-learning),该第一映射表只在后端虚拟网卡加入或移除时才变化,而无需逐包进行MAC地址学习。而物理网卡接口则在物理网卡803接入物理主机时生成,并在物理网卡803从物理主机移除时删除。
[0289]此外,还需说明的是,物理网卡接口在物理网卡803接入物理主机时生成,并在物理网卡803从物理主机移除时删除。另外,在虚拟网卡接口和物理网卡接口建立对应关系(或称为映射关系)时,后端虚拟网卡的MAC地址也被下发到物理网卡接口对应的物理网卡的单播列表中,以供该物理网卡803在接收数据时可以对数据进行过滤。
[0290]此外,针对第一虚拟机802A接收数据:
[0291]物理网卡803:还用于接收来自物理主机外的数据,该来自物理主机外的数据携带目的节点的MAC地址,将该来自物理主机外的数据传递给交换模块800 ;
[0292]交换模块800:还用于接收物理网卡803发送的来自物理主机外的数据,根据该数据中携带的目的节点的MAC地址确定对应目的虚拟网卡接口,通过所述目的虚拟网卡接口将数据传递给对应的目的虚拟网卡;需要说明的是,这里的目的虚拟网卡,例如可以是第一虚拟网卡801A ;
[0293]所述第一虚拟网卡801A:还用于将数据传递给对应的目的虚拟机,需要说明的是,这里的目的虚拟机,例如可以是第一虚拟机802A ;具体的,第一虚拟网卡801A将数据传递给对应的目的虚拟机中的该虚拟网卡驱动,由目的虚拟机中的该虚拟网卡驱动传递给目的虚拟机中的客户端操作系统,进而由目的虚拟机中的客户端操作系统传递给目的虚拟机(比如可以是第一虚拟机802A)中的对应的应用处理。
[0294]在一种实现方式下,交换模块800具体可以是:根据该来自物理主机外的数据中携带的目的节点的MAC地址从该第一映射表中查找与该MAC地址对应的目的虚拟网卡接口,通过所述目的虚拟网卡接口将数据传递给对应的目的虚拟网卡;需要说明的是,这里的目的虚拟网卡,例如可以是第一虚拟网卡801A。
[0295]此外,如果确定第一映射表中不存在该数据中携带的目的节点的MAC地址(或者不存在与该MAC地址对应的虚拟网卡接口),则可以直接丢弃该数据。即:
[0296]该交换模块800,还可以用于在根据该来自物理主机外的数据中携带的目的节点的MAC地址,从第一映射表中查找不到与该MAC地址对应的虚拟网卡接口时,丢弃该来自物理主机外的数据。
[0297]以上各个设备的具体实施可参见前面的实施例,在此不再赘述。
[0298]由上可知,本发明实施例的物理主机中,在进行虚拟机的数据交换时,对主机内的虚拟机(比如第一虚拟机802A和第二虚拟机802B)之间的通信,以及主机内的虚拟机(比如第一虚拟机802A或第二虚拟机802B)与主机外设备之间的通信进行区分,若为主机内的虚拟机之间的通信,则不需要经过物理网卡803,而是直接确定目的虚拟网卡接口,然后通过目的虚拟网卡接口对应的目的虚拟网卡与目的虚拟机进行通信,也就是说,此时只是虚拟机间的内容拷贝,因此不会浪费PCI总线带宽,可以提高数据交换效率,也不会影响主机内的其他虚拟机与主机外设备间的通信;而若为主机内的虚拟机与主机外设备之间的通信,则确定物理网卡接口,然后通过该物理网卡接口对应的物理网卡803与物理主机外设备进行通信,由于与物理主机外设备进行通信时,都需要经过物理网卡803,所以便于对进入物理主机的数据进行控制,比如只要物理网卡803不开启混杂模式,那么就可以控制进入物理主机里的数据均为有效数据,减少无效数据的消耗,可以进一步提高数据交换效率;
[0299]此外,由于虚拟机在收发数据时,都需要经过物理主机,所以便于后续在主机内为虚拟机提供进一步的功能,比如可以在主机内为虚拟机提供ACL和流控制功能。也就是说,该方案可以在不降低其性能和灵活性的前提下,提高数据交换效率,一定程度上消除主机内虚拟机间的通信对主机内其他虚拟机与主机外设备间的通信的影响、以及便于后续在主机内为虚拟机提供进一步的功能,比如提供ACL和流控制功能。
[0300]实施例十、
[0301]相应的,本发明实施例还提供一种物理主机,如图Sb所示,该物理主机包括运行于物理主机用户空间的至少一个虚拟机802和位于物理主机硬件层的处理器801和至少一个物理网卡803,其中:
[0302]处理器801,用于获取物理主机内需要发送给目的节点的数据,该数据携带目的节点的MAC地址,根据该数据中携带的目的节点的MAC地址确定目的节点为主机内节点还是主机外节点,若为主机内节点,则确定目的虚拟网卡接口,通过目的虚拟网卡接口对应的虚拟网卡将所述数据发给对应的目的虚拟机802,若为主机外节点,则确定物理网卡接口,将该数据发送给物理网卡接口对应的物理网卡803 ;
[0303]虚拟机802,用于接收处理器801发送的数据;
[0304]物理网卡803,用于接收处理器801发送的数据,并将该数据发送至该物理主机外。
[0305]可选的,处理器801,具体可以用于获取物理主机内需要发送给目的节点的数据,确定第一映射表中是否存在该数据中携带的目的节点的MAC地址,若是,则确定目的节点为主机内节点,并根据该数据中携带的目的节点的MAC地址从第一映射表中查找与该MAC地址对应的目的虚拟网卡接口,通过该虚拟网卡接口对应的虚拟网卡将该数据发给对应的目的虚拟机802 ;若否,则确定目的节点为主机外节点,并确定物理网卡接口,将该数据发送给该物理网卡接口对应的物理网卡803。
[0306]或者,可选的,处理器801,具体可以用于根据该数据中携带的目的节点的MAC地址从第一映射表中查找与该MAC地址对应的虚拟网卡接口(即目的虚拟网卡接口),若查找到与该MAC地址对应的虚拟网卡接口,则确定目的节点为主机内节点,并确定该查找到的与该MAC地址对应的虚拟网卡接口为目的虚拟网卡接口,通过该目的虚拟网卡接口对应的虚拟网卡将该数据发给对应目的虚拟机802 ;若查找不到与该MAC地址对应的虚拟网卡接口,则确定目的节点为主机外节点,并确定物理网卡接口,将该数据发送给所述物理网卡接口对应的物理网卡803。
[0307]其中,可以根据该数据中携带的源虚拟网卡接口在第二映射表中查找,以得到与该源虚拟网卡接口对应的物理网卡接口,即:
[0308]处理器801,具体可以用于在确定目的节点为主机外节点时,获取该数据的源虚拟网卡接口,根据该数据中携带的源虚拟网卡接口从第二映射表中查找得到与所述源虚拟网卡接口对应的物理网卡接口,将该数据发送给该物理网卡接口对应的物理网卡。
[0309]其中,第一映射表可以包括MAC地址和虚拟网卡接口(in_port)的对应关系等信息,比如该第一映射表具体可以为mac-port表。第二映射表可以包括虚拟网卡接口和物理网卡接口的对应关系。其中,虚拟网卡接口和物理网卡接口可以是一对一的关系,也可以是多对一的关系,也就是说,同一个物理网卡接口可以对应多个虚拟网卡接口。
[0310]需说明的是,该第一映射表中的目的虚拟网卡接口在虚拟网卡(具体为后端虚拟网卡)接口接入主机时生成,并在后端虚拟网卡移除时删除,可以不进行MAC地址学习(Mac-learning),该第一映射表只在后端虚拟网卡加入或移除时才变化,而无需逐包进行MAC地址学习。而物理网卡接口则在物理网卡接入物理主机时生成,并在物理网卡从物理主机移除时删除。
[0311]此外,还需说明的是,物理网卡接口在物理网卡803接入物理主机时生成,并在物理网卡803从物理主机移除时删除。另外,在虚拟网卡接口和物理网卡接口建立对应关系(或称为映射关系)时,后端虚拟网卡的MAC地址也被下发到物理网卡接口对应的物理网卡的单播列表中,以供该物理网卡803在接收数据时可以对数据进行过滤。
[0312]可选的,物理网卡803,还用于接收来自物理主机外的数据,该来自物理主机外的数据携带目的节点的MAC地址,将该来自物理主机外的数据发送给处理器801。
[0313]则此时,处理器801,还用于接收物理网卡803发送的来自物理主机外的数据,根据该来自物理主机外的数据中携带的目的节点的MAC地址确定物理网卡对应的虚拟网卡接口(即目的虚拟网卡接口),通过该目的虚拟网卡接口对应的虚拟网卡该来自物理主机外的数据发送给该目的虚拟机802。例如,具体可以如下:
[0314]处理器801,具体可以用于根据该来自物理主机外的数据中携带的目的节点的MAC地址从该第一映射表中查找与该MAC地址对应的虚拟网卡接口,通过该目的虚拟网卡接口对应的虚拟网卡将该来自物理主机外的数据发送给该目的虚拟机802。
[0315]此外,如果确定第一映射表中不存在该数据中携带的目的节点的MAC地址(或者不存在与该MAC地址对应的虚拟网卡接口),则可以直接丢弃该数据。即:
[0316]该处理器801,还可以用于在根据该来自物理主机外的数据中携带的目的节点的MAC地址,从第一映射表中查找不到与该MAC地址对应的虚拟网卡接口时,丢弃该来自物理主机外的数据。
[0317]需说明的是,处理器的各个线程主要在图8中的内核空间中运行,详见前面的实施例,在此不再赘述。
[0318]以上各个设备的具体实施可参见前面的实施例,在此不再赘述。
[0319]由上可知,本发明实施例的物理主机的处理器801在进行虚拟机的数据交换时,对虚拟机之间的通信,以及虚拟机与主机外设备之间的通信进行区分,若为虚拟机之间的通信,则不需要经过物理网卡803,而是直接确定目的虚拟网卡接口,然后通过虚拟网卡接口与目的虚拟机802进行通信,也就是说,此时只是虚拟机802间的内容拷贝,因此不会浪费PCI总线带宽,也不会影响其他虚拟机802与主机外设备间的通信;而若为与主机外设备之间的通信,则需要确定目的物理网卡803,然后通过该目的物理网卡803与物理主机外设备进行通信,由于与物理主机外设备进行通信时,都需要经过物理网卡803,所以便于对进入物理主机的数据进行控制,比如只要物理网卡803不开启混杂模式,那么就可以控制进入物理主机里的数据均为有效数据,减少无效数据的消耗,可以提高数据交换效率;此外,由于虚拟机802在收发数据时,都需要经过物理主机,所以可以在主机内为虚拟机802提供ACL和流控制功能。也就是说,该方案可以在不降低其性能和灵活性的前提下,提高数据交换效率,消除主 机内虚拟机间的通信对其他虚拟机802与主机外设备间的通信的影响、以及实现在主机内为虚拟机802提供ACL和流控制功能。
[0320]实施例^^一、
[0321]相应的,本发明实施例还提供一种物理主机,如图9所示,该物理主机可以包括至少一个处理器901,例如CPU,至少一个网络接口 904,例如物理网卡,或者其他的用户接口903,以及存储器905和至少一个通信总线902。
[0322]其中,通信总线902用于实现这些组件之间的连接通信。
[0323]网络接口 904用于实现该物理主机和网络之间的连接通信,比如该网络接口 904可以用于连接物理网卡和/或物理交换机等设备。
[0324]可选的,用户接口 903,可以包括显示器,键盘或者其他点击设备,例如,鼠标,轨迹球(trackball),触感板或者触感显示屏等。
[0325]存储器905可能包括高速随机存取记忆体(RAM, Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,该存储器905还可以包括至少一个位于远离前述处理器901的存储装置。
[0326]在一些实施方式中,存储器605存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:
[0327]操作系统9051,包含各种系统程序,用于实现各种基础业务以及处理基于硬件的任务;[0328]应用模块9052,包含各种应用程序,用于实现各种应用业务。
[0329]应用模块9052中包括但不限于交换模块,各种虚拟网卡、以及虚拟网卡相关的模块,比如获取单元、判断单元、第一处理单元和第二处理单元等。
[0330]具体地,处理器901,用于获取本物理主机内需要发送给目的节点的数据,该数据携带目的节点的MAC地址,根据该数据中携带的目的节点的MAC地址确定目的节点为本物理主机内节点还是本物理主机外节点,若为本物理主机内节点,则确定目的虚拟网卡接口,通过该虚拟网卡接口对应的虚拟网卡将该数据发给对应的目的虚拟机,若为本物理主机外节点,则确定物理网卡接口,将该数据发送给物理网卡接口对应的物理网卡,以便将该数据发送至物理主机外。
[0331]可选的,该处理器901,具体用于确定第一映射表中是否存在该数据中携带的目的节点的MAC地址,其中,该第一映射表包括MAC地址和目的虚拟网卡接口的对应关系;若是,贝_定目的节点为主机内节点,并根据所述数据中携带的目的节点的MAC地址获取对应的目的虚拟网卡接口,通过该目的虚拟网卡接口对应的虚拟网卡接口将该数据发给该目的虚拟机;若否,则确定目的节点为主机外节点,根据该数据的源虚拟网卡接口获取对应的物理网卡接口,比如,具体可以通过查找第二映射表获取所述数据的源虚拟网卡接口对应的物理网卡接口,然后将该数据发送给所述物理网卡接口对应的物理网卡,以便将该数据发送至物理主机外。
[0332]可选的,该处理器901,还用于通过物理网卡接收来自物理主机外的数据,该来自物理主机外的数据携带目的节点的MAC地址;由物理网卡根据该数据中携带的目的节点的MAC地址确定对应目的虚拟网卡接口,并通过该目的虚拟网卡接口对应的虚拟网卡该数据发送给对应的目的虚拟机,具体可参见前面实施例,在此不再赘述。
[0333]以上各个设备的具体实施可参见前面的实施例,在此不再赘述。
[0334]由上可知,本发明实施例的处理器901在进行虚拟机的数据交换时,对主机内的虚拟机之间的通信,以及虚拟机与主机外设备之间的通信进行区分,若为虚拟机之间的通信,则不需要经过物理网卡,而是直接确定目的虚拟网卡接口,然后通过该虚拟网卡接口与目的虚拟机进行通信,也就是说,此时只是虚拟机间的内容拷贝,因此不会浪费PCI总线带宽,也不会影响其他虚拟机与主机外设备间的通信;而若为与主机外设备之间的通信,则需要确定目的物理网卡,然后通过该目的物理网卡与物理主机外设备进行通信,由于与物理主机外设备进行通信时,都需要经过物理网卡,所以便于对进入物理主机的数据进行控制,比如只要物理网卡不开启混杂模式,那么就可以控制进入物理主机里的数据均为有效数据,减少无效数据的消耗,可以提高数据交换效率。
[0335]此外,由于虚拟机在收发数据时,都需要经过物理主机,所以可以在主机内为虚拟机提供ACL和流控制功能。也就是说,该方案可以在不降低其性能和灵活性的前提下,提高数据交换效率,消除主机内虚拟机间的通信对其他虚拟机与主机外设备间的通信的影响、以及实现在主机内为虚拟机提供ACL和流控制功能。
[0336]本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM, Read Only Memory)、随机存取记忆体(RAM, RandomAccess Memory)、磁盘或光盘等。[0337]以上对本发明实施例所提供的一种虚拟机的数据交换方法、装置和系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
【权利要求】
1.一种虚拟机的数据交换方法,其特征在于,包括: 获取物理主机内需要发送给目的节点的数据,所述数据中携带目的节点的媒体接入层地址; 根据所述数据中携带的目的节点的媒体接入层地址确定目的节点为本物理主机内的节点还是本物理主机外的节点; 若为本物理主机内的节点,则确定目的虚拟网卡接口,通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述数据发给对应的目的虚拟机; 若为本物理主机外的节点,则确定物理网卡接口,通过所述物理网卡接口对应的物理网卡将所述数据发送至所述物理主机外。
2.根据权利要求1所述的方法,其特征在于,所述根据所述数据中携带的目的节点的媒体接入层地址确定目的节点为本物理主机内的节点还是本物理主机外的节点,包括: 确定第一映射表中是否存在所述数据中携带的目的节点的媒体接入层地址,所述第一映射表包括媒体接入层地址和虚拟网卡接口的对应关系; 若所述第一映射表中存在所述数据中携带的目的节点的媒体接入层地址,则确定目的节点为本物理主机内的节点; 若所述第一映射表中不存在所述数据中携带的目的节点的媒体接入层地址,则确定目的节点为本物理主机外 的节点。
3.根据权利要求2所述的方法,其特征在于,所述确定目的虚拟网卡接口,通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述数据发给对应的目的虚拟机,包括: 根据所述数据中携带的目的节点的媒体接入层地址从第一映射表中查找与所述媒体接入层地址对应的虚拟网卡接口,所述与所述媒体接入层地址对应的虚拟网卡接口为目的虚拟网卡接口; 通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述数据发给对应的目的虚拟机。
4.根据权利要求1所述的方法,其特征在于,所述根据所述数据中携带的目的节点的媒体接入层地址确定目的节点为本物理主机内的节点还是本物理主机外的节点,包括: 根据所述数据中携带的目的节点的媒体接入层地址从第一映射表中查找与所述媒体接入层地址对应的虚拟网卡接口,所述第一映射表包括媒体接入层地址和虚拟网卡接口的对应关系; 若查找到与所述媒体接入层地址对应的虚拟网卡接口,则确定目的节点为本物理主机内的节点; 若查找不到与所述媒体接入层地址对应的虚拟网卡接口,则确定目的节点为本物理主机外的节点; 其中,所述确定目的虚拟网卡接口为:确定所述查找到的与所述媒体接入层地址对应的虚拟网卡接口为所述目的虚拟网卡接口。
5.根据权利要求2至4任一项所述的方法,其特征在于,还包括: 检测到后端虚拟网卡接入本物理主机时,生成对应的虚拟网卡接口,并在所述第一映射表中添加对应于指定的媒体接入层地址的所述虚拟网卡接口 ;以及, 检测到所述后端虚拟网卡从本物理主机上移除时,在所述第一映射表中删除对应于所述指定的媒体接入层地址的所述虚拟网卡接口。
6.根据权利要求1至4任一项所述的方法,其特征在于,所述确定物理网卡接口,通过所述物理网卡接口对应的物理网卡将所述数据发送至所述物理主机外,包括: 获取接收所述数据时所使用的虚拟网卡接口; 根据所述虚拟网卡接口从第二映射表中查找得到与所述虚拟网卡接口对应的物理网卡接口,所述第二映射表包括虚拟网卡接口和物理网卡接口的对应关系; 通过所述物理网卡接口对应的物理网卡将所述数据发送至所述物理主机外。
7.根据权利要求1项所述的方法,其特征在于,还包括: 通过物理网卡接收来自物理主机外的数据,该来自物理主机外的数据中携带目的节点的媒体接入层地址; 根据所述来自物理主机外的数据中携带的目的节点的媒体接入层地址确定对应的目的虚拟网卡接口; 通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述来自物理主机外的数据发送给对应的目的虚拟机。
8.根据权利要求7所述的方法,其特征在于,所述根据所述来自物理主机外的数据中携带的目的节点的媒体接入层地址确定对应的目的虚拟网卡接口,包括: 根据所述来自物理主机外的数据中携带的目的节点的媒体接入层地址,从第一映射表中查找与所述媒体接入层地址对应的虚拟网卡接口,所述与所述媒体接入层地址对应的虚拟网卡接口为目的虚拟网卡接口,所述第一映射表包括媒体接入层地址和虚拟网卡接口的对应关系。
9.根据权利要求8所述的方法,其特征在于,所述通过物理网卡接收来自物理主机外的数据之后,还包括: 根据所述来自物理主机外的数据中携带的目的节点的媒体接入层地址,从所述第一映射表中查找不到与所述媒体接入层地址对应的虚拟网卡接口时,丢弃所述来自物理主机外的数据。
10.一种虚拟机的数据交换装置,其特征在于,包括: 获取单元,用于获取物理主机内需要发送给目的节点的数据,所述数据中携带目的节点的媒体接入层地址; 判断单元,用于根据所述数据中携带的目的节点的媒体接入层地址确定目的节点为本物理主机内的节点还是本物理主机外的节点; 第一处理单元,用于在所述判断单元确定目的节点为本物理主机内的节点时,确定目的虚拟网卡接口,通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述数据发给对应的目的虚拟机; 第二处理单元,用于在所述判断单元确定目的节点为本物理主机外的节点时,确定物理网卡接口,通过所述物理网卡接口对应的物理网卡将所述数据发送至所述物理主机外。
11.根据权利要求10所述的虚拟机的数据交换装置,其特征在于, 所述判断单元,具体用于确定第一映射表中是否存在所述数据中携带的目的节点的媒体接入层地址,若存在所述数据中携带的目的节点的媒体接入层地址,则确定目的节点为本物理主机内的节点,若不存在所述数据中携带的目的节点的媒体接入层地址,则确定目的节点为本物理主机外的节点;所述第一映射表包括媒体接入层地址和虚拟网卡接口的对应关系。
12.根据权利要求11所述的虚拟机的数据交换装置,其特征在于, 所述第一处理单元,具体用于在判断单元确定目的节点为本物理主机内的节点时,根据所述数据中携带的目的节点的媒体接入层地址从第一映射表中查找与所述媒体接入层地址对应的虚拟网卡接口,所述与所述媒体接入层地址对应的虚拟网卡接口为目的虚拟网卡接口,通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述数据发给对应的目的虚拟机。
13.根据权利要求10所述的虚拟机的数据交换装置,其特征在于, 所述判断单元,具体用于根据所述数据中携带的目的节点的媒体接入层地址从第一映射表中查找与所述媒体接入层地址对应的虚拟网卡接口 ;若查找到与所述媒体接入层地址对应的虚拟网卡接口,则确定目的节点为本物理主机内的节点;若查找不到与所述媒体接入层地址对应的虚拟网卡接口,则确定目的节点为本物理主机外的节点,所述第一映射表包括媒体接入层地址和虚拟网卡接口的对应关系; 则所述第一处理单元,具体用于在判断单元确定目的节点为本物理主机内的节点时,确定所述查找到的与所述媒体接入层地址对应的虚拟网卡接口为所述目的虚拟网卡接口。
14.根据权利要求11至13任一项所述的虚拟机的数据交换装置,其特征在于,还包括检测单元; 检测单元,用于检测到后端虚拟网卡接入本物理主机时,生成对应的虚拟网卡接口,并在所述第一映射表中添加对应于指定的媒体接入层地址的所述虚拟网卡接口 ;以及,检测到所述后端虚拟网卡从本物理主机上移除时,在所述第一映射表中删除对应于所述指定的媒体接入层地址的所述虚拟网卡接口。
15.根据权利要求10至13任一项所述的虚拟机的数据交换装置,其特征在于,` 所述第二处理单元,具体用于在所述判断单元确定目的节点为本物理主机外的节点时,获取接收述数据时所使用的虚拟网卡接口,根据所述虚拟网卡接口从第二映射表中查找得到与所述虚拟网卡接口对应的物理网卡接口,通过所述物理网卡接口对应的物理网卡将所述数据发送至所述物理主机外;所述第二映射表包括虚拟网卡接口和物理网卡接口的对应关系。
16.根据权利要求10所述的虚拟机的数据交换装置,其特征在于,还包括接收单元、确定单元和发送单元; 接收单元,用于通过物理网卡接收来自物理主机外的数据,该来自物理主机外的数据中携带目的节点的媒体接入层地址; 确定单元,用于根据所述来自物理主机外的数据中携带的目的节点的媒体接入层地址确定对应的目的虚拟网卡接口 ; 发送单元,用于通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述来自物理主机外的数据发送给对应的目的虚拟机。
17.根据权利要求16所述的虚拟机的数据交换装置,其特征在于, 所述确定单元,具体用于根据所述来自物理主机外的数据中携带的目的节点的媒体接入层地址从第一映射表中查找与所述媒体接入层地址对应的虚拟网卡接口,所述与所述媒体接入层地址对应的虚拟网卡接口为目的虚拟网卡接口,所述第一映射表包括媒体接入层地址和虚拟网卡接口的对应关系。
18.根据权利要求17所述的虚拟机的数据交换装置,其特征在于, 所述确定单元,还用于在根据所述来自物理主机外的数据中携带的目的节点的媒体接入层地址,从所述第一映射表中查找不到与所述媒体接入层地址对应的虚拟网卡接口时,丢弃所述来自物理主机外的数据。
19.一种通信系统,其特征在于,包括至少两台物理主机,其中所述至少两台物理主机包括第一物理主机和第二物理主机; 第一物理主机,用于获取本物理主机内需要发送给目的节点的数据,所述数据中携带目的节点的媒体接入层地址,根据所述数据中携带的目的节点的媒体接入层地址确定目的节点为本物理主机内的节点还是本物理主机外的节点;若为本物理主机内的节点,则确定目的虚拟网卡接口,通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述数据发给对应的目的虚拟机;若为本物理主机外的节点,则确定物理网卡接口,通过所述物理网卡接口对应的物理网卡将该数据发送至第二物理主机。 第二物理主机,用于接收第一物理主机发送的数据。
20.根据权利要求19所述的通信系统,其特征在于, 所述第一物理主机,具体用于获取本物理主机内需要发送给目的节点的数据,确定第一映射表中是否存在所述数据中携带的目的节点的媒体接入层地址,若所述第一映射表中存在所述数据中携带的目的节点的媒体接入层地址,则确定目的节点为第一物理主机内的节点,并根据所述数据中携带的目的节点的媒体接入层地址从第一映射表中查找与所述媒体接入层地址对应的虚拟网卡接口,所述与所述媒体接入层地址对应的虚拟网卡接口为目的虚拟网卡接口,通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述数据发给对应的目的虚拟机;若所述第一映射表中不存在所述数据中携带的目的节点的媒体接入层地址,则确定目的节点为第一物理主机外的节点,并确定物理网卡接口,通过所述物理网卡接口对应的物理网卡将该数据发送至第二物理主机;所述第一映射表包括媒体接入层地址和虚拟网卡接口的对应关系。
21.根据权利要求19所述的通信系统,其特征在于, 所述第一物理主机,具体用于获取本物理主机内需要发送给目的节点的数据,根据所述数据中携带的目的节点的媒体接入层地址从第一映射表中查找与所述媒体接入层地址对应的虚拟网卡接口,若查找到与所述媒体接入层地址对应的虚拟网卡接口,则确定目的节点为第一物理主机内的节点,并确定所述查找到的与所述媒体接入层地址对应的虚拟网卡接口为所述目的虚拟网卡接口,通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述数据发给对应的目的虚拟机;若查找不到与所述媒体接入层地址对应的虚拟网卡接口,则确定目的节点为第一物理主机外的节点,并确定物理网卡接口,通过所述物理网卡接口对应的物理网卡将该数据发送至第二物理主机;所述第一映射表包括媒体接入层地址和虚拟网卡接口的对应关系。
22.根据权利要求19至21任一项所述的通信系统,其特征在于, 所述第二物理主机还用于向第一物理主机发送数据; 所述第一物理主机还用于通过物理网卡接收所述第二物理主机发送的数据,根据所述数据的目的节点的媒体接入层地址确定对应的目的虚拟网卡接口,通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述来自第二物理主机的数据发送给对应的目的虚拟机。
23.一种物理主机,其特征在于,包括:运行于物理主机用户空间的至少一个虚拟机和位于物理主机硬件层的处理器和至少一个物理网卡,其中: 处理器,用于获取物理主机内需要发送给目的节点的数据,所述数据中携带目的节点的媒体接入层地址,根据所述数据中携带的目的节点的媒体接入层地址确定目的节点为本物理主机内的节点还是本物理主机外的节点,若为本物理主机内的节点,则确定目的虚拟网卡接口,通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述数据发给对应的目的虚拟机,若为本物理主机外的节点,则确定物理网卡接口,将所述数据发送给物理网卡接口对应的物理网卡; 虚拟机,用于接收所述处理器发送的数据; 物理网卡,用于接收所述处理器发送的数据,并将所述数据发送至所述物理主机外。
24.根据权利要求23所述的物理主机,其特征在于, 所述处理器具体用于获取物理主机内需要发送给目的节点的数据,确定第一映射表中是否存在所述数据中携带的目的节点的媒体接入层地址,所述第一映射表包括媒体接入层地址和虚拟网卡接口的对应关系;若第一映射表中存在所述数据中携带的目的节点的媒体接入层地址,则确定目的节点为本物理主机内的节点,并根据所述数据中携带的目的节点的媒体接入层地址从所述第一映射表中查找与所述媒体接入层地址对应的虚拟网卡接口,所述与所述媒体接入层地址对应的虚拟网卡接口为目的虚拟网卡接口,通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述数据发给对应的目的虚拟机;若第一映射表中不存在所述数据中携带的目的节点的媒体接入层地址,则确定目的节点为本物理主机外的节点,并确定物理网卡接口,将所述数据发送给所述物理网卡接口对应的物理网卡。
25.根据权利要求23所述的物理主机,其特征在于, 所述处理器具体用于获取物理主机内需要发送给目的节点的数据,根据所述数据中携带的目的节点的媒体接入层地址从第一映射表中查找与所述媒体接入层地址对应的虚拟网卡接口,所述第一映射表包括媒体接入层地址和虚拟网卡接口的对应关系,若查找到与所述媒体接入层地址对应的虚拟网卡接口,则确定所述查找到的与所述媒体接入层地址对应的虚拟网卡接口为所述目的虚拟网卡接口,通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述数据发给对应的目的虚拟机;若查找不到与所述媒体接入层地址对应的虚拟网卡接口,则确定目的节点为本物理主机外的节点,并确定物理网卡接口,将所述数据发送给所述物理网卡接口对应的物理网卡。
26.根据权利要求24或25所述的物理主机,其特征在于, 所述物理网卡还用于接收来自物理主机外的数据,将所述来自物理主机外的数据发送给处理器; 所述处理器还用于根据所述来自物理主机外的数据中携带的目的节点的媒体接入层地址从所述第一映射表中查找与所述媒体接入层地址对应的虚拟网卡接口,所述与所述媒体接入层地址对应的虚拟网卡接口为目的虚拟网卡接口,通过所述目的虚拟网卡接口对应的目的虚拟网卡将所述数据发给对应的目的虚拟机。
27.根据权利要求26所述的物理主机,其特征在于, 所述处理器,还用于在根据所述来自物理主机外的数据中携带的目的节点的媒体接入层地址 ,从第一映射表中查找不到与所述媒体接入层地址对应的虚拟网卡接口时,丢弃所述来自物理主机外的数据。
【文档编号】G06F9/455GK103621026SQ201380001038
【公开日】2014年3月5日 申请日期:2013年4月1日 优先权日:2013年4月1日
【发明者】秦传瑜, 逯云松 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1