Opendaylight架构设计分析

1.Opendaylight架构设计分析

SDN(Software Defined Network)即软件定义网络,是一种网络设计理念,或者一种推倒重来的设计思想。SDN的理念是将原来封闭在通用网络硬件的控制平面抽取、独立出来并软件化为SDN控制器,这个控制器如同网络的“大脑”控制网络中的所有设备。OpenDaylight是Linux基金会管理的开源SDN控制器,依托强大的社区支持和功能特性,已成为最受瞩目的开源SDN控制器。
OpenDaylight(ODL)高度模块化、可扩展、可升级、支持多协议。北向接口可扩展性强,REST型API用于松耦合应用,OSGI型用于紧耦合应用。引入SAL屏蔽不同协议的差异性。南向支持多种协议插件,如OpenFlow 1.0、 OpenFlow 1.3、OVSDB、NETCONF、LISP、BGP、PCEP和SNMP等。底层支持传统交换机、纯Openflow交换机、混合模式的交换机。ODL控制平台采用了OSGI框架,实现了模块化和可扩展化,为OSGI模块和服务提供了版本和周期管理。ODL靠社区的力量驱动发,支持工业级最广的SDN和NFV使用用例。ODL每6个月推出一个版本,经历的版本为Hydrogen、Helium、Lithium、Beryllium、Boron、Carbon等。

1.1架构概述

OpenDaylight架构分为南向接口层、控制平面层、北向接口层和网络应用层。OpenDaylight架构图如下图所示。
在这里插入图片描述

图1 ODL整体架构图
南向接口层:包含多种协议插件,如OpenFlow 1.0、 OpenFlow 1.3、OVSDB、NETCONF、LISP、BGP、PCEP和SNMP等。南向接口层使用Netty来管理底层的并发IO.
控制平面层:包含MD-SAL、网络功能、网络服务和网络抽象等模块,其中MD-SAL(Model Driven Service Abstraction Layer)是OpenDaylight的核心,所有模块都需要向其注册才可使用。MD-SAL也是整个控制器的管理中心,负责数据存储、请求路由、消息的订阅和发布等.
北向接口层:包含开放API接口(包括REST API和OSGI)和认证模块.
网络应用层:包含各种基于OpenDaylight北向接口层的各种应用集合,如Management GUI/CLI、VTN Coordinator、D4A Protection和OpenStack Neutron等.

1.2南向接口和协议模块设计

1.2.1南向接口

ODL向下层提供的接口称之为南向接口,南向接口支持多种协议。如OpenFlow 1.0、 OpenFlow 1.3,OVSDB、NETCONF、LISP、BGP、PCEP和SNMP等。这些协议模块以插件的方式动态挂在SAL上。
南向接口使用netty来管理底层的并发IO。Netty是提供异步的、事件驱动的网络应用框架,该框架健壮性、可扩展性良好,而且还具有延时低、节省资源等特点。Netty使用简单,功能强大,支持多种主流协议。定制性强,可以通过channelHandler对通信框架进行灵活扩展,适用于支持多种协议的南向接口。

1.2.2协议模块

协议模块主要有OpenFlow、OVSDB、NETCONF、LISP、BGP、PCEP和SNMP等协议模块。其中OF最具代表性,OF是控制器与交换机之间的通信准则,管理网络设备会话连接以及协议交互,一方面监听底层设备的消息,另一方面将上层请求下发到底层设备,此外还支持链路发现服务。
为了用以太网交换机建SDN,提出一个南向接口插件。如下图所示,可通过这个插件中的SNMP和CLI把流配置安装到以太网交换机的转发表、ACL 和VLAN表中,此外需要拓展SAL的API去支持一些设置。
在这里插入图片描述

图2 SNMP协议插件图
OVSDB插件用于实现open VSwitch数据库管理协议,允许南向接口配置虚拟交换机。而LISP插件与LISP服务相互协作,为数据平台设备提供映射服务。
BGP协议用于支持BGP链路状态分布,作为网络层拓扑信息来源。而PCEP协议用于支持路径计算单元协议,为底层网络实例化路径。

1.3控制器平台层设计

1.3.1基本网络服务功能

