Openflow网络
Openflow网络(精选6篇)
Openflow网络 第1篇
基于Open Flow的SDN(Software Define Network,软件定义网络)技术最大特点在于将控制平面和数据平面解耦,由集中化的控制器管控整个网络。控制器相当于SDN的大脑,一旦在性能上得不到有效保障,将会使整个网络的服务能力降级甚至全网瘫痪。随着网络规模的不断扩大,控制器的性能会成为网络服务质量的一大瓶颈。采用分布式控制平面加负载均衡技术是目前行之有效的方法之一。目前,对分布式控制器负载均衡的研究主要有三种方案:(1)借鉴传统的服务器集群负载均衡方案,提供一个逻辑意义上的控制平面,域内所有的流请求通过负载均衡器,由均衡器采用某种均衡策略,分发给实际的控制器,如MSCN。(2)采用流量重定向的方式减少过载控制器的负载,通过在交换机中主动或被动的方式安装一条包含CONTROLLER X行为的流表项,将该流请求重定向给其他控制器处理,如Balance Flow。(3)采用交换机迁移策略,将过载控制器的部分负载分摊给闲置控制器处理,如。以上三种方案各有利弊,第一种方案利用负载均衡器,使任务均衡的分配给每个控制器,但受均衡器性能的限制,不利于控制平面的扩展性;第二种方案通过流量重定向的方法实现控制器间的负载均衡,然而消耗了交换机TCAM表资源,并需要修改交换机的实现,设计复杂;第三种方案较为合理,通过交换机迁移来降低过载控制器的负载,只需利用Open Flow1.2中的三种角色,设计一种角色转换机制,简化了系统的复杂性,且控制平面更加灵活、可靠。
本文针对Open Flow网络中分布式控制器负载均衡问题,在第三种方案的基础上,提出了一种基于角色的分布式控制平面架构,并在此架构背景下,给出了一种基于交换机迁移的控制器负载均衡策略。
1基于角色的分布式控制器平面架构设计
1.1总体设计
整体架构如图1所示,可分为三层,从上至下分别为负载均衡管理层、控制层和基础设施层。其中基础设施层和初始SDN架构设计一样,由网络转发设备构成,负责数据包的转发;控制层由多台控制器协同工作,通过共享的全局网络视图,完成网络事件的处理;负载均衡管理层由一台负载均衡管理服务器负责监测控制器状态,适时调整网络负载。
1.2控制层
控制层为一个逻辑集中物理分布的控制平面,初始时,交换机连接到控制层的所有控制器,采用某种策略(如最近原则)选取一台为Master控制器,其余皆为Slave控制器。即每个控制器管理部分交换机,并作为其他交换机的备控制器,当数据包进入交换机,没有找到匹配的流表项时,首先将其发送给Master控制器处理,控制器根据共享的全局网络视图,计算数据流的转发路径,生成流条目下发给转发路径上的交换机。如果Master控制器发生故障或过载,则通过某种策略,将其交给slave控制器处理。
1.3负载均衡管理层
顾名思义,LBMS(Load Balance Management Server,负载均衡管理服务器)是负载分配的仲裁者,主要负责检测控制器的负载状况,发现过载控制器,选择需要迁移的对象(交换机)和接受迁移对象的目标节点(控制器)。
当控制器收到一个事件后,首先由该控制器自身处理,如果发现控制器过载,LBMS采用交换机迁移策略(详细内容在第2节阐述),选择一个闲置的控制器,即迁移的目标节点,通过控制器之间的角色转变,将交换机“迁移”给目标节点。
在LBMS中,需要维护两张表:一张是控制器节点的LIT表(Load Information Table,负载信息表),表中应包含一个迁移状态标识位,根据状态标识位来判断控制器目前处于何种状态。另一张是RMT表(Role Mapping Table,角色映射表),记录控制器与交换机的角色映射关系,RMT表是LBMS迁移决策的依据之一,当角色发送调整时,需及时更新角色映射表。
2 Open Flow网络中控制器负载均衡技术研究
2.1负载均衡总体思路
在负载均衡设计中,我们需要考虑有以下几方面的问题:
(1)触发条件。系统需要能够周期性对控制器的负载进行评估,根据预先设定的阈值,判断控制器的负载状态,根据负载状态决定是否触发迁移策略。
(2)节点选择。当控制器发生过载时,需要决定将哪个交换机(即迁移对象)进行迁移,以及将交换机迁移给哪个控制器,即迁移的目标节点。
(3)负载均衡。交换机迁移后,系统负载是否满足均衡状态。
2.2负载评估和状态判定
在Open Flow网络中,一台控制器可控制多台交换机,每台交换机产生的流请求都将汇聚到控制器端,等待控制器处理,当控制器把处理好后,将处理结果发回给该交换机和转发路径上的其他交换机,这种工作模式可以用一个队列模型来表示。在控制器端,其缓冲队列是一定的,当平均流请求到达数目大于平均流请求处理数目时,缓冲队列中排队等候处理的流请求将逐渐增加,对控制器产生的负载压力也随之增大。假设控制器在T时间内进行m次统计,每次的间隔时间为 ?t。每经过T时间后,对控制器收到的流请求数目和已处理的流请求数目求平均。为了避免极短时间流量突发现象,从采样序列中随机抽取n个样本进行计算。为了更好的描述,我们用符号定义如下参数:
pki :交换机i在第k个△t时间段内产生的流请求数目;
Pk :控制器在第k个△t时间段内接收的流请求数目;
Qk :控制器在第k个△t时间段内处理完的流请求数目;
R :控制器的缓存队列大小,即最多能容纳的流请求数目;
U :当前控制器缓存队列已使用的资源大小;
Ocur :当前资源占用率,,满足0 ≤Ocur≤1 ;
Lthreshold:缓冲区占用资源的门限值; n
:交换机i在T时间内产生的平均流请求数目;
:控制器在T时间内接收的平均流请求数目;
:控制器在T时间内处理的平均流请求数目;
它表示当时,说明系统处于稳定状态,当时,队列以的速率被填满。
控制器状态分为三类:空闲状态、过载状态和正常状态,可用如下函数表示:
其中 , 0表示空闲 状态 , 其条件为,即当缓冲队列占用率小于阈值且平均流请求到达数目小于平均流请求处理数目时,控制器处于空闲状态;1表示过载状态,其条件为即当缓冲队列占用率大于阈值且平均流请求到达数目大于平均流请求处理数目时,控制器处于过载状态;其他情况皆为正常状态,用2表示。
2.3交换机迁移策略
在交换机迁移策略中,首先应确定迁移对象。假设过载控制器用Cm表示,其管控的交换机集合用表示,根据交换机i在T时间内产生的平均流请求数目piavg进行降序排序,初始时选择piavg最大的交换机作为待迁移的对象,即,并依次遍历,直到找到合适的迁移对象和目标节点为止。
其次是控制器的选取。将所有处于空闲状态的控制器作为目标候选集,从候选集F中根据目标函数选择一台控制器cf(cf∈F)接收迁移对象,同时需要保证当目标控制器接收迁移对象后不会引起过载。目标函数定义如下:
其中为控制器ci到交换的传输时延, λ是控制器负载和时延比值,定义为, Lmax表示交换机到所有空闲节点的最大传输时延,权重系数α则用于在选取控制器时,对控制器负载和时延的权衡,当α值极大时,则可忽略时延的影响,以负载作为选取的因素,当α值极小时,则可忽略负载的影响,以时延作为选取的因素。同时满足如下约束条件,
3实验
实验采用2台IBM System x3550系列服务器(Intel Xeon5110四核处理器,内存2GB,32位Ubuntu12.04操作系统)上安装Floodlight作为控制器,4台主机(Intel i3-2310M四核处理器,内存2GB)安装Iperf模拟交换机发包。通过采用交换机迁移的负载均衡方法,能够使减少流表安装总时延,实验结果如表1所示。表中显示了迁移前后控制器的流表安装时延,在迁移前,控制器OFC-A的平均时延达到47.146ms,迁移后,虽然OFC-B的时延有所增加,但总时延减少。
4总结
OpenFlow路由机制研究 第2篇
Open Flow提出了一种方案将控制平面和数据平面在包交换网络中分开。数据平面由硬件实现, Open Flow为控制平面提供了一种通用的硬件抽象, 整个网络由网络级的操作系统 (比如NOX) 来进持管理, 网络操作系统通过Open Flow协议来控制数据平面进行包转发。
Open Flow将每一个数据平面的交换机抽象成为一个流表, 控制平面作出决策, 控制每一个流应如何转发 (可以是被动式的流到达时或主动式的流到达前) , 在流表中缓存转发决策。比如, 控制平面可以决定所有去往欧洲的HTTP流量沿同一条路径传输, 然后在这一路径上的所有交换机的流表中添加针对该流的入口。在当前的协议规范中, Open Flow对流有几种处理方式, 比如转发、多播、丢弃等。网络操作系统决定每一个流如何转发, 是否允许转发, 接收的速率。控制平面决定访问控制、路由、多播、负载均衡, 将控制平面与数据平面分离, 这就是SDN (软件定义网络) 的思路。图1是Open Flow的网络架构。
Open Flow将数据平面抽象为流表。流可以被定义为层2、层3、层4包头的任意组合。如图2所示。
到达的数据包到流表中根据流定义进行匹配。如果匹配, 执行对应的动作, 并且进行统计;如果不匹配任何流, 则封装之后发送给控制器。控制器决定如何处理该数据包并该该决策缓存在数据平面以备下相同的流到达时进行相同的处理。虽然交换机对每个包是单独处理的, 但流是是交换机维护的基本单元。控制也可以预测流量, 提前在流表中添加流定义, 以减小设置流表的延时。
2 Open Flow路由的不足
Open Flow是一种促进网络变革的关键技术, 当前的研究主要集中在园区网和数据中心的应用, 在生产网络中还很少见到支持Open Flow的层3交换机和路由器的应用。
在生产网络中, 普遍是层3交换机或者路由器。许多成熟的网络协议, 比如路由协议在这些设备中以分布式的方式运行。因此, 将Open Flow布署在生产网络中将是一个不小的挑战。已有的Open Flow网络的控制器技术, 可以通过控制器控制交换机数据转发, 但还不能适应IP网络的变化, 使得不同IP网段的子网互通。目前这种静态配置流表的方式有以下缺点:
(1) 需要人工进行配置以满足不同的网拓扑结构。
(3) 不能象动态路由协议一样根据网络拓扑变化动态调整流表。
(3) 不能动态适应IP网段地址发生改变的情况。
存在以上缺陷的根本原因, 是已有的Open Flow网络的控制器技术缺少对现有IP网络中标准路由协议的处理, 难以解决的Open Flow网络和现有IP网络的互联问题。直到现在还没有一个支持网络层路由功能的Open Flow控制器。如果出现一个控制器, 能够为Open Flow网络中提供标准的网络层路由功能的话, 不仅仅只是能够让不同网段的Open Flow网络之间能够穿过现有的IP网络互联互通, 而且能够使得Open Flow网络和现有IP网络互联互通, 并且前人在现有IP网络中所作的很多路由相关的研究:例如QOS路由、多路径路由、调整链路权重的自适应路由、身份标识和位置标识分离的路由、有线网络和无线网络混合路由、跨层路由、用户合作路由等, 都能在Open Flow平台上进行更进一步的探索和创新。在Open Flow平台可扩展、可控、可定制、可编程的优势之下, 这些现有的网络层路由相关的研究必将会得到更好的实验验证和改进。
3 Open Flow中路由实现的相关技术
3.1 Mininet
Mininet是一个网络仿真软件, 运行在Linux操作系统上, 可以创建虚拟的交换机、控制器和网络链接。Mininet仿真的交换机支持Open Flow协议, 灵活地支持自定义的路由和软件定义网络。使用Mininet可以快速在PC和笔记本上创建一个虚拟的网络环境用于网络技术的研究和开发。
Mininet提供以下功能:
(1) 提供了一个简单低成本的网络测试平台用于开发Open Flow应用。
(2) 允许多个开发者同时在同一网络拓扑下工作。
(3) 支持系统级的回归测试, 并且可重现和易于打包。
(4) 允许复杂的拓扑测试而不需要进行物理布线。
(5) 包含一个支持网络拓扑和Open Flow的命令接口用于网络级的测试和调试。
(6) 支持任意自定义的拓扑, 包含一个基本的集合和参数化定义的拓扑。
(7) 可以不用编程直接使用, 但是也提供了一Python API用于网络的创建和实验。
文中使用Mininet来仿真一个支持Open Flow协议的多台交换机组成的网络。
3.2 Pox
Pox是一个使用Python语言来快速开发网络控制器原型软件的平台, 可以帮助网络研究者快速开发Open Flow控制器, Floodlight, Trema都是基于其实现。
POX的特性如下:
(1) Python风格的Open Flow接口。
(2) 可重用的样例部件, 如路径选择, 拓扑发现等。
(3) 可以在任何平台上运行, 能够集成免安装的pypy一起发布。
(4) 可以运行在Linux、Windows、Max OS平台上。
(5) 类似NOX一样支持图形用户接口和可视化工具。
文中使用POX来编写控制器。
3.3 Quagga
Quagga是一个路由软件包, 提供TCP/IP路由服务, 支持RIP v1, RIP v2, RIPng, OSPF v2, OSPF v3, IS-IS和BGP-4+等路由协议。Quagga同样支持特殊的BGP路由反射大和路由服务器行为。除了传统的IPv4路由协议, Quagga同样支持IP v6路由协议。
Quagga基于先进的软件架构提供了一个高质量、多服务器的路由引擎。Quagga为每一种路由协议提供了一个用户接口并支持公共客户端命令接口。基于这种设计, 开发者可以很容易地增加新的协议支持, 也可以使用Qugga库作为编程接口。
在文中, 选择了Quagga作为我们的开源路由引擎。
3.4 LXC
LXC是运行在Linux操作系统上的一种半虚拟化软件, 它与vmware这些完全虚拟化的软件的区别, 在于其能提供更高的性能, 但是要求虚拟机的内核要作出修改, 所以适合运行Linux类似的开源操作系统, 而不适合Windows类似的操作系统。LXC能够在Linux环境下提供非常轻量级的容器虚拟化环境, 提供必须的网络隔离性, 且具有非常小的开销。LXC由以下几个分离的部件组成:
(1) liblxc库。
(2) 语言支持部件 (python3, lua和go) 。
(3) 用于控制虚拟机的工具集。
(4) 创建虚拟机的模板。
文中选择LXC创建虚拟机来运行软件路由器Quagga。
4 基于Open Flow路由机制的实现
将LXC与Open Flow交换机进行1:1配置, 在LXC上运行Qugga软件路由器。基于Nox实现Open Flow控制器, 控制器的路由解析模块的部分功能, 接口管理模块, 路由选择模块在实现上作为一个整体, 通过Netlink查询LXC上的路由表, 向Open Flow交换机上插入相应的流表项目, 控制其数据转发。
本方案的核心在于控制器的实现。在每台运行Quagga软件路由的LXC虚拟机中, 都有一个客户端负责采集路由表, 将路由变化信息反馈到控制器集中进行处理, 最后由控制器通过Open Flow协议控制Mininet中的交换机进行数据转发。
5 结语
本方案在虚拟机利用开源的路由软件进行路由的计算, 控制器通过采集虚拟机的路由表来实现对交换机数据流转发的控制, 最终对Open Flow进行了扩展, 实现了层3路由的功能。经实验证明, 这种方案是可行的。
参考文献
[1]http://www.openflow.org.
Openflow网络 第3篇
交换设备的商业化使得设备生产商为了各自利益而把网络设备封闭起来, 这严重阻碍了网络的创新发展。因此, 如何在不暴露网络设备内部结构的情况下, 为网络创新提供一个互联网测试平台成为了网络创新的关键。斯坦福大学的NickMcKeown教授提出的OpenFlow实现了这个目标。而且OpenFlow对商业流和实验流进行了分离, 从而使得网络创新实验不会影响网络正常的商业运作。由于OpenFlow对网络的创新发展起到了巨大的推动作用, 因此受到了广泛的关注和支持。
OpenFlow分别于2008年和2009年连续两年获得了SIGCOMM的最佳演示奖, 并且享有声望的MITTechnologyReview杂志把OpenFlow选为十大未来技术, 认为其具有实力改变未来的日常生活。此外, 乔治亚工学院、哥伦比亚大学、多伦多大学以及汉城国立大学分别以讲座和工程实践的方式开设了OpenFlow。目前, OpenFlow已经在美国斯坦福大学、Internet2、日本的JGN2plus以及其他的10~15个科研机构中部署, 并将在国家科研骨干网以及其他科研和生产中应用。
1 O penFlow网络的基本组成
OpenFlow网络由OpenFlow交换机、FlowVisor和Controller三部分组成。Open Flow交换机进行数据层的转发;FlowVisor对网络进行虚拟化;Controller对网络进行集中控制, 实现控制层的功能。OpenFlow网络的结构示意图如图一所示。
1.1 OpenFlow交换机
OpenFlow交换机是整个OpenFlow网络的核心部件, 主要管理数据层的转发。OpenFlow交换机接收到数据包后, 首先在本地的流表上查找转发目标端口, 如果没有匹配, 则把数据包转发给Controller, 由控制层决定转发端口。
1.1.1 Open Flow交换机的组成
OpenFlow交换机由流表、安全通道和OpenFlow协议三部分组成, 如图二所示。
流表由很多个流表项组成, 每个流表项就是一个转发规则。进入交换机的数据包通过查询流表来获得转发的目的端口。流表项由头域、计数器和操作组成, 其中头域是个十元组, 是流表项的标识;计数器用来计数流表项的统计数据;操作标明了与该流表项匹配的数据包应该执行的操作。
安全通道是连接OpenFlow交换机到控制器的接口。控制器通过这个接口控制和管理交换机, 同时控制器接收来自交换机的事件并向交换机发送数据包。交换机和控制器通过安全通道进行通信, 而且所有的信息必须按照OpenFlow协议规定的格式来执行。
OpenFlow协议用来描述控制器和交换机之间交互所用信息的标准, 以及控制器和交换机的接口标准。协议的核心部分是用于OpenFlow协议信息结构的集合。
OpenFlow协议支持三种信息类型:Controller-to-Switch, Asynchronous和Symmetric, 每一个类型都有多个子类型。Controller-to-Switch信息由控制器发起并且直接用于检测交换机的状态。Asynchronous信息由交换机发起并通常用于更新控制器的网络事件和改变交换机的状态。Symmetric信息可以在没有请求的情况下由控制器或交换机发起。
1.1.2 OpenFlow交换机的分类
按照对OpenFlow的支持程度, OpenFlow交换机可以分为两类:专用的OpenFlow交换机和支持OpenFlow的交换机。
专用的OpenFlow交换机是专门为支持OpenFlow而设计的。它不支持现有的商用交换机上的正常处理流程, 所有经过该交换机的数据都按照OpenFlow的模式进行转发。专用的OpenFlow交换机中不再具有控制逻辑, 因此专用的OpenFlow交换机是用来在端口间转发数据包的一个简单的路径部件。
支持OpenFlow的交换机是在商业交换机的基础上添加流表、安全通道和OpenFlow协议来获得OpenFlow特性的交换机。其既具有常用的商业交换机的转发模块, 又具有OpenFlow的转发逻辑, 因此支持OpenFlow的交换机可以采用两种不同的方式处理接收到的数据包。
按照OpenFlow交换机的发展程度来分, OpenFlow交换机也可以分为两类:“Type0”交换机和“Type1”交换机。
“Type0”交换机仅仅支持十元组以及以下四个操作:转发这个流的数据包给一个给定的端口 (或者几个端口) ;压缩并转发这个流的数据包给控制器;丢弃这个流的数据包;通过交换机的正常处理流程来转发这个流的数据包。
显然“Type0”交换机的这些功能是不能满足复杂试验要求的, 因此我们将要定义“Type1”交换机来支持更多的功能, 从而支持复杂的网络试验。“Type1”交换机将具有一个新的功能集合。
1.2 支持网络虚拟化的FlowVisor
类比计算机的虚拟化, FlowVisor就是位于硬件结构元件和软件之间的网络虚拟层。FlowVisor允许多个控制同时控制一台OpenFlow交换机, 但是每个控制器仅仅可以控制经过这个OpenFlow交换机的某一个虚拟网络 (即slice) 。因此通过FlowVisor建立的试验平台可以在不影响商业流的转发速度的情况下, 允许多个网络试验在不同的虚拟网络上同时进行。FlowVisor与一般的商用交换机是兼容的, 而不需要使用FPGA和网络处理器等可编程硬件。
1.3 Controller
OpenFlow实现了数据层和控制层的分离, 其中OpenFlow交换机进行数据层的转发, 而Controller实现了控制层的功能。Controller通过OpenFlow协议这个标准接口对OpenFlow交换机中的流表进行控制, 从而实现对整个网络进行集中控制。Controller的这一切功能都要通过运行NOX来实现, 因此NOX就像是OpenFlow网络的操作系统。此外, 在NOX上还可以运行Plug-n-serve、OpenRoads以及OpenPipes等应用程序。
Plug-n-Serve通过规定数据传输路径来控制网络以及服务器上的负载, 从而使得负载均衡并降低响应时间。OpenRoads是支持OpenFlow无线网络移动性研究的框架。OpenPipes可以在网络系统中通过移动每个子模块来测试每个子模块, 并可以决定如何划分设计单元。
2 基于O penFlow的应用
OpenFlow的应用是很广泛的, 这里我们只是列举五个比较典型的应用。
2.1 OpenFlow在校园网络中的应用
如果我们可以让校园网具有OpenFlow特征, 则可以为学生和科研人员实现新协议和新算法提供一个试验平台。OpenFlow网络试验平台不仅更接近真实网络的复杂度, 实验效果更好, 而且可以节约实验费用。现在已经有几所高校部署了OpenFlow交换机, 取得了很好的实验效果。
2.2 OpenFlow在广域网和移动网络中的应用
在广域网和移动网络中添加具有OpenFlow特征的节点, 将带来众多的好处。例如, 可以使得固网和移动网络实现无缝控制、使得VPN的管理更加灵活等。NEC已经利用Open Flow控制技术对快速、宽带的移动网络进行高效、灵活的网络管理, 并解决了两个课题。首先, 在多个移动通信方式实现动态切换。在移动通信混杂时以及通信环境恶化时, 动态切换通信方式, 将满足通信服务所需的服务品质, 提供给终端用户。其次, 移动回环网络的节能。在一天当中通信量相对较少的夜晚时段, 可以汇集网络路径, 关闭多余中转基站的电源, 从而节省能源。
2.3 OpenFlow在数据中心网络中的应用
在数据中心网络中使用OpenFlow交换机, 可以使得网络和计算资源更加紧密的联系起来并实现有效的控制。数据中心的数据流量很大, 如果不能合理分配传输路径很容易造成数据拥塞, 从而影响数据中心的高效运行。若在数据中心网络中添加OpenFlow交换机, 则可以实现路径优化以及负载均衡, 从而使得数据交换更加迅速。
2.4 OpenFlow在网络管理和安全控制中的应用
如果网络是基于OpenFlow技术实现的, 则经过OpenFlow交换机的每个新的数据流都必须由控制器来作出转发决定。在控制器中可以对这些流按照预先制定的规则进行检查, 然后由控制器指定数据流的传输路径以及流的处理策略, 从而更好的控制网络。更为重要的是, 在内网和外网的连接处应用OpenFlow交换机, 可以通过更改数据流的路径以及拒绝某些数据流来增强企业内网的安全性。
2.5 基于OpenFlow实现SDN (Software Defined Network)
在SDN中, 交换设备的数据转发层和控制层是分离的, 因此网络协议和交换策略的升级只需要改动控制层。OpenFlow在OpenFlow交换机上实现数据转发, 而在控制器上实现数据的转发控制, 从而实现数据转发层和控制层的分离。基于OpenFlow实现SDN, 则在网络中实现了软硬件的分离以及底层硬件的虚拟化, 从而为网络的发展提供一个良好的发展平台。
3 O penFlow对网络创新的影响
由于现在的网络暴露出了越来越多的弊病以及人们对网络性能需求的提高, 于是研究人员不得不把很多复杂功能加入到路由器的体系结构当中, 例如OSPF、BGP、组播、区分服务、流量工程、NAT、防火墙、MPLS等等。这就使得路由器等交换设备越来越臃肿而且性能提升的空间越来越小。
然而与网络领域的困境截然不同的是, 计算机领域实现了日新月异的发展。由于有了这样一个公用的硬件底层, 所以在软件方面, 不论是应用程序还是操作系统都取得了飞速的发展。现在很多主张重新设计计算机网络体系结构的人士认为:网络可以复制计算机领域的成功来解决目前网络所遇到的所有问题。在这种思想的指导下, 将来的网络必将是这样的:底层的数据通路 (交换机、路由器) 是“哑的、简单的、最小的”, 并定义一个对外开放的关于流表的公用的API, 同时采用控制器来控制整个网络。未来的研究人员就可以在控制器上自由的调用底层的API来编程, 从而实现网络的创新。
OpenFlow正是这种网络创新思想的强有力的推动者。OpenFlow交换机将原来完全由交换机/路由器控制的报文转发过程转化为由OpenFlow交换机 (OpenFlow Switch) 和控制服务器 (Controller) 来共同完成, 从而实现了数据转发和路由控制的分离。控制器可以通过事先规定好的接口操作来控制OpenFlow交换机中的流表, 从而达到控制数据转发的目的。
因此, OpenFlow开启了一条网络创新的道路。如果OpenFlow得到广泛的应用和推广, 则未来的网络将如曾经的计算机一样取得日新月异的发展。
4 结束语
OpenFlow是一个巧妙的折中。它使得在多样的交换机和路由器上进行试验成为可能, 而且不需要生产商公布设备的内部工作原理, 同时又不需要研究人员按照开发商指定的规范去写控制软件。
OpenFlow提供一个网络创新的平台。在这个平台上, 研究人员可以在商业网络上更真实的验证新协议和新算法来达到网络创新的目的。
OpenFlow开启了一条网络创新的新思路。它实现了数据转发和路由控制的分离, 并且定义了底层数据通路对外开放的一个操作集合。未来的研究人员就可以在控制器上自由的调用底层的操作来编程, 从而实现网络的改革创新。
摘要:随着互联网快速发展, OpenFlow技术作为软件定义网络的底层技术也是目前的研究与应用热点。OpenFlow是美国斯坦福大学于2007年提出的一种支持网络创新研究的新型网络交换模型, 该模型通过开放的流表支持用户对网络处理行为进行控制, 从而为新型互联网体系结构研究提供新的实验途径。OpenFlow提出后得到学术界和工业界的广泛关注。本文从技术内涵、设备模型和应用等多个角度对OpenFlow技术进行全面的分析, 并对其发展趋势进行了预测。
关键词:OpenFlow,交换机,网络创新
参考文献
[1]Open Flow Consortium.Open Flow Switch speccification v1.0[EB/OL].http://www.Open Flowswitch.org/.
[2]Open Flow Consortium.Open Flow Switch Specification v0.9[EB/OL].http://www.Open Flowswitch.org/.
[3]M.Casado, M.J.Freedman, J.Pettit, et al.Ethane:taking control of the enterprise[J].SIGCOMM Comput.Commun.Rev, 2012, 37 (04) :1-12, 2012.
[4]N.Gude, T.Koponen, J.Pettit, et al, NOX:towards an operating system for networks[J].SIGCOMM Comput.Commun, Rev, 2012, 38 (03) :105-110.
[5]S.Das, G.Parulkar, N.Mc Keown.“Unifying Packet and Circuit Networks”, Below IP Networking (BIPN’09) workshop held in conjunction with Globecom, 2013.
[6]钱巍巍.TD-LTE关键技术及系统结构研究[D].南京:南京邮电大学, 2011.
[7]D.Caldwell, A.Gilbert, J.Gottlieb, et al.The cutting edge of ip router configuration.SIGCOMM Computer Comm.Rev., 2004.
Openflow网络 第4篇
1 流量管理的关键技术
1.1 流量管理技术
流量管理是基于网络的流量现状和流量管控策略, 对数据流进行识别分类, 并实施流量控制、优化和对关键IT应用进行保障的相关技术。流量管理与Qo S密不可分, 衡量网络服务质量的性能指标主要有时延、抖动、丢包率、吞吐量和可用性等。
流量管理有两大关键技术, 分别是:应用和协议识别技术、队列管理机制。
(1) 应用和协议识别技术是对经过流量控制设备的数据包进行深度的拆包解析, 并与设备自身的特征数据库进行匹配。它的缺点是增大网络延迟, 使网络效率降低。
(2) 队列管理机制是对数据包的传输采用队列机制进行管理。丢弃已收到的数据包, 强制性降低某些应用所占用的带宽, 将带来下载带宽的损失。对上载方向非常适用, 却对下载方向无所作为。它存在两大问题, 一是造成整个网络的时延, 二是队列通道不能超过1000。
为此, 提出一种新型的网络交互模型——Openflow, 来解决流控问题, 它是一款开源API, 对交换机和路由器可进行编程操作。
1.2 Open Flow技术
Open Flow协议, 是一个用于控制器和交换机之间通信的开放标准[2]。通过制定的标准接口, 可从外部定义流表项, 从而避免研究者对Open Flow交换机[3]编程需求。Open Flow的协议目前分为两部分:
(1) 线路协议 (wire protocol) , 用于建立控制会话, 它定义了用于对流的修改 (flow mods) 进行交互和对统计数据进行收集的消息结构, 并定义了一个交换机 (端口和流表) 的基本结构。
(2) 配置与管理协议of-config, 它基于NETCONF来给特定的控制器分配物理的交换机端口, 并定义高可用性和控制器连接失败的行为。
1.3 Open Flow模型架构
Open Flow网络是一种标准SDN网络, 由一个包含整个网络拓扑的Open Flow控制器和根据流表转发的Open Flow交换机组成。Open Flow网络通过将由传统网关交换设备控制的报文转发行为拆分为由Open Flow交换机和控制服务器协同完成, 从根本上实现了数据转发和控制管理的分离。在这种分离架构中, 研究人员可以通过高层的控制平面灵活、高效地制定个性化的转发策略或测试新的网络协议等, 从而在现有的网络结构的基础上实现和部署新型网络架构[4]。控制器通过开放的Open Flow协议对Open Flow网络中网关设备上的流表进行编程, 决定每个数据包的传输路径。这种体系架构使得交换设备只负责对数据进行转发, 简化了底层交换设备的工作负载, 提高了交换设备的工作效率, 同时集中了网络的管理控制能力。模型架构如图1所示。
2 Open Flow的流量管理系统设计
Open Flow网络架构下的控制与转发功能分离, 控制器能在全局对拥塞做合理的控制。本文设计的流量管理系统分为三个模块:控制器端Diff Serv模型流量控制模块、交换机端Diff Serv模型流量控制模块和系统管理体系结构模块。
2.1 控制器端Diff Serv模型流量控制模块
当数据流量到达Diff Serv模型时, 控制器根据SLA (Service-Level Agreement) 标记IP分组头部的DSCP (Diff Serv Code Point) , 并将分组划分为不同等级, 并对其进行Flow分类、标记和入队操作等适当调节, 这几种机制的实现都通过Open Flow控制器上的控制程序来实现。
2.2 交换机端Diff Serv模型流量控制模块
以控制端的Flow分类、标记和入队操作为前提, Diff Serv模型根据DSCP标记决定流量的逐级跳行为PBH (Per Hop Behavior) , 对进入的流量做Traffic Shaping, 对出队的流量做调度处理。这些处理机制集成在Traffic Shaping模块、Queue Manager模块、调度模块。在这些模块中, Traffic Shaping模块对进入Diff Serv机制的流量做策略控制实现带宽限制, 而对于出队流量Queue Manager模块采用加权随机早期检测算法对拥塞数据丢弃, 调度模块则采用分层令牌桶算法进行实现。这些组件Open Flow交换机上进行实现。
2.3 流量管理系统结构的设计
总的来说, 流量管理系统中的交换设备能够在控制器的管理下, 进行基于源、目的IP的流量带宽限制策略的下发, 实现指定路径带宽速率限制。能够在控制器上进行Qo S流量管理的监控、配置和查询功能。
3 Open Flow的流量管理实现
Qo S流量管理系统总体思路就是融合Qo S控制和转发层面的各项机制, 下面提出流量系统管理系统框架设计方案, 从控制层和转发层对整个系统的功能进行分析。
3.1 系统架构
继承Open Flow网络控制平面与转发平面分离的架构, 本文设计的Qo S管理系统结构图如图2所示。系统的控制平面由Qo S管理组件、Qo SServices组件和Qo SPolicies组件, 系统的转发平面由Diff Serv流量控制模块结合Open Flow交换机组成。
(1) Qo S管理组件。Qo S Services和Qo SPloicies的添加、删除、修改、查询功能。
(2) Qo S Services组件。基于DSCP和IP头多元组匹配分类策略, 数据流入队策略。为上层控制程序提供Qo S控制接口, 提供不同的Qo S业务类型, 比如:尽力而为的业务 (best effort) 或者快速转发的业务 (Express Forwarding) 。
(3) Qo S policies组件。主要是Qo S策略的下发到Open Flow转发平面, 主要功能是限速、拥塞避免等。
根据对控制平面上三个模块的功能的详细分析, 控制平面上模块间的交互动作如下: (1) Qo S管理组件下发管理员的配置指令。 (2) Qo S Services组件读取指令, 通过流表控制程序实现Diff Serv模型的流表管理机制。 (3) Qo S policies组件读取指令, 通过查询、配置接口, 对底层交换机状态、端口配置、队列配置进行对应的操作, 完成Qo S策略的下发。
3.2 控制平面设计
(1) Qo S管理组件功能设计。Qo S管理组件通过Python编写qos manager.py脚本。通过qos manager.py脚本在命令行CLI配置相关指令, 实现对管理系统的控制与配置操作。可以直接读取输入的指令, 与Qo S控制器进行交互, 包括对Qo S控制器, 特定Qo S策略规则进行增加、修改或删除操作。Qo SServices负责对接收到指令进行解析和执行, 实现集中式控制、分布式处理。
(2) Qo S Services组件功能设计。Qo S Services主要提供基于区分服务Diff Ser模型的Flow table控制功能。当数据流量到达Diff Serv模型时, 控制器根据SLA标记IP分组头部的DSCP, 并将分组划分为不同等级, 并对其进行Flow分类、标记和入队操作等适当调节, 不同的流量具有不同的服务等级, PHB根据不同的服务等级, 进行差异性的带宽速率限制。Qo S Services组件功能是:通过分类、标记和入队不同的网络流量完成对全局结点的管控。结合网络Qo S需求, Qo S控制器可以对不同的数据流进行Open Flow协议封装, 通过安全通道下发到底层交换机, 交换机完全根据控制器下发的流表进行快速转发, 因为交换机上没有任何策略, 很大程度上减少了交换机的负担, 比传交换机更加高效的转发数据流量。
(3) Qo S policies组件。Qo S policies组件是通过编写qospath.py的Python脚本和相关控制命令来实现具体的策略下发过程。通过使用qospath.py可以实现增加、删除具体的Qo S策略。在策略中可以指定终端的源、目的IP地址, 队列类型以及指定Qo S部同的业务类型。
3.3 转发平面设计
流量管理系统转发层由Open Flow交换机和终端主机组成, 转发层不光是对网络流量简单的传输, 最主要的功能是对网络数据流量进行流制、带宽调整等操作, 这些操作是在Diff Serv区分服务机制中完成的。转发层主要提供基本的流量控制功能: (1) 限制端口带宽和速率。 (2) 限制特定用户、服务或客户端的带宽。 (3) 为不同服务等级业务流提供差别调度机制。 (4) 突发流量产生拥塞时, 能够差别处理拥塞。
4 实验结果及分析
在Linux操作系统上采用Mininet网络仿真软件, 进行Open v Switch[5]和终端主机的虚拟仿真, 使用iperf网络流量测试工具来进行功能验证。
4.1 实验过程
搭建小型网络拓扑, 如图3所示。其中Open Flow控制器为Flooodlight[7], 4台终端, 4个虚拟交换机。
4.1.1 控制层面
通过Ubuntu操作系统的console接口启动Floodlight, 然后监听后台进程的启动, 等待Open Flow交换机的连接。可通过Linux命令和Web UI查看Floodlight进程号。Qo S控制模块需要通过编写Python脚本配合命令启动。
4.1.2 转发平面
使用网络模拟器Mininet来创建转发平面。转发层和控制层结合运转的关键是Mininet远程连接到控制器, Mininet通过控制器的IP地址与远端的控制器做匹配后连接, 然后Mininet所模拟topo中所有交换机的转发策略都有控制器接管, 所有节点在有流量出发后, topo信息和终端节点信息在控制器的Web UI中可以查看到。
4.2 测试过程及结果
使用iperf来验证主机h1、h4上Diff Serv的功能和Qo S带宽速率限制策略的正确下发。结果通过两方面进行验证。
(1) 系统端口速率控制测试
设置测试脚本中h1到h4的带宽为2Mbit/s, 将h1作为客户端, h4作为服务器端进行带宽速率测试, 测试结果如图4所示。然后对调客户服务器端, 测试结果如图5所示。由测试结果可以看出带宽限速2Mbit/s的Qo S策略完成了指定源、目的IP的端口速率的限制功能。
(2) Qo SServices和Policies的验证启动Floodlight, 输入sudo./qosmanager2.py-e启动Qo S控制模块, 命令行输入./qospath2.py-a-S10.0.0.1-D10.0.0.4-N 2Mbit_1-2-J’{“eth-type”:”0x0800”, ”queue”:”2”}’下发Qo S Policies策略, 通过参数-a增加一条策略, -d删除一条策略, 如图6所示。
4.3 测试结果
综上分析可知Open Flow架构下的Qo S流量管理系统能够对它的交换设备做具体的流量策略控制和策略下发展。
5 结语
传统IP网络中不能做到很好的Qo S保证的根源是在发生局部突发流量时, 没有一个全局的信息反馈, 不能做到拥塞分流等措施来缓解拥塞。SDN中Qo S的意义在于控制面和数据面分离, SDN的控制器在全局能做到集中化的控制, 恰恰弥补了传统IP网络Qo S的短板。本文通过Open Flow技术从而实现SDN网络架构下的流量管理。
参考文献
[1]Soheil Soheil.SDN:势不可挡的网络演进大潮[J].华为《ICT新视界》, 2013 (4) :20-24.
[2]Thomas D.Nadeau;Ken Gray.软件定义网络:SDN与Open Flow解析[M].北京:人民邮电出版社, 2014.
[3]SHERWOOD R, CHAN M, COVINGTON A, et al.Carving research slices out of your production networks with Open Flow[J].ACM SIGCOMM Computer Communication Review, 2010, 40 (1) :129-130.
[4]ZUO Q, CHEN M, ZHAO G, et al.Research on Open Flow-based SDN technologies[J].Journal of Software, 2013, 24 (5) :1078-1097. (左青云, 陈鸣, 赵广松, 等.基于Open Flow的SDN技术研究[J].软件学报, 2013, 24 (5) :1078-1097.)
Openflow网络 第5篇
SDN集中化的控制简化和方便了网络管理,却也引入了新的问题,例如单点失效,处于SDN核心地位的控制器,连接着北向应用程序和南向网络转发设备,SDN控制器的失效对整个网络的影响将是毁灭性的。SDN控制器和交换机物理位置的隔绝,也降低了两者通信的可靠性,任意一种导致两者通信失效的因素都会使网络发生故障从而导致严重的报文丢失和性能下降。此外,传统网络中的链路失效和节点失效在SDN网络中依然存在,且在SDN网络中由链路失效和节点失效造成的拓扑变化情形更加多样。因此,必须设计良好的可靠性机制来应对导致SDN网络中出现的各种网络失效因素,从而保证SDN网络从失效中恢复,并具有良好的性能。
1 SDN网络失效分析及解决
1. 1 控制器失效及解决方案
作为SDN的核心组成部分,控制器连通着北向应用程序和南向转发设备,控制器的失效会使新进入网络中的流由于在交换机上找不到对应的流表项而被丢弃,导致数据丢失。目前,大概有30 多种Open Flow控制器的实现方案,然而只有Onix[7]、Kandoo[8]和一些支持Open Flow1. 0[9]的控制器支持控制器失效的恢复机制。因此,必须设计良好的可靠性机制来处理控制器失效,为此本文归纳出以下几种控制器失效解决方案。
1. 1. 1 被动复制组件
在Open Flow协议1. 2 版本中,提出了主从控制器概念,允许从控制器在主控制器失效的情况下接管网络,但Open Flow协议并没有定义控制器之间的协商和同步方式。文献[10]提出了一种新的复制组件:CPRecovery组件。CPRocovery组件是基于Primary -Backup保证控制平面的可靠性。
当主控制器运行正常时,交换机通过Packt - In消息跟主控制器通信,来更新自己的流表项,主控制器将计算的路径信息保存并加入到从控制器。而当主控制器失效时,交换机检查自己的控制器列表,选择当前主控制器的下一个控制器作为新的主控制器和交换机通信。同时,从控制间歇性的向已经失效的主控制器发送探测信息,当已失效的主控制器恢复正常时,其将作为网络中的一个从控制器,图2 展示了主从控制器的通信过程。
在被动复制中,失效检测由Open Flow协议和状态更新消息完成,影响恢复时延的主要因素为Open Flow控制器同交换机之间的Echo的时间隔,这样恢复时延
其中,TInterval表示控制器通交换机之间发送Echo消息的时间间隔,TRTT表示交换机同控制器通信的往返时延。被动复制是最常见的复制策略,文献[6]中针对企业级Open Flow网络中的控制器失效采用被动复制的可靠性机制,实验结果表明其能够符合企业级网络可靠性的要求。
1. 1. 2 主动复制组件
文献[11]参考文献[10]提出的复制技术,提出了主动复制技术,与被动复制最大的区别是,在主动复制中,交换机同时连接多个控制器来处理交换机的请求,并在主动复制策略中,所有控制器没有主从之分,其地位是平等的。
当交换机向控制器请求流表项时,所有的控制器都会处理交换机的请求,各控制器之间通过协商策略决定其中一个控制器对交换机进行响应。主动复制机制的优点是在交换机发出请求以后,各控制器均从一个状态转变为另一个状态,而无需控制器之间再进行额外的通信便可完成控制器间的同步。相比被动复制,只要有一个控制器能正常工作,则网络可靠性便可得到保证,主动复制在其中某一台控制器失效时的恢复过程也不会引起额外的恢复时延。
1. 2 链路/ 节点失效解决方案
除了控制器失效,传统网络中的节点和链路失效在Open Flow网络中依然存在,作为最有可能成为下一代网络架构的SDN网络,Open Flow必须具有较强的容错能力,并能满足电信级网络对节点和链路失效的恢复能力。在电信级网络中要求,故障恢复时间要低于50 ms[12]。目前解决链路失效和节点失效的两种典型的方式为恢复机制和保护机制。
1. 2. 1 恢复机制
恢复机制是一种动态的失效恢复机制,当链路失效时,交换机和控制器进行通信,从控制器获取新的链路来取代当前的链路,从而保证网络的可靠性。
(1)NOX控制器的恢复机制
在Open Flow协议中,失效的恢复是通过流表项中“Hard timeout”和“Idle timeout”来决定的。文献[13]介绍了NOX控制器处理失效的机制,弥补了Open Flow协议中失效检测机制的不足。NOX控制器通过二层学习交换机、二层学习物理交换机和路由模式3个模块来检测失效从而降低失效恢复的时延。在路由模式中,链路添加和失效检测依赖于发现机制和超时间隔。若控制器没有在配置的超时间隔内收到LLDP报文,则交换机认为链路失效并通知控制器。
通过以上3 种策略可实现快速的网络失效恢复,失效恢复过程可归纳如下: 1) 交换机发现链路失效,并将链路失效信息发送给控制器; 2) 控制器计算所有通过这条失效链路的主机,并为受影响的主机计算新的路径信息; 3) 移除所有收到影响的交换机上面的失效的路径; 4) 将计算的新的路径信息添加到相关的交换机上面。
(2)使用Lo S检测失效实现网络恢复
文献[14]通过对NOX控制器的路由模块进行扩展来提高网络的可靠性,在标准的Open Flow协议中,失效检测时延是通过LLDP报文和流表项的生命周期来决定的。在文献[14]中,扩展的NOX路由模块利用了Open Flow协议中Lo S失效检测机制来检测网络的失效。一个Lo S信号会使一个Open Flow端口由“Up”状态转化为“Down”状态。在通过Lo S信号获取失效以后,控制器得到链路改变的状态,然后向受到影响的交换机下发控制命令来删除受影响的流表项并且添加新的流表项。当所有的流表项均下发到交换机上时,恢复过程也就完成了。
(3)控制链路失效的恢复
文献[13]和文献[14]所介绍的两种恢复机制,均是用于数据链路的恢复,然而在如今众多的SDN架构中,交换机同控制器进行通信的链路均是In-band链路,而控制链路的恢复比数据链路的恢复过程更加复杂。由此文献[18]提出了In-band Open Flow网络的恢复机制。文献[18]利用了Open Flow协议终的“Barrier Request and Reply Messages”概念,交换机收到这种消息后,停止对Open Flow控制消息进行重排序,先执行先到来的的消息。控制链路失效的恢复过程如下:1)Lo S机制发现链路失效后报告给控制器;2)控制器根据拓扑图计算新的路径,新的恢复的路径里面的相关交换机发送Flowmod消息,之后发送Barrier Request消息;3)控制器收到交换机的Barrier Request的消息响应后,实施路径恢复。
1. 2. 2 保护机制
保护机制是一种预配置策略,在网络正常运行时,对控制器或交换机预先配置备份路径,当交换机失效时,可在短时间内启用备份路径。本文总结了以下几种保护机制:
(1)控制器层面的路径保护机制
文献[13]除了提出上述介绍的几个模块,还有一个预决策模块,通过二层学习交换机和二层物理交换机模块的LLDP报文,失效被发现并发送给控制器,控制器计算终端节点之间的新路径来恢复网络,但当网络拓扑较大时,计算新的路径可能是一个耗时的操作,并会增加恢复时延。为降低恢复时延,在网络正常时,控制器预先计算连接两个终端节点的多条路径,并将这些路径信息赋予不同的优先级存储在控制器中,当失效出现时,控制器可选择优先级低于当前失效路径的路径信息并将其发送给相关交换机。
没有采用控制器层面的保护机制时,失效的恢复时延如式( 2) 所示,在采用控制层面保护机制的恢复时延可由式( 3) 表示,其中TLLDP表示LLDP失效检测时延,TCtl表示控制器计算备份路径的计算时延,TRTT表示交换机控制器通信时的往返时延,TInstall表示新路径安装到交换机所消耗的时间。从式( 2) 和式( 3) 中可看出,采用控制器层面的保护机制减少了控制器的计算时延
(2)基于路径的保护机制
由于恢复机制所需的时延较长,所以报文丢失率较高,因此文献[14]提出了基于路径的保护机制,去除了交换机与控制器通信的过程,因此时延大幅降低。
在文献[14]所采用的保护机制中,控制器预先计算两个节点之间的备份路径,并将其和工作路径下发给交换机。为实现保护机制,文献[14]利用Open Flow协议1. 1[15]Group Table的概念,在文献[14]中一个Group Table存储同一个交换机的多个端口号,当工作端口失效时,Group Table中的其他端口号将作为流的输出端口。BFD[16]会话在同一个路径上的多个交换机之间建立,交换机可通过BFD来检测到失效,并改变当前流关联Group Table里面的交换机端口号的状态,启用备份端口实现网络恢复。
基于路径的保护机制的恢复时延如式( 4) 所示,其中TBFD为BFD检测路径失效的时延,相比式( 3) ,去除了与控制器通信的时延,大幅降低了恢复时延
(3)基于链路的保护机制
文献[17]对文献[14]所提出的保护机制进行了改进,主要改进了失效检测。文献[17]采用每链路BFD会话检测失效,而文献[14]采用每路径BFD会话检测。相比每路径BFD会话检测机制,每链路BFD会话检测机制有以下优点:1)会话往返时延(RTT)和传输间隔降低;2)消息复杂度和网络负荷降低。在每路径BFD会话的情形下,经过每条链路的BFD会话高达O(N×N),而每个节点要维护O(N)个活跃的BFD会话(N代表一条路径所经过交换机节点数量),而每链路BFD会话将经过每条链路的BFD回话数量降低至1,从而降低时延。
2 优化控制器部署
恢复和保护机制针对的情况为局部链路或节点失效时,对网络的可靠性所作出的补救措施。其以恢复时延为衡量标准,并未考虑在网络部署阶段对网络失效的预防措施。为此,文献[19 ~ 20]提出了优化控制器部署来增强网络可靠性的解决方案,在网络部署阶段就采取措施应对可能发生的失效。
2. 1 提高节点受保护率
文献[19]提出交换机节点保护的概念,并将节点保护率作为网络可靠性的衡量指标,节点保护率越高,网络可靠性就越强。为计算节点保护率,文献[19]提出了受保护交换机、节点权重和控制路由树的权重3个概念,其中控制路由树权重为不受保护节点的数量的总和,这个值由 Γ( T) 表示。
文献[19]所提到的节点保护率与 Γ( T) 的大小有关,Γ( T) 越小,网络可靠性就越高,这样网络的可靠性就转化为求解min( Γ( T) ) 。min( Γ( T) ) 的求解过程依赖于控制路由树的构建和控制器的摆放位置,因此min( Γ( T) ) 的求解可分为两种情况:
( 1) 当路由树的构建确定时,通过比较控制器不同摆放位置下 Γ( T) 的大小来确定控制器的最佳摆放位置,文献[19]运用迭代计算和贪婪算法来确定控制器的摆放位置,其中贪婪算法更适合规模较大的网络;
( 2) 当控制器摆放位置确定时,通过查找最优路由树来使网络的节点保护率最高,由于此时求min( Γ( T)是一个NP - Hard问题,文献[19]对STP进行改进,提出用Greedy Routing Tree算法来生成最佳路由树。
2. 2 分析级联网络失效因素
文献[20]将Open Flow网络抽象为用于转发数据的Switch - Switch( SS) 网络和用于网络控制的Controller - Switch( CS) 网络。并定义CS和SS网络之间节点和链路的依赖关系。根据这些依赖关系,Open Flow网络中一个CS或SS网络中的链路或者节点失效会导致所依赖的节点或者链路的级联失效,进而失效会传播影响其他节点或链路,最终网络会达到一个稳定状态,在稳定状态下,不受影响的节点和链路越多,则网络的可靠性越强。
文献[20]所提出的控制器摆放位置算法分为两步: ( 1) 利用文献[21]提到的贪婪模块优化算法将生成的层次树划分为k部分,每部分均是由一个控制器管理的子网; ( 2) 在每个子网内,选择一个节点摆放位置,使这个位置能在这个子网中最大化的靠近中部,这个节点位置和控制器信息即为输出信息。
3 结束语
本文基于Open Flow的SDN网络的可靠性问题入手,分析导致网络不可靠性的因素,从控制器、链路/节点失效和控制器部署3 个方面总结了当前Open Flow可靠性问题的对应解决方案,表1 展示了其所用的失效检测机制,以及可靠性机制的实施阶段。
文中所总结的可靠性方案为实际应用中部署Open Flow网络提供了良好的建议,但并不完善,仍有提升空间。首先,本文所总结的方案只是解决了单一失效的恢复机制,并未考虑同时有多种类型失效的恢复机制; 其次,SDN网络的性能指标不仅时延一种,而文中所列出的方案只是将恢复时延或节点保护率作为指标来衡量网络的可靠性,文献[22]虽提出了用多个指标衡量网络可靠性的机制,但其应用具有较大局限性; 此外,对于分布式控制器中东西向链路失效的解决方案也是未来需解决的问题。以上几点将是下一阶段Open Flow在可靠性方面的研究方向。
摘要:软定义网络(SDN)是一种新型的网络架构,其将控制平面和数据转发平面分离,并为网络管理提供了可编程的接口,简化了网络管理。随着基于OpenFlow的SDN技术在现实中的广泛应用,其所存在的问题也凸显出来,可靠性就是其中的一个重要方面。文中针对基于OpenFlow的SDN在可靠性方面存在的问题,分析总结了导致OpenFlow网络失效的因素,将网络失效划分为控制器、链路和节点失效,并归纳出相应的解决方案,探讨了未来基于OpenFlow的SDN在可靠性方面的研究方向与趋势。
Openflow网络 第6篇
随着互联网的发展, 今天的互联网业务对互联网提出了越来越高的传输质量要求, 如何修改互联网以满足新业务的需求, 出现了改良派和改革派两种不同的做法。改良派认为可以在原有的基础设施上添加新的协议来解决问题, 改革派则认为必须推倒一切重来。改革派向自己提出这样的两个问题:“就自己目前掌握的知识, 如果我从一个全新的开始设计互联网, 我会怎么做”和“15年后的互联网应该是什么样子”。
本文组织如下, 第一节介绍Open Flow与聚类算法相关研究, 第二节介绍Open Flow-Kmeans算法, 第三节测试Open Flow-Kmeans算法性能, 最后总结全文。
1 相关研究
1.1 下一代网络:Open Flow
Open Flow网络由Open Flow交换机、Flow Visor和Controller三部分组成。Open Flow交换机进行数据层的转发;Flow Visor对网络进行虚拟化;Controller对网络进行集中控制, 实现控制层的功能。
Open Flow交换机由流表、安全通道和Open Flow协议三部分组成。
安全通道是连接Open Flow交换机到控制器的接口。控制器通过这个接口控制和管理交换机, 同时控制器接收来自交换机的事件并向交换机发送数据包。交换机和控制器通过安全通道进行通信, 而且所有的信息必须按照Open Flow协议规定的格式来执行。
Open Flow协议用来描述控制器和交换机之间交互所用信息的标准, 以及控制器和交换机的接口标准。协议的核心部分是用于Open Flow协议信息结构的集合。
Open Flow协议支持三种信息类型:Controller-toSwitch, Asynchronous和Symmetric, 每一个类型都有多个子类型。Controller-to-Switch信息由控制器发起并且直接用于检测交换机的状态。Asynchronous信息由交换机发起并通常用于更新控制器的网络事件和改变交换机的状态。Symmetric信息可以在没有请求的情况下由控制器或交换机发起。
1.2 聚类算法
根据聚类的基本工作方式, 聚类大致可以分为以距离测度为基础的工作方式, 还有以分布为基础的工作方式。四类聚类方式如图1所示。
以距离为测度的聚类, 例如K-means, 是寻找各簇的中心, 通过减少总的误差, 来提高学习机的准确率。K-means的优点是简单、但是由于过于依赖距离簇中心的距离, 所以在两个分布大小不一样的分布中, 对于中间附近的点很容易造成误判。层次聚类 (Hierarchical clustering) 是按照最低门限, 将各样本中距离最近的分为一簇来进行分簇。这种聚类方式类似决策树, 坏处是很容易将一个分布错误的当作几个分布来对待。DBSCAN是在一个联通区域中, 按照最少联通点进行聚类的方法。缺点是过分依赖距离公式, 会在高维数据中失效。
2 Open Flow-Kmeans流表聚类算法
本节主要介绍Open Flow-Kmeans流表聚类算法, 该算法通过对输入的流表信息, 进行聚类分析, 系统依据聚类分析的结果, 采取合适的动作, 相较于传统的依据规则写入方式转发流, 该方法具有自主学习能力, 能够发现潜在规则, 更能满足下一代互联网的需求。
下面将介绍Open Flow-Kmeans算法的具体步骤:
(1) 选定K个中心μk的初值;
(2) 将每个数据点归类到离它最近的那个中心点所代表的cluster中;
(4) 重复第二步, 直至迭代了最大的步数或者前后的的值相差小于一个阈值为止。
3 Open Flow-Kmeans流表聚类算法实验
实验采用Intel i7 3.4GHz处理器, 4GB内存, 分别选取流表数目为1000至30000条, 测试Open Flow-Kmean流表聚类算法归类准确度, 实验表明, 该算法归类准确度相较于传统算法, 整体准确度提升27.64%, 准确度测试如图2所示。
4 总结
本文通过对Open Flow和聚类算法进行研究, 提出并实现Open Flow-Kmeans流表聚类算法, 该算法在复杂环境下, 能够有效提升系统对流的转发准确度, 提升系统的综合性能, 在今后的研究中, 将侧重于优化算法, 以及对规则的修改, 进一步提升和改善网络状况。
摘要:互联网的发展, 对传输质量要求越来愈高, 本文针对OpenFlow流表转发, 提出并实现OpenFlow-Kmeans流表聚类转发算法, 该算法提升准确率27.64%, 实验表明, 该算法能够满足复杂环境下, 对流表的分类转发需求。
关键词:OpenFlow,Kmeans,聚类算法
参考文献
[1]McKeown N, Anderson T, Balakrishnan H, et al.Ope nFlow:enabling innovation in campus networks[J].ACM SIGCOMM Computer Communication Review, 2008, 38 (2) :69-74.
[2]Sherwood R, Chan M, Covington A, et al.Carving research slices out of your production networks with OpenFlow[J].ACM SIGCOMM Computer Communication Review, 2010, 40 (1) :129-130.
[3]Naous J, Erickson D, Covington G A, et al.Implementing an OpenFlow switch on the NetFPGA platform[C]//Proceedings of the 4th ACM/IEEE Symposium on Architectures for Networking and Communications Systems.ACM, 2008:1-9.
Openflow网络
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。


