软件定义网络基础---OpenFlow协议
一:OpenFlow协议概述
OpenFlow协议为控制器与交换机之间的通信,提供了一种开放标准的方式。OpenFlow交换机通过安全通道与控制器进行信息交互
二:OpenFlow消息类型
(一)controller-to-switch消息

1.Features消息

在建立传输安全会话时,控制器主动向交换机发送Feature_Request消息,请求交换机的特性信息,交换机通过Feature_Reply消息回复所支持的功能特性
2.Configuration消息

可以设置查询交换机的配置信息,交换机需应答查询请求
3.Modify-state消息

修改状态消息主要用于增加、修改、删除交换机的流表项、组表项及端口状态
4.Read-state消息

5.Send-packet消息

一般用于响应Packet-in消息的处理,Packet-out信息必须携带一个Buffer_id,来定位缓存在交换机上的数据包
6.Barrier消息

用于告知控制器该报文之前的动作均已执行
(二)asynchronous信息(异步)

这类消息的触发不是由控制器触发,而是有交换机主动发起的,用于告知控制器新数据包的到达,和交换机状态的改变
1.Packet-in消息

2.Flow-removed消息

3.Port-status消息

4.Error消息

(三)symmtric消息(对称)

两边都可以发送
1.Hello消息

2.Echo消息

该消息用于测量延迟、带宽或用于保持活动连接
3.Vendor消息

三:OpenFlow的消息格式

由OpenFlow头部和OpenFlow消息体组成
(一)OpenFlow头部


(二) OpenFlow消息体
与具体的消息类型有关,消息类型是一种枚举类型,每种消息类型被定义为一个常数

四:OpenFlow协议的主要通信流程
(一)控制器和交换机连接的建立

(二)双方建立TLS隧道后,方法发送hello消息进行版本协商

如果协议版本协商成功,则连接建立。否则发送Error消息描述协商失败原因,并终止连接
(三)协商完成后,控制器和交换机之间发送Features消息,获取交换机参数

参数包括支持的buffer数目、流表数、Actions等
(四)控制器发送SET_CONFIG消息向交换机发送配置参数

(五)通过GET_CONFIG消息得到交换机修改后的配置信息

(六)控制器与OpenFlow交换机之间,发送PACKET_OUT和PACKET_IN消息。通过PACKET_OUT中内置的LLDP包进行网络拓扑的探测
(七)控制器通过FLOW_MOD向控制器下发流表操作

五:OpenFlow通信流程详解

