剖析系统虚拟化(6)- Virtual Switch 的主要功能

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享




因为本人并不像很多弯友那样精于网络,并在写此文时常感力不从心,所以希望大家能对本文多多指正!!!

 

因为Virtual Switch采用了模块化的架构,所以能非常方便地添加或者删除功能,使Virtual Switch不仅能保持其轻量的体积,而且能提供不逊于交换机的功能。 那么接下来,就跟大家介绍一下Virtual Switch的主要功能:

第二层转发(Layer 2 Forwarding)

第二层转发堪称交换机最重要的功能,而Virtual Switch身为交换机一个变种,当然肯定也是具备这个功能。那么Virtual Switch是怎么实现这个功能的?

Virtual Switch自带一个核心转发引擎(core Layer forwarding engine)。这个引擎首先会主动学习接入虚拟机的MAC地址,从而生成转发表(Forwarding Table)。接着,在处理以太网帧时,引擎会先查看每个以太网帧(Frame)的MAC地址,之后这个帧转发给相对应的端口。因为其只处理以太网帧的头部(headers),所以在架构既保持了精简,又可支持很多扩展功能。

还有一点值得注意,也在前篇有所谈到的,那就是一个主机上的所有的Virtual Switch是无法直接沟通的,如果需要沟通的话,那就需要通过上层的物理交换机才能沟通,虽然这个设计有一个非常明显的缺点就是,在同一主机上关联的虚拟机(比如WAS VM和DB2 VM)必须通过外部的交换机才能进行通信,从而还产生多余的网络开支,但是这种做法却能简化了架构。还有,在vSphere 4中已经推出了VMCI(Virtual Machine Communication Interface)来解决这个问题,VMCI主要是提供一个接口让虚拟器内的程序来调用,通过这个接口能在一个主机上的多个虚拟机之间进行直接的通信,而且无需经过Virtual Switch和更上层的交换机,这样将有效地降低网络通信所产生的开支,但是这需要修改虚拟机上的软件,所以相对麻烦,并可以认为VMCI只适用于对虚拟机间通信要求非常高的情况。

VLAN

创建和管理VLAN的功能也堪称虚拟机的标配,那么Virtual Switch也当仁不让地提供这个功能。

首先,介绍一下VLAN,VLAN是让一群身处不同地点的主机集合在一个广播域下。一个VLAN在功能上和LAN是一致的,但可以将隶属于不同交换机下的主机组合起来成为一个LAN。

VLAN主要在下面三个方面和传统的LAN相比有一定的优势:

  1. 灵活,因为VLAN能基于逻辑分区而不是物理位置进行分区,所以能使用户能过不通过重新设置网络就能将机器转移到新的地点。这将不仅使网络设置更灵活,而且能减少设置网络的时间。
  2. 速度快,在传统网络中,因为都属于一个广播域的原因,使得一个以太网帧需要被发送到一个LAN内所有的主机,这将极大地影响速度,对于一个用户特别多的LAN影响更大。通过VLAN能够将一个大的广播域分开,这不仅能减少网络带宽的消耗,而且能减少对CPU的使用。
  3. 节省开支,在过去,一般都通过添加路由器来分割大的广播域,而VLAN的诞生,则免去这一大笔开支。

在使用VLAN时最常用到的协议是IEEE 802.1Q(常被称为 VLAN Tagging),它是通过整合Cisco的ISL(Inter-Switch Link)和3Com的VLT(Virtual LAN Trunk)这两个私有协议发展而来。简单的来说,VLAN主要是利用Ethernet II 帧的”Ether Type”字段来实现其功能。

那么Virtual Switch的VLAN和交换机的VLAN有什么区别哪?在功能方面两者基本一致,但是虚拟机的范围更小。

在Virtua Switch层面主要有三种构建VLAN的方式:

  1. Virtual Guest Tagging(VGT)模式 – 在这个模式下,由Guest OS来处理网络包并添加VLAN标记(Tagging)来实现VLAN的功能。
  2. External Swicth Tagging (EST)模式 – 这种模式,常被用于物理网络环境中,主要由物理的交换机来处理VLAN标记,而主机接收到的包是没有VLAN信息的。
  3. Virtual Switch Tagging (VST)模式 – 这是在VMware环境最常用的模式,由Virtual Switch来处理VLAN标记,并对Guest OS是透明的,使得Guest OS所接收和发送的包都不包含VLAN信息。

