SDN环境下网络流量监测与控制系统设计
2015-02-28刘川娄征黄辉邓辉
刘川,娄征,黄辉,邓辉
(1.国网智能电网研究院,江苏 南京210003;2.国网南京供电公司,江苏 南京210000)
1 引言
以互联网为代表的信息网络在经济和社会发展中起到了越来越重要的作用。在信息网络不断发展的同时,网络安全问题日益成为人们关注的焦点。非法访问、恶意攻击等都容易影响网络的正常运行。目前,DoS(denial of service,拒绝服务)攻击已经成为现有信息网络的一个主要威胁,攻击者常采用IP地址欺骗的方式,很难定位攻击者[1]。对于DoS攻击的防御主要难点在于区分异常流量和正常流量。同时,传统互联网架构下,网络设备很难通过协作方式应对来自不同地点的DDoS(distributed denial of service,分布式拒绝服务)攻击流量。
SDN(software defined networking,软件定义网络)提出了一种新型的网络管理模式[2]。SDN的核心是控制与数据相分离,控制器具有全局的拓扑视野,可以通过下发流表对网络中的数据流进行精细化处理,交换机根据流表对经过的数据流进行指定的操作。控制层与数据层之间采用开放的统一接口(如OpenFlow等)进行交互[3,4]。运营商和科研人员可通过控制器掌握全局网络信息,便于管理配置网络和部署新协议[5]。网络流量监控通过实时收集和监视网络数据分组的流量信息,检查是否有违反安全策略的行为和网络工作异常的迹象,网络流量监控是一种分析网络状况的有效方法。由于SDN具有可软件定义的特性和控制与转发相分离的特点,SDN环境下的网络流量测控与传统的IP网络具有很大的不同。
基于SDN的网络流量监控可以先通过SDN控制器获取交换机端的数据分组,然后利用控制器上的应用模块进行分析处理。参考文献[6]通过对SDN控制器收到的请求分组进行熵值计算,检测网络中的异常行为。参考文献[6]的研究是利用SDN控制器本身对数据平面流量进行收集和处理,不能完整地对流经SDN的流量进行监控,并且在一定程度上增加了控制器的开销。
本文提出了一种基于sFlow技术的SDN流量监测与控制系统。借助sFlow数据监测的功能,把数据监测的过程从SDN控制平面分离出来,从而缓解SDN控制器处理数据分组的压力。sFlow实时地向SDN控制器通告交换设备各端口的流量情况,SDN控制器根据通告修改流表规则并下发新的流表,从而对攻击行为进行管控。通过构建OpenDaylight控制器与Mininet交换模拟器相结合的实验环境,研究了SDN环境下网络交换机的转发特性,并通过模拟拒绝服务攻击验证了流量监控系统的有效性。
2 SDN下网络流量监测与控制系统设计
本系统基于SDN架构,系统的流量监测与控制功能可以有效拦截DoS攻击流量。sFlow是一种以设备端口为基本单元的流量监控技术,能够在整个网络中以连续实时的方式完全监视每一个端口。sFlow组件向SDN控制器通告实时的流量情况,当有攻击行为发生时,将产生异常流量通告。SDN控制器根据通告内容修改流表规则,并下发新的流表,从而对SDN的流量进行管控。
2.1 系统结构
SDN环境下网络流量监测与控制系统由流量监控模块、数据转发层和控制层组成。系统结构如图1所示。
图1 SDN环境下网络流量监测与控制系统结构
控制器是整个网络的核心部件,主要管理数据层的转发。控制器与OpenFlow交换机经由控制数据面接口(南向接口)交互。控制器与应用层的各种应用软件经由开放API(北向接口)交互。控制器通过OpenFlow标准协议更新OpenFlow交换机中的流表,从而实现对整个网络流量的集中管控。
数据转发层由支持OpenFlow技术的交换机组成。OpenFlow交换机接收到数据报文后,首先查找流表,找到转发报文的匹配表项,并执行相关动作。若找不到匹配表项,则把报文转发给控制层,由控制器决定转发行为。
流量监控模块由流量采集、流量分析和流量通告3部分构成。首先通过运行流量监控脚本进行流量采集,然后通过流量分析工具进行流量分析,当发现交换机某个端口的流量超过已定义的阈值时,则通过脚本形成一个异常流量通告,并通过OpenFlow协议向控制器提交流量通告。假如控制器收到异常流量通告,则将产生并下发新流表,要求有异常流量的端口丢弃异常流量,从而防御DoS攻击。
2.2 系统工作流程
系统的工作可分为流量监测与流量控制两部分。其中,流量监测工作从SDN的控制层面分离出来,通过sFlow流量监测设备实现,但流量控制工作的主体仍然是SDN控制层面。基于sFlow技术的流量监测设备分为两类:一类是sFlow代理,负责采集交换设备上每个端口的流量并形成sFlow数据分组;另一类是sFlow采集器,负责接收sFlow数据分组。实际应用中,sFlow代理可以嵌入网络路由和交换设备ASIC中,不需要购买额外的探针和旁路器就能全面监视整个网络。
流量监测是指通过sFlow代理和sFlow采集器的协作来监测各端口流量,从而及时发现异常流量。流量监测的工作流程如图2所示。sFlow代理采集交换设备上每个端口的流量并形成sFlow数据分组,sFlow采集器通过对sFlow数据分组进行分析,获知交换设备上每个端口的实时流量,判断端口流量是否超过阈值,并向控制器发送相应的流量通告。
图2 SDN环境下网络流量监测工作流程
流量控制是指SDN控制器根据流量监测的结果调整流表项,并下发流表,从而实现对整个网络流量的管控。流量控制部分的工作流程如图3所示。SDN控制器收到来自sFlow采集器的流量通告后,根据通告内容设置相应动作,生成相应流表项,向OpenFlow交换机下发流表。
3 实验验证
3.1 网络拓扑
实验在两台安装ubuntu 14.04系统的虚拟机下运行,使用OpenDaylight作为控制器。网络拓扑基于Mininet平台搭建,通过Python在网络拓扑中定义两台OpenFlow交换机和4台主机。网络拓扑如图4所示。Mininet中的网络流量通过sFlow代理传给sFlow收集器,sFlow收集器通过数据分析,将交换机各个端口的流量图形化显示,并且向控制器发送各端口的流量通告。
图3 SDN环境下网络流量控制工作流程
图4 网络拓扑示意
3.2 关键步骤及结果
(1)部署sFlow采集器
下载sFlow代码到一台虚拟机,安装并启动sFlow采集器。sFlow采集器默认监听端口为6343,可以通过虚拟机内置的浏览器打开监控页面。
(2)部署sFlow代理
在OVS(open vSwitch,开源虚拟交换机)上配置sFlow代理,配置后可以看到已配置的代理信息,如图5所示。
(3)执行流量监控脚本
流量监控脚本的作用:首先,在sFlow采集器设定端口流量的阈值(这里设为1 500 KB/s)。然后,通过sFlow代理获取Mininet拓扑里所有交换机端口的每秒流量,若端口每秒流量超过阈值,就认为是异常流量。最后,利用脚本生成向OpenDaylight控制器的流量通告。
(4)模拟DoS攻击
实验通过ping flooding模拟DoS攻击流量,采取host1向host2泛洪的方式,监测交换机S3的端口eth1的流量变化。结果如图6所示。可以看到,未运行流量监控前,host1向host2泛洪的数据分组达到了大约15 000个/s。
(5)流量监控
运行脚本,激活流量监测与控制功能。监控系统发现在交换机S3的eth1端口有流量攻击,将产生异常流量报告,如图7所示。
OpenDaylight控制器将根据异常流量通告,修改与S3的eth1接口有关的流表项并下发流表,丢弃正在被攻击的端口流量。运行流量监控后,S3的eth1端口的流量如图8所示。可以看到,在10∶17时刻运行脚本后,host1向host2泛洪的分组被迅速地丢弃。
图5 sFlow代理的部署信息
图6 运行流量监控前被攻击交换机的端口流量
图7 流量监控系统发现被攻击交换机的端口有异常流量
图8 运行流量监控后被攻击交换机的端口流量
4 结束语
本文针对SDN架构,提出了一种基于sFlow技术的流量监测与控制系统。该系统可以对网络中每一个端口的实时流量进行监测,并通过控制器实现对整个网络的流量管控。通过构建OpenDaylight控制器与Mininet交换模拟器相结合的实验环境,验证了该系统在流量监控方面的有效性和准确性。利用该系统还可以实现更多的服务,比如负载均衡、QoS等。下一步工作是对流量监测结果进行细化,对流入网络的流量进行模型匹配,准确地定位攻击类型,使得控制器可以根据攻击类型生成并下发相应的流表。
[1]孙长华,刘斌.分布式拒绝服务攻击研究新进展综述[J].电子学报.SUN C H,LIU B.New process review of distributed denial of service attack.[J].Journal of Electron ics,2009,37(7):1562-1570.
[2]Stanford University.Clean slate program[EB/OL].[2015-10-01].http://cleanslate.stanford.edu/.
[3]MCKEOWN N,ANDERSON T,BALAKRISHNAN H,et al.OpenFlow:enabling innovation in campus networks[J].ACM Sigcomm CCR,2008,38(2):69-74.
[4]张朝昆,崔勇,唐翯祎,等.软件定义网络(SDN)研究进展[J].软件学报,2015,26(1):62-81.ZHANG C K,CUI Y,TANG H Y,et al.Research progress of software defined networking[J].Journal of Software,2015,26(1):62-81.
[5]NUNES B A A,MENDONCA M,NGUYEN X N,et al.A survey of software-defined networking:past,present,and future of programmable networks[J].IEEE Communications Surveys and Tutorials,2014,16(3):1617-1634.
[6]MOUSAVI S M,ST-HILAIRE M.Early detection of DDoS attacks against SDN controllers[C]//2015 International Conference on Computing,Networking and Communications,Feb 16-19,2015,Garden Grove,CA,USA.New Jersey:IEEE Press,2015:77-81.