【编者按】

本篇文章摘自范恂毅与张晓和的新书《新一代SDN - VMware NSX网络原理与实践》(强烈推荐购买此书,该书在京东、当当、淘宝、亚马逊有售),是其中的第一章《SDN与网络虚拟化的起源与现状》。由于微信单篇文章的字数受限,所以部分重要性相对较低的段落有删节。

并且,根据作者的建议(来自书籍读者,包括谢斌等的反馈,在此一并致谢),编者修改了原书文章的几个小的错误。


另外,我们有一个专门的"VMware NSX爱好者"的微信群,里面有不少网络或NSX专家


关于范恂毅,对VMware网络技术感兴趣的朋友对他应该不陌生了,在"乐生活与爱IT"这个平台上,之前曾经过发表过他的文章:

​VMware与OpenStack是敌是友? — VMware Integrated OpenStack(VIO)入门介绍​


下面是他的自我介绍:“由于喜欢三国周瑜,因此也会自称“都督”。大家喊我小范也行,范工也行,都督也行~希望在技术和其他层面能和大家多多交流”


---Begin---


1.1.2 网络业务发展趋势

IT行业到底发生了什么样的变化,导致传统IT基础架构已无法适应,并且必须做出改变?

在信息时代,虽然存在部分企业寡头垄断的情形,但绝大多数中小型企业都面临着全球化的竞争,就算是寡头垄断的那些行业巨头们,也需要创造利润满足股东的利益,且需要满足其几万甚至几十万名员工日益增长的工资和福利要求,这就需要所有企业不断利用新的创造力、新的技术,来提升自己的竞争能力。这些技术的核心包括且不限于服务器虚拟化、存储虚拟化、应用加速、自动化工具等。在这个过程中,企业需要不断根据现今和未来可能出现的业务需求,来调整自己的IT基础架构。我们来看一个真实案例,此为新华网的新闻节选,为了保持新闻的真实性,我们没有对这段话进行任何修改和删减。


2015年11月12日下午,吉尼斯世界纪录认证官Charles Wharton公布天猫在双十一期间创造的9项吉尼斯世界纪录荣誉。其中24小时单一网络平台手机销量超过300万台,当日公司的交易总额高达912亿人民币。

天猫双十一所创造的9项纪录,除了当天91,217,036,022元人民币的交易额打破了“24小时单一公司网上零售额最高”吉尼斯世界纪录荣誉之外,还有其他的销售成绩包括牛奶10,124,263升、坚果6,567吨、苹果641,899公斤、蜂蜜269,821公斤、手机3,133,289台、电视机643,964台、手表1,112,561支、汽车6,506辆,八种产品成功刷新了销售业绩的吉尼斯世界纪录荣誉。

吉尼斯世界纪录认证官Charles Wharton表示:“非常高兴能再度见证天猫在双十一期间创造的销售纪录,希望消费者在参与打破纪录的同时,也能够获得便捷高效的消费体验。”


这个所谓的“购物狂欢节”,是企业竞争、吸引客户、刺激消费的一种手段,也带来了一连串连锁反应。首先,阿里巴巴公司作为活动发起者,在这一天的网站访问量、业务需求量会激增。我们知道,阿里巴巴作为中国互联网行业三巨头(BAT)中的一员,其旗下业务不仅仅是基于淘宝和天猫作为网购平台的电子商务服务,还包括蚂蚁金融服务、菜鸟物流服务、大数据云计算服务、广告服务、跨境贸易服务、阿里云服务等互联网服务。但是,在每年的11月11日,只有电子商务服务才是最重要的,需要有最高的优先级,保证900多亿交易量的业务可以流畅、安全地进行。这一天,在阿里巴巴公司后台的数据中心中,其他的业务可能需要暂时贡献出自己一部分网络、服务器、存储资源,供电商平台调用,以保证电商平台最高的优先级。而这一天之前的相当长的一段时间内,阿里巴巴公司数据中心的网络管理员、服务器管理员、存储管理员需要加班加点地工作,在得到市场部门对这一年“购物狂欢节”可能达到的交易量的分析和预测后,对IT基础架构平台的策略进行更改,并为电子商务服务的应用进行资源池中的再分配,保证最高优先级。而在这一天之后,所有新设定的策略,都需要回退到通常状态,新增资源可能也需要被回收。除了阿里巴巴公司外,物流公司也需要根据这一天可能达成的订单数量,对自己的IT基础架构的配置和资源分配做一定修正,以保证物流业务正常进行。此外,那些入驻天猫和淘宝的企业和卖家,尤其是一些中小企业,它们的网络、计算和存储资源可能并不充足,当这一天订单激增的时候,需要通过“云爆发”的服务方式,自动租用公有云资源,而公有云平台也会对针对使用情况进行自动计费。

这只是现代企业运作模式的一个缩影,不光是在每年的11月11日部分企业的IT基础架构可能面临巨大变化,比如春运时期的火车票订票网站、考试结束后的教育部查分系统、开放选课后的大专院校学籍管理系统、国家刺激经济政策出台后的股市交易系统、寒暑假或黄金周假期之前的旅游公司的酒店和机票订单系统,都可能会面临着类似的压力。

以上只是举了一些案例。从根本上看,这些压力导致现在的IT基础架构在大环境上已经发生了一些变化,无论云服务提供商、电信运营商还是企业都会面临这些变化。

  • 服务器虚拟化:由于x86计算机的CPU制造商生产的CPU越来越强大,内存制造商的内存容量越做越大,服务器虚拟化技术应运而生。图1.2所示为VMware服务器虚拟化的基本逻辑架构。服务器虚拟化技术不仅能在一台物理服务器中实现多虚拟机和多应用,从而节省物理硬件成本和机房空间,还能通过虚拟机在线迁移技术实现动态资源分配和高可用性,大大提升应用的负载均衡和冗余性。但是由于虚拟机会在集群内部漂移,而传统的安全策略、QoS策略又是基于IP地址或端口的,这也意味着需要更复杂的策略。如今世界上每几秒就会诞生一台新的虚拟机,而应用、服务器、网络、存储又是分离的,这造成各种不同的系统管理员各司其职,无法通力合作,运维和管理效率低下。

