楊敏
(中電科普天科技股份有限公司,廣東 廣州 510000)
5G 時代各大運營商為了爭奪用戶,不僅為用戶提供了多樣化、質(zhì)量更高的通信服務,還采用全方位、高質(zhì)量的運維支撐網(wǎng),以多樣化自動化的手段及時響應用戶需求,提高用戶感知水平。但是,隨著電信網(wǎng)規(guī)模的不斷擴大,電信網(wǎng)中的運維支撐網(wǎng)絡結構越來越復雜,當支撐網(wǎng)某一個位置產(chǎn)生故障時,其他位置可能產(chǎn)生一連串的告警事件,因此可能在短時間內(nèi)產(chǎn)生種類繁多、信息冗余的告警事件,運維人員通常無法在短時間內(nèi)對無效的告警信息進行剔除,也不能準確對告警的故障位置進行精準定位。國內(nèi)外已經(jīng)有不少學者研究如何通過告警事件的關聯(lián)實現(xiàn)故障根因分析。Yan 等人[1]提出一種大型IP 網(wǎng)絡服務質(zhì)量管理的通用根本原因分析平臺,該平臺將根因分析過程抽象為癥狀和診斷事件的特征識別、時間和空間事件相關性以及基于上述的特征和事件相關性進行推理邏輯,最終形成一個全面的服務依賴性模型,包括網(wǎng)絡拓撲和跨層關系、協(xié)議交互和控制平面依賴性。Li 等人[2]提出一種基于網(wǎng)絡拓撲和告警的網(wǎng)絡根因故障定位,該文對長告警數(shù)據(jù)的輸出序列進行預處理,在獲取網(wǎng)絡拓撲信息的基礎上,使用支持向量機判斷存在的根故障后,使用貝葉斯網(wǎng)絡計算每一種故障類型的最高概率,并結合過濾規(guī)則實現(xiàn)故障定位。Ding 等人[3]提出了一種5G 網(wǎng)絡管理系統(tǒng)現(xiàn)場實時報警根本原因定位算法,該算法從時間和空間維度上充分探索報警之間的關系,通過報警關聯(lián)時間、報警事件劃分、報警事件拓撲生成等技術實現(xiàn)在線報警數(shù)據(jù)壓縮,這種方法大大提高了故障的定位速度和精準性。Li 等人[4]提出基于關聯(lián)規(guī)則挖掘的電信網(wǎng)絡告警相關性分析系統(tǒng),該系統(tǒng)首先使用神經(jīng)網(wǎng)絡對不同級別的報警進行分類,然后利用加權頻繁模式樹結構的優(yōu)化技術來提高挖掘效率。Javanbakht 等人[5]采用深度學習的方法實現(xiàn)告警數(shù)據(jù)的根因分析,該方法首先收集歷史告警數(shù)據(jù),并對告警的標簽進行排序并將其轉化為數(shù)值向量;然后采用融合注意力BiLSTM CNN 分類器來學習歷史報警數(shù)據(jù)之間的相關性并實現(xiàn)告警數(shù)據(jù)與故障位置的模型訓練;最后,將該模型用于在線故障檢測。由此可知,相關研究工作主要集中在歷史告警數(shù)據(jù)關聯(lián)挖掘,告警規(guī)則、告警壓縮,而實際應用需要更快、更準確的故障定位;除此以外,由于告警事件的更新速度很快,如果采用歷史告警數(shù)據(jù)構建告警根本原因定位模型,其無法對抗動態(tài)多變的網(wǎng)絡攻擊行為。
因此,本文提出一種支撐網(wǎng)告警數(shù)據(jù)的故障定位方法,該方法采用深度學習的方法提取一系列告警事件的時空特征,通過關聯(lián)規(guī)則實現(xiàn)時空特征的有效關聯(lián),對無效關聯(lián)的事件進行剔除,實現(xiàn)告警壓縮;在此基礎上,采用增量式BP 神經(jīng)網(wǎng)絡方法訓練告警數(shù)據(jù)與故障位置的關聯(lián)性并實時加入新的告警事件對模型進行增量式更新,從而動態(tài)適應動態(tài)多變的網(wǎng)絡環(huán)境。
告警事件特征提取是從大量冗余的告警事件中提取出不同事件之間的相關性,這種相關性一般體現(xiàn)為告警事件之間的時空特征,時間特征體現(xiàn)為告警事件發(fā)生的先后順序,空間特征與網(wǎng)絡拓撲結構有直接關系。
國內(nèi)外有告警事件特征提取方法,包括采用聚類方法[6-9]對告警事件的時空特征進行聚類,從而將不同時間、網(wǎng)絡拓撲的告警事件進行區(qū)分,簡化網(wǎng)絡告警事件處理復雜度;采用機器學習[10-13]的方法訓練告警事件和故障定位的關系模型,實現(xiàn)告警特征的自動提取;采用深度學習[14-18]的方法自動抽取告警事件的多維度特征,從而有效地從大量的告警事件中學習到故障的語義信息,保證了故障定位的有效性和可行性。
由此可知,告警事件的特征關系分析研究中,采用聚類事件、關聯(lián)規(guī)則的方法能夠在一定程度上探究告警事件的時間和空間的特征,但是這種方法的時間復雜度和空間復雜度極高,僅適用于基站數(shù)量不多的小區(qū)網(wǎng)絡,對于眾多擁有超密集小區(qū)的地區(qū)來說,這種方法所耗費的計算資源過多,因此不適用于對于整個通信大網(wǎng)的分析;而機器學習的方法則能夠實現(xiàn)告警事件的自動化挖掘,得到的信息更加豐富全面;而深度學習的特征提取方法,通過將海量的告警事件按照時間排序,然后再采用深度學習的方法實現(xiàn)告警事件深淺層語義的學習,最后將深淺層語義進行融合,實現(xiàn)告警事件特征粗細粒度的提取。
基于上述的分析,本文選用深度學習的方法提取告警事件的多維特征,首先將每一個觀測周期的告警事件按照時間進行排序,多個觀察周期的告警事件形成一個二維矩陣數(shù)據(jù);考慮到告警事件具有冗余的特性,本文采用滑動時間窗口的方式對冗余的告警事件進行剔除,并將原始的告警事件轉化為告警事務數(shù)據(jù),同一個時間窗口中的告警事件可能由同一個網(wǎng)絡故障原因引起的并且不同告警事件所引發(fā)的告警范圍和告警時間長短不一,因此,通過動態(tài)時間窗口滑動的方法實現(xiàn)了告警事件在時間上的強關聯(lián);最后,采用卷積神經(jīng)網(wǎng)絡(Convolutional Neural Networks,CNN)自主提取告警事件的多維度語義特征,為后續(xù)的故障定位提供可靠的數(shù)據(jù)支撐。
告警事件的關聯(lián)分析是通過整理大量的告警數(shù)據(jù)并將其作為一個整體進行分析并挖掘告警事件中的相關性,通常采用過濾、壓縮或歸納告警事件,使用邏輯推理的方式分析發(fā)生的告警事件流,同時對告警數(shù)據(jù)進行模式識別以找到網(wǎng)絡問題、故障。
國內(nèi)外有告警事件特征關聯(lián)方法,包括采用關聯(lián)規(guī)則[19-21]的方法挖掘告警序列之間的時間關系,確定告警規(guī)則所屬的關系,實現(xiàn)故障源的追溯、冗余告警信息的壓縮;采用因果模型[22-25]對告警事件的相似性構建攻擊場景序列集合,然后利用概率統(tǒng)計方法實現(xiàn)告警類型之間的關聯(lián),從而有效識別多步攻擊模式;采用神經(jīng)網(wǎng)絡[26-28]的方法解決傳統(tǒng)告警關聯(lián)方法中所需的復雜邏輯推理的難題,能夠根據(jù)不同層次的關聯(lián)需求靈活調(diào)整神經(jīng)網(wǎng)絡的模型結構,并能夠根據(jù)網(wǎng)絡中的參數(shù)大小確定告警事件與故障類型的相關關系。
基于上述的分析,本文選用增量式BP 神經(jīng)網(wǎng)絡方法訓練告警數(shù)據(jù)與故障位置的關聯(lián)性,通過實時加入新的告警事件對模型進行增量式更新,獲取告警事件與故障類型的動態(tài)關聯(lián),精確確定引起告警事件的故障類型,從而動態(tài)適應動態(tài)多變的網(wǎng)絡環(huán)境。
告警時間定位的整體流程包括告警實事件預處理、告警事件特征提取和告警事務數(shù)據(jù)關聯(lián)分析。具體如圖1 所示。

