转载地址:3. OpenFlow协议_SDN核心技术剖析和实战指南_红黑联盟读书频道http://book.2cto.com/201310/34138.html

OpenFlow协议是用来描述控制器和OpenFlow交换机之间交互所用的信息的接口标准,其核心是OpenFlow协议信息的集合。OpenFlow协议支持三种消息类型:controller-to-switch、asynchronous(异步)和symmetric(对称),而每一类消息又可以拥有多个子消息类型。其中,controller-to-switch消息由控制器发起,用来管理或获取OpenFlow交换机的状态;asynchronous消息由OpenFlow交换机发起,用来将网络事件或交换机状态变化更新到控制器;symmetric消息可由交换机或控制器发起。各类消息的细节描述如表2-2所示。
表2-2  OpenFlow协议消息列表

类    型 名    称 说    明 备    注
controller-to-switch Features 在建立TIS会话时,控制器发送features请求消息给交换机,交换机需要应答自身支持的功能 由控制器发起,对OpenFlow交换机进行状态查询和修改配置等操作。OpenFlow交换机接收并处理可能发送或不需要发送的应答消息
Configuration 控制器设置或查询交换机上的配置参数,交换机仅需要应答查询消息
Modify-state 控制器管理交换机流表项和端口状态等
Read-state 控制器向交换机请求诸如流表、端口、各个流表项等方面的统计信息
Send-packet 控制器通过交换机指定端口发出数据包
Barrier 控制器通过barrier请求及相应报文,确认相关消息已经被满足或收到完成操作的通知
续表 
类    型 名    称 说    明 备    注
asynchronous Packet-in 交换机收到一个数据包,在流表中没有匹配项,或者在流表中规定的行为是“发送到控制器”,则发送Packet-in消息给控制器。如果交换机缓存足够多,数据包被临时放在缓存中,数据包的部分内容(默认128字节)和在交换机缓存中的序号也一同发给控制器;如果交换机缓存不足以存储数据包,则将整个数据包作为消息的附带内容发给控制器 由OpenFlow交换机主动发起,用来通知交换机上发生的某些异步事件,消息是单向的,不需要控制器应答。主要用于交换机向控制器通知收到报文、状态变化及出席错误等事件信息
Flow-removed OpenFlow交换机中的流表项因为超时或收到修改/删除命令等原因被删除掉,会触发Flow-removed消息
Port-status OpenFlow交换机端口状态发生变化时,触发Port-status消息
Error OpenFlow交换机通过Error消息通知控制器发生的问题
symmetric Hello 用于在OpenFlow交换机和控制器之间发起连接建立 本类消息不必通过请求建立,控制器和交换机都可以主动发起,并需要接收方应答。这些都是双向对称的消息,主要用来建立连接、检测对方是否在线等
Echo 交换机和控制器均可以向对方发出Echo消息,接收者则需要回复Echo reply。该消息用来协商延迟、带宽、是否连接保持等控制器到OpenFlow交换机之间隧道的连接参数
Vendor 用于OpenFlow交换机协商厂家自定义的附加功能。为未来版本预留

基于表2-2所示的内容,OpenFlow规定了在其主要的协议交互过程(例如连接建立、连接中断、加密、生成树支持、流表删除、流表项修改等等)中需要使用的协议消息,具体情况包括如下几点。

连接建立:控制器与OpenFlow交换机建立TLS隧道后,隧道中传送的都是控制协议消息,因此隧道中的所有流量转发都无需查询交换机中的流表。当OpenFlow安全隧道建立起来后,双方必须首先发送HELLO消息给对方,该消息携带本方支持的最高协议版本号,接收方将采用双方都支持的最低协议版本进行通信。一旦发现两者拥有共同支持的协议版本,则连接建立,否则发送ERROR消息,描述失败原因,并终止连接。

连接中断:当交换机与控制器之间的连接发生异常时,OpenFlow交换机应尝试连接备份控制器。当多次尝试均失败后,OpenFlow交换机将进入紧急模式,并重置所有的TCP连接。此时,所有包将匹配指定的紧急模式表项,其他所有正常表项将从流表中删除。此外,当交换机刚启动时,默认进入紧急模式。

加密:控制器与OpenFlow交换机之间的安全通道采用TLS连接加密。当交换机启动时,尝试连接到控制器的6633 TCP 端口。双方通过交换证书进行认证。因此,每个交换机至少需配置两个证书,一个用来认证控制器,一个用来向控制器发出认证。

生成树支持:OpenFlow交换机可以选择支持802.1d生成树协议。如果支持,所有相关包在查找流表之前应该先在本地进行传统生成树处理。支持生成树协议的交换机在应答控制器的FEATURES消息的相应应答域中设置STP(Spanning Tree Protocol,生成树协议)支持位,并且需要所有物理端口均支持生成树协议,但无需在虚拟端口支持。生成树协议会设置端口状态,来限制发往FLOOD的数据包仅被转发到生成树指定的端口。需要注意的是,已经指定了出端口的转发或发往ALL的数据包会忽略生成树所指定的端口,而按照规则的设置进行端口转发。

如果交换机不支持802.1d 生成树协议,则必须允许控制器指定洪泛时的端口状态。

流表项修改:流表项修改是控制器下发的最主要的消息,共有五种类型,如表2-3所示。
表2-3  流表项修改消息类型

名    称 说    明
ADD 增加一个新的流表项
MODIFY 修改所有匹配的流表项
MODIFY_STRICT 修改严格匹配的流表项
DELETE 删除所有匹配的流表项
DELETE_STRICT 删除严格匹配的流表项
表2-3所示的每个消息的发送都会引起一系列OpenFlow协议消息的触发,从而引起流表项的变化。同时,如果消息发送失败,将会返回错误消息及相应的错误代码,指明出现错误的原因。另外,MODIFY和DELETE还有另一条带STRICT的消息。对于非STRICT消息,可使用通配的流表项,因此,一次可能匹配多条流表项,所有匹配消息描述的流表项均受影响。而带有STRICT的消息,表项头跟优先级等都必须严格匹配后才执行,即只有同一个流表项会受到影响。