SDN与网络虚拟化的起源与现状_网络虚拟化

图1.2 VMware服务器虚拟化的基本逻辑架构图

  • 层出不穷的新应用:抽象地来看,现代的IT应用架构无非是三个层面——前端(如Web界面、移动客户端的界面)、应用(App)和数据库(Database,简称DB)。用户可能先登录到前端界面才能使用应用,而真正使用应用时,又会调用后台数据库。其间,后台可能还会调用应用加速、应用交付服务和防火墙服务,保证应用交付的速度、负载均衡和安全性。由于每一层的服务都会比较多,调用策略各不相同,令IT管理员头疼的就是该如何去配置这些策略。因此,当遇到层出不穷的新应用,或是需求量激增或激退时,策略修改就成了一件重要却又极其繁琐的工作。
  • 云计算:几年前,当“云计算”刚刚提出的时候,很多人还觉得这个概念还是“云里雾里”的。而现在,“云计算”概念已深入人心。虽然业内对云计算还没有一个明确的定义,但也有了一定的共识。根据NIST(美国国家标准与技术研究院)的说法,只要一个数据中心拥有“快速弹性的架构”和一个“资源池”,可以提供“按需自助服务”且这些服务是“可测量的服务”,而资源池里的服务最终是可以被“宽带接入”访问的,那么它就是一个“云”。云的服务方式分三种——架构即服务(IAAS)、平台即服务(PAAS)、软件即服务(SAAS)。云的部署模式分为公有云、私有云、混合云、社区云四种。云计算的特性、服务模式和部署模式如图1.3所示。然而“按需自助服务”,即云计算的最终目标——“像用水、用电一样用IT”,实现得并不完美。服务器虚拟机技术已经使得我们可以对计算资源和存储资源实现基本的按需自助式服务,但是我们却很难对物理网络资源进行资源调度,导致数据中心运维和管理极其复杂和繁琐。此外,由于基于物理网络设备对数据中心网络进行扩展实现得并不理想,“快速弹性的架构”也没有达到适合云计算的要求。我们需要使用一种全新的网络架构去实现云计算提出的这些要求。

SDN与网络虚拟化的起源与现状_服务器_02

图1.3 云计算的基本特征、服务模式和部署模式

  • 数据中心的合并:越来越多的企业为了减少机房投入(包括机房场地租用、耗电、制冷、运维成本),会将全部或部分应用,或者是灾备应用迁移至公有云,这就需要在私有云与公有云之间打通一个隧道。实力雄厚的公司,也可能使用类似“两地三中心”的数据中心解决方案,在异地数据中心之间跨越三层链路,打通网络连接,实现更高的冗余性。当然,这意味着网络策略更加复杂。

在这里,我们做一个小小的总结:网络、服务器虚拟化、存储技术的发展,要求管理员可以便捷地管理数量更多、部署更加复杂的设备,从而面对更大流量的应用并可以迅速地让应用上线和下线。但是在当前的大环境下,如何去实现它并减少误操作率和故障恢复时间呢?这样的变化趋势最初主要发生在数据中心,但后来在企业网、运营商都出现了这样的变化。因此,我们需要像牛顿改变数学去适应物理学的变化一样,去改变网络基础架构,从而去适应应用的变化。在这样的背景下,SDN技术出现了。

1.1.3 SDN发展历史

在SDN出现之前,控制平面和转发平面是耦合的(在同一个机箱之内,或者直接相连的多机箱系统内)。这种多平面间的紧耦合导致的互相依赖产生了系统的技术革新、稳定性以及规模问题,而规模问题最终可能导致性能问题——一个网元就是一个“黑盒子”(box),数据中心的机房是以box-by-box的方式部署的,当网络管理员需要修改配置或策略时,必须登录每一台设备。但是当网络设备达到几千台,物理服务器达到几万台时,网络管理员该怎么办呢?前文讨论的问题,很多都是因为控制平面和转发平面的耦合而造成的。

可能在那个年代,还没有这样大规模的数据中心,但是斯坦福大学的博士研究生马丁·卡萨多(Martin Casado,见图1.4)敏锐地发现了这个在未来IT界可能出现的问题。他的研究课题是实现一个灵活的、能够像计算机一样可编程的网络系统。2004年,他领导了一个关于网络安全与管理的科研项目,2006年,这个项目的研究成果被发表——一个名为Ethane的网络模型,这个模型包括了现今SDN架构中的两个重要内容:基于流表的转发和中央控制器。

SDN与网络虚拟化的起源与现状_服务器_03

图1.4 马丁·卡萨多

卡萨多的导师是业内大名鼎鼎的尼克·麦考恩(Nick McKeown)教授(见图1.5)。麦考恩非常重视卡萨多的Ethane项目,给了卡萨多很多建设性的指导和启发。在研究过程中他们俩觉得,如果将Ethane的设计更进一步,将传统网络设备的控制平面和转发平面两个功能模块进行分离、解耦,通过集中式的控制器以及可编程的标准化接口,可以便捷地对各种网络设备进行配置和管理。这样一来,网络的设计、部署、管理和使用就有了更多的可能,控制平面与转发平面的解耦也更利于推动网络行业的革新和发展。卡萨多和麦考恩从而开始着手研究一款叫做NOX的控制器,希望将这个控制器作为单独的控制平面。他们进而发现,如果每台交换机能对这个控制器提供一个标准的统一接口,那么控制起来就会非常方便。于是师徒两人着手开发这个控制器对交换机接口的控制协议——具有划时代意义的Openflow协议就诞生了。非常幸运,Ethane最终没有成为一篇设计精巧却深奥难懂的大学论文。

SDN与网络虚拟化的起源与现状_网络虚拟化_04

图1.5 尼克·麦考恩