圖1 告警事件關聯(lián)故障定位整體框架圖
在告警事件預處理過程中,需要抽取影響故障根因分析的關鍵字段,雖然每一個告警事件包含很多告警屬性,但是故障定位僅需要幾個關鍵的屬性,比如:告警事件編碼、告警內(nèi)容、告警位置、告警級別。
將上述的告警字段進行抽取,形成一條告警數(shù)據(jù)應用于本文所設計的告警事件特征提取和告警事件關聯(lián)分析中。
由于原始的告警數(shù)據(jù)無法直接用于特征提取,因此,本文對每一個周期的原始告警數(shù)據(jù)根據(jù)時間序列進行排列,構建一個二維矩陣數(shù)據(jù)。告警事件特征提取如圖2 所示。

圖2 原始告警事件按照時間排列示意圖
圖2 是原始告警事件按照時間排列的結果,告警事件S={s,Ts,Te}根據(jù)告警發(fā)生的時間進行排序。s 表示告警事件序列,s={A,B,E,A,C,B,D,E}。[Ts,Te]表示告警事件的觀察周期,圖2 的觀察周期為[0,60]。本文設置告警事件的觀察周期是1 小時。由圖2 可知,隨著時間推進,告警事件會有重疊,發(fā)生時間早的告警事件有可能重疊度越高。
考慮到不同告警事件所引發(fā)的告警范圍和告警時間長短不一,結合實際的網(wǎng)絡運維經(jīng)驗,采用動態(tài)時間窗口滑動的方法實現(xiàn)了告警事件在時間上的強關聯(lián)。如果告警事件的故障定位精度低于閾值,那么就縮小滑動窗口的寬度和滑動步長;相反,如果告警事件的故障定位精度高于閾值,那么就擴大滑動窗口的寬度和滑動步長。如此,就能根據(jù)滑動窗口的大小來調(diào)整系統(tǒng)中告警的數(shù)量,避免由于窗口過大導致告警事務數(shù)據(jù)中包含太多冗余信息,無法有效挖掘關聯(lián)規(guī)則。同時,動態(tài)的步長也能保證兩個滑動時間窗口的重疊度,避免了由于窗口重疊過多,人為增強了兩個窗口之間的相關性,增加故障定位的復雜度和干擾性。
假設Sw={w,h,ts,te} 為序列S的其中一個滑動窗口,其中w表示窗口寬度,te -ts表示滑動步長,步長小于觀察周期。滑動窗口對告警事件的提取過程如圖3 所示。

