(ZZ) 剖析系统虚拟化(5)——Virtual Networking简介
首先,虚拟化有一个非常核心的思想,就是“一致性”,也就是说,要让Guest OS无法察觉它是在一个虚拟化的平台上工作的。为了达到这个目的,VMM就需要虚拟出一个在功能上和物理的完全一致的虚拟网卡(Virtual Ethernet Adapter)让Guest OS使用。其次,虚拟化还有一个非常重要的特性,就是“超额预订(Oversubscribed)”,也就是说,在大多数情况下,一台物理机需要承载多个虚拟机,使得虚拟网卡的数量远大于实际物理网卡的数量,所以一个虚拟网卡无法直接占有一个物理网卡,那么为了解决这个问题需要在虚拟网卡和物理网卡之间引入新的一个抽象层,称为Virtual Switch,在功能上和物理的交换机接近,主要执行虚拟网卡和物理网卡之间包的转发,而且还提供诸如VLAN和安全等高级功能来更好地管理网络流量。还有一点需要注意,虽然Virtual Switch和物理网卡常见配比为1:1,但是有时候为了带宽和HA的原因,Virtual Switch能控制多块网卡。下面是VMware vSphere的Virtual Networking架构:
图1 Virtual Networking 的架构图(参【3】)
下面将为大家分别介绍虚拟网卡和Virtual Switch:
虚拟网卡(Virtual Ethernet Adapter)
在vSphere中,主要有三种虚拟网卡可供虚拟机选择:
- vLance 虚拟网卡,它的模型是AMD Lance PCNet32网卡,它在操作系统的兼容方面表现优异,而且能在没有安装VMware Tools的情况下使用,常用于32位虚拟机。
- e1000 虚拟网卡,它是对Intel E1000网卡近乎100%的模拟,也能在没有安装VMware Tools的情况下使用,而且对32位系统和64位系统都有支持,但常用于64位虚拟机。
- vmxnet 系列虚拟网卡,它是一个半虚拟化设备,专为VMware虚拟化环境设计,并随着VMware Tools安装到虚拟机上。这个网卡是主要为高性能度身定做的,而且随着VMware产品的不断更新,这个系统已经出现了性能更好的vmxnet2和vmxnet3,特别是最近推出的vmxnet3,它不仅支持诸如MSI(Message Signaled Interrupt)/MSI-X和VMDirectPath等性能优化技术,而且能非常好地支持IPv6。
对于这三种网卡的选择,其实非常简单,如果追求速度,当然是选择vmxnet系列虚拟网卡,但如果嫌给虚拟机安装VMware Tools麻烦的话,那就在32bit系统上使用vLance,在64bit系统上使用e1000。
因为虚拟网卡的数量会远胜于实际物理网卡的数量,所以在管理方面会让人很头疼,所以VMware引入中一个非常重要的概念来简化虚拟网卡的管理,而且这个概念仅存在于Virtual Networking中,那就是Port Group。在物理环境,很难找到相似的概念,与Port Group最接近的就属存在于某些Cisco交换机中SmartPort特性。虽然Port Group从其字眼上很难理解其含义,但是可以认为它是虚拟网卡的配置模版,也就是说,如果两张虚拟网卡使用同一个Port Group,那么这两种虚拟网卡在网络设置上是一致的。Port Group主要包含下面这些属性:
- Virtual Switch的名字。
- VLAN的ID。
- NIC Teaming的策略。
- Layer 2的安全选项。
- 流量管理的参数。
Virtual Switch
简单的来说,Virtual Switch就是安装在vSphere主机的软件版的交换机以管理本地虚拟机的网络流量,比如虚拟机管理流量,vMotion流量,IP存储(iSCSI,NFS)流量和普通数据流量等。
它主要有三方面功能:
- 最基本的第二层转发(Layer 2 forwarding)。
- 常用的创建和管理VLAN的功能,通过创建VLAN不仅能对各种流量进行隔离,而且能够为不同的VLAN设置不同服务水平(Service Level),以满足不同的需要。
- 除了上面这个两个常见功能之外,Virtual Switch还支持安全功能,,流量管理,NIC Teaming,负载均衡,网络失效检查等功能。
虽然在功能上,Virtual Switch和普通的交换机都是非常相似的,但是它们之间还是存在一些区别:
- Virtual Switch不需要通过探听(Snooping)网络流量来获知MAC地址,因为它通过诸如访问虚拟机的配置文件等手段来获知虚拟机的MAC地址。
- Virtual Switch不支持能减少机器之间多余回路(Loop)的生成树协议(Spanning Tree Protocol),其原因是VMware架构强调一层的网络架构,也就是说,一个主机上的所有的Virtual Switch是无法直接沟通的,如果需要沟通的话,那就需要通过物理的交换机,也就是主机本身的网络架构就是平的,所以主机上的交换机就没有使用生成树协议的需要。