麦考恩和卡萨多为了进一步提出SDN的概念,邀请了加州大学伯克利分校的斯科特·申克(Scott Shenker)教授加入了自己的团队,他们3人于2007年成立了Nicira公司。2008年3月,麦考恩在ACM SIGCOMM(ACM组织在通信网络领域的旗舰型会议,也是目前国际通信网络领域的顶尖会议)上发表了著名论文OpenFlow: Enable Innvations in Campus Network。OpenFlow这个名词第一次浮出水面,引起业内广泛关注。麦考恩明确提出了OpenFlow的现实意义——在不改变物理拓扑的情况下,分离控制平面和转发平面,实现网络的集中管理和控制并不影响正常的业务流量。之后几年,Nicira不断完善其基于SDN的网络虚拟化解决方案——其主要利润来自其基于OpenFlow和Open vSwitch(OVS)创建的网络虚拟平台(NVP),为AT&T、eBay、NTT以及Rackspace等IT巨头的超大规模数据中心提供SDN和网络虚拟化平台,实现它们的数据中心自动化。Nicira还作为发起者领导了OpenStack的网络项目Quantum(即后来的Neutron)的开发。2012年7月,VMware公司宣布以12.6亿美元收购Nicira公司。

VMware在收购了Nicira后,目标方针非常清晰——将Nicira的网络虚拟平台解决方案融入自己的服务器虚拟化解决方案,所有的网络高级功能全部通过服务器内部虚拟化软件完成,硬件网络设备就可以只需要处理转发。这个解决方案就是NSX网络虚拟化解决方案。

1.2 认识SDN

介绍完为什么需要SDN和SDN的起源后,是时候介绍SDN到底是什么了。理解SDN架构,对于理解VMware NSX网络虚拟化解决方案的三个平面架构以及其逻辑网络、物理网络解耦的设计,是非常重要的——SDN的核心思想是控制平面与转发平面的分离,这与NSX中管理平面、控制平面和数据平面的设计如出一辙。

SDN其实直到现在也没有清晰的定义,但是其核心理念已逐渐被人们接受。本章将下来会讨论SDN的理念、架构,以及它如何面对当前的IT难题。

1.2.1 SDN是什么

SDN是Software Defined Network的缩写。正如业内很难回答“云计算”的定义是什么一样,业内也很难回答SDN的定义。但是SDN在经历了几年的发展后,业内也对其概念达成了一个基本的共识。前文已经介绍了SDN的历史,在这里我们介绍一下SDN的模糊定义。

SDN其实并不是一种技术,也不是一种协议,它只是一个体系框架,一种设计理念。这种框架或理念要求网络系统中的控制平面和转发平面必须是分离的。在转发平面,它可能希望与协议无关,管理员的意志最重要。管理员可以通过软件来执行自己的意志,控制转发行为,并驱动整个网络。

除此之外,SDN的理念还希望控制器与转发平面的接口标准化,我们把这样的接口称为南向接口。因为如果软件想要真正控制转发行为,就应该尽量不依赖特定的硬件。除了硬件设备,该控制器也可以对网络中的应用程序进行集中控制,一般来说这是通过硬件提供一些可编程的特性来实现的。控制应用程序的接口称之为北向接口。

当前业内比较认可的SDN的特征属性如下:

  • 控制平面与转发平面分离;
  • 开放的可编程接口;
  • 集中化的网络控制;
  • 网络业务的自动化应用程序控制。

其中前两点是SDN的核心。如果一个网络系统具备了这两点特征,那么就可以宽泛地认为这是一个SDN架构。

OpenFlow作为目前主流的南向接口协议,这个名词当然被炒得火热,有人认为SDN就是OpenFlow。这是不正确的。因为SDN是一种框架,一种理念,而OpenFlow只是实现这个框架的一种协议。

如今,VMware公司、Cisco公司和Microsoft公司都在大力宣传自己的网络虚拟化(Network Virtualization)技术。有人认为网络虚拟化也是SDN,这种观点是不完全正确的。早期的网络虚拟化雏形(如早期的Cisco Nexus 1000v和VMware内嵌在vSphere里的虚拟交换机),指的是在服务器虚拟化平台中加一层虚拟交换机,用于与虚拟机连接,细分虚拟机的接口策略,而不是在服务器网卡上用一个Trunk把所有VLAN封装并连接上行链路。而现在,网络虚拟化特指实现方式是基于一种叫做Overlay技术(现在还没有很好的中文翻译,我们姑且先把它叫做“叠加网络”技术)的网络虚拟化。有了这种技术,用户可以突破一个网络系统中的VLAN数量、MAC地址容量等的限制,轻松跨越三层网络打通二层隧道,对于超大规模数据中心、多租户数据中心、双活/灾备数据中心来说,这种技术相当合适。Overlay可以由物理网络搭建,也可以通过服务器的hypervisor来搭建。通过物理网络搭建的Overlay并没有真正实现控制平面和转发平面的分离,不符合SDN特征。通过服务器的hypervisor搭建的Overlay,即基于主机的Overlay,现在一般会有集中的管理平面和控制平面,以及分离的转发平面。因此,网络虚拟化是SDN发展到一定阶段的必然趋势,可能是SDN的一个分支,但不是SDN本身。因此,有人把基于主机的Overlay称为新一代SDN,因为它和第一代SDN有很大区别。本书的重点——VMware NSX网络虚拟化解决方案正是基于SDN思想的网络虚拟化的绝佳解决方案,是新一代SDN,后文会详细阐述。

一些运营商和软件厂商现今正在推广自己的网络功能虚拟化(Network Function Virtualization,NFV)技术。NFV也不是SDN,它的目标是利用当前的一些虚拟化技术,在标准的硬件设备上运行各种执行网络功能的软件来虚拟出多种网络设备。由于这些虚拟的网络设备(如虚拟交换机、虚拟路由器、虚拟防火墙、虚拟负载均衡设备)可能会有统一的控制平面,因此NFV和SDN是一种互补的关系。VMware NSX具备NFV的属性——NSX使用x86服务器的软件来实现各种网络功能,但由于NSX中的Overlay属性过于明显,因此VMware更愿意将NSX解决方案称为一种网络虚拟化解决方案,而不是NFV解决方案。

