基于層次聚類的多策略未知協議分類方法
在近些年網絡空間安全形勢愈發嚴峻的情況下,對網絡協議分析提出了越來越高的要求,其中,對未知協議分類分析更是亟需攻克的難點。針對未知協議的分類問題,提出一種基于層次聚類的多策略未知協議分類方法。該方法從傳輸控制協議頭部特征、數據包的時空特征等維度入手,與馬爾科夫鏈相結合,首先對收集到的網絡數據進行預處理;然后提出可讀性分類機制,并運用改進的層次聚類算法的多種聚類策略,發揮現代計算機的多核計算與單指令流多數據流優勢;最后結合傳輸控制協議流中的二元組信息(目的 IP 和目的端口),對聚類結果進行調整合并,得到未知協議網絡數據的分類結果。據真實網絡數據驗證表明,該方法對未知協議的分類準確率達到 96% 以上。
隨著近些年互聯網的不斷發展,網絡應用呈現爆發式增長,其中不乏大量使用自定義協議的應用。對于網絡監管部門來說,自定義協議的標準非公開,屬于未知格式的協議。未知協議無法參考標準協議的識別方法以準確解析其數據結構,使得直接通過網絡流量來識別所屬應用協議存在較大的阻礙,增加了對網絡數據進行合法性審計監測的難度。同時,越來越多的惡意程序使用未知協議進行通信,容易隱藏在正常通信流量中,難以與其他正常的私有協議數據進行區分,給網絡監管帶來大量分析工作與難點。本文的研究重點在于把基于傳輸控制協議(Transmission Control Protocol,TCP)傳輸的未知協議數據流通過分類的方法,對相似的未知協議數據流進行標記,分類到同一集合;在后續進行流量分析時,由于集合中流量具有相似性,只針對同一集合的部分數據進行分析,即可得知當前集合所有數據的情況,減少分析過程數據量,提高分析效率。
1模型與方法
本文提出的未知協議分類模型,主要基于層次聚類算法,并結合多種策略進行結果數據調整,最終實現數據的分類。
1.1 相關理論和方法
1.1.1 聚類算法分析
聚類是指根據數據間的相似性,將具有相同屬性的對象劃分到對應數據集合的過程。聚類所生成的不同組稱為簇(cluster),一個簇包含一組數據對象的集合,具有簇內對象彼此相似,簇間對象相異的特點。
常見的數據聚類方法可分為以下幾類:基于劃分的聚類算法,例如 K 均值聚類算法(K-means Clustering Algorithm,K-means);基于密度的聚類算法,例如基于密度的噪聲應用空間聚類算法(Density-Based Spatial Clustering of Applications with Noise,DBSCAN);基于層次的聚類算法,例如基于代表點的聚類算法(Clustering Using REpresentatives,CURE);基于網格的聚類算法,例如基于網格的多分辨率的聚類算法(STatistical INformathon Gird,STING);基于模型的聚類算法,例如基于高斯混合模型的算法(Gaussian Mixture Models,GMM)等。不同的聚類算法適用于不同的應用場景。在實際網絡中,未知協議不能預先分析其規則信息,故無法預先提取標簽數據進行學習。在基于層次的聚類算法中,通過計算不同類別數據點間的相似度來創建一棵有層次的聚類樹。在聚類樹中,以不同類別的原始數據點為樹的最底層,聚類的根節點為樹的頂層,可不直接依賴 k 值和初始聚類中心點的設置進行聚類,由聚類過程自動調整,最終把相似類別聚集在一起,滿足未知協議在真實網絡中的分類需求。
1.1.2 相關工作研究
網絡協議是指在特定網絡環境中進行通信而建立的標準或者規則,包含語義、語法、時序三要素。本文中,按協議是否公開標準格式或者開發文檔進行劃分,分為已知協議和未知協議兩類。協議分類經過多年的發展,也探索出較多不同的識別路線,目前主要有端口匹配技術、深度包檢測(Deep Packet Inspection,DPI)/深度流檢測(Deep Flow Inspection,DFI)技術、機器學習技術等。汪立東等人提出基于端口的網絡流量分類,該方法具有識別速度快的優點,但對沒有公開的未知協議就無法完成分類識別,并且現在還存在很多使用動態端口以及端口復用技術的服務,會使此方法出現識別錯誤的情況;鎮佳等人 提出基于 DPI/DFI 的協議分類識別,通過規則庫匹配應用層數據的內容,該方法可以對部分存在少量字節特征的未知協議進行分類識別,但其準確性依賴于人工提取協議特征的準確性,對于復雜的未知協議無法直接通過人工找到特征,需要借助協議逆向技術來完成,無疑提高了對復雜協議識別的門檻,同時對計算機的計算能力也有一定的要求,對字節特征不明顯或幾乎不存在字節特征的加密協議無法進行識別;張鳳荔等人 提出了零知識下的比特流未知協議分類模型,該方法解決了 K-means 聚類算法的 k 值確定問題,對常規協議的分類正確率較高,但無法對加密流量進行分類;Singh[6] 提出了基于網絡行為的無監督聚類方法,使用基于關聯系數的特征選擇技術,對比 K-means 算法和 EM 算法的聚類效果,實驗結果表明 K-means 的聚類準確度更高;Zhang等人借助少量帶標簽的數據,使用半監督學習的未知協議分類方法,此方法的三元組關聯算法和投票算法都可以提升分類器的準確率,但在真實網絡中,三元組關聯會受到很大限制,使得帶標簽數據的擴展效果低于實驗室數據的測試結果,識別結果的類別也會受到標簽數量的限制,需要標簽足夠完備才能得到較好的結果;Ma 等人借助卷積網絡對未知協議進行識別,將網絡流負載當作圖像數據進行處理,需要在訓練階段使用帶標簽的數據,篩選測試階段計算出的結果,將概率低于 0.8 的流作為未知流,該方法只能識別標簽范圍內的協議類型和“未知協議”類型,無法對未知協議進行更細粒度的區分。
在以上協議分類識別技術中,均存在各類不足。如對未知協議不適用,需要搜集大量未知協議(加密協議)樣本進行訓練學習,耗費大量時間和人力,無法自動適應新出現的未知協議分類需求等。故本文提出一種新的未知協議分類模型。
1.2 協議分類模型設計
在本模型中,協議在語義和時序上具有一定統計特征,并對所有類型的協議具有普適性,故分類算法主要提取協議的語義和時序兩個維度的統計特征作為數據輸入,對已知協議和未知協議(包括加密協議)均適用。同時采用無監督的層次聚類算法進行分類,該算法可不依賴于預先定義的類或帶類標記的訓練實例,無須預先獲取大量的未知協議樣本數據,由聚類過程自動確定標記,把相似的對象歸到同一個簇中 ,符合未知協議網絡流量無先驗知識的實際情況。由于使用協議交互統計特征作為原始數據輸入,不需要搜集樣本進行標記訓練,所以也適用于新出現的未知協議。
首先對網絡流量進行捕獲抓取,經過數據篩選、規范化等處理,在聚類前先根據流字節特征進行可讀性分類,針對可讀和不可讀數據使用不同的分類參數進行差異化區分。同時使用馬爾科夫鏈(Markov Chain)來強化原始數據特征的表征能力,信息熵(Entropy)對層次聚類(Hierarchical Clustering)過程進行優化,并結合距離矩陣的對稱性,對層次聚類算法進行改進,降低計算距離矩陣的復雜度,減少聚類過程時間和計算設備內存消耗。最后對分類結果進行調整與合并,提高分類結果準確性和聚集度。功能模塊主要包括流量提取、特征預處理、可讀性分類和應用層協議分類 4 個部分,在測試調優的過程中還會引入結果評估模塊,如圖 1 所示。