圖3 滑動窗口示意圖
圖3 展現(xiàn)滑動窗口提取告警事件的過程,藍色虛線框表示窗口1,綠色虛線框表示窗口2,窗口大小為w×h。步長和窗口寬度如圖所示。一般來說滑動窗口的步長小于窗口寬度。
同一個時間窗口中的告警事件可能由同一個網(wǎng)絡故障原因引起,并且不同告警事件所引發(fā)的告警范圍和告警時間長短不一,因此,通過動態(tài)時間窗口滑動的方法實現(xiàn)了告警事件在時間上的強關聯(lián);動態(tài)滑動窗口將原始的告警數(shù)據(jù)轉換成告警事務數(shù)據(jù)的技術路線圖如圖4 所示。

圖4 動態(tài)滑動窗口技術路線圖
本文基于累計誤差的思路實現(xiàn)滑動窗口寬度和步長的調(diào)整,在T-1 時刻,采用初始化的窗口對原始告警事件進行處理,得到對應的告警事務數(shù)據(jù)庫;然后,告警事務數(shù)據(jù)經(jīng)過CNN 多維語義特征提取、增量式BP 網(wǎng)絡實現(xiàn)告警事務數(shù)據(jù)特征與故障類型關聯(lián)后,實現(xiàn)多種故障分類的預測,并給出每一種故障分類的概率,確定故障類型;結合序列模式挖掘方法,確定現(xiàn)有告警數(shù)據(jù)序列與相關位置發(fā)生故障所產(chǎn)生的告警事件序列的匹配度,預測故障發(fā)生的位置;在T+1 觀察周期得知上一觀察周期故障實際發(fā)生的位置與T 觀察周期故障預測的位置進行誤差分析,得到T觀察周期故障定位誤差eT,定位誤差eT取值為0 或1。如果故障預測定位與真實定位一致,那么eT取值為0;否則,eT取值為1。同理,T 觀察周期和T+1 觀察周期的原始告警事件也是經(jīng)過同樣的過程對數(shù)據(jù)進行處理,得到T+1 觀察周期故障定位誤差eT+1。
計算T+1 觀察周期的累積誤差:

