zoukankan      html  css  js  c++  java
  • OpenFlow消息

    ☞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标准并没有定义如何进行选举。

  • 相关阅读:
    jieba库与词云的使用——以孙子兵法为例
    Python 计算π及进度条显示
    风车
    UDP协议编程
    matplotlib的基本使用、绘制雷达图及绘制数学函数
    numpy库的学习笔记及自定义手绘风
    PIL库的学习总结及生成GIF
    预测球队比赛结果及利用pyinstaller打包文件
    汉诺塔的实现
    有进度条的圆周率计算
  • 原文地址:https://www.cnblogs.com/zhanglei93/p/5003326.html
Copyright © 2011-2022 走看看