圖 1 基于層次聚類的多策略未知協議分類方法
流量提取支持通過網卡實時捕獲流量和從磁盤讀取離線數據包兩種方式,對進入系統的數據包進行流關聯,以 TCP 流為單位進行特征統計和預處理,然后借助預處理后的流量特征進行一次粗顆粒度的可讀性分類,得到可讀性數據流和不可讀數據流兩大類,接著對這兩類數據流分別進行應用層協議分類。單個聚類策略的分類效果很難達到較高的水平,本方法提出類簇合并算法和類簇調整算法,極大程度地提升本方法的分類效果。應用層協議分類通過層次聚類的多種策略得到多組結果,這些結果經過類簇合并算法合并、類簇調整算法調整后,再借助二元組(目的 IP 和目的端口)合并得到最后的分類結果。
1.2.1 流量采集預處理
對實時流量的采集,為了能適應大流量的真實網絡環境,采集預處理中采用數據平面開發套件(Data Plane Development Kit,DPDK)作為流量采集的基礎框架。對采集到的流量包通過五元組(源 IP、目的 IP、源端口、目的端口、傳輸層協議)進行關聯,將包間時間間隔較小且具有相同五元組的數據包視為一個流單元。后續所有的處理,均以一個流單元作為研究的基本單位。
針對捕獲到的每一個流單元(以下簡稱為流),進行協議識別、丟包檢測、流重組等操作,過濾能被協議識別的流、流連接初始階段存在丟包的流和攜帶載荷的包數量小于 pkt_cnt_min(一條流統計的包個數總量最小閾值)或者載荷總字節數小于 payload_total_min(一條流統計的載荷字節數總量最小閾值)的流。經過上述過濾后,剩余的流具有更穩定的網絡行為和字節特征,也使整個方法能適應真實的網絡環境,而不僅限于實驗室數據。
每一個 TCP 流的前面部分都包含了流中的關鍵信息 ,因此在對流進行特征提取時,更關注 TCP 流的前面部分流特征。經過過濾后,進行流特征統計,主要包括:(1)前 pkt_cnt_min 個帶負載包的每個包最多前 payload_max(一個數據包統計的載荷數據最大字節數)個字節的字節分布;(2)前 pkt_cnt_max(一條流統計的包個數總量最大閾值)個帶負載包的包大小、時間間隔及包大小的狀態轉換;(3)單方向帶負載包的包大小及時間間隔,統計計算包大小的均值、標準差、最大值和最小值;(4)雙方向帶負載包的包大小,統計計算包大小的均值、標準差、最大值和最小值;(5)單方向的每秒發包量(packet per second,pps)與每秒字節數(bits per second,bps),雙向的 pps 與 bps;(6)TCP 各標記位次數、雙向初始窗口大小;(7)上下行流的字節占比和包占比;(8)單方向的帶負載包的包總大小,連接時長。
引入馬爾科夫鏈對特征進行處理。在選取的特征集合中,包大小的狀態轉換矩陣來自馬爾科夫鏈。從 TCP 流第一個帶負載的數據包開始計算,每一個帶負載的數據包都具有一個狀態
,即負載大小的變換狀態,i 與數據包長度 L 之間的計算方法如式(1)所示:

