David Ward序
技术变革会影响开发人员和工程师建立和设计其业务架构,且影响十分巨大。这些变革并不适用于摩尔定律,而且它往往不仅影响IT领域,而且也影响商业环境。这样的变革往往每八至十年就会出现一次,对人们如何构建、使用和推广技术都能产生持久的影响。技术变革还迫使人们以新的方式来重新寻求商业机会。
在1996年,Gartner公司提出了“面向服务的体系结构”(service-oriented architecture, SOA)。到2000年,该构架已占据了中心舞台,其核心目的是使网络连接的大量计算机易于合作,以服务而不是人工交互的方式来交流信息。这不需要程序或应用本身进行底层的更改。从本质上讲,它起到了与一台机器上单个操作系统相同的作用,却应用到了服务器组成的整个基础设施上,使更可用、更灵活又更可扩展的应用和服务得以构建、测试、部署和管理。它引入Web服务作为事实上的方法,使功能构建模块可通过标准的、独立于平台和语言的IP协议来访问,得以对IT基础设施进行更快和更容易的开发、测试、部署和管理。
当看到软件定义网络时,人们也会有同感,网络是IT的基石,网络建立起新的体系结构,也就创造了新的商业机会。从本质上讲,网络让IT变得比以往任何时候都更加重要,并且成为新业务的助推器。网络如果以正确的方式来架构和运用,就能成为目前最大的业务推动者,即可以把网络、服务器和存储紧密联系在一起,使SOA的原则在网络层得到执行。SDN和网络API,可以更方便地实现对网络和服务的编程意图和状态接收,一改网络必须由魔法师们来建造和运行的传统观念。总之,当SOA原则应用于网络层,网络就变得更容易、更可编程、更灵活,企业也就能够根据业务变化的速度转换IT技术,这些都以新的方式增加了商业的价值。
但究竟什么是软件定义网络?许多阵营都有不同的定义。简单来说,SDN是简化网络的一种方式或体系结构,而且还能使网络对其工作负载和服务的要求更具有反应性。IT基础设施必须紧随商机应需而变,必须用全新的方式支持快速灵活的商业运作。从实用角度出发,SDN的定义可以是这样的:SDN在功能上使网络能被运营商以编程方式来访问,从而实现自动化管理和服务编排,跨多个路由器、交换机和服务器应用配置策略,以及对执行这些操作的应用程序与网络设备的操作系统进行解耦合。
SDN越来越成为各个行业的流行语,有必要回顾一下为什么SDN会出现。从历史上看,网络配置状态大致总是静态的、不变的,并且通常是不让碰的。通常是要在一台设备上手动和基于命令行(CLI)进行配置,网络管理基本靠“屏幕抓取”或使用Expect脚本的方式来解决可管理性问题和核心的可扩展性问题(剪切和粘贴方式)。编程接口最高端基本就是XML接口和执行Perl、TK/TCL和Expect。然而,当要对付一个大系统的许多台路由器、交换机和服务器时(以及面向的服务要在多个域的不同用户、权限和策略中来路由通信流量时),控制和管理状态需要以一个操作来应用到全网。一个接一个地对网元的管理根本就不够灵活和敏捷,也无法支持动态或瞬时数据(配置和状态无法持久地保持在配置文件中)的概念。但当SOA原则开始向下改变南向接口,在网络层得到应用并获得了认可时,新的体系结构伴随着网络技术的进步,使软件定义网络得以出现,用户得以用新的方式来实现网络的力量。
是的,路由器、交换机、服务器、网关等的协议接口确实已有多年历史了。几十年来,互联网中对订阅用户、会话和应用程序等相关的动态数据进行编程确实存在并得到了广泛部署。这些协议的服务器(例如,Radius、Diameter、PCMM、COPS、3GPP)都可以被视为早期形式的SDN,难道它们不是吗?现在有点不同的是,SDN体系结构的一个主要功能是:能够在一个平台上编写应用程序,该平台把从不同来源或数据库获得的数据定制化为一个网络范围的操作。
SDN也是这样一个体系结构,即集中式的管理下的分布式控制平面、管理平面和数据平面,其中由策略来决定的转发规则是集中式的,而实际的转发规则处理是分布在多个设备上的。在这个模型中,应用程序策略的计算(例如服务质量、访问控制列表和隧道建立)实时地发生在本地,策略的质量、安全和监控被集中地管理,然后推送到了交换/路由节点。这允许更大的灵活性、可控制和网络本身的可扩展性,并允许使用模板、变量、用户的多数据库和政策等等,来生成或编译出所需的配置和状态,并将其下载到路由器和交换机中。理解SDN的关键点是,SDN不会取代路由器或交换机上的控制平面,而是对其进行补充。怎么补充?SDN同时提供整个网络的视图,而原来只能看到拓扑中一个位置(如路由器或交换机)的视图。动态路由和信令与集中式视图的结合将异常地强大。这可以对故障事件提供最快的保护,具有最大的弹性,可以用一个命令就把服务集成到网络中。两种技术双管齐下,的确是迈进了一大步,这是以前的工具箱中所没有的。
SDN有几个变种,另外人们也经常提到一些组件。OpenFlow是其中之一,它从体系结构上把网络设备上的数据平面与控制管理平面分离。这就可以用集中式的控制器来管理转发节点上的数据流。但是,OpenFlow只是SDN中的一个协议和一个元素,现在还有许多其他的协议,例如I2RS、PCE-P、BGP-LS、FORCES、OMI和NetConf/Yang等,所有的这些也都是开放标准。请记住最重要的是,SDN不是一种协议,它是一种适用于运行和编程的体系结构。
SDN能给我们带来什么呢?SDN体系结构使网络和网络数据更靠近应用层,也让应用层更靠近网络层。正如SOA实践一样,不再需要人工或脚本语言来双向地分发数据和信息了,因为现在已经演化出API和工具,可以通过开放接口和互操作的方式来安全并可扩展地传递数据和信息。网络中的数据(统计数据、状态、订阅用户信息、服务状态、安全、对等体等)可被应用程序分析和使用,从而实现调控意图并把网络编程为新的配置。网络编程结果既可以持久不变,也可以瞬间改变。
可编程性(即通过API和开放接口访问网络)是SDN的核心。同样重要的概念是把控制和管理平面挪到交换机/路由器之外的应用中,并通过SDN协议来连接应用与网络设备。这些设备外的应用实际上就是软件开发者所说的“平台”,因为它有自己的一套API、逻辑,以及向网络提出要求、接收事件、处理SDN协议的能力。这里关键的是,程序员不需要知道SDN协议,他们只要会根据控制器的API写程序就行。程序员不需要知道各种网络设备的不同配置语法或语义,因为他们使用控制器的API编程,而控制器负责与各种设备沟通。不同厂商、时代和种类的设备(例如传输设备、交换机、无线基站、用户终端网关、对等路由器、核心路由器和服务器),都可以用集成到控制器底部的SDN协议来编程。程序员只使用控制器顶部的API来自动化、编排和操作网络。这并不是说控制器就一统天下了,也不是说控制器能满足网络所有的层次和功能,而是说现在的网络已经可以脱离设备被抽象和编程了。因此,当SDN与OSS(运营支撑系统)或IT系统等IaaS(基础设施即服务)层集成后,网络的自动化和编排速度,就能达到像用户登录和在服务器间分配任务一样快。
对新工具的使用习惯也与整个SDN运动相关,这通常由系统管理员来使用,现在也提供给网络运维人员了。Puppet、Chef、CFEngine等工具以新的方式来自动化或编排网络,即现在可以通过创建插件利用网络的开放接口来使用网络数据。还可以使用控制器的API方便快捷地在多语言网络中构建和应用策略,并集成到现有的工具如集成开发环境IDE(NetBeans、Eclipse等)中。相比传统方式下使用的命令行界面CLI模型,这给网络工程师带来了更好的用户体验。
在深入探讨示例之前,我们首先要理解SDN实际上解决了什么,以及为什么要向这个特定的体系结构转变。随着网络的发展和新服务的部署,以新的方式让用户可以更方便地提供新的服务并实时地编排网络资源,变得非常重要。实现了这一点,就可通过快速可靠的资源调度自动化,并让网络直接对应用程序的请求作出响应(而不是由人来干预),从而降低成本。这使得运营商能够使用编程的(且可扩展的)控制来创建和应用服务,这比手工的命令行界面更简单。此外,SDN使基础设施、服务和应用得以优化:它扩展了新的网络数据和能力并应用于上述体系结构,创建出新的方式,不仅优化了现有的应用,而且可插入新的服务或产品,提供更好的用户体验或创建了可货币化的新产品或先进功能。
随着SDN的发展,我们有必要看看一些实现的案例,才能理解为什么对各个行业(例如视频分发、用户服务和移动、有线和宽带、安全和运营商边缘)而言,接受SDN势在必行。在SDN充分释放其潜力的地方,人们要的不仅是对网络功能进行编程并扩展到整个基础设施,而且是为新的使用案例而把服务器、存储和网络紧密联为一体。在这种情况下,无论是物理的、虚拟的还是混合的系统,实际上都可以彼此相互作用,从而获得更大的基础设施灵活性。
基于网络状况与规则变化的流量策略和重新路由也是常见的应用,比如新的服务或数据插入到应用程序,能够清晰地对带宽划分优先级,为那些支付了溢价金额的用户提供更快的连接速度。当人们应用SDN和独立于数据平面的集中式管理平面,就可迅速做出决定把数据流量重新路由到哪里,因为这是通过对软件接口(API)进行编程而实现的,而不是使用设备上的CLI的方法。
一个先进的案例是混合云。在这种情况下,一个应用程序可以运行在私有云或数据中心,当需要降低计算容量峰值或成本时,又可以利用公有云。历史上看,云爆发(cloud bursting)一般仅用于非关键任务的应用或服务的环境中,但随着网络与软件所采用的原则紧密结合,应用场景也发生了变化。现在,应用仍可以继续遵循IT组织的策略和规则。如果它依赖基于云用户端部署的,而不是在公共云环境中部署的各种数据或信息,应用还可以保留其依赖模型。它允许应用在不同的平台上运行,无论它建立在哪里。
当人们审视SDN时,还必须考虑网络功能虚拟化(Network Functions Virtualization, NFV),以及它所关联的更广泛的基础架构和虚拟化场景。从物理到虚拟的过渡正在业界引导许多变化。通过把硬件(物理的)关联到软件(虚拟的),包括网络、服务器和存储,就可以虚拟化网络服务,它们可以编排调度得与其他工作负载一样快。再结合广域网的编程接口,可以绝对保证实现服务交付。SDN与NFV结合,是计算和网络的关键体系结构转变。这一转变的标志是基础设施的动态变化与客户需求密切契合,通过分析来协助预测性能要求,以及一整套管理和服务编排工具,使网络功能和应用以更快的速度和更低人工干预来放大、缩小和扩展。这个变化会深刻影响人们如何为应用构建云平台,并在最基本层面上必须提供工具和技术,让网络能与平台一样快速地响应不断变化的工作负荷需求。工作负荷需求中还可以包括满足其所需的网络需求。
重要的是,要注意并非所有的网络都是一样的,这就是为什么当从网络(无论是从物理设备还是虚拟设备)中抽象出控制时,了解底层基础设施是至关重要的。网络功能虚拟化仅仅是增加了虚拟的或云端的设备,以加强传统的基础设施。然而,必须考虑把云端和云用户端的产品结合起来,才能确保不仅是运行应用系统或服务的企业,而且是使用服务的用户(无论他们是企业内部用户还是外部的客户),都能有无缝的体验。
那么人们为什么关注SDN?从技术方面来看,SDN让人们有了更大的灵活性和敏捷性,为基础设施提供了各种选择。通过允许对数据进行集中式控制,并与网络及存储和服务器进行整合,人们在性能、速度、流量的优化和服务保障方面有了一致性的视图。使用可在多种语言和工具中使用的编程接口(API),运维人员和管理员可以迅速地响应内部和外部客户在业务方面的需求。现在,他们可以将策略应用到内部开发组织,让他们的网络数据更有效地在服务器群中运转起来,甚至有可能构建出具备网络智能的更快、更高性能的应用。让数据以一种安全的和可扩展的方式来提供,整个IT组织都能受益,而且因为开发和部署周期更快以及更容易提交新服务,业务也同样受益。SOA给开发者的许诺,即只写一次然后到处都可以运行,现在可以通过底层网络在整个企业、接入网、广域网和数据中心(物理的和虚拟的)内分发信息的能力来完全实现。这使得应用打破了OSS与管理平台之间的界限,这个界限以前限制了应用在不同的环境中运行的能力。
IT行业正在经历一场巨大的转变,将使用户对其应用进行构建、测试、部署和货币化的方式进行彻底革命。有了SDN,网络现在已更像一个应用程序(反之亦然,应用程序也更像网络了),这将孕育出更智能、更快速、性能更好的应用程序。它使网络以新的方式来实现自动化,为用户提供更大的灵活性和可扩展性,并为业务释放出成本节约和创收的潜力。这是网络业乃至整体IT业的新时代,这是改变游戏规则的时代。请看本书吧,开卷有益,你不可不读。
——David Ward
思科系统公司首席技术官