长期以来,网络技术总是以被动方式进行演变,并且大量的技术革新都落地在网络设备本身,如带宽不断提升,从千兆到万兆、再到40G和100G;设备体系架构变化,也是为了性能地不断提升,从交换能力几十Gbps提升到T级别以致100T级别;组网变化,网络设备的N:1集群性质的虚拟化,在一定范围内和一定规模上优化了网络架构,简化了网络设计;大二层网络技术,通过消除环路因素,支持了虚拟化条件下的虚机大范围二层扩散性计算。
新的技术商用,总会引起设备的升级换代,并且随着流量的巨大变化,网络的部署与变更技术上越来越复杂,网络在应对流量变化上很难有良好的预期性,在当前方式下,一旦完成业务部署,服务器通过网线连入网络,应用流量吞吐对网络的影响就难以控制、网络的调整也就变得相当滞后。
软件定义网络——SDN(Software Defined Network)的出现和理念演进,开始改变网络被动性的现状,使网络具备较大灵活程度的“定义”能力;这种可定义性,是网络主动“处理”流量而不仅仅是被动“承载”流量,并使得网络与计算之间的关系不仅仅是“对接”,而是“交互”。
SDN的思想集中体现在控制面与实体数据转发层面之间分离,这对网络交换机的工作方式产生了深远的影响。高端用户原本就不满足于使用网络预先设定好的功能,而是希望在自己的业务功能不断丰富变化的过程中,能够按照自身需求快速进行调整。而在控制层面分离出来后,或者说控制层面可以开放出来,更能实现虚拟化的灵活性,使得用户能够进行程序编制,那么基于应用与流量变化的快速响应,便不需要完全依赖于设备供应商的长周期软硬件升级来完成。
SDN的思想是将更多的控制权交给网络使用者,除了设计部署、配置变更,还可以进行网络软件的重构,使得新的技术验证可以先于商业化。这种网络能够以抽象化的方式解决网络的复杂性问题,解除了用户收支网络功能和特性的紧约束,能够在更高层面研究和满足项业务需求。
1 当前主流SDN的概念探讨
最经典的SDN架构描述是来自ONF(Open Network Foundation)的SDN体系架构图(如图1所示)。
图1 SDN体系架构
图1表达了SDN的分层解耦合概念,包括通用的基础硬件层、硬件抽象层、网络操作系统、上层应用。其中基础硬件与硬件抽象两层组成物理网络设备,也就是SDN架构中的数据转发层面;网络操作系统与上层应用组成了控制层面。数据转发层面与控制层面之间以一种标准化的交互协议来解耦合,此协议当前为OpenFlow。这种去耦合的架构,表明网络操作系统及网络应用(如路由控制协议等)不必运行在物理设备上,而可以运行在外部系统(如X86架构的服务器)内,从而实现网络控制的灵活可编程性。
除了解耦合控制层面与数据转发层面,SDN还引入了集中控制的概念(如图2所示)。对于传统的设备,因为不同的硬件、供应商私有的软件,使得网络本身相对封闭,只能通过标准的互通协议与计算设备配合运行。网络中所有设备的自身系统都是相对孤立和分散的,网络控制分布在所有设备中,网络变更复杂、工作量大,并且因为设备异构,管理上兼容性很差,不同设备的功能与配置差异极大;同时网络功能的修改或演进,会涉及到全网的升级与更新。而在SDN的开放架构下,一定范围内的网络(或称SDN域),由集中统一的控制逻辑单元来实施管理,由此解决了网络中大量设备分散独立运行管理的问题,使得网络的设计、部署、运维、管理在一个控制点完成,而底层网络差异性也因为解耦合的架构得到了消除。集中控制在网络中引入了SDN区别于传统网络架构的角色——SDN Controller,也就是运行SDN网络操作系统并控制所有网络节点的控制单元。SDN能够提供网络应用的接口,在此基础上按照业务需求进行软件设计与编程,并且是在SDN Controller上加载,从而使得全网迅速升级新的网络功能,而不必再对每个网元节点进行独立操作。
图2 封闭式网络与开放网络
分层解耦合架构中采用了OpenFlow的协议来分离网络的控制与转发层,图3是来自斯坦福的一张图表明OpenFlow的解耦模型。
图3 OpenFlow协议工作模式
网络设备(图3中OpenFlowSwitch)由标准的网络硬件和支持OpenFlow代理的软件构成。OpenFlow定义的网络硬件,不是传统的交换模式,而是以一种流表的方式来进行数据的转发处理,非常类似于当前交换机使用的TCAM对数据流的分类与控制行为,每一个网络中的流均由流表中的规则来控制处理,可以达到极精细的粒度。OpenFlow协议定义了一种通用的数据平面描述语言,设备上的OpenFlow代理软件通过与OpenFlow Controller建立安全加密(如SSL通信机制)通信隧道来接受对设备的控制转发指令。所有的流表指令均被定义成标准规范,通过Controller与代理之间的加密协议可靠传递。Controller上运行的各种网络应用,均被转换成OpenFlow“指令集”下发,从而易于实现标准化的模式,这使得OpenFlow成为SDN架构下的重要技术。
OpenFlow以一种比较理想的形式定义了网络设备的供应方式,但这种定义使得网络不是一个平滑升级和演进,而是一个颠覆性的更新,现有网络不能通过OpenFlow来升级,而是需要被完全替换。同时,OpenFlow设备是一种流表转发,也需要新的体系架构来设计网络芯片,虽然现有TCAM技术能支持OpenFlow的特性,但是功能不完备、大TCAM表项设备极其昂贵。因此,当前的OpenFlow设备,基本是在传统网络基础上支持OpenFlow协议,规格受限的初期产品。
OpenFlow的设计思路体现了SDN架构,但是,这种思路只体现了集中控制的优势,对于网络的运维管理并没有深入考虑,管理通信如何采用OpenFlow并与正常业务流的分离,是否覆盖替代还是与传统SNMP/NETCONF的管理方式,集中的OpenFlow Controller与分散的OpenFlow网络设备之间采取一种如何的管理方式更优,还需要OpenFlow本身的技术不断实践来印证。
OpenFlow在协议定义上还不完善,针对已有网络特性的定义还在补充变化,内容变更会不断持续,并逐步形成不同的技术版本,这使得软件和硬件在配套兼容上存在较大的问题,这也是OpenFlow作为SDN协议的在网络应用覆盖不全方面的严重不足。
2 H3C SDN体系架构:开放与融合
2.1 H3C SDN总体架构与策略
H3C在基于全网端到端的总体网络架构上,将会交付一个逐步发展丰富的SDN产品与解决方案集。(如图4所示)H3C SDN当前提供三大方案集:基于Controller/Agent的SDN全套网络交付、基于Open API的网络平台开放接口、基于OAA的自定义网络平台。在这三大方案集成基础上,构建一个标准化深度开放、用户应用可融合的NPaaS(Network Platform as a Service)网络平台即服务的SDN体系,既具备H3C已有的优势网络技术方案,又能在各种层次融合与扩展用户自制化网络应用。
图4 H3C SDN总体架构
2.2 基于Controller/Agent的SDN全套网络交付
在上述SDN基本体系架构定义的框架下,H3C提供与此一致的方案架构。如图5所示,H3C将在同一SDN的架构下,除了支持标准化的OpenFlow协议,并提供基于H3C自身成熟技术的自有协议RIPCRIPC(Remote IPC)。
图5 Controller/Agent的SDN网络
H3C将提供标准化的系列化Controller部件,能够以OpenFlow协议进行OpenFlow设备的集中控制,对上层提供灵活的开放接口,以满足各种网络应用的调用需求。在当前网络产品逐步集成OpenFlow特性,满足初始OpenFlow网络部署需求,并逐步丰富OpenFlow的产品组成,如图6左图构建了整体OpenFlow的SDN网络。
针对H3C优势技术IRF的进一步强化,基于Controller/Agent架构,以H3C RIPCRIPC的协议实现了VCF的技术,如图6右图所示,使用多台S5820V2组成的IRF结构体工作为网络的Controller角色,下联多台S5120HI。
图6 H3C SDN网络的两种实现
VCF采用SDN架构的N:1网络虚拟化,不仅将多台同一网络层面的设备整合,也将另一层次的设备整合,整个网络运行如同一台大型框式设备,运行管理各种操作均被虚拟化在一台大型设备内。所有的控制、设备管理均在S5820V2的IRF组上,其它的S5120HI运行为线卡模式。在这种SDN架构下,H3C的RIPC协议消除了OpenFlow协议在效率与管理上的不足,并有效继承了H3C Comware平台的原有IRF优势。
2.3 基于Open API的网络平台
SDN最重要的网络需求是可编程性,即用户可以在自身业务变化的情况下,根据需要自行软件开发,这种需求的核心是网络要有灵活开放的接口提供给用户的编程实现。H3C实现了多层化的Open API方案(如图7所示)。
基础设备层面可以提供深度的SDK级标准化VCC网络应用(VCC: Virtual Computing Container 虚拟计算容器),并提供高级XML的访问操作NETCONF标准接口体系,OpenFlow也是设备层面提供的一种标准接口模式;
设备控制层面(SDN Controller),作为网络操作系统,标准化的接口依据Controller的不同实现,对外可提供VCC、REST/SOAP、NETCONF、OpenFlow等。
Open API与H3C系统(Comware/iMC)内部集成(Integrated)API(如RIPC)相辅相成,构建差别的SDN架构,并在不同层次形成自有系统及对外开放与标准化,使得不同用户的可编程与应用变化性需求得以满足。
图7 H3C多层化的Open API
在Open API接口中,REST/SOAP是常规的高层协议编程接口,NETCONF是网络设备上新兴的XML语言编程接口,OpenFlow是SDN的一种协议,以上均是通用化的技术实现,VCC则是H3C在长期网络软件技术积累过程中形成的一种更为底层的标准化实现。
ComwareV7是基于Linux内核实现的新一代云计算网络操作系统,当前的架构,基于类POSIX的Linux接口及扩展形成一套开放的SDK,H3C提供了含SDK的接口描述、调用库、编译环境等完备的编程环境,使得用户可以使用C/C++以几乎完全等同于Linux系统下的环境进行自己的网络应用程序软件开发,而ComwareV7则为用户的软件运行提供了一个完整的系统环境,如图8所示。
图8 VCC运行
在VCC环境中,用户程序包可独立加载到设备上运行,软件可以不间断业务升级。Comware V7提供接口给用户,软件设计可以一定程度上访问底层硬件,对路由、MAC等硬件表项进行操作,或者设备的配置变更及相应状态监控等,同时还可以利用Comware V7现有的特性来辅助实现用户业务,从而实现用户软件定义网络的真正需求。
2.4 基于OAA的自定义网络平台
早期,H3C提出了开放应用架构(Open Application Architecture)的网络模型,即在H3C的网络设备中提供具有计算能力的线卡,用户可以在其上开发自己的特殊应用,并通过H3C的OAA关联协议与网络进行数据交互。
基于SDN的架构思路,H3C演绎了更灵活的用户化网络设计,实现的OAA新的业务模式,可以方便用户灵活实现自定义的网络功能。在OAA基础上,提出了两种开放式的接口模型,如图9所示。
图9左图,显示了一种全松耦合的OAA架构。针对用户任意形态运行的网络业务,可能是在服务器上的计算业务(如流量监控分析、数据旁路挖掘),也可能是专用的业务设备(如防火墙、IPS、加密机、数据压缩机),用户设备可以支持标准的OpenFlow协议,即可与H3C网络进行通信,在OpenFlow协议中传输业务指令,对需要处理的网络流量进行镜像、牵引、封装、定向等操作,将清晰定义的数据流以合适的方式导引到用户的计算设备进行自定义处理。这种方案的本质是,借助SDN的模型,将用户的数据处理设备运行为SDN Controller方式,而对特定业务流进行处理。
图9右图,显示了一种紧耦合的OAA架构,其中分两种模式:模式一,用户自设计提供高性能计算单元子卡,H3C提供OAA的线卡底板,两者以开放的标准化电气接口连接器相连,用户计算单元与网络之间依然通过标准的OpenFlow方式进行网络流量的引流操作,而软件、硬件均由用户自身根据业务需求来设计;模式二,H3C提供了整体的OAA线卡,用户基于H3C的硬件来开发自己的软件,在协议上仍然采用OpenFlow的方式进行特定数据处理。
图9 基于OAA的自定义网络平台
3 结束语
SDN是一个宽泛的网络体系架构,需要通过灵活开放的结构来实现用户需求,H3C的技术模式,是在不同的网络层面、不同的体系架构上均可提供用户需要的接口与业务环境,同时H3C本身也提供基于SDN的用户网络应用。