一種有效數(shù)據(jù)包捕獲方法及請求重定向服務器的制造方法
【專利摘要】本發(fā)明提供了一種基于協(xié)議棧的有效包捕獲方法,該方法可以用來實現(xiàn)一種請求重定向服務器,該服務器可以把網(wǎng)絡用戶的請求引導到離用戶較近的緩存系統(tǒng),以提高用戶資源下載速度。該方法包括將包含有效包的網(wǎng)絡流量引導到重定向服務器的接收網(wǎng)口,所有進入網(wǎng)口的數(shù)據(jù)包被網(wǎng)口接收并遞交給網(wǎng)絡層協(xié)議棧;網(wǎng)絡層協(xié)議棧獲取數(shù)據(jù)包的目的IP地址,將目的IP地址為非本機IP地址的數(shù)據(jù)包不丟棄或路由轉發(fā)而是基于預設的過濾規(guī)則對數(shù)據(jù)包進行過濾,將滿足過濾規(guī)則的數(shù)據(jù)包的內(nèi)存地址存入對應的有效包緩沖區(qū)描述符環(huán),對于不滿足任何過濾規(guī)則的數(shù)據(jù)包則直接從內(nèi)存中刪除;本發(fā)明解決了基于抓包的有效包捕獲方法存在丟包及耗用系統(tǒng)資源的問題。
【專利說明】一種有效數(shù)據(jù)包捕獲方法及請求重定向服務器
【技術領域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)緩存系統(tǒng)請求重定向【技術領域】,特別是涉及一種有效數(shù)據(jù)包捕獲方法及請求重定向服務器。
【背景技術】
[0002]互聯(lián)網(wǎng)緩存系統(tǒng)將互聯(lián)網(wǎng)用戶對網(wǎng)絡資源的請求重定向到距離用戶較近的邊緣緩存服務器,以實現(xiàn)提高用戶資源下載速度及減少網(wǎng)間流量的目的。
[0003]請求重定向模塊是互聯(lián)網(wǎng)緩存系統(tǒng)的一個核心模塊,有效包的捕獲是請求重定向的基礎。
[0004]請求重定向模塊首先需要捕獲用戶的HTTP請求、P2P get-peer請求及DNS請求等有效數(shù)據(jù)包,然后通過對這些有效包進行分析來構造其重定向包并發(fā)送給用戶,以實現(xiàn)對用戶請求進行重定向的目的,因此有效包的捕獲方法是請求重定向模塊性能的關鍵因素。
[0005]傳統(tǒng)的有效包捕獲方法通常是基于抓包的思想,Unix/Linux平臺上可以使用Libpcap庫進行抓包,基于抓包的有效包捕獲方法其步驟如下:
[0006]步驟I)網(wǎng)絡數(shù)據(jù)包到達接收網(wǎng)口后,首先被接收網(wǎng)口接收并緩存到接收緩沖區(qū)中;
[0007]步驟2)網(wǎng)口產(chǎn)生硬件中斷,CPU響應中斷并執(zhí)行中斷處理程序,中斷處理將數(shù)據(jù)包拷貝到內(nèi)核內(nèi)存空間并遞交給上層協(xié)議棧處理,與此同時抓包模塊利用已經(jīng)創(chuàng)建的Socket從鏈路層驅(qū)動程序中獲得該數(shù)據(jù)包的拷貝,再通過Tap函數(shù)將數(shù)據(jù)包發(fā)給BPF (BSDPacket Filter)過濾器;
[0008]步驟3) BPF過濾器根據(jù)用戶預定義的過濾規(guī)則對數(shù)據(jù)包進行逐一過濾,滿足過濾規(guī)則的有效數(shù)據(jù)包被緩存到相應的緩沖區(qū),不滿足過濾規(guī)則的數(shù)據(jù)包被刪除。
[0009]基于抓包的有效包捕獲方法存在以下兩個缺點:
[0010]I)抓包模塊通過數(shù)據(jù)拷貝的方式獲取進入網(wǎng)口數(shù)據(jù)包的一份副本,當網(wǎng)絡流量較大時大量內(nèi)存拷貝會耗用很多系統(tǒng)資源;
[0011]2)數(shù)據(jù)包拷貝存在一定的延遲,當網(wǎng)絡流量較大時會產(chǎn)生大量的丟包。
【發(fā)明內(nèi)容】
[0012]鑒于以上所述現(xiàn)有技術的缺點,本發(fā)明針對現(xiàn)有互聯(lián)網(wǎng)緩存系統(tǒng)請求重定向模塊提出了一種新的有效包捕獲方法,該方法在協(xié)議?;A上進行數(shù)據(jù)包過濾和有效包捕獲,不進行網(wǎng)絡抓包及數(shù)據(jù)包拷貝,從而解決了現(xiàn)有基于抓包的有效包捕獲方法存在丟包及消耗大量系統(tǒng)資源的問題。
[0013]為實現(xiàn)上述目標及其他相關目標,本發(fā)明提供一種有效數(shù)據(jù)包捕獲方法,包括:將包含有效數(shù)據(jù)包的網(wǎng)絡流量引導至請求重定向服務器的接收網(wǎng)口 ;將所述接收網(wǎng)口設置為混雜模式以能接收目的MAC地址并非本網(wǎng)口 MAC地址的數(shù)據(jù)包,并遞交給網(wǎng)絡層協(xié)議棧處理;網(wǎng)絡層協(xié)議棧解析數(shù)據(jù)頭部以獲取數(shù)據(jù)包的目的IP地址,判斷所述數(shù)據(jù)包的目的IP地址是否為本機IP地址;若是,則將所述數(shù)據(jù)包按傳統(tǒng)協(xié)議棧流程處理;若否,則進行有效數(shù)據(jù)包捕獲處理,包括:獲取該數(shù)據(jù)包相關特征的值,將相關特征的值代入過濾規(guī)則列表中每一項過濾規(guī)則對應的特征邏輯運算表達式來進行計算,根據(jù)所述計算結果的值判斷數(shù)據(jù)包是否匹配該過濾規(guī)則;如果匹配成功,則將該數(shù)據(jù)包的內(nèi)存地址存入過濾規(guī)則指明的有效包緩沖區(qū)描述符環(huán)中;如果所有過濾規(guī)則都沒有匹配成功,則刪除該數(shù)據(jù)包。
[0014]可選的,所述數(shù)據(jù)包的相關特征是相關于該數(shù)據(jù)包的至少一個命題,所述相關特征的值是該命題的真假值,所述特征邏輯運算表達式是數(shù)據(jù)包各相關命題的復合命題,所述特征邏輯運算表達式的計算結果是指該復合命題的真假值。
[0015]可選的,所述數(shù)據(jù)包的相關特征包括:屬性特征和字節(jié)特征;所述屬性特征包括:數(shù)據(jù)包的屬性信息值是否滿足與預設值存在預定的運算關系;所述字節(jié)特征包括:數(shù)據(jù)包內(nèi)容在一定偏移量下得到的預定數(shù)量字節(jié)的值是否與預定值間存在預定的關系運算關系。
[0016]可選的,所述屬性特征包括:數(shù)據(jù)包頭部內(nèi)各項信息的值是否與預設值間存在預定的關系運算關系;所述字節(jié)特征包括:數(shù)據(jù)包內(nèi)容在一定偏移量下得到的預定數(shù)量字節(jié)的值是否與預定值間存在預定的關系運算關系。
[0017]可選的,通過在相關網(wǎng)絡鏈路上進行分光或者在出口路由做端口鏡像的方式,將所述包含有效數(shù)據(jù)包的網(wǎng)絡流量引導至請求重定向服務器的接收網(wǎng)口。
[0018]為實現(xiàn)上述目標及其他相關目標,本發(fā)明提供一種請求重定向服務器,包括:重定向服務器網(wǎng)卡的接收網(wǎng)口,用于接收被引導至所述請求重定向服務器的網(wǎng)絡數(shù)據(jù)流;所述接收網(wǎng)口設置為混雜模式,以能接收進入網(wǎng)口的所有數(shù)據(jù)包,并遞交給網(wǎng)絡層協(xié)議棧處理;有效包捕獲模塊,包括網(wǎng)絡層協(xié)議棧和有效包分析引擎;所述網(wǎng)絡層協(xié)議棧用于解析數(shù)據(jù)頭部以獲取數(shù)據(jù)包的目的IP地址,判斷所述數(shù)據(jù)包的目的IP地址是否為本機IP地址;若是,則將所述數(shù)據(jù)包按傳統(tǒng)協(xié)議棧流程處理;若否,則將所述數(shù)據(jù)包交給所述有效包分析引擎進行有效包捕獲處理;所述有效包分析引擎用于對數(shù)據(jù)包進行過濾并捕獲有效數(shù)據(jù)包,包括:獲取該數(shù)據(jù)包相關特征的值,將相關特征的值代入過濾規(guī)則列表中每一項過濾規(guī)則對應的特征邏輯運算表達式來進行計算,根據(jù)所述計算結果的值判斷數(shù)據(jù)包是否匹配該過濾規(guī)則;如果匹配成功,則將該數(shù)據(jù)包的內(nèi)存地址存入過濾規(guī)則指明的有效包緩沖區(qū)描述符環(huán)中;如果所有過濾規(guī)則都沒有匹配成功,則刪除該數(shù)據(jù)包;請求重定向模塊,用于將用戶對網(wǎng)絡資源的請求引導到緩存服務器,其讀取、分析有效數(shù)據(jù)包,并構造相應的響應包發(fā)送給用戶,以此實現(xiàn)對用戶請求的引導。
[0019]可選的,所述數(shù)據(jù)包的相關特征是相關于該數(shù)據(jù)包的至少一個命題,所述相關特征的值是該命題的真假值,所述特征邏輯運算表達式是數(shù)據(jù)包各相關命題的復合命題,所述特征邏輯運算表達式的計算結果是指該復合命題的真假值。
[0020]可選的,所述數(shù)據(jù)包的相關特征包括:屬性特征和字節(jié)特征;所述屬性特征包括:數(shù)據(jù)包的屬性信息值是否滿足與預設值存在預定的運算關系;所述字節(jié)特征包括:數(shù)據(jù)包內(nèi)容在一定偏移量下得到的預定數(shù)量字節(jié)的值是否與預定值間存在預定的關系運算關系。
[0021]可選的,所述屬性特征包括:數(shù)據(jù)包頭部內(nèi)各項信息的值是否與預設值間存在預定的關系運算關系;所述字節(jié)特征包括:數(shù)據(jù)包內(nèi)容在一定偏移量下得到的預定數(shù)量字節(jié)的值是否與預定值間存在預定的關系運算關系。
[0022]可選的,通過在相關網(wǎng)絡鏈路上進行分光或者在出口路由做端口鏡像的方式,將所述包含有效數(shù)據(jù)包的網(wǎng)絡流量引導至請求重定向服務器的接收網(wǎng)口。
[0023]如上所述,本發(fā)明提供了一種基于協(xié)議棧的有效數(shù)據(jù)包捕獲方法以及基于該方法實現(xiàn)的一種請求重定向服務器,該請求重定向服務器可以將互聯(lián)網(wǎng)用戶的網(wǎng)絡資源請求引導到距離用戶較近的邊緣緩存服務器,以提高用戶資源獲取的速度,并降低運營商網(wǎng)間結算成本?;趨f(xié)議棧的有效包捕獲方法包括將包含有效數(shù)據(jù)包的網(wǎng)絡流量引導至請求重定向服務器的接收網(wǎng)口 ;將所述接收網(wǎng)口設置為混雜模式以能接收目的MAC地址并非本網(wǎng)口MAC地址的數(shù)據(jù)包,并遞交給網(wǎng)絡層協(xié)議棧處理;網(wǎng)絡層協(xié)議棧解析數(shù)據(jù)頭部以獲取數(shù)據(jù)包的目的IP地址,判斷所述數(shù)據(jù)包的目的IP地址是否為本機IP地址;若是,則將所述數(shù)據(jù)包按傳統(tǒng)協(xié)議棧流程處理;若否,則進行有效數(shù)據(jù)包捕獲處理,包括:獲取該數(shù)據(jù)包相關特征的值,將相關特征的值代入過濾規(guī)則列表中每一項過濾規(guī)則對應的特征邏輯運算表達式來進行計算,根據(jù)所述計算結果的值判斷數(shù)據(jù)包是否匹配該過濾規(guī)則,如果匹配成功,則將該數(shù)據(jù)包的內(nèi)存地址存入過濾規(guī)則指明的有效包緩沖區(qū)描述符環(huán)中;如果所有過濾規(guī)則都沒有匹配成功,則刪除該數(shù)據(jù)包。該發(fā)明解決了基于抓包的有效包捕獲方法存在丟包以及消耗大量系統(tǒng)資源的問題。
【專利附圖】
【附圖說明】
[0024]圖1顯示為本發(fā)明一實施例中應用的網(wǎng)絡環(huán)境架構示意圖。
[0025]圖2顯示為本發(fā)明一實施例中的有效數(shù)據(jù)包捕獲方法的流程示意圖。
[0026]圖3a至圖3d顯示為本發(fā)明一實施例中的有效數(shù)據(jù)包捕獲方法應用的主要數(shù)據(jù)結構示意圖。
[0027]圖4顯示為本發(fā)明一實施例中的請求重定向服務器的結構示意圖。
[0028]圖5顯示為本發(fā)明一實施例中的重定向服務器捕獲數(shù)據(jù)包并重定向數(shù)據(jù)包的應用程序結果示意圖。
[0029]元件標號說明
[0030]I請求重定向服務器
[0031]11網(wǎng)卡
[0032]111接收網(wǎng)口
[0033]12有效包捕獲模塊
[0034]121網(wǎng)絡層協(xié)議棧
[0035]122有效包分析引擎
[0036]13請求重定向模塊
[0037]SI?S7方法步驟
【具體實施方式】
[0038]以下通過特定的具體實例說明本發(fā)明的實施方式,本領域技術人員可由本說明書所揭露的內(nèi)容輕易地了解本發(fā)明的其他優(yōu)點與功效。本發(fā)明還可以通過另外不同的【具體實施方式】加以實施或應用,本說明書中的各項細節(jié)也可以基于不同觀點與應用,在沒有背離本發(fā)明的精神下進行各種修飾或改變。需說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。
[0039]本發(fā)明的應用環(huán)境為基于TCP/IP協(xié)議棧的網(wǎng)絡環(huán)境,如因特網(wǎng)。本發(fā)明可以應用于互聯(lián)網(wǎng)緩存系統(tǒng),是針對互聯(lián)網(wǎng)緩存系統(tǒng)中請求重定向服務器有效數(shù)據(jù)包獲取技術的改進;參閱圖1所示為一互聯(lián)網(wǎng)緩存系統(tǒng)實施例,互聯(lián)網(wǎng)緩存系統(tǒng)主要由請求重定向服務器和緩存服務器集群組成,主要工作原理及流程為:(1)網(wǎng)內(nèi)互聯(lián)網(wǎng)用戶發(fā)起對網(wǎng)外資源的請求;(2)該請求數(shù)據(jù)包被導入到請求重定向服務器的接收網(wǎng)口 ;(3)請求重定向服務器捕獲、分析該請求數(shù)據(jù)包以產(chǎn)生相應的重定向包并發(fā)送給網(wǎng)內(nèi)用戶;(4)用戶收到請求重定向數(shù)據(jù)包后,用戶對網(wǎng)外資源的請求被引導到緩存服務器,用戶重新向緩存服務器發(fā)起資源請求,此時如果用戶請求的資源已經(jīng)緩存在緩存服務器,則緩存服務器直接將用戶請求的資源發(fā)送給用戶,否則緩存服務器向源站發(fā)起回源請求,獲取資源后發(fā)送給用戶并對獲取到的資源進行緩存。
[0040]請參閱圖2,本發(fā)明提供了一種有效數(shù)據(jù)包捕獲方法,包括:
[0041]步驟S1:將包含有效數(shù)據(jù)包的網(wǎng)絡流量引導至請求重定向服務器的接收網(wǎng)口。
[0042]在一實施例中,可以通過在相關網(wǎng)絡鏈路上進行分光或者在出口路由做端口鏡像等方式,將所述包含有效數(shù)據(jù)包的網(wǎng)絡流量引導至請求重定向服務器的接收網(wǎng)口,所述接收網(wǎng)口可以是請求請求重定向服務器上的網(wǎng)卡所提供。
[0043]步驟S2:將所述接收網(wǎng)口設置為混雜模式以能接收所有進入網(wǎng)口的數(shù)據(jù)包,并遞交給網(wǎng)絡層協(xié)議棧處理。
[0044]在一實施例中,對于linux服務器,可以通過執(zhí)行shell命令:ifconfig ethOpromise將其ethO網(wǎng)口設置成混雜模式。
[0045]步驟S3:網(wǎng)絡層協(xié)議棧解析數(shù)據(jù)頭部以獲取數(shù)據(jù)包的目的IP地址,判斷所述數(shù)據(jù)包的目的IP地址是否為本機IP地址。
[0046]在一實施例中,即判斷數(shù)據(jù)包的目的IP地址是否為本機(請求重定向服務器)IP地址,在網(wǎng)絡層協(xié)議棧將目的IP地址為非本機IP地址的數(shù)據(jù)包不丟棄或路由轉發(fā)而是進行處理以捕獲有效數(shù)據(jù)包。
[0047]步驟S4:若是,則將所述數(shù)據(jù)包按傳統(tǒng)協(xié)議棧流程處理。
[0048]在一實施例中,對于非路由模式運行TCP/IP協(xié)議棧的linux主機而言,網(wǎng)絡層協(xié)議棧解析IP頭部并判斷該IP數(shù)據(jù)包的目的IP是否為本機IP地址,若是則對數(shù)據(jù)包進行處理并去掉IP頭部后遞交給上層協(xié)議進行處理,網(wǎng)絡層根據(jù)IP數(shù)據(jù)頭部的Protocal字段來決定遞交給那種上層協(xié)議棧處理,常用的上層協(xié)議有TCP、UDP、ICMP、IGMP等協(xié)議。
[0049]步驟S5:若否,則進行有效數(shù)據(jù)包捕獲處理,包括:計算該數(shù)據(jù)包相關特征的值,將相關特征的值代入過濾規(guī)則列表中每一項過濾規(guī)則對應的邏輯運算表達式來進行計算,根據(jù)所述計算結果的值判斷數(shù)據(jù)包是否匹配該過濾規(guī)則。
[0050]在一實施例中,首先對網(wǎng)絡層協(xié)議棧進行修改,數(shù)據(jù)包在網(wǎng)絡層協(xié)議棧被劃分為目的IP地址為本機IP地址和目的IP地址為非本機IP地址的數(shù)據(jù)包,對于目的IP地址為非本機IP地址的數(shù)據(jù)包不進行路由轉發(fā)或丟棄而是直接交給有效包分析引擎進行有效包捕獲處理。
[0051]有效包分析引擎的有效包捕獲基于數(shù)據(jù)包的特征,其中包括屬性特征和字節(jié)特征。屬性特征是針對數(shù)據(jù)包屬性信息的一種宏觀描述,字節(jié)特征則是針對數(shù)據(jù)包在字節(jié)層面的一種描述;所述屬性特征包括:數(shù)據(jù)包的屬性信息值是否與預設值間存在預定的關系運算關系;所述字節(jié)特征包括:數(shù)據(jù)包內(nèi)容在一定偏移量下得到的預定數(shù)量字節(jié)的值是否與預定值間存在預定的關系運算關系。舉例來說,“目的端口號等于80”是數(shù)據(jù)包的一個屬性特征,如果一個數(shù)據(jù)包的TCP頭部中Destinat1n port字段的值為80,則其該屬性特征的值為1,否則其該屬性特征的值為0,另外“數(shù)據(jù)包的目的IP地址為221.181.122.4”也是描述數(shù)據(jù)包的一個屬性特征,若數(shù)據(jù)包IP頭部的目的IP地址為221.181.122.4,則該屬性特征值為1,反之則為0?!皌cp[20:2] = 0x4745”是數(shù)據(jù)包的一個字節(jié)特征,如果一個數(shù)據(jù)包的TCP數(shù)據(jù)中偏移20字節(jié)的連續(xù)兩個字節(jié)值等于0x4745,則該字節(jié)特征的值為1,否則該字節(jié)特征值為 0?!癲port = 80 and (tcp [20:2] = 0x4745 or tcp [20:2] = 0x4854) ”是上述特征的邏輯運算表達式,對于發(fā)往80端口的HTTP數(shù)據(jù)包該邏輯運算表達式的值為1。
[0052]如圖3a所示,在一實施例中有效包特征全局表用來存儲有效包的所有相關特征,其中每條特征包括5個字段,分別是:特征類型、特征參數(shù)、關系運算符、預設值、特征值。特征類型占用1字節(jié)內(nèi)存空間,用于表示該特征是字節(jié)特征還是屬性特征,其中屬性特征為0,字節(jié)特征為1 ;特征參數(shù)占用16字節(jié)內(nèi)存空間,特征參數(shù)是關于特征的描述比如port、dport等;預設值占用16字節(jié)內(nèi)存空間,是關于特征參數(shù)的預設值比如port特征參數(shù)的預設值80等;關系運算符占用1字節(jié)內(nèi)存空間,用于描述該特征的特征參數(shù)和預設值之間的關系運算類型,比如 >、=、〈等;特征值占用2字節(jié)內(nèi)存空間,表示該特征針對某數(shù)據(jù)包的真假值,有效包特征全局表初始化時該字段被置為-1 ;因此對于上述的三個特征:dp0rt =80、tcp [20:2] = 0x4745、tcp [20:2] = 0x4854 在有效包全局表中的儲存為(0, dport,=,80,-1)、(1,tcp [20:2], = ,0x4745, -1)、(1,tcp [20:2],=,0x4854,-1)。
[0053]如圖3b所示,所述過濾規(guī)則表用于儲存所有的有效包過濾規(guī)則,其中包括3個字段,分別是:MD5值、后續(xù)表達式、指針point。MD5值占用16字節(jié)內(nèi)存空間,存儲過濾規(guī)則字符串的 MD5 值,比如過濾字符串 “dport = 80 and (tcp [20:2] = 0x4745 or tcp [20:2]=0x4854) ”的16位MD5值為dlb83e5alc6e4332,存儲MD5值而不直接存儲過濾規(guī)則字符串的目的一方面是為了節(jié)約存儲空間,另一方面是為了提高相關過濾規(guī)則的查找速度;后續(xù)表達式占用40字節(jié)內(nèi)存空間,用于儲存過濾規(guī)則相關的特征邏輯表達式的后續(xù)表達式,對于上述過濾規(guī)則:dport = 80 and (tcp [20:2] = 0x4745 or tcp [20:2] = 0x4854),其中dport = 80在有效包特征全局表中的索引為0,tcp [20:2] = 0x4745在有效包特征全局表中的索引為1,tcp [20:2] = 0x4854在有效包特征全局表中的索引為2,則該邏輯特征表達式改寫為0&(11 2),該邏輯表達式的后續(xù)表達式為012 | &,因此該過濾規(guī)則的后續(xù)表達式字段存儲值為012 |& ;指針point存儲該過濾規(guī)則對應的有效包描述符環(huán)metadata的地址。
[0054]在一實施例中,有效包分析引擎的初始化程序讀取所有的有效包過濾規(guī)則并創(chuàng)建圖3所示的數(shù)據(jù)結構,根據(jù)有效包過濾規(guī)則初始化有效包特征全局表和過濾規(guī)則表中的相關字段。有效包捕獲過程首先根據(jù)數(shù)據(jù)包計算有效包特征全局表中所有特征的值,然后依次掃描過濾規(guī)則表中的每一條過濾規(guī)則,將有效包特征表中相關特征的值代入過濾規(guī)則后續(xù)表達式來計算該后續(xù)表達式的值并以此判斷該數(shù)據(jù)包是否匹配該過濾規(guī)則。
[0055]步驟S6:如果匹配成功,則將該數(shù)據(jù)包的內(nèi)存地址存入過濾規(guī)則指明的有效包緩沖區(qū)描述符環(huán)中。
[0056]如圖3b所示,在一實施例中,通過過濾規(guī)則的指針point字段可以找到其有效包描述符環(huán)Metadata,有效包描述符環(huán)Metadata是有效包描述符環(huán)的管理數(shù)據(jù)結構,占用24字節(jié)的內(nèi)存空間,該數(shù)據(jù)結構包括4個字段:free_point、avail-point、free-num、avail-num,其中free-point占用8字節(jié)內(nèi)存空間,指向有效包緩沖區(qū)描述符環(huán)中第一個空描述符;avail-point占用8字節(jié)內(nèi)存空間,指向有效包緩沖區(qū)描述符環(huán)中第一個可用的描述符;aVail-num占用4字節(jié)內(nèi)存空間,表示有效包描述符環(huán)中可用有效包描述符數(shù)量;free-num占用4字節(jié)內(nèi)存空間,表示有效包描述符環(huán)中空描述符數(shù)量。每當需要存儲一個新的有效包信息時,通過free-point獲取到第一個空描述符,將相關信息記錄到該描述符對應的內(nèi)存空間,然后free-point順時針后移一個位置,free-num執(zhí)行減一操作,avail-num執(zhí)行加一操作;當需要從有效包描述符環(huán)中讀取一個有效包時,通過avail-point獲取到第一個可用描述符地址,根據(jù)該描述符記錄的信息讀取到一個有效數(shù)據(jù)包,然后avail-point順時針后移一個位置,free-num執(zhí)行加一操作,avail-num執(zhí)行減I操作。
[0057]在一實施例中,有效包描述符環(huán)中每一項描述符包括一個index字段,該字段占用4字節(jié)內(nèi)存空間,表示有效包全局索引表的一個索引值,有效包索引表的數(shù)據(jù)結構例如圖3c所示。當記錄一個新的有效包時,首先根據(jù)有效包描述符環(huán)Metadata找到一個空的描述符,如果該有效包第一次匹配過濾規(guī)則,則從有效包全局索引表中找到一個空索引項,記錄該索引項在有效包索引表中的索引值,索引項Num字段置I,索引項的point字段存儲該數(shù)據(jù)包的內(nèi)存地址,然后將該索引項所在有效包索引表的索引值記錄到描述符中的index字段;如果該有效包已經(jīng)匹配前面的過濾規(guī)則,則根據(jù)記錄的有效包索引表中的索引值找到對應的索引項,將該索引項的Num字段執(zhí)行加一操作,同時將該索引項所在索引表的索引值存儲到描述符的index字段。當讀取指定過濾規(guī)則的有效包時,首先根據(jù)過濾過則的指針point字段找到該過濾規(guī)則的有效包描述符環(huán)Metadata,根據(jù)Metadata找到一個可用描述符,根據(jù)該描述符的index字段找到有效包全局索引表中的一個索引項,根據(jù)索引項中的point字段找到并讀取該有效包,同時索引項的Num字段執(zhí)行減一操作后判斷Num是否為0,如果為O則刪除point指向的有效包,同時point置NULL并更新有效包全局索引表位圖。
[0058]如圖3d所示,在一實施例中,所述有效包全局索引表位圖占用64乘8字節(jié)的內(nèi)存空間,用于記錄有效包索引表中所有索引項的空閑信息,有效包全局索引表中的每一索引項對應與索引表位圖中的I BH。如果索引表位圖中的某一 Bit為0,則表示其對應的索引項為空索引項,如果為I則表示其對應的索引項為非空。采用單獨的位圖來記錄全局索引表的空閑信息是為了提高空索引項的查找速度。
[0059]步驟S7:如果所有過濾規(guī)則都沒有匹配成功,則刪除該數(shù)據(jù)包。
[0060]在一實施例中,不匹配所有過濾規(guī)則的數(shù)據(jù)包不是我們感興趣的數(shù)據(jù)包,直接將數(shù)據(jù)包從內(nèi)核內(nèi)存空間中刪除。
[0061]不同于傳統(tǒng)網(wǎng)絡層協(xié)議棧對目的IP地址為非本機IP地址的數(shù)據(jù)包的處理方法,有效包捕獲方法中網(wǎng)絡層協(xié)議棧將數(shù)據(jù)包分成兩類:目的IP地址為本機IP的數(shù)據(jù)包和目的IP地址為非本機IP地址的數(shù)據(jù)包,目的IP地址為本機IP地址的數(shù)據(jù)包按照傳統(tǒng)協(xié)議棧的處理流程進行處理,目的IP地址為非本機IP地址的數(shù)據(jù)包不直接丟棄或路由轉發(fā)而是進行數(shù)據(jù)包過濾以獲取有效數(shù)據(jù)包。
[0062]如圖4所示,本發(fā)明提供一種請求重定向服務器1,部分技術細節(jié)與上述方法類似,因此不再贅述;請求重定向服務器1主要組成部分包括:請求重定向服務器1上監(jiān)聽網(wǎng)卡11的數(shù)據(jù)包接收網(wǎng)口 111,有效數(shù)據(jù)報捕獲模塊12主要組成部分為經(jīng)過特殊修改的網(wǎng)絡層協(xié)議棧121及有效包分析引擎122,以及請求重定向模塊13。數(shù)據(jù)包接收網(wǎng)口 111被設置成混雜模式使其可以接收所有進入網(wǎng)卡11的數(shù)據(jù)包并遞交給網(wǎng)絡層協(xié)議棧121進行處理。有效數(shù)據(jù)報捕獲模塊的網(wǎng)絡層協(xié)議棧121經(jīng)過了前述的修改使其對目的IP地址為非本機IP地址的數(shù)據(jù)包不丟棄或路由轉發(fā)而是交給有效包分析引擎122來處理,有效包分析引擎122對數(shù)據(jù)包進行分析過濾將滿足過濾條件的數(shù)據(jù)包內(nèi)存地址緩存到該過濾規(guī)則對應的有效包緩沖區(qū)描述符環(huán)中,沒有被任何過濾規(guī)則匹配的數(shù)據(jù)包從內(nèi)存中刪除,其中所述有效數(shù)據(jù)包可包括http get請求包、p2p get-peer請求包以及dns request數(shù)據(jù)包等。進而,請求重定向模塊13從有效包緩存區(qū)描述符環(huán)中讀取有效數(shù)據(jù)包并對有效包進行分析以此來產(chǎn)生其請求重定向數(shù)據(jù)包以達到將用戶對資源的請求重定向到緩存服務器。
[0063]以重定向用戶HTTP請求為例說明請求重定向服務器1的工作原理,首先包含用戶HTTP請求的流量被導入到接收網(wǎng)口 111,接收網(wǎng)口 111接收所有的數(shù)據(jù)包并遞交給網(wǎng)絡層協(xié)議棧121處理,網(wǎng)絡層協(xié)議棧121將目的IP地址為非本機IP地址的數(shù)據(jù)包交給有效包分析引擎122處理,其中這部分數(shù)據(jù)包就包括用戶的HTTP請求。有效包分析引擎122對這部分數(shù)據(jù)包進行分析過濾,將HTTP請求數(shù)據(jù)包作為有效數(shù)據(jù)包并將其內(nèi)存地址存儲到有效包緩沖區(qū)描述符環(huán)中。請求重定向模塊13從有效包緩沖區(qū)描述符環(huán)中讀取HTTP請求包然后構造該請求包的HTTP 302重定向包并發(fā)送給HTTP請求的用戶,其中302重定向數(shù)據(jù)包的locat1n字段指向緩存服務器,當用戶接收到該HTTP 302重定向數(shù)據(jù)包后,用戶的該HTTP請求被引導到緩存服務器,HTTP請求數(shù)據(jù)包以及HTTP 302重定向數(shù)據(jù)包的一個實例如圖5所示。
[0064]綜上所述,本發(fā)明提供了一種基于協(xié)議棧的有效數(shù)據(jù)包捕獲方法及其應用實現(xiàn)的請求重定向服務器,該請求重定向服務器可以將互聯(lián)網(wǎng)用戶的網(wǎng)絡資源請求引導到距離用戶較近的邊緣緩存服務器,以提高用戶資源獲取的速度,并降低運營商網(wǎng)間結算成本。該方法包括將包含有效數(shù)據(jù)包的數(shù)據(jù)流通過某種方法引導到請求重定向服務器的接收網(wǎng)口 ;請求重定向服務器的接收網(wǎng)口被設置為混雜模式以使驅(qū)動可以接收目的mac地址為非本網(wǎng)口 mac地址的數(shù)據(jù)包并將數(shù)據(jù)包遞交給網(wǎng)絡層協(xié)議棧來處理;網(wǎng)絡層協(xié)議棧解析數(shù)據(jù)頭部以獲取數(shù)據(jù)包的目的IP地址,判斷目的IP地址是否為本機IP地址,如果是本機IP地址則按照正常的協(xié)議棧流程處理該數(shù)據(jù)包,如果目的IP地址不是本機IP地址,則將該數(shù)據(jù)包交給有效包分析引擎來處理;有效包分析引擎獲取數(shù)據(jù)包的相關特征值并組成特征值組合,將得到的特征值組合與過濾規(guī)則列表中每一項過濾規(guī)則的特征值組合匹配;如果匹配成功則將該數(shù)據(jù)包的內(nèi)存地址存入規(guī)則指明的有效包緩沖區(qū)描述符環(huán)中,如果所有規(guī)則都沒有匹配成功則刪除該數(shù)據(jù)包;另外實現(xiàn)一組系統(tǒng)調(diào)用,來管理有效包分析引擎以及讀取有效數(shù)據(jù)包;該發(fā)明解決了基于抓包的有效包捕獲方法存在丟包以及影響系統(tǒng)性能的問題。
[0065]上述實施例僅例示性說明本發(fā)明的原理及其功效,而非用于限制本發(fā)明。任何熟悉此技術的人士皆可在不違背本發(fā)明的精神及范疇下,對上述實施例進行修飾或改變。因此,舉凡所屬【技術領域】中具有通常知識者在未脫離本發(fā)明所揭示的精神與技術思想下所完成的一切等效修飾或改變,仍應由本發(fā)明的權利要求所涵蓋。
【權利要求】
1.一種有效數(shù)據(jù)包捕獲方法,其特征在于,包括: 將包含有效數(shù)據(jù)包的網(wǎng)絡流量引導至請求重定向服務器的接收網(wǎng)口; 將所述接收網(wǎng)口設置為混雜模式以能接收目的MAC地址并非本網(wǎng)口 MAC地址的數(shù)據(jù)包,并遞交給網(wǎng)絡層協(xié)議棧處理; 網(wǎng)絡層協(xié)議棧解析數(shù)據(jù)頭部以獲取數(shù)據(jù)包的目的IP地址,判斷所述數(shù)據(jù)包的目的IP地址是否為本機IP地址; 若是,則將所述數(shù)據(jù)包按傳統(tǒng)協(xié)議棧流程處理; 若否,則進行有效數(shù)據(jù)包捕獲處理,包括:獲取該數(shù)據(jù)包相關特征的值,將相關特征的值代入過濾規(guī)則列表中每一項過濾規(guī)則對應的特征邏輯運算表達式來進行計算,根據(jù)所述計算結果的值判斷數(shù)據(jù)包是否匹配該過濾規(guī)則; 如果匹配成功,則將該數(shù)據(jù)包的內(nèi)存地址存入過濾規(guī)則指明的有效包緩沖區(qū)描述符環(huán)中; 如果所有過濾規(guī)則都沒有匹配成功,則刪除該數(shù)據(jù)包。
2.根據(jù)權利要求1所述的有效數(shù)據(jù)包捕獲方法,其特征在于,所述數(shù)據(jù)包的相關特征是相關于該數(shù)據(jù)包的至少一個命題,所述相關特征的值是該命題的真假值,所述特征邏輯運算表達式是數(shù)據(jù)包各相關命題的復合命題,所述特征邏輯運算表達式的計算結果是指該復合命題的真假值。
3.根據(jù)權利要求2所述的有效數(shù)據(jù)包捕獲方法,其特征在于,所述數(shù)據(jù)包的相關特征包括:屬性特征和字節(jié)特征;所述屬性特征包括:數(shù)據(jù)包的屬性信息值是否滿足與預設值存在預定的運算關系;所述字節(jié)特征包括:數(shù)據(jù)包內(nèi)容在一定偏移量下得到的預定數(shù)量字節(jié)的值是否與預定值間存在預定的關系運算關系。
4.根據(jù)權利要求3所述的有效數(shù)據(jù)包捕獲方法,其特征在于,所述屬性特征包括:數(shù)據(jù)包頭部內(nèi)各項信息的值是否與預設值間存在預定的關系運算關系;所述字節(jié)特征包括:數(shù)據(jù)包內(nèi)容在一定偏移量下得到的預定數(shù)量字節(jié)的值是否與預定值間存在預定的關系運算關系。
5.根據(jù)權利要求1所述的有效數(shù)據(jù)包捕獲方法,其特征在于,通過在相關網(wǎng)絡鏈路上進行分光或者在出口路由做端口鏡像的方式,將所述包含有效數(shù)據(jù)包的網(wǎng)絡流量引導至請求重定向服務器的接收網(wǎng)口。
6.一種請求重定向服務器,其特征在于,包括: 請求重定向服務器網(wǎng)卡的接收網(wǎng)口,用于接收被引導至所述請求重定向服務器的網(wǎng)絡數(shù)據(jù)流;所述接收網(wǎng)口設置為混雜模式,以能接收進入網(wǎng)口的所有數(shù)據(jù)包,并遞交給網(wǎng)絡層協(xié)議棧處理; 有效包捕獲模塊,包括網(wǎng)絡層協(xié)議棧和有效包分析引擎;所述網(wǎng)絡層協(xié)議棧用于解析數(shù)據(jù)包頭部以獲取數(shù)據(jù)包的目的IP地址,判斷所述數(shù)據(jù)包的目的IP地址是否為本機IP地址;若是,則將所述數(shù)據(jù)包按傳統(tǒng)協(xié)議棧流程處理;若否,則將所述數(shù)據(jù)包交給所述有效包分析引擎進行有效包捕獲處理; 所述有效包分析引擎用于對數(shù)據(jù)包進行過濾并捕獲有效數(shù)據(jù)包,包括:獲取該數(shù)據(jù)包相關特征的值,將相關特征的值代入過濾規(guī)則列表中每一項過濾規(guī)則對應的特征邏輯運算表達式來進行計算,根據(jù)所述計算結果的值判斷數(shù)據(jù)包是否匹配該過濾規(guī)則;如果匹配成功,則將該數(shù)據(jù)包的內(nèi)存地址存入過濾規(guī)則指明的有效包緩沖區(qū)描述符環(huán)中;如果所有過濾規(guī)則都沒有匹配成功,則刪除該數(shù)據(jù)包; 請求重定向模塊,用于將用戶對網(wǎng)絡資源的請求引導到緩存服務器,其讀取、分析有效數(shù)據(jù)包,并構造相應的響應包發(fā)送給用戶,以此實現(xiàn)對用戶請求的引導。
7.根據(jù)權利要求6所述的請求重定向服務器,其特征在于,所述數(shù)據(jù)包的相關特征是相關于該數(shù)據(jù)包的至少一個命題,所述相關特征的值是該命題的真假值,所述特征邏輯運算表達式是數(shù)據(jù)包各相關命題的復合命題,所述特征邏輯運算表達的計算結果值是指該復合命題的真假值。
8.根據(jù)權利要求7所述的請求重定向服務器,其特征在于,所述數(shù)據(jù)包的相關特征包括:屬性特征和字節(jié)特征;所述屬性特征包括:數(shù)據(jù)包的屬性信息值是否滿足與預設值存在預定的運算關系;所述字節(jié)特征包括:數(shù)據(jù)包內(nèi)容在一定偏移量下得到的預定數(shù)量字節(jié)的值是否與預定值間存在預定的關系運算關系。
9.根據(jù)權利要求8所述的請求重定向服務器,其特征在于,所述屬性特征包括:數(shù)據(jù)包頭部內(nèi)各項信息的值是否與預設值間存在預定的關系運算關系;所述字節(jié)特征包括:數(shù)據(jù)包內(nèi)容在一定偏移量下得到的預定數(shù)量字節(jié)的值是否與預定值間存在預定的關系運算關系O
10.根據(jù)權利要求6所述的請求重定向服務器,其特征在于,通過在相關網(wǎng)絡鏈路上進行分光或者在出口路由做端口鏡像的方式,將所述包含有效數(shù)據(jù)包的網(wǎng)絡流量引導至請求重定向服務器的接收網(wǎng)口。
【文檔編號】H04L12/823GK104243344SQ201410532211
【公開日】2014年12月24日 申請日期:2014年10月11日 優(yōu)先權日:2014年10月11日
【發(fā)明者】洪珂, 徐超 申請人:網(wǎng)宿科技股份有限公司