技術(shù)領(lǐng)域
本發(fā)明涉及網(wǎng)絡(luò)安全及流量管理領(lǐng)域,具體地,涉及一種基于NetFPGA的VoIP流量實時識別方法。
背景技術(shù):
VoIP由于成本低,應(yīng)用靈活,易于擴(kuò)展等特點,自出現(xiàn)以來,發(fā)展迅速。目前它的流量已成為互聯(lián)網(wǎng)流量中不可忽略的一部分,其流量的迅速增長使得傳統(tǒng)的網(wǎng)絡(luò)流量模型受到影響,給網(wǎng)絡(luò)管理和監(jiān)控帶來了新的挑戰(zhàn)。使網(wǎng)絡(luò)流量的分析、監(jiān)控和管理變得更加復(fù)雜和困難。對其流量進(jìn)行準(zhǔn)確識別,已經(jīng)成為一個很有價值的研究課題。
其次,任何一種網(wǎng)絡(luò)業(yè)務(wù)的準(zhǔn)確識別都將為入侵檢測提供便利。將網(wǎng)絡(luò)中大量的合法業(yè)務(wù)準(zhǔn)確的識別出來,有助于入侵檢測制定更可靠的合法流量規(guī)則集。
最后,VoIP流媒體為信息隱藏提供了更為安全的存在環(huán)境,流媒體的瞬時性使得攻擊者在流媒體即時傳輸?shù)倪^程中難以有足夠的時間來檢測隱蔽通信的存在。
所以 VoIP 語音流識別具有很強的現(xiàn)實意義,而傳統(tǒng)的流量識別方法在準(zhǔn)確性、實時性和通用性方面越來越難以到達(dá)要求。當(dāng)前對VoIP 語音流作出準(zhǔn)確,可靠的識別是一個富有挑戰(zhàn)而亟待解決的問題。在傳統(tǒng)的流量識別技術(shù)中,數(shù)據(jù)包提取速度總是受到PCI傳輸速度的限制,丟包的現(xiàn)象時有發(fā)生。主要是因為這種數(shù)據(jù)包的獲取方式是通過LibPcap或者WinPcap中的數(shù)據(jù)包提取函數(shù)實現(xiàn),所以要實現(xiàn)快速的網(wǎng)絡(luò)流量識別分類不僅僅是軟件技術(shù)的問題,也與硬件技術(shù)相關(guān)。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于,針對上述問題,提出一種基于NetFPGA的VoIP流量實時識別方法,以解決現(xiàn)有技術(shù)存在的技術(shù)問題。
為實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案是:一種基于NetFPGA的VoIP流量實時識別方法,主要包括:
步驟1:配置Net FPGA,然后將Net FPGA構(gòu)建為網(wǎng)卡模型,基于該網(wǎng)卡模型的框架,擴(kuò)展VoIP流捕獲模塊、快速準(zhǔn)確識別模塊以及流重現(xiàn)和緩存模塊,用戶數(shù)據(jù)通過DMA數(shù)據(jù)傳輸控制器和PCI控制功能模塊與用戶主機進(jìn)行數(shù)據(jù)交換;
步驟2:利用Libpcap的數(shù)據(jù)包捕獲BPF,實現(xiàn)VoIP的捕獲;
步驟3:利用包相似規(guī)則并結(jié)合DFI技術(shù),實現(xiàn)VoIP流的快速準(zhǔn)確識別;
步驟4:采用Hash方式實現(xiàn)VoIP數(shù)據(jù)表的重現(xiàn)和緩存,適應(yīng) Net FPGA 硬件速度。
進(jìn)一步地,步驟1中,配置Net FPGA包括安裝Cent OS操作系統(tǒng),配置驅(qū)動程序,安裝工具軟件。
進(jìn)一步地,步驟2 具體包括,數(shù)據(jù)包到達(dá)硬件層的網(wǎng)絡(luò)適配器后,通過修改網(wǎng)卡驅(qū)動,使網(wǎng)卡驅(qū)動與內(nèi)核共享緩沖區(qū),降低對內(nèi)存數(shù)據(jù)的拷貝次數(shù);然后Libpcap中的網(wǎng)絡(luò)分流器將數(shù)據(jù)拷貝后分配給過濾器,過濾器按照用戶設(shè)定的過濾規(guī)則對報文進(jìn)行匹配,若匹配成功則放入緩沖區(qū),否則丟棄該報文,最后交付給用戶態(tài)的應(yīng)用程序以作進(jìn)一步分析。
進(jìn)一步地,步驟3具體包括,將網(wǎng)絡(luò)探針捕獲的UDP流,按照UDP和RTP協(xié)議規(guī)則匹配,并根據(jù)其游程特性進(jìn)行判斷,即連續(xù)觀察數(shù)個RTP包,識別出RTP包流量;結(jié)合高速DFI技術(shù),即結(jié)合包的長度,上下行流量特征,包時間間隔特征快速確認(rèn)RTP流。
進(jìn)一步地,步驟4具體包括,將經(jīng)過確認(rèn)的VoIP流按五元組建立哈希索引,即分配一個流ID,放入基于生成的靜態(tài)哈希表,以流ID對應(yīng)其哈希表的鍵值,為每一個流建立一個唯一的表項,每個表項含有流標(biāo)識、下一表項指針、狀態(tài)、數(shù)據(jù)包計數(shù)、流隊列指針和活動時間,流標(biāo)識利用五元組用于指明一個唯一的流,下一表項指針指向同一鍵值的下一個流的表項,每一個流分配一組隊列緩存和數(shù)據(jù)包計數(shù),活動時間用于標(biāo)識該流最后一個數(shù)據(jù)包到達(dá)的時間,若某個流某個timeout時間后沒有新數(shù)據(jù)到達(dá),則認(rèn)為該流已經(jīng)終止,從而釋放該表項。
進(jìn)一步地,所述五元組包括源IP地址、目的IP地址、源端口、目的端口和協(xié)議。
進(jìn)一步地,所述按照UDP和RTP協(xié)議規(guī)則匹配,包括按照UDP端口號,UDP包的長度域,RTP包的Version規(guī)則匹配;
所述UDP端口號用于指明用于雙向通信的端口;
所述UDP包的長度域,是負(fù)載數(shù)據(jù)加上UDP包頭域的總長度,UDP包頭長度為8字節(jié),RTP固定包長度為12字節(jié),RTP包的貢獻(xiàn)源標(biāo)識符,長度為4字節(jié),所述UDP包長度域值大于CC*4+12+8;
所述RTP包的Version域,用于指明當(dāng)前RTP協(xié)議的版本,此域值為2;
進(jìn)一步地,所述根據(jù)包的長度,上下行流量特征,包時間間隔特征快速確認(rèn)RTP流,具體為根據(jù)VoIP數(shù)據(jù)包的大小是否相同,VoIP的上下行流量分配差距是否很大,包時間間隔是否相對其他網(wǎng)絡(luò)應(yīng)用的間隔相對要小。
本發(fā)明各實施例的一種基于NetFPGA的VoIP流量實時識別方法,包括:基于NetFPGA的軟硬件協(xié)同設(shè)計,首先構(gòu)建NetFPGA的網(wǎng)卡模型,在此基礎(chǔ)上擴(kuò)展NetFPGA的硬件設(shè)計,使其具有服務(wù)于網(wǎng)絡(luò)流量捕獲識別的功能;軟件部分以網(wǎng)絡(luò)數(shù)據(jù)包捕獲函數(shù)庫libpcap為基礎(chǔ),將軟硬件結(jié)合,實現(xiàn)對VoIP通信流的實時捕獲,快速識別,重現(xiàn)和緩存。
本發(fā)明的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。
下面通過附圖和實施例,對本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。
附圖說明
附圖用來提供對本發(fā)明的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實施例一起用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中:
圖1為本發(fā)明實施例所述的基于NetFPGA的VoIP流量實時識別方法的系統(tǒng)硬件擴(kuò)展圖;
圖2為本發(fā)明實施例所述的基于NetFPGA的VoIP流量實時識別方法的流量捕獲結(jié)構(gòu)圖;
圖3為本發(fā)明實施例所述的基于NetFPGA的VoIP流量實時識別方法的網(wǎng)絡(luò)截包流程圖;
圖4為發(fā)明實施例所述的基于NetFPGA的VoIP流量實時識別方法的VoIP流快速準(zhǔn)確識別流程圖。
具體實施方式
以下結(jié)合附圖對本發(fā)明的優(yōu)選實施例進(jìn)行說明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。
具體地,一種基于NetFPGA的VoIP流量實時識別方法,結(jié)合附圖1-附圖4,包括以下步驟:
S1:首先配置 Net FPGA ,即安裝Cent OS操作系統(tǒng),配置驅(qū)動程序,安裝工具軟件。其次將NetFPGA構(gòu)建為網(wǎng)卡模型,基于此框架,擴(kuò)展VoIP流捕獲模塊,快速準(zhǔn)確識別模塊,流重現(xiàn)和緩存模塊,用戶數(shù)據(jù)通過DMA數(shù)據(jù)傳輸控制器和PCI控制功能模塊與主機交換。其系統(tǒng)硬件擴(kuò)展如圖1所示。
S2:VoIP流捕獲實現(xiàn):采用Libpcap的數(shù)據(jù)包捕獲BPF技術(shù),其系統(tǒng)架構(gòu)如圖2所示。數(shù)據(jù)包到達(dá)硬件層的網(wǎng)絡(luò)適配器后,通過修改網(wǎng)卡驅(qū)動,使網(wǎng)卡驅(qū)動與內(nèi)核共享緩沖區(qū),降低了對內(nèi)存數(shù)據(jù)的拷貝次數(shù)。然后Libpcap中的網(wǎng)絡(luò)分流器將數(shù)據(jù)拷貝后分配給過濾器,過濾器按照用戶設(shè)定的過濾規(guī)則對報文進(jìn)行匹配,若匹配成功則放入緩沖區(qū),否則丟棄該報文,最后交付給用戶態(tài)的應(yīng)用程序以作進(jìn)一步分析。
進(jìn)一步:首先開啟所要監(jiān)聽的網(wǎng)卡適配器,并檢查鏈路狀態(tài)和獲取網(wǎng)絡(luò)掩碼,其流程如圖3所示。然后配置內(nèi)核過濾器為“ip and udp”,從而,只提交UDP數(shù)據(jù)包。因為VoIP流主要被封裝在 RTP 信息包的 UDP 消息段中。隨后,過濾器被植入內(nèi)核,直接與網(wǎng)絡(luò)接口通信,不必通過用戶層解析數(shù)據(jù)包,從而高效地過濾掉其他無關(guān)的數(shù)據(jù)包。內(nèi)核通過一系列回調(diào)函數(shù)為用戶層提供I/O操作,通過這種回調(diào)方式,應(yīng)用層程序便可以訪問UDP包的整個以太幀,執(zhí)行諸如包解析、過濾、分類和緩存等功能。
S3:VoIP流的快速準(zhǔn)確識別。將網(wǎng)絡(luò)探針捕獲的UDP流,按照UDP和RTP協(xié)議(如UDP端口號,UDP包的長度域,RTP包的Version域等)規(guī)則匹配,并根據(jù)其游程特性進(jìn)行判斷,即連續(xù)觀察數(shù)個RTP包,識別出RTP包流量;特結(jié)合高速DFI技術(shù),即包的長度,上下行流量特征,包時間間隔特征快速確認(rèn)RTP流。
具體過程是:主要的協(xié)議規(guī)則匹配依據(jù)如下所示。
UDP端口號。UDP端口號用于指明用于雙向通信的端口,通常的UDP端口都是偶數(shù)端口,其加1的奇數(shù)端口通常用于其配套使用的RTCP協(xié)議端口。
UDP包的長度域。是負(fù)載數(shù)據(jù)加上UDP包頭域的總長度。UDP包頭長度為8字節(jié),RTP固定包長度為12字節(jié),RTP包的貢獻(xiàn)源標(biāo)識符(Contributing Source Identifiers, CSRC)長度為4字節(jié)。因此,UDP包長度域值必須大于CC*4+12+8。
RTP包的Version域。此域用于指明當(dāng)前RTP協(xié)議的版本,此域值應(yīng)當(dāng)為2。
采用包相似性分析規(guī)則,即通過對連續(xù)多個包的觀察,依據(jù)多個包的相似性進(jìn)一步確認(rèn)RTP包,設(shè)置為5個連續(xù)數(shù)據(jù)包,如果都滿足所述的匹配和檢測,可以判定其為VoIP流。
包相似性分析規(guī)則具體是:將通過匹配判斷的流按五元組(源IP地址、目的IP地址、源端口、目的端口和協(xié)議)進(jìn)行建立哈希索引,并緩存起來,已確認(rèn)后續(xù)多個包屬于同一個VoIP 流。
PT域。載荷類型域(Payload Type)用于指明當(dāng)前通信的壓縮語音編碼格式。對于VoIP流,PT域必須是一個定值。
SSRC域。同步源標(biāo)識符(Synchronization Source Identifier, SSRC)域用于標(biāo)識此RTP流的來源。每個RTP流都有一個唯一的SSRC,是一個定值。
序列號和時間戳域。在RTP包中,序列號(Sequence Number)被用于標(biāo)識語音幀的發(fā)送順序。時間戳(Timestamp)用于寫入當(dāng)前包的發(fā)送時間。
游程長度。試驗后設(shè)置為5個連續(xù)數(shù)據(jù)包,如果都滿足之前的匹配和游程檢測,可以判定其為VoIP流。
利用DFI技術(shù)的流量識別方法,更準(zhǔn)確的判別VoIP流。
包的長度:
VoIP數(shù)據(jù)包的大小基本相同。(此處數(shù)據(jù)包的大小基本相同指的是大小誤差在0-100字節(jié)圍內(nèi))
上下行流量特征:
VoIP的上下行流量差異不大,而其他流上下行流量分配差距很大(此處的上下行流量差異不大,沒有嚴(yán)格的量化數(shù)據(jù),現(xiàn)有中上下流量的判斷是根據(jù)人為根據(jù)整體數(shù)據(jù)判斷)。
包時間間隔特征:
由于網(wǎng)絡(luò)電話要求實時性較高,其包的間隔相對其他網(wǎng)絡(luò)應(yīng)用的間隔相對要小,有著較為明顯的分布特征。
S4:將經(jīng)過確認(rèn)的VoIP流按五元組(源IP地址、目的IP地址、源端口、目的端口和協(xié)議)進(jìn)行建立哈希索引,即分配一個流ID,放入基于生成的靜態(tài)哈希表,以流ID對應(yīng)其哈希表的鍵值,為每一個流建立一個唯一的表項。每個表項含有流標(biāo)識、下一表項指針、狀態(tài)、數(shù)據(jù)包計數(shù)、流隊列指針和活動時間。流標(biāo)識利用五元組用于指明一個唯一的流。下一表項指針指向同一鍵值的下一個流的表項。每一個流分配一組隊列緩存和數(shù)據(jù)包計數(shù)。活動時間用于標(biāo)識該流最后一個數(shù)據(jù)包到達(dá)的時間,若某個流某個timeout時間后沒有新數(shù)據(jù)到達(dá),便可認(rèn)為該流已經(jīng)終止,從而釋放該表項。采用 Hash 方式解決VoIP數(shù)據(jù)表的重現(xiàn)和緩存,適應(yīng) Net FPGA 硬件速度的要求
發(fā)明基于NetFPGA的軟硬件協(xié)同設(shè)計,首先構(gòu)建NetFPGA的網(wǎng)卡模型,在此基礎(chǔ)上擴(kuò)展NetFPGA的硬件設(shè)計,使其具有服務(wù)于網(wǎng)絡(luò)流量捕獲識別的功能;軟件部分以網(wǎng)絡(luò)數(shù)據(jù)包捕獲函數(shù)庫libpcap為基礎(chǔ),將軟硬件結(jié)合,實現(xiàn)對VoIP通信流的實時捕獲,快速識別,重現(xiàn)和緩存。
軟硬件協(xié)同,提高效率,不丟包。基于NetFPGA的VoIP流量識別,利用NetFPGA可編程的硬件實現(xiàn)數(shù)據(jù)包流量信息的提取和搜集,能夠保證不丟包,軟件部分只處理識別分類工作,保證較高的識別效率。
采用將包相似性分析與流量行為(DFI)特征相結(jié)合的方法,不但解決了傳統(tǒng)基于主機行為方法無法應(yīng)對的加密流和基于隨機端口號建立的動態(tài)會話的識別,同時由于不必訪問流量的應(yīng)用層數(shù)據(jù),從而保護(hù)了用戶數(shù)據(jù)的隱私性。特別是該算法對VoIP的應(yīng)用升級或者新的VoIP應(yīng)用,仍然可以有效地識別其流量。
最后應(yīng)說明的是:以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,盡管參照前述實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,對于本領(lǐng)域的技術(shù)人員來說,其依然可以對前述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。