下图是一个VLAN的示例:

VMware Vlan

图1 VLAN的示例(来源于参[2])

安全功能

Virtual Switch的安全工作主要在三个方面做文章:

  1. Promiscuous mode(混杂模式),这个模式也是物理网卡的运行模式之一,网卡通常被设定为只接收发送到该地址的数据包,即使通过以太网接收到传送给其他地址的数据包,也不会读取而直接废弃。但如果网卡设定为混杂模式,那么网卡一概捕捉发送给它的数据包,不论数据包发送到哪个地址,并将其发送到上层软件,通过这个模式可以监视到流经这块网卡的所有数据。在虚拟环境中,这个模式也能起到类似作用,虚拟网卡能收到所有经过这个VLAN的网络包。如果打开这个模式的话,一个虚拟机的信息极有可能被另一台恶意的虚拟机探知。
  2. MAC Address Change(改变MAC地址),因为对MAC地址的修改是ARP Poisoning攻击中非常重要的一步,需要在虚拟机运行的过程中锁定MAC地址,不让它被修改。
  3. Forged Transmit(伪造的传输),这个攻击和上面非常相似,也是和修改MAC地址相关的,只不过这种攻击发动方不是之前来自外网的,而是来自于虚拟机内部。

综上所述,Virtual Switch是通过关闭Promiscuous mode,锁定MAC地址和屏蔽Forged Transmit来提高安全性。

除了上面这样,Virtual Switch还支持一些和安全相关的特性,比如。Virtual Switch不信任通过它的网络帧中的用户数据,Virtual Switch会复制它受处理所有的网络帧以便于转发和过滤,Virtual Switch 不支持Dynamic Trunking (802.3ad)和“native VLAN”, 同时因为Virtual Switch不需要通过网络来获知和它相连虚拟机的MAC地址,所以它能很好地抵挡MAC flooding的攻击。

流量管理

虽然分组交换在成本和灵活性这两方面,比电路交换有优势,但是因为分组交换所面对流量的大小不确定的情况,使其不得不对流量进行复杂的管理。而Virtual Switch作为分组交换的延伸,自然也要处理这个问题。VMware的Virtual Switch也提供了流量管理功能,它能控制Virtual Switch流量的大小,但只针对发出流量(outbound traffic only),共可设置三个选项,其一是Average Bandwidth,也就是能保证的带宽。其二是Peak Bandwidth,控制的是发出流量所占带宽的最大值,其三是Burst Size,指的是每次超过Average Bandwidthd的大小。

NIC Teaming

NIC Teaming 是VMware在其第三代企业级虚拟机产品(VMware Infrastructure 3)中发布的一个特性,其能让一个Virtual Switch连接多个物理网卡,这样能达到负载均衡和故障转移的效果。

负载均衡

在普通的物理环境中,会经常使用硬件形式(比如F5)或者软件形式(比如LVS)的负载均衡器来将大量的负载分发给不同的主机。在虚拟环境中,实现负载均衡的方法也是比较类似的,Virtual Switch会作为一个网关来接收请求,之后按照选定的模式发送给相应的虚拟机。主要有四种模式:其一是基于Virtual Switch的端口,其二是基于基于Mac地址,其三是基于IP Hash,其四是Explicit Failover Order。

vMotion

vMotion是VMware版本的动态迁移。动态迁移堪称虚拟化技术的一个杀手锏,它能在虚拟机运行的时候将虚拟机从一台主机迁移到另一台主机,这不仅能将虚拟机从出现情况或者性能不佳的主机移出,而且能通过将多个虚拟机动态进行整合来优化资源。关于动态迁移的细节,将会在今后讲述,敬请期待。而Virtual Switch会参与到整个迁移过程中,并起到传输内存页面等作用。

其他功能