從如上關系看出,狀態集合一共包含 10 個狀態元素。狀態轉換矩陣 P 用于記錄,TCP 流在時間上相鄰的前 pkt_cnt_max 個帶負載包,包間狀態轉換關系計算算法如下:
Input:一條 TCP 流中,按包到達時間排列的數據包長度狀態序列 S[0,1,…,n]
Output:狀態轉換矩陣 P,具有 10 行 10 列


對于同類型的網絡協議來說,在通信過程中產生的數據包長度狀態轉換過程具有相似性,因此,在本方法中采用馬爾科夫鏈的狀態轉換矩陣作為流特征。
在預處理的最后,對數據進行去除值單一的列、標準化及去除強關聯特征等處理,形成可用于聚類算法的特征集合。
1.2.2 可讀性分類
在測試過程中發現,對于某些數據而言,在特征預處理階段和算法聚類階段,采用不同的參數設定比統一的參數設定的分類效果更好。經深入研究,這些數據差異符合可讀性分類標準。
可讀性分類是指將 TCP 流分成可讀數據流和不可讀數據流兩大類。可讀數據流是能通過肉眼分析,發現一些協議規律的數據流。不可讀數據流是加密程度較高或其他二進制的數據流。
可讀性分類以可打印字符占比和字節分布熵作為分類依據。當可打印字符占比大于設定閾值,或字節分布熵小于設定閾值時,則為可讀數據流,否則為不可讀數據流。其中,字節分布熵是指在特征預處理時字節分布統計的基礎上,計算字節分布對應的信息熵。字節分布熵值越大,代表 TCP 流負載越沒有規律。
可讀性分類不僅能使分類效果更好,同時能降低聚類過程的數據規模,從而提升分類過程的計算性能。
1.2.3 凝聚型層次聚類
層次聚類不直接依賴于 k 值的設置進行聚類,這是符合未知協議在真實網絡中的情況的。此外,像 K-means 這類算法的多次運行結果是無法保證一致的,這使聚類結果具有不確定性,從而對聚類結果的后續處理帶來一定的阻礙。此方法的層次聚類采用凝聚型層次聚類算法,并采用最近鄰鏈(Nearest Neighbor Chain,NNCHAIN)算法來構建層次樹,NN-CHAIN 算法的時間復雜度和空間復雜度均優于傳統的層次聚類算法。樣本點之間的距離計算采用 Bray-Curtis 距離,樣本 i 和樣本 j 之間的距離
通過式(2)進行計算,n 表示樣本的特征維度總數:

類簇之間的距離計算采用簇平均(AverageLinkage)方法,其中
代表類簇
與
中兩個點的距離值,對于類簇
與
,通過式(3)來計算距離:

基于 NN-CHAIN 算法的凝聚型層次聚類過程描述如下:
Input:所有的特征化的樣本點
Output:聚類后的類簇


在整個聚類過程中,步驟 1 的時間復雜度為O(n2),步驟 3 的時間復雜度為 O(n2logn)。相對于傳統的凝聚型層次聚類的時間復雜度 O(n3),性能提升明顯。在聚類過程中的聚類策略,主要借助不一致系數 inconsistent 和類簇距離 distance兩個策略。當不一致系數或類簇距離在設定范圍內時,允許在層次樹的相應位置進行合并,否則不合并。這兩種策略會得到兩個相互獨立的聚類結果,需要后續進行合并處理。
1.2.4 改進的層次聚類算法
在實際的程序運行過程中,由于數據樣本的特征維度數量較大,所以層次聚類算法中的步驟 1 的實際耗時遠大于步驟 3。因此這里考慮對步驟 1 進行性能優化。步驟 1 的一般實現算法如下:
Input:所有的特征化的樣本點為 p[n][m],樣本數量為 n,特征維度數量為 m
Output:所有樣本點兩兩間距離矩陣為d[n][m]

該算法中的 dist 函數為 Bray-Curtis 算法,時間復雜度為 O(m),所以計算距離矩陣的時間復雜度為
。由于樣本 i 與樣本 j 的距離等價于樣本 j 與樣本 i 的距離,所以通過上三角矩陣對內存進行壓縮,并去掉主對角線,可以減少一半的內存占用與一半的計算量。壓縮后的距離矩陣用數組 a[n×(n-1)/2] 表示。從矩陣 d的索引(i 為行索引,j 為列索引)到數組 a 的索引 k 映射關系如式(4)所示:

將上式中 i ≤ j 的情況,把 j 假設為 n-1,反解關于 i 的一元二次方程,得到式(5):

