使用机器学习来进行应用识别
分類暫定如下幾種
?
應用 | 說明 | 常見場景 | 對應上表 |
接入 | 指用戶連上網絡到可以開始使用網絡服務過程,無線指從搜索到信號開始 | 1x或web認證 | ? |
網絡瀏覽, | Web瀏覽, | 訪問門戶網站瀏覽新聞 | 搜索引擎、網絡新聞、網上支付、網絡文學、網上銀行、微博、旅行預訂、團購、論壇、博客、理財 |
辦公生產, | 郵件,云桌面,遠程登錄 | 接收發送郵件 | 電子郵件 |
在線視頻, | 在線視頻網站,或通過軟件訪問網絡視頻 | 在線觀看電影 | 網絡音樂、網絡視頻 |
在線游戲 | 一般指MMORPG,特點是受瞬間異常影響大, | 在線RPG等 | 網絡游戲 |
VOIP, | 常用H.323,SIP,MEGACO和MGCP | 辦公電話 | ? |
文件下載 | FTP,P2P | 下載電影音樂軟件 | ? |
社交應用 | Qq,微信,Facebook | 文字聊天,語音,視頻 | 即時通信 |
數據采樣
數據只能來自于設備端,包括靜態參數和動態參數(靜態參數指一般不隨時間變化的值,如設備內存,物理端口數,用戶配置等,動態參數指會和數據流相關隨時間變化的值,如運行時間,cpu利用率,內存利用率,溫度,丟包率,帶寬利用率,端口輸出輸入速率,延時,抖動等)。
網絡應用類型識別目前有許多方法和嘗試,比如H3C的NTA系統是根據端口進行區分,華為則通過支持向量機來進行學習識別。
考慮到本課題的方法必須基于網絡設備端,且只能基于目前已有功能提供的數據,并且不能對網絡設備正常功能和性能產生不良影響,故考慮使用基于流的報文長度特征對網絡應用進行分類。
數據流技術是流量識別中一種常用方法,利用數據流以及數據流中報文的某些信息,可將網絡上的數據流進行分類,這種分類可加速應用流量的分類,如游戲應用數據流通常是小報文,而P2P流一般稱為大報文。基于這樣的特點,選取下列網絡參數作為采集樣本數據組成元素。其中RFC1573中提供了報文總字節數和單播、組播、廣播報文個數統計值,且分出入方向,RMON-MIB-1757中提供了不同長度區間報文的統計值,按64、128、256、512、1024為界分為6組數據。
在設備端端口上采樣,采樣時間間隔內在對應端口的終端上運行各種應用,見下表
?
應用 | 標簽 | 終端執行動作 |
網絡瀏覽, | Web | 訪問網頁 |
辦公生產, | Office | 收發郵件 |
在線視頻, | Video | 在線觀看視頻 |
在線游戲 | Game | 在線游戲 |
VOIP, | Voip | 撥打voip電話 |
文件下載 | download | 下載大型文件 |
社交應用 | Sns |
?
并計算該時間內各統計值的變化量,得到一個n元組<x1,x2,x3,…x13,x14>,并打上標簽,構建出訓練樣本。例如,在時間t0對端口1采集上面各統計值數據<m1,m2,m3,…m13,m14>,然后端口1下聯終端開始觀看在線視頻,到時間t1結束,再次采集一次統計值數據<n1,n2,n3,…n13,n14>,將結束時間數據減去開始時間數據即得到目標樣本<n1-m1,n2-m2,n3-m3,….n14-m14>,并且該樣本標簽為“video”。
這里需要注意2點,1:如果某端口上流量變化量太小,視為沒有使用任何應用,具體流量閾值需要根據采樣數據評估。2:不是所有應用都是長應用,某個應用流持續時間可能比采樣時間短,比如VOIP可能通話就1分鐘,如果采集間隔是五分鐘,則流量特征會減弱。
由于Rmon采集的報文不同長度分布數據是不區分方向的,所以考慮對采樣流程改進,除了voip其他類型直接在終端抓包,保存為標準的pcap文件,然后解析出雙向不同長度報文的分布數據。具體方法是,采樣用標準pcap格式,每類至少10000報文,100個報文提取為一個樣本,這樣每類至少100個樣本。
web:測試建議,如購物 門戶 新聞 體育 IT 論壇 博客 政府 郵箱 交通 商業 中選即可 (采樣:捕捉http報文 tcp.porteq 80 && http https)
office:測試建議,如郵件,遠程登錄,svn,(采樣:捕捉outlook遠程登錄)
video:測試建議,優酷網 愛奇藝 土豆網 搜狐視頻 鳳凰視頻 騰訊視頻 新浪視頻 中選即可(采樣:捕捉流量最大ip的雙向報文)
game:測試建議 英雄聯盟 穿越火線 地下城與勇士 魔獸世界 夢幻西游 qq飛車 傳奇 逆戰 爐石傳說 劍靈 中選即可(采樣:捕捉游戲服務器ip的雙向報文)
voip:測試建議,公司voip電話即可(交換機上sflow采樣捕捉指定ip即語音網關的報文)
download:測試建議(ftp,http,p2p(bt,迅雷)即可(采樣:ftp,http,p2p(bt,迅雷),bt基于多ip抓報文)
sns:測試建議,qq,微信即可(采樣:基于通訊工具的端口抓包netstat -aon | tasklist,微信抓取看下能否通過有線網絡捕捉 或者 pc版)???????
無監督學習
首先考慮使用聚類方法來對數據進行分類,這里沒有使用到數據的標簽。因為后續需要使用該算法結果對新的輸入進行分類,所以需要使用能夠支持增量分類的方法,從而排除了CURE算法,而DBSACN算法因為需要預先指定鄰居數(資料16),也視為不支持增量分類。
這里采用KMeans和KMedoid算法(兩者對比:K-MEANS算法產生類的大小相差不會很大,對于臟數據很敏感,KMedoid算法改善了對噪聲敏感問題,但時間復雜度較大)。
根據前面列舉的網絡參數,采集了47組數據并使用兩種聚類算法進行分類,從結果來看兩種算法都無法正確對類型進行分割,其中KMeans將所有數據識別為一類,完全無法區分,而KMedoid算法除了對辦公應用較好區分,其他幾類甚至連中心都無法區分開來(見下表)。
分類中心(字母表示應用,數字表示該類應用中第幾個樣本) | 該類集合(數字表示全局樣本序號,后面字母加數字見前面所述) |
office2 | ( 11 game1 ) ( 12 game2 ) ( 18 office1 ) ( 19 office2 ) ( 20 office3 ) ( 21 office4 ) ( 23 office6 ) ( 44 web9 ) |
web6 | ( 26 vedio3 ) ( 28 vedio5 ) ( 41 web6 ) ( 45 web10 ) ( 46 web11 ) (47 web12 ) |
web7 | ( 13 game3 ) ( 15 game5 ) ( 16 game6 ) ( 17 game7 ) ( 22 office5 ) ( 29 vedio6 ) ( 36 web1 ) ( 37 web2 ) ( 38 web3 ) ( 42 web7 ) ( 43 web8 ) |
video4 | ( 3 download4 ) ( 4 download5 ) ( 14 game4 ) ( 27 video4 ) ( 32 video9 ) ( 39 web4 ) ( 40 web5 ) |
video7 | ( 0 download1 ) ( 1 download2 ) ( 2 download3 ) ( 5 download6 ) (6 download7 ) ( 7 download8 ) ( 8 download9 ) ( 9 download10 ) ( 10 download11 ) ( 24 video1 ) ( 25 video2 ) ( 30 video7 ) ( 31 video8 ) ( 33 video10 ) ( 34 video11 ) ( 35 video12 ) |
?
因為前面采樣數據中只有報文字節總數和各類報文個數,而沒有報文平均長度,從業務特征來看報文長度更能體現流量特性,故考慮新增兩個參數:
averInOctets=ifHCInOctets/(ifHCInUcastPkts+ifHCInMulticastPkts+ifHCInBroadcastPkts)和averOutOctets=ifHCOutOctets/(ifHCOutUcastPkts+ifHCOutMulticastPkts+ifHCOutBroadcastPkts),同時消去冗余數據ifHCInOctets和ifHCOutOctets。
參數改造后,再次用KMedoid算法分類得到結果如下表
?
分類中心(字母表示應用,數字表示該類應用中第幾個樣本) | 該類集合(數字表示全局樣本序號,后面字母加數字見前面所述) | 準確率 |
download4 | ( 3 download4 ) ( 4 download5 ) ( 8 download9 ) ( 9 download10 ) ( 10 download11 ) ( 19 office2 ) ( 27 video4 ) ( 28 video5 ) ( 29 video6 ) | 56% |
game7 | ( 17 game7 ) | 100% |
video8 | ( 0 download1 ) ( 1 download2 ) ( 2 download3 ) ( 5 download6 ) (6 download7 ) ( 7 download8 ) ( 15 game5 ) ( 24 video1 ) ( 25 video2 ) ( 30 video7 ) ( 31 video8 ) ( 33 video10 ) ( 34 video11 ) ( 35 video12 ) ( 39 web4 ) ( 40 web5 ) | 44% |
web12 | ( 11 game1 ) ( 12 game2 ) ( 13 game3 ) ( 14 game4 ) ( 16 game6 ) (18 office1 ) ( 20 office3 ) ( 26 video3 ) ( 32 video9 ) ( 36 web1 ) ( 37 web2 ) ( 38 web3 ) ( 41 web6 ) ( 42 web7 ) ( 43 web8 ) ( 44 web9 ) ( 45 web10 ) ( 46 we b11 ) ( 47 web12 ) | 52% |
office6 | ( 21 office4 ) ( 22 office5 ) ( 23 office6 ) | 100% |
?
可以看出根據新的參數,拆分出的類型中心符合預期,但每類中還是有混雜其他類型,整體準確率只有70%,某個類型甚至準確率還不足50%。
僅使用聚類算法效果來看,區分度并不高,一種可能是目前采集的網絡參數還需要增加種類( 這個要繼續分析 [l1]?),還有一種可能是受本身數據類型影響(這兩種算法只能發現球形或凸形聚類類型,參考資料17,而目前采集的網絡參數集形態并不知道)。此外,聚類算法中沒有體現出不同屬性的權重(備注:目前基于權重的聚類算法有兩類,一種是通過人工設置權重監督學習
這部分描述對采集的數據通過監督學習方法進行應用識別的過程
1.??????根據前面選定的網絡采樣參數,以及對應標簽,開始訓練。對于樣本數目,參考資料15中的建議:“要訓練出一個性能良好的模型,所需訓練樣本數量應是模型參數數量的10倍。”,所以這里至少要140個訓練樣本,而且要得到良好的訓練模型,樣本數量應該還要更多。
2.??????使用BP算法得到擬合公式(決策樹適合屬性值為離散的目標函數值也為離散的情形,所以這里不考慮使用決策樹。由于前面聚類方法效果不好,這里也暫不采用RBF進行學習),由前可知輸入層節點數為14,因為有7類應用,輸出層節點為7,即對每一個流量組,輸出7個值,分別表示該流量變化量所代表應用的概率。考慮選擇反向傳播算法,原因是目標函數可以實數值(決策樹一般是離散值),且對訓練樣本的容錯性好,訓練完成后求值速度快。
3.??????通過檢測樣本判斷正確率。
?
訓練完成得到4個矩陣,分別是:
l? 輸入層到隱含層的權重矩陣;
l? 隱含層到輸出層的權值矩陣;
l? 隱含層的閾值矩陣;
l? 輸出接點的閾值矩陣;
?
對訓練出來的權重矩陣,輸入測試樣本,即可得到一個六元組<x1,x2,x3,x4,x5,x6,x7>,每個元素表示對應應用標簽的計算值,如果為1,表示樣本匹配該應用,如果為0,表示樣本不匹配該應用。現在將測試樣本帶入進行計算,以檢測上面訓練結果的準確度。對樣本輸出進行如下轉換,取每列中的最大值為1,其余設為0。然后再和測試樣本的標簽對比,計算神經網絡預測的準確率。計算公式為match_ratio=1-預測錯誤個數/總預測個數,平均準確率為83%,最高準確率有90%,說明在單一應用的條件下,使用該模型對應用標簽計算的準確率較高。
改進的BP算法:上述算法里權值矩陣、閾值矩陣的初值均是隨機的。如果把之前訓練中,挑出準確率最高的網絡的權值矩陣、閾值矩陣拿來做初值,那么是否訓練更快、更好。具體的,第二次訓練開始,在之前訓練的網絡中儲存準確率最佳的網絡,并將此網絡的權值閾值作為新訓練網絡的初值。實踐結果:單一采樣平均可以從80%提升到95%。準確率有明顯提升。
下一步繼續采集樣本,和前一步不同的是,采樣時運行多個應用,即樣本標簽中有多個1,比如同時運行web和video,對應標簽為<1,0,1,0,0,0,0>,。混合采樣最終得到254個樣本,按4:1的比例拆分為訓練樣本和測試樣本,訓練完成后,對測試樣本進行預測,預測前先進行預處理,即結果中每列中大于0.5的值設為1,其余的設為0。比如<0.1,0.9,0,0,0,0,0>經過預處理變為<0,1,0,0,0,0,0>。這樣就使得標簽里全部是非0即1的數值。
接下來將處理后的標簽與測試樣本的標簽作對比,計算神經網絡預測的準確率。混雜應用準確率具體計算方法是:按標簽中應用的命中率來計算,也就是檢查標簽中為1的有幾個預測正確,幾個錯誤,將(正確的數/應用總數)視為準確率。比如,測試標簽為<0,1,1,1,0,0,0>,而計算出來的標簽是<1,1,1,0,0,0,1>,則這里應用總數為3,預測準確的應用為第二個和第三個,故正確數為2,最終計算出準確率為(2/3)=66%
通過以上方法采樣訓練得到,混雜應用的平均準確率為76%,最高值83%。
針對混雜采樣加入后,準確率降低的原因分析:不同應用數據流量混雜在一起,無法突出應用特征,比如報文長度大的流量掩蓋掉報文長度小的,若干個長度較小報文的字節總數疊加等于一個報文長度大的。
?
由于單一識別準確率較高,考慮利用sflow采樣特征,即sflow對每個報文采樣提供了源mac、目的mac、源ip、目的ip、源端口、目的端口、報文長度這些信息,將采樣的數據按目的端口分類,目的端口相同的歸到一類,這一類視為一種應用,然后根據報文長度生成數據采樣中的樣本形式(這里有個要求,需要同一目的端口的報文大于某個閾值,否則不能很好的模擬出樣本形式),并用單一應用訓練出來的網絡進行識別,最后將所有識別出來的應用按比例合并。
比如,sflow采樣到目標端口為6633的報文有11個(可能mac地址和ip地址不同),將這11個報文的長度按[64,128,256,512,1024]為界統計個數,然后模擬出前面數據采樣的比例:"99 0 0 99 0 0 0 3 0 8 0 0 214 214",該序列中前6項,即單播廣播組播比例暫時按固定值輸入,最后兩項報文平均長度按采樣報文長度和/采樣報文個數來算,出入方向相同。最后將該序列作為輸入,放到單一網絡中計算,得到
0.0???? 1.0????0.0???? 0.0???? 0.0????0.0???? 0.0,
即預測該流應用是office。如果出現一個以上非0值,則取最大為1,其他為0。按此方法,對采樣個數大于某閾值(暫定1個)的流進行計算,得到一個應用向量列表,再按流中報文個數比例求和,得到總的應用比例。以下是3次采樣統計的應用比例
Web | Office | Video | game | Voip | Download | sns |
35.73 | 0.48 | 21.1 | 0.0 | 3.84 | 23.5 | 15.35 |
41.23 | 0.0 | 9.94 | 0.42 | 14.38 | 30.87 | 3.17 |
32.75 | 0.0 | 13.63 | 0.0 | 5.05 | 30.11 | 18.46 |
?
由于sflow采樣是在匯聚交換機上進行,而非接入交換機所以這部分數據沒有標簽,無法進行準確率計算,只能根據人工判斷。從比例結果中看,office和video這2類應用比例和實際情況出入較大,其他類型的應用較符合實際情況。
通過試驗,sflow采樣流中有68%可以根據端口號來進行應用分類,剩下32%根據神經網絡進行分類,理論準確率為68%+32%×0.90=96%,即為采樣中流的應用分類準確率。因為sflow默認采樣是1:8192,所以這里只能判斷出現哪些應用,而不能判斷有哪些應用遺漏。改進方法:延長采樣時間,即應用分類重點是反映終端用戶穩定使用網絡服務的情況,不考慮某些短時間(比如5分鐘)或者臨時應用(偶爾使用一次)。
為了提升準確率,還添加了一些額外的判斷策略。知名端口除了可以用來判斷應用類型,也可以用來判斷不是哪些應用類型。例如80端口不可能是voip。Sflow中采樣的IP地址如果源地址和目的地址都是局域網地址,則應用類型不會為game。
?
實際準確率計算方法:將該算法部署在實際網絡中,對每個終端用戶應用計算,如果終端用戶在運行4個應用,算法計算匹配3個,則準確率為3/4=75%。
驗證
目標地址識別
不同終端即使在使用相同的應用,其應用的目標地址也可能不同,例如訪問國內視頻網站和國外視頻網站,使用HTTP下載和使用P2P下載。所以可能瀏覽網頁A速度快,體驗分數高,而相同網絡環境下瀏覽網頁B速度慢,體驗分數低。所以如果能識別出終端應用具體的目標地址,可以更精確的度量出網絡體驗值。
考慮幾種報文采樣方案:鏡像功能需要專門網絡分析儀接到設備端,且完全鏡像數據量太大。IPFIX只在高端交換機上支持,因此目前考慮的方案是sflow,通過間隔采樣,在收集器主機上捕捉sflow報文并解析內容。具體方法是在設備端使能sflow采樣,在設備端使用wireshark命令行工具監聽sflow端口捕捉并解析sflow報文。為了不影響設備端性能,sflow采樣間隔不能過于頻繁,默認值是8192個報文采樣一個。
識別報文的目標地址后,下一步就是識別出該報文的應用。由于sflow采樣只提供了報文頭部,其包含信息有MAC地址,IP地址,協議類型,端口號,報文長度,而目前應用識別則主要依賴報文負載內容解析,所以只能根據協議類型、端口號、報文長度這幾個信息來做有限的推測。
???????? 某些應用可以根據知名端口來判斷,比如郵件、遠程登錄等辦公應用,而web、下載或視頻則可能都使用80端口來進行。
總結
以上是生活随笔為你收集整理的使用机器学习来进行应用识别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 乐高太多没处放?解放女朋友双手,1 个顶
- 下一篇: 第二证券|扶持政策频发,教育板块再度爆发