问题4:流表匹配

OF1.1版本


这是OF1.1版本的操作,引入了多流表,1.0版本并没有多流表。

  • 多流表的匹配称为 流水线处理:交换机从流表0开始查找,按照流表序号从小到大匹配。
  • 每个包按照优先级去匹配流表中的表项,优先级高的先进行匹配;一旦匹配成功则刷新计数器和执行动作,倘若没有找到匹配的表项则转发给控制器。

OF1.3版本及之后版本 关键词:叠加执行


OF1.3版本的流表匹配相比OF1.1版本,改变了很多:
(1)当匹配到流表项的时候,首先更新计数器,然后查看指令集(之前有提过,指令是从动作层抽象出来的层次,便于管理动作),由指令决定动作是立即执行,或者是添加到地址集中;然后查看指令集中是否有 Goto-Table 选项,有的话继续查找下一个表,没有的话执行动作集中的动作。
(2)没有匹配到流表项的时候,查看表内是否有 Table-miss 选项,有的话也查看它的指令集,如果没有直接丢弃。

一个简单的流程:匹配到流表项 -> 看指令集,更新计数器 -> 动作马上执行/加入动作集 -> 查找下一个表/执行动作集;
没有匹配到流表项 -> 有没有 Table-miss 表项 -> 有,查看指令集,接下来和前面的内容类似 / 没有,丢弃。

  • 1.3及之后的流表匹配,除了多流表操作之外,引入了 Table-miss 和 Action-set动作集 的处理。
  • 之前的版本,当交换机没有匹配到流表项的时候,直接交给控制器处理;那么现在 Table-miss 用于解决 未匹配的流的转发和丢弃问题,通过 Table-miss 的参数,可以对数据流进行转发,丢弃,交给控制器的操作。
  • 多流表操作中,每个表都有独立的指令,这些指令(执行动作)可以在查表的时候执行动作,也可以通过指令将动作添加到 Action-set 再叠加执行。

单表时,只有 Action 动作;多表环境中,多个 Action 累积成 action-set;决定 action-set 如何工作的,是表项的指令Instructions:指令可以将动作写入,添加修改到 Action-set 中,也可以直接在读表的时候进行。

至此,流表的问题结束了,那么···

问题来了,如何生成这些表?

传统网络中,在OSPF/BGP/RIP这些路由协议中,是通过分布式的交互来进行路由汇聚,生成表项的,这是动态路由。这是一种P2P架构(双方对等)。
那么,在SDN中,是由控制层的Controller控制器,直接下发流表。

交换机A,B,C,D将链路信息统一告诉Controller,Controller在执行完计算之后,统一下发流表给交换机。
这是一种 Client/Server 架构(C/S架构)。

2016/9/7

SDN原理 OpenFlow协议 -3的更多相关文章

  1. SDN原理 OpenFlow协议 -1

    本文基于SDN原理视频而成:SDN原理 OpenFlow OpenFlow 协议 和 传统的路由选择协议 有很多相似的地方,同时在某些地方也具有一定的颠覆性. 路由表,由IP地址和子网掩码组成.MAC ...

  2. SDN原理 OpenFlow协议 -2

    本文由SDN原理视频而成:SDN原理 流表 FlowTable --- OpenFlow的核心 问题3 流表项 Flow Entry 单流表(OpenFlow 1.0版本) -> 多流表(Ope ...

  3. SDN原理 OpenFlow协议 -4

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

  4. SDN学习之OpenFlow协议分析

    学习SDN相关的学习也已经有快半年了,期间从一无所知到懵懵懂懂,再到现在的有所熟悉,经历了许多,也走了不少弯路,其中,最为忌讳的便是,我在学习过程中,尚未搞明白OpenFlow协议的情况下,便开始对S ...

  5. 传统二三层转发融合SDN Openflow协议的Hybrid交换机转发流程

    Hybrid 交换系统(以下简称Hybrid 交换机)是交换机融合了OVS(Openflow vswitch)原生代码,集传统和Openflow 技术于一体的转发系统.主要解决纯Openflow 基于 ...

  6. SDN学习之Mininet验证OpenFlow协议版本

    最近学习如何使用mininet,但是,刚刚开始时一直无法知道如何查看OpenFlow协议的版本,通过查阅网上的资料,从SDNLAB中,学习到了如何验证,mininet自身基于OpenFlow13版本的 ...

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

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

  8. SDN原理 控制层 Controller控制器

    本文参照SDN原理视频而成:SDN原理 Controller 概念 从上面这个图片,我们能够知道,Controller 是一个非常重要的东西:承上启下,左右拓展. 从整个SDN的架构来看,控制器 处在 ...

  9. 实战录 | 基于openflow协议的抓包分析

    <实战录>导语 云端卫士<实战录>栏目定期会向粉丝朋友们分享一些在开发运维中的经验和技巧,希望对于关注我们的朋友有所裨益.本期分享人为云端卫士安全SDN工程师宋飞虎,将带来基于 ...

随机推荐

  1. Shell脚步之监控iostat数据

    在性能测试中,进行iostat监控数据显示太不美观,看起来很痛苦,如下图 为了显示美观,写个shell脚本进行改造,如下: #! /bin/bash interval= ]; then interva ...

  2. 解决Activity启动黑屏及设置android:windowIsTranslucent不兼容activity切换动画问题

    From:http://blog.csdn.net/fancylovejava/article/details/39643449 之前在做 APP 的时候不太关注这个问题,因为自己在使用其他 APP ...

  3. postgresql----排序ORDER BY,分组GROUP BY,分页OFFSET&&LIMIT

    一.GROUP BY 使用GROUP BY分组查询在SELECT子句中只能出现分组字段和聚合函数,HAVING子句相当于WHERE,使用条件过滤数据. 示例1.以a,b分组查询tbl_insert表, ...

  4. Fiddler关闭自动更新

    1,fiddler 启动时老弹出要更新,但不想更新,可以这样设置 Tools-Optons->General 把第一个√去掉

  5. javascript飞机大战-----005创建子弹对象2

    子弹销毁 /* 创建子弹:因为子弹不是只创建一个所以要用构造函数 注意一点:子弹发射的位置应该是英雄机的正中央的位置,所以需要传点东西进来 */ function Bullet(l,t){ this. ...

  6. 170622、springboot编程之JPA操作数据库

    JPA操作数据库 什么事JAP?JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. 1.在pom ...

  7. Git之删除仓库

    Github删除已有仓库步骤 在仓库页面点击设置 在新打开网页删除 输入仓库名点击删除即可

  8. android的一些类库的优缺点

    经过本人的面试经验,以及接触的android项目,总结了一下android的一些类库的优缺点: 一,线程方面 1.AsyncTask 首先是线程优化以及缺陷方面,针对目前大多数类库来说,都有好的设计方 ...

  9. sailsjs入门到精通(一)

    sailsjs  官方网站http://sailsjs.com/ 中文网站: http://sailsdoc.swift.ren/ 1 全局安装sails  npm install sails@bet ...

  10. Ubuntu18.04下安装比特币客户端

    一.下载有两种安装方式:安装包和源码 二.安装1.通过安装包安装在https://bitcoin.org/en/download下载Windows,Mac OSX,Linux对应的安装包.安装过程比较 ...