OpenFlow了解

来源:互联网 发布:双旗镇刀客 知乎 编辑:程序博客网 时间:2024/06/05 04:42

openflow的核心思想是将所有的协议都抽象出来,抽象成公共的flow概念。协议抽象:数据,函数(对数据的处理方式),逻辑(数据与处理的对应关系,函数之间的交互行为与时序)
push,match,pop
协议可以用RESTful API快速实现,不一定要单独定义OF的数据
111
有多个流表和一个组表组成,决定了报文匹配与转发,以及与控制器建立连接的tunnel。
交换机和控制器通过openflow协议通信,控制器通过openflow协议控制交换机
控制器可以增删改交换机中流表的流表项:主动和被动
报文通过流表项进行匹配和执行
流表项按照优先级对报文进行匹配
如果报文匹配了一个流表项,那么报文将会执行流表项中的指令集
没有匹配流表项,默认动作处理:丢弃保温,对下一张刘表进行匹配,转发给控制器
流表项可以设置动作,转发到哪个端口,将报文定向到一个组上,

端口:

  • 物理:对应具体的物理设备
  • 逻辑:抽象,非OF口(tunnel口)
  • 保留:特殊代号(controller、all…)

pipeline:OpenFlow在交换机里处理的流程

  1. 找到最高优先的匹配项
  2. 将指令应用到packet、match、action上,更新对应信息
  3. 将匹配项和动作集送往下一个table
    4.发往controller

流表

对报文根据某些字段进行匹配,取出匹配优先级最大的并计数,然后对这个报文做instructions。有timeout,过一会儿会消失,需要重新去问controller来获得新的流表项。流的cookie即唯一标识符。

matching

Table-miss:
每个流表都有的一条默认规则。当一个报文进入一张流表但是没有任何flow entry 匹配时,就会默认进入table-miss规则(优先级0)。
默认行为:drop、发给controller、发给另一张表
可以被controller动态控制,被送往controller时必须标明是table-miss事件。

Instructions:
在流表里,某个报文匹配到了一条flow,那么就会执行flow entry中写好的instructions,可以是修改报文字段,改metadata,增加删除action set。
流表

原创粉丝点击