可抵御膨脹攻擊的網(wǎng)絡(luò)物理帶寬測(cè)量方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及一種可抵御膨脹攻擊的網(wǎng)絡(luò)物理帶寬測(cè)量方法,尤其是設(shè)及一種可W 有效防止被測(cè)量端惡意膨脹其與測(cè)量端之間網(wǎng)絡(luò)物理帶寬的測(cè)量方法。
【背景技術(shù)】
[0002] 在互聯(lián)網(wǎng)(Internet)中,網(wǎng)絡(luò)路徑上數(shù)據(jù)傳輸?shù)乃俣瓤蒞用網(wǎng)絡(luò)帶寬來(lái)表示。常 用的網(wǎng)絡(luò)帶寬一般可分為物理帶寬和可用帶寬兩種。物理帶寬是指由網(wǎng)絡(luò)路徑上物理設(shè)備 所決定的網(wǎng)絡(luò)數(shù)據(jù)傳輸速度的最大值(當(dāng)網(wǎng)絡(luò)路徑上的物理設(shè)備確定后,其物理帶寬可W 認(rèn)為是一個(gè)恒定值)。與此不同,可用帶寬是考慮到不同網(wǎng)絡(luò)數(shù)據(jù)流可能在同一時(shí)刻通過(guò)某 一網(wǎng)絡(luò)路徑而導(dǎo)致的該時(shí)刻在該網(wǎng)絡(luò)路徑上物理帶寬的剩余值(顯而易見(jiàn),網(wǎng)絡(luò)路徑上的 可用帶寬是一個(gè)時(shí)變值,它隨著網(wǎng)絡(luò)狀態(tài)的變化而時(shí)刻變化著)。由于物理帶寬能比較恒定 的反應(yīng)網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)處理和傳輸能力,網(wǎng)絡(luò)服務(wù)提供商往往按照物理帶寬的大小向互聯(lián) 網(wǎng)用戶(hù)收取租金。因此,為了防止受到欺騙,互聯(lián)網(wǎng)用戶(hù)常采用非合作式帶寬測(cè)量方法來(lái)驗(yàn) 證自己接入互聯(lián)網(wǎng)服務(wù)的實(shí)際物理帶寬是否達(dá)到了網(wǎng)絡(luò)服務(wù)提供商承若的標(biāo)準(zhǔn)。除此之 夕h很多第Ξ方網(wǎng)絡(luò)監(jiān)察機(jī)構(gòu)也需要使用非合作式帶寬測(cè)量方法來(lái)監(jiān)測(cè)整個(gè)互聯(lián)網(wǎng)的物理 帶寬資源和分布狀況,從而指導(dǎo)網(wǎng)絡(luò)服務(wù)提供商優(yōu)化其服務(wù)。
[0003] 現(xiàn)有的非合作式物理帶寬測(cè)量方法一般是在多次可用帶寬測(cè)量的結(jié)果上通過(guò)濾 掉旁路數(shù)據(jù)流帶來(lái)的影響而得到物理帶寬值。具體做法是,測(cè)量端可-定的時(shí)間間隔 多次發(fā)送兩個(gè)(測(cè)量包對(duì))或兩個(gè)W上(測(cè)量包鏈)的測(cè)量數(shù)據(jù)包,被測(cè)量端在每次收到測(cè)量 數(shù)據(jù)包后其TCP/IP協(xié)議找將會(huì)自動(dòng)回送對(duì)應(yīng)的響應(yīng)包。測(cè)量端可W用測(cè)量數(shù)據(jù)包的大小除 W多次測(cè)量結(jié)果中最不受旁路數(shù)據(jù)流影響的相鄰響應(yīng)包接收時(shí)間間隔來(lái)計(jì)算網(wǎng)絡(luò)物理帶 寬的大小?,F(xiàn)階段,選擇最不受旁路數(shù)據(jù)流影響的時(shí)間間隔的方法有兩種:第一種是選擇多 次測(cè)量中最小的相鄰響應(yīng)包時(shí)間間隔,第二種是選擇每次測(cè)量中固定位置上測(cè)量包和響應(yīng) 包的最小往返時(shí)延來(lái)計(jì)算相鄰響應(yīng)包時(shí)間間隔。理論分析和大量的實(shí)驗(yàn)都表明第二種方法 比第一種方法能更快更準(zhǔn)的估計(jì)出物理帶寬。然而,運(yùn)些算法在設(shè)計(jì)時(shí)完全沒(méi)有考慮安全 的問(wèn)題。惡意的被測(cè)量端可W很容易的通過(guò)延遲響應(yīng)前一個(gè)測(cè)量包或提前響應(yīng)后一個(gè)測(cè)量 包來(lái)欺騙測(cè)量端,使其計(jì)算得到一個(gè)比真實(shí)值更大的物理帶寬測(cè)量值。
[0004] 雖然已經(jīng)有一些研究設(shè)計(jì)了可W檢測(cè)帶寬膨脹攻擊的測(cè)量方法,如機(jī)會(huì)主義帶寬 巧慢算法和帶寬測(cè)量積累概率分布函數(shù)(CDF)對(duì)稱(chēng)性分析法,他們都局限于對(duì)可用網(wǎng)絡(luò)帶 寬的測(cè)量。運(yùn)些方法即不能用來(lái)測(cè)量物理帶寬也不能檢測(cè)物理帶寬膨脹攻擊。
[000引綜上所述,當(dāng)前尚無(wú)方法可W在測(cè)量物理帶寬的同時(shí)檢測(cè)物理帶寬膨脹攻擊,從 而導(dǎo)致互聯(lián)網(wǎng)用戶(hù)和第Ξ方監(jiān)察機(jī)構(gòu)很難確定其物理帶寬的測(cè)量值是否被網(wǎng)絡(luò)服務(wù)提供 商或其它攻擊者惡意膨脹過(guò)。
【發(fā)明內(nèi)容】
[0006]本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種可抵御膨脹攻擊的網(wǎng)絡(luò)物理帶寬測(cè)量方 法,其為了使測(cè)量端能在非合作的模式下,對(duì)網(wǎng)絡(luò)物理帶寬進(jìn)行測(cè)量同時(shí)防止被測(cè)量端惡 意膨脹其帶寬。
[0007] 本發(fā)明是通過(guò)下述技術(shù)方案來(lái)解決上述技術(shù)問(wèn)題的:一種可抵御膨脹攻擊的網(wǎng)絡(luò) 物理帶寬測(cè)量方法,其特征在于,其包括W下步驟:
[0008] 步驟一,測(cè)量端預(yù)先設(shè)定測(cè)量參數(shù),并初始化記錄數(shù)組;
[0009] 步驟二,測(cè)量端調(diào)用原始套接字生成測(cè)量包鏈并將其發(fā)送給被測(cè)量端;
[0010] 步驟Ξ,測(cè)量端發(fā)送完測(cè)量包鏈后調(diào)用libPcap函數(shù)包接收被測(cè)量端發(fā)送回來(lái)的 響應(yīng)包,并根據(jù)TCP時(shí)間戳將測(cè)量包與其相應(yīng)的響應(yīng)包進(jìn)行關(guān)聯(lián);
[0011] 步驟四,測(cè)量端將根據(jù)往返時(shí)延下降法將對(duì)應(yīng)位置上更小的測(cè)量-響應(yīng)往返時(shí)延 更新到記錄數(shù)組中;
[0012] 步驟五,判斷測(cè)量的結(jié)束條件;首先,本次測(cè)量是否需要更新記錄數(shù)組,如果不需 要,則表示測(cè)量結(jié)果已經(jīng)收斂,在運(yùn)個(gè)情況下,判斷本次測(cè)量是收斂后的第幾次測(cè)量,如果 運(yùn)個(gè)次數(shù)超過(guò)N,則測(cè)量結(jié)束并執(zhí)行步驟六;如果不滿(mǎn)足前一條件,則判斷測(cè)量的總次數(shù),如 果超過(guò)Μ,則測(cè)量結(jié)束;
[001引步驟六,現(xiàn)慢端利用相鄰時(shí)延計(jì)算法,根據(jù)記錄數(shù)組中的每對(duì)相鄰的最小往返時(shí) 延計(jì)算一個(gè)物理帶寬值,運(yùn)樣總共可W得到的物理帶寬計(jì)算值的個(gè)數(shù)是記錄數(shù)組長(zhǎng)度減 -* · ,
[0014] 步驟屯,測(cè)量端計(jì)算出所有物理帶寬計(jì)算值的平均值和標(biāo)準(zhǔn)差;
[0015] 步驟八,應(yīng)用本發(fā)明提出的統(tǒng)計(jì)檢測(cè)算法,根據(jù)物理帶寬計(jì)算值的標(biāo)準(zhǔn)差是否大 于其平均值的Η。倍來(lái)判斷被測(cè)量端是否在發(fā)動(dòng)物理帶寬膨脹攻擊,如果大于則執(zhí)行步驟 九,否則執(zhí)行步驟十;
[0016] 步驟九,測(cè)量端檢測(cè)到被測(cè)量端在進(jìn)行物理帶寬膨脹攻擊;
[0017] 步驟十,測(cè)量端確認(rèn)被測(cè)量端不在進(jìn)行物理帶寬膨脹攻擊,并W所有物理帶寬計(jì) 算值的平均值作為物理帶寬的測(cè)量值輸出。
[001引優(yōu)選地,所述測(cè)量包鏈包含的測(cè)量包個(gè)數(shù)是];和£之間的一個(gè)隨機(jī)數(shù),同時(shí)每個(gè) 測(cè)量包的身份信息都是隨機(jī)數(shù),2是隨機(jī)生成測(cè)量包鏈長(zhǎng)度的最小值,L是隨機(jī)生成測(cè)量 包鏈長(zhǎng)度的最大值。
[0019] 本發(fā)明的積極進(jìn)步效果在于:本發(fā)明可W在測(cè)量網(wǎng)絡(luò)物理帶寬的同時(shí)檢測(cè)被測(cè)量 端是否發(fā)動(dòng)了帶寬膨脹攻擊。在本發(fā)明前尚無(wú)方法可W用于檢測(cè)物理帶寬膨脹攻擊。
【附圖說(shuō)明】
[0020] 圖1為本發(fā)明測(cè)量過(guò)程中不斷選取測(cè)量包-響應(yīng)包最小往返時(shí)延的例子示意圖。
[0021] 圖2為本發(fā)明五十次測(cè)量中包鏈前六對(duì)測(cè)量-響應(yīng)包往返延遲收斂到最小值的過(guò) 程圖。
[0022] 圖3(a)為本發(fā)明滯后回應(yīng)攻擊且真實(shí)帶寬為100肺PS的實(shí)驗(yàn)結(jié)果圖。
[0023] 圖3(b)為本發(fā)明滯后回應(yīng)攻擊且真實(shí)帶寬為1Mbps的實(shí)驗(yàn)結(jié)果圖。
[0024] 圖3(c)為本發(fā)明混合攻擊且真實(shí)帶寬為100肺PS的實(shí)驗(yàn)結(jié)果圖。
[0025] 圖3(d)為本發(fā)明混合攻擊且真實(shí)帶寬為1Mbps的實(shí)驗(yàn)結(jié)果圖。
[0026] 圖4為本發(fā)明可抵御膨脹攻擊的網(wǎng)絡(luò)物理帶寬測(cè)量方法的流程圖。
【具體實(shí)施方式】
[0027] 下面結(jié)合附圖給出本發(fā)明較佳實(shí)施例,W詳細(xì)說(shuō)明本發(fā)明的技術(shù)方案。
[0028] 整個(gè)測(cè)量過(guò)程在測(cè)量端完成,被測(cè)量端只是通過(guò)其TCP/IP協(xié)議找自動(dòng)回應(yīng)接受到 的測(cè)量數(shù)據(jù)包,本發(fā)明不需要在被測(cè)量端上實(shí)施任何額外的步驟?;诖耍景l(fā)明的測(cè)量方 法可W歸納為非合作式網(wǎng)絡(luò)測(cè)量。
[0029] 如圖4所示,本發(fā)明可抵御膨脹攻擊的網(wǎng)絡(luò)物理帶寬測(cè)量方法包括W下步驟:
[0030] 步驟101,測(cè)量端預(yù)先設(shè)定測(cè)量參數(shù)1;(隨機(jī)生成測(cè)量包鏈長(zhǎng)度的最小值),£ (隨 機(jī)生成測(cè)量包鏈長(zhǎng)度的最大值),N(測(cè)量結(jié)果收斂后的最大測(cè)量次數(shù)),M(最大測(cè)量次數(shù)),Τ (相鄰測(cè)量間的時(shí)間間隔)W及He(物理帶寬膨脹攻擊的檢測(cè)闊值),并初始化記錄數(shù)組。在 本發(fā)明的配套實(shí)驗(yàn)中,取1 = ];〇:, £ = 5.0::,N= 10,M= 10000,Τ = 10分鐘W及也=0.〇8。
[0031] 步驟102,測(cè)量端調(diào)用原始套接字(RAW socket)生成測(cè)量包鏈并將其發(fā)送給被測(cè) 量端。測(cè)量包鏈包含的測(cè)量包個(gè)數(shù)是主和£:之間的一個(gè)隨機(jī)數(shù),同時(shí)每個(gè)測(cè)量包的身份信 息(包括IPIDW及TCP序列號(hào)等)都是隨機(jī)數(shù)。測(cè)量端的通過(guò)調(diào)用rand函數(shù)獲得隨機(jī)數(shù)。
[0032] 步驟103,測(cè)量端發(fā)送完測(cè)量包鏈后調(diào)用libPeap函數(shù)包(libpeap函數(shù)包是Unix/ linux平臺(tái)下的網(wǎng)絡(luò)數(shù)據(jù)包捕獲函數(shù)包)接收被測(cè)量端發(fā)送回來(lái)的響應(yīng)包,并根據(jù)TCP時(shí)間 戳將測(cè)量包與其相應(yīng)的響應(yīng)包進(jìn)行關(guān)聯(lián)。接收響應(yīng)包的結(jié)束條件是,所有測(cè)量包對(duì)應(yīng)的響 應(yīng)包都被正確接收,或者等待超時(shí)。本發(fā)明建議的等待超時(shí)時(shí)間是一秒鐘。
[0033] 步驟104,測(cè)量端根據(jù)往返時(shí)延下降法將對(duì)應(yīng)位置上更小的測(cè)量-響應(yīng)往返時(shí)延更 新到記錄數(shù)組中。
[0034] 步驟105,判斷測(cè)量的結(jié)束條件;首先,本次測(cè)量是否需要更新記錄數(shù)組,如果不需 要,則表示測(cè)量結(jié)果已經(jīng)收斂,在運(yùn)個(gè)情況下,判斷本次測(cè)量是收斂后的第幾次測(cè)量,如果 運(yùn)個(gè)次數(shù)超過(guò)N,則測(cè)量結(jié)束并執(zhí)行步驟106;如果不滿(mǎn)足前一條件,則判斷測(cè)量的總次數(shù), 如果超過(guò)M,則測(cè)量結(jié)束。否則,開(kāi)始下一次測(cè)量。
[0035] 步驟106,測(cè)量端將利用相鄰時(shí)延計(jì)算法,根據(jù)記錄數(shù)組中的每對(duì)相鄰的最小往返 時(shí)延計(jì)算一個(gè)物理帶寬值,運(yùn)樣總共可W得到的物理帶寬計(jì)算值的個(gè)數(shù)是記錄數(shù)組長(zhǎng)度減 〇
[0036] 步驟107,測(cè)量端計(jì)算出所有物理帶寬計(jì)算值的平均值和標(biāo)準(zhǔn)差。
[0037] 步驟108,應(yīng)用本發(fā)明提出的統(tǒng)計(jì)檢測(cè)算法,根據(jù)物理帶寬計(jì)算值的標(biāo)準(zhǔn)差是否大 于其平均值的出倍(檢測(cè)闊值)來(lái)判斷被測(cè)量端是否在發(fā)動(dòng)物理帶寬膨脹攻擊,如果大于則 執(zhí)行步驟109,否則執(zhí)行步驟110。
[0038] 步驟109,測(cè)量端檢測(cè)到被測(cè)量端在進(jìn)行物理帶寬膨脹攻擊。
[0039] 步驟110,測(cè)量端確認(rèn)被測(cè)量端不在進(jìn)行物理帶寬膨脹攻擊,并W所有物理帶寬計(jì) 算值的平均值作為物理帶寬的測(cè)量值輸出。
[0040] 本發(fā)明在測(cè)量端生成長(zhǎng)度隨機(jī)的測(cè)量包鏈,并保證每一個(gè)測(cè)量數(shù)據(jù)包和其觸發(fā)的 被測(cè)量端響應(yīng)包可W關(guān)聯(lián);測(cè)量端根據(jù)測(cè)量數(shù)據(jù)包的發(fā)送時(shí)間和其響應(yīng)包的接收時(shí)間計(jì)算 每一測(cè)量-響應(yīng)包對(duì)的往返時(shí)間延遲;每次測(cè)量完成后,如果得到的相應(yīng)位置上新的測(cè)量- 響應(yīng)包對(duì)往返時(shí)間延遲比舊結(jié)果更小,則用新結(jié)果替換舊結(jié)果,否則保持舊結(jié)果不變;按一 定的時(shí)間間隔重復(fù)執(zhí)行上述步驟,直到包鏈所有位置上往返時(shí)間延遲的舊結(jié)果都比新結(jié)果 小則停止測(cè)量。根據(jù)包鏈中相鄰位置上往返時(shí)間延遲的差值可W計(jì)算出多個(gè)網(wǎng)絡(luò)物理帶寬 測(cè)