☞Openflow消息总共分为三大类:
   1、Controller‐to‐Switch
        控制器至交换机消息此类消息由控制器主动发出
    Features 用来获取交换机特性
    Configuration 用来配置Openflow交换机
    Modify‐State 用来修改交换机状态(修改流表)
    Read‐Stats 用来读取交换机状态
    Send‐Packet 用来发送数据包
    Barrier 阻塞消息
 2、Asynchronous
   异步消息此类消息由交换机主动发出
    Packet‐in 用来告知控制器交换机接收到数据包
    Flow‐Removed 用来告知控制器交换机流表被删除
    Port‐Status 用来告知控制器交换机端口状态更新
    Error 用来告知控制器交换机发生错误
 3、Symmetric
   对称消息,可以由控制器或交换机主动发起
    Hello 用来建立Openflow连接
    Echo 用来确认交换机与控制器之间的连接状态
    Vendor 厂商自定义消息

☞Openflow消息格式

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

   Openflow header的结构:

    

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

   Openflow消息类型:

    

☞Openflow Channel

  openFlow Channel是指交换机跟Controller之间的连接通道,可以是外带管理通道(交换机面板上跟Console口在一起的那个单独的Ethernet端口,物理上跟业务端口分离),也可以是带内管理口(复用业务端口),现在常见的都是带外管理口,主要原因是简单,用带内口需要配置交换芯片和协议栈。
  openFlow Channel连既可以是TCP连接,也可以是加密的TLS连接,由设备商或者用户自行决定用哪种。使用TCP/TLS连接主要是为了保证可靠性。如果交换机连接了多个Controller,那么会创建多条TCP/TLS连接。

☞Controller角色和选举

  一台openFlow交换机可以同时连接到多个Controller,这些Controller有三种角色,分别是Master、Slave和Equal。
  Master----一台交换机连接到的所有Controller中,只有一个Master,它对交换机拥有完全的操作控制权。
  Slave-----一台交换机所连接到的所有Controller中,可以有多个Slave,它们对交换机只有读取交换机状态和被动收取交换机消息的权限,不能对交换机进行配置,一旦Master宕掉,其中一台Slave就会被选举为Master。每个Slave可以接收不同的消息类型,从而在多个Slave之间进行负载分担。
  Equal----又的网络中可能希望有多个Controller都能对交换机进行配置,以便进行负载分担。这种情况下这些Controller可以被配置为Equal角色,一台交换机允许同时连接到多个Equal角色的Controller,这些Controller对交换机拥有和Master一样的功能。
  这些角色初始的时候都是管理员配置的。当Master出故障后,Slave可以通过选举的方式变为Master。交换机没有决定权。OpenFlow标准并没有定义如何进行选举。

OpenFlow消息的更多相关文章

  1. ovs处理openflow消息的流程

    OVS处理各个openflow消息的详细代码在 ofproto/ofproto.c 中: static enum ofperr handle_openflow__(struct ofconn *ofc ...

  2. OpenFlow 消息

    消息类型 OpenFlow 的消息共分为三类: Controller-to-Switch 顾名思义,此类消息是由控制器主动发出 Features 用于获取交换机特性 Configuration 用于配 ...

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

    openflow控制器和交换机之间的消息 消息格式 openflow消息由64bit,8个字节组成 Openflow协议数据包由Openflow Header和Openflow Message两部分组 ...

  4. OpenFlow Flow-Mod消息学习

    任务内容 1. 熟悉Flow-Mod消息触发场景. 2. 掌握Flow-Mod消息格式和常用字段含义. 实验原理 OpenFlow 协议支持3种消息类型:Controller-to-Switch(控制 ...

  5. OpenFlow PacketOut消息机制

    OpenFlow PacketOut消息机制 前言 由于最近实验的进行,遇到一个比较棘手的问题,就是利用控制器主动发送packet消息的问题,期间遇到一些问题,后来在RYU群中得到群友左木的帮助成功解 ...

  6. Floodlight中 处理packetin消息的顺序(1)

    当Controller和SW建立连接之后,就能够处理来自SW的各种OF msg.当接收到 packetin 消息之后,会将其分发给各个监听了这个OFMessage的listeners,所以假设我们要设 ...

  7. Openflow协议详解

    http://www.h3c.com/cn/d_201811/1131080_30005_0.htm# 1 OpenFlow背景 转发和控制分离是SDN网络的本质特点之一 .在SDN网络架构中,控制平 ...

  8. [转]SDN与OpenFlow技术简介

    http://blog.163.com/s_zhchluo/blog/static/15014708201411144727961/ 本文是2012年文章,对Openflow的发展.规范.应用和SDN ...

  9. SDN原理 OpenFlow协议 -4

    通道 Channel 在前面的OpenFlow的内容中,我们提到了在交换层所采用的流表是控制层的Controller下发的,那么Controller是如何下发流表的呢?中间经过了哪些的流程和步骤?控制 ...

随机推荐

  1. bootstarp3 支持ie8

    http://blog.csdn.net/hyb3280660/article/details/51850832 想要bootstarp3 支持ie8? 引入 <!-- 存放全局css/js - ...

  2. 2016huasacm暑假集训训练五 G - 湫湫系列故事——减肥记I

    题目链接:http://acm.hust.edu.cn/vjudge/contest/126708#problem/G 这是一个01背包的模板题 AC代码: #include<stdio.h&g ...

  3. Android_SQLite数据库增删改查操作

    一:什么是SQLite? 在Android平台上,集成了一个嵌入式关系型轻量级的数据库. 二:什么时候用的数据库? 有大量相似机构的数据需要存储时. 三:如何创建一个数据库? 1.创建一个Sqlite ...

  4. 使用PowerShell找出具体某个站点所使用的模板(Web Template)名称?

    $web = get-spweb –identity http://servername/sites/site/web #得到站点的对象 $web.WebTemplate #得到WebTemplate ...

  5. C#_基础:委托速讲

    1定义:委托=函数指针 C# public delegate void Test(string str); 等价C++ public void (*Test)(string str): 委托赋值(初始 ...

  6. Independent Components Analysis:独立成分分析

    一.引言 ICA主要用于解决盲源分离问题.需要假设源信号之间是统计独立的.而在实际问题中,独立性假设基本是合理的. 二.随机变量独立性的概念 对于任意两个随机变量X和Y,如果从Y中得不到任何关于X的信 ...

  7. DBImport v3.3 中文版发布:数据库数据互导及文档生成工具(IT人员必备)

    前言: 好久没写文了, 距离上一篇文章是3个月前的事了,虽然工作很忙,主要还是缺少写作的内容和激情,所以没怎么动手. 之前有一个来月不断面试不同层次来应聘的人员,很有想写文的冲动,后来还是忍住了. 估 ...

  8. dofile执行ANDROID APK里面的文件

    我使用dofile执行APK文件是不行的,比如 dofile("assets/res/flist")只能先拷贝到writablePath然后再dofile拿到数据后再清除这个临时文 ...

  9. 允许Sublime编辑器在Ubuntu上输入中文

    Sublime Text是一款功能非常强大的轻量级代码编辑器,有关功能介绍和使用可以看我另一篇文章的描述http://www.cnblogs.com/jaxu/p/5037547.html 不过,在U ...

  10. Eclipse 调试技巧

    条件断点 顾名思义,是指当发生某种情况或者触发某种条件的情况下命中断点.常用的情形就是for循环中某个变量为xx值的时候命中断点类似的. 做法1:在debug视图中,BreakPoint View将所 ...