网络虚拟化技术

网络虚拟化似于服务器虚拟化,可以在一个物理网络上创建多个虚拟网络。网络虚拟化出现的时间并不长,是随着IaaS的出现而出现。

IaaS中的核心技术是虚拟化,包括服务器虚拟化,存储虚拟化和网络虚拟化。其中服务器虚拟化和存储虚拟化出现的时间远远早于IaaS的概念,可以说非常成熟,有很多产品。成熟的关键标识就是行业巨头(们)的出现,行业巨头一般会占据绝大多数的市场份额。有一个结论是,在IT行业,行业的前两名会占据80%以上的市场份额。

网络虚拟化出现的时间并不长,市场没有出现行业巨头。另外目前网络虚拟化的市场应该还处在开发阶段,应该还没有很多用户开始在自己的IT基础设置中施行网络虚拟化。不过随着IaaS的逐渐推广,网络虚拟化也会随之普及。当前的网络虚拟化处于一个群雄并起的阶段,最终谁能赢得战争犹未可知。

目前的网络虚拟化技术主要有这么几种:
VEB技术,代表产品是OpenvSwitch,背后是VMware
VEPA技术,背后是HP,Juniper,brocade等
vn-tag技术,背后是Cisco

二层(L2)网络拓扑结构
本文讨论的网络指二层网络,L2网络拓扑主要有flat和vlan两种:
flat:
平坦结构。所有接入网络的节点(node)都处于单一的地址空间中,网络节点之间可以互相通信。一个节点可以和网络中的任意节点通信。
vlan:
网络被划分为若干个地址空间,每个地址空间形成一个vlan。vlan形成了一个二维地址空间,(vlan id, mac address)。只有出于一个vlan中的节点才能互相通信,vlan实现了一定程度的网络隔离。vlan的上限是4094个,对于私有云来说是足够的,但对于公有云则不足。业界又有了vxlan,gre等技术来克服vlan的数量限制。

网络虚拟技术所解决的问题
一个是虚拟接入:
将虚拟机接入到接入交换机中,并且交换机可以识别虚拟机。目标是交换机能够像管理物理机一样管理虚拟机,包括配置网络策略,监控虚拟机流量等。传统交换机对物理机的管理,都可以应用到虚拟机上。目前的交换机中是无法实现对虚拟机的管理的。关键问题是 数据帧不能发往收到改数据帧的端口。这个限制是STP协议的主要规则,而传统交换机都是采用STP协议工作的。虚拟环境中,一个交换机端口(port)上可以接入多个虚拟机(传统方式中,一个端口只能接入一台物理机,端口和物理机一一对应),当这些虚拟机之间需要通信的话,导致该端口接受的数据帧被发往该端口,违背了STP原则。后面会介绍目前的 技术方案如何解决这个问题。

虚拟通道
解决如何让虚拟机连到物理接入交换机上。虚拟机无法直接连接到接入交换机。目前的多种虚拟化结束中,都 采用一种叫做虚拟交换机(VEB,virtual ethernet bridging)的方式来实现虚拟机到接入交换机的 连接。VEB可以通过软件或硬件方式来实现。
软件VEB
软件VEB可以直接实现在Hypervisor中,也可以独立于Hypervisor独立实现。前者如Vmware exsi, MS hypervisor等,后者如linux bridge,open vswitch等。系统上的所有虚拟机接入虚拟交换机,虚拟交换机通过本机网卡接入交换机。一个系统中可以存在多个虚拟交换机,虚拟机也可以接入不同的虚拟交换机来实现不同的网络拓扑结构和网络隔离。
网络虚拟化技术_第1张图片
硬件VEB
有些虚拟软件中支持bypass with Harware 功能,这个就是指硬件VEB。硬件VEB通常在网卡上实现(SR-IOV(Single Root I/O Virtualization)技术),虚拟机直接接入网卡提供的端口。
硬件VEB比软件VEB有更好的转发效率和转发延迟,同时有更低的CPU占用率。

下面谈谈主流的网络虚拟化技术:
VEB技术:
VEB技术解决了前面所说的虚拟通道问题,但没有解决虚拟接入问题。采用VEB技术,传统的接入交换机还是无法对虚拟机进行管理,识别虚拟机流量。VEB技术不在使用传统交换机进行虚拟机管理,而是完全采用虚拟交换机取代传统交换机的角色,传统交换机只用来承载流量。 这种方案采用虚拟交换机解决虚拟接入问题,采用VEB解决虚拟通道问题。

