前言

最近纠结于控制器如何发现拓扑,于是就翻起了OpenFlow 1.3进行查看,以及一些相关协议

OF 1.3 安全通道,即交互消息

OpenFlow Switch Specification 1.3.0

1、消息类型

  • controller-to-switch

    消息由控制器初始化,用来直接管理或监视交换机状态

  • asynchronous

    消息由交换机初始化,用来更新控制器的网络事件以及记录交换机状态

  • symmetric

    消息可以被控制器或交换机初始化

2、通信基础机制

  • 建立TCP连接

    交换机主动与控制器3次握手建立TCP连接

  • 互发Hello消息

    沟通彼此之间的OpenFlow版本号

  • 配置交互消息

    交换机把所有的消息发送给控制器,控制器把回复消息并配置交换机

  • Packet-in,Packet-out

    交换机不知道怎么做,向控制器发出Packet-in,控制器回复Packet-out下发流表

抓包实验[0a63c32b4b06de923e7886ec8d3085b8]

拓扑发现

提高SDN控制器的拓扑发现性能

LLDP(Link Layer Discovery Protocol)链路发现协议

1、背景

随着网络技术的发展,接入网络的设备的种类越来越多,配置越来越复杂,来自不同设备厂商的设备也往往会增加自己特有的功能,这就导致在一个网络中往往会有很多具有不同特性的、来自不同厂商的设备,为了方便对这样的网络进行管理,就需要使得不同厂商的设备能够在网络中相互发现并交互各自的系统及配置信息。 

LLDP就为此而生,LLDP协议使得接入网络的一台设备可以将其主要的能力,管理地址,设备标识,接口标识等信息发送给接入同一个局域网络的其它设备。

2、LLDP报文

其中灰色的就为LLDP的字段

  • chassis ID TLV

    交换机标识符,全网唯一

  • Port ID TLV

    端口号

  • Time to live TLV

    TTL,只有一跳

  • Opt. TLVs

    可选的标识符

  • End of LLDPDU TLV

    结束标识

3、运行机制

触发条件

  • 定时
  • 维护拓扑的MIB信息库发生改变
  • 新的设备接入

只要LLDP数据包被邻居节点解析之后,就可以知道了这条链路的源目的交换机以及源目的端口。

4、SDN控制器的拓扑发现

使用协议:OFDP(OpenFow Discovery Protocol)利用的还是LLDP

以上图为例,以单台S1为例子

  1. 控制器构造Packet-Out消息,并以S1交换机的端口个数为例子,将LLDP的chassis ID 以及 Port ID 置为交换机dpid 以及 端口号;
  2. 控制器向S1发送流表,使把从控制器接收到的LLDP报文从对应的端口转发出去;
  3. 控制器向S2发送流表,使把非控制器接受到的LLDP报文发送给控制器;
  4. 控制器解析该LLDP报文,则可知道该条链路的源交换机,接口,目的交换机和目的接口。

Next step

解剖RYU

OpenFlow 1.3 控制器与交换机的交互,以及拓扑发现的更多相关文章

  1. openflow控制器和交换机之间的消息

    openflow控制器和交换机之间的消息 消息格式 openflow消息由64bit,8个字节组成 Openflow协议数据包由Openflow Header和Openflow Message两部分组 ...

  2. 提高SDN控制器拓扑发现性能

    原文由我发表在sdnlab.com.原文链接:http://www.sdnlab.com/15425.html SDN网络的一大特点就是资源由控制器集中管理,控制器管理网络,最基本的当然需要知道网络的 ...

  3. OpenFlow协议中如何提高交换机流表的匹配成功率

    写在前面 这段时间一直在研究如何提高流表空间的利用率.一直没能想到好的idea.有一篇文献中比较了现有研究中提到的手段,在这里记录一下都有哪些类型的手段以及这些手段存在的不足.这些手段不仅局限于如何提 ...

  4. SDN学习之OpenFlow协议分析

    学习SDN相关的学习也已经有快半年了,期间从一无所知到懵懵懂懂,再到现在的有所熟悉,经历了许多,也走了不少弯路,其中,最为忌讳的便是,我在学习过程中,尚未搞明白OpenFlow协议的情况下,便开始对S ...

  5. OpenFlow协议1.0及1.3版本分析

    OpenFlow是SDN控制器和交换之间交流的协议,在SDN领域有着十分重要的地位. OpenFlow协议发展到现在已经经过了1.0.1.3.1.4等版本.其中1.0和1.3版本使用的是最为广泛的. ...

  6. openflow 和 sdn (软件定义网络) 原理和教程

    OpenFlow概述 OpenFlow简介 通俗的讲,OpenFlow是使用类似于API进程配置网络交换机的协议.OpenFlow的思路很简单,网络设备维护一个FlowTable并且只按照FlowTa ...

  7. SDN原理 OpenFlow协议 -4

    通道 Channel 在前面的OpenFlow的内容中,我们提到了在交换层所采用的流表是控制层的Controller下发的,那么Controller是如何下发流表的呢?中间经过了哪些的流程和步骤?控制 ...

  8. OpenFlow技术白皮书-V1.0

    1.  概述 OpenFlow是由斯坦福大学的Nick McKeown教授在2008年4月ACM Communications Review上发表的一篇论文OpenFlow: enabling inn ...

  9. OpenFlow和SDN的历史和原理介绍

    OpenFlow相关的历史.新闻:http://blog.csdn.net/jincm13/article/details/7825754起源与发展[https://36kr.com/p/503598 ...

随机推荐

  1. Odoo作为App后端时如何调试App

    转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9307340.html  一:Odoo可以作为app后台+后台管理系统使用 Odoo作为一个可供二次开发的框架, ...

  2. Net dll组件版本兼容问题

    dll组件版本兼容问题,是生产开发中经常遇到的问题,常见组件兼容问题如:Newtonsoft.Json,log4net等 为了节约大家时间,想直接看解决方法的,可直接点击目录3.4 目录 1.版本兼容 ...

  3. $.toJSON和eval的区别

    1.$.toJSON是jquery的方法.eval是javascript的方法 2.eval兼容的浏览器多,$.toJSON有可能解析不了的json格式的数据,eval可以.

  4. jenkins报错;自定义工作目录;

    [1]no such file 报错: 如果jdk配置路径错误,有可能会报这样的错误: 其实只要在/etc/profile中配置好JAVA_HOME就足够了: 对应的系统配置框,留空不新加即可: [2 ...

  5. Python2.7-SciPy

    SciPy函数库在NumPy库的基础上增加了众多的数学.科学以及工程计算中常用的库函数.例如线性代数.常微分方程数值求解.信号处理.图像处理.稀疏矩阵等等 1.最小二乘拟合 详细介绍:https:// ...

  6. DW 破解方法

    安装破解方法(断网破解): 开始先请先断开网络连接,断网!!! 1.软件下载完成后,打开软件包如上图4个文件(第1个是安装文件夹,第2个是汉化包,第3个是破解文件,第4个是hosts修改工具). 打开 ...

  7. P1550 [USACO08OCT]打井Watering Hole

    题目描述 Farmer John has decided to bring water to his N (1 <= N <= 300) pastures which are conven ...

  8. Hadoop Version History and Feature

    Versions and Features Hadoop has seen significant interest over the past few years. This has led to ...

  9. struts2_Interceptor

    题目要求:要求当未登录访问某些Action时,自动跳转到登录界面. 1. 2. 3. 4. 5.默认拦截器堆栈为defautStack,但一旦用户添加了拦截器,默认拦截器失效 6. 7. struts ...

  10. Python基础(list和tuple)可变集合和‘不可变’集合

    list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: >>> ...