另外,近来一些热门词汇如Openstack、Cloudstack、OVS等,与SDN都没有任何直接的关系。其中Openstack和Cloudstack是云管理平台,而OVS之前已经提到过了,是SDN鼻祖Nicira公司开发的一款虚拟交换机,现在已经开源。这些新技术和SDN也是一种互补的关系,可以共同实现融合解决方案。

1.2.2 SDN架构

图1.6所示为SDN架构中的各个层面,它直观地阐述了SDN架构,我们具体解释一下图中的各个层面。

SDN与网络虚拟化的起源与现状_数据中心_05

图1.6 SDN架构中的各个层面

  • 基础设施层:该层主要是网络设备,可以将这一层理解为“转发平面”。这些工作在“转发平面”的网络设备可以是路由器、物理交换机,也可以是虚拟交换机。所有的转发表项都贮存在网络设备中,用户数据报文在这里被处理和转发。网络设备通过南向接口接受控制层发来的指令,产生转发表项,并可以通过南向接口主动将一些实时事件上报给控制层。
  • 南向接口:南向接口是负责控制器与网络设备通信的接口,也就是控制层和基础设施层之间的接口。在SDN的世界里,人们希望南向接口标准化(这只是一个理想,还未成为现实,但OpenFlow协议是目前主流的南向接口协议,未来能否成为标准协议也有待观察)。只有这样,SDN技术才能摆脱硬件的束缚,否则SDN技术永远只能是特定的软件用于特定的硬件上。
  • 控制层:该层就是前文所说的“控制平面”,该平面内的SDN控制器可能有一个,也可能有多个;可能是一个厂家的控制器,也可能是多个厂家的控制器协同工作。一个控制器可以控制多台设备,甚至可以控制其他厂家的控制器;而一个设备也可能被多个控制器同时控制。一个控制器可以是一台专门的物理设备(如NEC的SDN控制器),也可以运行在专门的一台(或多台[成集群工作])物理服务器上(如Cisco的APIC),也可以通过虚拟机的方式部署在虚拟化环境中(如VMware NSX Controller)。
  • 北向接口:北向接口指的是控制层和应用之间的接口。在SDN的理念中,人们希望控制器可以控制最终的应用程序,只有这样才能针对应用的使用,合理调度网络、服务器、存储等资源,以适应应用的变化。目前北向接口尚未标准化,也没有类似OpenFlow这样的主流接口协议。一些组织和公司希望将其标化,但是非常困难——它和南向接口的标准化相比,显得异常复杂,因为转发平面毕竟万变不离其宗,容易抽象出通用接口,而应用的变数则太多了。
  • 应用层:该层主要是企业的最终应用程序,通过北向接口与控制层通信。该层也可能包括一些服务,如负载均衡、安全、网络监控等,这些服务都是通过应用程序表现的。它可以与控制器运行在同一台服务器上,也可以运行在其他服务器上,并与控制器通信。该层的应用和服务往往通过SDN控制器实现自动化。前文所说的一些时段应用以及服务需求量的激增和激退,在SDN的环境里应当自动完成。对于这种自动化,英文资料中经常使用一个叫Orchestration的名词,该词的原意是“管弦乐”、“乐曲编排”、“和谐演奏”,在这里可以引申为将各种技术糅合在一起,实现数据中心的自动化,最终达到为应用提供最好的服务效果。

1.2.3 SDN如何应对当前IT环境

介绍完SDN的几个工作层面,接下来讨论SDN究竟如何应对前文提到的IT行业架构遇到的问题。SDN解决这些问题的核心思想是改变传统网络中控制数据流的方式。在传统网络中,报文从源转发到目的的过程中,转发行为是逐条控制并独立进行配置的,这种控制也不是统一的。

而SDN是将每台设备里的控制平面剥离出来,放到一个控制器中,由这个控制器通过统一的指令来集中管理转发路径上的所有设备。这个控制器知晓整网的拓扑,知晓转发过程中所有的必需信息,而且上层应用程序也可以通过控制器提供的API以可编程的方式进行控制,这样可以消除大量手工配置(无需管理员登录到每一台设备上进行配置),从而大大增加了网络灵活性和可视性,提高了部署和维护效率。

我们来解析一个SDN的应用案例:一个对外提供服务的托管数据中心,需要增加一个租户,并为这个租户增加一台新的虚拟机。在SDN环境中,只要管理员将其属性定义好,管理平台就可以自动按照其所需资源进行配置——申请多少内存,申请多大容量的存储空间,虚拟网络和物理网络的路由策略、安全策略、负载均衡策略,都是自动完成的。而这一切的配置都可以通过SDN控制器自动发布到各个设备中。这样一来,一个业务上线的时间,可能由10小时缩短为10分钟——如果没有SDN,网络管理员、服务器管理员和存储管理员必须通力合作,在不同的网络设备、服务器虚拟化软件、存储设备上进行逐步配置和资源分配,而且中间还可能会产生错误配置。这也解决了我们之前提到的网络资源无法实现按需自助式服务的问题。

此外,SDN还可以更细颗粒度地进行流量优化。Nicira创始人、SDN的提出者卡萨多先生曾经用一个生动的比喻形容数据中心内部的流量:小股数据流构成的突发流量称为“老鼠流”,持久且负载较高的稳定流量则称为“大象流”。对于数据中心中大多数流量的性能问题,我们都可以将其视为大象踩着老鼠前进的状况,而从用户的角度看,就是持久稳定的流量挤占了小股突发流量的资源。而在SDN的帮助下,系统可以对流量进行智能识别。换句话说,基于SDN的网络系统会辨认出其是否属于大象流,并对这些流量加以优化、标记、识别,确保它不会踩着老鼠前进,这样就达到了大象流和老鼠流的共存。这是因为在SDN架构中,控制器可以知晓全网的拓扑和健康状况。

