基于Openflow协议的三层架构

基于Openflow协议的三层架构

Scroll Down

一、SDN主流架构

SDN主流架构主要是由4个标准化组织所提出的:ONF的基于openflow协议的三层架构、IETF定义的架构、NICIRA的Overlay架构、ETSI的NFV架构。每个架构都有自己对SDN技术落地的独特理解和应用场景:

基于openflow协议的三层架构后续简称为openflow架构

  • openflow架构:实现转控分离,对数据平面进行了标准化。由于实现了逻辑集中控制,该架构在流量调度方面具有很大优势
  • IETF架构:开放现有网络设备的能力向应用层提供标准开放的API,该架构充分利用现有的网络设备和路由协议,能与现有网络进行兼容,因此能够更快落地
  • overlay架构:基于网络叠加(即Overlay)技术的架构,这种架构就是在传统网络上抽象出一个虚拟网络,实现了与物理网络的解耦,对物理设备的要求降至最低,因此部署非常灵活
  • NFV架构:网络功能虚拟化技术(即NFV)主要的应用场景就是运营商网络,虽然NFV和SDN是互补的技术,但是本质上有着很多的不同,所以严格意义上说NFV不属于SDN架构

二、SDN核心思想

1、解耦(decoupling)

将控制平面和数据平面分离,主要是解决传统网络中控制平面和数据平面在物理上紧耦合导致的问题。解耦后控制平面负责上层的控制决策,数据平面负责转发数据,两个平面之间不再相互依赖,双方只要遵循一定的开放接口,即可进行通信。

控制平面和数据平面紧耦合导致的问题:设备的转发行为基于控制协议生成的转发表(比如二层交换机基于MAC地址表进行数据转发)进行转发数据,而各种转发表基于不同的策略生成的;SDN将控制平面和数据平面分离后,SDN将控制平面集中上收到controller,网络设备只保留数据平面(实体为转发表项),这样控制平面(软件实现)更加灵活,满足多元化需求,而数据平面(即硬件设备)更加专注转发,简单通用。

控制平面和数据平面解耦所导致的问题

  • 问题一:随着网络规模的扩大,控制平面的服务能力可能成为网络性能的瓶颈。解决方法之一就是在控制平面上部署分布式控制器。但是分布式控制器会产生另外的问题就是多控制器如何交互路由信息,以保持分布式节点状态的一致性。
  • 问题二:就是控制平面的响应延迟,导致的数据平面可用性问题。

总的来说,控制平面和数据平面解耦实现了网络的逻辑集中控制,从技术路线来说有利于两个平面的体系结构和技术演进得到更好的发展和创新。

2、抽象(abstraction)

SDN借助了系统的抽象技术,从用户视角来看可以把网络看成一个和计算机类似的分层系统,底层硬件是通用的转发设备,中间层是由软件实现的控制器/网络操作系统,上层是网络应用程序,并且在各层次上进行了进一步的抽象,主要实现了三种类型的抽象:转发抽象分布状态抽象配置抽象

  • 转发抽象:将数据平面抽象成通用的转发模型,比如openflow的交换机模型,转发行为与硬件无关,同时各种转发表项比如MAC地址表、IP表、MPLS标签表、ACL访问控制表等抽象成统一的流表
  • 分布状态抽象:控制器将分布设备状态抽象成全局的网络视图,从而实现逻辑的集中控制。抽象功能具体可通过网络操作系统(即NOS)来实现,主要有两个功能:实现下发控制指令、通过收集设备和链路状态,为上层应用提供全局网络视图。
  • 配置抽象:是指应用层对于网络行为的表达通过编程语言实现,用户或者应用程序基于简化抽象模型,将抽象配置映射为物理配置。在SDN之前,对网络行为的表达主要是通过CLI/GUI,或者通过网管协议接口编写简单的脚本进行的。在SDN之后,对网络行为的表达主要是利用控制器提供的API使用python、java来实现。而且这种编程是基于控制层提供的全局网络视图,而不是基于单个设备的编程。

抽象的思想不仅体现在openflow架构中,也出现在了overlay架构中。在overlay架构中,overlay网络在underlay网络的基础上进行了抽象,应用程序不需要关注底层网络的实现细节。

3、可编程(programmable)

通过解耦后,提供了开放的API,这也是SDN区别于传统网络的重要思想之一,传统网络的管理接口主要是CLI和网管协议等,也可以通过shell/Python脚本实现简单的运维和管理功能,但是这种方式是属于比较初级的编程,而网管人员需要用更加高级的编程方式,高级的编程方式是基于整个网络的,而不是基于单个设备的,因而需要对网络功能进行抽象来实现网络的可编程。

