中兴通讯弹性网络智能控制器ZENIC

发布时间:2023-05-16 作者:汪军(中兴通讯)

自斯坦福CleanState项目孵化OpenFlow协议,在2009年业界正式提出软件定义网络(SDN)以来,业界已经有上百家企业正式加入到开放网络基金会(ONF)。SDN的产品及样机覆盖了SDN控制器、交换机、路由、虚拟网络功能部件等产品,应用场景覆盖了数据中心网络、企业网、校园网、光网络及业务边缘网络等。迄今为止,SDN的功能架构在不同的领域,出于技术和利益博弈两个方面的原因,业界尚无统一的认识。一般来说,ONF定义的转发、控制、应用的3层架构得到了相对广泛的认同。


SDN架构

    按照ONF的定义,SDN分为基础设施层、控制层和应用层(见图1)。虚拟化在基础设施和控制层两个层面上实现:前者实现设备级的虚拟化,比如一个物理交换机支持多个逻辑交换机;后者实现网络级的虚拟化,首先是SDN控制器将整个网络当成一个逻辑的超级交换机进行管理控制,其次将物理资源进一步根据端口、MAC、IP地址段等信息划分为多个虚拟网络。

   

在更广义的SDN架构中,控制层之上还有业务编排层,主要实现SDN域间资源的统一管理、SDN网络和其他资源的统一调度,比如OpenStack+SDN的数据中心解决方案中,OpenStack统一调度计算、网络和存储资源。

    站在整个网络架构的层面来看SDN,业界存在不同的看法:

    ● SDN只是作为区域性网络的改造,可以将一个SDN控制域看成一个超级设备。SDN并不改变原有的网络横向接口,边界网关协议(BGP)/多协议标签交换(MPLS)等仍然有效。

    ● SDN控制域间定义专门/增强的SDN东西向接口,将SDN作为整个网络的控制平面。

    本文认为,第一种方案更加具有现实意义,利于网络的平滑演进。第二种方案中的东西向接口要么可以通过扩充现有的BGP/MPLS协议实现,要么可以通过北向接口在业务编排层面实现。定义更加专用的SDN东西向接口,虽然有可能可以增强整网的能力,但是无疑也为部署增加了不少难度。

    SDN控制器位于SDN架构的中间和核心位置,是SDN价值的主要引入者,中兴通讯提供了弹性网络智能控制器——ZENIC。


中兴通讯弹性网络控制器架构

    来自于学术界的开源SDN控制器基于OpenFlow协议,转发模型也绑定于某个具体的OpenFlow协议版本。对于商用系统而言,必须要考虑整个产品生命周期内协议接口的兼容,还要考虑不同应用场景的区别以及和多厂家、多协议接口的差别,因此SDN控制面必须设置一个兼容多版本OpenFlow、多种控制协议以及不同转发面能力的抽象层,我们称之为转发抽象层(FAL),在此之上为网络操作系统(NOS)核心以及应用层提供的接口独立于具体的协议和硬件能力。

    中兴通讯弹性网络控制器Release 1支持1+1主备,以自研内核和应用为主;Release 2引入分布式架构,兼容OpenDayLight接口。

    中兴通讯弹性网络控制器ZENIC Release 2的架构如图2所示。图2自上而下主要包括协议栈、驱动和转发抽象层、控制器内核和应用层。其中应用层又分为内置应用和外置应用,内置应用通过本地API和控制器交互,外置应用通过REST标准接口对控制器进行编程。

    架构的右侧为C/C++域实现的控制器内核和自研应用,左侧为JAVA域,主要实现操作维护、北向接口以及对第三方控制器编程接口的适配兼容,以方便客户移植其他控制器的应用到本控制器上运行,保护客户已有的投资。


转发抽象层及驱动层

    转发抽象层定义统一的转发控制接口,包括对抽象转发面的状态、能力、硬件资源、转发表、统计信息等进行读取/操作,相当于驱动的基类。同时转发抽象层还管理转发面驱动的实例,根据转发面接入时的基本能力协商加载不同的驱动实例,将转发面的控制连接绑定到相应的驱动实例。
每个具体设备的驱动实现转发抽象层的接口,完成不同接口协议、不同硬件能力到转发抽象层的统一适配。从控制面及其上层应用的角度来看,FAL提供了一个统一的转发操纵接口。ZENIC已经实现对OpenFlow 1.0/1.2/1.3的自适应协商。


网络虚拟化的支持

    ZENIC内置对网络虚拟化的支持,支持采用MAC地址、端口、IP地址段以及其组合条件对网络进行分区。ZENIC内核统一采用32bit虚拟网络标识,理论上最大支持232个虚拟网络。这些网络虚拟化规则可以通过管理员配置或者由云平台下发。内核系统可以操作所有的虚拟网络资源,应用根据北向接口认证的结果来决定是否有权获得指定虚拟网络的状态信息以及操作相关的虚拟网络资源。

    ZENIC默认不同的虚拟网络之间是隔离的,带宽可以共享也可以独享。如果要允许虚拟网络之间通信,则必须配置互通规则。为了简化某些简单组网环境下的配置,控制器提供了缺省虚拟网络,缺省虚拟网络内部的通信以及和其他虚拟网络的通信则默认允许。