交换机移除流表项。交换机移除流表项有两种情况:一种是定时器计时结束,另一种是控制器发出删除表项的命令。每个表项均有一个idle_timeout定时器和一个hard_timeout定时器,前者计算没有流量匹配的时间(单位都是秒),后者计算被插入表中的总时间。一旦到达时间期限,则交换机自动删除该表项,同时发出一个流删除的消息。另外,控制器也可以下发DELETE、DELETE_STRICT等消息主动删除流表项。

OpenFlow交换机 之 OpenFlow协议相关推荐

  1. OpenFlow网络、OpenFlow交换机及OpenFlow协议的知识总结

    目录 OpenFlow起源与发展 OpenFlow网络 1.OpenFlow交换机: 2.FlowVisor: 3.Controller: OpenFlow交换机 分类 安全通道 流表 OpenFlo ...

  2. OpenFlow交换机概述

    1 交换机组成 OpenFlow交换机包括一个或多个流表和一个组表,执行分组查找和转发,和到一个外部控制器OpenFlow的信道. 控制器使用OpenFlow的协议,可添加.更新和删除流表中表项,既主 ...

  3. openflow交换机 ryu_关于OpenFlow协议

    SDN中两个重要元素:控制器(掌控全局,指挥网络内的设备工作) 交换机(转发数据) 控制器与网络设备通过OpenFlow协议进行通信 OpenFlow交换机内有一个FlowTable,交换机按照流表转 ...

  4. ubuntu 14.04设备OVS虚拟OpenFlow交换机配置汇总

    一.设备OVS sudo apt-get install openvswitch-controller openvswitch-switch openvswitch-datapath-source ( ...

  5. openflow交换机 ryu_ryu(示例代码)

    controller目录下的ofo_event.py定义了OpenFlow事件,handler.py定义了事件的处理 from ryu.baseimport app_managerfromryu.co ...

  6. openflow交换机 ryu_在RYU中实现交换机的功能

    首先源码,解析部分如下,同时可以参考RYU_BOOK上的解释说明 原文链接参考:https://blog.csdn.net/qq_34099967/article/details/89047741 f ...

  7. OpenFlow交换机【ACM SIGCOMM顶会论文笔记】

    目录 写在前面的话 OpenFlow交换机 基本思想与工作原理 专用OpenFlow交换机(Dedicated OpenFlow switches) 启用OpenFlow的交换机(OpenFlow-e ...

  8. SDN(二) 对TP-LINK TL-MR3420型号的OpenFlow交换机进行配置

    1 引言 积跬步以至千里,积怠情以至深渊. 在本人博客SDN(一)中已经详细介绍了如何将TP-LINK TL-MR3420路由器刷成OpenFlow交换机,该无线路由器已具备支持SDN功能.本文将继续 ...

  9. OpenFlow:简述OpenFlow协议的演进

    OpenFlow:简述OpenFlow协议的演进 <OpenFlow:简述对OpenFlow协议的认识> <OpenFlow:简述OpenFlow协议的演进> <Open ...

最新文章

  1. 解决远程连接mysql很慢的问题(mysql_connect 打开连接慢)
  2. CodeForces - 1058D D. Vasya and Triangle
  3. 《你必须掌握的Entity Framework 6.x与Core 2.0》书籍出版
  4. [转载].NET平台微服务项目汇集
  5. python画饼图程序_python使用matplotlib画饼状图
  6. 使用SpringMVC搭建第一个项目
  7. springboot核心配置文件 application.properties 或者 yml 常用配置详解
  8. git push 一直 Incorrect username or password ( access token ) fatal: Authenticatio
  9. 根据银行卡号判断银行卡是否正确与归属银行
  10. ICEM使用经验与网格划分错误分析
  11. FAT文件系统详解(二)
  12. 计算机睡眠和休眠哪个好,休眠和睡眠哪个好?电脑休眠和睡眠有什么区别?
  13. 一个公布每天全球被黑网站的站点
  14. 父级fixed_position:fixed相对父级元素定位而不是浏览器
  15. 快速将非Word中的不可编辑的公式转换为Word文档中公式编辑器里可编辑的公式的办法
  16. 从质量低到高带你了解影片名里面的TC、HD等的含义
  17. 联通宽带在停电以后断网,重启猫还是没网,可能是设置出问题了
  18. ajax 分割返回,jQuery用'...'分割ajax响应?
  19. Access数据操作报错:操作必须使用一个可用的更新查询
  20. 〖ChatGPT实践指南 - 零基础扫盲篇②〗- 深度体验 ChatGPT

热门文章

  1. 计算机二级考试题库.doc,全国计算机二级考试试题题库附答案.doc
  2. 2k18 服务器不稳定,NBA2K18连接服务器出现错误代码怎么办_NBA2K18连接服务器出现错误代码解决办法_玩游戏网...
  3. PlantUML常用命令笔记
  4. 20年前iPod改变了世界,20年后它变成了怀旧机器
  5. 浅谈SQL注入,XSS攻击
  6. java 集成 layIm 聊天工具
  7. DIV CSS网页布局 让搜索引擎蜘蛛不再累
  8. 批量插入或更新数据(MyBatis-plus框架)
  9. 计算机专业英语影印版答案,计算机专业英语(2008影印版)OPEN-ENDED答案
  10. WPF ShowDialog切换其他应用后不显示的问题