VEB根据数据帧目的地址决定如何处理:
该目的地址是该节点上的另一台虚拟机,直接转发;
是其他节点上的虚拟机,通过物理网卡转发L2网络上,这个虚拟机所在节点的VEB会接受该数据包并转给虚拟机。

VEB技术的代表是Open vswitch。Open vswitch中完全采用虚拟交换机(open vswtich)对虚拟交换机进行管理和流量控制,传统的物理交换机只用来连接个网络节点。物理交换机的角色类似于传统的集线器(Hub),其上不在进行任何网络配置(这导致了VEB无法和已有的L2网络配置兼容)。Open vswitch本身提供了强大的功能来替代传统的物理交换,支持多种管理界面包括远程管理等,支持openflow协议。可以参考Open vswitch官网网站。

VN-Tag技术:
由cisco提出的技术方案,基本思想是在传统的以太网数据帧中加入一个新的标签(vn-tag)以便让物理交换机识别虚拟机并进行管理。 这种方案中采用vn-tag技术解决虚拟接入问题,采用VEB解决虚拟通道问题。

VEB对虚拟机发出的数据帧添加vn-tag,然后发送到接入交换机。接入交换机根据vn-tag决定数据转发目的地;目的地上的VEB根据vn-tag转发数据到相应的虚拟机上。这种方案中,需要通信的两台虚拟机即使都在一台物理机上,他们的数据交换也需要经过接入交换机处理。VEB可以通过软件或硬件方式实现。在vn-tag方案中,这个VEB被叫做port extender,只提供虚拟通道,不在处理路由寻址。

这项技术主要包括如下设备:
vn-tag网卡,用来实现VEB(port extender)。
vn-tag交换机,管理虚拟机,识别虚拟机流量。
支持vn-tag技术的hypervisor,将虚拟机虚拟网卡接入到vn-tag网卡中。目前vmware的产品可以支持vn-tag网卡。

vn-tag对现有的数据帧做出了改变,所以这套技术和目前的L2网络无法兼容。目前的交换机不能识别vn-tag数据帧。cisco已经将这项技术提交成了技术标准 802.1BR - Bridge Port Extension http://www.ieee802.org/1/pages/802.1br.html

VEPA技术:
由HP提出的技术方案,全称是virtual ethernet port aggregator。vepa包括了标准版和增强版。
标准版
标准版没有实现虚拟接入技术,交换机无法识别虚拟机。标准版允许接入同一个端口的虚拟机之间通过该端口实现数据交换,不在需要VEB实现数据交换。标准版通过改写STP协议,允许来自同一个端口的数据被转发回去,叫做发卡弯。
标准版对现有的数据帧没有修改,只要升级VEB和交换机的软件,就可以实现。vepa不需要采购新的网络设备,只需要升级软件即可。

增强版
实现对虚拟机的管理和流量监控。vepa的思路也是利用在数据帧中加入标签还识别虚拟机,但是vepa利用了已有的技术标准,而不是引入新的标签。vepa采用了802.1ad标准在vlan标签外增加了S-Tag,以实现虚拟机识别。这个技术可以实现vn-tag的一切功能,有点还是不需要采购新的网络设别,只需要升级软件即可。

为了使用vepa,也需要相应hypevisro的支持。linux中的macvtap驱动可以支持vepa技术,http://virt.kernelnewbies.org/MacVTap

vepa也有相应的技术标准提交, 802.1Qbg - Edge Virtual Bridging
http://www.ieee802.org/1/pages/802.1bg.html
除了HP,该阵营还有诸如juniper,brocade的支持。

本文只是简要介绍了网络虚拟化技术,如需深入了解,还请查找相应资料。这几种技术之间的战争只是刚刚开始,尤其是vepa和vn-tag之间的交锋。


参考书
云计算和大数据时代网络技术揭秘 徐立冰著,文中的图片均来自此书。

补充资源,大家可以看看这篇文章
http://download.csdn.net/detail/zhengleiguo/7436241
http://download.csdn.net/detail/zhengleiguo/7436301





你可能感兴趣的:(虚拟化)