除了上面这些功能之外,Virtual Switch还提供有用的两个功能:

  1. 网络失效侦查(Network Path Failure Detection ),主要支持两种模式,其一是Beacon Probing,其二是Link State。
  2. 支持Cisco Discovery  Protocol(CDP),这个协议用来获取相邻设备的协议地址以及发现这些设备的平台信息。在虚拟环境中,它的作用是获得Virtual Switch上面的物理交换机的配置信息,比如port的设置。

本篇结束,下篇将关注Distributed Virtual Switch。

参考资料:

  1. VMware Virtual Networking Concepts
  2. The Great vSwitch Debate
  3. Virtual LAN
  4. Creating & Using Virtual Networks
(2个打分, 平均:5.00 / 5)

雁过留声

“剖析系统虚拟化(6)- Virtual Switch 的主要功能”有13个回复

  1. Lucifer 于 2010-05-10 10:03 下午

    VMCI是一种接近半虚拟化的解决方案,通过有点像Hyper-V的VBus的东西来提供一个快速共享架构,和网络倒是没什么特定关系。不过,VMCI Socket API就在VMCI的基础上实现了Berkeley UNIX sockets和Windows sockets,因此可以用来进行网络通信

  2. IKE 于 2010-05-10 10:28 下午

    @Lucifer 谢谢指正!!!

  3. IKE 于 2010-05-11 3:28 上午

    还有,谢谢首席的编辑工作!

  4. HJ 于 2010-05-13 9:20 上午

    不知道VMWARE的虚拟交换机的性能如何?个人猜想因为所有的包都是在内存中的,估计采用指针交换的方式就可以了,但是很好奇其性能能达到多少。

  5. 过客 于 2010-05-13 5:19 下午

    我不想偏向任何一方。但本系列到目前越来越有演变为软文的趋势了。

    探求业界领先的公司的技术趋势固然好,但应着重在技术本身的实现优缺点剖析上吧。跟着忽悠跑怕不是弯曲所追求的吧。

  6. IKE 于 2010-05-14 1:05 上午

    TO过客
    为什么不对优缺点进行深入剖析?这个问题问的好,其实我也希望能进行深入地剖析,那么为什么不做呢?原因很简单,因为缺乏相关数据和资料,而且我个人精力有限,所以主要是根据现有的资料进行总结,如果其它资料没有相关的内容,我也无能为力,关键是能将一些大家不是特别熟悉的东西介绍给大家。

  7. IKE 于 2010-05-14 1:07 上午

    to HJ:
    我个人也没测过,反正根据我个人使用经验和VMware官方的资料,虚拟交换机应该不是性能的瓶颈!

  8. Lucifer 于 2010-05-14 1:36 上午

    通常的hyper-v和vmware gsx server等级的虚拟交换机是个瓶颈,esx server好点;纯软件的虚拟交换机在较多虚拟机的时候性能比较低,目前虚拟化的网络部分也在朝着“硬件辅助”的方向发展,如VMDQ和VMDC技术的出现

  9. droplet 于 2010-05-14 1:52 上午

    VMware 用console太麻烦了,能不能把console/keyboard/mouse等虚拟去掉,都从网络等上去。或者一个机器上,多个console直接从telnet上console口。桌面虚拟化的东西,对服务器来说,并不一定要用到。

  10. ikewu83 于 2010-05-14 4:57 下午

    to droplet:
    你的意思是不是ESX取得那个Service Console?其实VMware已经推出了去掉Service Console的ESXi版本。但我个人感觉因为已经有很多第三方应用和脚本都依赖这个Console来完成管理工作,所以短时间内应该不会去掉。

  11. federal grants 于 2010-05-21 1:57 上午

    It’s posts like this that keep me coming back and checking this site regularly, thanks for the info!

  12. CNA work in the health-care field 于 2010-05-24 9:03 上午

    Great information! I’ve been looking for something like this for a while now. Thanks!

  13. 胡不才 于 2010-05-24 7:24 下午

    to droplet:俺没玩过ESX,但是对于vmware workstation 6.5/7.0,有一个VNC的选项,激活之后可以直接用vnc viewer联入,这相当于IP-KVM了吧