控制器基本服务功能模块包含拓扑管理、统计管理模块、交换机管理模块、转发管理模块、主机追踪模块、ARPHandler模块。控制器需要知道设备的能力以及可到达性等才能控制设备,这些信息由拓扑管理模块存储、管理。而 ARP handler、 Host Tracker、 Device Manager 和Switch Manager 等其他模块帮助生成拓扑数据库。
拓扑模块管理节点、连接、主机等信息,负责拓扑计算。拓扑模块与OF协议模块、ARPHandler模块、HostTracker模块、SAL模块等紧密联系,通过与这些模块的交互获取节点、连接、主机等信息。协议插件模块中的DiscoveryService向拓扑模块提供交换机节点及链路信息,HostTracker模块提供主机信息。
统计模块用于收集流、端口、表的统计信息,并开放相关API。交换机管理模块用于管理南向接口连接的底层设备。转发管理模块就是负责管理转发规则,以增、删、改、查流规则实现管理。由上层下达事件或是底层上报事件。该模块循环读取事件,并对不同的事件进行针对性处理。
主机追踪模块负责追踪主机信息,记录主机的IP、MAC、Vlan以及连接交换机的节点和端口信息。该模块依赖于ARPhandler模块,当ARPhandler模块发现是单播发送ARP数据包,则通知hosttracker模块学习主机信息。该模块接收到主机上报的ARP消息,先判断主机信息是否已经存在,若不存在则缓存主机信息并下发新增规则消息。若存在,则删除旧信息,再缓存新信息并下发新增规则消息。
ARPHandler模块用于监听IPV4和ARP数据包,从中获取相关主机信息,并根据不同情况作出不同反应。拓扑模块与HostTracker模块都依赖于该模块。Openflow协议模块收到ARP或是IPV4包后交给SAL,借SAL转交给ARPhandler模块。ARPhandler对这两种数据包分别进行处理,若是IPV4则进入handlePuntedIPPacket处理流程,若是ARP数据包则进入handleARPPacket处理分支流程。

1.3.2服务抽象层

SAL模块是控制器模块化设计的核心,支持多种南向协议,屏蔽了协议间差异,为上层模块和应用提供一致性的服务。如图3,SAL根据插件提供的特性来构建服务,服务请求被SAL映射到合适的插件上,采用合适的南向协议跟底层设备进行交互,各个插件之间独立并且跟SAL松耦合。SAL层提供的服务有数据包服务(Data Packet Service)、拓扑服务(Topology Service)、流编程服务(Flow Programming Service)、资源查询服务(ReadService)、连接服务(ConnectionService)、统计服务(Statistics Service)、清单服务(Inventory Service)等。其中数据包服务主要用于转发底层与上层模块间的数据流;拓扑服务是一套传递拓扑信息的服务集合;流编程服务主要为下发流表请求到SDN南向协议插件,为流规则管理模块提供增加,删除,修改流的功能,并提供对流的监听服务;资源查询服务派发硬件信息查询请求给南向协议模块,并通知监听器变化;连接服务传递上层模块的节点连接、断连、本地状态查询请求,以及通知监听器集群视图变化等。
在这里插入图片描述

图3 SAL框架图
SAL将服务提供给向其注册过的北向模块,SAL计算出不依赖底层协议情况下怎样满足北向服务需求,这样可以屏蔽底层协议的差异性,为上层应用提供保护,即使以后openflow与其他协议发展也不会对上层应用造成影响。

1.4北向接口设计

控制平台层向上层提供的接口称之为北向接口,ODL定义了标准化北向接口,意图打造开放统一的控制平台。北向API分为OSGI和REST两种。其中OSGI适用于需要模块化,面向服务,面向组件的应用程序。极大的增强了功能模块的可扩展性,方便功能模块的选择性加载,也便于协同工作。REST是以资源的角度观察整个网络,分布在各处的资源由URI确定,因此地址空间与控制器相同的应用使用OSGI,地址空间与控制器不同的应用使用REST。

1.5网络App和业务流程层设计

ODL是为了推动SDN发展而诞生的,因此ODL存在的最终目的是推动SDN发展,促进SDN产业化。传统网络体系庞大,不堪重负,结构复杂,更新困难,于是针对其所存在的问题提出了SDN,SDN的目的是实现网络的可控性和可编程性。网络APP和业务流层就是控制和编程的平台,这一层包括一些网络应用和事件,可以控制、引导整个网络。借用这一层用户可以根据需求调用下层模块,享受下层提供的服务,可以根据用户需求提供不同等级的服务,大大提高了网络的灵活性。也可以利用控制器部署新规则,掌握整个网络,实现控制与转发的分离。其中,复杂的服务需要与云计算和网络虚拟化相结合。
这一层大体有Management GUI/CLI、VTN Coordinator、D4A Protection和OpenStack Neutron。
D4A Protection是一个监测、缓和DDOS攻击的SDN应用,如下图7所示,该应用通过ODL北桥REST API与ODL控制平台通信。Defense4All主要起到两个作用,控制保护流量的行为,还有就是转移被攻击流量到所选的AMSs。
VTN技术是ODL控制器所用技术的特色之一,该模块使用VTN虚拟化技术,为用户提供REST接口,能与VTN Manager插件相互作用实施用户配置,同时具有多控制器编制能力。
VTN主要负责在控制器上提供对多租户虚拟网络的支持,不同租户使用不同网络配置和应用程序,若是在物理网络中实现则需要针对不同租户分别配置和管理,情况复杂。但是,VTN提供一个逻辑的抽象层,租户在逻辑上进行隔离,物理网络无需太大改动。租户可以任意使用租用的网络而无需了解物理网络拓扑和带宽限制。基于VTN设计的网络会自动被映射到底层物理设备,并配置到支持SDN控制协议的独立的交换机上。这样不仅仅屏蔽了底层网络的复杂性而且可以更好的管理网络资源,减少了网络服务的配置时间和配置错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值