CN101909054B - 虚拟化环境中多网络接口卡聚合的方法 - Google Patents
虚拟化环境中多网络接口卡聚合的方法 Download PDFInfo
- Publication number
- CN101909054B CN101909054B CN201010226805XA CN201010226805A CN101909054B CN 101909054 B CN101909054 B CN 101909054B CN 201010226805X A CN201010226805X A CN 201010226805XA CN 201010226805 A CN201010226805 A CN 201010226805A CN 101909054 B CN101909054 B CN 101909054B
- Authority
- CN
- China
- Prior art keywords
- nic
- virtual machine
- mac address
- network
- network packet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Abstract
本发明公开了一种虚拟化环境中多网络接口卡聚合的方法。传统的绑定技术对于虚拟化平台并不适用,该方法提出的多网络接口卡聚合技术,是针对虚拟化环境开发的,它将虚拟机的ip地址和网络接口卡的mac地址绑定在一起,而动态设置每块网络接口卡的mac地址,使得网络流量从不同的网络接口卡流出或进来。本发明能够充分利用多网络接口卡,能够按照需求为每个客户虚拟机动态分配所需的网络资源,能够保证多网络接口卡的负载均衡,并能够实现一个客户虚拟机能够同时使用多块网络接口卡的效果,更好的为客户虚拟机提供网络带宽保证。
Description
技术领域
本发明属于XEN虚拟化平台及其网络子系统领域,涉及一种对现有XEN网络子系统的改进方法,具体为一种虚拟化环境中多网络接口卡聚合的方法,它利用多块网络接口卡来增加客户虚拟机的网络带宽,并提供客户虚拟机网络带宽资源的服务质量的保证。
背景技术
随着CPU的计算能力快速提高,在虚拟化平台下,单个物理机上可以运行的客户虚拟机会将越来越多,据报道HP已经发展了在服务器上运行上万个客户虚拟机的技术。虽然运行众多的客户虚拟机能够充分的发挥CPU的计算能力,但同时也产生了更多的网络IO流量需求,这对网络接口卡的性能要求越来越高。但目前高性能的网络接口卡价格高昂,性能不稳定,尚不普及,主要见于高端服务器上。此外,高性能网络接口卡对与之互连的网络设备,如交换机接口及软件也有很高的要求。因此,这导致采用高性能网络接口卡后,引发与之相关的一系列设备、软件升级及投资。
由于目前的网络接口卡技术成熟,性能稳定,而与之相配套的网络设备及软件均成熟稳定,若将目前的网络接口卡聚合起来为虚拟化环境提供网络通信支持,不但能够达到高性能网络接口卡的效果,而且保护了原有设备及软件的投资。90年代在Linux上所发展的多网络接口卡绑定(Bonding)技术目的正在于此。该技术提供了多种发送和接收策略,如TLB、ALB等,但性能损失较大,此外该技术在某些策略下会向邻近的路由器发送ARP包,这增加了路由器的负担。最重要的是由于该技术是在单操作系统、单ip环境下运行,不适合虚拟化环境下多客户虚拟机,多ip同时通信的需要。在虚拟化环境下,该技术并不能做到收发负载平衡。由于传统绑定技术特点及自身缺陷,使得它并没有得到广泛应用。
如图1所示,这是XEN虚拟化平台中的网络体系结构(J.Liu,W.Huang,B.Abali,and D.K.Panda.High Performance VMM-Bypass I/O in VirtualMachines.In ATC,2006.),在XEN虚拟化平台中,网络前端是存在于客户虚拟机中的特有模块,网络后端是存在于宿主虚拟机里的特有模块,客户虚拟机通过网络前端与宿主虚拟机的网络后端通信。在一个XEN虚拟化平台中只能有一个宿主虚拟机,而可以有多个客户虚拟机,一个宿主虚拟机中只存在一个网络后端,而整个XEN虚拟化平台可以有多个网络前端。多个网络前端与同一个网络后端进行通信,也就是多个客户虚拟机都与宿主虚拟机进行通信。而在宿主虚拟机里,网络后端与网桥模块通信,网桥模块通过调用网络接口卡驱动模块实现数据包的发送和接收。网桥模块是一个管理所有数据包的模块,对于发送,所有客户虚拟机的网络数据包和宿主虚拟机的网络数据包都会汇聚到此处,然后由网桥模块调用网络接口卡的驱动模块发送出去;对于接收,其接收所有来自网络接口卡驱动模块的数据包,然后决定这些网络数据包是发送到哪个客户虚拟机或者宿主虚拟机的。在一个XEN虚拟化平台中,网桥模块可以同时启动多个,但是每个网桥模块同时只能使用一块网络接口卡,每个客户虚拟机的网络数据包通过网络后端也只能汇聚到一个网桥模块,因此所有汇聚到该网桥模块的客户虚拟机都只能通过该网桥模块管理的网络接口卡进行通信。这样,每个客户虚拟机同时最多使用一块网络接口卡。
发明内容
本发明的目的在于提供一种虚拟化环境中多网络接口卡聚合的方法,该方法是在不改变物理机外部网络环境下,为在虚拟化环境中的客户虚拟机使用多块网络接口卡进行网络通信提供支持。
一种虚拟化环境中多网络接口卡聚合的方法,该方法包括下述步骤:
第1步宿主虚拟机接收来自客户虚拟机的网络数据包;
第2步宿主虚拟机内部对网络数据包进行判断,如果该网络数据包来自宿主虚拟机本身,转第3步,否则说明该网络数据包来自客户虚拟机,则转第7步;
第3步在所有网络接口卡中选取流量最小的一块网络接口卡分配给该网络数据包;
第4步在宿主虚拟机内部对所分配的网络接口卡mac地址与网络数据包的源mac地址进行一次比较,如果两个mac地址一样则网络接口卡直接发送网络数据包,转第11步,如果两个mac地址不一样,则转第5步;
第5步在所有的网络接口卡中找到与该网络数据包源mac地址一样的网络接口卡,并将该网络接口卡的mac地址与分配的网络接口卡的mac地址动态互换;
第6步通过分配的网络接口卡发送该网络数据包,转第11步;
第7步网络数据包来自客户虚拟机,则根据客户虚拟机的ip地址分配一块网络接口卡;
第8步将分配的网络接口卡的mac地址更改为网络数据包的源mac地址;
第9步通过分配的网络接口卡发送网络数据包;
第10步将分配的网络接口卡的mac地址还原;
第11步流程结束。
本发明针对早期绑定技术的缺陷,并适应虚拟化环境的需求,提出利用聚合多个网络接口卡来为虚拟化环境提供高带宽的网络通信技术,目的是不改变物理机外部网络环境,包括设备和软件,充分发挥多网络接口卡的能力,为在虚拟化环境中的客户虚拟机使用多块网络接口卡进行网络通信提供支持。本发明将客户虚拟机的ip地址和网络接口卡的mac地址绑定,通过动态设置每块物理网络接口卡的mac地址,使得网络流量从不同的网络接口卡流出或进来,这样虚拟机能够动态地通过多块网络接口卡发送和接收网络数据包,从而实现按需求为虚拟机分配网络资源。此外,本发明能够在一块网络接口卡负载过重时可以很容易地将客户虚拟机的网络流量转移到另一块网络接口卡中,充分发挥每块网络接口卡的能力,可达到多块网络接口卡负载均衡的效果。
附图说明
图1为XEN虚拟化平台中的网络体系结构;
图2为XEN虚拟化平台中实现了本发明方法后的网络体系结构;
图3为本发明的方法流程图;
图4为动态更改mac地址前的网络体系结构;
图5为动态更改mac地址后的网络体系结构。
具体实施方式
本发明的主要原理是:将虚拟机的ip地址和网络接口卡的mac地址绑定在一起,而动态设置每块网络接口卡的mac地址,使得网络流量从不同的网络接口卡流出或进来。这样客户虚拟机能够动态地通过多块网络接口卡发送和接收网络数据包,同时在一块网络接口卡负载过重时可以很容易地将客户虚拟机的网络流量转移到另一块网络接口卡中,以此达到多块网络接口卡负载均衡的效果。此外,也可以按需求控制每台虚拟机使用网络接口卡的数目,以达到保证客户虚拟机一定的网络资源或者限制客户虚拟机的网络资源的作用。本发明的关键技术主要有两点:一是客户虚拟机ip地址与网络接口卡的mac地址的绑定策略;二是根据网络接口卡的流量来分配和动态设置网络接口卡的mac地址的策略。
下面结合附图和实例,对本发明进行具体说明。
聚合模块是一个实现了本发明方法的功能模块,他介于网桥模块和驱动模块之间的一个模块,并且在该模块的管理下,一个网桥模块可以同时使用多块网络接口卡,这样宿主虚拟机可以同时利用多个网络接口卡驱动模块来为客户虚拟机提供网络通信,并且每个客户虚拟机也可以同时使用多块网络接口卡。如图2所示。
由于虚拟化平台中,同时运行了多个客户虚拟机,每个客户虚拟机都有自己的ip地址和mac地址,甚至有的客户虚拟机还有多个ip地址,这样就存在多个客户虚拟机同时竞争使用多块网络接口卡的情况。本发明方法采用了如下客户虚拟机与网络接口卡的mac地址绑定策略、分配和动态设置网络接口卡mac地址的策略,在多个客户虚拟机之间分配多块网络接口卡,并且达到一个客户虚拟机同时使用多块网络接口卡的效果:
客户虚拟机ip地址与网络接口卡的mac地址绑定策略:
(1)开始时,将每个客户虚拟机的ip地址与其中一块网络接口卡的mac地址绑定;如果需要某一个客户虚拟机使用多块网络接口卡来提高网络带宽时,则可以将该虚拟机的ip地址与多个网络接口卡的mac地址绑定;如果要限制某一客户虚拟机不能上网时,则可以将该客户虚拟机的ip地址不绑定任何网络接口卡的mac地址;
(2)尽量使得每块网络接口卡上面绑定的客户虚拟机数目差不多;
分配和动态设置网络接口卡mac地址策略:
(1)当客户虚拟机发送网络数据包时,宿主虚拟机根据网络数据包的源ip地址找到与之绑定的网络接口卡的mac地址或者mac地址组;
(2)如果该ip地址只绑定了一块网络接口卡的mac地址,则从所有的网络接口卡中找到与该mac地址相对应的那块网络接口卡,并将该网络接口卡分配给该网络数据包;如果该ip地址绑定了多块网络接口的mac地址,则先从所有的网络接口卡中找到与这些mac地址想对应的网络接口卡,然后选取其中流量最小的一块网络接口卡分配给该网络数据包;
(3)当某一块网络接口卡的流量过大,需要进行负载均衡时,可选取所有网络接口卡中流量最小的一块网络接口卡,和当前需要做负载均衡的网络接口卡的mac地址互换,其相应mac地址与客户虚拟机的ip地址绑定对应关系保持不变。
按照上述策略,本发明方法不但可以动态调整各个网卡的流量负载均衡,而且可以静态的为一个客户虚拟机分配多块网络接口卡,以提高该虚拟机的网络带宽和服务质量。
如图3所示,这是本发明方法的流程图,详细说明如下:
(1)宿主虚拟机接收来自客户虚拟机的网络数据包;
(2)宿主虚拟机内部会对网络数据包进行判断,如果该网络数据包来自宿主虚拟机本身,转步骤(3),否则说明该网络数据包来自客户虚拟机,则转步骤(7);
(3)网络数据包来自宿主虚拟机本身,则在所有网络接口卡中选取流量最小的一块网络接口卡分配给该网络数据包;
(4)在宿主虚拟机内部对所分配的网络接口卡mac地址与网络数据包的源mac地址进行一次比较,如果两个mac地址一样则网络接口卡直接发送网络数据包,转步骤(11),如果两个mac地址不一样,则转步骤(5);
(5)在所有的网络接口卡中找到与该网络数据包源mac地址一样的网络接口卡,并将该网络接口卡的mac地址与分配的网络接口卡的mac地址动态互换;
(6)通过分配的网络接口卡发送该网络数据包,转步骤(11);
(7)网络数据包来自客户虚拟机,则根据客户虚拟机的ip地址分配一块网络接口卡;
(8)将分配的网络接口卡的mac地址更改为网络数据包的源mac地址;
(9)通过分配的网络接口卡发送网络数据包;
(10)将分配的网络接口卡的mac地址还原;
(11)流程结束。
下面集合一个具体实例来进行说明:
如图4所示:在硬件层有3块网络接口卡:网络接口卡1、网络接口卡2和网络接口卡3。整个系统是实现了本发明方法的系统,也就是加入了聚合模块的系统。XEN虚拟化平台中运行了3个虚拟机,分别标号为客户虚拟机1、客户虚拟机2和客户虚拟机3,这3个虚拟机均需要对外进行网络通信。在XEN虚拟化平台中,所有虚拟机网络通信都先经过宿主虚拟机,宿主虚拟机同时利用3块网络接口卡通信。那么宿主虚拟机可以给每个虚拟机分配一个(或多个)ip地址和一个mac(或多个)地址,并将ip地址与mac地址绑定,如图所示。假定客户虚拟机1的ip1绑定网络接口卡的mac1地址,客户虚拟机2的ip2绑定网络接口卡2的mac2地址,客户虚拟机3的ip3绑定网络接口卡3的mac3地址。那么客户虚拟机1、客户虚拟机2、客户虚拟机3的网络流量将分别流经网络接口卡1、网络接口卡2和网络接口卡3,互不干扰。
当客户虚拟机1的网络流量突然增大时,网络接口卡1的负载也将增加。当网络接口卡1的负载过重时,此时宿主虚拟机可以将网络接口卡2的mac地址设置为mac1地址,而网络接口卡1的mac地址设置为mac2地址,如图5所示。当再有客户虚拟机1的网络数据包需要发送时,宿主虚拟机就会把网卡接口卡2分配给客户虚拟机1,这样客户虚拟机1的网络流量将流经网络接口卡2,从而减小网络接口卡1的负载。同理当网络接口卡2的负载过重时,可以再将另一块网络接口卡,比如网络接口卡3或者网络接口卡1的mac地址设置为mac1地址,以转移网络接口卡2的网络流量,减小网络接口卡2的负载。这样,每个客户虚拟机都可以通过多块网络接口卡来通讯,这不但能够提高网络效率,而且同时也达到了多块网络接口卡负载均衡的效果。
除开动态在网络接口卡上调度网络流量外,本发明也可静态分配网络接口卡。如当由于某种需要而限制客户虚拟机3只能使用一块网络接口卡时,则可以将mac3地址绑定在网络接口卡3上,而其它的网络接口卡不能将mac地址设置为mac3地址,这样客户虚拟机3就只能使用网络接口卡3。即使客户虚拟机3网络需求很大,导致网络接口卡3的负载很重,但客户虚拟机3也无法使用其它的网络接口卡,而其它的客户虚拟机还可以跟客户虚拟机3竞争使用网络接口卡3,因为网络接口卡3还可以设置为其它网络接口卡的mac地址,以分担其它网络接口卡上面的网络流量。当然也可以设置网络接口卡3不能更改mac地址,这样其它客户虚拟机的网络数据包就不会到底网络接口卡3,网络接口卡3将为客户虚拟机3所独享。
当然根据这个原理还可以限制客户虚拟机仅能使用两块网络接口卡。如客户虚拟机1要求增加网络带宽,则可以将客户虚拟机1的ip1与网络接口卡1的mac1地址和网络接口卡2的mac2地址同时绑定,当有客户虚拟机1的网络数据包需要发送时,则从网络接口卡1和2中选择流量较小的一块网络接口卡分配给网络数据包。
总之,本发明方法能够按需分配每个客户虚拟机所需的网络资源,并能根据需要保证客户虚拟机一定的网络带宽资源或者限制客户虚拟机的网络带宽资源,而且本发明方法能够同时利用多块网络接口卡为客户虚拟机提供网络通信,并能达到一个客户虚拟机也可以同时使用多块网络接口卡的效果。
Claims (1)
1.一种虚拟化环境中多网络接口卡聚合的方法,该方法包括下述步骤:
第1步宿主虚拟机接收来自客户虚拟机的网络数据包;
第2步宿主虚拟机内部对网络数据包进行判断,如果该网络数据包来自宿主虚拟机本身,转第3步,否则说明该网络数据包来自客户虚拟机,则转第7步;
第3步在所有网络接口卡中选取流量最小的一块网络接口卡分配给该网络数据包;
第4步在宿主虚拟机内部对所分配的网络接口卡mac地址与网络数据包的源mac地址进行一次比较,如果两个mac地址一样则网络接口卡直接发送网络数据包,转第11步,如果两个mac地址不一样,则转第5步;
第5步在所有的网络接口卡中找到与该网络数据包源mac地址一样的网络接口卡,并将该网络接口卡的mac地址与分配的网络接口卡的mac地址动态互换;
第6步通过分配的网络接口卡发送该网络数据包,转第11步;
第7步网络数据包来自客户虚拟机,则根据客户虚拟机的ip地址分配一块网络接口卡;
第8步将分配的网络接口卡的mac地址更改为网络数据包的源mac地址;
第9步通过分配的网络接口卡发送网络数据包;
第10步将分配的网络接口卡的mac地址还原;
第11步流程结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010226805XA CN101909054B (zh) | 2010-07-15 | 2010-07-15 | 虚拟化环境中多网络接口卡聚合的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010226805XA CN101909054B (zh) | 2010-07-15 | 2010-07-15 | 虚拟化环境中多网络接口卡聚合的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101909054A CN101909054A (zh) | 2010-12-08 |
CN101909054B true CN101909054B (zh) | 2012-12-19 |
Family
ID=43264373
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010226805XA Expired - Fee Related CN101909054B (zh) | 2010-07-15 | 2010-07-15 | 虚拟化环境中多网络接口卡聚合的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101909054B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8868710B2 (en) * | 2011-11-18 | 2014-10-21 | Amazon Technologies, Inc. | Virtual network interface objects |
CN102523204B (zh) * | 2011-12-02 | 2014-08-27 | 华中科技大学 | 面向QoS的虚拟机网络带宽分配系统 |
CN103176780B (zh) * | 2011-12-22 | 2016-03-30 | 中国科学院声学研究所 | 一种多网络接口绑定系统及方法 |
CN102664972B (zh) * | 2012-05-11 | 2015-04-08 | 中科方德软件有限公司 | 一种虚拟网络中地址映射方法和装置 |
CN103229489B (zh) * | 2012-12-21 | 2016-05-25 | 华为技术有限公司 | 虚拟机控制策略的配置方法和交换机 |
CN103139039B (zh) * | 2013-02-25 | 2016-07-13 | 汉柏科技有限公司 | 一种实现流量隔离控制的虚拟网络及构建方法 |
CN103731514B (zh) * | 2013-12-29 | 2017-01-18 | 国云科技股份有限公司 | 一种虚拟网络管理方法 |
CN108023837B (zh) * | 2016-10-31 | 2020-11-20 | 鸿富锦精密电子(天津)有限公司 | 虚拟网络交换机系统及其建立方法 |
CN106850661A (zh) * | 2017-02-28 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种虚拟化安全监控方法和系统 |
CN107241460B (zh) * | 2017-06-30 | 2020-06-23 | 联想(北京)有限公司 | 一种浮动地址的处理方法及电子设备 |
CN108965494A (zh) * | 2018-07-05 | 2018-12-07 | 郑州云海信息技术有限公司 | 数据系统中数据传输方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101001177A (zh) * | 2005-12-15 | 2007-07-18 | 辉达公司 | 用于高级负载均衡及故障排除功能性的单一逻辑网络接口 |
WO2009042919A2 (en) * | 2007-09-26 | 2009-04-02 | Nicira Networks | Network operating system for managing and securing networks |
CN101459618A (zh) * | 2009-01-06 | 2009-06-17 | 北京航空航天大学 | 虚拟机网络的数据包转发方法和装置 |
-
2010
- 2010-07-15 CN CN201010226805XA patent/CN101909054B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101001177A (zh) * | 2005-12-15 | 2007-07-18 | 辉达公司 | 用于高级负载均衡及故障排除功能性的单一逻辑网络接口 |
WO2009042919A2 (en) * | 2007-09-26 | 2009-04-02 | Nicira Networks | Network operating system for managing and securing networks |
CN101459618A (zh) * | 2009-01-06 | 2009-06-17 | 北京航空航天大学 | 虚拟机网络的数据包转发方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101909054A (zh) | 2010-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101909054B (zh) | 虚拟化环境中多网络接口卡聚合的方法 | |
US9727386B2 (en) | Method and apparatus for network resource virtual partitioning | |
JP6087922B2 (ja) | 通信制御方法及びゲートウェイ | |
CN105284080B (zh) | 数据中心的虚拟网络管理方法及数据中心系统 | |
CN103797774B (zh) | 一种网络地址转换设备及方法 | |
CN103201989B (zh) | 控制数据传输的方法、装置和系统 | |
CN106301859B (zh) | 一种管理网卡的方法、装置及系统 | |
CN107026890A (zh) | 一种基于服务器集群的报文生成方法和负载均衡器 | |
CN103176780B (zh) | 一种多网络接口绑定系统及方法 | |
CN102577256A (zh) | 在虚拟化网络基础设施情况下用于透明云计算的方法和设备 | |
CN100591048C (zh) | 网络流量负载均衡的方法以及第三层交换设备 | |
US8031632B2 (en) | Method and system of implementing virtual local area networks (VLANS) with teamed communication ports | |
CN103650424A (zh) | 一种家庭网关服务功能的实现方法和服务器 | |
CN104780088A (zh) | 一种业务报文的传输方法和设备 | |
WO2009042397A1 (en) | Method and system for virtual port communications | |
CN107666419B (zh) | 一种虚拟宽带接入方法、控制器和系统 | |
CN108924268A (zh) | 一种容器云服务系统及pod创建方法、装置 | |
CN104869058A (zh) | 一种数据报文转发方法和装置 | |
US7606141B2 (en) | Implementing N-way fast failover in virtualized Ethernet adapter | |
CN103200085A (zh) | 一种实现vxlan报文线速收发的方法及系统 | |
CN102790777A (zh) | 网络接口适配器注册方法及驱动设备、服务器 | |
CN102523302A (zh) | 虚拟机集群的负载均衡方法、服务器及系统 | |
CN106453023B (zh) | 一种用于物理设备与虚拟网络的通信方法、设备与系统 | |
CN110830574B (zh) | 一种基于docker容器实现内网负载均衡的方法 | |
CN100414936C (zh) | 平衡网络文件系统服务器多网卡间负载的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121219 Termination date: 20150715 |
|
EXPY | Termination of patent right or utility model |