SDN出现前,学术界对关于网络可编程做了大量的研究,最具代表性的就是主动网络4D架构

  • 主动网络:开放网络节点的API,允许网络节点在用户数据上根据用户需求执行相应的计算
  • 4D架构:将网络系统划分成四个平面,数据平面、发现平面、扩展平面、决策平面。

SDN的API主要体现在三个方面:北向接口(NBI)、南向接口(CDPI)、东西向接口。NBI的实现方式主要有REST APIJAVA API等。CDPI的实现方式主要有NETCONFopenflowof-configOVSDB等。东西向接口主要负责多controller通信或者controller与外部组件之间的通信,尚未形成统一标准。

除了三大API,数据平面也支持可编程。目前数据平面的可编程技术包括intel主导的高性能网络数据处理框架-DPDK,斯坦福大学主导的数据平面可编程语言-P4等。

三、基于Openflow协议的三层架构

ONF在SDN技术白皮书中给出了SDN的基本框架:转发层控制层应用层。是一种新型的网络架构,实现了网络设备控制与转发的分离。网络虚拟化的一种实现方式,其核心技术就是openflow,控制层和转发层通过openflow去进行通信,控制和转发分离后,可以实现逻辑上的集中控制,因此能实现网络流量的灵活控制,使网络作为管道变得更加智能。

ONF定义的SDN体系架构主要包括三个平面和两大接口:数据平面、控制平面、应用平面。数据平面和控制平面的接口叫控制数据平面接口(即CDPI,也叫南向接口);控制平面和应用平面的接口叫北向接口(即NBI)。

sdn1.png

1、应用平面

应用平面分为SDN应用逻辑、北向接口驱动(NBI driver)。应用平面通过北向接口与SDN控制器进行交互。在应用逻辑的实现上,可以基于SDN理念改造传统应用的交付能力(比如负载均衡、访问控制、应用加速等),具体比如可以通过软件实现的应用交付能力降低系统的开支和成本,实现网元的虚拟化和集中化控制,支持网络系统的快速部署,在故障出现时能够快速发现并解决问题,提供更高的智能,自动化运作,实现应用可感知的网络,这些都是SDN应用逻辑的具体实现。

2、控制平面

控制平面分为北向接口代理(Northbound interfaces,NBI)、SDN控制逻辑(Control Logic)、控制数据平面接口驱动(CDPI driver)。控制平面的主要任务为将SDN应用层请求转换到SDN datapath、收集网络的实时状态为SDN应用提供底层网络的抽象模型(状态或事件)

控制面的关键技术就是控制器/网络操作系统(即NOS)/网络控制器。SDN控制器是整个网络的大脑,网络的智能或者核心实现都在SDN控制器中,由SDN控制器对转发面进行转发策略的调度和管理。目前开源的SDN控制器主要有:NOX、POX、Floodlight、RYU、OpenDaylight、ONOS等

3、数据平面

数据平面由若干网元(即Network Element)构成,每个网元包含一个或多个数据路径(即SDN datapath),SDN datapath是逻辑上的网络设备,负责转发和处理数据。一个SDN datapath包含控制数据平面接口代理(control data plane interface,CDPI)、转发引擎表(Forwarding Engine)和处理功能(Processing Function)。

数据平面关键技术就是对数据面进行抽象建模。ONF标准化了openflow协议,在该协议中数据面被抽象成一个由多级流表驱动的转发模型。

4、北向接口

北向接口是应用平面和控制平面之间的接口(即NBI),北向接口功能主要是负责向应用层提供抽象的网络视图使得应用能直接控制网络的行为。北向接口是开放的,与厂商无关的接口。

NBI的关键技术就是接口的设计。NBI设计目的是控制器将网络能力封装后开放接口,供上层业务调用。目前REST API成为SDN北向接口的主流设计,REST是一种系统架构的设计风格,REST API是符合REST设计规范的API,提供REST API作为北向接口的控制器非常多,比如FloodlightRYU等。不同的控制器具有不同的北向API集合,以Floodlight的北向API集合为例,包含了交换机状态收集、静态流表推送、防火墙策略等多种类型的接口。

5、南向接口

南向接口是控制平面和数据平面之间的接口(即CDPI),南向接口功能主要是转发行为控制设备性能查询统计报告事件通知等。标准化的南向接口协议不依赖于底层具体厂商的交换设备。

CDPI的关键技术就是南向接口协议。该协议允许控制器控制交换机的配置以及相关转发行为。ONF定义的南向接口协议是openflow协议,它将转发面抽象成一个或多个流表组成的转发模型。controller通过openflow协议下发流表(flow table)到具体交换机,从而定义和控制交换机的具体行为

交换机需要支持openflow协议,从而能够和controller进行通信