SDN控制器提供了基本的网络服务与通用的API。网络管理员仅需制定策略来管理网络,而无须关注网络设备特征是否异构和动态等细节。因此,控制器在SDN中相当于网络操作系统(Network Operating System,NOS)。

一、SDN控制器的基本功能

SDN控制层包含一个或多个控制器,负责管理和控制底层网络设备的分组转发。控制器将底层的网络资源抽象成可操作的信息模型,提供给应用层,根据应用程序的网络需求来控制网络工作状态,并发出操作指令。

一般认为SDN控制器应该具有以下基本功能:

  • 路由管理:根据交换机收集到的路由选择信息,创建并转发优化的最短路径信息。
  • 通知管理:接收、处理和向服务事件转发报警、安全与状态变化信息。
  • 安全管理:在应用程序与服务之间提供隔离和强化安全性。
  • 拓扑管理:建立和维护交换机互联的拓扑结构的信息。
  • 统计管理:收集通过交换机转发的数据量信息。
  • 设备管理:配置交换机参数与属性,管理流表。

二、SDN东西向接口

SDN东西向接口用于连接SDN网络中的多个控制器。SDN东西向接口面临两个问题:一是控制平面的扩展,二是多个设备的控制平面之间协同工作。通过控制器的东西向扩展可以形成分布式集群,避免单一控制器可能存在的扩展性、性能等方面的问题。为了确保控制器集群对SDN网络的控制效果与系统的可靠性,从两个方面入手来解决这个问题。

一种方法是采用主–从控制器结构。主控制器负责生成和维护全网控制器和交换机状态信息,当主控制器失效时,需要从集群的从控制器中选举一个成为新的主控制器。

另一种方法是控制器集群对交换机透明,即在SDN网络的运行过程中,交换机无须关心当前接收的是哪个控制器发来的指令,同时在其向控制器发送数据时,能够保持与之前单一控制器一样的操作方式,从而确保控制器在逻辑上的集中。

由于SDN西向接口用于多控制器之间,以及控制器与其他网络之间的连接与通信,东西向接口标准对于SDN组网方法、网络结构与控制器之间的协作至关重要。

三、SDN南北向接口

SDN南向接口层中包含多种南向协议的实现。其中,OVSDB是Open vSwitch数据库协议,用于虚拟交换机网络配置;NETCONF是IETF研发的网络管理协议;LISP协议插件用于位置/身份分离;BGP是外部网关协议插件;PCEP是用于VPN配置的路径计算单元通信协议插件;SNMP是简单网络管理协议插件;SNBi是SDN接口插件等。

SDN北向接口位于控制平面和应用之间,使应用程序能够访问控制平面的功能与服务。网络业务开发者通过北向接口,以软件编程的方式调用控制器提供的数据中心、局域网、城域网与广域网等各种网络资源,获知网络资源的工作状态并对其进行调度,以满足业务资源的需求。

由于北向接口是直接为网络业务提供服务的。应用层业务的复杂性与多样性要求北向接口具有高度的灵活性和可扩展能力,并具有良好的可操作性,以满足复杂多变的业务创新需求。因此,北向接口能否被应用层不同种类的业务广泛调用,将会直接影响SDN网络的应用前景。

与南向接口不同,北向接口可视为一个软件API,而不是一个协议。北向接口没有被广泛接受的标准,主要是因为北向接口直接为业务服务,而业务需求具有多样化的特征,很难统一。不同的SDN控制器根据不同的应用需求研发了各种异构、独特的API,从而使得北向接口的标准化变得非常复杂。

目前,SDN北向接口分为两类:功能型NBI与目的型NBI。

功能型NBI通常是从网络系统的角度设计,自底向上地考虑NBI能提供怎样的网络能力。功能型NBI是网络技术相关的NBI接口,它是面向具体的网络功能所对应的网络功能模型和网络管理模型。功能型NBI的实例包括:设备和链路发现、分配接口ID、设置设备转发规则、网络状态管理信息等。

目的型NBI从需求的角度,自顶向下地对网络对象与能力进行抽象,体现了使用者的意图,表达了使用者想做什么,而不是如何去做。目的型NBI表示期望控制器能提供的服务,将控制器变成一个网络资源分配和管理的“黑盒子”。

市场上有多种北向接口API,它们都基于RESTful接口规范。需要注意的是:RESTful不是一种具体的接口协议,而是满足表征状态转移(REpresentationState Transfer,REST)架构约束条件和原则的接口设计。

REST规范的约束准则的核心是:

  • 网络中的所有事物都可以被抽象为资源。
  • 每个资源都有唯一的资源标识。
  • 对资源的操作不会改变资源标识。
  • 所有的操作都是无状态的。
  • 客户机与服务器之间的通信必须是统一的。

尽管目前很多SDN控制器都表示遵循RESTful接口规范,但是对外提供的接口并不完全相同。运营商在北向接口标准的选择上采取两种方法,一是允许各厂商接口存在差异,由运营商提供与北向接口的适配;另一种方式是针对关键功能制定统一接口规范,如拓扑管理、隧道管理、VPN管理。当前,实现多厂商接口统一存在一定难度,随着产业链的逐步形成以及各标准组织的推进,才有可能制定出统一的接口规范。