李 濤,呂立堯,賈慶民,張 晨,張鈺雯
(1.紫金山實驗室未來網(wǎng)絡(luò)研究中心,江蘇 南京 211111;2.中國信息通信研究院,北京 100191)
隨著互聯(lián)網(wǎng)業(yè)務(wù)的蓬勃發(fā)展,目前TCP/IP網(wǎng)絡(luò)架構(gòu)已經(jīng)越來越難以滿足人們的需求,因此以信息為中心的網(wǎng)絡(luò)通信模型,即CCN,成為備受關(guān)注的焦點[1]。在CCN中有三個數(shù)據(jù)結(jié)構(gòu),分別是待定請求表(Pending Interest Table,PIT)、內(nèi)容緩存(Content Store,CS)、路由轉(zhuǎn)發(fā)表(Forwarding Information Base,F(xiàn)IB)[2]。路由器收到興趣包后,首先查找CS表,然后查找PIT表,最后查找FIB明細(xì)路由表,如果三個表都沒有查找到就會泛洪該興趣包[3],一般在如下情況會引起三個表都查不到的泛洪:(1)隨著CS動態(tài)存儲變化,引起FIB的實時動態(tài)更新,在此過程中由于路由同步時序問題某個時段概率性三個表都查找不到而泛洪該興趣包;(2)發(fā)起PIT泛洪攻擊時,大多數(shù)情況下FIB明細(xì)路由是不存在的,此時就會按照最長路由匹配轉(zhuǎn)發(fā)PIT請求而引起泛洪[4]。CCN設(shè)備發(fā)起泛洪在網(wǎng)絡(luò)中查找可能有轉(zhuǎn)發(fā)路由的鄰接設(shè)備,從而達(dá)到盡可能將用戶請求數(shù)據(jù)轉(zhuǎn)發(fā)至源端來接收數(shù)據(jù)的目的[5]。因此,基于如上CCN網(wǎng)絡(luò)興趣包泛洪的特點,該文區(qū)分了有效泛洪和無效攻擊報文泛洪兩種類型,在現(xiàn)有的CCN基礎(chǔ)上研究并設(shè)計了一種可配置的隧道路由機制,通過該機制實現(xiàn)了有效興趣包的隧道轉(zhuǎn)發(fā)和無效興趣包的源端壓制,保證了數(shù)據(jù)的可靠、安全傳輸。
在此背景下,針對興趣包的優(yōu)化研究主要分為如下幾個方面:
(1)針對泛洪的防御攻擊研究。
泛洪數(shù)據(jù)包給泛洪攻擊提供了便利,目前針對PIT興趣包的泛洪攻擊主要分為攻擊檢測和攻擊防御,針對此也提出了很多檢測和防御的方式和方法。唐建強等人[6]提出使用AIMD算法限制帶有異常內(nèi)容名稱前綴的興趣包的轉(zhuǎn)發(fā);經(jīng)典的cooperative.Filter方案[7]要求所有網(wǎng)絡(luò)設(shè)備都參與興趣包泛洪防御的檢測工作,同時各個設(shè)備同步網(wǎng)絡(luò)告警信息,使得下游的網(wǎng)絡(luò)節(jié)點可以及時感知攻擊源,在靠近網(wǎng)絡(luò)源點的位置進(jìn)行防御;Afanasyev等人[8]提出了基于端口流量限制的攻擊防御方法;Poseidon方案[9]將興趣包滿足率和PIT使用率結(jié)合來判斷不同接口是否存在興趣包泛洪攻擊;文獻(xiàn)[10]提出了一種基于信息熵的分析檢測泛洪攻擊的算法;吳潯等[11]基于AIMD算法改進(jìn)實現(xiàn)了對泛洪攻擊的快速檢測。
(2)針對興趣包轉(zhuǎn)發(fā)路徑優(yōu)化研究。
謝人超等人[12]提出了一種興趣包轉(zhuǎn)發(fā)方法,通過設(shè)置默認(rèn)路徑轉(zhuǎn)發(fā)來解決興趣包無路由丟失問題;文獻(xiàn)[13-15]研究了SDN、SR與CCN融合架構(gòu)思想,興趣包在SDN控制下按照分段路由隧道轉(zhuǎn)發(fā)機制實現(xiàn)興趣包的高效有序轉(zhuǎn)發(fā)。以上研究中,興趣包防泛洪攻擊防御策略大多集中在對PIT占用率、過期條目、過期率、興趣包滿足率等指標(biāo)進(jìn)行分析,然后按照相應(yīng)的閾值進(jìn)行檢測和防御;甚至提出通過路由器對興趣包進(jìn)行簽名驗證來抑制興趣包攻擊[16]。這些研究對于興趣包泛洪攻擊具有一定的抑制作用,但是因為一些算法本身的問題,閾值設(shè)定的問題,使得防御攻擊失真,同時簽名認(rèn)證也會帶來用戶信息的泄漏;針對興趣包轉(zhuǎn)發(fā)路徑優(yōu)化研究中,對興趣包轉(zhuǎn)發(fā)路徑提出了默認(rèn)路徑轉(zhuǎn)發(fā)思想、SDN-SR轉(zhuǎn)發(fā)路徑思想等,對于興趣包泛洪抑制及合理化傳輸有很大的帶寬節(jié)省、資源合理有效使用的價值,但是目前相關(guān)研究存在很多問題,例如針對海量興趣包攻擊時,大量無效計算上送至SDN控制器,導(dǎo)致CPU的沖擊和帶外網(wǎng)絡(luò)資源的浪費;
在分析各種研究的基礎(chǔ)上,該文提出了一種CCN興趣包隧道方案,即在傳統(tǒng)CCN路由基礎(chǔ)上,在轉(zhuǎn)發(fā)面上增加了一棵或多棵負(fù)載匯聚樹來應(yīng)對興趣包泛洪問題,即在目的節(jié)點-CP(Center Point)-源節(jié)點間建立一條或者若干條段式CPT(Center Point Tree)隧道樹,CPT樹上存在基于CP的FIB隧道路由,該路由可選取代FIB路由作為默認(rèn)興趣包CCN轉(zhuǎn)發(fā)路由或者防攻擊的目的分析節(jié)點路由,作為默認(rèn)興趣路由時,在設(shè)備上按照默認(rèn)路由轉(zhuǎn)發(fā)至CP節(jié)點,由CP節(jié)點負(fù)責(zé)轉(zhuǎn)接源數(shù)據(jù);作為防攻擊的目的節(jié)點路由時,在明細(xì)路由查找不到,按照最長匹配路由轉(zhuǎn)發(fā)的同時,將其送到CP節(jié)點,在CP節(jié)點結(jié)合源注冊數(shù)據(jù)進(jìn)行泛洪攻擊的計算,并將計算結(jié)果通過CPT樹通知源端進(jìn)行防御?;谠摍C制,解決了興趣包泛洪帶來的帶寬消耗問題、泛洪攻擊帶來的安全問題、興趣包丟棄引起的用戶體驗問題,增強了工程實用性。該方案相較于經(jīng)典的cooperative.Filter等方案,將其防御方案只局限在CPT樹上設(shè)備進(jìn)行,不需要所有設(shè)備參與,有效地減少了網(wǎng)絡(luò)冗余負(fù)載;同時利用興趣報文的選項機制由用戶自定義的靈活的CP選舉機制,相較于SDN興趣包的路徑優(yōu)化方案,有效節(jié)省了大量的告警信息匯總和計算。最后基于該機制給出基于CPT樹作為默認(rèn)路由情況下的仿真結(jié)果和分析。
本研究引入CP節(jié)點解決興趣包泛洪問題,因為CP節(jié)點的引入,基于現(xiàn)有的CCN路由對整個路由尋址體系進(jìn)行重構(gòu)。興趣包引入CP節(jié)點作為興趣包的終節(jié)點,CP節(jié)點收到興趣路由后,生成注冊興趣PIT路由,即生成請求端到CP的一棵PIT轉(zhuǎn)發(fā)樹,待FIB路由通告完成后,F(xiàn)IB路由反向刷新CP上的注冊PIT表,觸發(fā)PIT表按照FIB進(jìn)行源路由器轉(zhuǎn)發(fā),沿途生成CP到源的PIT轉(zhuǎn)發(fā)樹;兩張PIT轉(zhuǎn)發(fā)樹以CP為中心,組成一張完整的CPT轉(zhuǎn)發(fā)樹,完成興趣包的投遞和數(shù)據(jù)的傳輸,同時基于靈活選擇的集中CP節(jié)點可以完成策略控制、PIT泛洪攻擊防御計算等功能。因此重構(gòu)CCN路由機制,在興趣報文中增加如下選項:
(1)注冊選項:分為注冊報文、去注冊報文選項;其中源注冊報文選項功能為告知添加CP源端的路由;去源注冊報文選項:告知刪除CP源端的路由。
(2)CP選項:分為CP轉(zhuǎn)發(fā)選項、CP上送選項;其中轉(zhuǎn)發(fā)選項功能為告知CP該報文由CP轉(zhuǎn)發(fā);CP上送選項功能為告知CP檢測路由的合法性。
用戶根據(jù)網(wǎng)絡(luò)設(shè)備位置、性能、容量指標(biāo),選擇并配置一個主CP、一個或者多個候選CP作為路由的選擇依據(jù),對應(yīng)的Prefix路由如下標(biāo)識:/cp-prefix/time/compute/capability,即將CP的創(chuàng)建時間、算力、容量大小納入路由中,每一個CP按照如上格式形成一條命名路由,利用OSPFN的OLSA擴散出去,因此在每一臺設(shè)備上形成命名路由的FIB表,每一臺路由器并不知道哪一個是主CP哪個是候選CP,因此每臺設(shè)備基于相同的算法計算主CP,目前計算規(guī)則為:time>compute>capability,對于計算勝出的路由,下發(fā)轉(zhuǎn)發(fā)面并且標(biāo)記為CP路由,主CP路由下轉(zhuǎn)發(fā)表,根據(jù)硬件的支持情況選擇候選CP路由是否下發(fā)以支持快切;主CP路由就作為默認(rèn)路由。同時每一臺路由器也可選定制相應(yīng)的路由策略,來區(qū)別選擇主CP。通過策略控制,可以將數(shù)據(jù)從負(fù)載過重的CPT隧道上遷移到負(fù)載較輕的CPT隧道上,保證數(shù)據(jù)的有效和及時傳輸。表1為Prefix路由表,每一臺設(shè)備收到該表后,進(jìn)行CP選舉計算,勝出者作為CP路由下發(fā)轉(zhuǎn)發(fā)面。
表1 CP路由表
基于傳統(tǒng)的路由機制,例如OSPFN,CP節(jié)點作為CCN網(wǎng)絡(luò)的保護(hù)匯聚點,需要快速感知源路由的有效性,但是FIB通告存在如下問題:
(1)在源路由組裝LSA發(fā)布之后,因為LSA的路由同步較慢,CP節(jié)點無法快速感知路由。
(2)OSPF考慮路由的聚合性,其發(fā)布的路由多為聚合路由,CP節(jié)點對于明細(xì)路由無法感知。
(3)CP節(jié)點收到惡意攻擊的路由,無法進(jìn)行有效區(qū)分,如果一直忙等FIB路由通告容易造成攻擊的泛洪。
基于如上問題,研究設(shè)計了一種機制保證源明細(xì)路由快速傳遞到CP匯聚點上,命名為源注冊路由機制。該機制在源端CCN網(wǎng)關(guān)上按照源到CP的單向路由發(fā)起源路由注冊,注冊路由為點到點單向興趣包路由,在沿途按照源節(jié)點到CP的FIB轉(zhuǎn)發(fā)即可。CP端收到注冊路由后,形成一個源注冊路由表,該路由標(biāo)識該源信息的有效性。源注冊路由表格式如圖1所示。
其中將CP Prefix作為興趣報文的頭,選項中增加了源注冊和去源注冊選項,標(biāo)識為注冊報文,在興趣報文后攜帶相應(yīng)的源數(shù)據(jù)的prefix的URL壓縮信息;整個報文作為注冊報文封裝為興趣報文格式傳輸至CP端。
源路由注冊過程如下:
(1)配置的CP會生成如圖2所示的CP為目的Prefix的FIB路由。
(2)源端數(shù)據(jù)到達(dá)第一跳路由器后,組裝興趣包,目的地址為CP的Prefix路由;內(nèi)含源端各個明細(xì)路由的TLV明細(xì)url表。
(3)沿途路由器檢查發(fā)現(xiàn)目的為CP知名目的地址,按照CP的Prefix路由轉(zhuǎn)發(fā)即可,并按照CCN默認(rèn)路由,生成PIT路由。
(4)數(shù)據(jù)到達(dá)CP節(jié)點后,CP去掉CP興趣包頭,解析生成源請求路由URL的明細(xì)FIB表;如圖2所示在CP節(jié)點生成的Re-Prefix注冊路由,其中出接口標(biāo)記為注冊口。
(5)CP節(jié)點向源節(jié)點回復(fù)內(nèi)容消息,該消息按照源注冊生成的PIT路由回復(fù),為注冊停止消息。其格式如圖3所示。
其中CP_Prefix標(biāo)識為注冊的回復(fù)消息,選項中增加了reg-stop宏,標(biāo)識為注冊停止消息。內(nèi)容選項為隨機值即可。源節(jié)點收到注冊回復(fù)消息后,標(biāo)識該源注冊興趣報文正確接收,繼續(xù)發(fā)送下一個壓縮源明細(xì)注冊路由。
采樣機制為請求端第一跳路由器采用的算法。該機制通過采樣興趣報文發(fā)送,保證對采樣周期內(nèi)興趣包進(jìn)行抑制的方法來防止無效興趣包的泛洪。
一般請求端收到CP節(jié)點傳送的首次無源注冊路由的興趣報文后啟動采樣機制,采樣報文的無源注冊路由每一次回復(fù),采樣周期相應(yīng)的指數(shù)增加。例如,請求端設(shè)備啟動采樣周期為50 ms的prefix1報文發(fā)送至CP節(jié)點,CP節(jié)點判斷該報文無明細(xì)注冊路由后,回復(fù)數(shù)據(jù)請求端路由無效信息,請求端收到后,將采樣周期設(shè)置翻倍進(jìn)行采樣,以此類推。
圖4所示為采樣機制在先無源注冊路由后有源注冊路由機制下的基本流程。
(1)CP節(jié)點收到PIT請求,檢查源注冊明細(xì)路由情況,發(fā)現(xiàn)無源注冊路由,回復(fù)采樣抑制。
(2)請求端收到采樣抑制后,啟動采樣定時器;然后請求端采樣定時器到期后,如果有PIT請求,繼續(xù)發(fā)送該請求。
(3)CP收到請求后,發(fā)現(xiàn)仍然沒有源注冊明細(xì)路由,繼續(xù)回復(fù)采樣抑制消息。
(4)接收端收到后,將采樣抑制定時器擴大2倍后,啟動采樣定時器;采樣定時器到期后,繼續(xù)發(fā)送PIT請求。
(5)CP端收到PIT請求,發(fā)現(xiàn)有源注冊路由了,回復(fù)消息。請求端收到后,刪除抑制定時器,正常轉(zhuǎn)發(fā)該PIT請求。
由于慢采樣指數(shù)增長的壓制機制,對于10次以上無源路由注冊情況下PIT請求,將達(dá)到1 000倍以上指數(shù)增長的壓制效率,實現(xiàn)無效興趣報文的第一跳壓制。
源路由機制保證了源明細(xì)路由在CP節(jié)點的匯聚。請求端路由機制則是將請求興趣路由發(fā)送至CP節(jié)點上,基于該節(jié)點完成數(shù)據(jù)的策略處理和轉(zhuǎn)發(fā)。如圖5所示,該機制的基本流程如下:
(1)請求端發(fā)起一個url1明細(xì)路由請求;R1收到該PIT請求后有三種情況按照CPT樹轉(zhuǎn)發(fā):檢查發(fā)現(xiàn)無FIB路由,則增加CP轉(zhuǎn)發(fā)選項將其轉(zhuǎn)入CPT樹中;檢查發(fā)現(xiàn)策略路由需要傳入CPT樹中完成攻擊檢查,增加CP上送選項,可選增加CP轉(zhuǎn)發(fā)選項送入CPT樹中;檢查配置的門限策略,檢測發(fā)現(xiàn)疑似攻擊報文,需要傳入CPT樹中進(jìn)行準(zhǔn)確性校驗,增加CP上送選項送入CPT樹中。
(2)R1組裝PIT報文,請求Prefix為url1,請求接口為interest接口,在圖1所示興趣報文中增加攜帶CP選項。
(3)R2收到報文,發(fā)現(xiàn)是CP選項興趣報文,按照CP默認(rèn)路由進(jìn)行轉(zhuǎn)發(fā),并生成相應(yīng)的PIT路由。
(4)R3收到后,發(fā)現(xiàn)自己為CP節(jié)點,檢查R3的注冊路由,如果沒有注冊路由,轉(zhuǎn)步驟5;如果有注冊路由,轉(zhuǎn)步驟6。
(5)開啟Dead定時器,該定時器標(biāo)識路由的有效性和合法性,用戶自定義配置Dead時間。Dead定時器到期后,無源注冊路由,或者無源前綴路由,則認(rèn)為是攻擊報文,通知請求端采樣注冊機制抑制該請求報文相應(yīng)的前綴路由,隨著采樣注冊無有效源路由應(yīng)答,則請求端采樣定時器越來越大,從而從請求端抑制無效興趣報文的泛洪。具體流程見慢采樣機制。
(6)PIT路由標(biāo)識為有效路由,等待FIB路由通告后,PIT路由則按照FIB路由生成CP到源端PIT請求路由。
CPT樹為以CP為根節(jié)點,整個網(wǎng)絡(luò)節(jié)點為葉子的一棵CCN網(wǎng)絡(luò)的隧道樹,整個數(shù)據(jù)在CPT樹中傳輸由源注冊節(jié)點完成注冊為前提,由興趣報文向CP節(jié)點發(fā)起請求開始生成,由FIB通告結(jié)束為終節(jié)點,完成興趣請求在CPT隧道中的傳輸。該機制以興趣包的PIT路由在CPT隧道傳輸?shù)耐瑫r,在CP節(jié)點完成路由的合法性校驗和防攻擊檢查。
CPT樹PIT表項如圖5所示,Prefix為請求明細(xì)路由,Req-Faces為PIT的請求接口,流程如下:
(1)請求端到CP匯聚路由的生成,請求端與CP節(jié)點按照CPT轉(zhuǎn)發(fā)樹生成請求PIT路由。圖5中以R3作為CP節(jié)點,R1作為請求端,見請求端路由機制章節(jié),R1-R2-R3生成以CP路由為請求目的的PIT路由。
(2)源端到CP的FIB路由下發(fā):源端按照OSPF相應(yīng)的LSA擴散,形成了一條源端與CP的路由表;如圖R5-R4-R3形成一張URL的最短匹配路由表。
(3)CP到源端PIT路由的下發(fā):如果CP先收到請求端的PIT路由后,等待源端FIB路由通告后完成CP到源端PIT請求樹的建立;如果CP先收到源端FIB路由通告,需要完成FIB路由對PIT路由的反刷動作;最終建立CP到源端PIT請求樹。
(4)注冊路由檢查:等待FIB刷新后,源注冊路由完成與FIB路由前綴的父子關(guān)系確定,即FIB路由的前綴路由與注冊的URL明細(xì)路由組成父子關(guān)系,例如:URL=/bupt.edu.cn/texts/docs/_v3,FIB路由Prefix:/bupt.edu.cn,雙方以/bupt.edu.cn為父親,后綴/bupt.edu.cn/texts/docs/_v3為子。父子關(guān)系確定后基于FIB聚合路由重新生成FIB出接口。
(5)源端數(shù)據(jù)傳輸:源端收到CP傳送過來的興趣包后,觸發(fā)數(shù)據(jù)源沿著CPT樹上的PIT表進(jìn)行轉(zhuǎn)發(fā),一直送至請求端,數(shù)據(jù)傳輸完成后,按照CCN協(xié)議刪除傳輸?shù)腜IT路由即可。
(6)防御策略的生成:基于完整的CPT樹機制,在CP節(jié)點上,開放相應(yīng)的OAM策略,完成用戶自定義防御策略配置的下發(fā)。對于配置防御策略的CP節(jié)點,需要所有明細(xì)源注冊路由以完成興趣包攻擊的最長路由匹配。
基于如上機制,形成一條以CP端為中心的,請求端到CP端的PIT路由,CP端到源端的PIT路由,兩段路由按照時序性依次生成,完成后將組成完整的CPT興趣路由。數(shù)據(jù)內(nèi)容數(shù)據(jù)按照CPT樹PIT路由回復(fù)即可?;谠揅PT樹完成正常興趣包的傳輸和異常報文的防御策略。
(1)仿真環(huán)境。
在本仿真中采用了CICN開源環(huán)境,基于CPT樹機制,如圖6所示,R1-R2-R3-R4為CPT樹,R3為配置的CP節(jié)點,CP節(jié)點緩存數(shù)量為2w條PIT路由。驗證了如下兩種場景:路由震蕩情況下興趣包泛洪抑制效果;無效興趣包攻擊抑制效果。
圖7、圖8模擬了在路由震蕩情況下PIT興趣包丟包率、帶寬消耗的優(yōu)化前后對比情況。圖9模擬了無效興趣包攻擊情況下通過下一跳設(shè)備的PIT表項數(shù)量來驗證慢采樣機制的有效性。
(2)丟包率比較。
如圖7所示,路由部分:構(gòu)造2w條FIB路由,外加2w條背景路由,其中現(xiàn)有FIB路由隨機選取20%路由進(jìn)行震蕩;興趣包部分:每秒發(fā)送5k個查找FIB路由的PIT請求報文;定時器部分:為了更直觀觀察丟包率,將PIT老化定時器設(shè)置為100 ms;基于如上的構(gòu)造在采用CPT樹機制前后隨著時間變化的丟包率對比仿真。顯而易見,采用CPT樹興趣包緩存機制后丟包率明顯低于未優(yōu)化前的,并達(dá)到預(yù)期效果。優(yōu)化后因為通過CP緩存,等待FIB下發(fā)后繼續(xù)轉(zhuǎn)發(fā),基本實現(xiàn)了完全不丟包;但是隨著興趣包數(shù)量越大,CP節(jié)點緩存滿了,相對的丟包率就會略有升高,因此在實際部署時,CP的選擇尤為重要。
(3)帶寬消耗比較。
圖8中,路由部分與興趣包部分的設(shè)置與圖7環(huán)境相同,定時器部分:將PIT老化定時器設(shè)置為默認(rèn)值;如拓?fù)鋱D中首跳R1存在3條泛洪鏈路出口,本仿真統(tǒng)計R1-R5鏈路帶寬。由圖可見,優(yōu)化后的帶寬消耗指標(biāo)優(yōu)于優(yōu)化前的,并且隨著興趣包數(shù)量的增加,發(fā)現(xiàn)優(yōu)化前后消耗帶寬差距變大。
(4)PIT表項對比。
圖9中,場景是每秒1w個隨機無效明細(xì)路由興趣包持續(xù)攻擊下,測試下一跳路由器R5的PIT表數(shù)量。在采用CPT慢采樣機制壓制情況下,可以看到R5的PIT數(shù)量在3秒后呈現(xiàn)指數(shù)級的壓制,隨著時間延長,攻擊表項下降明顯。
該文提出的匯聚樹的CCN興趣包隧道機制,在路由震蕩、興趣報文泛洪攻擊的場景下,通過預(yù)先建立CPT轉(zhuǎn)發(fā)樹,在進(jìn)行相應(yīng)防御的基礎(chǔ)上來保證興趣包的有效傳輸;針對CPT樹流量負(fù)載采樣情況,提出多候選CP,保證主CPT樹切換為備選CPT樹,解決流量過載問題;根據(jù)無效報文攻擊問題,提出了慢采樣機制,在無效源注冊路由情況下,可以實現(xiàn)指數(shù)級PIT壓制,極大降低無效興趣報文的攻擊;考慮了路由擴散的延遲性、動蕩性、明細(xì)路由的有效性等特點,提出了源注冊機制,保證了源路由合法性。仿真表明,在丟包率、帶寬消耗、抑制動態(tài)無效興趣報文攻擊方面,采用該機制實現(xiàn)明顯優(yōu)于未采用前,是一種可行方案。但是該方案也存在CP選舉點問題、CPT樹負(fù)載問題等,將在后續(xù)的項目中持續(xù)進(jìn)行研究和改進(jìn)。