传统的linux网络虚拟化技术采用的是tap+bridge方式,将虚拟机连接到虚拟的tap网卡,然后将tap网卡加入到bridge。bridge相当于用软件实现的交换机,这种解决方案实际上就是用服务器的cpu通过软件模拟网络。
传统的tap+bridge虚拟化网络技术,这种技术有三个缺点:
1. 每台宿主机内都存在bridge会使网络拓扑变复杂,相当于增加了交换机的级联层数;
2. 同一宿主机上的虚拟机之间的流量直接在bridge完成交换,使流量监控、监管困难;
3. bridge是软件实现的二层交换技术,会加大服务器的负担。
针对云计算中的复杂网络问题,业界主要提出了两种扩展技术标准:802.1Qbg 与 802.1Qbh。802.1Qbh Bridge Port Extension 主要由Vmware与 Cisco 提出,尝试从接入层到汇聚层提供一个完整的虚拟化网络解决方案,尽可能达到软件定义一个可控网络的目的。它扩展了传统的网络协议,因此需要新的网络设备支持,成本较高。802.1Qbg Edge Virtual Bridging (EVB) 主要由 HP 等公司联合提出,尝试以较低成本利用现有设备改进软件模拟的网络。
802.1Qbg 的一个核心概念是 VEPA(Virtual Ethernet Port Aggregator ),简单来说它通过端口汇聚和数据分类转发,把宿主机上原来由 CPU 和软件来做的网络处理工作转移到接入层交换机上,减少宿主机CPU 负载,同时使得在一级的交换机上做虚拟机网络流量监控成为可能,从而更清晰地分割服务器与网络设备的工作范围,方便系统的管理。
为支持新的虚拟化网络技术,Linux 引入了新的网络设备模型:MACVTAP。MACVTAP 的实现基于传统的 MACVLAN。和 TAP 设备一样,每一个 MACVTAP 设备拥有一个对应的 Linux 字符设备,并拥有和 TAP 设备一样的 IOCTL 接口,因此能直接被 KVM/Qemu使用,方便地完成网络数据交换工作。引入 MACVTAP 设备的目标是:简化虚拟化环境中的交换网络,代替传统的 Linux TAP 设备加 Bridge 设备组合,同时支持新的虚拟化网络技术,如 802.1 Qbg。
macvtap设备有三种不同的工作模式:Virtual Ethernet Port Aggregator(VEPA)、Bridge、Private。
-
VEPA
在这种模式下,同一物理网卡下的macvtap设备之间的流量也要发送到外部交换机,再由外部交换机转发回到服务器,前提是交换机必须支持hairpin模式; -
Bridge
这种模式类似传统Linux Bridge,同一物理网卡下的macvtap设备可以直接进行以太网帧的交换,不需要外部交换机的介入; -
Private
在Private模式下,同一物理网卡下的macvtap设备互相无法连通,无论外部交换机支不支持hairpin模式。
================= End