
1.4 ODL设计目标
SDN(Software Defined Network,软件定义网络)的运动来自一个简单的问题:为什么网络设备不应像其他计算平台一样可编程? SDN的设计理念通过分解传统的垂直集成的网络设备堆栈,并将控制平面重构为独立于网络设备的操作系统,可以实现如下几个长远目标:
❏ 来自不同供应商的不同物理和虚拟设备类型的互操作性。
❏ 提供网络流量从源到目的的可视性。
❏ 面向所有设备的通用的管理框架。
❏ 可根据用户需求塑造网络行为的可编程性。
❏ 基于策略的自动化。
ODL作为SDN设计理念中控制与管理面的开发及运行平台(网络操作系统),是迄今为止这个新堆栈中最大和最成熟的项目,逐渐成为新开放网络生态系统的核心组件。
ODL作为一个SDN控制器运行与开发平台,在架构设计上考虑了如下关键需求。
❏ 灵活性:SDN控制器必须能容纳大量的各类型应用。同时,控制器应用应该是使用通用的框架和编程模型,提供一致的API给客户端。这对于发现并解决故障、系统集成、组合多种应用为更高级的编排流都是十分重要的。
❏ 开发过程规模化:控制器架构必须允许插件、业务组件、应用能相互独立进行开发,能够灵活地选择功能特性进行集成。
❏ 组件的运行时安装与卸载:控制器必须能够在运行时安装新的协议、业务及应用插件。控制器的基础架构需要适应动态安装的插件或从设备动态中发现的数据模型,运行时的扩展性允许控制器适应网络的变化(新设备或新网络特性),避免传统EMS、NMS冗长的发布周期。
❏ 性能与规模:控制器应该能够在多样化的环境中,使得承担不同的负载/应用都运行良好。当然,性能不应该通过在模块化上花费大量代价来获得。控制器架构应该被允许在集群、云环境中进行水平扩展,平台需要能为其提供一致性的集群支持。
为了支持SDN应用的开发,控制器也应该提供满足如下需求的应用开发环境。
❏ 使用领域模型语言描述内部和外部的系统行为,会促进开发人员和网络专家的协作,方便系统集成。领域模型语言和代码生成工具应该提供API和协议的快速进化(敏捷)。控制器使用的领域语言、技术、工具对于一些通用的网络概念,比如业务、服务链、用户管理和策略等都要是可用的。
❏ 控制器使用的模型工具应该与设备的模型工具一致,这样控制器和设备就可以使用通用的工具链,设备模型在控制器中也可以被重用,使用这些模型的控制器应用/插件与设备之间即可实现无缝对接。工具链也应该支持业务和设备的模型间的适配代码的生成。