www.chinacloud.cn/upload/2014-07/14070408156867.pdf
与服务器虚拟化类似,网络虚拟化旨在在一个共享的物理网络资源之上创建多个虚拟网络(VN),同时每个虚拟网络可以独立地部署以及管理[4]。网络虚拟化概念及相关技术的引入使得网络结构的动态化和多元化成为可能,被认为是解决现有网络体系僵化问题,构建下一代互联网最好的方案[1-3]。然而网络虚拟化技术体系庞大,涉及领域众多,易于让人产生认识上的困惑,因此对于网络虚拟化的合理定义就显得尤为重要。作为虚拟化技术的分支,网络虚拟化本质上还是一种资源共享技术。有鉴于此,网络虚拟化应当泛指任何用于抽象物理网络资源的技术,这些技术使物理网络资源功能池化,达到资源任意的分割或者合并的目的,用以构建满足上层服务需求的虚
拟网络。
网络虚拟化的一般结构如图1 所示。在这种架构之下,用户可以根据需要定制自己的网络,用户的需求会被一个虚拟网络层接纳,虚拟网络层完成需求到底层资源的映射,再将网络以服务的形式返回给用户。这种模式很好地屏蔽了底层的硬件细节,简化了网络管理的复杂性,提升了网络服务的层次和质量,同时也提高网络资源的利用率。
网络虚拟化过程中主要诞生过 4 类过渡技术:虚拟局域网络(VLAN)、虚拟专用网络(VPN)、主动可编程网络(APN)、覆盖网络。网络虚拟化的研究现在主要集 中于 3 个领域:云计算应用、平台化实现、软件定义网络。认为网络虚拟化的未来在 性能保障、可靠性、易用性和完备性等方面需要加强,为此未来的网络虚拟化需要 优化自身服务结构,并向无线网络、光网络等领域推广,此外还需要提供更加友好 的可编程接口(API)以及网络功能。
http://qing.blog.sina.com.cn/tj/88ca09aa33000833.html
引子
接触网络虚拟化纯属偶然。作为研究院微博五毛小分队的成员,撰出一条微博是每天的任务。那天无意中抓取了一条新闻:Xsigo公司推出了业界第一个数据中心网络全虚拟化解决方案。巧的是Xsigo公司的方案是基于Infiniband技术的,而我最近的项目使我对Infiniband略懂,所以就重点关注了一下。这一关注不要紧,才发现里面水很深。不管是传统IT豪强还是网络巨人都对这一领域虎视眈眈,谋篇定局,更有无数的创业者们在此展开深耕。 抱着对技术要略懂的心态,我入水一探究竟。这篇博文算是对我这次涉水的总结,网络虚拟化发展到现在牵涉的技术非常多,每种技术都可以单独写一篇文章来介绍,限于我的精力和知识水平只能给大家做个整体的简单介绍,不足之处还请各位批评指正。如果读者对某种技术感兴趣可以搜索相关资料做更详细的了解。
什么是网络虚拟化
首先我们需要明确一个问题,什么是网络虚拟化,网络虚拟化简单来讲是指把逻辑网络从底层的物理网络分离开来。这个概念产生的比较久了,VLAN,VPN, VPLS等 都可以归为网络虚拟化的技术。近年来,云计算的浪潮席卷IT界。几乎所有的IT基础构架都在朝着云的方向发展。在云计算的发展中,虚拟化技术一直是重要的推动因素。作为基础构架,服务器和存储的虚拟化已经发展的有声有色,而同作为基础构架的网络却还是一直沿用老的套路。在这种环境下,网络确实期待一次变革,使之更加符合云计算和互联网发展的需求。云计算的大环境下,网络虚拟化的定义没有变,但是其包含的内容却大大增加了。
云计算环境下的网络虚拟化需要解决端到端的问题,笔者将其归纳为三个部分:
(一)第一部分是服务器内部。随着越来越多的服务器被虚拟化,网络已经延伸到Hypervisor内部,网络通信的端已经从以前的服务器变成了运行在服务器中的虚拟机,数据包从虚拟机的虚拟网卡流出,通过Hypervisor内部的虚拟交换机,在经过服务器的物理网卡流出到上联交换机。在整个过程中,虚拟交换机,网卡的I/O问题以及虚拟机的网络接入都是研究的重点。
(二)第二部分是服务器到网络的连接。10Gb以太网 和Infiniband等技术的发展使一根连接线上承载的带宽越来越高。为了简化,通过一种连接技术聚合互联网络和存储网络成为了一个趋势。
(三)第三部分是网络交换,需要将物理网络和逻辑网络有效的分离,满足云计算多租户,按需服务的特性,同时具有高度的扩展性。
下面我就围绕这三个方面来讲述网络虚拟化中的一些主要技术和标准。
服务器内部
I/O虚拟化
多个虚拟机共享服务器中的物理网卡,需要一种机制既能保证I/O的效率,又要保证多个虚拟机对用物理网卡共享使用。I/O虚拟化的出现就是为了解决这类问题。I/O虚拟化包括了从CPU到设备的一揽子解决方案。
从CPU的角度看,要解决虚拟机访问物理网卡等I/O设备的性能问题,能做的就是直接支持虚拟机内存到物理网卡的DMA操作。Intel的 VT-d技术及 AMD 的IOMMU技术通过DMARemapping 机制来解决这个问题。DMARemapping机制主要解决了两个问题,一方面为每个VM创建了一个DMA保护域并实现了安全的隔离,另一方面提供一种机制是将虚拟机的GuestPhysical Address翻译为物理机的HostPhysical Address。
从虚拟机对网卡等设备访问角度看,传统虚拟化的方案是虚拟机通过Hypervisor来共享的访问一个物理网卡,Hypervisor需要处理多虚拟机对设备的并发访问和隔离等。这样Hypervisor容易行成一个性能瓶颈。为了提高性能,一种 做法是虚拟机绕过Hypervisor直接操作物理网卡,这种做法通常称作PCIpass through,VMware,Xen和KVM都支持这种技术。但这种做法的问题是虚拟机通常需要独占一个PCI插槽,不是一个完整的解决方案,成本较高且扩展性不足。 另一种做法是设备如网卡直接对上层操作系统或Hypervisor提供虚拟化的功能,一个以太网卡可以对上层软件提供多个独立的虚拟的PCIe设备并提供虚拟通道来实现并发的访问。这种方法也是业界主流的做法和发展方向,目前已经形成了标准,主要包括SR-IOV(SingleRoot IO Virtualization)和MR-IOV(Multi-RootIO Virtualization)。这方面的技术在网上已有很好的文章来做介绍,推荐想进一步了解的同学读一读:
http://t.cn/aK72XS
虚拟接入
在传统的服务器虚拟化方案中,从虚拟机的虚拟网卡发出的数据包在经过服务器的物理网卡传送到外部网络的上联交换机后,虚拟机的标识信息被屏蔽掉了,上联交换机只能感知从某个服务器的物理网卡流出的所有流量而无法感知服务器内某个虚拟机的流量,这样就不能从传统网络设备层面来保证QoS和安全隔离。虚拟接入要解决的问题是要把虚拟机的网络流量纳入传统网络交换设备的管理之中,需要对虚拟机的流量做标识。在解决虚拟接入的问题时,思科和惠普分别提出了自己的解决方案。思科的是VN-Tag, 惠普的方案是VEPA(VirtualEthernet Port Aggregator)。为了制定下一代网络接入的话语权,思科和惠普这两个巨头在各自的方案上都毫不让步,纷纷将自己的方案提交为标准,分别为802.1Qbh和802.1Qbg。关于虚拟接入也有一篇很好的文章来介绍,想深入了解的可以看看:http://t.cn/hGWnOQ
网络连接
网络连接技术一直都在追求更高的带宽中发展。比如Infiniband和10Gb以太网。在传统的企业级数据中心IT构架中,服务器到存储网络和互联网络的连接是异构和分开的。存储网络用光纤,互联网用以太网线(ISCSI虽然能够在IP层上跑SCSI,但是性能与光纤比还是差的很远)。数据中心连接技术的发展趋势是用一种连接线将数据中心存储网络和互联网络聚合起来,使服务器可以灵活的配置网络端口,简化IT部署。以太网上的FCOE技术和Infiniband技术本身都使这种趋势成为可能。
Infiniband
Infiniband 技术产生于上个世纪末,是由Compaq、惠普、IBM、戴尔、英特尔、微软和Sun七家公司共同研究发展的高速先进的I/O标准。最初的命名为SystemI/O,1999年10月,正式改名为InfiniBand。InfiniBand是一种长缆线的连接方式,具有高速、低延迟的传输特性。基于InfiniBand技术的网卡的单端口带宽可达20Gbps,最初主要用在高性能计算系统中,近年来随着设备成本的下降,Infiniband也逐渐被用到企业数据中心。为了发挥Infiniband设备的性能,需要一整套的软件栈来驱动和使用,这其中最著名的就是OFED(OpenFabrics Enterprise Distribution) ,它基于Infiniband设备实现了RDMA(remote direct memoryaccess). RDMA的最主要的特点就是零拷贝和旁路操作系统,数据直接在设备和应用程序内存之间传递,这种传递不需要CPU的干预和上下文切换。OFED还实现了一系列的其它软件栈:IPoIB(IP over Infiniband), SRP(SCSI RDMA Protocol)等,这就为Infiniband聚合存储网络和互联网络提供了基础。OFED由OpenFabrics联盟负责开发。OpenFabrics最初叫做OpenIB,从2006年开始OpenIB在Infiniband之外也开始支持以太网,业务做的大了名字也从OpenIB改为OpenFabrics。OFED现已经被主流的Linux发行版本支持,并被整合到微软的windowsserver中。
图1 OFED 软件栈
FCOE
就在大家认为Infiniband就是数据中心连接技术的未来时,10Gb以太网的出现让人看到了其它选择,以太网的发展好像从来未有上限,目前它的性能已经接近Infiniband(详见http://www.cisco.com/en/US/prod/collateral/ps10265/le_32804_pb_hpc10ge.pdf),而从现有网络逐渐升级到10Gb以太网也更易为用户所接受。FCOE的出现则为数据中心互联网络和存储网络的聚合提供了另一种可能。FCOE是将光纤信道直接映射到以太网线上,这样光纤信道就成了以太网线上除了互联网网络协议之外的另一种网络协议。FCOE能够很容易的和传统光纤网络上运行的软件和管理工具相整合,因而能够代替光纤连接存储网络。虽然出现的晚,但FCOE发展极其迅猛。与Infiniband技术需要采用全新的链路相比,企业IT们更愿意升级已有的以太网。在两者性能接近的情况下,采用FCOE方案似乎性价比更高。
网络交换
在这一层面上要解决的问题则是要对现有的互联网络进行升级,使之满足新业务的需求,网络虚拟化则是这一变革的重要方向。在这一方向上目前有两种做法,一种是在原有的基础设施上添加新的协议来解决新的问题;另一种则完全推倒重来,希望设计出一种新的网络交换模型。
当虚拟数据中心开始普及后,虚拟数据中心本身的一些特性带来对网络新的需求。物理机的位置一般是相对固定的,虚拟化方案的一个很大的特性在于虚拟机可以迁移。当虚拟机的迁移发生在不同网络,不同数据中心之间时,对网络产生了新的要求,比如需要保证虚拟机的IP在迁移前后不发生改变,需要保证虚拟机内运行在第二层(链路层)的应用程序也在迁移后仍可以跨越网络和数据中心进行通信等等。在这方面,Cisco连续推出了OTV,LISP和VXLAN等一系列解决方案。
OTV
OTV的全称叫做OverlayTransport Virtualization。通过扩展链路层网络,它可以使局域网跨越数据中心。很多应用需要使用广播和本地链路多播。通过扩展链路层网络,OTV技术能够跨地域的处理广播流和多播,这使得这些应用所在的虚拟机在数据中心之间迁移后仍然能够正常工作。OTV扩展了链路层网络实际上也扩展了其相关的IP子网,需要IP路由同样的做改变,这就引出了新的问题,这个问题就由LISP来解决了。
LISP
LISP的全称是Locator/ID Separation Protocol。传统的网络地址IP蕴含了两个含义,一个是你是谁(ID),另一个是你在哪里(Locator)。这样带来的一个问题就是如果你的位置变了(Locator变了),IP必须跟着变化。LISP的目标是将ID和Locator分开,再通过维护一个映射系统将两者关联。这样虚拟机和服务器在网络不同位置进行迁移时可以保持相同的IP地址。
图2 OTV和LISP的应用
VXLAN
VXLAN的目的是在云计算环境中创建更多的逻辑网络。在云计算的多租户环境中,租户都需要一个逻辑网络,并且与其它逻辑网络能够进行很好的隔离。在传统网络中,逻辑网络的隔离是通过VLAN技术来解决的。不幸的是在IEEE802.1Q标准中,VLAN的标识号只有12位,这就限制了在一定范围内虚拟网络最多只能扩展到4K个VLANs。为了解决这个问题,思科联合VMware在今年推出了VXLAN技术,通过MACin User Datagram Protocol(MAC-in-UDP)封装技术,加入了一个24位的段标识符。用UDP的多播代替广播,将数据包限定在目标网段内。VXLAN技术极大的扩充了云计算环境中所能支持的逻辑网络的数量,同时通过逻辑段可以将逻辑网络扩展到不同的子网内,使虚拟机能够在不同的子网间做迁移。
图3 VXLAN 帧格式
图4 通过VXLAN来扩展网络
NVGRE
对于云计算环境中的下一代网络,各大IT厂商们都不想随便就丢掉话语权,就在Cisco推出VXLAN不久,Microsoft就联合Intel, HP& Dell 提出了NVGRE标准。NVGRE的全称是NetworkVirtualization using Generic Routing Encapsulation。它和VXLAN解决相同的问题,只是用了稍微不同的方式,使用GRE (Generic Routing Encapsulation) key的低24位作为网络租户的标识符。
前面我们讲的都是在原有的基础设施上添加新的协议来解决新出现的问题,而近年来SoftwareDefined Networking (SDN) 的兴起则期待从根本上改变目前的网络交换模式。SDN中最著名的就是OpenFlow。
OpenFlow
0penFlow论坛起源于斯坦福大学的“Clean slate”计划,开始主要是为了设计一种新的互联网实验环境。在目前的实验网上没有实际足够多的用户或者足够大的网络拓扑来测试新协议的性能和功能,最好的方法是将运行新协议的实验网络嵌入实际运营的网络,利用实际的网络环境来检验新协议的可行性和存在的问题。OpenFlow的切入点是目前已有的互联网上的交换设备。无论是交换机还是路由器,最核心的信息都保存在flowtable里面,这些flowtable用来实现诸如转发、统计、过滤等各种功能。虽然不同生产厂家有不同格式的flowtable,但可以抽取出绝大多数switch和router都有的一些通用的功能。OpenFlow试图提出一种通用的flowtable设计,能被所有厂家的设备所支持。通过控制flowtable能够实现网络流量的分区,将网络流量划分为不同的数据流,这些数据流能被归于不同的组且相互隔离,能够按照需要来处理和控制。更重要的是flowtable支持远程的访问和控制。OpenFlow的flowtable中每一个entry支持3个部分:规则,操作与状态。规则是用来定义flow;操作就是转发、丢弃等行为;状态部分则是主要用来做流量的统计。
有了OpenFLow,我们可以在正常运行的网络中自己定义一些特殊的规则,通过定义不同的flowentry让符合规则的流量按照我们的需求走任意的路径,可以达到把物理网络切成若干不同的虚拟逻辑网络目的。所以,OpenFlow将传统的互联网改造成为了动态可变的软件定义互联网(SoftwareDefined Networking )。OpenFlow的发展异常迅猛,就连Cisco如今也开始拥抱OpenFlow。
总结
网络虚拟化当前IT发展最热门的方向之一,是云计算基础架构的核心技术。网络虚拟化涉及的面非常的广,本文也只根据笔者的认识做了粗浅的介绍。
备注
在网络虚拟化方面不仅很多大公司在抢占话语权,很多初创公司也在努力开拓机会,这里把我所知道的中小公司稍微做下总结,供大家参考:
Nicira:专注于OpenFlow的神秘公司。
Big Switch:提供基于OpenFlow的网络虚拟化解决方案
Juniper Networks:支持OpenFlow
Open vSwitch: 一个开源的虚拟switch ,它是一个软件switch能运行在Hypervisor里, 目前已是XenServer 6.0 的缺省switch。
ConteXtream:借鉴Grid的思想,通过DHT(Distributed Hash Table)在传统的网络之上建立一个虚拟的抽象的网络,解决云主机服务提供商们在网络灵活性,多租户和扩展性方面的挑战。
Embrane: 提供一种on-demand的虚拟化网络服务,比如服务的负载均衡,防火墙,VPN。
Xsigo: 提供基于Infiniband技术的数据中心全虚拟化方案。
NextIO:提供基于PCIe技术 的I/O虚拟化产品。