本發明涉及網絡通信技術領域,特別涉及一種面向軟件定義網絡的輕量級網絡流量異常檢測方法。
背景技術:
隨著計算機網絡技術的不斷進步,網絡安全問題也隨之受到用戶及網絡服務提供商的日益重視。網絡流量異常檢測技術作為網絡安全中的重要技術,在防范網絡攻擊中起著不可忽視的作用。目前的網絡流量異常檢測技術通常使用鏡像流量或者周期采樣的方法抓取網絡中的通信報文,隨后對抓取的通信報文進行分析,以檢測網絡流量是否出現了異常。
上述兩種方法均需要獲取網絡中所有的網絡報文以供網絡流量異常檢測算法檢測。這種方法一方面需要獲取大量的網絡報文,容易導致網絡出現網絡擁塞、時延增高、丟包率加大等問題;另一方面該方法需要耗費大量的計算資源,導致計算資源開銷急劇上升。因此上述網絡流量異常檢測方法存在著不可避免的缺陷。研究如何既能快速地檢測出網絡中的異常行為,又能以輕量級的形式進行檢測的技術,具有實際的意義。
軟件定義網絡(softwaredefinednetwork,sdn)是一種新型的網絡體系結構,其實現了數據轉發平面與控制平面解耦合。openflow協議作為sdn中控制層與基礎設施層間通信的標準協議(南向接口協議),目前已被工業界及學術界廣泛認定為sdn中的事實標準。
作為openflow協議中一種特殊的報文,packet-in消息(packet-in消息為openflow協議中的一種特殊消息,在openflow協議中,底層交換機使用packet-in消息將其上發生的事件上報至控制器)能夠反映sdn底層網絡的流量情況,一方面由于交換機上一般在無相應報文達到時不存在處理該類型報文的流表,另一方面由于交換機上的流表存在生存時間,因此,交換機發送至控制器的packet-in消息一般呈現出規律性。而在網絡中有異常事件發生時,交換機發送至控制器的packet-in消息將出現異常變化,因此,可以利用openflow協議中所特有的packet-in消息特征,設計一種輕量級的面向軟件定義網絡的網絡流量異常檢測方法。
技術實現要素:
本發明所要解決的技術問題是提供一種面向軟件定義網絡的輕量級網絡流量異常檢測方法,通過分析sdn中所特有的packet-in消息,以達到快速地檢測sdn中的流量異常事件,進而對sdn中的流量異常事件進行響應的目的。
為解決上述技術問題,本發明采用的技術方案是:
一種面向軟件定義網絡的輕量級網絡流量異常檢測方法,包括以下步驟:
步驟1:網絡初始化完成后,在控制器上建立用于統計控制器收到的packet-in消息的計數器、統計packet-in消息中封裝的不同協議報文數目的字典、統計packet-in消息源交換機的字典,同時初始化計數器和兩個字典的參數值為0,并記錄當前時刻t0;
步驟2:所述控制器解析收到的packet-in消息,提取該packet-in消息封裝的報文類型及該packet-in消息的來源交換機;
步驟3:更新所述統計packet-in消息中封裝的不同協議報文數目的字典及統計packet-in消息源交換機的字典;
步驟4:所述控制器收到底層交換機發送的packet-in消息時,所述packet-in消息計數器數值加1;
步驟5:所述packet-in消息計數器值加1后,該消息計數器值將模以指定閾值,若上述模操作的余數不為0,則不做處理,檢測停止,若模操作的余數為0,則記錄當前時刻t1;
步驟6:根據packet-in消息計數器值、統計packet-in消息中封裝的不同協議報文數目的字典、統計packet-in消息源交換機的字典以及時刻記錄值t0、t1計算packet-in消息特征;
步驟7:使用基于聚類的離群點檢測技術分析所述packet-in消息特征,判斷packet-in消息是否出現了異常,進而得出網絡流量是否出現了異常。
進一步的,所述packet-in消息特征包括:packet-in消息到達速率、各交換機發送的packet-in消息比例、packet-in消息封裝的報文協議類型比例、packet-in消息封裝的不同協議的報文到達速率。
進一步的,當packet-in消息出現異常,即網絡流量異常時,進行網絡流量異常報警。
與現有技術相比,本發明的有益效果是:
1、與現有的網絡流量異常檢測方法需要通過鏡像流量或周期采樣獲取網絡中的報文不同,本發明方法基于sdn中所特有的packet-in消息能夠反映底層網絡狀況的特性,僅需在控制器收到packet-in消息時對該消息進行進一步的簡單分析,因此,本發明能夠避免增加對網絡進行采集的報文,大量減少網絡的流量負載,是一種輕量級的網絡異常檢測方法。
2、本發明方法無需分析大量網絡報文,能夠極大地減輕網絡流量異常檢測過程中的計算資源開銷,進而降低檢測出網絡流量異常的響應時間。
3、本發明方法僅需部署在控制器上,無需對底層網絡設備進行修改,是一種操作簡便、成本優化的網絡流量異常檢測方法。
附圖說明
圖1為本發明實施例中一種面向軟件定義網絡的輕量級網絡流量異常檢測方法流程圖。
具體實施方式
下面結合附圖和具體實施方式對本發明作進一步詳細的說明。圖1示出了本發明實施例中一種面向軟件定義網絡的輕量級網絡流量異常檢測方法流程圖,其具體步驟為:
步驟1:網絡初始化完成后,在控制器上建立用于統計網絡中所有交換機發送的packet-in消息數目的計數器c1、統計packet-in消息中封裝的不同協議(tcp、udp、icmp、arp)報文數目的字典d1、統計packet-in消息來自哪個交換機的字典d2,同時初始化c1、d1和d2的參數值為0,并記錄當前時刻t0;
步驟2:控制器解析該packet-in消息,提取該packet-in消息封裝的報文類型msg_type及該packet-in消息的來源交換機src_sw;
步驟3:字典d1的d1(msg_type)值加1;
步驟4:字典d2的d2(src_sw)值加1;
步驟5:當控制器接收到交換機發送的packet-in消息后,c1計數值加1;
步驟6:計數器c1當前值模以閾值n并計算余數b;
步驟7:若b≠0,則程序結束;若b=0,則轉入步驟8;
步驟8:記錄當前時刻t1;
步驟9:計算packet-in消息到達速率v:v=n/(t1-t0);
步驟10:對于packet-in消息中封裝的tcp、udp、icmp、arp協議,分別計算packet-in消息封裝的上述報文類型到達速率:vt=d1(tcp)/(t1-t0)、vu=d1(udp)/(t1-t0)、vi=d1(icmp)/(t1-t0)以及va=d1(arp)/(t1-t0);
步驟11:計算packet-in消息封裝的tcp、udp、icmp、arp協議報文各自占比:rtt=d1(tcp)/t_d1、rtu=d1(udp)/t_d1、rti=d1(icmp)/t_d1、rta=d1(arp)/t_d1;
步驟12:計算各交換機發送的packet-in消息占比:rsi=d2(sw_id)/t_d2;
步驟13:將計算得到的packet-in消息到達速率v、packet-in消息封裝的不同類型報文到達速率:vt、vu、vi及va、packet-in消息封裝的不同類型報文比例:rtt、rtu、rti及rta、各交換機發送的packet-in消息比例:rsi送入到經訓練的iforest模型中進行檢測,判斷packet-in消息是否出現異常;
步驟14:若iforest判斷packet-in消息無異常,程序結束;
步驟15:若iforest判斷packet-in消息有異常,則程序發出網絡流量異常告警,程序結束。
本實施例中采用孤立森林算法(isolationforest,iforest)進行packet-in消息異常檢測,但此算法僅用來對本發明中的檢測算法進行說明,本發明中的檢測算法不限于此算法。