一:SDN控制平面

一个或多个SDN控制器组成,是网络的大脑。

 对底层网络交换设备进行集中管理,状态监测、转发决策以及处理和调
度数据平面的流量;
 通过北向接口向上层应用开放多个层次的可编程能力。

(一)典型的SDN控制器体系架构

SDN控制平面分为6层
南向接口层主要对各种南向接口协议的支持,如Open Flow,Netconf,OVSDB等,控制器通过接口层的通道实现对底层网络的管理
抽象逻辑层主要是将服务抽象出来,实现各种通信协议的适配,为各模块和应用提供一致的服务
基础网络层在任何控制器中都是必不可少的,这里的模块包括了控制器内部的实现逻辑,比如:拓扑管理、链路计算等,也包括一些底层的网络实现逻辑,比如BGP Vxlan的实现等
内置应用层提供了基础的功能包,如L2、L3网络,Overlay APP,服务链APP等
北向接口层中,控制器实现了Restful API的接口或者嵌入式的API提供给上层应用调用
配置管理层提供了控制器服务管理,集群管理和图形化界面,如ODL控制器提供了模块的启用、删除等功能,Floodlight等控制器提供了一个简单易用的UI界面,可以在web界面中调用控制器的北向API对控制器进行配置

二:控制器关键技术

主要是包括南向网络控制和北向业务支撑

(一)南向网络技术

通过南向接口协议进行链路发现、拓扑管理、策略制定、表项下发等:

-链路发现和拓扑管理:利用上行通道对底层交换设备上报信息进行统一监控和统计;
–策略制定和表项下发:利用下行通道对网络设备实施统一控制。

链路发现

是获得SDN全网信息的关键,是实现网络地址学习、VLAN、路由转发等网络功能的基础
传统网络中:由各个网元自主进行
SDN网络:网络链路的发现工作由控制器统一完成
对于Open Flow交换机直连链路的发现,SDN控制器通过链路层发现协议LLDP实现

首先控制器通过packet-out消息(红)向所有的相连的交换机发送LLDP数据包,该消息命令交换机将LLDP数据包发送给所有端口,
当交换机接收到packet-out消息,他就会把LLDP数据包,通过其所有的端口发送给与之相连的设备,
由于邻接交换机是一台Open Flow交换机,在该交换机中没有专门的流表项,用于处理LLDP数据包,
所以他将通过一个packet-in消息(蓝)将数据包发送给控制器,
控制器在接收到packet-in消息后会对数据包进行分析,并创建两台交换机之间的链接记录。
网络中的其他交换机也都采用同样的方式向控制器发送packet-in消息,因此控制器能够创建完整的网络拓扑视图
对于OF交换机非直连链路的发现,即两台open flow交换机通过其他多台非open flow交换机连接。通过广播实现
控制器在发送packet-out消息给open flow交换机的同时,会要求交换机发出广播包,通过广播的机制实现链路的发现

拓扑管理

是为了实时监控和采集SDN交换机的信息,反馈工作状态和链路连接状态:
–定 时 发 送 带 LLDP 数 据 包 的 Packet_out 消 息,根据Packet_in消息获知交换机信息,监测交换机工作状态,完成网络拓扑视图更新;
–当网络规模较大时,导致较慢的收敛过程,影响实时反馈;

策略制定(南向网络控制中的核心技术之一)

流表生成算法是影响控制器智能化水平的关键因素
控制器针对不同网络层次的传输需求,制定相应的转发策略并生成对应的流表项

表项下发(策略计算结果需要通过表项下发来实现)

通过流表下发机制控制交换机的数据包转发
–主动(proactive)下发:数据包到达交换机之前进行流表设置--是控制器在交换机还没有收到数据包前,先给交换机下发流表,告诉交换机如何处理第一个数据包

主动下发可以避免交换机启动时,数据流对交换机的冲击,并且可以消除数据传输过程中,流表项设置延迟的问题
–被动(reactive)下发:交换机接收到一个数据包并且没有发现匹配的流表项,将其送给控制器处理。

在复杂网络中会产生流表项设置延迟的问题

(二)北向业务支撑

通过北向接口为上层业务应用以及资源管理系统提供灵活的网络资源抽象;
北向接口定义是SDN领域关注和争论的焦点---北向接口直接为业务应用服务,其设计密切联系业务应用需求,所以具有多样化特征,很难统一;
REST API是用户比较容易接受的方式;

三:SDN开源控制器

