软件定义网络基础---OpenFlow协议
2024-08-24 21:25:30
一: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通信流程详解
最新文章
- flask-cors
- [Android Pro] AIDL进程间传递自定义类型参数
- XML学习摘要
- ps通道磨皮
- Linux c 下使用getopt()函数
- css遇到的问题
- 如何脱离SDK,使用DW5.5和phonegap以及JQMobile搭建开发环境
- Entity Framework学习(一)
- [转载](iPhone开发)Bundle Display Name 改为中文。ap
- css格式化排版
- 3396: [Usaco2009 Jan]Total flow 水流
- Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(七)
- JDK动态代理浅析
- 配置DTP
- Android dp、dip、dpi、px、sp简介及相关换算,及其应用实例
- PICE(6):集群环境里多异类端点gRPC Streaming - Heterogeneous multi-endpoints gRPC streaming
- 和我一起学Effective Java之泛型
- DaoCloud加速docker镜像下载
- appium简明教程(5)——appium client方法一览
- jsonp 跨域2
热门文章
- Alpha冲刺随笔七:第七天
- Bias vs. Variance(2)--regularization and bias/variance,如何选择合适的regularization parameter λ(model selection)
- Linux 物理机虚拟化
- Calling Extraterrestrial Intelligence Again POJ 1411
- 学习Spring-Data-Jpa(一)---JPA、Spring-Data-Jpa简介
- CSS3中的display:grid网格布局介绍
- IP地址与Mac地址绑定错误
- (尚010)Vue列表的搜素和排序
- spark sql 常用语句
- [mysql8]新坑哈 更改Mysql 表的大小转换设置lower_case_table_names=1