判斷誤差是否大于設定的閾值,如果大于閾值,那么縮小滑動窗口寬度和步長;相反,擴大滑動窗口寬度和步長。調(diào)整滑動窗口寬度和步長變化值的公式為:

其中,w0表示初始的滑動窗口寬度,表示初始的滑動步長大小。C與累計誤差有關,誤差越大,滑動窗口寬度和步長變化值越大:

其中,k是常數(shù)。
在T+2 觀察周期,滑動窗口的寬度和步長調(diào)整為:

對每一個觀察周期進行動態(tài)滑動窗口提取后,按照滑動的順序進行排列。本文采用二維數(shù)組定義告警事務數(shù)據(jù)庫,定義二維數(shù)組a[m][n],其中m 為某一個周期采用動態(tài)滑動窗口所獲取的告警事件數(shù)量,n 是字符串的大小,一般取一個設定的值。二維數(shù)組排列的順序按照時間順序存放告警事件,即內(nèi)存中按照順序存放第一個滑動窗口提取的告警事件,再放第二滑動窗口提取的告警事件,依次存放。為了方便后續(xù)的特征提取,本文對每一個窗口提取的告警事件轉化成字符串填充到每一行中,由于每一行的告警原因代碼大小有可能不一致,因此,對每一行空白的元素采用0 進行填充,構建特定尺寸的告警事務數(shù)據(jù)庫,如圖5 所示。

圖5 構建告警事務數(shù)據(jù)庫
為了提取告警事務的多維語義特征,本文采用CNN對告警事務數(shù)據(jù)采用不同大小的卷積核進行特征提取,由淺入深提取告警事務數(shù)據(jù)的時間和空間深淺層次特征,再通過融合層對淺層數(shù)據(jù)語義和深層數(shù)據(jù)語義的信息進行融合,實現(xiàn)告警事務數(shù)據(jù)的多維語義特征分析。特征提取和融合過程如圖6 所示。

圖6 CNN實現(xiàn)深淺層的時空特征提取
采用增量式BP 神經(jīng)網(wǎng)絡方法訓練告警數(shù)據(jù)與故障位置的關聯(lián)性并實時加入新的告警事件對模型進行增量式更新。增量式BP 神經(jīng)網(wǎng)絡模型構建過程如圖7 所示。

