本發(fā)明涉及網(wǎng)絡(luò)安全
技術(shù)領(lǐng)域:
,具體涉及一種流量分析方法及系統(tǒng)。
背景技術(shù):
:目前全球因特網(wǎng)所采用的協(xié)議族是TCP/IP協(xié)議族。IP是TCP/IP協(xié)議族中網(wǎng)絡(luò)層的協(xié)議,也是TCP/IP協(xié)議族的核心協(xié)議。目前IP協(xié)議的版本號(hào)是4(簡(jiǎn)稱為IPv4),發(fā)展至今已經(jīng)使用了30多年。IPv4的地址位數(shù)為32位,也就是最多有2的32次方的電腦可以聯(lián)到Internet上,近十年來(lái)由于互聯(lián)網(wǎng)的蓬勃發(fā)展,IP位址的需求量越來(lái)越大,使得IP位址的發(fā)放愈趨嚴(yán)格。隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,各項(xiàng)新的應(yīng)用和服務(wù)(例如視頻點(diǎn)播,P2P下載等應(yīng)用)層出不窮,使得網(wǎng)絡(luò)流量日益增加,并且給網(wǎng)絡(luò)帶來(lái)許多安全隱患。同時(shí),IPv4的地址短缺問(wèn)題日益嚴(yán)重,阻礙了IP網(wǎng)絡(luò)的發(fā)展。為了擴(kuò)大地址空間,擬通過(guò)IPv6重新定義地址空間,IPv6是下一版本的互聯(lián)網(wǎng)協(xié)議,也可以說(shuō)是下一代互聯(lián)網(wǎng)的協(xié)議。IPv6采用128位地址長(zhǎng)度,幾乎可以不受限制地提供地址。按保守方法估算IPv6實(shí)際可分配的地址,整個(gè)地球的每平方米面積上仍可分配1000多個(gè)地址。在IPv6的設(shè)計(jì)過(guò)程中除了一勞永逸地解決了地址短缺問(wèn)題以外,還考慮了在IPv4中解決不好的其它問(wèn)題,主要有端到端IP連接、服務(wù)質(zhì)量(QoS)、安全性、多播、移動(dòng)性、即插即用等。IPv6不僅解決了地址空間短缺問(wèn)題,而且其內(nèi)置了安全機(jī)制,提供給用戶更高的服務(wù)質(zhì)量。另外,基于SIIT的協(xié)議轉(zhuǎn)換技術(shù)IVI可以解決IPv6網(wǎng)絡(luò)與IPv4網(wǎng)絡(luò)數(shù)據(jù)包的網(wǎng)絡(luò)層翻譯,其基本概念就是IPv4的一些地址通過(guò)IVI“盒子”映射到IPv6的網(wǎng)絡(luò)里使用。從IPv6的地址空間中選一個(gè)子集與IPv4做基本的映射,通過(guò)這種映射規(guī)則,用戶獲得IPv6地址直接訪問(wèn)IPv6資源。在IPv4和IPv6都能訪問(wèn)的情況下,為避免網(wǎng)絡(luò)視頻、P2P下載等耗用帶寬資源嚴(yán)重應(yīng)用的使用,造成網(wǎng)絡(luò)出口的擁堵,系統(tǒng)后臺(tái)需要時(shí)刻監(jiān)控各個(gè)子網(wǎng)中各個(gè)應(yīng)用所占帶寬,以對(duì)各個(gè)應(yīng)用的帶寬進(jìn)行合理分配。技術(shù)實(shí)現(xiàn)要素:(一)要解決的技術(shù)問(wèn)題本發(fā)明的目的在于,提供一種流量分析方法及系統(tǒng),能夠統(tǒng)計(jì)分析出子網(wǎng)中各個(gè)應(yīng)用所占流量,從而為后續(xù)的流量分配提供依據(jù)。(二)技術(shù)方案本發(fā)明一方面提供一種流量分析方法,包括:S1,抓取子網(wǎng)中的數(shù)據(jù)包到用戶空間;S2,在用戶空間中對(duì)所述數(shù)據(jù)包進(jìn)行解析,以獲取該數(shù)據(jù)包所采用的協(xié)議;S3,將步驟S2中數(shù)據(jù)包的解析結(jié)果進(jìn)行存儲(chǔ);S4,根據(jù)存儲(chǔ)的解析結(jié)果,顯示一時(shí)間段內(nèi)流量在各個(gè)協(xié)議上的分布情況。進(jìn)一步,步驟S1中,采用一環(huán)形緩存抓取子網(wǎng)中的數(shù)據(jù)包到用戶空間,所述環(huán)形緩存具有一讀取指針和寫(xiě)入指針,其中,采用寫(xiě)入指針將抓取的數(shù)據(jù)包寫(xiě)入該環(huán)形緩存中,采用讀取指針將該環(huán)形緩存中的數(shù)據(jù)包讀取到用戶空間。進(jìn)一步,步驟S2中,先判斷所述數(shù)據(jù)包為IPv4數(shù)據(jù)包或IPv6數(shù)據(jù)包,然后再獲取該IPv4數(shù)據(jù)包或IPv6數(shù)據(jù)包在IP上層所采用的協(xié)議。進(jìn)一步,步驟S2中,根據(jù)所述數(shù)據(jù)包中IP首部的協(xié)議號(hào)字段,獲取該數(shù)據(jù)包在傳輸層所采用的協(xié)議,根據(jù)所述數(shù)據(jù)包中端口號(hào)字段,獲取該數(shù)據(jù)包在傳輸層在應(yīng)用層上所采用的協(xié)議。進(jìn)一步,步驟S3中,若當(dāng)前存儲(chǔ)的數(shù)據(jù)容量大于一閾值,則按時(shí)間順序刪除最早存儲(chǔ)的數(shù)據(jù),并將步驟S2中數(shù)據(jù)包的解析結(jié)果進(jìn)行存儲(chǔ)。本發(fā)明另一方面提供一種流量分析系統(tǒng),包括:數(shù)據(jù)采集模塊,用于抓取子網(wǎng)中的數(shù)據(jù)包到用戶空間;協(xié)議分析模塊,用于在用戶空間中對(duì)所述數(shù)據(jù)包進(jìn)行解析,以獲取該數(shù)據(jù)包所采用的協(xié)議;存儲(chǔ)模塊,用于將數(shù)據(jù)包的解析結(jié)果進(jìn)行存儲(chǔ);顯示模塊,用于根據(jù)存儲(chǔ)的解析結(jié)果,顯示一時(shí)間段內(nèi)流量在各個(gè)協(xié)議上的分布情況。進(jìn)一步,數(shù)據(jù)采集模塊采用一環(huán)形緩存抓取子網(wǎng)中的數(shù)據(jù)包到用戶空間,所述環(huán)形緩存具有一讀取指針和寫(xiě)入指針,其中,采用所述寫(xiě)入指針將抓取的數(shù)據(jù)包寫(xiě)入該環(huán)形緩存中,采用所述讀取指針將該環(huán)形緩存中的數(shù)據(jù)包讀取到用戶空間。進(jìn)一步,協(xié)議分析模塊先判斷所述數(shù)據(jù)包為IPv4數(shù)據(jù)包或IPv6數(shù)據(jù)包,然后再獲取該IPv4數(shù)據(jù)包或IPv6數(shù)據(jù)包在IP上層所采用的協(xié)議。進(jìn)一步,協(xié)議分析模塊根據(jù)所述數(shù)據(jù)包中IP首部的協(xié)議號(hào)字段,獲取該數(shù)據(jù)包在傳輸層所采用的協(xié)議,根據(jù)所述數(shù)據(jù)包中端口號(hào)字段,獲取該數(shù)據(jù)包在傳輸層在應(yīng)用層上所采用的協(xié)議。進(jìn)一步,存儲(chǔ)模塊若判斷出當(dāng)前存儲(chǔ)的數(shù)據(jù)容量大于一閾值,則按時(shí)間順序刪除最早存儲(chǔ)的數(shù)據(jù),并將所述數(shù)據(jù)包的解析結(jié)果進(jìn)行存儲(chǔ)。(三)有益效果本發(fā)明具有以下優(yōu)點(diǎn):1、本發(fā)明通過(guò)對(duì)流量數(shù)據(jù)包中的應(yīng)用層協(xié)議進(jìn)行分析,從而得到網(wǎng)絡(luò)中各個(gè)應(yīng)用所占用的流量情況,從而為后續(xù)的流量分配提供依據(jù)。2、現(xiàn)有的數(shù)據(jù)包抓取過(guò)程中,從網(wǎng)卡抓取數(shù)據(jù)包到用戶空間時(shí),網(wǎng)卡驅(qū)動(dòng)程序會(huì)產(chǎn)生一次中斷,在大流量的情況下,操作系統(tǒng)將花費(fèi)大量的時(shí)間用于中斷處理,這顯然降低抓取效率。本發(fā)明在數(shù)據(jù)包采集的過(guò)程中,采集環(huán)形緩存作為中間緩存來(lái)將數(shù)據(jù)包抓取到用戶空間,環(huán)形緩存具有讀取指針和寫(xiě)入指針,能同步地進(jìn)行數(shù)據(jù)包抓取和寫(xiě)入,不會(huì)出現(xiàn)收包時(shí)網(wǎng)卡驅(qū)動(dòng)程序中的情況。3、隨著網(wǎng)絡(luò)規(guī)模的逐漸擴(kuò)大,流量信息會(huì)呈幾何級(jí)增長(zhǎng),本發(fā)明在數(shù)據(jù)存儲(chǔ)容量超過(guò)一定閾值時(shí),將按照數(shù)據(jù)存入的順序刪除前期的流量記錄,這樣保證了數(shù)據(jù)庫(kù)的承載能力以及性能。附圖說(shuō)明圖1是本發(fā)明實(shí)施例提供的應(yīng)用場(chǎng)景。圖2是本發(fā)明實(shí)施例提供的流量分析方法的流程圖。具體實(shí)施方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例,并參照附圖,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。圖1是本發(fā)明實(shí)施例提供的應(yīng)用場(chǎng)景,如圖1所示,子網(wǎng)中各個(gè)分支機(jī)構(gòu)客戶端上安裝多種軟件,能產(chǎn)生多種協(xié)議的流量??蛻舳松袭a(chǎn)生的各種協(xié)議的流量通過(guò)相應(yīng)的交換機(jī)轉(zhuǎn)發(fā)至核心交換機(jī)中,核心交換機(jī)將子網(wǎng)中產(chǎn)生的所有流量上傳中路由器,并有該路由器將流量轉(zhuǎn)發(fā)至各種外網(wǎng)中(互聯(lián)網(wǎng)Internet、教育網(wǎng)Cernet、教育網(wǎng)CernetII)。其中,核心交換機(jī)及路由器直接設(shè)有一個(gè)監(jiān)控系統(tǒng)服務(wù)器,監(jiān)控系統(tǒng)服務(wù)器上運(yùn)行的是Linux操作系統(tǒng),支持雙棧協(xié)議,同時(shí)安裝了流量分析系統(tǒng),以執(zhí)行本發(fā)明的流量分析方法。在本實(shí)施例中,子網(wǎng)中各個(gè)分支機(jī)構(gòu)客戶端所安裝的應(yīng)用可以是網(wǎng)絡(luò)游戲、視頻、電子郵件、網(wǎng)絡(luò)電話等,其均采用不同的協(xié)議進(jìn)行數(shù)據(jù)包傳輸,亦即本發(fā)明通過(guò)對(duì)數(shù)據(jù)包的協(xié)議進(jìn)行分析,即可判斷出各個(gè)應(yīng)用所占用的流量。圖2是本發(fā)明實(shí)施例提供的流量分析方法的流程圖,針對(duì)上述各種應(yīng)用,本實(shí)施例的流量分析方法包括:S1,采用一環(huán)形緩存抓取子網(wǎng)中的數(shù)據(jù)包到用戶空間,環(huán)形緩存具有一讀取指針和寫(xiě)入指針,其中,采用寫(xiě)入指針將抓取的數(shù)據(jù)包寫(xiě)入該環(huán)形緩存中,采用讀取指針將該環(huán)形緩存中的數(shù)據(jù)包讀取到用戶空間。本步驟功能是實(shí)時(shí)抓捕網(wǎng)絡(luò)數(shù)據(jù)包,獲取數(shù)據(jù)鏈路層上的幀結(jié)構(gòu)的數(shù)據(jù)包到用戶空間。傳統(tǒng)的數(shù)據(jù)包捕獲方法大多都是基于Libpcap函數(shù)庫(kù),通過(guò)Libpcap提供的API接口直接與操作系統(tǒng)交互,來(lái)獲得數(shù)據(jù)包。Libpcap數(shù)據(jù)包不能直接作為文本分析的對(duì)象,在文本分析前,需要將數(shù)據(jù)包組合在一起還原出應(yīng)用層內(nèi)容。傳統(tǒng)的應(yīng)用層內(nèi)容還原經(jīng)過(guò)兩步,數(shù)據(jù)流還原和應(yīng)用層內(nèi)容提取,在獲取到應(yīng)用層內(nèi)容后,經(jīng)過(guò)文件格式解析,關(guān)鍵詞抽取等步驟就可以實(shí)現(xiàn)關(guān)鍵信息的獲取。這個(gè)過(guò)程中,數(shù)據(jù)包經(jīng)歷了從網(wǎng)卡到內(nèi)核空間、從內(nèi)核空間到用戶空間的兩次數(shù)據(jù)拷貝。這種方式操作簡(jiǎn)單,但在高速網(wǎng)絡(luò)環(huán)境下抓包效率不高。針對(duì)傳統(tǒng)數(shù)據(jù)包抓捕機(jī)制的不足,本實(shí)施例采用基于PF_RING套接字的抓捕方法,PF_RING原理是將網(wǎng)卡接受的數(shù)據(jù)包存儲(chǔ)在一個(gè)環(huán)狀緩存,其有兩個(gè)接口:一個(gè)供網(wǎng)卡向其中寫(xiě)數(shù)據(jù)包,另一個(gè)為應(yīng)用程序提供讀取數(shù)據(jù)包的接口,讀取數(shù)據(jù)包的接口通過(guò)mmap()函數(shù)實(shí)現(xiàn)。環(huán)形緩存實(shí)現(xiàn)步驟如下:創(chuàng)建PF_RING套接字時(shí),同時(shí)創(chuàng)建環(huán)形緩存,環(huán)形緩存具有讀取指針和寫(xiě)入指針。不同的套接字分配不同的環(huán)形緩存,套接字被綁定到網(wǎng)卡時(shí),網(wǎng)卡一直處于只讀模式,PF_RING套接字采用寫(xiě)入指針將網(wǎng)卡收到的數(shù)據(jù)被拷貝到環(huán)形緩存中。用戶空間的應(yīng)用程序通過(guò)打開(kāi)PF_RING套接字描述符,獲取其環(huán)形緩存的讀指針,然后通過(guò)mmap()函數(shù)來(lái)訪問(wèn)PF_RING的環(huán)狀緩存,應(yīng)用程序讀取數(shù)據(jù)包以后將移動(dòng)緩存的讀取指針。S2,在用戶空間中對(duì)數(shù)據(jù)包進(jìn)行解析,在本實(shí)施例中,對(duì)截獲的數(shù)據(jù)包進(jìn)行分層解析,按照TCP/IP體系結(jié)構(gòu)可以分為數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層四個(gè)解析過(guò)程。通過(guò)逐層分析把鏈路上的比特流轉(zhuǎn)化成可讀格式的數(shù)據(jù)信息,從而可以得出鏈路層上的MAC地址、網(wǎng)絡(luò)層上的IP地址(IPv4/IPv6)、傳輸層的服務(wù)類型(TCP/UDP)和各種類型的應(yīng)用協(xié)議層以及其對(duì)應(yīng)的端口號(hào)。針對(duì)當(dāng)前應(yīng)用層協(xié)議層出不窮的情況,采用傳統(tǒng)的基于端口號(hào)進(jìn)行協(xié)議判斷已不能滿足需求,本實(shí)施例在Linux下利用L7-flilter設(shè)計(jì)了基于模式匹配的協(xié)議分析方法。當(dāng)前以太網(wǎng)都采用幀結(jié)構(gòu)封裝了其上層的協(xié)議,本實(shí)施例將基于TCP/IP體系結(jié)構(gòu)進(jìn)行分析,主要是區(qū)分鏈路層上層的協(xié)議類型。具體地,首先判斷數(shù)據(jù)包為IPv4數(shù)據(jù)包或IPv6數(shù)據(jù)包,以判斷IPv4和IPv6的流量情況。判斷IPv4數(shù)據(jù)包或IPv6數(shù)據(jù)包是方式有多種,例如可以通過(guò)IP報(bào)文前4為的值進(jìn)行判斷,如果值是4,則表示該數(shù)據(jù)包為IPv4數(shù)據(jù)包,如果值是6,則表示該數(shù)據(jù)包為IPv6數(shù)據(jù)包。在判斷完IPv4數(shù)據(jù)包或IPv6數(shù)據(jù)包后,再獲取該IPv4數(shù)據(jù)包或IPv6數(shù)據(jù)包在傳輸層所采用的協(xié)議,在判斷傳輸層所采用的協(xié)議時(shí),主要關(guān)注“類型域”字段,即IP首部中的8位協(xié)議號(hào),其部分協(xié)議對(duì)應(yīng)協(xié)議號(hào)如下表所示:協(xié)議名ICMPIGMPTCPEGPIGPUDPOSPF字段值126891789所以,本實(shí)施例通過(guò)獲取IP首部中的8位協(xié)議號(hào),即可判斷出該在傳輸層上所采用的協(xié)議。在判斷完傳輸層上所采用的協(xié)議后,再對(duì)應(yīng)用層協(xié)議進(jìn)行判斷,本實(shí)施例中,通過(guò)判斷數(shù)據(jù)包中端口號(hào)判斷應(yīng)用層協(xié)議,其部分應(yīng)用層協(xié)議對(duì)應(yīng)的端口號(hào)如下表所示:應(yīng)用層協(xié)議端口號(hào)FTP20/21HTTP80SMTP25POP3110所以,本實(shí)施例通過(guò)獲取數(shù)據(jù)包中2位端口號(hào)字段的值,即可判斷出該在應(yīng)用層上所采用的協(xié)議。S3,將步驟S2中數(shù)據(jù)包的解析結(jié)果進(jìn)行存儲(chǔ),本實(shí)施例將采集的數(shù)據(jù)包經(jīng)過(guò)協(xié)議解析處理得出的信息,存儲(chǔ)到數(shù)據(jù)庫(kù)(Oracle)文件中。Oracle數(shù)據(jù)庫(kù)引入了共享SQL和多線索服務(wù)器體系結(jié)構(gòu),這減少了Oracle的資源占用,并增強(qiáng)了Oracle的能力。在安全方面,提供了基于角色(ROLE)分工的安全保密管理。另外,本實(shí)施例在Oracle數(shù)據(jù)庫(kù)設(shè)計(jì)方面考慮如下:1、采用數(shù)據(jù)庫(kù)自動(dòng)備份機(jī)制對(duì)采集到的數(shù)據(jù)信息進(jìn)行備份,以確保安全。同時(shí)考慮到后期的流量監(jiān)控系統(tǒng)的分布式部署,可能采用多個(gè)數(shù)據(jù)庫(kù)備份機(jī)。2、為了統(tǒng)計(jì)相關(guān)信息,需要對(duì)經(jīng)數(shù)據(jù)采集模塊和網(wǎng)絡(luò)協(xié)議分析模塊后的流量進(jìn)行存儲(chǔ)。隨著網(wǎng)絡(luò)規(guī)模的逐漸擴(kuò)大,流量信息會(huì)呈幾何級(jí)增長(zhǎng),考慮到Oracle數(shù)據(jù)庫(kù)的承載能力以及性能方面,一般情況下會(huì)設(shè)置一定閥值,當(dāng)數(shù)據(jù)庫(kù)文件超過(guò)一定大小時(shí),將按照數(shù)據(jù)存入的順序刪除前期的流量記錄。S4,根據(jù)存儲(chǔ)的解析結(jié)果,顯示一時(shí)間段內(nèi)流量在各個(gè)協(xié)議上的分布情況。本實(shí)施例將采集到的數(shù)據(jù)信息進(jìn)行分析和統(tǒng)計(jì),通過(guò)用戶友好的方式把結(jié)果顯示給用戶,便于用戶對(duì)網(wǎng)絡(luò)運(yùn)行狀況進(jìn)行了解,以及對(duì)網(wǎng)絡(luò)流量的趨勢(shì)做出判斷。本實(shí)施例采用了表格數(shù)據(jù)表示方法,表格給出了數(shù)據(jù)間的二維關(guān)系,能夠準(zhǔn)確反映出網(wǎng)絡(luò)流量的具體分布,網(wǎng)絡(luò)有哪些協(xié)議組成等信息。本實(shí)施例在執(zhí)行上述方法以后,得到子網(wǎng)某一時(shí)段的流量分別情況,如下表所示:如上表所示,在網(wǎng)絡(luò)層中,IPv4的流量要遠(yuǎn)大于IPv6的流量,用戶可以適當(dāng)將IPv4的流量轉(zhuǎn)換為IPv6流量,以確保IPv4線路不會(huì)發(fā)生堵塞。另外,針對(duì)IPv4網(wǎng)絡(luò)中不同的應(yīng)用,用戶可以將在線視頻(采用RTSP協(xié)議)、網(wǎng)絡(luò)語(yǔ)音電話(VoIP協(xié)議)的流量?jī)?yōu)先轉(zhuǎn)換到網(wǎng)絡(luò)情況較好IPv6線路,以保證這些實(shí)時(shí)通信應(yīng)用能夠正常運(yùn)行,對(duì)于P2P這類的帶寬占用較大的應(yīng)用,用戶也可以將其分流到其他網(wǎng)絡(luò)情況較好IPv4線路或IPv6線路。綜上所述,本發(fā)明采用PF_RING套接字配合環(huán)形緩存來(lái)抓取子網(wǎng)客戶端中網(wǎng)卡中的數(shù)據(jù)包,然后對(duì)數(shù)據(jù)包進(jìn)行網(wǎng)絡(luò)層、傳輸層、應(yīng)用層的協(xié)議分析,并進(jìn)行高效存儲(chǔ),最后可將存儲(chǔ)的協(xié)議分析結(jié)果展現(xiàn)給用戶,以協(xié)助用戶對(duì)各個(gè)應(yīng)用的流量進(jìn)行線路調(diào)整,保證了網(wǎng)絡(luò)中各線路的正常運(yùn)行。以上所述的具體實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說(shuō)明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。當(dāng)前第1頁(yè)1 2 3