SDN的引入还能防止厂商锁定。只要设备支持SDN,支持可编程,那么系统管理员就可以通过南向接口和北向接口,通过控制器对设备进行控制,改变转发行为。这也是Google、Facebook在其内部数据中心大力推进SDN的原因之一。厂商锁定问题不仅带来成本问题(尤其是大型数据中心网络),还会受其创新能力、私有协议的限制,带来扩展性和维护方面的问题。而有了SDN后,网络管理员需要学习的知识大大减少——异构设备、私有协议等都大大减少了,只要SDN控制器的界面足够友好和美观即可。就算SDN控制器的界面操作性一般,如果网络管理员的编程能力强,部署和运维也就不是问题。当然,真正解决了厂商锁定的问题之后,可能会导致白牌交换机大行其道,这显然是网络硬件厂商不愿意看到的。

理论上,越是复杂的网络越适用SDN架构。在当前的大型复杂数据中心中,如果现有网络问题到了非解决不可的时候,也就是SDN发挥其用武之地的时候。

1.2.4 SDN相关的组织以及厂商对SDN的态度

由于各个设备和软件厂家、各个大专院校和研究机构对一项技术有不同的理解,这就需要成立一个组织去推动这项技术的发展,如推动网络协议标准制定的IEEE和IETF。按常理来说,一项技术只应由一个标准组织去推动,这样才可以集中力量将其标准化,但是事与愿违——不同的厂家和科研机构有不同的见解和利益关系,这就产生了分歧,导致出现了多个组织去推动某一项技术的发展,SDN也不例外。

此外,各大IT厂商由于在产品线、功能和特性上的差异,因此它们看待SDN的角度也不尽相同,应对SDN浪潮的手段也不同。

目前,SDN领域最具影响力的组织就是ONF(Open Networking Foundation)了。它由Google、Facebook、Microsoft等公司共同发起(这些发起者都不是网络设备制造商),成立于2011年,是最早着手定义并希望推动SDN标准化的非盈利组织,其科研和活动经费来自于会员公司的赞助和年费。该组织成立至今已有近5年时间,其主要工作成果就是制定了OpenFlow、OF-Config版本的标准。该组织也是全球范围内各个厂商间SDN互通互联测试的组织人和协调人,并定期组织学术研讨会。

在SDN被提出后的很长一段时间,ONF都是唯一的标准化组织,但是2013年4月,18家IT厂商联合推动了ODL(Open DayLight)的成立。这18家厂商是Brocade、Cisco、Citrix、Ericsson、IBM、Juniper、Red Hat、Microsoft、NEC、VMware、Arista Networks、Fujitsu、HP、Intel、PlumGrid、Nuage Networks、Dell与Big Switch(后退出)。这18家公司绝大部分是IT行业内的巨头,多为网络设备制造商,它们不满ONF制定的游戏规则,另起炉灶。

表1.1比较了ONF和ODL这两个组织的异同。

表1.1 ONF和ODL的比较



ONF

(Open Networking Foundation)



ODL

(Open DayLight)


发起者

GoogleFacebookMicrosoft

Big SwitchBrocadeCiscoCitrix
 Ericsson
IBMJuniperRedHat
 Microsoft
NECVMwareArista 
 Networks
FujitsuHPIntel
 PlumGrid
Nuage Networks

成立时间

2011

2013

宗旨

制定SDN标准,推动SDN产业

打造统一开放的SDN平台,推动SDN产业

工作重点

制定唯一的南向接口标准OpenFlow,制定硬件转发行为标

不制定任何标准,而是打造一个SDN系统平台,利用现有一些技术标准作为南向接

OpenFlow的关系

OpenFlow是其唯一的南向接口标

OpenFlow是其南向接口标准中的一

北向接口

目前没有做任何北向接口标准化的工作,而且不倾向于标准化北向接

定义了一套北向接口API

转发平面的工作

通过OpenFlow定义转发平面标准行

不涉及任何转发平面工作,对转发平面不做任何假定和设

不难看出,ONF站在网络用户的角度,希望彻底摆脱厂商锁定,希望所有的接口都能被标准化,而硬件也应当是标准化的硬件,可以由标准的OpenFlow协议去管理。但由设备厂商主导的ODL不同,它们希望部分接口被标准化,保证设备厂商的利益,防止白牌交换机侵蚀其市场。

此外,运营商和一些软件公司基于SDN的一些想法,提出NFV(前文有提到)。斯坦福大学、加州大学伯克利分校联合了一些IT公司,建立了开放网络研究中心(Open Networking Reserch Center,ONRC)。IEEE、IETF这两个网络界的龙头组织也有一些想法,由于不是本书重点,在这里不多赘述。

尽管网络设备制造商联合发起了ODL组织,但是它们并没有抛弃ONF。换句话说,由于OpenFlow巨大的影响力,网络设备厂商还没有牛到能完全另起炉灶的程度。Google、Facebook旗帜鲜明地站在ONF这边,没有加入ODL。Amazon是个特例,它既没加入ONF,也没加入ODL,而是封闭式地发展自己的AWS(Amazon Web Service)。而那些耳熟能详的网络设备制造商或软件公司,如Brocade、Cisco、Citrix、Juniper、IBM、NEC、VMware、Arista Networks、Dell、Alcatel-Lucent、H3C、华为,都既是ONF会员,也是ODL的黄金/白银会员。这些厂商都开放了自己物理或虚拟网络设备的接口,可以将自己的设备交给SDN控制器管理。然而,这些IT厂商也都会在自己的交换机中加入有自己特色的东西,否则自己的设备岂不是任由其他厂家摆布,任由别人的控制器来定义了吗?因此,这些IT巨头们有些靠自己研发,有些靠并购,希望在SDN浪潮下不至于被竞争对手落下。它们大多使用Hybrid模式,而非纯OpenFlow的方法来实现SDN。对于自己设备的可编程接口,除了支持OpenFlow外,还加入了JSON API、XMPP、Phyton API等。在芯片方面,它们有些使用商用芯片,有些混合使用商用芯片和自研芯片。而这些内部研发和并购中,又以VMware收购Nicira和Cisco收购Insieme最为重磅——VMware收购Nicira后推出的NSX解决方案、Cisco收购Insieme后推出的ACI解决方案,都是将SDN和近年兴起的网络虚拟化技术完美融合在了一起。而Microsoft作为史上最成功的IT公司之一,自然不甘落后,Hyper-V在Windows Server 2012版本中也增加了基于其自主研发的NVGRE协议的网络虚拟化功能。但Microsoft并没有特别强调SDN,且刻意淡化OpenFlow(虽然它们是ONF的发起者和核心会员,且加入了ODL)。此外,Juniper收购SDN初创公司Contrail后也推出了同名的Contrail解决方案。这些不同厂商之间的解决方案的比较,会在下一章详细分析。