网络操作系统内核层

    控制器内核层主要管理拓扑、主机、接口、转发表等对象,维护上述对象状态构成的网络信息库。内核层并无预设的网络转发逻辑处理,而是维护准确的网络拓扑、资源状态以及转发表的存储、合成,接受应用对于网络、资源状态的订阅以及应用对于网络资源、转发逻辑的操作。

    内核层综合拓扑和主机位置、状态,给应用提供一个完整的网络视图,以供应用做转发、业务的决策。网络虚拟化也由内核层内置支持。

    OpenFlow的单一串行化流表模型以现有控制器实现对于网络扁平化的管理视图带来了很多问题,包括交换机硬件复杂化、业务到流表的映射困难、应用编程的复杂性。在ZENIC系统中,将内联网络管理作为内核服务之一,解耦接入网络和互联网络。内核管理互联网络的封装格式,上层应用只需要决策SDN控制域内两个接入端口的位置和策略。内核计算出完整端到端路径,并在接入侧将转发决策映射到互联网络路径的封装标签。ZENIC支持多种内联网络封装格式,包括MPLS、VLAN、VXLAN、GRE等。


分布式架构

    SDN架构给网络带来的一个重要的好处是全局网络视图以及在其之上所实现的优化流量调度、路径决策,当所控制网络超过一个SDN节点的能力时,则必须部署分布式控制器。影响分布式系统可扩展性的主要因素是负载均衡和状态复制开销。分布式哈希表(DHT)算法提供了一个可伸缩的分布式数据存储/路由算法,区别于传统P2P网络中的百万级的规模以及不稳定网络的假设,ZENIC中考虑上千节点的扩展性即可,采用高效的单跳DHT算法,可以保证苛刻条件下的性能。ZENIC控制器中转发面状态、主机状态、虚拟拓扑状态、全局配置以及全局拓扑等数据采用不同的分布式模型,保证分布式架构下的最佳负载均衡和最小复制开销。


弹性网络器的可编程架构

    ZENIC控制器提供了三个方面的可编程能力:第三方应用/模块的动态加载和卸载能力;简化易用的应用编程模型;南向驱动第三方可编程。


开放可编程软件架构

    SDN设计的初衷就是开放可编程,其中北向接口可以支撑绝大多数应用编程的需求。在某些性能、时延要求苛刻的流程中,比如对上送报文的实时处理,那么通过基于REST的北向接口开销可能难以接受。ZENIC提供了一种通过动态库加载到系统中,通过本地API进行编程的能力。

    应用开发时只需包含ZENIC提供的API头文件和接口库,则可独立开发应用模块、自测,部署时编译成为一个动态库,该模块可以动态加载到系统中,不用时可以通过界面卸载。ZENIC为了保证第三方应用和控制器其他部件的隔离,ZENIC控制器将第三方应用加载到独立的进程空间中,确保其缺陷不会影响控制器正常运行。


简单易用的北向应用编程接口

    北向应用编程接口(API)在不同的的应用场景中需求不同,对于封装的要求也有区分。如果将网络的原子能力暴露给应用,是有可能形成统一的API,但由于缺乏封装和易用性,应用编程、实现的复杂度较高。对于SDN而言,将会面临至少两类应用,需求迥异。

    ● 专业网络应用:订制化需求高,需要更加细节的API,对底层网络的操作操纵能力强,比如订制开发路由协议、订制进行精细化的流量调度。

    ● 普通应用:将网络作为一种服务,只是请求网络为应用提供服务,并不关心网络细节。

    对于后者,北向接口封装几个模型和交互简单、易懂的服务接口,而不是由应用向路径上的交换机逐个下发转发表以及相应的队列配置参数。
另一种思路就是由应用定义自身对网络的需求和操作接口,网络厂商提供插件实现应用的网络接口。典型的是OpenStack的Neutron组件,其定义了网络的API,由各厂商提供插件来控制自己的SDN控制器或网络设备。此架构相当于把SDN的北向接口标准化工作推到应用,网络去适配应用需求。
两种思路各有利弊,由SDN定义北向接口比较理想化,试图统一解决所有问题,但网络很难一一理解应用的需求,标准化的推进工作相对困难,而且易用性也很难保证;应用驱动的模式使得SDN落地更加容易,但是应用和多
厂商网络之间的互通要较耗费更大代价。

    ZENIC提供基本的细颗粒度的底层API,同时提供封装后的虚拟网络API,目前已经提供Neutron Plug-In接入到OpenStack之中。


流表抽象及协商

    OpenFlow 1.0提供的是一个单流表的抽象模型,但是需要TCAM(Ternary Content Addressable Memory)的支持,而TCAM价格相对较昂贵,同时其单表结构使得复杂转发逻辑的分解很困难。OpenFlow 1.1之后定义了一个多级流表的模型,增加了更多的表匹配字段和指令类型,能力越来越强,但是现有交换机ASIC支持较为困难。I2RS以及部分厂商的开放接口给应用暴露的是一个RIB(Routing Information Base,路由信息库)之上的多种业务表,表之间隐含了协议规定的各种逻辑。OpenFlow赋予应用/控制面对转发面最大程度的操纵能力,转发面可以是完全傻瓜化指令执行引擎,而其他开放API则是现有协议框架下的开放API,有严格的限定条件。

    ZENIC控制定义了多套业务层面的流表模型,覆盖数据中心网络、政企网、业务边缘、光网络等场景,这些业务层面的流表模型由转发面驱动负责将其和具体的转发面流水线模型进行协商,允许业务流表模型对应到部分或全部转发面流水模型上。当不能完全协商成功时,存在部分业务功能的损失,但不影响已经匹配的流表支持的业务功能,能够支持功能受限的ASIC以及全功能的vSwitch控制。


    SDN控制器是SDN解决方案中的核心部件之一,SDN控制器对不同转发面的兼容控制能力、对不同应用场景的支持能力、可编程能力以及可扩展能力决定了其核心价值。ZENIC将努力提供一个可裁剪、可扩展、多厂家互通兼容的开放SDN解决方案。