Open Flow协议、Open Flow交换机跟流表(FlowTable)

传统网络:传统网络的缺陷或者催生SDN的背景请参考链接https://www.cnblogs.com/031602523liu/p/8887740.html

网络设备手工维护,依靠传统网络管理软件等方式辅助人工进行维护,运维效率低下,容易出现由于个人能力的差异以及响应等原因, 影响运维的效率, 增加运维的成本;传统网络业务割接或者新业务上线周期偏长,往往大的业务割接切换,涉及非常复杂的操作,例如防火墙设备涉及多条策略的调整,出错概率大;传统网络故障定位效率不够,部分问题定位困难,往往因为工程师个人经验以及能力等原因,影响故障处理进度,最终导致严重后果,增加运维的负担。

SDN网络:

SDN 网络的主要特点是集群化、采用虚拟的软件定义网络数据流,通过图形化的方式简易的呈现,方便业务的上线以及后期的维护扩容;SDN 自动化运维方式, 与云平台进行对接, 实现网络服务的自动化。对流量路径、网络拥赛情况进行实时的自动化优化以及感知,精确感知网络延时以及丢包情况。同时对更换的备件等进行配置自动化的下发,提升运维效率,避免人为的操作引起的差错从而增加运维的成本;SDN 运维过程中,可以通过可视化的图形界面,清晰的梳理物理网络结构以及逻辑网络结构,一眼就能了解清楚业务流以及管理数据流向。可以通过 SDN 的雷达检测网络故障、 SND 仿真终端的方式模拟数据测试等方式,通过可视化的页面简单清晰的进行网络的维护工作,实现可溯源、可审计等规范的运维;SDN 的架构变化带来的网络运维变化同样非常大,基于 overlay 的网络统一接入业务、管理、存储流量、消除基础网络的二层环路。整个 overlay 的网络结构,打破了传统的网络壁垒,可实现远端数据中心大二层互联互通。在运维过程中,只需通过图形化的界面,统一调度、维护网络中的业务数据,即可实现环路检测、路径探测、切换业务流等操作,运维即方便快捷。

智能化、可视化、自动化,是后期 SDN 网络运行维护的主要方式,降低传统网络维护中的成本以及提升网络运维的效率。

Open Flow协议(数据链路层):首先,ODL控制器支持Open Flow协议。在支持SDN的物理网络中(架构图如下):

控制层和转发层之间的API叫做“南向接口”,“南向接口”是控制层与转发层之间的通信通道,以OpenFlow协议为标准,实现了控制器与交换机之间的信息交互。

OpenFlow交换机是整个OpenFlow网络的核心部件,主要管理数据层的转发。OpenFlowSwitch拥有一个FlowTable(流表),它只按照流表进行转发,FlowTable的生成、维护和下发由外置的Controller来实现。这里的FlowTable并非是指IP五元组(IP源地址、IP目的地址、协议号、源端口、目的端口),OpenFlow1.0规范定义了包括输入端口、MAC源地址、MAC目的地址、以太网类型、VLANID、IP源地址、IP目的地址、IP端口、TCP源端口、TCP目的端口在内的10个关键字(十元组)。FlowTable中的每个关键字都可以通配,网络的运营商可以决定使用何种粒度的流,比如运营商只需要根据目的IP进行路由,那么FlowTable中就可以只有IP目的地址字段是有效的,其它全为通配。传统网络中数据包的流向是人为指定的,虽然交换机、路由器拥有控制权,却没有数据流的概念,只进行数据包级别的交换;而在OpenFlow网络中,统一的Controller取代路由,决定了所有数据包在网络中传输路径。

OpenFlow采用控制和转发分离的架构,意味着MAC地址的学习由Controller来实现,VLAN和基本的路由配置也由Controller下发给OpenFlowSwitch。对于三层网络设备,各类路由器运行在Controller之上,Controller根据需要下发给相应的路由器。当一个Controller同时控制多个OpenFlowSwitch时,它们看起来就像一个大的逻辑交换机。

FlowTable的下发可以是主动的,也可以是被动的。

主动模式:Controller将自己收集的FlowTable信息主动下发给OpenFlowSwitch,随后OpenFlowSwitch可以直接根据FlowTable进行转发。

被动模式:OpenFlowSwitch收到数据包后,首先在本地的FlowTable上查找转发目标端口,如果没有匹配,则把数据包转发给Controller,由控制层决定转发端口,并下发相应的FlowTable。被动模式的好处是网络设备无需维护全部的FlowTable,只有当实际的流量产生时才向Controller获取FlowTable记录并存储,当记录老化时可以删除相应的FlowTable,故可以大大节省存储器空间。

Open Flow交换机:

OpenFlow交换机由 安全通道、流表、OpenFlow协议 三部分组成。

安全通道
安全通道是连接OpenFlow交换机和控制器通信的接口。控制器通过这个接口来控制和管理OF交换机,同时OF交换机通过这个接口将事件传给控制器,发送数据包,并接收来自控制器下发数据包。

控制器和交换机必须通过安全通道进行通信,而且进行通信的数据包必须按照OpenFlow协议规定的格式执行。

流表(FlowTable):
        流表是数据转发的依据,与交换机的mac地址转发表和IP地址路由表类似,流表中保存了网络中各个层次的网络配置信息,因此可以进行更加丰富的转发规则。交换机收到来自主机的数据包后,会在本机查询对应的动作,和对应的输出端口。

流表有很多流表项,每一条流表项都是一个转发规则。流表项的结构如下: 包头域用于数据包匹配;计数器用于统计匹配数据包个数;动作用于指示匹配数据包如何处理;流表由控制器下发给交换机。

下发模式有两种:主动模式、被动模式。

