邢光林,李 亞,韓 敏,侯 睿
(中南民族大學 計算機科學學院,武漢430074)
命名數據網絡(Named Data Networking,NDN)以其具有優(yōu)越的信息中心網絡(Information Centric Network,ICN)特性被認為是下一代因特網體系結構的有效解決方案之一[1,2].NDN使用數據名稱進行數據信息的轉發(fā)和交換,基于此特性,目前在NDN中出現了一種基于興趣包洪泛攻擊(Interest Flooding Attack,IFA)[3]的分布式拒絕服務攻擊(Distributed Denial of Service,DDOS).實施IFA時,攻擊者向網絡中發(fā)送大量的惡意interest包,使NDN路由器中的待定興趣表(Pending Interest Table,PIT)空間一直被占用,導致路由器無法接收正常interest包,嚴重時會致使NDN網絡癱瘓.
針對攻擊者可以在正常行為和惡意行為之間隨意切換的現象,文獻[4]提出一種對路由器接口進行流量監(jiān)聽,隨時判斷IFA攻擊并對其進行流量限制的IFA緩解方法,但該方法需要掌握整個網絡結構且只適合用于與用戶直接相連的NDN邊緣路由器上;文獻[5]提出一種 interest包回溯方法,當NDN路由器PIT增長速率超過閾值時,內容提供者可以通過data包追溯該interest包源頭從而限制攻擊者,但該方法僅通過PIT增長速率判斷攻擊行為,誤判率較高;文獻[6]提出一種神經網絡RBF(Radial Basis Function)與粒子群優(yōu)化算法PSO(Particle Swarm Optimization)相結合的混合多目標方法RBF-PSO,該方法利用RBF和PSO的優(yōu)勢提高IFA的檢測準確性,但該方法開銷較大,實現較復雜;文獻[7]提出一種基于文獻[4]改進的名稱為IFBN的方法,使其不需要掌握整個網絡結構且適用于所有NDN路由器,但該方法將NDN路由器接口限制為3個;文獻[8]提出一種稱為Poseidon的IFA檢測和緩解的方法,該方法包含PL和PD,PL通過實時監(jiān)聽NDN路由器接口,分析接口interest/data包流量和PIT占用率來檢測IFA,PD在PL基礎上,基于push-back方法,通過路由器之間相互發(fā)送警告包(Warning Packet)來協作緩解IFA,但該方法存在限制正常interest包現象,造成正常用戶的請求失效.相對于前述IFA檢測和緩解方法,Poseidon具有適用性強(NDN中所有路由器)、IFA判定準確率高(同時參考interest/data包流量和PIT占用率情況),以及開銷較小(僅需監(jiān)聽接口interest/data包流量和PIT占用率)等優(yōu)勢.因此,針對Poseidon方法的不足,本文提出一種基于概率接收的Poseidon方法——PAP(Probabilistic Acceptance-based Poseidon),通過實時監(jiān)聽NDN路由器接口來判斷interest包數據名稱字段所帶有的疑似惡意前綴,并概率性限制帶有疑似惡意前綴的interest包,從而達到準確判定并有效緩解IFA的目標.
NDN中的通信方式為請求驅動,內容請求者首先發(fā)送一個interest包請求所需數據內容,內容發(fā)布者收到interest包后將對應的數據封裝在data包中,data包沿著interest包所經路徑的反向路徑返回至內容請求者.NDN路由器中存在3種數據結構:內容存儲表(Content Store,CS)、PIT和轉發(fā)信息庫(Forwarding Information Base,FIB).NDN中interest包和data包的轉發(fā)過程如下:NDN路由器收到interest包時,首先根據此interest包的名稱在CS中進行精確匹配查找,若存在匹配表項,則將其對應的數據封裝為data包并發(fā)送給內容請求者;若未查到匹配表項,則在PIT中查找該interest包名稱,若存在匹配表項,則將該接口添加到PIT的請求接口集合中,刪除該interest包;若未查到匹配表項,則在FIB中進行該interest包名稱的最長前綴匹配的查找,若存在匹配表項,將interest包從該表項所對應的接口發(fā)送出去,并且將interest包的名稱和相應接口信息添加到PIT中;若未查到匹配表項,則將該interest包丟棄.NDN路由器接收到data包時,依次查詢CS和PIT,將data包從對應表項的請求接口中發(fā)送出去,并刪除PIT中對應的條目信息.
攻擊者發(fā)送大量由特定名稱前綴與隨機產生的后綴所構成的interest包,由于該interest包所請求的數據不存在,NDN路由器無法收到對應的data包致使其PIT空間不能及時釋放,從而嚴重影響NDN路由器的正常工作.如圖1所示,內容提供者S能夠提供名稱為/a/b/c.mp4的數據內容,則路由器R1的FIB中一定存在名稱前綴/a/b/,因此基于該名稱前綴的interest包都能通過R1轉發(fā)給S.若攻擊者A1發(fā)送大量由/a/b/與隨機生成后綴所構成的惡意interest包,即/a/b/xx,由于S沒有對應的數據,因此這些惡意interest包會長期存留在R1、R2和R3的PIT中,直到其生存時間耗盡才會被PIT刪除,從而造成PIT長期處于空間占滿狀態(tài),同時會影響正常用戶的正常請求,如用戶U1、U2和U3發(fā)送的正常interest包就會由于R1、R2和R3的PIT空間不足而被丟棄.
圖1 NDN中興趣包洪泛攻擊Fig.1 Interest Flooding Attack in NDN
針對上述IFA,本文提出一種基于Poseidon的改進方法——PAP.PAP分為檢測和緩解兩個階段:在檢測階段,PAP實時監(jiān)聽NDN路由器接口,周期性記錄通過接口的interest包和data包數量及PIT空間占用情況,將其作為檢測IFA的指標,并構建interest包超時未響應表(Overtime Interest Table,OIT),將其作為緩解IFA的參考;在緩解階段,NDN路由器通過OIT來判斷遭到攻擊的名稱前綴,并通過發(fā)送警告包來相互協作,同時概率性接收包含該前綴的interest包來緩解IFA.PAP檢測和緩解方案具體說明如下,參數定義如表1所示.
表1 PAP中的符號Tab.1 Notation in PAP
當PIT中interest包對應的條目在其生存時間內沒有得到data包響應,該條目就會從PIT中刪除,根據該條目的名稱前綴和接收接口來構造OIT.如圖2所示,路由器ri的PIT條目{/android/ui/cache.txt,{1,2,3}}對應的interest包在其生存時間內未得到data包響應,則將名稱前綴/android/ui/插入ri的OIT中,若其OIT中沒有該名稱前綴,則將其計數記為1;否則,將其計數加1.當計數超過c時,判定該名稱前綴為疑似惡意前綴.
圖2 ri的超時未響應interest表OITFig.2 The overtime unresponsive interest table OIT of ri
Poseidon方法檢測到接口受到IFA后則限制該接口對interest包的接收.以下兩種正常interest包將會被丟棄: 1)名稱包含疑似惡意前綴的正常interest包.當NDN路由器判定名稱前綴為疑似惡意前綴時,說明該名稱前綴受到了IFA,而不是所有包含該名稱前綴的interest包都是惡意interest包.如圖1中,A1發(fā)送大量以/a/b/為名稱前綴的惡意interest包來請求不存在的數據,使得/a/b/被判定為疑似惡意前綴,而/a/b/c.mp4是一個包含疑似惡意前綴的正常interest包;2)名稱不包含疑似惡意前綴的正常interest包.
當PAP檢測到接口受到IFA時,根據OIT來判定疑似惡意前綴,由于存在名稱包含疑似惡意前綴的正常interest包,PAP按照公式(1)概率性接收名稱包含疑似惡意前綴的interest包,接收名稱不包含疑似惡意前綴的interest包,并同時從該接口發(fā)送警告包,通知其相鄰路由器可能正在或者已經發(fā)生IFA.警告包是名稱前綴為/PAP/ WARNING/的data包,包含其生存時間、疑似惡意前綴等信息.
f(x)=α×(1-1/ω)+(1-α)/ω.
(1)
Algorithm 1: the Processing Flow of the Package
if msg is Data Packet then
process msg as Data Packet and return
end if
if msg is Interest Packet then
usingOITito create Warning Packet and sent it to adjacent router
end if
if the name prefix of msg inOITiand its counter is bigger thancthen
drop msg according to equation (1)
end if
else
process msg as Interest Packet
end if
end if
if msg is Warning Packet then
else
drop msg
end if
end if
本文以二叉樹作為NDN網絡拓撲結構,如圖3所示.不失一般性,本文隨機設定正常用戶數量為12,攻擊者數量為4,NDN路由器數量為15,內容提供者數量為1.仿真實驗參數如表2所示,仿真時間為50s.仿真開始時,正常用戶發(fā)送interest包,10 s后,攻擊者開始發(fā)送大量惡意interest包.
圖3 網絡拓撲結構圖Fig.3 Network topology
表2 仿真實驗參數Tab.2 Simulation parameters
實驗中,正常用戶以Zipf分布[9]的方式請求存在的數據,攻擊者請求不存在的數據且每次請求的數據都是不同的.本文利用用戶收到的data包數量和路由器PIT空間占用率兩方面來驗證PAP的性能.在攻擊速率不同的情況下,和NM(No Measure)、PL、PD以及IFBN方法進行比較.
攻擊者發(fā)送interest包速率為1000個/s時的情形如圖4.圖4(a)給出了正常用戶接收到的data包的數量的對比.剛開始時,所有用戶接收到的data包的數量為1200(100%).第10 s攻擊開始后,用戶接收到的data包的數量急劇下降.其中NM下降了近60%,其次是PL和PD,PD由于路由器之間采用了相互協作的方法,下降的比PL小一點.由于IFBN限制路由器只有3個接口,通過路由器兩個接口流量和PIT占用率判斷攻擊來限制惡意行為,下降的比PD要小.最后是PAP,用戶能夠保證接收到80%以上的data包.這是由于PAP不僅能夠通過警告包將疑似惡意前綴等信息傳遞給相鄰路由器,實現信息共享,還能夠通過概率模型限制惡意interest包,從而提高接受正常interest包的數量.圖4(b)是路由器R1的PIT占用率的對比,從第10 s開始攻擊,NM中PIT的占用率立刻達到了100%,PL、PD以及IFBN檢測存在IFA時,直接丟棄接收的interest包,一定程度上降低了PIT的占用率,而PAP犧牲了一定的PIT空間來概率性接收包含疑似惡意前綴的interest包,使得PIT占用率比PL、PD、IFBN高.
攻擊者發(fā)送interest包速率為2000個/s時的情形如圖5.圖5(a) 給出了正常用戶接收到的data包的數量的對比,可以發(fā)現和攻擊速率為1000個/s相比,所有的方法接收到的data包數量都有所降低,但PAP還能接收到60%以上的data包,較大程度地緩解了IFA帶來的影響.圖5(b) 是路由器R1的PIT占用率的對比,可以發(fā)現當攻擊速率變大時,PAP方法下R1路由器的PIT占用率變化不大,表明PAP在不同的攻擊速率下也能較好地緩解IFA.
(a)正常用戶接收data包數量 (b)路由器R1的PIT占用率圖4 攻擊者發(fā)送interest包速率為1000個/s時的網絡性能圖Fig.4 Network performance diagram of an attacker sending interest packets at a rate of 1000 packets per second
(a)正常用戶接收data包數量 (b)路由器R1的PIT占用率圖5 攻擊者發(fā)送interest包速率為2000個/s時的網絡性能圖Fig.5 Network performance diagram of an attacker sending interest packets at a rate of 2000 packets per second
本文提出了一種基于Poseidon的改進方法——PAP,該方法根據路由器的PIT空間使用情況和接口流量來檢測IFA,通過路由器之間的協作逐步限制接口惡意流量,盡可能實現接近攻擊源頭、限制惡意interest包的目的.其中,在檢測IFA時,通過OIT判斷疑似惡意前綴;在緩解IFA時,概率性限制名稱包含疑似惡意前綴的interest包,從而盡量降低對正常用戶獲取數據的影響.通過二叉樹網絡拓撲進行仿真研究,驗證了本方法的可行性及優(yōu)越性.