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

       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的物理网络中(架构图如下):

                                                      OpenFlow协议Open Flow交换机跟流表(FlowTable)_第1张图片

        控制层和转发层之间的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

你可能感兴趣的:(SDN,Open,Flow,流表)