JAVA的sdn控制器,软件定义网络基础---SDN控制平面
一: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由内核和组件组成
1、内核( core ):openflow和of_01 ; --内核负责组件的注册2、组件( 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开发)
JAVA的sdn控制器,软件定义网络基础---SDN控制平面相关推荐
- sdn体系的三个平面_软件定义网络基础---SDN控制平面
一:SDN控制平面 一个或多个SDN控制器组成,是网络的大脑. 对底层网络交换设备进行集中管理,状态监测.转发决策以及处理和调 度数据平面的流量: 通过北向接口向上层应用开放多个层次的可编程能 ...
- 软件定义网络基础(SDN①)
1.SDN的产生: SDN(软件定义网络)的产生源于传统网络无法满足现代网络环境对网络灵活性.可扩展性和安全性等方面的要求.传统网络架构中,网络设备(如交换机和路由器)负责控制和转发数据流量,网络管理 ...
- 软件定义网络基础(SDN④)
一:SDN控制平面 一个或多个SDN控制器组成,是网络的大脑. 对底层网络交换设备进行集中管理,状态监测.转发决策以及处理和调 度数据平面的流量:通过北向接口向上层应用开放多个层次的可编程能力. 1. ...
- SDN(软件定义网络)基本概念
SDN(软件定义网络)基本概念 定义 SDN(Software Defined Network)是"软件定义网络"的缩写,它是一种网络架构和技术,旨在将网络控制器与数据转发分离开来 ...
- 《软件定义网络:SDN与OpenFlow解析》
<软件定义网络:SDN与OpenFlow解析> 基本信息 原书名:SDN: Software Defined Networks 原出版社: O'Reilly Media 作者: (美)Th ...
- 软件定义网络(SDN)
SDN基本概述 参考文章:SDN基本概述.解读SDN的东西.南北向接口 传统网络数据控制与转发 传统网络是分布式控制的架构,每台设备都包含独立的控制平面,数据平面. 传统网络是分布式控制的架构: 这里 ...
- 软件定义网络(SDN)发展历程及应用分析
软件定义网络的发展历史 2008年,Nick McKeown 教授等人提出了OpenFlow 的概念,并于当年在ACM SIGCOMM 发表了题为<OpenFlow: Enabling Inno ...
- SDN:软件定义网络
近期高级网络课的小组任务是在老师给定的范围内自选方向主题研究并做展示报告.我们组选了sdn.原以为这东西会是工业界无人问津的概念化产品,Google了一下却发现事实上sdn挺火的,因为它可能带来的可扩 ...
- 【研究方向是SDN该怎么做?】软件定义网络(SDN)的安全挑战和机遇
软件定义网络(SDN)的安全挑战和机遇 目录 软件定义网络(SDN)的安全挑战和机遇 写在前面的话 SDN是什么? 有必要研究SDN的安全问题吗? SDN的优点与缺点 SDN中的集中化 对于攻击者和防 ...
最新文章
- jenkins创建job不能用中文问题
- Python3--baby网的数据爬取
- java安全编码指南之:Number操作
- 在C语言中malloc怎么声明,问下关于malloc的声明问题
- ai怎么取消颗粒效果_AI教程3个超实用设计技巧教程
- 为什么Spark能成为最火的大数据计算引擎?它是怎样工作的?
- Blend4精选案例图解教程(二):找张图片玩特效
- install mysql with source code
- QQ连连看单机版辅助制作全流程
- IMDB.COM排名算法(贝叶斯公式)和Reddit评论排行算法
- 厦门大学和福州大学计算机专业哪个好,福建最好的5所大学,除了厦门大学,你还知道哪所大学?...
- [股票] 现阶段思考感悟
- arduino 328P的BootLoader
- 你的香腮边轻轻滑落的, 是你的泪,还是我的泪。
- 新兴技术abcdefg_智能技术如何掩盖新兴的公司控制时代
- Spring学习-初识Spring
- [转]ModSecurity for Apache 1.8.7 用户手册
- 数据库原理实验报告(一)
- 10款Github上最火爆的国产开源项目【2014】
- ①、学习spring cloud之HTML 简介
热门文章
- 计算机入门 零基础,电脑新手入门指南——零基础一分钟入门电脑硬件
- android 开机动画实现,Android App启动画面实现
- 基于STM32的ESP8266天气时钟(2)--------MCU获取天气数据
- matlab求解不等式方程组解集,matlab求不等式方程组的可行解
- 基于飞桨 DeepLabV3+实现人体肾组织图像中肾小球识别
- 细谈数据库表锁和行锁
- Linux驱动子系统之I2C(一)
- js获取字符串字符数和字节数,注意:区分字符串字符数和字节数(编程环境UTF-8的情形)
- KLOOK客路旅行基于Apache Hudi的数据湖实践
- 中国A类IP地址小调查以及IPv6展望