1.3 网络虚拟化的兴起

前文已经提到,网络虚拟化是云计算和SDN发展到一定阶段的产物,因此可以认为网络虚拟化是新一代的SDN。而云计算又是随着服务器虚拟化技术飞速发展而诞生的。因此,我们从介绍服务器虚拟化技术开始,引入网络虚拟化技术。

早期的网络虚拟化与现在的网络虚拟化在架构上有很多的不同,这会在本节中进行介绍,以使得读者在后续章节更好地理解VMware NSX网络虚拟化技术。

1.3.1 服务器虚拟化的日趋成熟

近年来,服务器虚拟化技术被炒得火热,也日趋成熟。它是伴随着x86计算机性能飞速发展的产物——CPU的处理能力越来越强,内存容量越来越大,如果一台x86服务器只安装一个操作系统、一个应用,就会产生大量闲置资源。于是有人就在考虑一个问题:为什么一台服务器里不能运行多套操作系统,同时使用多个应用呢?这样CPU和内存的闲置资源是不是就能得到有效利用了吗?终于在1999年,成立不到一年的VMware公司推出了业界第一套x86计算机的虚拟化软件,多操作系统可以安装在一台基于x86的PC或服务器里。之后,该软件还内建了对网络的支持,同一台物理服务器里的不同虚拟机可以在物理服务器内部进行通信,而不需要经过外部网络(当然在当时这个功能需要虚拟机同属一个IP子网)。2003年,存储巨头EMC公司斥资6.35亿美金,收购了成立仅5年的虚拟化软件初创公司VMware,这桩收购在后来被很多人认为是IT史上的最佳收购,没有之一——之后的十多年,VMware的市值翻了几乎100倍,成为了领航服务器虚拟化行业的公司。

为什么服务器虚拟化技术如此吃香?随着IT行业的发展,人们需要随时接入互联网,使用互联网上的各种应用,应用需求就会因此一直增长。如果新的应用通过安装在物理服务器上来实现,以现在的应用需求量来看,IT管理员可能根本无法忍受服务器的采购流程和上架安装时间,因此企业在需要增加应用时,希望通过虚拟化的方式进行便捷地扩展。另外,如果需要实现物理服务器的冗余,需要通过1:1的方式,即每个应用都安装在两台服务器里,服务器购买量与不做冗余的情况相比,增加了一倍,由此增加的成本可想而知。而使用了虚拟化,可以使用N+1的方式实现冗余,即多台物理服务器共享1台备用服务器,在出现故障时进行迅速在线迁移。这种迁移过程也是可动态资源分配的,实现了服务器的负载均衡。除此之外,通过虚拟化,不仅实现了之前提到的服务器闲置资源的高效利用,还节省了机房面积、制冷成本、用电成本,符合每个国家都在推行的绿色环保和可持续发展战略。

除了VMware外,Microsoft公司和Citrix公司在2008年也开始推出自己的虚拟化平台。其中Microsoft公司的Hyper-V解决方案,是Windows Server的一个新功能——底层安装了Windows Server后,可以在此之上开启虚拟机,跨物理服务器的虚拟机也可以被统一管理,有一致的安全和在线迁移策略(Microsoft的公有云Azure也是基于Hyper-V搭建的);Citrix公司的服务器虚拟化方案叫做XenServer,它通过收购剑桥大学开发的Xen开源系统并进行了再开发,主要用于其桌面虚拟化和应用虚拟化产品的底层系统。亚马逊的公有云服务AWS也是基于这个开源的Xen系统搭建的。此外使用较多的还有Red Hat公司主导的KVM开源虚拟机系统。

服务器虚拟化的飞速发展,让人们开始有了遐想空间——我们能否把网络也做成虚拟的,让一套物理网络承载多套逻辑网络,并可以通过编程的方式快速部署网络,解决数据中心仍然存在的问题(如自动化部署和运维问题、规模问题、流量不优问题、成本问题),且能将解决方案完美融合到现在的多租户数据中心环境中?

1.3.2 网络虚拟化的起源和发展