软件定义网络基础---OpenFlow协议的更多相关文章
- 软件定义网络基础---NETCONF协议
netconf协议最早被作为网管协议被提出来的,与SNMP网管协议相比较:SNMP的优势在于网络设备的监测,在大规模网管应用中有很大不足,正是针对这种不足之处,提出了NETCONF协议 一:NETCO ...
- 软件定义网络基础---OF-Config协议
交换机与控制器继续通信前,是需要对其功能.特性以及资源进行配置才能进行工作,这些配置是如何实现的?是由专门的配置协议指导完成的 一:OF-Config协议 是OpenFlow交换机管理配置协议,是Op ...
- 软件定义网络基础---OpenFlow概述
一:OpenFlow概述 二:交换机模型架构 (一)OpenFlow构架三个组成成分 三:OpenFlow 1.0版本 自OpenFlow1.0发布以来,目前已经有多个版本的OF规范版本被发布 四:O ...
- 软件定义网络基础---OpenFlow流表
一:流表 (一)流的概念 我们把同一时间经过同一网络中,具有某种共同特征或属性的数据,抽象为一个流 比如:我们将访问同一个地址的数据视为一个流 流一般是由网络管理员定义的,可以根据不同的流执行不同的策 ...
- 软件定义网络基础---SDN的主流构架
一:基于不同标准的主流构架 二: ONF定义的SDN基本构架 (一) 四个平面.两大接口 三:四个平面 (一)数据平面 数据平面是由若干网元(Netword Element)构成,每个网元包括一个或多 ...
- 软件定义网络基础---SDN控制平面
一:SDN控制平面 一个或多个SDN控制器组成,是网络的大脑. 对底层网络交换设备进行集中管理,状态监测.转发决策以及处理和调 度数据平面的流量: 通过北向接口向上层应用开放多个层次的可编程能 ...
- 软件定义网络基础---REST API的设计规范
一:REST API的设计 REST API是基于HTTP协议进行设计的,由HTTP动词+URI组成 (一)HTTP动词 (二)资源的原型 文档(Document): 文档是资源的单一表现形式: 集合 ...
- 软件定义网络基础---SDN数据平面
主要介绍SDN架构和转发模型 一:传统网络设备 (一)传统设备控制平面和数据平面 (二)数据平面的任务 数据平面对数据包的处理,主要通过查询由控制平面所生成的转发信息表来完成 (三)传统网络数据平面数 ...
- 软件定义网络基础---SDN的核心思想
一:SDN包含的核心思想:解耦,抽象,可编程 二:解耦 (一)SDN网络解耦思想 解耦是指将控制平面和数据平面进行分离,主要为了解决传统网络中控制平面和数据平面在物理上紧耦合导致的问题 控制平面和数据 ...
随机推荐
- 为什么引入Memcached?
刚memcached了解学习,一直是处于一个懵懂的状态,先是对memcached进行了一个了解,但我们为什么要在ITOO中引入memcached呢?当问我的时候当时自己脑子中打了一个大大的 这就必须去 ...
- AI文本审核垃圾内容
今天无意获得一个AI的文本审核的API,基于深度学习及大规模样本训练的人工智能文本审核技术,一站式准确 检测识别文本中夹杂的色情.推广.辱骂.违禁违法等垃圾内容,净化 网络环境,为您的应用提供更可靠 ...
- 虚拟机安装Linux从零到登陆成功教学
1.Linux Linux使我们出来windows以外可能接触最多的操作系统了,因为好多超级大的互联网公司,比如阿里等就是用Linux的,所以我们最起码要知道怎样去使用,使用的前提就是我们要有一个这样 ...
- SSMS开发利器Sql Prompt
一.前言 一个Sql Server 开发智能提示插件,方便查询表结果,避免了开发人员一个个敲查询语句.执行语句等,一起来看看吧. SQL Prompt 9.5 支持SSMS18 下载地址: 链接:ht ...
- [唐胡璐]Selenium技巧 - 利用MonteScreenRecorder录制视频
我们可以用以下方式在Selenium Webdriver中capture video. 基本步骤: 从 http://www.randelshofer.ch/monte/,下载“MonteScreen ...
- 从GITHUB下载源码
从昨天开始就想着从GitHub上下载一个开源的Vue的实战项目,希望能从中学习更多的Vue的实用内容,结果搞了半天好不容易下载了,不知道怎么弄.然而,今天终于成功了,激动地我赶紧来记录一下. 如何从G ...
- N皇后问题代码
/*.h*/ #ifndef _NQUEEN_H #define _NQUEEN_H #include<iostream> #include<vector> #include& ...
- netty: 将传递数据格式转为String,并使用分隔符发送多条数据
自定义分割符,用:DelimiterBasedFrameDecoder类 ByteBuf转String,用StringDecoder类 参考代码: //设置连接符/分隔符,换行显示 ByteBuf b ...
- 洛谷 P1279 字串距离 题解
每日一题 day24 打卡 Analysis 字符串+dp 仔细观察发现,对于f[i][j],它的值为以下三个值中的最小者: f[i-1][j]+k //a[i]对应空格 f[i][j-1]+k // ...
- QMutexLocker基于QMutex的便利类
首先需要注意的是:QMutexLocker这个类是基于QMutex的便利类,这个类不能够定义 私有成员变量 和 全局变量,只能够定义局部变量来使用. 使用方法:(1)先定义一个QMutex类的 ...