蔣海軍,謝 鈞,郭小帆,邱宏瓊,強 振
(1.陸軍工程大學 指揮控制工程學院,江蘇 南京 210007; 2. 31103部隊,江蘇 南京 210016;3.73127部隊,福建 福州 350003;4.31618部隊,福建 福州 350003)
當前,以互聯網為代表的信息技術在全球范圍得到了迅速發展和普及。據中國互聯網絡信息中心(CNNIC)第40次《中國互聯網絡發展狀況統計報告》[1]數據顯示:截至2017年6月,我國網民總數達到7.51億,互聯網普及率達到54.3%。其中移動互聯網的主導地位進一步加強,手機網民7.24億,占總網民數的96.3%。截止到2017年6月,我國國際出口帶寬達到7 975 Gb/s,較2016年12月增長20.1%。網絡用戶增多,傳輸數據流量增大,網絡應用業務不斷豐富,使得網絡資源使用緊張,存在資源分配不均衡、利用率低等問題。
傳統的互聯網體系架構在最初的設計理念、方法上存在“先天性的”不足,導致其在網絡流量的管理控制、網絡資源的高效使用和網絡運行的安全性、穩定性等方面都遇到了很多問題和挑戰。為了應對這些挑戰,產業界和學術界很多學者都展開了對下一代網絡的研究。在眾多的研究方案中,美國斯坦福大學的MCKEOWN N教授等提出的基于OpenFlow的軟件定義網絡(Software Defined Network,SDN)[2]被認為是最具前途的技術之一。SDN作為一種新型的網絡架構[3],很好地解決了傳統網絡把控制邏輯和數據轉發耦合在網絡設備上而導致網絡控制平面管理的復雜性問題,也使得網絡控制層面新技術的更新和發展具有更好的靈活性和擴展性。
在基于OpenFlow協議的SDN網絡架構下,數據根據流表進行轉發,雖然控制器可以通過匹配IP地址、通信端口、物理地址等流表項屬性值實現對單個流的管理和控制,但是SDN并沒有提供一種機制來分類數據流所對應的應用和協議類型。因此在SDN網絡架構下,流量分類仍然是實施精細化、個性化網絡管理的重要前提。此外由于SDN具有更強的對全局網絡態勢的感知能力和對全局網絡流量的控制能力,流量分類發揮的作用更為明顯。目前網絡流量分類方法主要有4種:基于端口的流量分類技術、基于深度包檢測(Deep Packet Inspection,DPI)的流量分類技術、基于流統計特征的機器學習(Machine Learning,ML)的流量分類和基于用戶行為特征的流量分類技術。
在傳統的網絡環境下,互聯網數字分配機構(IANA)對一些常用的傳輸層服務端口進行了預定義,通常在0~1 023之間。例如HTTP協議使用80端口,DNS域名服務使用53端口,FTP文件傳輸協議使用21端口等。此外,注冊協議主要使用1 024-49 151之間的端口,剩下的49 152-65 535端口不作特殊規定。早期,各種協議和網絡應用都遵循該規則,使用的端口比較固定,因此通過端口映射的方法可以進行網絡流量分類。這種方法只需要進行端口匹配,因此具有簡單、快速、易于實現、準確率高等優點。但是隨著網絡應用的發展,出于不同的目的,一部分網絡應用使用了端口變換和偽裝技術,使得基于端口映射的流量分類技術無法有效應用。MADHUKAR A等[4]在實驗中證實了有30%~70%的流量都無法利用端口來進行正確分類。
數據包的載荷部分含有大量信息,DPI就是利用這些信息進行分類。基于DPI流量分類技術是依據特定協議或應用的特征碼來實現的,通過對網絡流量中的載荷數據進行特征碼匹配,來獲取流量的分類。
基于DPI的分類技術雖然具有較高的準確率,但也存在一些缺點:消耗較多的計算資源,對數據加密分類能力較弱,各類應用特征碼提取和更新比較困難,對載荷數據的分析會帶來對用戶隱私權的侵犯。
DPI作為一種成熟的流量分類技術,在商業場合有著廣泛的應用。目前很多學者試圖從硬件、架構、多技術融合、數據處理方式等多個方面提高DPI技術的分類效率和速度。BUJLOW T等[5]通過建立真實標簽的可信數據集,對流行的商業和開源DPI軟件進行測試。在提升DPI性能方面,DE SENSI D等[6]提出了一種基于FastFlow庫的DPI框架,以更好地解決DPI對多核硬件平臺的支持。付文亮等[7]基于FPGA硬件和DPI技術進行實時網絡流分類,取得了很好的效果。Alcock等[7]利用開源軟件庫Libprotoident,提出一種輕量級的DPI分類方案,只通過數據包載荷的前4字節進行分類,在準確率和性能上相對于其他基于DPI的開源軟件庫都有很大的優勢。GRIMAUDO L等[8]基于DPI技術,采用層次化分類結構,結合多種策略,對DPI進行優化。YEGANEH S H等[9]則采用一種加權“Term”的智能化表達式代替傳統的正則表達式,類似Libprotoident的思想,并且只檢測一個流的前幾個字節,從而提高網絡流分類的效率。
近年來,隨著人工智能技術的發展,越來越多的研究者開始利用機器學習算法來解決流量分類問題。利用機器學習解決流量分類問題,主要有兩個部分:訓練數據集和機器學習算法。訓練數據集的生成首先需要利用DPI工具、系統進程監控或人工的方法標注訓練樣本,得到樣本標簽,然后從網絡流量中提取數據流的特征,最后利用訓練集和機器學習算法得到分類器,即可用訓練好的分類器對網絡流量進行分類。早在2005年,MOORE A W等人[10]提出的248維特征,就從四層協議端口號、流的包數目、包大小、包之間的時間間隔等流屬性進行特征提取,并對這些流屬性進行傅里葉變換等計算,從不同視角提取特征,從而提高特征的維度和層次。文獻[11]對包級別和流級別兩種不同粒度的特征進行融合,提出載荷和流統計信息相結合的流特征屬性,從而提高流分類的精度。
基于流統計特征的機器學習的流量分類方法主要有監督學習和無監督學習兩種。
(1)有監督機器學習算法
有監督機器學習算法在各個領域都有廣泛應用,研究者們也將各種機器學習算法運用到流量分類中。ESTE A等[12]采用SVM對互聯網TCP流量進行分類,共使用了3個數據集進行實驗,獲得了相當高的精度。近年來,為提高大規模網絡流的分類效率,也有學者基于Hadoop、Spark分布式平臺提高SVM的處理性能[13-14]。文獻[15-16]使用C5.0決策樹對流量進行分類,并且都是通過系統守護進程監視數據包與應用程序之間的聯系,產生真實應用標簽來產生數據集,取得了很好的分類效果。文獻[17-18]將神經網絡算法用與網絡流分類,對各種神經網絡進行了算法改進和架構改進,取得了很好的效果。
(2)無監督機器學習算法
無監督機器學習主要使用聚類分析方法,與有監督的機器學習算法不同,在無監督機器學習中,訓練樣本無需標注。文獻[19]使用高斯混合模型(GMM)利用數據包大小和方向進行加密流量的分類。ZANDER S等[20]提出了基于AutoClass的無監督網絡流量分類方法,是一種基于期望最大化(Expectation maximization,EM)算法的無監督貝葉斯分類器。文獻[21-22]都將無監督的機器學習算法用與流量分類領域,此類算法為處理未知流量提供了很好的解決思路。
隨著流特征加密技術的涌現,給基于流統計特征進行流量分類帶來了一定的局限性。近年來,研究人員開始利用主機不同的通信行為模式進行網絡流量分類。文獻[23-24]提出了利用用戶連接模式、連接圖、網絡連接直徑等主機行為特征,對網絡流量進行分析,開辟了分析網絡流量分類的新方法。基于行為特征的流量分類技術主要通過分析網絡協議和應用的連接特性和行為模式上的固有特性,達到對不同流量進行分類的目的。這種方法通常建模時間較長,時空復雜度高,應用有一定的局限性。
表1對當前主流的網絡流量分類技術的種類和各自特點和存在的缺點進行了比較,以便在實際工程應用中根據不同需求選擇合適的技術方案。