现今的网络虚拟化技术(特指基于主机Overlay的网络虚拟化技术)之所以会兴起,是因为现今的数据中心架构中存在三个问题。随着服务器虚拟化的飞速发展,网络虚拟化也被提出,用来解决数据中心存在的这些问题。

  • 虚拟机迁移范围受到网络架构限制——网络的复杂性
    服务器虚拟化的发展催生了一种叫做“虚拟机迁移”的技术,这在数据中心实现动态资源分配和高可用性时尤为重要。如果虚拟机从一个物理机上迁移到另一个物理机上,要求虚拟机不间断业务,则需要其IP地址、MAC地址等参数保持不变,这就要求数据中心网络是一个二层网络,且要求网络本身具备多路径的冗余和可靠性——各大网络厂家在提的“大二层”技术,其实主要都是为虚拟机迁移和存储的备份复制服务的。传统的生成树(Spaning Tree Protocol,STP)技术部署繁琐,且协议复杂,网络规模不宜过大,它限制了网络在虚拟化环境中的扩展性——一旦规模大了,生成树就很难控制,就会产生环路等网络问题,甚至导致整网瘫痪。基于各厂家私有的IRF/VPC等技术,虽然可以消除生成树,简化拓扑,具备高可靠性,但是灵活性上有所欠缺,只适合构建小规模网络。而为了适应大规模网络扩展而推出的TRILL/SPB/FabricPath等技术,虽然解决了上述技术的不足,但网络中的设备均要软硬件升级来支持此类新技术,这带来部署成本的上升,且该技术也没有解决下面会提到的两个问题,即MAC和VLAN的限制问题。

  • 虚拟机规模受网络规格限制——网络备MAC地址表数量级不够
    在大二层网络环境下,数据流都需要通过明确的网络寻址以保证准确到达目的地,因此网络设备的二层地址表项大小(即MAC地址表),成为决定了云计算环境下的虚拟机的规模上限。而且这个二层地址表项并非百分之百有效,这使得可用的虚拟机数量进一步降低。特别是对于低成本的接入交换机设备而言,因其表项一般规格较小,更加限制了整个数据中心中的虚拟机数量——如果接入交换机的地址表项设计为与核心设备在同一档次,则又会提升网络构建的成本。减小接入设备压力的做法可以是分离网关,如采用多个网关来分担虚拟机的终结和承载,但这样也会带来成本的上升——核心或网关设备是不是要多购买一些?

  • 网络隔离/分离能力限制——网络设备的VLAN数量不够
    当前的主流的网络隔离技术为VLAN,它在大规模虚拟化环境中部署会有两大限制:一是VLAN数量在标准定义中只有12个比特,即可用的数量为4000个左右(精确数量为4096,但由于有一些保留VLAN不能使用,姑且称之为4000左右),这样的数量级对于公有云或大型云计算的应用而言是远远不够的——其VLAN数量会轻而易举地突破4000;二是VLAN技术当前为静态配置型技术,这样一来在整个数据中心网络中,几乎所有VLAN都会被允许通过(核心设备更是如此),任何一个VLAN下的目的未知的广播数据包都可能会在整网泛洪,非常消耗网络交换能力和带宽。

对于小规模的云计算虚拟化环境,现有的网络技术如虚拟机感知(VEPA/802.1Qbg)、数据中心二层网络扩展(TRILL/SPB/FabricPath)、数据中心间二层技术(EVI/OTV)等,可以很好地满足业务需求,上述限制可能不会成为瓶颈。然而,这些技术完全依赖于物理网络设备本身的技术改良,目前来看并不能完全解决大规模云计算环境下的问题,在一定程度上还需要更大范围的二层技术革新来消除这些限制,以满足云计算环境的网络需求。在这样的趋势下,网络虚拟化架构开始浮出水面,它基于的是一种叫做Overlay的技术。

Overlay指的是一种在网络上叠加网络的虚拟化技术,其名字是根据底层物理网络层Underlay而取的,其大体框架是对基础网络架构不进行大规模修改的情况下,实现应用在网络上的承载,并能与其他网络业务分离。这种模式其实是对传统技术的优化而被提出的——行业内早期就有了支持Overlay的技术,如RFC 3378(EtherIP:Tunneling Ethernet Frames in IP Datagrams)就是早期的在IP网络之上运行的二层Overlay技术。后来,H3C与Cisco都在物理网络的基础上发展了各自的私有二层Overlay技术——EVI(Ethernet Virtual Interconnection)与OTV(Overlay Transport Virtualization)。EVI与OTV都主要用于解决数据中心之间的二层互联与业务扩展问题,对于承载网络的基本要求是IP可达,而且在部署上相当简单且扩展方便。但是,它们仍旧没有解决前文所说的大型数据中心的三个问题。

图1.7很好地阐述了Overlay的工作机制——Overlay以服务的形式,运行在底层物理网络之上,设备到设备间的访问无需关心物理路径。这也有利于数据中心的二层链路的建立。它非常像VPN的工作机制,即通过封装使得特定流量在隧道中进行通信。这种工作机制是通过物理网络设备完成的隧道封装来实现的。

随着云计算和虚拟化技术的发展,基于主机虚拟化的Overlay技术开始出现,我们可以在服务器Hypervisor内的虚拟交换机上支持基于IP的二层Overlay技术,从更靠近应用的地方来提供网络虚拟化服务,其目的是使虚拟机的部署与应用承载脱离物理网络的限制,使云计算架构下的网络形态不断完善,虚拟机的二层通信可以直接在Overlay之上承载。因此,Overlay可以构建在数据中心内,也可以跨越数据中心进行构建,异地数据中心的二层问题迎刃而解。

SDN与网络虚拟化的起源与现状_网络虚拟化_06

图1.7 Overlay的工作机制

现在,Overlay也支持从主机到物理网络的模式,即从虚拟交换机到物理交换机的Overlay。三种Overlay的部署模型如图1.8所示。

SDN与网络虚拟化的起源与现状_服务器_07

图1.8 基于物理网络、主机和混合模式的Overlay

2008年,Cisco公司和VMware公司联合开发了一款虚拟交换机——Nexus 1000v系列,它在VMware虚拟交换机的基础上,增加了很多网络功能,如安全功能、更强的QoS和可视化,可以与物理网络(Nexus交换机)实现一致的策略和统一的命令行配置,使得网络管理员可以有效地管理基于虚拟机的网络,并统一管理物理网络。后来,两家公司联合研发了VXLAN协议,并将运用在vSphere分布式交换机(VDS)和Nexus 1000v之上,这使得用户可以在不同虚拟机之间建立隧道,在一套物理网络中构建多拓扑的虚拟网络。这就是最早的基于主机虚拟化的Overlay。

这种基于主机虚拟化的Overlay的出现解决了以下问题。

  • 虚拟机迁移范围受到网络架构限制
    Overlay是一种IP报文封装技术,具备大规模扩展能力,对设备本身没有特殊要求。而且网络本身具备很强的故障自愈能力、负载均衡能力。采用Overlay技术后,企业部署的现有网络便可用于支撑新的云计算业务,而且改造难度也较低。

  • 虚拟机规模受到网络规格限制
    虚拟机的IP数据包在封装之后,对网络只表现为封装后的网络参数,即隧道端点的地址。因此,对于承载网络(特别是接入交换机)而言,MAC地址规格的需求就极大降低了,当然,对于核心设备表项(MAC/ARP)的要求依然较高。当前的解决方案仍然是采用分散方式,通过多个核心设备来分担表项的处理压力。

  • 网络隔离/分离能力限制
    针对VLAN数量约4000的限制,Overlay技术中引入了类似12比特的VLAN ID的用户标识,并用24比特进行标识,可以支持2的24次方,即千万级以上的VLAN数量。其实在这里很难称这是VLAN数量了,Overlay在这里沿袭了云计算“租户”的概念,将其称之为千万级的Tenant ID(租户标识)数量。针对VLAN技术下网络的Trunk All(所有VLAN穿越所有设备)问题,Overlay对网络的VLAN配置没有要求,可以避免网络本身的无效流量带来的带宽浪费——流量都是经过隧道封装来完成的,无需在端口允许所有VLAN(或租户)通过。同时,Overlay的二层连通基于虚拟机业务需求创建,在云环境中全局可控,可以通过云管理平台观察到全局的健康状况和流量负载。

