SDN控制平面
SDN控制平面
1. SDN控制器体系架构
SDN体系架构
数据平面、控制平面、应用平面、管理平面
南向接口、北向接口
控制器在SND中的地位与作用
地位:在SDN 架构中,控制器是核心它是连接底层交互设备与上层应用之间的桥梁。
作用
一方面,控制器通过南向接口协议实现对底层网络交换设备的集中管理与状态监测,为数据平面提供转发决策和流量调度。
另一方面,控制器通过北向接口向上层应用开放多个层次的可编程能力,允许用户根据特定的网络应用场景灵活地定制相应的运行与管理策略,并为开发人员提供灵活的开发接口为用户提供方便使用的操作接口。
SDN控制器体系架构
控制器体系结构采用”层次化“架构。
与南向数据平面或底层设备直接关联的基础性功能位于最底层,较为核心的控制决策功能在中间层,与北向应用层业务相关的功能模块位于较上层,而且可根据功能分类进行层的纵向叠加或层内的横向扩展。
协议适配层:主要实现对底层多种协议的适配,包括支持多种南向接口协议。适配层通过将协议适配服务抽象出来,不管控制器和网络设备之间使用的是何种通信协议,均能提供约定的统一服务。另外,该层还提供对东西向协议的支持。
基础网络层:这是该体系模型中必不可少的核心层,用于实现关键的网络控制逻辑,包含了控制器内部的实现逻辑,比如拓扑管理、主机管理、设备管理、链路管理、路径计算等,以及一些底层的网络实现逻辑,比如 BGP、VXLAN的实现等。
内置应用层:用于提供一些常用的基础功能包,如 L2 网络、L3 网络、Overlay 网络、服务功能链等,以方便用户直接调用。
北向接口层:用于提供与应用层交互的北向接口。通过北向接口,用户能够很灵活、方便地给控制器下发指令,或通过控制器获知网络运行状态目前北向接口层能够给外界提供的接口类型主要有 REST API接口和嵌人式API,个别控制器如 OpenDaylight、ONOS 等也提供 RESTCONF 接口。
配置管理层:该层实现包括软件管理、集群管理和用户界面 (user in-terface,UI)管理等功能。如在 OpenDaylight 控制器中,可以在 Karaf 中自由启用/删除模块,实现软件模块管理;部分控制器(如 Floodlight) 也带有一个简单、易用的用户界面,通常是在 Web 界面中调用控制器的北向 API,对控制器进行配置。除此之外,集群管理配置也属于配置管理层的范畴,集群管理是指对多控制下的集群进行管理。
2. SDN控制器的基础功能
SDN控制器的基础功能中,南向网络控制是起核心作用的基础功能,涉及链路发现、拓扑管理、策略指定、表项下发等。
其中链路发现和拓扑管理是控制器利用南向接口的上行通道对底层交换设备上报信息进行统一监控和统计;而策略制定和表项下发则是控制器利用南向接口的下行通道对网络设备进行统一控制。
链路发现:链路发现是指控制器利用南向接口的上行通道,收集底层交换设备上报的链路状态相关信息,并经过统计和分析获得对底层链路的发现及其状态信息.链路发现是获得 SDN 全网信息的关键,是控制器实现网络地址学习、VLAN划分、路由转发、流量工程等网络功能的基础。传统网络实现类似的网络功能也离不开链路发现,但却由各网元自主分布式完成,而在 SDN 网络中链路发现工作由控制器统一完成。在 SDN 链路发现的技术实现上,主要采用链路层发现协议LLDP。LLDP 提供了一种标准的链路发现方式,可以将 SDN 控制器的主要能力、管理地址、设备标识接口标识等信息组织成不同的 TLV,并封装在链路层发现协议数据单元(LLDPDU),发布给直连的 OpenFlow 邻居交换机,邻居收到这些信息后,将其以标准 MIB (管理信息库) 的形式保存起来,以供网络管理系统查询、判断链路的通信状况。
拓扑管理:拓扑管理为了随时监控和采集网络中 SDN 交换机的信息,及时反馈网络的设备工作状态和链路链接状态,以形成对网络拓扑及其变化的准确认识。为了这一目标,控制器需要定时向与之相连的 SDN交换机发送带 LLDP 数据包的Packet-out消息,并根据反馈的 Packet-in 消息获取交换机信息,实现在监测交换机工作状态的同时完成对网络拓扑视图的更新。
策略制定:南向网络控制中的核心功能之一是策略制定,控制器需要针对不同网络层次的传输需求,制定相应的转发策略并生成对应的流表项。SDN 中策略制定与传统网络相比有很大的优势。在传统网络中,在各台设备中执行相关算法,通常只能根据设备自身所掌握的、有限的局部网络链接情况进行数据处理决策;而 SDN 具有集中化管控的优势,控制器能够拥有全局的网络视图,更容易获得优化的算法执行结果。
表项下发:转发策略需要通过下发流表项来告知底层交换机,流表下发有两种方式:主动下发与被动下发。
主动下发:主动下发是指,控制器在交换机还没收到数据包前,预先给交换机下发流表,告诉交换机如何处理到来的数据包。这样做的好处是可以避免交换机启动时所产生的数据流对控制器的冲击,并且可以消除数据传中流表项设置延迟的问题。
被动下发:被动下发是指,控制器不主动给交换机下发流表,等到交换机有数据流到来,才向控制器发送问询信息,等待下发流表,控制器在收到问询信息后,再下发相应的流表,这种方式在复杂网络中会导致流表项设置延迟的问题。
除了南向网络控制技术,控制器的另一个关键技术是通过北向接口,网络业务开发者可以通过软件编程的方式调用各种网络资源,同时网络资源管理系统可通过控制器的北向接口获得网络资源的工作状态,并对网络资源进行调度,实现资源统一交付。
3. SDN控制器的扩展
SDN控制器的缺点
- 安全性:控制器负责整个 SDN 网络的集中化控制,对于把握全网资源视图、改善网络资源交付具有极其重要的作用。但控制能力的集中化,也意味着控制器的可靠性与安全性成为全网的瓶颈,这也是集中计算模式相比分布式计算的主要弱点之一。而一旦控制器在可靠性与安全性上得不到保障,随之而来的是全网服务能力的降级甚至是瘫痪。
- 性能:单一的控制器也难以应对跨多个地域的 SDN网络。对跨多个地域的SND 网络,一方面,由于单一的控制器所能支持的网络规模有限,如果规模过大,可能影响网络的可靠性;另一方面,由于控制器与交换机可能不在同一地域,而产生较长的网络传输延迟,影响网络响应性能。
改进方法
鉴于控制器对整个 SDN 网络的核心作用,有必要考虑采用多个 SDN 控制器组成的分布式集群。以有效避免单一控制器节点所存在的上述性能问题,提高可靠性与可扩展性。虽然关于多个控制器之间沟通和联系的东西向接口目前还没有公认标准,但一些非常成熟的集群技术可应用到 SDN 网络中来解决上述难题。例如,以控制器软件化为依托的服务器集群方案。
控制器的软件化使服务器可以作为控制器软件的运行载体,从而控制器集群可以基于服务器集群来搭建和实现。鉴于控制器对于 SDN 网络的重要核心作用,控制器集群的设计具有一些特殊性,例如,要支持向正在运行的集群中增加新的控制器,以改善扩展性,同时要保存失效控制器对应的交换机状态,以保证可靠性。考虑控制器掌控着全网的 SDN 交换设备,通过分布式协作方式确保网络状态的一致性尤其重要。
服务器集部署可利用现有的集群技术来实现。对于一个分布式的控制集群而言,最关键的是控制器之间的协作,需要专门的集群通信机制用于控制器之间的信息传递,可以选择目前比较成熟的集群通信工具 JGroups通信库。
为了确保控制器集群对SDN 的有效控制,有两个方面的设计与实现非常重要。一是主控制器的选举。集群中的控制器有主控制器或副控制器两种不同角色,主控制器主要负责生成和维护全网范围内的控制器和交换机状态信息,副控制器作为主控制器的备份。一旦主控制器失效,就需要从集群的副控制器中选举一个控制器作为新的主控制器。二是控制器集群对交换机的透明化。即在SDN 的运行过程中,交换机无须关心或知晓其当前所对话的是控制器集群中的哪个控制器发来的命令,也就是说,能够对交换机屏蔽控制器集群的内部实现对交换机保持或呈现出与单一控制器相同的操作方式,从而保证控制器在逻辑上的集中。
集群化的控制器架构,不仅能够避免单一控制器造成的 SDN 单点失效问题同时能够提供更好的可扩展性,以应对大规模复杂网络系统的需要。
4. SDN控制器的评估要素
在控制器产品选择中,主要比较以下几个因素,网络功能、响应时间、可扩展性、可靠性、可编程性、安全性。
-
网络功能
- 能否有效根据上层应用与业务需求实现对基础设施层的灵活管控,包括设备与拓扑管理能力,是否拥有全网拓扑视角下的管理弹性
- 路由计算能力,是否有能力发现源端到目的端的多条转发路径或提供分段路由
- 对南向接口协议的支持,是否具有对不同底层基础设施或设备的兼容能力
- 对 QoS 的支持,能否为上层多元应用与业务提供其所需要的服务质量
- 对多租户隔离的保障,能否在全网统一视图下提供不同应用与业务实现逻辑的有效隔离
-
响应时间
- 吞吐量
- 时延
-
可扩展性
- 是否能够提供对数量大、类型多元的应用与业务的有效支持
- 设备规模变大时,能否有效减少或控制广播对网络带宽和流表规模的影响
-
可靠性
- 控制器能否为所管控的网络提供足够的容错性或冗余备份
-
可编程性
- 内部编程和控制器外部编程
-
安全性
- 指控制器为网络所提供的安全功能,如流量监测、流量管理与控制、安全分析、安全告警与预警等
- 控制器自身的安全防范