本發(fā)明涉及信息安全技術(shù)領(lǐng)域,特別涉及一種全網(wǎng)絡(luò)異常數(shù)據(jù)流分類方法。
背景技術(shù):
隨著網(wǎng)絡(luò)的發(fā)展,網(wǎng)絡(luò)異常行為包括網(wǎng)絡(luò)故障、用戶誤操作、網(wǎng)絡(luò)攻擊和網(wǎng)絡(luò)病毒傳播等,這些異常行為常常引起網(wǎng)絡(luò)中單條或多條鏈路上網(wǎng)絡(luò)流量偏離正常的現(xiàn)象,這些異常行為中的任何一個(gè)引起網(wǎng)絡(luò)流量異常時(shí)都有其固定的行為模式,比如DOS/DDOS等拒絕服務(wù)式攻擊表現(xiàn)為大量受控主機(jī)向目標(biāo)主機(jī)的流量匯聚,受控主機(jī)全都具有相同的目的地址;蠕蟲病毒是一種常見(jiàn)的與網(wǎng)絡(luò)安全相關(guān)的計(jì)算機(jī)病毒,它利用網(wǎng)絡(luò)進(jìn)行復(fù)制和傳播,在傳播時(shí),通常會(huì)以宿主機(jī)器作為掃描源,掃描網(wǎng)絡(luò)中的其它主機(jī),并尋找漏洞,在整個(gè)網(wǎng)絡(luò)中常表現(xiàn)為同一源地址對(duì)多個(gè)IP地址的特定端口的掃描,具有全局特性;木馬和僵尸程序是黑客們最常利用的工具,木馬是盜取用戶個(gè)人信息或遠(yuǎn)程控制用戶計(jì)算機(jī)的惡意程序,僵尸程序是被黑客集中控制的計(jì)算機(jī)集群,能夠同時(shí)對(duì)目標(biāo)網(wǎng)絡(luò)進(jìn)行拒絕服務(wù)式攻擊,其網(wǎng)絡(luò)流量具有相同的源IP地址;還有利用網(wǎng)絡(luò)誤配置、網(wǎng)絡(luò)設(shè)備故障、網(wǎng)絡(luò)Flash擁擠等導(dǎo)致的與網(wǎng)絡(luò)故障和性能相關(guān)的異常等。因此為了在網(wǎng)絡(luò)異常行為發(fā)生時(shí)快速地制定出應(yīng)急方案,降低異常事件的危害,需要實(shí)時(shí)地對(duì)網(wǎng)絡(luò)異常行為進(jìn)行分類找到引起異常行為的根本原因。
現(xiàn)有技術(shù)中一般采用基于IP流的抽樣方法抽取出異常數(shù)據(jù)流量,然后對(duì)異常數(shù)據(jù)流量進(jìn)行分類采用有監(jiān)督模式識(shí)別,即用一組已知類別的樣本作為訓(xùn)練集,建立數(shù)學(xué)模型,再用己建立的模型對(duì)未知樣本進(jìn)行判別,以確定未知樣本應(yīng)歸屬的類別,這種模式的訓(xùn)練集一般首先限定了引起數(shù)據(jù)流量異常原因的類別特征,但是由于網(wǎng)絡(luò)異常的復(fù)雜性和變化性,這種方法的精確性難以保證。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是針對(duì)上述現(xiàn)有技術(shù)的不足,而提供一種能夠在未知引起數(shù)據(jù)流量異常原因的種類的情況下,對(duì)異常數(shù)據(jù)流進(jìn)行簡(jiǎn)單、精確、高效的分類方法。
為解決上述技術(shù)問(wèn)題,本發(fā)明采用的一個(gè)技術(shù)方案是:提供一種全網(wǎng)絡(luò)異常數(shù)據(jù)流分類方法,該方法用于對(duì)抽取的計(jì)算機(jī)網(wǎng)絡(luò)數(shù)據(jù)流量中的異常數(shù)據(jù)流進(jìn)行分類,包括以下步驟:
步驟S1:對(duì)全網(wǎng)絡(luò)數(shù)據(jù)流量進(jìn)行異常數(shù)據(jù)流量抽取,并輸出異常數(shù)據(jù)流量中的異常數(shù)據(jù)流的集合{S1、S2、…、Si};
步驟S2:計(jì)算上述異常數(shù)據(jù)流按包計(jì)數(shù)時(shí)的異常數(shù)據(jù)流的大小的平均值其中1≤p≤i,計(jì)算上述異常數(shù)據(jù)流按照字節(jié)計(jì)數(shù)時(shí)的包的大小的平均值其中1≤p≤i,提取上述異常數(shù)據(jù)流的至少一個(gè)特征,并分別統(tǒng)計(jì)提取的特征的分布熵H,以所述的以及各特征的分布熵H作為坐標(biāo)值,將上述異常數(shù)據(jù)流進(jìn)行特征向量化,形成多維空間中的點(diǎn)集;
步驟S3:將上述的點(diǎn)集根據(jù)Canopy計(jì)算方法進(jìn)行粗聚類,得到該點(diǎn)集的聚類中心以及該聚類中心的中心點(diǎn)的個(gè)數(shù)K值;
步驟S4:根據(jù)上述聚類中心以及K值采用K-means計(jì)算方法將上述特征向量化后的異常數(shù)據(jù)流進(jìn)行細(xì)聚類,最終得到異常數(shù)據(jù)流的精確分類結(jié)果。
在本發(fā)明全網(wǎng)絡(luò)異常數(shù)據(jù)流分類方法的另一個(gè)實(shí)施例中,在步驟S2中,將上述的異常數(shù)據(jù)流進(jìn)行特征向量化所提取的特征包括:源IP地址、目的IP地址、源端口號(hào)、目的端口號(hào)、輸入的路由器接口、輸出的路由器接口、前一跳自治系統(tǒng)號(hào)、后一跳自治系統(tǒng)號(hào)、源自治系統(tǒng)號(hào)、目的自治系統(tǒng)號(hào)。
在本發(fā)明全網(wǎng)絡(luò)異常數(shù)據(jù)流分類方法的另一個(gè)實(shí)施例中,在步驟S3中,將該點(diǎn)集根據(jù)Canopy計(jì)算方法進(jìn)行粗聚類,得到聚類中心以及該聚類中心的中心點(diǎn)的個(gè)數(shù)K值的方法包括:
S31:將該點(diǎn)集分成大小固定的文件塊Doc1、Doc2、…、Docn的集合{Doc1、Doc2、…、Docn};
S32:將該文件塊的集合{Doc1、Doc2、…、Docn}送入到Mapreduce處理程序中,使其中每個(gè)文件塊Docx(其中1≤x≤n),對(duì)應(yīng)一個(gè)Map函數(shù)處理過(guò)程,每個(gè)Map函數(shù)處理過(guò)程將對(duì)應(yīng)的文件塊Docx中的點(diǎn),運(yùn)用Canopy計(jì)算方法進(jìn)行粗聚類,得到每個(gè)文件塊Docx的中間聚類中心;
S33:Mapreduce處理程序中的Reduce處理過(guò)程將上述每個(gè)文件塊Docx的中間聚類中心進(jìn)行集合,建成一個(gè)新文件塊Docx',將該新文件塊Docx'再次運(yùn)用Canopy計(jì)算方法進(jìn)行粗聚類,得到最終的聚類中心以及該聚類中心的中心點(diǎn)的個(gè)數(shù)K值。
在本發(fā)明全網(wǎng)絡(luò)異常數(shù)據(jù)流分類方法的另一個(gè)實(shí)施例中,上述Canopy計(jì)算方法包括:
S3A:設(shè)定兩個(gè)閾值參數(shù)T1和T2,且T1<T2;
S3B:將上述的文件塊中的第一個(gè)點(diǎn)存入到一個(gè)Canopy中,該第一個(gè)點(diǎn)作為該Canopy的中心點(diǎn),并將該Canopy放入到Canopy集合中作為該Canopy集合的子集;
S3C:繼續(xù)讀取該文件塊中的點(diǎn)M,利用距離計(jì)算方法計(jì)算該點(diǎn)M分別與上述Canopy集合中的所有子集的中心點(diǎn)的距離,分別得到距離值D1、D2、…、Dn;
S3D:將距離值D1、D2、…、Dn與上述的T1和T2比較,分以下情況處理:
距離值D1、D2、…、Dn中小于T2的,將該點(diǎn)M分別加入到這些距離值對(duì)應(yīng)的子集中,如果小于T2的距離值中有小于T1的,則將該點(diǎn)M從該文件塊中刪除,如果小于T2的距離值均大于等于T1,則將該點(diǎn)M仍保留在該文件塊中;
距離值D1、D2、…、Dn均大于T2,則將該點(diǎn)M存入到新建的Canopy中,并作為新建的Canopy的中心點(diǎn),之后將該新建的Canopy也放入到上述的Canopy集合中作為子集;
S3E:依次讀取該文件塊中的點(diǎn),每讀取一個(gè)點(diǎn),依次執(zhí)行步驟S3C、S3D,直到不需要新建Canopy為止;
S3F:將得到的Canopy集合中的每個(gè)子集的度量值求均值,得到聚類中心。
在本發(fā)明全網(wǎng)絡(luò)異常數(shù)據(jù)流分類方法的另一個(gè)實(shí)施例中,在步驟S2中,提取異常數(shù)據(jù)流的源IP地址srcIP和源端口號(hào)srcport兩個(gè)特征,計(jì)算源IP地址的分布熵H(srcIP),計(jì)算源端口號(hào)的分布熵H(srcport),以所述H(srcIP)、H(srcport)、為坐標(biāo)值,對(duì)所述異常數(shù)據(jù)流進(jìn)行特征向量化。
在本發(fā)明全網(wǎng)絡(luò)異常數(shù)據(jù)流分類方法的另一個(gè)實(shí)施例中,在步驟S3C中,該距離計(jì)算方法采用曼哈頓距離方法,方法如下:
式中:
D—兩點(diǎn)距離;
xn—文件塊Docx或Docx'中的任一點(diǎn)的源IP地址特征坐標(biāo)值,—為中心點(diǎn)的源IP地址特征坐標(biāo)值;
Yn—文件塊Docx或Docx'中的任一點(diǎn)的源端口號(hào)特征坐標(biāo)值,—為中心點(diǎn)的源端口號(hào)特征坐標(biāo)值。
在本發(fā)明全網(wǎng)絡(luò)異常數(shù)據(jù)流分類方法的另一個(gè)實(shí)施例中,在步驟S4中,采用K-means計(jì)算方法將該異常數(shù)據(jù)流進(jìn)行細(xì)聚類的方法包括:
S41:根據(jù)步驟S3中所述的聚類中心的中心點(diǎn)的個(gè)數(shù)K值,將該點(diǎn)集分成大小固定的K個(gè)文件塊A1、A2、…、Ak,并將步驟S3中所述的聚類中心作為K-means計(jì)算方法的初始中心;
S42:將該K個(gè)文件塊A1、A2、…、Ak分別送入到Mapreduce處理程序中,使每個(gè)文件塊對(duì)應(yīng)一個(gè)Map函數(shù)處理過(guò)程;
S43:每個(gè)Map函數(shù)處理過(guò)程采用K-means計(jì)算方法,得到該初始中心的中心點(diǎn)key和該文件塊Ax中的每個(gè)點(diǎn)value對(duì)應(yīng)分配形成的{key,value}鍵值對(duì),其中,1≤x≤k;
S44:每個(gè)Map函數(shù)處理過(guò)程將文件塊中相同key的value值進(jìn)行集合,形成“(key),{value1,value2,…,valuek}”格式的集合列表,并送入到Reduce處理過(guò)程中;
S45:再由該Reduce處理過(guò)程將不同的Map函數(shù)處理過(guò)程送進(jìn)來(lái)的集合列表中相同key的value值進(jìn)行統(tǒng)計(jì)集合,并把每個(gè)key的value值新建成一個(gè)文件塊,得到新建的文件塊B1、B2、…、Bo;
S46:分別計(jì)算該新建的文件塊B1、B2、…、Bo的中心點(diǎn),并將該文件塊B1、B2、…、Bo的中心點(diǎn)的集合重新作為K-means計(jì)算方法的初始中心;
S47:將該文件塊B1、B2、…、Bo作為新輸入的文件塊返回到步驟S42進(jìn)行處理,再依次執(zhí)行步驟S43、步驟S44、步驟S45、步驟S46,直到初始中心不再發(fā)生變化,得到最終的異常數(shù)據(jù)流的精確分類結(jié)果。
在本發(fā)明全網(wǎng)絡(luò)異常數(shù)據(jù)流分類方法的另一個(gè)實(shí)施例中,所述K-means計(jì)算方法包括:
S4A:設(shè)定一個(gè)閾值T3;
S4B:將文件塊中的點(diǎn)分別與初始中心的中心點(diǎn)計(jì)算距離,得到距離值D1'、D2'、…、Do';
S4C:該距離值D1'、D2'、…、Do'小于T3的點(diǎn)與該的中心點(diǎn)形成以該中心點(diǎn)為鍵,該點(diǎn)為值的{key,value}形式的鍵值對(duì)。
本發(fā)明的有益效果是:本發(fā)明提供的全網(wǎng)絡(luò)異常數(shù)據(jù)流分類方法,采用了先將抽取的異常數(shù)據(jù)流根據(jù)提取的特征進(jìn)行特征向量化,形成空間點(diǎn)集,然后對(duì)該空間點(diǎn)集根據(jù)Canopy計(jì)算方法進(jìn)行粗聚類,得到該點(diǎn)集的聚類中心以及K值,再將該聚類中心作為初始中心,采用K-means計(jì)算方法將所述特征向量化后的異常數(shù)據(jù)流進(jìn)行細(xì)聚類,最終得到異常數(shù)據(jù)流的精確分類結(jié)果。本發(fā)明采用的Canopy計(jì)算方法,不需要提前知道引起異常數(shù)據(jù)流的原因的種類,粗聚類計(jì)算得出初始的引起異常的原因的種類,然后再利用K-means算法簡(jiǎn)單高效的對(duì)異常數(shù)據(jù)流進(jìn)行分類。本發(fā)明的方法將無(wú)規(guī)律的異常數(shù)據(jù)流劃分為有規(guī)律的類別,從而提高本發(fā)明分類方法的計(jì)算質(zhì)量,降低本發(fā)明分類方法的計(jì)算復(fù)雜度。本發(fā)明的方法適用在基于Mapreduce并行編程模型的程序中,能夠充分滿足全網(wǎng)絡(luò)流量數(shù)據(jù)復(fù)雜且多的情況,簡(jiǎn)單、高效、準(zhǔn)確的將異常的數(shù)據(jù)流進(jìn)行分類。
附圖說(shuō)明
圖1是根據(jù)本發(fā)明全網(wǎng)絡(luò)異常數(shù)據(jù)流分類方法的一實(shí)施例的流程圖;
圖2是根據(jù)本發(fā)明全網(wǎng)絡(luò)異常數(shù)據(jù)流分類方法的另一實(shí)施例中的基于Mapreduce并行編程模型中的Canopy計(jì)算方法進(jìn)行粗聚類的方法的流程圖;
圖3是應(yīng)用圖2的實(shí)例圖;
圖4是根據(jù)本發(fā)明全網(wǎng)絡(luò)異常數(shù)據(jù)流分類方法的另一實(shí)施例中的基于Mapreduce并行編程模型中的K-means計(jì)算方法進(jìn)行細(xì)聚類的方法的流程圖;
圖5是應(yīng)用圖4的實(shí)例圖。
具體實(shí)施方式
為了便于理解本發(fā)明,下面結(jié)合附圖和具體實(shí)施例,對(duì)本發(fā)明進(jìn)行更詳細(xì)的說(shuō)明。附圖中給出了本發(fā)明的較佳的實(shí)施例。但是,本發(fā)明可以以許多不同的形式來(lái)實(shí)現(xiàn),并不限于本說(shuō)明書所描述的實(shí)施例。相反地,提供這些實(shí)施例的目的是使對(duì)本發(fā)明的公開內(nèi)容的理解更加透徹全面。
需要說(shuō)明的是,除非另有定義,本說(shuō)明書所使用的所有的技術(shù)和科學(xué)術(shù)語(yǔ)與屬于本發(fā)明的技術(shù)領(lǐng)域的技術(shù)人員通常理解的含義相同。在本發(fā)明的說(shuō)明書中所使用的術(shù)語(yǔ)只是為了描述具體的實(shí)施例的目的,不是用于限制本發(fā)明。
圖1是根據(jù)本發(fā)明一實(shí)施方式對(duì)全網(wǎng)絡(luò)異常數(shù)據(jù)流分類方法的流程圖。從圖1可以看出,該流程始于開始,然后,依次執(zhí)行步驟S1,對(duì)全網(wǎng)絡(luò)數(shù)據(jù)流量進(jìn)行異常數(shù)據(jù)流量抽取,并輸出異常數(shù)據(jù)流量中的異常數(shù)據(jù)流的集合{S1、S2、…、Si};
步驟S2:計(jì)算所述異常數(shù)據(jù)流按包計(jì)數(shù)時(shí)的異常數(shù)據(jù)流的大小的平均值(其中1≤p≤i),計(jì)算所述異常數(shù)據(jù)流按照字節(jié)計(jì)數(shù)時(shí)的包的大小的平均值(其中1≤p≤i),提取所述異常數(shù)據(jù)流的至少一個(gè)特征,并分別統(tǒng)計(jì)提取的特征的分布熵H,以所述的以及各特征的分布熵H作為坐標(biāo)值,將所述異常數(shù)據(jù)流進(jìn)行特征向量化,形成多維空間中的點(diǎn)集;
步驟S3:將該點(diǎn)集根據(jù)Canopy計(jì)算方法進(jìn)行粗聚類,得到聚類中心以及該聚類中心的中心點(diǎn)的個(gè)數(shù)K值;
步驟S4:根據(jù)該聚類中心以及該K值采用K-means計(jì)算方法將上述特征向量化后的異常數(shù)據(jù)流進(jìn)行細(xì)聚類,最終得到異常數(shù)據(jù)流的精確分類結(jié)果。
在步驟S1中,該方法雖然將抽取的全網(wǎng)絡(luò)異常數(shù)據(jù)流作為輸入,但是卻對(duì)異常數(shù)據(jù)流的抽取方法沒(méi)有什么限制,兩部分是相對(duì)獨(dú)立運(yùn)行的,抽取的方法可以使用現(xiàn)在常用的技術(shù),例如現(xiàn)有技術(shù)中的基于IP流抽樣方法等。
優(yōu)選的,對(duì)于步驟S2中,將異常數(shù)據(jù)流進(jìn)行特征向量化所提取的特征包括:源IP地址、目的IP地址、源端口號(hào)、目的端口號(hào)、輸入的路由器接口、輸出的路由器接口、前一跳自治系統(tǒng)號(hào)、后一跳自治系統(tǒng)號(hào)、源自治系統(tǒng)號(hào)、目的自治系統(tǒng)號(hào)。在互聯(lián)網(wǎng)中,一個(gè)自治系統(tǒng)(AS)是一個(gè)有權(quán)自主地決定在本系統(tǒng)中應(yīng)采用何種路由協(xié)議的小型單位。一個(gè)自治系統(tǒng)有時(shí)也被稱為是一個(gè)路由選擇域,一個(gè)自治系統(tǒng)將會(huì)分配一個(gè)全局的唯一的號(hào)碼,我們把這個(gè)號(hào)碼叫做自治系統(tǒng)號(hào),前一跳和后一跳自治系統(tǒng)號(hào)是指,指在路由器在未連接到目的網(wǎng)絡(luò)時(shí)會(huì)有一個(gè)提供后一跳路由的鄰居路由器,用來(lái)傳遞數(shù)據(jù)到目的地,此時(shí)當(dāng)有兩個(gè)相鄰的路由協(xié)議選擇時(shí),自治系統(tǒng)提供的兩個(gè)號(hào)碼。
其中特征:源IP地址、目的IP地址、源端口號(hào)、目的端口號(hào)說(shuō)明了一條數(shù)據(jù)流在開始和結(jié)束時(shí)的主機(jī);特征:輸入的路由器接口、輸出的路由器接口、前一跳自治系統(tǒng)號(hào)、后一跳自治系統(tǒng)號(hào)、源自治系統(tǒng)號(hào)、目的自治系統(tǒng)號(hào)說(shuō)明的是一條數(shù)據(jù)流選擇的網(wǎng)絡(luò)路徑,所以當(dāng)抽取出異常數(shù)據(jù)流時(shí),首先是將上述的特征提取出來(lái),按照數(shù)據(jù)流的源端口號(hào)、源IP地址、源端自治系統(tǒng)號(hào)、前一跳自治系統(tǒng)號(hào)、輸入的路由器接口、輸出路由器接口、后一跳自治系統(tǒng)號(hào)、目的自治系統(tǒng)號(hào)、目的IP地址、目的端口號(hào)這樣的順序依次提取特征。分別計(jì)算出異常數(shù)據(jù)流按包計(jì)數(shù)時(shí)的異常數(shù)據(jù)流的大小的平均值(其中1≤p≤i),計(jì)算所述異常數(shù)據(jù)流按照字節(jié)計(jì)數(shù)時(shí)的包的大小的平均值(其中1≤p≤i),以及這十個(gè)特征的分布熵H,將這十個(gè)特征分布熵H、作為坐標(biāo)值,將異常數(shù)據(jù)流特征向量化,提取這十個(gè)特征,能夠使異常數(shù)據(jù)流分類更精確,分析異常原因時(shí)更清楚明了,不會(huì)出現(xiàn)遺漏的現(xiàn)象。
通過(guò)以上步驟S1和步驟S2優(yōu)選的實(shí)施例抽取出了異常數(shù)據(jù)流以及將這些異常數(shù)據(jù)流進(jìn)行向量化,形成點(diǎn)集,接下來(lái)就需要對(duì)該點(diǎn)集進(jìn)行聚類處理,聚類最耗費(fèi)時(shí)間的地方就是計(jì)算數(shù)據(jù)的相似性,所以本發(fā)明的方法采用首選對(duì)該點(diǎn)集做預(yù)處理,先進(jìn)行一次粗聚類,其中粗聚類采用Canopy計(jì)算方法,該方法相對(duì)簡(jiǎn)單,并且計(jì)算代價(jià)較低。
下面以本發(fā)明的另一個(gè)實(shí)施例結(jié)合圖2和圖3,對(duì)步驟S3中根據(jù)Canopy計(jì)算方法進(jìn)行粗聚類,得到上述點(diǎn)集的聚類中心以及該聚類中心的中心點(diǎn)的個(gè)數(shù)K值的方法進(jìn)行說(shuō)明,如圖2所示基于Mapreduce并行編程模型中的Canopy計(jì)算方法進(jìn)行粗聚類的方法的流程圖,包括如下步驟:
S31:將步驟S2中所述的點(diǎn)集分成大小固定的文件塊Doc1、Doc2、…、Docn的集合{Doc1、Doc2、…、Docn};
S32:將所述文件塊的集合{Doc1、Doc2、…、Docn}送入到Mapreduce處理程序中,使其中每個(gè)文件塊Docx,其中1≤x≤n,對(duì)應(yīng)一個(gè)Map函數(shù)處理過(guò)程,每個(gè)Map函數(shù)處理過(guò)程將對(duì)應(yīng)的文件塊Docx中的點(diǎn),運(yùn)用Canopy計(jì)算方法進(jìn)行粗聚類,得到所述每個(gè)文件塊Docx的中間聚類中心;
S33:Mapreduce處理程序中的Reduce處理過(guò)程將所述每個(gè)文件塊的中間聚類中心進(jìn)行集合,建成一個(gè)新文件塊Docx',將所述新文件塊Docx'再次運(yùn)用Canopy計(jì)算方法進(jìn)行粗聚類,得到最終的聚類中心以及所述聚類中心的中心點(diǎn)的個(gè)數(shù)K值。
結(jié)合圖3所示的應(yīng)用上述Canopy計(jì)算方法進(jìn)行粗聚類的實(shí)例,具體說(shuō)明上述的方法。
首先,在步驟S2中,提取源IP地址srcIP和源端口號(hào)srcport兩個(gè)特征,計(jì)算源IP地址的分布熵H(srcIP),計(jì)算源端口號(hào)的分布熵H(srcport),在以H(srcIP)、H(srcport)結(jié)合值和作為異常數(shù)據(jù)流的坐標(biāo)值,將異常數(shù)據(jù)流進(jìn)行特征向量化,形成{H(srcIP)、H(srcport)}格式的二維空間的點(diǎn)集,如圖3中T1部分所示;
執(zhí)行進(jìn)入Mapreduce處理程序。
在步驟S31中,將步驟S2中的點(diǎn)集分成如圖3中T2部分所示的兩個(gè)文件塊,T2-1[{8.1,8.1}、{7.1,7.1}、{6.2,6.2}、{7.1,7.1}、{2.1,2.1}、{1.1,1.1}、{3.0,3.0}、{0.1,0.1}]和T2-2[{8,8}、{7,7}、{6.1,6.1}、{9,9}、{2,2}、{1,1}、{0,0}、{2.9,2.9}];
在步驟S32中,將這兩個(gè)文件塊分別送入到Mapreduce處理程序中,使其中每個(gè)文件塊對(duì)應(yīng)一個(gè)Map函數(shù)處理過(guò)程,如圖3所示T2-1文件塊對(duì)應(yīng)Mapper1,T2-2文件塊對(duì)應(yīng)Mapper2,每個(gè)Map函數(shù)處理過(guò)程運(yùn)用Canopy計(jì)算方法進(jìn)行粗聚類,得到如圖3中的T3部分所示,T2-1文件塊的中間聚類中心為[{7.125,7.125},{1.575,1.575},{0.1,0.1}],T2-2文件塊的中間聚類中心為[{7.525,7.525},{1.475,1.475},{0,0}];
在步驟S33中,Mapreduce處理程序中的Reduce處理過(guò)程將兩個(gè)文件塊的中間聚類中心進(jìn)行集合,建成一個(gè)如圖3中的T4部分所示的新文件塊[{7.125,7.125},{1.575,1.575},{0.1,0.1},{7.525,7.525},{1.475,1.475},{0,0}],再將該文件塊再次運(yùn)用Canopy計(jì)算方法進(jìn)行粗聚類,得到如圖3中的T5部分所示的最終的聚類中心[{7.325,7.325},{0.7875,0.7875}],以及該聚類中心的中心點(diǎn)的個(gè)數(shù)K=2。
該方法采用Mapreduce處理程序?qū)⒎殖晒潭ù笮〉漠惓?shù)據(jù)流文件塊并行計(jì)算,能夠充分滿足全網(wǎng)絡(luò)數(shù)據(jù)流量復(fù)雜且多的情況,簡(jiǎn)化了計(jì)算程序,縮短計(jì)算過(guò)程,提高方法的效率。
對(duì)于該Canopy計(jì)算方法首先先定義兩個(gè)概念:
定義1(Canopy):對(duì)于給定的數(shù)據(jù)集合Y={yi|i=1,2,...n},對(duì)于任意xi∈Y,滿足
則xi稱為Canopy集合。
式中:
Cj——Canopy中心點(diǎn);
T2——Canopy集合半徑的閾值。
定義2(Canopy中心點(diǎn)):對(duì)于給定的數(shù)據(jù)集合Y={yi|i=1,2,...n},對(duì)于任意xi∈Y,滿足:
則稱Cm為非Canopy候選中心點(diǎn)。
把相近的數(shù)據(jù)放在一個(gè)子集內(nèi),這種對(duì)數(shù)據(jù)對(duì)象進(jìn)行預(yù)處理的方法就做Canopy,經(jīng)過(guò)處理的數(shù)據(jù)分為多個(gè)Canopy,Canopy之間可以重疊,但不會(huì)出現(xiàn)數(shù)據(jù)遺漏的情況。在使用Canopy計(jì)算方法時(shí),要求輸入兩個(gè)閾值參數(shù)T1和T2,閾值參數(shù)不能過(guò)大,Canopy之間的重疊不能太多,參數(shù)過(guò)大或者重疊太多會(huì)大大減少后續(xù)需要計(jì)算相似性的數(shù)據(jù)個(gè)數(shù),此時(shí)數(shù)據(jù)分類比較含糊。
以下將對(duì)上述步驟S3中Canopy計(jì)算方法進(jìn)行描述包括:
S3A:設(shè)定兩個(gè)閾值參數(shù)T1和T2,且T1<T2;
S3B:將文件塊中的第一個(gè)點(diǎn)存入到一個(gè)Canopy中,該第一個(gè)點(diǎn)作為該Canopy的中心點(diǎn),并將該Canopy放入到Canopy集合中作為該Canopy集合的子集;
S3C:繼續(xù)讀取該文件塊中的點(diǎn)M,利用距離計(jì)算方法計(jì)算該點(diǎn)M分別與上述Canopy集合中的所有子集的中心點(diǎn)的距離,分別得到距離值D1、D2、…、Dn;
S3D:將距離值D1、D2、…、Dn與上述的T1和T2比較,分以下情況處理:
距離值D1、D2、…、Dn中小于T2的,將該點(diǎn)M分別加入到這些距離值對(duì)應(yīng)的子集中,如果小于T2的距離值中有小于T1的,則將該點(diǎn)M從該文件塊中刪除,如果小于T2的距離值均大于等于T1,則將該點(diǎn)M仍保留在該文件塊中;
距離值D1、D2、…、Dn均大于T2,則將該點(diǎn)M存入到新建的Canopy中,并作為新建的Canopy的中心點(diǎn),之后將該新建的Canopy也放入到上述的Canopy集合中作為子集;
S3E:依次讀取該文件塊中的點(diǎn),每讀取一個(gè)點(diǎn),依次執(zhí)行步驟S3C、S3D,直到不需要新建Canopy為止;
S3F:將得到的Canopy集合中的每個(gè)子集的度量值求均值,得到聚類中心。
下面將以一個(gè)二維空間的點(diǎn)集形成的文件塊{(8.1,8.1),(7.1,7.1),(6.2,6.2),(7.1,7.1),(2.1,2.1),(1.1,1.1),(0.1,0.1),(3.0,3.0)}為例對(duì)如何使用Canopy計(jì)算方法,進(jìn)行詳細(xì)說(shuō)明:
設(shè)定的兩個(gè)閾值參數(shù)T1=4和T2=8,讀取文件塊中的第一個(gè)點(diǎn)(8.1,8.1)存入到Canopy1中,并從該文件塊中刪除這個(gè)點(diǎn),該點(diǎn)作為Canopy1的中心點(diǎn),并將該Canopy1放入到Canopy集合中作為該Canopy集合的子集;然后開始遍歷整個(gè)文件塊中其它點(diǎn)與它的距離。
本例中優(yōu)選的距離計(jì)算方法采用采用曼哈頓距離方法,方法如下:
式中:
D—兩點(diǎn)距離;
xn—該文件塊中的任一點(diǎn)的源IP地址特征坐標(biāo)值,—為中心點(diǎn)的源IP地址特征坐標(biāo)值;
Yn—該文件塊中的任一點(diǎn)的源端口號(hào)特征坐標(biāo)值,—為中心點(diǎn)的源端口號(hào)特征坐標(biāo)值;
讀取該文件塊中的第二點(diǎn)(7.1,7.1),計(jì)算得到該點(diǎn)與Canopy1中心點(diǎn)(8.1,8.1)之間的距離為2,2小于T2,且同時(shí)小于T1,則將該點(diǎn)(7.1,7.1)加入到Canopy1,并從該文件塊中刪除該點(diǎn);
繼續(xù)讀取第三個(gè)點(diǎn)(6.2,6.2),計(jì)算該點(diǎn)與Canopy1中心點(diǎn)(8.1,8.1)的距離是3.8,3.8小于T2,同時(shí)也小于T1,所以第三點(diǎn)(6.2,6.2)也是屬于Canopy1。同樣將其加入Canopy1中,并從該文件塊中刪除該點(diǎn);
讀取第四個(gè)點(diǎn)(7.1,7.1),該點(diǎn)與Canopy1中心點(diǎn)(8.1,8.1)的距離為2,2小于T2,同時(shí)也小于T1,將該點(diǎn)(7.1,7.1)加入到Canopy1中,并從該文件塊中刪除該點(diǎn);
讀取第五個(gè)點(diǎn)(2.1,2.1),計(jì)算該點(diǎn)與Canopy1中心點(diǎn)(8.1,8.1)的距離是12,大于T2,所以該點(diǎn)(2.1,2.1)不屬于Canopy1,新建成一個(gè)Canopy2,將該點(diǎn)(2.1,2.1)加入到新建的Canopy2中,并作為其中心點(diǎn),并將該點(diǎn)從該文件塊中刪除,將該Canopy2也放入到上述的Canopy集合中作為子集;
讀取第六個(gè)點(diǎn)(1.1,1.1),計(jì)算該點(diǎn)到Canopy1中心點(diǎn)(8.1,8.1)的距離是14,14大于T2,到Canopy2中心點(diǎn)(2.1,2.1)的距離是2,2小于T2,同時(shí)也小于T1,所以將第六個(gè)點(diǎn)加入到Canopy2中,并將該點(diǎn)從該文件塊中刪除;
讀取第七個(gè)點(diǎn)(0.1,0.1),計(jì)算該點(diǎn)到Canopy1中心點(diǎn)(8.1,8.1)的距離是16,16大于T2,到Canopy2中心點(diǎn)(2.1,2.1)的距離是4,4小于T2且4=T1,所以將第七個(gè)點(diǎn)加入到Canopy2中,但該點(diǎn)仍保留在該文件塊中;
讀取第八個(gè)點(diǎn)(3.0,3.0),計(jì)算該點(diǎn)到Canopy1中心點(diǎn)(8.1,8.1)的距離是10.2,10.2大于T2,到Canopy2中心點(diǎn)(2.1,2.1)的距離是1.8,1.8小于T2,且也小于T1,所以將該點(diǎn)加入到Canopy2。
此時(shí)所有的Canopy的狀態(tài)是:
Canopy1(8.1,8.1):{(8.1,8.1),(7.1,7.1),(6.2,6.2),(7.1,7.1)}
Canopy2(2.1,2.1):{(2.1,2.1),(1.1,1.1),(0.1,0.1),(3.0,3.0)}
此時(shí)文件塊中還剩下一個(gè)點(diǎn)是(0.1,0.1),將它自己作為一個(gè)新的Canopy即Canopy3(0.1,0.1);
此時(shí)Canopy集合中的Canopy的最后狀態(tài)是:
Canopy1(8.1,8.1):{(8.1,8.1),(7.1,7.1),(6.2,6.2),(7.1,7.1)}
Canopy2(2.1,2.1):{(2.1,2.1),(1.1,1.1),(0.1,0.1),(3.0,3.0)}
Canopy3(0.1,0.1):{(0.1,0.1)};
最后將Canopy集合中的每個(gè)子集的坐標(biāo)值分別求均值,得到每個(gè)Canopy的中心點(diǎn),即
Canopy1為Canopy1(7.125,7.125)
Canopy2為Canopy2(1.575,1.575)
Canopy 3(0.1,0.1)
最終得到聚類中心{(7.125,7.125),(1.575,1.575),(0.1,0.1)},該聚類中心的中心點(diǎn)個(gè)數(shù)K=3。
通過(guò)以上對(duì)從步驟S3的優(yōu)選實(shí)施例,得到了聚類中心以及聚類中心的中心個(gè)數(shù)K值,接下來(lái)將根據(jù)得到的聚類中心以及K值,對(duì)異常數(shù)據(jù)流進(jìn)行細(xì)聚類。
圖4所示是根據(jù)本發(fā)明全網(wǎng)絡(luò)異常數(shù)據(jù)流分類方法的另一實(shí)施例中的基于Mapreduce并行編程模型中的K-means計(jì)算方法進(jìn)行細(xì)聚類的方法的流程圖。由圖4可以看出該流程包括如下步驟:
S41:根據(jù)步驟S3中所述聚類中心的中心點(diǎn)的個(gè)數(shù)K值,將所述的多維空間的點(diǎn)集分成大小固定的K個(gè)文件塊A1、A2、…、Ak,并將所述聚類中心作為K-means計(jì)算方法的初始中心;
S42:將所述K個(gè)文件塊A1、A2、…、Ak分別送入到Mapreduce處理程序中,使每個(gè)文件塊對(duì)應(yīng)一個(gè)Map函數(shù)處理過(guò)程;
S43:每個(gè)Map函數(shù)處理過(guò)程采用K-means計(jì)算方法,得到所述初始中心的中心點(diǎn)key和所述文件塊Ax(其中1≤x≤k)中的每個(gè)點(diǎn)value對(duì)應(yīng)分配形成的{key,value}鍵值對(duì);
S44:每個(gè)Map函數(shù)處理過(guò)程將文件塊中相同key的value值進(jìn)行集合,形成“(key),{value1,value2,…,valuek}”格式的集合列表,并送入到Reduce處理過(guò)程中;
S45:再由所述Reduce處理過(guò)程將不同的Map函數(shù)處理過(guò)程送進(jìn)來(lái)的集合列表中相同key的value值進(jìn)行統(tǒng)計(jì)集合,并把每個(gè)key的value值新建成一個(gè)文件塊,得到新建的文件塊B1、B2、…、Bo;
S46:分別計(jì)算所述新建的文件塊B1、B2、…、Bo的中心點(diǎn),并將所述文件塊B1、B2、…、Bo的中心點(diǎn)的集合重新作為K-means計(jì)算方法的初始中心;
S47:將所述文件塊B1、B2、…、Bo作為新輸入的文件塊返回到步驟S42進(jìn)行處理,再依次執(zhí)行步驟S43、步驟S44、步驟S45、步驟S46,直到初始中心不再發(fā)生變化,得到最終的異常數(shù)據(jù)流的精確分類結(jié)果。
下面結(jié)合圖5所示的應(yīng)用上述K-means計(jì)算方法進(jìn)行細(xì)聚類的實(shí)例,具體說(shuō)明上述的方法。
首先將聚類中心[{7.325,7.325},{0.7875,0.7875}]作為K-means計(jì)算方法的初始中心,K值為2。在步驟S41:根據(jù)聚類中心的中心點(diǎn)的個(gè)數(shù)K=2,將上述向量化后的點(diǎn)集如圖5中F1部分所示,分成大小固定的2個(gè)文件塊A1、A2。
在步驟S42中,將步驟S41中的2個(gè)文件塊A1、A2分別送入到Mapreduce處理程序中,使每個(gè)文件塊對(duì)應(yīng)一個(gè)Map函數(shù)處理過(guò)程,如圖5中所示,A1對(duì)應(yīng)Mapper1,A2對(duì)應(yīng)Mapper2。
在步驟S43中,每個(gè)Map函數(shù)處理過(guò)程采用K-means計(jì)算方法,得到初始中心的中心點(diǎn)[{7.325,7.325},{0.7875,0.7875}]和文件塊A1、A2中的每個(gè)點(diǎn)value對(duì)應(yīng)分配形成的{key,value}鍵值對(duì),如圖5中F2部分所示,例如{(7.325,7.325),(8.1,8.1)}。
在步驟S44中,每個(gè)Map函數(shù)處理過(guò)程將文件塊中相同key的value值進(jìn)行集合,形成如圖5中F3部分所示的集合列表,例如“(7.325,7.325),{(8.1,8.1),(7.1,7.1),(6.2,6.2),(7.1,7.1)}”,并該集合列表送入到Reduce處理過(guò)程中。
在步驟S45中,再由所述Reduce處理過(guò)程將不同的Map函數(shù)處理過(guò)程送進(jìn)來(lái)的集合列表中{7.325,7.325}和{0.7875,0.7875}這兩個(gè)key的value值分別進(jìn)行統(tǒng)計(jì)集合,并把每個(gè)key的value值新建成一個(gè)文件塊,得到如圖5中F4部分所示的新建的文件塊B1、B2;
在步驟S46中:截止到步驟S45,第一輪的分類已經(jīng)完成后再分別計(jì)算新建的文件塊B1、B2的中心點(diǎn),并將文件塊B1、B2的中心點(diǎn)的集合重新作為K-means計(jì)算方法的初始中心;
在步驟S47中:將兩個(gè)新建的文件塊B1、B2作為新輸入的文件塊返回到步驟S42進(jìn)行處理,再依次執(zhí)行步驟S43、步驟S44、步驟S45、步驟S46,直到初始中心不再發(fā)生變化,得到最終的異常數(shù)據(jù)流的精確分類結(jié)果。
在上述步驟S43中用到了K-means計(jì)算方法,以下對(duì)該方法做具體的描述,該方法包括:
S4A:設(shè)定一個(gè)閾值T3;
S4B:將文件塊中的點(diǎn)分別與初始中心的中心點(diǎn)[{7.325,7.325},{0.7875,0.7875}]計(jì)算距離,得到距離值D1'、D2'、…、Do';
S4C:距離值D1'、D2'、…、Do'小于T3的點(diǎn)與對(duì)應(yīng)的中心點(diǎn)形成以該中心點(diǎn)為鍵,該點(diǎn)為值的{key,value}形式的鍵值對(duì),例如圖5中F2部分所示的{(7.325,7.325),(8.1,8.1)}。
本發(fā)明提出的新的分類方法,這種分類方法不需要預(yù)先知道異常數(shù)據(jù)流集中有多少種類的異常。這一點(diǎn)是非常重要的,因?yàn)椴僮髡吒静荒苤獣栽诰唧w網(wǎng)絡(luò)中有多少引起異常數(shù)據(jù)流的原因種類。本發(fā)明的分類方法將無(wú)規(guī)律的異常數(shù)據(jù)流劃分為有規(guī)律的異常數(shù)據(jù)流的類別,依然保留K-means細(xì)聚類方法,從而提高算法的計(jì)算質(zhì)量,降低計(jì)算復(fù)雜度,實(shí)現(xiàn)簡(jiǎn)單,計(jì)算效率高,分類效果好等優(yōu)點(diǎn)。
本發(fā)明同時(shí)適用于Mapreduce處理程序,縮減了計(jì)算時(shí)間,進(jìn)一步提高計(jì)算效率。
以上所述僅為本發(fā)明的實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說(shuō)明書及附圖內(nèi)容所作的等效結(jié)構(gòu)變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均包括在本發(fā)明的專利保護(hù)范圍內(nèi)。