在很长一段时间内,Nexus 1000v系列交换机是业内唯一一款拥有高级功能的虚拟交换机,因此Nexus 1000v几乎垄断了市场,VMware获得了支持自己虚拟机所需的高级网络功能,Cisco则通过向部署VMware虚拟化平台的用户收取Nexus 1000v license费用来获得利润。这种状况随着Nicira的横空出世而改变——Nicira提出的完整网络虚拟化平台(NVP)逐渐开始为AT&T、eBay、NTT以及Rackspace等IT巨头的数据中心提供虚拟交换平台,它基于SDN理念,将它的NVP网络虚拟化平台做的更好(因为Nicira本身就是SDN的提出者与OpenFlow的发明者),实现了Overlay层面的控制平面、转发平面的分离,带来了真正的新一代SDN和网络虚拟化解决方案。NVP平台使用OpenFlow作为控制协议,有自己的控制器,还有自己的虚拟交换机OVS(Open vSwitch)系统,是SDN和网络虚拟化的完美结合。它在诸多功能上都胜于Nexus 1000v,增加了更多网络虚拟化功能,借助OpenFlow的集中控制和管理,目标直指数据中心的复杂部署问题——它通过向云计算管理平台提供的可编程接口,将数据中心的自动化变为可能,同时将虚拟机部署和运维难度大大简化,效率大幅提高。并且,Nicira通过研发STT这个私有的Overlay技术,也可以实现类似VXLAN的Overlay功能,这个技术还能通过一个伪装的TCP包头,使得服务器网卡对大数据包进行分片,从而有效减轻服务器的CPU负担。这是第一个真正基于SDN的网络虚拟化平台,也是完整的网络虚拟化解决方案架构。之前的纯Overlay技术,无论基于硬件还是基于Nexus 1000v,都不能认为是真正的、完整的网络虚拟化解决方案——控制平面和转发平面没有分离。

当SDN结合了网络虚拟化后, SDN已经发展到了第二阶段,这就是新一代SDN。它与之前的SDN有什么不同呢?因为传统SDN仍然是基于五元组(IP地址,源端口,目的IP地址,目的端口和传输层协议)的TCP/IP协议,这样就意味着一个问题——改变了IP或端口,就改变了一切。因此,传统SDN并没有完全消除网络的复杂性,它只是把复杂性集中了起来。在当前数据中心内部,虚拟机会因为高可用性或动态资源分配而迁移,在迁移过后,IP地址和端口都可能发生变化,这就意味着传统SDN控制器要做的策略非常复杂,这些策略包括前文提到的为Web前端、最终应用、数据库之间通信配置的各种策略。要实现真正的自动化,必须使用网络虚拟化,在数据中心内部消除五元组的TCP/IP协议,打通大二层网络,通过MAC地址进行源目地址的寻址工作。因此,SDN和网络虚拟化这二者的结合,即新一代SDN才是未来自动化数据中心的趋势。

Nicira提出的这个架构引起了业内的强烈震荡,也引来了很多融资,后来各大IT巨头都希望斥资收购这家初创公司,尤其是Cisco和VMware——Cisco希望把Nicira的NVP平台融入自己的Nexus 1000v系统,做到真正的基于SDN的网络虚拟化;而VMware认为自己是服务器虚拟化行业的领头羊,一旦收购Nicira,就可以抢占并不成熟的网络虚拟化市场,这样一来,它们的服务器虚拟化平台之上就不用再部署Nexus 1000v,而且可以和其他的网络供应商实现更好的融合方案。VMware认为自己的服务器虚拟化解决方案已非常成熟,一旦将服务器虚拟化和网络虚拟化解决方案进行整合,就可以抢占下一代自动化数据中心(SDDC)的市场。

最终,VMware笑到了最后。2012年7月,它们收购了Nicira。2013年,VMware在整合了自己的服务器虚拟化产品、云管理平台和前文提到的Nicira NVP平台后,推出了完整的网络虚拟化解决方案,即NSX解决方案,这意味着VMware和Cisco的合作基本告一段落。Cisco无奈在Nexus 1000v中逐渐加入了对Microsoft Hyper-V和KVM的支持,并于2013年年底发布了ACI解决方案。而Microsoft和其他一些厂商也不甘示弱。一场围绕着网络虚拟化的战争打响了。

---End---

需要加入 "VMware NSX爱好者" 微信群的朋友,可以私信我。

注意:VMware NSX爱好者的群公告为:"本群讨论VMware NSX为主,也可讨论网络技术。欢迎转发网络技术相关的招聘信息。但不欢迎拉票、点赞等。实在想发,请先发不低于50元的红包,且红包人数不多于30人"


-----------


微信公众号平台"乐生活与爱IT"在目前阶段,主要是分享软件定义存储(SDS),及VMware VSAN相关的文章,偶尔也会分享虚拟化、云计算、大数据,甚至生活雷的好文章,欢迎投稿。欢迎对SDS感兴趣的朋友,加入软件定义存储讨论 QQ群:122295009,可下载原创的一些文章,及其他有参考价值的文档。

欢迎您通过扫描关注微信公众号:“乐生活与爱IT”。

SDN与网络虚拟化的起源与现状_数据中心_08

关注后,可以通过点击左下角的“文章目录”,详细了解如何查看历史文章。