劉川,婁征,黃輝,鄧輝
(1.國網(wǎng)智能電網(wǎng)研究院,江蘇 南京210003;2.國網(wǎng)南京供電公司,江蘇 南京210000)
以互聯(lián)網(wǎng)為代表的信息網(wǎng)絡在經(jīng)濟和社會發(fā)展中起到了越來越重要的作用。在信息網(wǎng)絡不斷發(fā)展的同時,網(wǎng)絡安全問題日益成為人們關注的焦點。非法訪問、惡意攻擊等都容易影響網(wǎng)絡的正常運行。目前,DoS(denial of service,拒絕服務)攻擊已經(jīng)成為現(xiàn)有信息網(wǎng)絡的一個主要威脅,攻擊者常采用IP地址欺騙的方式,很難定位攻擊者[1]。對于DoS攻擊的防御主要難點在于區(qū)分異常流量和正常流量。同時,傳統(tǒng)互聯(lián)網(wǎng)架構下,網(wǎng)絡設備很難通過協(xié)作方式應對來自不同地點的DDoS(distributed denial of service,分布式拒絕服務)攻擊流量。
SDN(software defined networking,軟件定義網(wǎng)絡)提出了一種新型的網(wǎng)絡管理模式[2]。SDN的核心是控制與數(shù)據(jù)相分離,控制器具有全局的拓撲視野,可以通過下發(fā)流表對網(wǎng)絡中的數(shù)據(jù)流進行精細化處理,交換機根據(jù)流表對經(jīng)過的數(shù)據(jù)流進行指定的操作。控制層與數(shù)據(jù)層之間采用開放的統(tǒng)一接口(如OpenFlow等)進行交互[3,4]。運營商和科研人員可通過控制器掌握全局網(wǎng)絡信息,便于管理配置網(wǎng)絡和部署新協(xié)議[5]。網(wǎng)絡流量監(jiān)控通過實時收集和監(jiān)視網(wǎng)絡數(shù)據(jù)分組的流量信息,檢查是否有違反安全策略的行為和網(wǎng)絡工作異常的跡象,網(wǎng)絡流量監(jiān)控是一種分析網(wǎng)絡狀況的有效方法。由于SDN具有可軟件定義的特性和控制與轉(zhuǎn)發(fā)相分離的特點,SDN環(huán)境下的網(wǎng)絡流量測控與傳統(tǒng)的IP網(wǎng)絡具有很大的不同。
基于SDN的網(wǎng)絡流量監(jiān)控可以先通過SDN控制器獲取交換機端的數(shù)據(jù)分組,然后利用控制器上的應用模塊進行分析處理。參考文獻[6]通過對SDN控制器收到的請求分組進行熵值計算,檢測網(wǎng)絡中的異常行為。參考文獻[6]的研究是利用SDN控制器本身對數(shù)據(jù)平面流量進行收集和處理,不能完整地對流經(jīng)SDN的流量進行監(jiān)控,并且在一定程度上增加了控制器的開銷。
本文提出了一種基于sFlow技術的SDN流量監(jiān)測與控制系統(tǒng)。借助sFlow數(shù)據(jù)監(jiān)測的功能,把數(shù)據(jù)監(jiān)測的過程從SDN控制平面分離出來,從而緩解SDN控制器處理數(shù)據(jù)分組的壓力。sFlow實時地向SDN控制器通告交換設備各端口的流量情況,SDN控制器根據(jù)通告修改流表規(guī)則并下發(fā)新的流表,從而對攻擊行為進行管控。通過構建OpenDaylight控制器與Mininet交換模擬器相結(jié)合的實驗環(huán)境,研究了SDN環(huán)境下網(wǎng)絡交換機的轉(zhuǎn)發(fā)特性,并通過模擬拒絕服務攻擊驗證了流量監(jiān)控系統(tǒng)的有效性。
本系統(tǒng)基于SDN架構,系統(tǒng)的流量監(jiān)測與控制功能可以有效攔截DoS攻擊流量。sFlow是一種以設備端口為基本單元的流量監(jiān)控技術,能夠在整個網(wǎng)絡中以連續(xù)實時的方式完全監(jiān)視每一個端口。sFlow組件向SDN控制器通告實時的流量情況,當有攻擊行為發(fā)生時,將產(chǎn)生異常流量通告。SDN控制器根據(jù)通告內(nèi)容修改流表規(guī)則,并下發(fā)新的流表,從而對SDN的流量進行管控。
SDN環(huán)境下網(wǎng)絡流量監(jiān)測與控制系統(tǒng)由流量監(jiān)控模塊、數(shù)據(jù)轉(zhuǎn)發(fā)層和控制層組成。系統(tǒng)結(jié)構如圖1所示。
圖1 SDN環(huán)境下網(wǎng)絡流量監(jiān)測與控制系統(tǒng)結(jié)構
控制器是整個網(wǎng)絡的核心部件,主要管理數(shù)據(jù)層的轉(zhuǎn)發(fā)??刂破髋cOpenFlow交換機經(jīng)由控制數(shù)據(jù)面接口(南向接口)交互??刂破髋c應用層的各種應用軟件經(jīng)由開放API(北向接口)交互??刂破魍ㄟ^OpenFlow標準協(xié)議更新OpenFlow交換機中的流表,從而實現(xiàn)對整個網(wǎng)絡流量的集中管控。
數(shù)據(jù)轉(zhuǎn)發(fā)層由支持OpenFlow技術的交換機組成。OpenFlow交換機接收到數(shù)據(jù)報文后,首先查找流表,找到轉(zhuǎn)發(fā)報文的匹配表項,并執(zhí)行相關動作。若找不到匹配表項,則把報文轉(zhuǎn)發(fā)給控制層,由控制器決定轉(zhuǎn)發(fā)行為。
流量監(jiān)控模塊由流量采集、流量分析和流量通告3部分構成。首先通過運行流量監(jiān)控腳本進行流量采集,然后通過流量分析工具進行流量分析,當發(fā)現(xiàn)交換機某個端口的流量超過已定義的閾值時,則通過腳本形成一個異常流量通告,并通過OpenFlow協(xié)議向控制器提交流量通告。假如控制器收到異常流量通告,則將產(chǎn)生并下發(fā)新流表,要求有異常流量的端口丟棄異常流量,從而防御DoS攻擊。
系統(tǒng)的工作可分為流量監(jiān)測與流量控制兩部分。其中,流量監(jiān)測工作從SDN的控制層面分離出來,通過sFlow流量監(jiān)測設備實現(xiàn),但流量控制工作的主體仍然是SDN控制層面?;趕Flow技術的流量監(jiān)測設備分為兩類:一類是sFlow代理,負責采集交換設備上每個端口的流量并形成sFlow數(shù)據(jù)分組;另一類是sFlow采集器,負責接收sFlow數(shù)據(jù)分組。實際應用中,sFlow代理可以嵌入網(wǎng)絡路由和交換設備ASIC中,不需要購買額外的探針和旁路器就能全面監(jiān)視整個網(wǎng)絡。
流量監(jiān)測是指通過sFlow代理和sFlow采集器的協(xié)作來監(jiān)測各端口流量,從而及時發(fā)現(xiàn)異常流量。流量監(jiān)測的工作流程如圖2所示。sFlow代理采集交換設備上每個端口的流量并形成sFlow數(shù)據(jù)分組,sFlow采集器通過對sFlow數(shù)據(jù)分組進行分析,獲知交換設備上每個端口的實時流量,判斷端口流量是否超過閾值,并向控制器發(fā)送相應的流量通告。
圖2 SDN環(huán)境下網(wǎng)絡流量監(jiān)測工作流程
流量控制是指SDN控制器根據(jù)流量監(jiān)測的結(jié)果調(diào)整流表項,并下發(fā)流表,從而實現(xiàn)對整個網(wǎng)絡流量的管控。流量控制部分的工作流程如圖3所示。SDN控制器收到來自sFlow采集器的流量通告后,根據(jù)通告內(nèi)容設置相應動作,生成相應流表項,向OpenFlow交換機下發(fā)流表。
實驗在兩臺安裝ubuntu 14.04系統(tǒng)的虛擬機下運行,使用OpenDaylight作為控制器。網(wǎng)絡拓撲基于Mininet平臺搭建,通過Python在網(wǎng)絡拓撲中定義兩臺OpenFlow交換機和4臺主機。網(wǎng)絡拓撲如圖4所示。Mininet中的網(wǎng)絡流量通過sFlow代理傳給sFlow收集器,sFlow收集器通過數(shù)據(jù)分析,將交換機各個端口的流量圖形化顯示,并且向控制器發(fā)送各端口的流量通告。
圖3 SDN環(huán)境下網(wǎng)絡流量控制工作流程
圖4 網(wǎng)絡拓撲示意
(1)部署sFlow采集器
下載sFlow代碼到一臺虛擬機,安裝并啟動sFlow采集器。sFlow采集器默認監(jiān)聽端口為6343,可以通過虛擬機內(nèi)置的瀏覽器打開監(jiān)控頁面。
(2)部署sFlow代理
在OVS(open vSwitch,開源虛擬交換機)上配置sFlow代理,配置后可以看到已配置的代理信息,如圖5所示。
(3)執(zhí)行流量監(jiān)控腳本
流量監(jiān)控腳本的作用:首先,在sFlow采集器設定端口流量的閾值(這里設為1 500 KB/s)。然后,通過sFlow代理獲取Mininet拓撲里所有交換機端口的每秒流量,若端口每秒流量超過閾值,就認為是異常流量。最后,利用腳本生成向OpenDaylight控制器的流量通告。
(4)模擬DoS攻擊
實驗通過ping flooding模擬DoS攻擊流量,采取host1向host2泛洪的方式,監(jiān)測交換機S3的端口eth1的流量變化。結(jié)果如圖6所示??梢钥吹?,未運行流量監(jiān)控前,host1向host2泛洪的數(shù)據(jù)分組達到了大約15 000個/s。
(5)流量監(jiān)控
運行腳本,激活流量監(jiān)測與控制功能。監(jiān)控系統(tǒng)發(fā)現(xiàn)在交換機S3的eth1端口有流量攻擊,將產(chǎn)生異常流量報告,如圖7所示。
OpenDaylight控制器將根據(jù)異常流量通告,修改與S3的eth1接口有關的流表項并下發(fā)流表,丟棄正在被攻擊的端口流量。運行流量監(jiān)控后,S3的eth1端口的流量如圖8所示??梢钥吹剑?0∶17時刻運行腳本后,host1向host2泛洪的分組被迅速地丟棄。
圖5 sFlow代理的部署信息
圖6 運行流量監(jiān)控前被攻擊交換機的端口流量
圖7 流量監(jiān)控系統(tǒng)發(fā)現(xiàn)被攻擊交換機的端口有異常流量
圖8 運行流量監(jiān)控后被攻擊交換機的端口流量
本文針對SDN架構,提出了一種基于sFlow技術的流量監(jiān)測與控制系統(tǒng)。該系統(tǒng)可以對網(wǎng)絡中每一個端口的實時流量進行監(jiān)測,并通過控制器實現(xiàn)對整個網(wǎng)絡的流量管控。通過構建OpenDaylight控制器與Mininet交換模擬器相結(jié)合的實驗環(huán)境,驗證了該系統(tǒng)在流量監(jiān)控方面的有效性和準確性。利用該系統(tǒng)還可以實現(xiàn)更多的服務,比如負載均衡、QoS等。下一步工作是對流量監(jiān)測結(jié)果進行細化,對流入網(wǎng)絡的流量進行模型匹配,準確地定位攻擊類型,使得控制器可以根據(jù)攻擊類型生成并下發(fā)相應的流表。
[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]張朝昆,崔勇,唐翯祎,等.軟件定義網(wǎng)絡(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.