圖7 增量式BP神經(jīng)網(wǎng)絡模型構建過程
(1)對歷史告警事務數(shù)據(jù)時空特征進行學習,并訓練得出初始神經(jīng)網(wǎng)絡模型。當新的告警事件出現(xiàn)后,將新的告警事件進行預處理、多維特征提取后,放入到初始神經(jīng)網(wǎng)絡模型進行訓練,獲得更新后的神經(jīng)網(wǎng)絡模型。
(2)考慮到更新后的神經(jīng)網(wǎng)絡是采用新的告警事件進行訓練的,因此,更新后的神經(jīng)網(wǎng)絡的參數(shù)可能會更偏向新的告警數(shù)據(jù),為了防止神經(jīng)網(wǎng)絡遺忘之前學過的知識,本文采用有選擇性地選擇神經(jīng)網(wǎng)絡的參數(shù),比如選擇變動范圍小于θ(一般取0-10%范圍內(nèi))的參數(shù)作為原始神經(jīng)網(wǎng)絡模型的參數(shù),至于變動大于10%的參數(shù)則將其剔除。如此,增量式BP 神經(jīng)網(wǎng)絡模型通過學習新的告警事件改進模型的泛化性能,同時保留之前學習過的知識。
(3)基于增量式BP 神經(jīng)網(wǎng)絡判斷支撐網(wǎng)告警的故障類型,實現(xiàn)故障識別。
設備從異常發(fā)生演變到故障是一個具有較強時序性和關聯(lián)性的過程,考慮到物理網(wǎng)絡拓撲和信息系統(tǒng)傳輸鏈路具有密切的耦合關系,因此,告警事件雖然存在冗余,但是這些告警事件具有一定的共性規(guī)律,通過挖掘這些告警事件序列模式,可以對信息系統(tǒng)的故障類型與物理網(wǎng)絡每一個關鍵設備的運行異常狀態(tài)所引致的故障類型進行匹配,實現(xiàn)物理位置故障的精準定位。
在某一個觀測周期內(nèi),某一個物理位置的全部狀態(tài)片段Sp(ti) 按照時序進行排序,形成該設備運行過程異常狀態(tài)鏈:

其中,Sp(tj) 表示在觀測周期內(nèi),產(chǎn)生的第j個異常狀態(tài)信息。
在此基礎上,采用序列模式挖掘T時刻Qp(T) 的頻繁模式。假設異常序列模式Tpi屬于頻繁序列模式,其必須滿足:在頻繁序列模式集中不存在任一個模式Tpj,滿足Tpj?Tpi,且support(Tpj)≥support(Tpi),以各項目count值降序依次為頭節(jié)點和其他節(jié)點,生成條件模式基,然后采用條件模式基構造對應的FP 樹,并按照設定支持度的閾值判斷相應的頻繁序列模式。
在獲取頻繁序列模式的基礎上,采用模式識別法判斷該異常頻繁序列模式的故障類型,并將Top K(k 一般取3)的故障類型與上一節(jié)基于增量式BP 神經(jīng)網(wǎng)絡判斷支撐網(wǎng)告警的故障類型進行匹配,如果匹配成功,則將該物理設備作為重點排查的對象,實現(xiàn)故障位置的精準定位。
為了評估5G 支撐網(wǎng)告警數(shù)據(jù)定位故障的性能,在某市聯(lián)通5G 試驗網(wǎng)中進行測試,通過模擬告警數(shù)據(jù)的方式來測試故障定位算法的性能。這些數(shù)據(jù)來自底層網(wǎng)絡設備,通過將原始告警數(shù)據(jù)進行預處理和動態(tài)滑動窗口處理后,整理出格式統(tǒng)一的告警信息,然后以二維數(shù)組的方式存儲在告警數(shù)據(jù)庫中,然后再進行特征提取和故障定位。
原始告警數(shù)據(jù)經(jīng)過預處理和滑動窗口處理后的告警信息處理格式如表1 所示。

表1 5G支撐網(wǎng)部分告警信息示意圖
然后,采用二維數(shù)組的形式將告警事件(告警事件轉化為字符串)存儲在告警數(shù)據(jù)庫中,格式如圖8 所示。

圖8 告警數(shù)據(jù)庫的存儲過程
在獲取告警數(shù)據(jù)庫后,采用CNN 進行特征提取告警數(shù)據(jù)的多維語義特征,并將其輸入BP 神經(jīng)網(wǎng)絡中,將告警數(shù)據(jù)多維特征與故障位置進行關聯(lián),構建告警數(shù)據(jù)多維特征與故障位置的映射關系。
考慮到告警數(shù)據(jù)的動態(tài)性和隨機性,為了保證告警數(shù)據(jù)與故障位置映射的精準性,采用增量式BP 神經(jīng)網(wǎng)絡來構建新的告警事件與故障位置映射關系的持續(xù)更新。首先,通過歷史告警數(shù)據(jù)特征訓練BP 神經(jīng)網(wǎng)絡的參數(shù);然后,采用新的告警數(shù)特征訓練新的BP 神經(jīng)網(wǎng)絡參數(shù),為了降低模型的計算復雜度,在新的BP 神經(jīng)網(wǎng)絡參數(shù)初始化的過程中,采用有選擇性地選擇神經(jīng)網(wǎng)絡的參數(shù)放進新的BP 神經(jīng)網(wǎng)絡中進行訓練,并結合新的告警數(shù)據(jù)特征更新BP 神經(jīng)網(wǎng)絡參數(shù)。具體如圖9 所示。