FlowVisor
FlowVisor是建立在OpenFlow协议上的网络虚拟化工具。它将物理网络划分为不同的逻辑网络,从而实现虚网划分。它让管理员通过定义流规则来管理网络,而不是修改路由器和交换机的配置。

FlowVisor部署在标准OpenFlow控制器与OpenFlow交换机之间,并对两者是透明的。它将物理网络划分为多个虚网,使每个控制器控制一个虚网,并保证各虚网相互隔离。

FlowVisor的设计原则是:

FlowVisor对控制器和交换机是透明的,它们都感知不到FlowVisor的存在
各虚网之间相互隔离,即使是广播包,各虚网的流量也相互隔离
划分虚网的策略是灵活、模块化、可扩展的
        OpenFlow消息在进行传输时,FlowVisor会根据配置策略对OpenFlow消息进行拦截、修改、转发等操作。这样,控制器就只能控制其被允许控制的流,但是控制器并不知道它所管理的网络被FlowVisor进行过分片操作。 同样,交换机发出的消息经过FlowVisor过滤后,也会被发送到相应的控制器。

Controller
         OpenFlow将控制层与数据转发层分离,其中OpenFlow交换机实现了数据转发功能,而OpenFlow控制器则实现了控制层功能。Controller通过OpenFlow协议提供的标准数据接口,对OpenFlow交换机中的流表进行控制、管理,实现了对整个网络的集中控制。 
         在Controller中,可以用python等程序对其功能进行定义,比如下发流表,对Packet_in包进行处理等。

参考文章:https://www.cnblogs.com/031602523liu/p/8887740.html

OpenFlow协议Open Flow交换机跟流表(FlowTable)相关推荐

  1. openflow协议的工作原理及流表的基本操作

    openflow协议的工作原理及流表的基本操作 1.openflow协议的工作原理 首先看一下python文件中的拓扑图,主机h1如果要与h3进行通信,h1向网络发送数据包,这里数据包发送给交换机s1 ...

  2. Floodlight 用Static Flow Pusher 改变流表规则

    实验拓扑: ==================================================================================== 1.登录minin ...

  3. Mininet+OVS:如何更改SDN交换机的流表条目上限

    前言 流表是SDN交换机转发的重要环节.当一个不匹配的流量进入交换机时,交换机通过packet-in上报控制器,控制器以flow-mod应答,并在交换机中安装对应规则. OVS中提供了对于流表的支持, ...

  4. (三)OpenFlow协议

    OpenFlow协议是基于网络中"流"的概念设计的南向接口协议.在OpenFlow引入了"流"的概念之后,控制器可以根据某次通信中"流"的第 ...

  5. SDN学习之OpenFlow协议分析

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

  6. 实时获取SDN网络拓扑中交换机流表项的思路

    一.引言 为了使对网络中异常流量的检测具有一定的主动性,例如实时的获取网络中的流表项,查阅论文和资料,提供以下几个思路. 二.通过ovs-ofctl命令 ovs-ofctl用来控制OVS作为OpenF ...

  7. 软件定义网络SDN基础实验:MiniNet常用命令、创建网络拓扑、OpenFlow流表操作

    此实验基于<软件定义网络实验1-5>,主要内容为: MiniNet常用命令 如何创建网络拓扑 OpenFlow流表操作 00x1 搭建SDN环境 SDN 环境配置:Mininet + Ry ...

  8. openflow交换机 ryu_关于OpenFlow协议

    SDN中两个重要元素:控制器(掌控全局,指挥网络内的设备工作) 交换机(转发数据) 控制器与网络设备通过OpenFlow协议进行通信 OpenFlow交换机内有一个FlowTable,交换机按照流表转 ...

  9. SDN:mininet交换机流表操作

    实验条件 虚拟机vmware workstation16中使用Ubuntu系统 下载mininet的操作: 进入root用户 输入apt-get install git 输入git clone Git ...

最新文章

  1. 记录一下matlab三维柱状图调色详细步骤
  2. torch.log函数
  3. 上海交通大学乐经良高数手写笔记-一元积分学
  4. linux32安装pgsql,Linux安装pgsql
  5. Faster R-CNN理解、讨论
  6. codeforces 939C Convenient For Everybody 简直羞耻
  7. C++ 控制结构和函数(一) —— 控制结构
  8. 第十三天-linux正则表达式及重点命令
  9. 开源软件 Cachet 被曝RCE漏洞
  10. 我的Android进阶之旅------百度地图学习:BDLocation.getLocType ( )值分析
  11. OpenGL与shader区别(三十一)
  12. Elasticsearch之sense插件的安装(图文详解)
  13. tomcat多域名配置
  14. 使用Docker部署Gitlab
  15. CDH 5.13.0安装方法
  16. 用自己的域名配置动态域名解析(DDNS) (二)
  17. 在线二维码生成工具html源码
  18. 网络安全工程师的学习路线,超级简单,收藏这一篇就够了
  19. 今天才知道!华为手机摄像头可不止能拍照,它还能提高办公效率
  20. window下Nexus私服高级搭建

热门文章

  1. 28-TCP 协议(超时与重传)
  2. 土巴兔上市再折戟,互联网家装没故事
  3. 保利威视平台:视频远程同步工具
  4. 三星p7510 android5,三星平板电脑p7510测评报价及刷机教程大放送【图文】
  5. BACnet/IP之BACnet4j学习java代码例子属性读写01
  6. 无源测向与时差定位技术研究matlab,无源定位系统中的时差测量研究
  7. 行业应对IDFA缺失各有方案 数盟方案更可靠有效
  8. 作为内网杀手的metasploit如何在外网使用呢?
  9. 设计模式: 单例模式
  10. 设计模式之简单单例设计模式