虚拟化时代的交换网络(1)
——以计算为中心的下一代数据中心交换网络
在云计算漫漫之旅上,虚拟化将是我们建设架构即服务云不得不跨越的一道坎,而大规模部署虚拟化更是给传统数据中心管理模式、服务器、存储和网络架构规划管理带来巨大的挑战。为培养提高IT团队服务水平和总结有关这些方面的IT管理方法,笔者结合实际工作经验,与大量用户交流与反馈,阅读了国内外一些书籍、互联网资料,在本文就云计算虚拟化交换网络原理、边缘网络、核心网络和产品与发展趋势等方面给出了业务挑战、技术、经济分析和解决方案,希望对读者有所启发。
第一节 云计算虚拟化交换网络——原理篇
架构即服务云计算
云计算是实现方便、快速、简单、按需访问可配置计算资源的管理模型 (部分定义来自nist),云计算是企业IT资源管理的高级阶段,随业务变化而变化,而不仅仅是IT技术简单合并与应用。云计算所包含内容非常广泛,如图1所示,分成不同层次,从最接近用户的上层到最下面的物理层,包含有业务接口层、应用平台层、分布式操作系统层、虚拟化层、硬件架构层和数据中心设施层,同时有支撑不同层次之间管理和平台,技术之外就作为商业模式出现的云服务交付体系和互联互通标准等。而架构即服务云计算是什么呢,很简单,就是根据用户需求,在虚拟化层、硬件层和数据中心设施基础等实现动态资源管理与调配的云计算服务,具备了这些特征计算模式就可以称之为架构即服务云。
图1 云计算架构模型
在实现架构即服务云计算过程中,虚拟化部署与实施是迈向成功的最关键一步。这里的虚拟化概念是更大范围的架构虚拟化,与我们平时所认为的狭义服务器虚拟化不同,架构即服务云的虚拟化应该是端对端的虚拟化,包括数据中心虚拟化和桌面用户虚拟化,而数据中心虚拟化(英文称为Virtual Data Center或更细分为vPoD,Virtual Point of Delivery)又包含了服务器虚拟化、存储虚拟化和网络虚拟化。在所有虚拟化实现方式之中,以网络虚拟化实现、设计和部署难度最大,因为大多数网络还是基于传统硬件芯片转发机制,无法实现灵活升级,所以只有实现了网络虚拟化,我们才能真正最终实现基础架构端对端的虚拟化,才能实现架构资源动态调度。
云计算数据中心资源融合演变
谈到云计算数据中心架构,我们知道,如图2所示,数据中心最基本的三种基础资源组成信息基础架构,即服务器、存储和网络。当前融合趋势之一是服务器与存储相互融合,服务器增加内置硬盘容量替代大量直联和近线存储,以分布式文件系统方式管理,存储设备则利用标准服务器实现更大规模横向、竖向扩展和更高性能架构,将原本在服务器上的文件系统内置于存储架构,通过存储内的元数据信息做到了应用智能感知和处理;融合趋势之一是服务器计算节点虚拟化需要更高比如万兆、更强、更灵活网络设备支持,而传统网络设备功能也从游离在服务器之外进入到内部物理,即虚拟化软件交换机,不但如此还在服务器内部实现了虚拟防火墙或虚拟负载均衡,CPU作为服务器内部计算核心在内部网络实现将发挥更大作用;融合趋势之三是基于IP扁平化存储与网络结合更加紧密,需要优化以IP网络为基础支撑的云存储,作为存储服务被异构服务器或客户端调用。在服务器、存储和网络硬件三种基础资源平台上,虚拟化和管理平台建立统一架构资源池,通过标准如RESTful接口进行即时调度管理。
实际上,我们仔细分析一下,从云计算数据中心存在的三个基础网络就不难理解前面所述架构融合趋势。如图3,第一个网络是服务器与前端客户之间通信网,特点是高接入、协议兼容,目前常用以太网络,用户对网络价格弹性和敏感性较高;第二个网络是服务器与服务器之间进程通信网,特点是高可靠、低延迟,进程消息微秒级实时同步,目前常用InfinitBand网络,大规模部署时对网络价格敏感性高;第三个网络是服务器与存储阵列之间通信网,特点是满足SCSI的Initiator和Target之间高带宽、高IOPS和可靠性传输,目前通常维持独立IP SAN或FC SAN,对网络价格敏感性一般,因为网络在总存储成本只是少部分,来自数据保护和关键业务的需要也降低了价格弹性。这些两两对象之间的需求就是云计算数据中心架构资源包括网络需求在内的最基本需求。要分析业务IT架构需求、了解用户痛点,规划、设计和实现数据中心架构,根据图2和图3确定的基本原则,就可以做到有的放矢,迎刃而解。
图2 架构云计算数据中心基础架构
图3数据中心基本网络I/O需求
进一步分析,在我们建立虚拟化环境后,服务器与服务器之间通信网被融合到单台物理机内部的不同虚拟机之间,从而服务器与存储通信网、服务器与前端客户网络也被拉到单台物理机内部,导致南北流量从90%减少25%,东西流量成为主流占据75%,如图4所示,这样趋势下,传统系统架构和网络设计势必相应改变才能适应设计要求。这就是我们今天要谈的云计算虚拟交换网络。
图4云计算虚拟化数据中心I/O演变
从历史来看,云计算虚拟交换网络由服务器内部基于软件虚拟交换发展而来,进化发展到基于硬件的数据中心边缘网络,再升级到到数据中心核心层演变,层次叠进,由用户需求推动到不同层面技术革新,从技术创新新反哺到用户需求业务发展,又有新需求促进反复作用,不断提高和前进的过程。
云计算计算资源虚拟交换网络——计算资源内部虚拟交换网络
计算资源内部虚拟交换网络原理
简单来讲,计算资源虚拟交换网络就是在物理主机内部,虚拟机管理平台为了实现同一物理机或不同物理之间虚拟机通信而实现的软件交换机。为了便于大家理解虚拟交换网络原理,下面以VMware虚拟交换网络概念为例介绍:
图5 虚拟化交换网络示意图(VMware软件交换)
虚拟化交换网络接口分两大类,一类是位于虚拟化支撑操作系统内部,另一类是位于虚拟客户机操作系统内部。虚拟化支撑操作系统内部网络接口有IP存储网络接口(NFS或iSCSI,需要约2G带宽,存取虚拟机映像或用户数据),资源调度和虚拟机飘移网络接口(如vMotion,一般最大消耗是3.6Gbps带宽,传递飘移信息),保证虚拟机高可用网络接口和容错日志接口(Fault Tolerant Logging,消耗约4Gbps带宽,同步高可用信息)。虚拟化客户机操作系统需求则比较简单,只要客户操作系统内部虚拟接口。从图5,我们看到,每个虚拟化支撑平台内核本身就需要5个通信接口,而每个虚拟化客户机至少配置一个虚拟化接口,每个接口都需要独立IP和MAC地址。为了简化虚拟化软件交换机复杂性、构建更加开放的IT虚拟化生态环境,VMware提供了VNetwork控制平面接口,第三方软件厂家可以自己开发独立虚拟化控制平面交换机,或网络硬件厂家开发出虚拟化管理平台插件,与VMware虚拟化管理平台整合集成,自动化调度网络设备硬件配置随虚拟机飘移而变化。比如Cisco公司Nexus 1000V就是第三方软件交换机解决方案,Force10等还提供了基于VMware虚拟化交换机符合VNetware规范的控制平台插件,与VMware飘移策略集成,虚拟化计算节点智能感知,实现虚拟机调度是网络自动化调度,这里就不费篇幅赘述了,有兴趣读者可以在网上查找资料。
计算资源内部虚拟交换网络挑战
随着虚拟化和云计算的深入发展,人们发现藏在虚拟操作系统内的虚拟化交换机越来越成为头痛的问题。根据IDC统计(图6),到2013年底虚拟机部署数量将是物理机的2.5倍,达到8千2百万台,虚拟机节省了大量的物理购买成本,但在管理复杂度上面造成运营成本增加也非常显著。虚拟交换机既要与现有虚拟管理平台兼容,又要应对高度动态变化端设备,维护虚拟逻辑抽象链接,集成与交换硬件设备功能,从移动性、机动性、维护性和集成性分类如下:
• 跟踪设备移动状态。网络端节点实体(比如虚拟机)的网络状态需要简单确定,不同主机之间可相互迁移节点状体。这些状态包括传统“软状态”,比如数据链路层学习表、三层路由转发状态、路由策略状态、访问控制列表、服务质量策略、配置监控及结构化自动化系统等。简单来讲,就是每个虚拟机移动时,其所带虚拟接口策略如何主动随之漂移。
• 响应网络动态变化。虚拟化环境最大特点是网络高度状态变化。跟踪虚拟机加入和离开,虚拟机往前或往后即时移动,逻辑网络环境快速变化,开放式控制平面控制流量和全局网络自动发现管理。而且由于虚拟机动态变化,防火墙和入侵检测系统无法有效随之变化而保护它们,无法做到及时被动有效反应。更极端情况是,虚拟机机动性变化常常跨越了不同的组织边界,尤其在公共云环境。
• 维护虚拟化逻辑标记。分布式虚拟交换机通常通过增加或管理虚拟机网络数据,来维护虚拟网络或逻辑区域上下文,这是容易理解的简单方式,问题是正确和高效管理这些虚拟化标记非常困难。增加网络标记,就增加新一层网络信息,从另一方面间又增加了网络复杂度。为简化管理和提高效率,常常需要优化虚拟机标记存储方式,包括保存虚拟化地址或重新映射、配置、修改和迁移标志。
• 集成操作系统和硬件。把虚拟数据转发路径设计成“卸载”模式,数据包处理由硬件芯片完成,以独立软件或硬件芯片方式实现灵活控制,增加虚拟化网络性能。独立软件开发商还可以使用接口增强虚拟边界网络功能,减少硬件交付到应用交付的负面影响,从而简化、加速和减轻可扩展云的网络管理。
图6 逻辑主机与物理主机增长趋势图 (来源:IDC)
开放虚拟化软件交换机(Open vSwitch)体系架构简介
随着虚拟化应用普及,需要部署更多虚拟化软交换交换机,而费用昂贵的闭源虚拟交换机让用户不堪重负,于是一群开源社区奉献者开发出了多层虚拟化软件交换机Open vSwitch,它遵循Apache 2.0开源代码版权协议,可用于生产环境,支持跨物理服务器分布式管理、扩展编程、大规模网络自动化和标准化接口,实现了和大多数商业闭源交换机功能类似的软件交换机。
图7 Open vSwitch内部通信图
图8 Open vSwitch功能结构图
Open vSwitch基本部件分为三个部分,其一是ovs-vswtichd守护进程,慢速转发平面,位于用户空间,完成基本转发逻辑包括地址学习、镜像配置、802.1Q VLAN、LACP协议、外部物理端口绑定基于源MAC和TCP负载均衡或主备方式,可以通过OpenFlow远程配置和管理,sFlow、NetFlow或SPAN端口镜像方式保证网络可视性,配置后数据交由ovsdb-server进程存储和管理;其二是核心数据转发平面openvswitch_mod.ko模块,它位于内核空间,完成数据包查询、修改、转发,隧道封装,维护底层转发表,是快速数据转发平面;其三是控制平面OpenFlow,不同物理机的软件交换机通过OpenFlow控制集群组成分布式虚拟化交换机,还实现不同租户虚拟机隔离实现。每个数据转发保持一个OpenFlow链接,没有在转发平面出现的数据流在第一次通过软件交换机时,都被转发到OpenFlow控制平台处理,OpenFlow根据2-4层信息特征匹配,定义转发、丢弃、修改或排队策略,然后第二次数据转发时就直接由核心转发模块处理,加快了后续数据处理过程。根据有关测试报告,Open vSwtich与Linux Bridge表现性能相差无几。
Open vSwitch不但可以独立软件方式在虚拟机管理器内部运行,比如Xen、 XenServer、KVM、Proxmox VE和VirtualBox等虚拟机支撑平台,还可以可部署在硬件上,作为交换芯片控制堆栈。Citrix公司已把Open vSwitch作为XEN Cloud Platform平台缺省内置交换机,Open vSwitch版本1.1.0pre2支持如下功能:
• 支持NetFlow、sFlow(R)、SPAN和RSPAN,监视虚拟机之间通信
• 支持标准802.1Q VLAN Trunk
• 保证最大、最小细分服务质量保证QoS
• 可按虚拟机接口分配流量,定制策略
• 支持绑定网卡、基于源MAC地址负载均衡
• 支持OpenFlow控制平面协议
• 支持本地Python绑定的远程配置协议
• 支持以太网GRE隧道连接
• 兼容Linux桥接代码
• 支持可选内核或用户空间转发引擎
• 流缓冲引擎实现多表转发管道
增强虚拟化软件交换机性能
因为虚拟化软件交换机基于服务器内部处理,消耗大量CPU资源和IO资源,为了提高转发性能,各个组织如CPU厂家Intel、AMD和PCI工业协会一直积极推进提高虚拟化性能。第一种性能提高方式是虚拟主机IO页面地址直接访问功能,Intel VT-x功能是允许虚拟机直接访问由VMM(Virtual Machine Monitor)配置的物理内存空间,直接路径I/O存取,加速DMA数据存取。Intel VT-d与VT-d功能类似,使用DMA描述符号标识虚拟机I/O地址空间,它们共同点是都需要做虚拟机I/O地址转换到物理I/O地址工作,与物理I/O资源需要一一对应关系,无法做到一对多,只能实现虚拟化对应物理资源性能提高,无法I/O资源共享;第二种性能提高方式是卸载软件网络功能到物理网卡,VMDq (Virtual Machine Direct Queue) 就是基于网卡硬件加速的技术,提高虚拟化环境下网络I/O性能。VMDq网卡实现了二层交换机部分功能,分拣和分类数据包,轮询传输,传统模式下由软件交换机实现,据说可以提高2倍性能,但是还需要VMM复制网络数据包;第三种性能提高方式是SR-IOV实现IO设备资源共享,SR-IOV网卡内嵌具有完整功能、支持广播的二层交换机,是基本网络转发平面,由CPU的VMM管理,可实现更加数据分拣、分类与安全等控制平面,还有一些简单QoS控制平面功能。资源共享方式是PCI Mgr (SR PCIM)给每个虚拟机分配一个单独虚拟功能号VF(Virtual Function),最大支持256个子设备号256个虚拟机。性能提高方式是虚拟化软件交换机完成初始资源(CPU、内存和IO虚拟)分配管理,保留基本网络控制平面。建立数据转发连接后,虚拟机虚拟网卡之间通过VF直接转发数据,无需经过主机虚拟化软件交换机,从而加速了虚拟化交换性能。其他性能提高方式还有Intel VT-c/VMDc功能(Virtual Machine Direct Connectivity)实现同一物理口不同虚拟机和虚拟功能之间直接通信模式,可以动态指定不同虚拟机虚拟网卡专用带宽,限于篇幅,这里就不多述了。
图9 SR-IOV系统结构图