zoukankan      html  css  js  c++  java
  • SDN原理 OpenFlow协议 -1

    本文基于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

  • 相关阅读:
    jquery的图片异步加载
    thinkphp3.1的验证码
    android的edittext设置输入限制,只能输入数字
    android,安卓get请求的提交以及我遇到的异常
    android安卓开发基础小笔记,添加按钮事件,打开新窗体,窗体传值,回传
    php正则表达式函数
    php对浮点数小数取整,php除法取整数
    php数组全排列,元素所有组合
    javascript数组全排列,数组元素所有组合
    spring 配置中相关属性的含义:
  • 原文地址:https://www.cnblogs.com/qq952693358/p/5841186.html
Copyright © 2011-2022 走看看