(一)POX( https://github.com/noxrepo/ )

-采用Python语言开发的基于OpenFlow的控制器;
-是NOX的兄弟版本,实现了简单的控制平面的功能。
-简单、易上手

组成:POX由内核和组件组成

、内核( core ):openflow和of_01 ; --内核负责组件的注册
、组件( component )  --组件之间通过内核进行交互

控制器可以通过内核中open flow模块控制所有交换机,
of_01模块主要是运行一个线程,该线程不断与交换机进行TCP连接,
当某交换机送来一个协议消息,of_01会触发该消息所对应的事件,并由相关的组件处理函数进行事件的处理

代码结构简单,无需安装即可使用,不需要理解所有代码

缺点:由于代码简单--功能不够全面

(二)Ryu( http://osrg.github.io/ryu/ )

NTT主导开发,RYU是一个基于组件的SDN框架

控制层主要包括协议解析,事件系统,基本网络报文库等
应用层包含内建应用,和基于控制层提供的API编写的网络应用
Ryu通过南向接口与数据平面的设备进行通信,在南向协议方面支持1.0到1.5版本open flow协议,还支持如OF-Config OVSDB,VRRP和NETCONF等其他南向协议
通过北向接口完成应用层和控制层的通信,Ryu提供REST API和RPC等接口,允许外界的进程和Ryu进行通信,用户可以在Open Stack或者其他程序上与Ryu进行通信,从而控制SDN网络

Ryu包含大量的组件和库函数供SDN的应用开发使用

库函数可以在组件中直接调用,而组件之间的关系是相互独立的

(三)Floodlight( http://www.projectfloodlight.org/ )(JAVA开发)

软件定义网络基础---SDN控制平面的更多相关文章

  1. 软件定义网络基础---SDN数据平面

    主要介绍SDN架构和转发模型 一:传统网络设备 (一)传统设备控制平面和数据平面 (二)数据平面的任务 数据平面对数据包的处理,主要通过查询由控制平面所生成的转发信息表来完成 (三)传统网络数据平面数 ...

  2. 软件定义网络基础---SDN的核心思想

    一:SDN包含的核心思想:解耦,抽象,可编程 二:解耦 (一)SDN网络解耦思想 解耦是指将控制平面和数据平面进行分离,主要为了解决传统网络中控制平面和数据平面在物理上紧耦合导致的问题 控制平面和数据 ...

  3. 软件定义网络基础---SDN的主流构架

    一:基于不同标准的主流构架 二: ONF定义的SDN基本构架 (一) 四个平面.两大接口 三:四个平面 (一)数据平面 数据平面是由若干网元(Netword Element)构成,每个网元包括一个或多 ...

  4. 软件定义网络基础---SDN的发展

    一:发展初期阶段--提出 架构.设计思想和实现技术的提出 二:发展中期阶段--企业加入,推动发展 三:SDN的发展趋势 (一)SD-DC SDN被大规模应用数据中心的服务器和设备部署运维,产生了软件定 ...

  5. 软件定义网络基础---SDN的产生

  6. 《软件定义网络:SDN与OpenFlow解析》

    <软件定义网络:SDN与OpenFlow解析> 基本信息 原书名:SDN: Software Defined Networks 原出版社: O'Reilly Media 作者: (美)Th ...

  7. 软件定义网络基础---NETCONF协议

    netconf协议最早被作为网管协议被提出来的,与SNMP网管协议相比较:SNMP的优势在于网络设备的监测,在大规模网管应用中有很大不足,正是针对这种不足之处,提出了NETCONF协议 一:NETCO ...

  8. 软件定义网络基础---REST API的设计规范

    一:REST API的设计 REST API是基于HTTP协议进行设计的,由HTTP动词+URI组成 (一)HTTP动词 (二)资源的原型 文档(Document): 文档是资源的单一表现形式: 集合 ...

  9. 软件定义网络基础---OpenFlow概述

    一:OpenFlow概述 二:交换机模型架构 (一)OpenFlow构架三个组成成分 三:OpenFlow 1.0版本 自OpenFlow1.0发布以来,目前已经有多个版本的OF规范版本被发布 四:O ...

随机推荐

  1. 神经网络(11)--具体实现:unrolling parameters

    我们需要将parameters从矩阵unrolling到向量,这样我们就可以使用adanced optimization routines. unroll into vectors costFunct ...

  2. DELL 管理软件安装

    dell不进入bios修改cpu为高性能的方法:(在下次重启后生效) 首先安装omsa:安装方法: http://linux.dell.com/repo/hardware/Linux_Reposito ...

  3. Longest Continuous Increasing Subsequence II

    Description Given an integer matrix. Find the longest increasing continuous subsequence in this matr ...

  4. PostgreSQL 锁机制浅析

    锁机制在 PostgreSQL 里非常重要 (对于其他现代的 RDBMS 也是如此).对于数据库应用程序开发者(特别是那些涉及到高并发代码的程序员),需要对锁非常熟悉.对于某些问题,锁需要被重点关注与 ...

  5. ML,DL核心数学及算法知识点总结

    ML,DL核心数学及算法知识点总结:https://mp.weixin.qq.com/s/bskyMQ2i1VMNiYKIvw_d7g

  6. Windows异常

    一.什么是异常 异常指的是在程序运行过程中发生的异常事件,通常是由外部问题(如硬件错误.输入错误)所导致的.简单来说异常就是对于非预期状况的处理,当我们在运行某个程序时出现了异常状况,就会进入异常处理 ...

  7. POJ 2778 DNA Sequence (矩阵快速幂 + AC自动鸡)

    题目:传送门 题意: 给你m个病毒串,只由(A.G.T.C) 组成, 问你生成一个长度为 n 的 只由 A.C.T.G 构成的,不包含病毒串的序列的方案数. 解: 对 m 个病毒串,建 AC 自动机, ...

  8. shell脚本之 operater.sh 算术运算符;比较运算符;布尔运算符;逻辑与或非运算符;字符串运算符的使用

    1.注意 格式不能变 尤其是变量和变量表达式之间的空格:[ 空格] .[ $a == $b ] 中间的空格严格不能变:否则报错 关系运算符 关系运算符只支持数字,不支持字符串,除非字符串的值是数字. ...

  9. TPS与QPS,以及GMV

    TPS是指每秒处理事务的个数,处理的载体可以是单台服务器,也可以是一个服务器集群. 例如:下单接口,一秒内,下单完成次数为1000,则下单接口总 tps = 1000,共有10台服务器提供下单服务,单 ...

  10. (2)Angular的开发

    什么是 ReactNative应用, 小程序与RN的关系 native端优化 Js端优化 ReactNative是? 用JavaScript来写App,性能好 异步编程 请点赞!因为你的鼓励是我写作的 ...