圖9 增量式BP神經(jīng)網(wǎng)絡參數(shù)更新過程
基于上述的分析,得到每一個周期設備故障位置。將該故障位置與基于模式識別法判斷的故障位置進行匹配,如果匹配成功,則認為該物理設備作為重點排查的對象,實現(xiàn)故障位置的精準定位。
上述方法中,有2 個關鍵因素會影響故障定位的精準性:滑動窗口大小的選擇以及選擇多少比例的BP 神經(jīng)網(wǎng)絡參數(shù)來初始化新BP 神經(jīng)網(wǎng)絡參數(shù),為了進一步分析本文算法的性能,將基于動態(tài)滑動窗口的增量式BP 神經(jīng)網(wǎng)絡學習和固定窗口的BP 神經(jīng)網(wǎng)絡學習模型進行準確率、不同θ的災難遺忘對比,來反映本文提出方法的性能。
準確率是模式識別最重要的評價指標,本文采用平均準確率反映隨著故障類別的增加,不同算法在準確率上的表現(xiàn)(θ=5%)。具體的對比結果如圖10 所示。

圖10 準確率對比
相比于固定滑動窗口的BP 神經(jīng)網(wǎng)絡,動態(tài)滑動窗口的增量式BP 神經(jīng)網(wǎng)絡故障類別平均準確率更高、更加穩(wěn)定,這說明本文的方法在構建增量學習過程中,能夠對新的知識進行有效學習,能夠應對動態(tài)多變的網(wǎng)絡攻擊行為。
為了對比不同災難遺忘在保留模型參數(shù)比例的作用,本文將災難遺忘分別設置為5%、8%、10%,對不同災難遺忘隨著模型參數(shù)增加故障類型識別準確率進行對比。具體的對比結果如圖11 所示。

圖11 不同參數(shù)變動范圍準確率對比
由此可知,隨著模型參數(shù)量增加,故障類型識別準確率呈現(xiàn)下降的趨勢。這是因為模型參數(shù)越多,通過增量學習實現(xiàn)模型局部參數(shù)更新時,由于樣本量不足或者樣本本身的隨機性等因素所導致局部參數(shù)在更新過程中產(chǎn)生震蕩的現(xiàn)象,這種現(xiàn)象會導致故障類型識別率逐漸降低。另外,通過對比不同災難遺忘率對應的故障識別準確率可知,災難遺忘率為10% 時,故障識別準確率最高,這是因為合適的參數(shù)保留比例能夠較好保留原始模型的重要參數(shù),又能通過增量學習實現(xiàn)模型局部參數(shù)的更新,從而保證模型的識別能力。而災難遺忘率5%或者20%時,參數(shù)更新設置的條件過于嚴格或者寬松,很可能導致增量學習過程中重要參數(shù)更新范圍受限或者過于寬泛,從而導致某些模型重要的參數(shù)沒有得到更新或者某些參數(shù)沒有很好保留的情況,從而降低了模型識別的準確率。
本文提出一種增量式BP 神經(jīng)網(wǎng)絡的支撐網(wǎng)告警數(shù)據(jù)的故障定位方法,該方法使用增量數(shù)據(jù)來學習增量的新類別知識,并在增量迭代過程中采用參數(shù)變動范圍閾值來實現(xiàn)網(wǎng)絡參數(shù)的優(yōu)化,從而很好地描述動態(tài)網(wǎng)絡攻擊行為的特征分布,在一定范圍內(nèi)減輕增量學習過程中的災難性遺忘。實驗表明,本文的方法與傳統(tǒng)固定滑動窗口的BP 神經(jīng)網(wǎng)絡相比,在分類準確率上表現(xiàn)出明顯優(yōu)勢。