本文基于SDN原理视频而成:SDN原理

OpenFlow

OpenFlow 协议 和 传统的路由选择协议 有很多相似的地方,同时在某些地方也具有一定的颠覆性。

路由表,由IP地址和子网掩码组成。MAC表,由MAC地址组成。
但是OpenFlow协议的流表,却什么都有。

OpenFlow 相比传统路由协议来说,更大更广泛;是一种推倒重来的做法。

功能

OpenFlow 1.0

OpenFlow 1.3 及 更新的版本

相比1.0,1.3的OpenFlow交换机支持 多流表,多控制器,主表,计量表等等。

主要功能:

  • 用于实现 Controller 和 Switch 的通信,定义了一系列的标准术语。
  • 定义了 Controller 如何来控制 Switch 以及 Switch 如何来反馈 Controller。
  • 定义了 Controller 和 Switch 通信过程中的 消息类型和格式。

发展 版本

流表 FlowTable --- OpenFlow的核心

如果拿传统网络中的技术来类比流表,那么流表就相当于 路由选路中的路由表,交换机中的MAC地址表;有了流表,交换机才能进行转发工作。

传统的路由表,MAC地址表 无法按需更改,不可编程化;现在的OpenFlow协议支持多张流表,一个交换机可能有几张流表,相比传统的交换机,多流表增加了交换机工作的复杂性:什么时候选择什么样的流表。

在SDN网络中,经常会发送的一件事情是,有需要来对流表表项进行修改,或者是当一个数据报经过一个OpenFlow的交换机的时候,能够对它的源/目的IP地址,源/目的MAC地址进行修改,导致它选择不同的路径。传统的流表,无论是静态路由表还是动态路由表均不支持;而SDN网络交换机的流表 需要支持 可修改化,可编程化。

因此,介绍流表,从以下五个方面介绍:

  • 流表
  • 流表项
  • 流表匹配
  • 如何生成流表?

在学习过传统网络之后,学习以上的五个内容,就是一个不断进行 对比 的过程。

问题1:流 Flow

(1)流 一般由网络管理员来进行定义,根据不同的流执行不同的策略。

(2)流:同一时间,经过同一个网络,具有相同属性的数据报集合。

  • 这里的相同属性,根据不同的情况,可以不同;比如我们可以定义 目的IP地址相同 的数据报集合为一个流,也可以定义 同一个协议为一个流,或者 同一个源IP地址为一个流。

(3)在SDN网络中,所有的数据都以 流 为基本单位进行处理

目前,一般情况下,我们都以源/目的IP地址,或者是端口号 定义流的相同属性。

问题2:流表 Flow Table

注意:流经过一个交换机之后,最后结果和传统的路由器相类似:转发,或者丢弃。
但是,如果一个交换机同时拥有多张流表,那么比起传统路由器 查完唯一的一张路由表 以外,还有第三种选择:继续查下一张表。

当一个流来到一个运行OpenFlow协议的交换机的时候,开始查表;基于序号的查找:根据表项的序号来进行查找。每一张Table中都有详细的表项。

(1)流表就是交换机的一张转发表;类比于 传统网络路由器的路由表,交换机的MAC地址表/CAM表。

(2)流表由一系列连续的表项(路由条目)组成。

(3)除了OpenFlow1.0版本之外,后续版本中,OpenFlow支持多流表

问题:目前的OpenFlow支持200+流表,那么比起 传统网络路由器/交换机只需要找一张表 来看 速度肯定会更慢啊?

快和慢是一个相对的概念,传统网络的路由表是仅需要查找一张表,但是它们采用的模式是 ”接力棒模式“ 或者说 分布式交互,路由更新的时间十分缓慢,路由汇聚的时间长;而SDN网络所有的路径选择,生成流表 以及相关的控制措施,都是由控制层来实现的,转发层只负责转发,并不需要生成流表,流表由控制器提供。交换机和交换机之间并不需要多的沟通。
因此,看上去SDN网络交换机的流表更多,需要查找的表项更多,但 整体的时间 是小于 传统交互式网络的路由时间 的。

2016/9/5

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

  1. SDN原理 OpenFlow协议 -2

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

  2. SDN原理 OpenFlow协议 -4

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

  3. SDN原理 OpenFlow协议 -3

    问题4:流表匹配 OF1.1版本 这是OF1.1版本的操作,引入了多流表,1.0版本并没有多流表. 多流表的匹配称为 流水线处理:交换机从流表0开始查找,按照流表序号从小到大匹配. 每个包按照优先级去 ...

  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. MySQL命令行基本命令操作

    进入命令模式后, 显示所有数据库 show databases; 选定某个数据库 use 数据库名; 创建数据库 create database 数据库名; 删除数据库 drop table 数据库名 ...

  2. 性能分析工具gprof介绍(转载)

    性能分析工具gprof介绍Ver:1.0 目录1. GPROF介绍 42. 使用步骤 43. 使用举例 43.1 测试环境 43.2 测试代码 43.3 数据分析 53.3.1 flat profil ...

  3. Gitlab邮箱配置

    一些动作会自动发邮件,比如合并代码等 未验证

  4. CH1401 兔子与兔子【字符串】【HASH】

    1401 兔子与兔子 0x10「基本数据结构」例题 描述 很久很久以前,森林里住着一群兔子.有一天,兔子们想要研究自己的 DNA 序列.我们首先选取一个好长好长的 DNA 序列(小兔子是外星生物,DN ...

  5. Team Formation---zoj3870(异或)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5518 题意就是有n个数,如果满足a^b > MAX(a, b) ...

  6. Treasure Exploration---poj2594(传递闭包Floyd+最小路径覆盖)

    题目链接:http://poj.org/problem?id=2594 在外星上有n个点需要机器人去探险,有m条单向路径.问至少需要几个机器人才能遍历完所有的点,一个点可以被多个机器人经过(这就是和单 ...

  7. Python开发【Tornado】:异步Web服务(二)

    真正的 Tornado 异步非阻塞 前言: 其中 Tornado 的定义是 Web 框架和异步网络库,其中他具备有异步非阻塞能力,能解决他两个框架请求阻塞的问题,在需要并发能力时候就应该使用 Torn ...

  8. ARM上电启动及Uboot代码分析

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/qianlong4526888/article/details/27698707 注意:由于文档是去年 ...

  9. UIView动画补充

    我自己的总结: // 第一种: Duration 时间 animations:动画体 /* [UIView animateWithDuration:4 animations:^{ CGRect rec ...

  10. DBA-常用到的动态视图分析语句

    --语句1:获取前20逻辑读取次数或逻辑写入次数或CPU 时间 ), ((CASE qs.statement_end_offset THEN DATALENGTH(qt.TEXT) ELSE qs.s ...