借助式(5),得到從數組 a 的索引 k 到矩陣 d 的索引 i 和 j 的映射關系如式(6)和式(7)所示:

分析計算距離矩陣的傳統算法得出,計算距離矩陣中的各個元素的過程互不影響,故可將計算過程拆分為多個計算任務進行獨立處理。通過壓縮矩陣索引的正向和反向映射關系,對原算法進行多線程優化,發揮現代計算機的多核優勢。對于壓縮后的矩陣,即數組 a,按 block_size(分塊大小)對數據進行分塊,每個塊就是多線程任務隊列中的一個任務,由線程池中的多個線程對任務隊列中的計算任務進行處理,如圖 2 所示。

圖 2 利用多核計算改進的距離計算過程
Bray-Curtis 算法使用大量的數值計算指令,除循環條件判斷外,沒有其他分支語句。這樣的算法特點可以發揮出單指令流多數據流(Single Instruction Multiple Data,SIMD)系列 指令的性能優勢,因此,除使用多線程對距離計算進行加速外,還能使用 SIMD 技術對 Bray-Curtis 算法加速。
1.2.5 類簇調整算法
對于 TCP 流量來說,相同的目的 IP 和目的端口,同屬相同的網絡服務,因此具有相同的目的 IP 和目的端口的 TCP 流,使用相同的應用協議進行通信 [10]。基于該結論對類簇進行調整。將所有樣本構成的集合表示為
。
對于具有相同二元組的(即目的 IP 和目的端口)TCP 流,直接作為一個相同的類別。所有類別的集合表示為
。其中
為一個獨立的類別,表示為
所有樣本 b 具有相同的二元組 },且
與任意不同于
的 tj 滿足
集合 T 與集合 A 應滿足
。經過聚類得到的類簇集合表示為
,其中
一個獨立的類簇,且
。
類簇調整算法(Cluster Adjustment Algorithm,CAA)具體描述如下:
Input:基于二元組的類別集合 T,聚類得到類簇集合 C,調整閾值 h_thre 和 m_thre
Output:調整后的類別集合 R

在此算法中,調整閾值 h_thre 和 m_thre 對結果的影響較大,通過調節這兩個參數能減少最終分類結果的錯誤率。
1.2.6 類簇合并算法
聚類過程產生的多策略聚類結果,需要合并在一起,合并后的結果經過 CAA 處理后,需要再次與二元組進行合并得到本方法的分類結果。類簇合并算法(Cluster Merging Algorithm,CMA)具體描述如下:
Input:類別集合
,
代表一個獨立的類別,為一個樣本集合;類別集合
B=
,
代表一個獨立的類別,為一個樣本集合
Output:合并后的類別集合
,
代表一個獨立的類別,為一個樣本集合

2實驗結果分析
對本方法的結果評估主要考慮借助已知協議數據來模擬未知協議的方式。
2.1 評估方法
為了對分類結果進行合理的評估,本方法提出了準確率和聚集度兩個評估維度。
2.1.1 準確率
在分類結果中,結果類別沒有被標記為特定協議的類別標簽,因此無法使用簡單的方法直接計算分類結果的準確率。這里定義一個對已知流量實驗的準確率計算方法。將某一結果類別中,實際協議類別樣本數量最多的協議類別作為結果類別的協議標記。將此結果類別中樣本實際協議與此協議標記一致的樣本量,與此結果類別樣本總量的比值作為此結果類別的準確率。如在分類后的眾多結果類別中,其中某個結果類別
,包含 m 種不同實際協議的樣本,這 m種不同實際協議的樣本數量分別為
,其中的最大值為
,
對應的實際協議為
,則結果類別
被看作實際協議
的類別,即類別
中實際協議為協議
的樣本被認為分類正確的樣本,類別
的分類準確率計算方法如式(8)所示:

分類結果的整體
的準確率計算方法如式(9)所示:

