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

消息格式

openflow消息由64bit,8个字节组成

Openflow协议数据包由Openflow Header和Openflow Message两部分组成

Openflow头

所有的open flow消息都是从open flow头开始,其格式如下

wireshark分析如下

Openflow Message结构与具体消息类型有关:

Openflow消息类型:

安全通道的建立和初始化设置

安全通道建立的步骤

1.由OpenFlow交换机对OpenFlow控制器建立未加密的TCP连接或基于
TLS的连接
2.确定安全通道中要使用的OpenFlow版本
3.握手
4.交换其他必要的设置等(任意)

确定要使用的openflow版本

建立安全通道后,要确定通过安全通道进行交换的OpenFlow协议的版本。安全通道建立后的初始动作如下图

建立安全通道后,为了确定将要使用的版本,OpenFlow交换机和OpenFlow控制器都将发送Hello消息。Hello消息仅由OpenFlow头构成。

发送的Hello消息中携带各自支持的最大版本号。安全通道中要使用的版本号就是基于这些信息确定的。具体而言,就是将采用OpenFlow交换机和OpenFlow控制器所发送的版本号中较小的那一个版本。
对于要使用的OpenFlow版本未取得相一致的意见时,需要发送包含OFPET_HELLO_FAILED的Error 消息

握手

通过交换Hello消息建立安全通道后,执行OpenFlow 控制器和OpenFlow交换机的握手。OpenFlow 控制器通过握手掌握OpenFlow交换机的相关信息后,即可对OpenFlow交换机进行控制。握手之前的步骤皆为建立安全通道后的初始设置。

OpenFlow 控制器向OpenFlow交换机发送问询功能的Features请求消息,OpenFlow交换机返回Features响应消息,从而完成握手。与Hello消息相同,Features请求消息也仅由OpenFlow头构成。

Features响应消息中包含的各字段内容如表2.11所示。从表2.11可知,Features响应消息把与OpenFlow交换机相关的基本信息都提供给了OpenFlow控制器。OpenFlow控制器可获知OpenFlow交换机支持的行动、传输容量以及存在什么样的物理端口等信息。

SET_CONFIG、GET_CONFIG

请求消息规范中虽未规定握手后必须这样做,但OpenFlow控制器有时会向OpenFlow
交换机发送SET_CONFIG消息以发送设置信息,或发送GET_CONFIG请求消息以查询OpenFlow交换机的设置状态。

Flow-Mod消息

packet-in

packet-out

port-status

在OpenFlow交换机中添加、删除或修改物理端口时,需要发送Port-
Status 消息来通知OpenFlow 控制器。
Port-Status消息的结构如图2.20所示。作为表示发送该消息理由的reason,定义了OFPPR_ADD(0)、OFPPR_DELETE(1)、OFPPR_MODIFY(2)
这3种数值。ofp phy port结构体与图2.12所示相同。

Flow-Removed 消息

当OpenFlow交换机中设置的流表项超时时,OpenFlow交换机要向OpenFlow控制器发送Flow-Removed消息。为确保OpenFlow控制器收到该消息,仅在其发出请求时才发送。

Error 消息

Error 消息的作用是通知出现了某种错误。OpenFlow交换机和OpenFlow控制器都可发送Error消息

Barrier消息

在OpenFlow协议中,并非每一个通过安全通道进行交换的消息都需要响应。例如,初始设置后有时会使用的SETCONFIG消息就并不需要响应。因此,使用安全通道发送消息的一方有时并不知道接收信息方处理消息的程度。
为了解决类似问题,在OpenFlow协议中备有称为Barrier消息的机制。Barrier消息的目的是掌握消息的处理程度,虽然很普通,但却是OpenFlow协议的重要消息机制之一

Echo 消息

OpenFlow 控制器和OpenFlow交换机可通过发送Echo请求消息来确认二者之间是否连接、检测通信延迟、测量通信带宽等。接收Echo请求消息的一方会向对方返回Echo响应消息(图2.24)。

相关链接

OpenFlow 交换机与控制器交互步骤

Openflow协议详解