表1 主要網絡流量分類技術分類表
SDN對控制層面的集中,強化了對流量實施統一控制和管理的能力。基于SDN的流量分類對于進一步拓展網絡的功能,實現網絡流量的精細化管理和精準控制具有十分重要的意義,也得到了廣大學者的關注。在基于OpenFlow的SDN環境下,文獻[25]通過前N個數據包長度、源目的IP、端口信息作為流特征,將C5.0決策樹算法運用到SDN上進行流量分類,但未能解決數據流隨時間發生變化的問題。文獻[26]通過采樣技術,利用OpenFlow的本地計數器實現流統計特征采集,但此方法采集流特征的實時性不強,限制了在流早期分類場景下的應用。文獻[27]則利用DPI的方法來分類YouTube視頻流進行分類,并通過QoS預留帶寬。文獻[28]設計了一個基于DPI和機器學習算法的混合流量分類器,但未考慮數據流隨時間發生變化的問題。
無論是在傳統網絡環境下還是在SDN網絡環境下,流量分類的對象一直是網絡流量本身,這一點始終沒有發生變化,因此能夠適用于傳統網絡下的流量分類技術、方法都可以用在SDN網絡環境下,但是作為新一代網絡的SDN,在體系結構,運行方式等方面都發生了很大的變化,因此基于SDN的流量分類在流量采集方式、流量特征提取、流量的控制管理等方面都發生了新的變化。
在SDN網絡環境中,控制層面邏輯業務的集中,使控制器對流量的控制能力大大加強,通過流表項就可以實現數據報文的轉發、丟棄和進入隊列操作,其中進入隊列操作就可以實現QoS功能。因此,如果能在流量建立的早期階段就能通過流量分類來感知流量業務類型,并根據業務需求進行相應的控制,就能在控制器完成流量采集、特征提取、流量分類和流量控制整個閉合的流量控制過程,從而極大地提高流量分類在SDN網絡環境下的應用價值。
2.1.1流量獲取方式
在傳統網絡環境中,流量的獲取方式通常有兩個步驟:一是通過端口鏡像或者分光器等手段引出所關注的流量;二是通過流量捕獲設備獲得流量數據并進行處理。流量捕獲設備大多是基于Libpcap的包捕獲機制,通過安裝數據包捕獲函數庫(Library of Packet Capture,Libpcap)來實現。這種流量獲取方式缺乏對數據進行有效的過濾,只能全盤接收鏡像的所有流量,由于總帶寬受端口速率的限制,在高帶寬、大流量的場景下不可避免地存在丟包現象。
在基于OpenFlow的SDN網絡環境下,數據以流為單位進行轉發,當數據進入交換機時,會根據匹配的流表項中規定的動作對數據包進行操作,若未匹配到流表項,則會將數據包以Packet_in的消息形式轉發到控制器,經過控制器決策后,決定該數據包的操作并下發該流的流表項,更新交換機流表。由此可知,數據流開始的第一個數據包會被轉發到控制器中,后面的數據會根據控制器下發的流表項進行操作,如果控制器在下發的流表項的動作字段增加轉發到控制器,那么該流的后續數據包都會發送到控制器中,從而實現了網絡流量的采集。
但是,將所有數據轉發到控制器并不是OpenFlow協議設計的初衷,因為這樣會使控制器處理開銷大大增加而不堪重負,特別是在網絡流量大的網絡節點上,很容易因為控制器的崩潰而導致網絡癱瘓。如果只將網絡流的前幾個數據包轉發到控制器,這樣發送到控制器的流量將大大減少,在流量分類這個應用場景下,這就要求控制器在只分析流的開始前N個數據包情況下,能夠完成流的分類工作,這也決定了SDN網絡環境下更適合進行流量的早期分類。
2.1.2流統計特征提取
在傳統網絡環境中,數據流統計特征提取只有一種途徑,那就是先獲取流量,然后將流量按流進行重組、排序,再對流中的每一個數據包進行統計,從而得到流的統計信息。從上一節分析可知,在SDN控制器也可以通過這種方法得到流的統計信息,但是這種方法在流量大的場景下會極大地消耗控制器資源直至崩潰,因此用這種方法來提取數據流特征只適合轉發數據包數量不多的場景,比如流量的早期分類。在OpenFlow交換機流表中針對每個流表、流表項和每個交換機端口都有一組計數器。其中基于流的計數器有接收的數據包數、接收的字節數、秒級持續時間和納秒級持續時間。借助OpenFlow的Read-State消息,通過周期性地讀取這些計數器信息,然后利用這些采樣值,為提取數據流的統計信息提供了新的方法[26]。
假設以周期性C對SDN交換機的流本地計數器信息進行n次采樣,得到n個流接收的字節數計數器數據記為B={b(1),b(2),…,b(n)},則第t個周期內流接收到的字節數為:
B(t)=b(t)-b(t-1)
(1)
得到n個流接收的數據包數計數器記為P={p(1),p(2),…,p(n)},則第t個周期內接收到的數據包數為:
P(t)=p(t)-p(t-1)
(2)
則第t個周期內平均數據包大小為:
(3)
該第t個周期內平均包到達時間間隔為:
(4)
以S(t)、T(t)作為基本量,進一步計算它們的均值和方差,可以得到S(t)的均值和方差為:
(5)
(6)
可以得到T(t)的均值和方差為:
(7)
(8)
根據MOORE AW等人[10]的研究,對包時間間隔進行離散傅里葉變換(Discrete Fourier Transform,DFT)可以得到在頻域上的一系列分量,這些分量作為流特征從一定程度上刻畫數據流在頻域內的變化情況。式(9)是對包時間間隔進行DFT的計算公式。
(9)
通過以上采樣數據計算,可以得到一系列關于流的統計特征。由于這些統計特征是依據采樣數據計算的,因此采樣周期C影響著統計數據與真實值之間的差異,同時,控制器發送Read-State消息對計數器進行采樣的頻率也極大地影響控制器的性能。因此周期C的選擇要綜合考慮統計數據的準確性和控制器性能之間的平衡,在取得可接受的數據準確性的同時盡量減少對控制器的影響。
無論是用于訓練機器學習算法分類器的訓練數據集,還是作為評價各種分類器性能的測試數據集,對數據集進行可信標注都是不可或缺的,但仍然是一個尚未解決的問題。目前對網絡數據集的標注一般采用兩種方法,即生成法和經驗法。經驗法是通過捕獲網絡數據包,并利用已有經驗,對數據進行標注。很多研究者通過DPI工具L7-filter或nDPI等對數據包進行標注,就是運用了經驗法。生成法是在一個受控環境或實驗環境中部署目標應用,模擬各種運行模式,運行生成的日志即標注為目標運用。如可信標注工具GT(Ground Truth),文獻[16]中提到的VBS系統和文獻[29]中運行在移動設備端的守護進程,都是通過監測網絡套接字的變化狀態來收集數據流對應的應用,進行可信標注。相比于經驗法,生成法難以真實反映真實的網絡環境,但是其環境可控,標注可信,工作量也相對較少,已經越來越得到研究者的認可。
在線流量分類不同于離線流量分類,特別是高速網絡環境下的在線流量分類,對特征提取速度和分類器效率提出了很高的要求,在線流量分類從工程實際角度出發,在數據流建立初期就進行分類,為后續的服務質量管理和流量安全管理提供了先決條件,在線流量分類的重要性不言而喻,從而吸引了大量學者進行研究。
在流量的早期分類方面,ACETO G等[30]利用網絡流的第一個報文的載荷數據來進行在線流量分類。BERNAILLE L等[31]利用網絡流建立初始階段的前n個數據包的大小和方向作為流特征,取得了較好的分類效果。彭建芬等[32]發現在網絡流建立初始階段的前幾個報文在大小、方向等特征上能夠提取流特征,用于在線流量分類。這些研究說明了通過流的早期部分數據包進行流分類是可行的,提供了理論依據。在具體實現方面,文獻[33-34]從提升網絡流量處理性能角度對網絡流量的在線分類工作進行改進,以提高在線分類速度和效能。
實時性的要求包含兩個方面:快速的線上檢測、快速的模型更新。但由于網絡規模的日益增大,用戶規模的不斷增長,傳統的機器學習方法在處理大規模網絡流量分類問題時,其分類準確率與模型訓練速率等通常難以取得平衡。僅靠使用更多的計算資源,無法滿足現實的發展,需要從算法方面進行革新。
網絡流量數據最突出的特點就是其隨時間快速演化,存在概念漂移的現象,并且不同地域、不同網絡環境的協議類型的分布也不一致。現有方法缺乏對數據流中概念漂移的深入研究。一方面,網絡數據流的演化特性,使其不能按照靜態數據的傳統方式多次反復讀取,并且需要對于增量數據能夠快速有效地更新模型。另一方面,還需要將不同地域、不同環境的網絡流量統一處理,以獲得良好的泛化能力。
在移動互聯網、大數據、云計算等新事物新技術不斷發展的今天,流量分類出現了很多新情況,面臨眾多新的挑戰。
一是面對海量數據,傳統的單機處理模式已經很難滿足計算要求,在這種情況下,利用Hadoop、Spark等并行處理技術和集群計算模式來處理實時網絡流已經成為一種趨勢,得到很多學者的關注。
二是在線學習是近年來廣泛使用的一種解決大規模機器學習問題的方法。將在線學習算法用于實時流量分類也是當前研究的一個方向。但是一般意義上的在線學習算法在使用中并不區分訓練階段與測試階段,模型在對樣本進行預測后,通過接收正確的樣本類別來決定是否更新模型。而網絡流量分類問題中,模型在對樣本進行預測后無法接收真實的樣本類別。這就導致了在網絡流量分類應用中,在線學習算法僅能運用于模型的離線訓練階段,無法實現模型的實時更新,使用在線算法的優點是能大大縮短模型離線訓練所需要的時間,以實現模型的快速更新。
三是未來網絡SDN控制層面的集中,對大型網絡的集中管控和統一策略具有很大的實用價值,特別是對于大規模網絡環境,其運行機制的復雜度會大大增加,因此大規模復雜的SDN環境的流量分類問題值得進一步研究。
[1] 中國互聯網絡信息中心(CNNIC). 第40次《中國互聯網絡發展狀況統計報告》.(2017-08-04) http://cnnic.cn/gywm/xwzx/rdxw/201708/t20170804_69449.htm.
[2] MCKEOWN N. Software-defined networking[J]. INFOCOM Keynote Talk, 2009.
[3] FEAMSTER N, REXFORD J, ZEGURD E. The road to SDN: an intellectual history of programmable networks[J]. ACM SIGCOMM Computer Communication Review, 2014, 44(2): 87-98.
[4] MADHUKAR A, WILLIAMSON C. A longitudinal study of P2P traffic classification[C]//14th IEEE International Symposium on Modeling, Analysis, and Simulation. IEEE, 2006: 179-188.
[6] DE SENSI D, DANELUTTO M, DERI L. DPI over commodity hardware: implementation of a scalable framework using fastflow[D]. University of Pisa, 2013.
[7] 付文亮, 嵩天, 周舟. RocketTC: 一個基于 FPGA 的高性能網絡流量分類架構[J]. 計算機學報, 2014, 37(2): 414-422.
[8] GRIMAUDO L, MELLIA M, BARALIS E. Hierarchical Learning for Fine Grained Internet Traffic Classification[C]//2012 8th International Wireless Communications and Mobile Computing Conference (IWCMC). IEEE, 2012: 463-468.
[9] YEGANEH S H, EFTEKHAR M, GANJALI Y,et al. CUTE: Traffic Classification Using Terms[C]//2012 21st International Conference on Computer Communications and Networks (ICCCN). IEEE, 2012: 1-9.
[10] MOOREA W, ZUEV D. Internet Traffic Classification Using Bayesian Analysis Techniques[C]//ACM SIGMETRICS Performance Evaluation Review. ACM, 2005, 33(1): 50-60.
[11] HJELMVIK E, JOHN W. Breaking and improving protocol obfuscation[R]. Chalmers University of Technology, 2010.
[12] ESTE A,GRINGOLI F, SALGARELLI L. Support vector machines for TCP traffic classification[J]. Computer Networks, 2009, 53(14): 2476-2490.
[13] D′ALESSANDRO V, PARK B, ROMANO L, et al. Scalable network traffic classification using distributed support vector machines[C]//2015 IEEE 8th International Conference on Cloud Computing. IEEE, 2015: 1008-1012.
[14] 劉澤燊, 潘志松. 基于 Spark 的大規模網絡流量分類研究[J]. 計算機時代, 2016 (4): 1-5.
[15] BUJLOW T, RIAZ T, PEDERSEN J M. Classification of HTTP Traffic Based on C5.0 Machine Learning Algorithm[C]// Computers and Communications (ISCC). IEEE, 2012: 882-887.
[16] QAZI Z A, LEE J, JIN T, et al. Application-awareness in SDN[J]. ACM SIGCOMM Computer Communication Review, 2013, 43(4): 487-488.
[17] AKILANDESWARI V, SHALINIE S M. Probabilistic neural network based attack traffic classification[C]//2012 Fourth International Conference on Advanced Computing (ICoAC). IEEE, 2012: 1-8.
[18] SINGH K,AGRAWAL S. Internet traffic classification using RBF neural network[C]//International Conference on Communication and Computing Technologies (ICCCT-2011), Jalandhar, India, 2011: 39-43.
[19] BERNAILLE L, TEIXEIRA R. Early recognition of encrypted applications[C]//International Conference on Passive and Active Network Measurement. Springer Berlin Heidelberg, 2007: 165-175.
[20] ZANDER S, NGUYEN T,ARMITAGE G. Automated traffic classification and application identification using machine learning[C]//The IEEE Conference on Local Computer Networks 30th Anniversary (LCN'05) l. IEEE, 2005: 250-257.
[21] YANG C, WANG F, HUANG B. Internet traffic classification usingdbscan[C]// Information Engineering, 2009. ICIE'09. IEEE, 2009, 2: 163-166.
[22] FINAMORE A, MELLIA M, MEO M. Mining Unclassified Traffic Using Automatic Clustering Techniques[C]// International Conference on Traffic Monitoring and Analysis. Springer-Verlag, 2011:150-163.
[23] CONSTANTINOU F, MAVROMMATIS P. Identifying known and unknown peer-to-peer traffic[C]//Fifth IEEE International Symposium on Network Computing and Applications (NCA'06). IEEE, 2006: 93-102.
[24] 張震, 汪斌強, 陳鴻昶, 等. 互聯網中基于用戶連接圖的流量分類機制[J]. 電子與信息學報, 2013, 35(4): 958-964.
[25] QAZI Z A, LEE J, JIN T, et al. Application-awareness in SDN[J]. ACM SIGCOMM Computer Communication Review, 2013, 43(4): 487-488.
[26] DA SILVA A S, MACHADO CC, BISOL R V, et al. Identification and selection of flow features for accurate traffic classification in SDN[C]// Network Computing and Applications (NCA). IEEE, 2015: 134-141.
[27] JARSCHEL M, WAMSER F, HOHN T, et al. SDN-based application-aware networking on the example of youtube video streaming[C]//2013 Second European Workshop on Software Defined Networks. IEEE, 2013: 87-92.
[28] LI Y, LI J.MultiClassifier: A combination of DPI and ML for application-layer classification in SDN[C]// Systems and Informatics (ICSAI). IEEE, 2014: 682-686.
[29] Volunteer-Based System for Research on the Internet, 2012. [Online]. Available:http://vbsi.sourceforge.net/.
[30] ACETO G, DAINOTTI A, DE DONATO W, et al. PortLoad: taking the best of two worlds in traffic classification[C]//INFOCOM IEEE Conference on Computer Communications Workshops, 2010. IEEE, 2010: 1-5.
[31] BERNAILLE L, TEIXEIRA R, SALAMATIAN K. Early application identification[C]//Proceedings of the 2006 ACM CoNEXT conference. ACM, 2006(6): 1-12.
[32] 彭建芬, 周亞建, 王樅, 等. TCP 流量早期分類方法[J]. 應用科學學報, 2011, 29(1): 73-77.
[33] ALSABAH M, BAUER K, GOLDBERG I. Enhancing Tor's Performance Using Real-time Traffic Classification[C]//Proceedings of The 2012 ACM Conference on Computer and Communications Security. ACM, 2012: 73-84.
[34] SZAB? G, G?DOR I, VERES A, et al. Traffic classification over Gbit speed with commodity hardware[J]. IEEE Journal of Communications Software and Systems, 2010, 5(3): 93-100.