一种基于SDN的流量管理系统设计与实现
2016-01-18许延伟许凯
许延伟++许凯
摘要: 该文提出了一种基于软件定义网络的流量管理系统的设计与实现,可以利用统一的控制器对全网络进行管理,实现对整个网络中的所有数据流的灵活调配与统一管理,弥补了传统网络的分布式管理无法进行最优的配置的缺陷,解决了传统网络存在的“告警-响应”的处理机制造成的反应滞后的问题。
关键词:软件定义网络;流量管理
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2015)33-0033-04
A Network Traffic Management System Based on Software Defined Network
XU Yan-wei, XU Kai
(National Engineering Research Center for Broadband Networks & Applications, Shanghai 200336, China)
Abstract : In this paper, we proposes a network traffic management system which based on software defined network. We could use unified controller to manage the whole network and all the data flow. Compared with the traditional network, this system could configure the optimum configuration to the whole network and handle network traffic alerts more quickly and efficiently.
Key words: SDN; network traffic management
1 概述
随着互联网的快速发展,网络用户和业务流量不断增加,网络资源相对不足造成数据交互速率下降,网络拥塞问题日益凸现。网络流量管理是基于网络的实时流量和流量管理策略,对数据流识别分类,实现流量控制、优化和保障关键应用的主要技术,可以保障网络运行效率和QoS(Quality of Service,服务质量)。
网络流量是网络业务最直我们接的载体,其直接可以反映网络性能的好坏。理想的网络应当应该可以承载任何突发流量情况。如果流量超过网络的负载能力,网络性能将会严重下降。
网络流量的调度问题,会直接影响到网络的性能,局部突发流量很容易导致整个网络性能的下降。在网络中,不同的业务对资源的占用不同,也会导致少数网络流占用大部分带框的情况,严重影响了网络资源的利用率。因此,合理的流量控制策略尤为重要。
2 研究现状
2.1 传统网络中流量控制
传统网络中对流量的控制多是基于IP网络流量监测技术来实现,主要分为流量监控以及流量控制两个部分。
2.1.1 流量监控
业内应用广泛的流量监测技术主要包括以下技术,直接采集法、基于NetFlow的信息采集方法、基于SNMP协议的流量采集方法。
1)直接采集法
通过直接连接在路由交换机接口上通过接受数据包,统计得到的流量信息。监测设备直接从直连的网络接口上对流量进行收集,这些都是通过对路由器/交换机等网络设备的嗅探获取流量信息。
2)基于NetFlow 的信息采集
NetFlow是思科公司开发的一种网络交换协议[1],是一种实现网络层高性能交换的技术。协议工作方式是通过网络中的交换设备,采集所有当前经过的流数据并将其存放到自身的缓存中,然后按一定的格式发送给指定的服务器。采用此方案部署网络流量监控,成本低、效率高而且对现有网络几乎没有影响,是目前大型网络流量监控的理想方案。
3)基于SNMP 的流量信息采集
SNMP(Simple Network Management Protocol) 是应用最为广泛的网络管理协议,基于SNMP协议的流量采集是指通过硬件设备提供的API接口采集有关流量的数据[2]。这种方法不需要增加任何硬件设备,也无需对网络进行调整。但是它收集到的数据信息量太少,只有最基本的流量信息比如字节量、数据包量等,这种方法不适用于一些对数据细节要求高的监控场合。
2.1.2 网络流量控制
流量控制是指按照预先定义的规则,保证网络的高效稳定的运行。现有的流量控制主要是依靠硬件设备上的不同转发算法来实现,现行算法主要分为以下。
1)队列管理算法[3]
利用缓冲区作为队列,用以音轨突发数据包。队列管理算法按照设定的规则对数据包进行识别,传递或者直接丢弃,这样可以通过控制缓冲区来避免网络拥塞现象的发生。但是这种实在网络拥塞以后才有相应,因此常被称为是被动队列管理。
2)分组调度算法[4]
为了实现基于区分不同权重的Qos功能,在实际网络中通常路由器按照设定的规则进行队列划分,同时利用分组调度算法完成队列的调度。这样就可以保证不同权重的业务流数据获取到不同的Qos服务,解决多队列竞争共享资源的问题。
2.2 软件定义网络(SDN)
传统互联网由于存在着复杂的交换机、终端、路由器以及其他设备,在这些网络设备中使用着大量封闭、专有的内部接口以及协议;所以在传统网络中的流量控制普遍效率低下而且多采用“告警-响应”的方式,网络服务在现有的网络管理方式下做出响应前,很有可能已经受到了影响。传统网络中因为存在大量不同设备,使用不同协议,所以无法对所有的网络设备进行有效的统一控制,而且网络维护成本居高不下,网络管理需要大量人工配置。为了打破这种局面,在2008年Nick McKeown 教授等人提出了软件定义网络[5-6] (Software Defined Network, SDN )的概念。
软件定义网络是把传统网络设备紧密耦合的网络架构分拆为应用、控制、数据转发3层分离的体系架构 .如图 1,其核心技术OpenFlow通过实现网络设备的控制权和转发权的相互独立,从而灵活、方便的控制数据包的转发,提供了一种可编程的网络管理模式。在软件定义网络中,控制器通过南向接口(OpenFlow协议)获取底层网络设备信息,进行统一部署、集中管理以及灵活控制,从而解决了分散网络设备的管理控制问题。同时,控制器提供了可编程扩展的北向接口,按不同需求设计的功能应用软件可以直接运行在控制器上,利用控制器对全局网络设备进行统一更新和功能升级。
3 基于SDN的流量管理系统
3.1 系统概述
SDN是一个新兴的网络架构体系,其网络设备可以由控制器统一管理,而原有的网络流量管理多为分布式管理,并且都需要增加额外的硬件设备或软件Agent系统,使得原有的方法难以应用到SDN网络架构中,形成完整有效的流量管理系统,保障网络运行效率。本文提出了一种软件定义网络中的流量管理系统和实现方法,能够系统解决传统流量管理技术无法适用SDN网络的问题,有效地提高网络运行效率。该系统,如图 2包括流量管理模块、控制器模块、OpenFlow[7]交换机模块,系统通过流量管理模块对整个网络进行统一管理。
3.2 系统的模块介绍
基于SDN的流量管理系统中,流量管理模块通过API北向接口与控制器模块相连,控制器模块通过OpenFlow协议与OpenFlow交换机模块相互通信,如图 3。
1)流量管理模块:根据全局网络流量状态以及网络拓扑信息,制定流量管理策略,自主分配资源,执行管理策略;包括网络构建模块、路由计算模块、流表管理模块。
① 网络构建模块:用于确定相应的流量管理策略,并将相应的管理策略发送给 OpenFlow流表管理模块,用户可以通过该模块选择流量管理的规则以及路由策略,实现对整个网络对流量管理控制。
② 路由计算模块:路由计算模块根据路由选择策略确定的路由算法与交换机的拓扑结构计算得到任意两个所述交换机之间的路由路径信息;路由路径信息是以任意两个交换机中一个作为源交换机到达另一个目的交换机所经过的交路径;路由计算模块根据所述流量管理规则以及根据在路由路径信息中选择合理路由信息并将合理路由信息发送给所述流表管理模块。
2)控制器模块:传达网络控制指令,收集网络信息;包含流量分析模块以及OpenFlow流表管理模块。
① 流量分析模块:主要完成计算流量速率、丢包率等反应流量状态的数据包括交换机端口流、Mac流、IP流、TCP/UDP流的流量状态。通过API接口为流量管理模块提供实时网络流量信息。
② 所述流表管理模块,用于生成以及更新OpenFlow流表,并将所述流表项发送给交换机。
3)OpenFlow交换机模块:执行网络控制;包含 OpenFlow流表、流量测量模块、数据包转发模块。
① OpenFlow流表:用于根据所属控制器下发的流表项匹配接收到的数据包包头,匹配成功,调用转发模块传输数据包;如果匹配失败,则传送到控制器中进行处理。流表项包括匹配域和动作指令。匹配域包含目的交换机的ID、计数器、指令内容包括匹配成功后转发给下一个出口的标志。
② 流量测量模块:记录经过所属交换机以及所述交换机每一个端口的数据交换状态,包括接受以及传输数据包的数目、丢包数、接受以及传输的字节数量,供流量分析模块读取。该模块读写流表项的计数器字段,可以针对交换机的每一个设备端口,每个转发队列进行统计。
③ 数据包转发模块:交换机底层用于转发数据包的模块,接受一个数据包,按照OpenFlow流表指令规则转发到特定的端口。
3.3 系统的具体实现
本文提出的SDN的流量管理系统是控制器定时读取交换机的流量状态,经过分析后交由流量管理模块,流量管理模块根据全局网络流量状态以及管理人员制定的流量管理策略,生成流量管理规则,通过OpenFlow协议配置、管理和修改交换机中的OpenFlow流标,达到自主调配网络资源的目的。该系统的具体实现方法包括如下步骤:
1)系统初始化,流量管理模块为每一个交换机生成一个唯一ID标示,该ID用于并且根据网络拓扑信息以及流量管理策略初始化所有交换机的流表。
2)系统启动后,数据包经过OpenFlow交换机时匹配OpenFlow流表项,若匹配成功,则执行转发动作并且更新流量测量模块,统计接收和传输的正确及错误的数据包数目和字节数;若匹配不成功,将数据包转发给控制器处理。
3)控制器定期向流量测定模块发送请求,读取流量统计结果并将统计数据存储到流量分析模块。
4)流量分析模块根据流流量分析模块根据流表项中的匹配域和计数器,计算交换机的每一个端口、MAC地址、IP地址、协议端口号的各个流的流量接收率、传输速率以及丢包速率,得到整个网络的流量状态。同时,将分析结果传送给流量管理模块。
5)流量管理模块根据管理人员制定的流量管理策略和接收到的流量分析结果,判断是否需要对于当前网络采取管理动作(管理动作包括丢包、限制速率等),如果需要,则形成相应的流量管理规则并返回给交换机控制器,如果不需要,则不需要进行其他动作。
6)控制器根据流量管理模块的发出的命令生成OpenFlow协议支持的相应流表项,并通过OpenFlow协议下发给相应的交换机。
7)交换机接收流量管理模块分发的流表项后,更新流表,使接收到的数据包匹配新的流表项,执行动作。
根据上述的软件定义网络中的流量管理系统的实现方法,其中:步骤5中,流量管理模块对当前网络可采取丢包、限制速率、分配空闲资源三种动作。
4 总结
本文提出了一种基于软件定义网络流量管理系统的实现方法,相比现行的硬件控制网络管理系统,我们的软件定义网络的具有以下优点:
1)软件模式的流量管理系统可控制性高、可变性好、拓展性强。
2)流量管理系统中对交换机的流量测试由流量管理模块统一管理,无需对网络设备进行逐一操作。
3)实现了全网集中式流量管理机制,统一配置调度网络资源,提高了资源的配置网络的运行效率。
4)可以在出现峰值网络流时保证数据包的有效转发,不会造成大量数据包丢弃。
基于软件定义网络的流量管理系统实现了对整个网络中所有数据流的灵活调配和统一管理;同时管控都集中于流量管理模块,整个网络流量管理措施的更新与修改只需要配置流连管理模块,简化了流量管理措施的执行。
5 致谢
本文受国家高技术研究发展计划(863计划) 项目“未来网络体系结构创新环境” (项目编号:2013AA013505)资助。
参考文献:
[1] Deri L. Increasing data center network visibility with cisco NetFlow-Lite[C].Network and Service Management (CNSM), 2011 7th International Conference on. 2011. IEEE.
[2] Abellard A, Abellard P. A factorization/defactorization methodology based on data flow petri nets for an efficient hardware/software codesign[C]. Systems, Man and Cybernetics, 2007. ISIC. IEEE International Conference on. 2007. IEEE.
[3] 孙雁飞.一种时滞网络自适应主动队列管理算法研究[J].电子与信息学报, 2006,28(10): 1940-1945.
[4] Sairam K V, Rao T J,Rao P.A packet scheduling algorithm for ad-hoc optical networks. Potentials, IEEE, 2006,25(1): 30-35.
[5] Fundation, O.N., Software-defined networking: The new norm for networks. ONF White Paper, 2012.
[6] 王文东,胡延楠. 软件定义网络, 正在进行的网络变革[J]. ZTE TECHNOLOGY JOURNAL, 2013.
[7] McKeown N. OpenFlow: enabling innovation in campus networks[J].ACM SIGCOMM Computer Communication Review, 2008,38(2): 69-74.