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