openflow控制器和交换机之间的消息的更多相关文章

  1. OpenFlow 1.3 控制器与交换机的交互,以及拓扑发现

    前言 最近纠结于控制器如何发现拓扑,于是就翻起了OpenFlow 1.3进行查看,以及一些相关协议 OF 1.3 安全通道,即交互消息 OpenFlow Switch Specification 1. ...

  2. ASP.NET MVC 之控制器与视图之间的数据传递

    今天,我们来谈谈控制器与视图之间的数据传递. 数据传递,指的是视图与控制器之间的交互,包括两个方向上的数据交互,一个是把控制器的数据传到视图中,在视图中如何显示数据,一个是把视图数据传递到控制器中, ...

  3. 安卓中不同APP之间的消息通信

    昨天在腾讯实习生招聘初试面试时面试官问道我关于两个APP之间相互通信的方式,当时自己回道到了contentProvider与BroadcastReceiver.但他接着问还有没有其它的方式,我跟他说可 ...

  4. Asp.Net Core MVC控制器和视图之间传值

    一.Core MVC中控制器和视图之间传值方式和Asp.Net中非常类似 1.弱类型数据:ViewData,ViewBag 2.强类型数据:@model 二.代码 实例  1.ViewData pub ...

  5. 利用协议代理实现导航控制器UINavigationController视图之间的正向传值和反向传值

    实验说明 (1)正向传值:比如A类里地值要传给B类用,就是我们先在A类中声明一个B类对象(当然B类头文件要import过来),然后把A类中得某个 值传递给B类中得某个值(所以需要在B类中先准备一个变量 ...

  6. libuv的多线程之间传递消息

    官网上给出的例子http://nikhilm.github.io/uvbook/threads.html#inter-thread-communication,中文理解在后边 Inter-thread ...

  7. 配置交换机之间直连链路聚合-LACP模式

    组网图形 LACP模式链路聚合简介 以太网链路聚合是指将多条以太网物理链路捆绑在一起成为一条逻辑链路,从而实现增加链路带宽的目的.链路聚合分为手工模式和LACP模式. LACP模式需要有链路聚合控制协 ...

  8. 交换机之间的通信 VLAN和trunk

    只有 PC0和PC2可通信,PC1和PC3可通信 将PC0和PC2加入同一个VLAN 将PC1和PC3加入同一个VLAN 将左边的交换机的Fa0/3口开启trunk模式即可(如下图)

  9. EventBus的使用详解,功能为在Fragment,Activity,Service,线程之间传递消息

    最近跟同事用到了EventBus的使用,之前不太了解EventBus,查阅资料发现EventBus还挺好用的,用法比较简单,下面就把我看到的关于EventBus的博客分享给大家,里面介绍了很多的使用详 ...

随机推荐

  1. python实现某目录下将多个文件夹内的文件复制到一个文件夹中

    现实生活中,我们经常有这样的需求,如下图,有三个文件夹,文件夹1内含有1.txt文件 文件夹2中内含有2.txt文件,文件夹3中含有3.txt文件.我们有时候需要把1.txt, 2.txt, 3.tx ...

  2. 如何在ADO中使用数据读取器(DataReader)读取数据

    DbDataReader类型(实现IDataReader接口)是从数据源获取信息最简单也最快速的方法. 数据读取器是只读向前的效据流.井且一次返回一条记录.因此.只有当你向数据源提交 Select 查 ...

  3. 授权管理-LDAP-介绍与环境搭建

    LDAP介绍 转自:https://blog.csdn.net/tanshizhen119/article/details/79942315 还是先来百度百科介绍. LDAP是轻量目录访问协议,英文全 ...

  4. vue-render函数和插槽

    Vue render函数,官方文档定义绝大部分时候我们使用template 来创建html 模板,但是纯html 和css都基本上都不具有编程能力,而当我们想使用 javascript的编程能力时,我 ...

  5. 最近javascript的学习小记

    一.关于javascript的原型与隐式原型 1.prototype 首先function是一个对象,每一个function都具有一个prototype对象,prototype对象默认是{constr ...

  6. vue(8)—— 组件化开发 - webpack(2)

    webpack的常用loder和插件 loder和插件是什么,现在暂且不表,看到后面你就懂了 引入css问题 直接用link标签导入css 在前面的 vue(7)—— 组件化开发 — webpack( ...

  7. [题解]洛谷P2709 小B的询问

    地址 是一道莫队模板题. 分析 设\(\text{vis[i]}\)表示元素\(\text{i}\)出现的次数 当一个元素进入莫队时,它对答案的贡献增加.有\(\delta Ans=(X+1)^2-X ...

  8. eval、exec及元类、单例实现的5种方法

    eval内置函数 # eval内置函数的使用场景:#   1.执行字符串会得到相应的执行结果#   2.一般用于类型转化,该函数执行完有返回值,得到dict.list.tuple等​dic_str = ...

  9. 【技术说明】iOS10来了,AppCan已全面适配!

    IPhone 7出了,你的肾还好吗?别紧张,不买肾7,同样可以体验最新的iOS10! AppCan对引擎.插件.编译系统等都进行了重要升级,让你的APP轻松适配iOS10!具体如何,请往下看! 引擎 ...

  10. 四。Hibernate 使用MAVEN工具

    maven工具的使用1.作用:打包项目以及jar包的版本管理2.使用步骤: a.下载maven工具,修改conf目录下的setting.xml文件 <mirror> <id>a ...