参考

OpenFlow protocol version 1.0 通信过程

通信双方:

OpenFlow控制器,OpenFlow交换机。

通信模块:

Secure Channel(基于TCP)。

通信基础:

socket。

通信过程:

1.TCP三次握手(基于TCP协议)。

2.控制器交换机互发Hello包,也是三次,无论控制器还是交换机均可先发送。目的是为了协商OpenFlow协议的版本号。

3.控制器 => 交换机:Feature_Request数据报,目的是为了获取交换机的信息。

4.交换机 => 控制器:Feature_Reply数据报,主要是回复交换机的端口信息,长度与端口数成正比,存放port的信息。每一个port信息长度为48byte。

交换机和端口的配置信息在整一个通信过程起着至关的作用,因为所有关于的操作都需要从features里面提取相关的信息,如dpid,port_no,等在整个通信过程中多次被用到的重要数据。所以,对这两个数据结构了然于心,对于研究OpenFlow来说,至关重要。每一次交换机连到控制器,都会收到控制器的features_request,当sw将自己的features回复给控制器之后,控制器就对交换机有了一个全面的了解,从而为后面的控制提供的控制信息。

5.在控制器获取完交换机的信息之后,交换机就开始处理数据了,在遇到没有匹配到流表的流量时,交换机将该流的第一个数据报封装成packet-in发送至控制器端进行决策和处理。控制器基于网络拓扑进行计算,并返回packet-out决定交换机如何处理流量。

6.控制器下发Flow_Mod,该类型的数据报是OpenFlow控制器用于配置OpenFlow交换机的数据报,非常重要。其结构由header+match+flow_mod+action[]组成,具体细节请参考文首的参考博客。

7.控制器下发Packet_Out,携带LLDP报文,用于发现底层网络链路情况,具体细节请参考:SDN控制器的拓扑管理与LLDP链路发现

8.控制器下发BARRIER_REQUEST,交换机返回...REPLY,作用是在控制器下发Flow_Mod之后,判断流表是否成功写入交换机,如果收到Reply则确认成功。

9.控制器下发STATS_REQUEST,交换机返回...REPLY,作用是获取交换机内部的统计信息。

10.控制器和交换机在运行时不断互相发心跳ECHO包,确认连接存在。

2017.8

OpenFlow protocol version 1.0 通信过程的更多相关文章

  1. 安装Hive过程中报错:Unsupported major.minor version 52.0

    在安装hive的过程中,我觉得我是按照教程走的,但是在启动hive时还是报错了,错误如下 Exception in thread "main" java.lang.Unsuppor ...

  2. 从wireshake分析http和https的通信过程

    参考文章: Wireshark基本介绍和学习TCP三次握手 [技术流]Wireshark对HTTPS数据的解密 Wireshark/HTTPS Journey to HTTP/2 以TCP/IP协议为 ...

  3. Bittorrent Protocol Specification v1.0 中文

    翻译:小马哥 日期:2004-5-22 BitTorrent 是一种分发文件的协议.它通过URL来识别内容,并且可以无缝的和web进行交互.它基于HTTP协议,它的优势是:如果有多个下载者并发的下载同 ...

  4. etcd命令说明 etcd Version: 3.0.15

    etcd Version: 3.0.15Git SHA: fc00305Go Version: go1.6.3Go OS/Arch: linux/amd64 https://github.com/co ...

  5. WCF入门教程二[WCF应用的通信过程]

    一.概述 WCF能够建立一个跨平台的安全.可信赖.事务性的解决方案,是一个WebService,.Net Remoting,Enterprise Service,WSE,MSMQ的并集,有一副很经典的 ...

  6. Portlet 通信过程详解

    Portlet 通信过程详解 在 Portal 的开发过程中,Theme 与 portlet 之间的通信,以及 portlet 之间的通信是开发人员常常遇到的问题.通常 Portlet 之间需要能够互 ...

  7. WCF通信过程

    无废话WCF入门教程二[WCF应用的通信过程] 一.概述 WCF能够建立一个跨平台的安全.可信赖.事务性的解决方案,是一个WebService,.Net Remoting,Enterprise Ser ...

  8. Oauth1.0认证过程

    现今,已经有了Oauth2.0,写篇博客了解Oauth1.0的过程以及与2.0的区别. 在Oauth官网  关于1.0的介绍: 一.简介 OAuth authentication is the pro ...

  9. Socket编程之聊天程序 - 模拟Fins/ModBus协议通信过程

    设备控制软件编程涉及到的基本通信方式主要有TCP/IP与串口,用到的数据通信协议有Fins与ModBus. 更高级别的通信如.net中的Remoting与WCF在进行C/S架构软件开发时会采用. 本篇 ...

随机推荐

  1. PAT 1021 Deepest Root[并查集、dfs][难]

    1021 Deepest Root (25)(25 分) A graph which is connected and acyclic can be considered a tree. The he ...

  2. CSS :hover 选择器

    定义和用法 :hover 选择器用于选择鼠标指针浮动在上面的元素. 提示::hover 选择器可用于所有元素,不只是链接. 提示::link 选择器设置指向未被访问页面的链接的样式,:visited ...

  3. FireFox Plugin编程

    9 jiaofeng601, +479 9人支持,来自 Meteor.猪爪.hanyuxinting更多   本文通过多图组合,详细引导初学者开发NPAPI的浏览器插件. 如需测试开发完成的插件请参考 ...

  4. CloudFlare Support - Error 522: Connection timed out 错误522:连接超时

    522错误意味着我们无法在所有到达原点Web服务器. 这方面有几个主要原因: 原始服务器太超载回应. 源Web服务器具有挡住了我们的请求的防火墙,或者数据包被主机的网络内下降. 源Web服务器脱机,或 ...

  5. iOS UI基础-1.0加法计算器

    1.打开Xcode,新建一个项目 2.Single View Application是最适合初学者的模板 3.填写该应用相关信息 4.搭建UI界面 项目创建完毕后,自动帮我们做了很多配置,也自动生成了 ...

  6. 树莓派3B新版raspbian系统换国内源

    树莓派新版系统更换了专门优化过的桌面环境PIXEL,正好手头有个闲置的TF卡决定刷上新版系统玩玩.下载刷系统过程很多教程页很简单.插卡,上电开机,释放卡上的剩余空间都很正常,因为树莓派官方源访问很慢下 ...

  7. 案例:使用scan IP无法连接数据库

    环境:Oracle RAC(11.2.0.3) 现象:通过scanIP连接数据库报错ORA-12514: ORA-12514: TNS:listener does not currently know ...

  8. Summary: Class Variable vs. Instance Variable && Class Method

    这里列举的是一些我平时碰到的一些Java Grammar,日积月累. Class Variable vs Instance Variable: Instance variables Instance ...

  9. 定时器事件QtimerEvent 随机数 qrand Qtimer定时器

    QTimerEvent类:定时器事件.QObject的子类都可使用  int QObject::startTimer(int interval)[参数:毫秒][返回值:定时器整型编号]来开启一个定时器 ...

  10. Bootstrap学习笔记-布局

    Bootstrap学习笔记-布局 默认是响应式布局,就是你在改变页面的时候也不会出现乱的现象. <html><head> <meta charset="utf- ...