經分析可知,準確率的取值范圍為 [0,100%],且越接近 100% 分類效果越好。
2.1.2 聚集度
僅根據上面定義的準確率來評估分類結果,無法對下面的情況進行合理評估:當實際為同類型協議
的樣本被分到不同的 n 個結果類別中時,這些結果類別中的實際協議
的樣本量分別為
,此時按準確率進行評估,會發現當 n=1 時與 n=10 時的分類結果的準確率是相同的,但實際上,n=1 時的分類效果優于n=10 時的分類效果。因此定義了聚集度來體現這一差異,借助信息熵來定義協議 pj 的聚集度,計算方法如式(10)所示:

對所有協議
,在分類結果中的聚集度計算方法如式(11)所示:

經分析可知,聚集度的取值范圍為 [0,+∞],且越接近 0 分類效果越好。
準確率體現的是被分到同一個類別中的樣本實際上也是同一個類別的程度,聚集度體現的是實際為同類型協議的樣本在結果類別中被聚集在一起的程度。
2.2 結果分析
本文采用的數據,在多種真實的網絡環境出口處抓取獲得。去掉其中占比極高的超文本傳輸協議(HyperText Transfer Protocol,HTTP)數據和傳輸層安全協議(Transport Layer Security,TLS)數據。經過預處理后共計得到 97460 條 TCP 流,包含 19 種不同的應用協議,其中包括比特流協議(BitTorrent,BT)、簡單郵件傳輸協議(Simple Mail Transfer Protocol,SMTP)、 簡 單 郵 件 傳 輸加 密 協 議(Simple Mail Transfer Protocol Transport Layer Security,SMTP_TLS)、可擴展通訊和表示協 議(Extensible Messaging and Presence Protocol,XMPP)、Telnet 遠程終端協議、簡單對象訪問協 議(Simple Object Access Protocol,SOAP)、 郵局 協 議(Post Office Protocol,POP)、 安 全 外 殼協議(Secure Shell,SSH)、文件傳輸協議(File Transfer Protocol,FTP)、交互郵件訪問協議(Internet Message Access Protocol,IMAP)、Mysql 數據庫協議、實時消息傳輸協議(Real Time Messaging Protocol,RTMP)、微信應用協議、基于 HTTP 的自適應碼率流媒體傳輸協議(HTTP Live Streaming,HLS)、WebSocket 網 絡 傳 輸 協 議、 文 件 傳 輸 協 議(File Transfer Protocol Data,FTP-DATA)、SOCKS4代理協議、SOCKS5 代理協議、遠程顯示協議(Remote Display Protocol,RDP)。在 這 些 協 議 中,SMTP、POP、IMAP、Telnet、XMPP、RTMP 等屬于非加密協議,BT、SOCKS4/5、微信協議、RDP、FTP-DATA 則屬于加密協議。不可讀數據流具有 424 個特征維度,可讀數據流具有 416 個特征維度,下面分別對不可讀數據流和可讀數據流(加密流)進行分析。
測試環境說明:Intel(R) Xeon(R) Silver 4214 CPU @ 2.20GHz,Cent OS 7.2 x64。
如表 1 所示,不可讀數據流(加密流)的分類準確率為 96.78%,聚集度為 1.23,說明本模型針對加密流量具有較好的分類效果。其中總計的標簽數量并非其他協議標簽數量的累加,因為在分類結果中協議之間存在混合在一起的情況。在運行聚類算法、CAA 和 CMA 的過程中,耗時 24 秒,其中 CAA 和 CMA 僅耗時 0.5 秒。在計算耗時方面,聚類算法遠大于其他算法。
如表 2 所示,可讀數據流的分類準確率為99.81%,聚集度為 0.25,說明本方法對明文流量也具有較好的分類效果。在運行聚類算法、CAA 和 CMA 的過程中,耗時 151 秒。對比不可讀數據流和可讀數據流分類結果發現,可讀數據流的分類結果無論是準確率還是聚集度,都明顯優于不可讀數據流的分類結果。原因在于,不可讀數據流在負載方面的特征對協議的區分度遠低于可讀數據流。
表 1 不可讀數據流的分類結果

表 2 可讀數據流的分類結果

BT 和 FTP-DATA 這類協議的負載與其傳輸文件有著密切的聯系,當傳輸文件為加密文件或其他二進制文件時,會被作為不可讀數據流;當傳輸文件為文本文件時,會被作為可讀數據流。這類協議在特征上的變化也比較多,使其分類結果的聚集度偏高。與之相反,RDP、FTP、MySQL等協議在特征的表現比較固定,使其分類結果的聚集度更低,效果更好。從以上結果可以看出,本模型針對已知協議和未知協議(包括加密協議)流量均具有較好的分類效果,并且過程中不需要預先確定聚類中心點,不依賴原始樣本數據進行標記學習,也能應對新出現的未知協議類型,具有普適性;同時算法經過多種策略調整,在準確率和聚集度上均能達到較好效果。
2.3 多策略效果分析
2.3.1 可讀性策略分析
如表 3 所示,綜合上述不可讀數據流和可讀數據流的整體分類結果:準確率為 98.96%,聚集度為 0.53,耗時 175 秒。在不使用可讀性分類的整體結果:準確率為 98.94%,聚集度為 0.88,在運行聚類算法、CAA 和 CMA 的過程中,耗時313 秒。對比可知,經過可讀性分類,分類結果的準確率和聚集度均有提升,計算性能也有較大提升。此外,可讀性分類在某些數據集中會對結果帶來更大的提升。
表 3 采用與不采用可讀性分類的效果對比

2.3.2 CAA 與 CMA 策略分析
對 27392 個不可讀數據流進行對比測試,如表 4 所示,無論單獨使用哪一種聚類策略,其分類結果的準確率和聚集度都比不上采用 CAA與 CMA 策略的準確率和聚集度。CAA 與 CMA可以規避單一策略的缺點,充分發揮各種策略的優勢,從而使分類結果達到更優的效果。
表 4 是否采用 CAA 與 CMA 的分類效果對比

2.3.3 計算策略性能分析
聚類算法是整個過程中最耗時的部分,在本方法中,聚類計算性能優化通過單線程和多線程實現,并將其與 scipy.cluster.hierarchy.linkage(Python 層次聚類函數)進行對比。如圖 3 所示,使用單指令多數據流(Single Instruction Multiple Data,SIMD)技術優化后的算法(對應單線程的曲線),比 Python 軟件包庫中的算法實現速度提升了近一倍。再使用多線程對算法進行加速,速度約為 scipy 庫中的算法實現的 8 倍。

圖 3 層次聚類算法的多種實現對比
3結 語
本文將層次聚類運用于未知協議的分類中,提出了一種基于層次聚類的多策略未知協議分類方法。借助馬爾科夫鏈來強化特征的表征能力。使用可讀性分類機制提升分類效果和計算性能。利用最近鄰鏈算法、SIMD 技術與多核技術加速本方法的計算速度。將 CAA 和 CMA 引入到本方法中,規避了單一聚類策略帶來的弊端,發揮出了多種聚類策略的優勢,提升了分類效果。最后提出了使用已知協議數據集合模擬未知協議數據集合的結果評估方法。實驗結果表明,與原始的層次聚類算法相比,本分類方法的分類效果更優,且計算速度更快。
本文使用真實網絡數據進行測試,無須對數據進行前提假設和設置要求,此方法能適用于各種現實網絡中,較為通用,具有極強的工程應用能力。
引用格式:代先勇 , 胥雄 , 鄧金祥 , 等 . 基于層次聚類的多策略未知協議分類方法 [J]. 信息安全與通信保密 ,2022(3):88-100.