楊智威,林梓钘,李 睿
(東莞理工學(xué)院 網(wǎng)絡(luò)空間安全學(xué)院,廣東 東莞 523808)
分布式拒絕服務(wù)(Distribution Denial of Service,DDoS)攻擊是當(dāng)今互聯(lián)網(wǎng)主要的威脅之一[1],其主要通過控制大量僵尸主機(jī)向目標(biāo)節(jié)點發(fā)送大量數(shù)據(jù)包,消耗目標(biāo)節(jié)點的資源,以影響合法用戶的正常使用。例如,在2016年Mirai惡意軟件利用了受損的IoT設(shè)備向DNS提供商Dyn發(fā)起的DDoS攻擊,造成了美國大規(guī)模網(wǎng)絡(luò)癱瘓[2]。而鏈路洪泛攻擊(Link-Flooding Attack,LFA)[3]作為新型的DDoS攻擊,不同于以服務(wù)器為目標(biāo)的傳統(tǒng)DDoS攻擊,LFA通過控制大量僵尸主機(jī)向網(wǎng)絡(luò)中的關(guān)鍵路由器和關(guān)鍵鏈路注入大量低速率流量,目的在于切斷盡可能多的網(wǎng)絡(luò)連接,破壞合法用戶與服務(wù)器之間的正常通信。由于LFA發(fā)送的是具有真實IP地址的低速率流量,這種流量與合法流量的特征基本一致,因此諸如檢測虛假IP地址和特定簽名[4]之類的傳統(tǒng)對策是不起作用的,與傳統(tǒng)DDoS攻擊相比,LFA具有更強(qiáng)的隱蔽性。
根據(jù)網(wǎng)絡(luò)拓?fù)涞奶匦?節(jié)點之間的連接并不是均勻分布的。無論規(guī)模如何,一個片區(qū)中大多數(shù)節(jié)點的流量會匯聚到少部分關(guān)鍵節(jié)點和鏈路上,通過關(guān)鍵節(jié)點和鏈路與其他片區(qū)的節(jié)點進(jìn)行通信[5]。也就是說,在真實的網(wǎng)絡(luò)拓?fù)渲?大多數(shù)節(jié)點和鏈路的重要性較低,而少數(shù)節(jié)點和鏈路具備較高的重要性,從對抗性的角度來看,節(jié)點和鏈路的重要性越大,其越可能成為導(dǎo)致網(wǎng)絡(luò)癱瘓的網(wǎng)絡(luò)瓶頸。攻擊者只需要在攻擊前利用網(wǎng)絡(luò)空間資源測繪技術(shù)探測目標(biāo)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),把關(guān)鍵節(jié)點或鏈路作為LFA的攻擊目標(biāo),在破壞少數(shù)關(guān)鍵資源的情況下就可以對整個網(wǎng)絡(luò)的連通性造成嚴(yán)重影響。隱藏拓?fù)涞木W(wǎng)絡(luò)瓶頸是目前主流的防御機(jī)制之一,但是現(xiàn)有的拓?fù)淦垓_系統(tǒng)普遍存在一些局限性。首先,計算網(wǎng)絡(luò)瓶頸的度量標(biāo)準(zhǔn)較為單一,他們多數(shù)只考慮了靜態(tài)部分的度量指標(biāo)(如路由路徑數(shù)量),但是在網(wǎng)絡(luò)正常運行過程中的動態(tài)度量(如鏈路使用率)同樣會導(dǎo)致網(wǎng)絡(luò)瓶頸的出現(xiàn)。其次,現(xiàn)有的拓?fù)淦垓_系統(tǒng)多數(shù)只考慮了應(yīng)對攻擊者發(fā)起的拓?fù)錅y繪行為,但是當(dāng)攻擊者發(fā)起不依賴測繪結(jié)果的盲攻擊時,他們的防御行為就變得毫無意義。因此,目前應(yīng)對攻擊者發(fā)起的LFA主要面臨以下挑戰(zhàn):(1)如何豐富網(wǎng)絡(luò)瓶頸的度量指標(biāo),準(zhǔn)確定位瓶頸節(jié)點和鏈路;(2)如何利用拓?fù)浠煜夹g(shù)以較低的成本有效地隱藏網(wǎng)絡(luò)瓶頸;(3)如何應(yīng)對攻擊者發(fā)起的盲攻擊。
為解決以上問題,該文基于軟件定義網(wǎng)絡(luò)(Software Defined Network,SDN)[6]提出了PrNet。貢獻(xiàn)如下:(1)該系統(tǒng)綜合考慮了網(wǎng)絡(luò)拓?fù)涞牟煌卣?從靜態(tài)和動態(tài)的角度定義網(wǎng)絡(luò)瓶頸度量指標(biāo);(2)該系統(tǒng)會生成針對測繪流量的混淆拓?fù)?通過識別測繪流量并將其引向繞開網(wǎng)絡(luò)瓶頸的混淆路徑,使攻擊者得到錯誤的信息;(3)提出一個概率路徑轉(zhuǎn)發(fā)算法,該算法會為節(jié)點之間的所有可達(dá)路徑分配概率,根據(jù)概率選擇數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑,通過主動使網(wǎng)絡(luò)流量分散,降低對度量指標(biāo)值較高的節(jié)點和鏈路的使用,減少網(wǎng)絡(luò)瓶頸的產(chǎn)生;(4)在流行的SDN控制器Ryu上部署PrNet,并在現(xiàn)實網(wǎng)絡(luò)拓?fù)渖线M(jìn)行了模擬和仿真,證明了PrNet在應(yīng)對攻擊者發(fā)起鏈路洪泛攻擊時具有可行性,并且能夠有效緩解攻擊者發(fā)起的盲攻擊。
現(xiàn)有的LFA防御方法主要分為兩種:被動防御和主動防御。被動防御的重點在于捕捉LFA,針對出現(xiàn)擁塞的鏈路執(zhí)行各種反應(yīng)式的操作。在Wang等提出的LFADefender[7]和Kang等提出的SPIFFY[8]中,通過在系統(tǒng)中部署專門檢測鏈路擁塞的模塊來檢測網(wǎng)絡(luò)中是否出現(xiàn)LFA。針對出現(xiàn)擁塞的鏈路,對其中的流量執(zhí)行重路由操作以將流量分散至其他鏈路,在邏輯上臨時增加鏈路帶寬來緩解LFA造成的鏈路堵塞。Aydeger等[9]提出了一個基于SDN的模型,該模型通過收集統(tǒng)計測繪流量來推測可疑的目標(biāo)鏈路,當(dāng)統(tǒng)計的數(shù)量超過閾值時,則會啟動重路由功能使流量流向替代鏈路。但是,被動防御主要用于發(fā)生LFA后,其本身并不會阻止攻擊者獲取目標(biāo)網(wǎng)絡(luò)的信息以發(fā)現(xiàn)網(wǎng)絡(luò)瓶頸。
與被動防御方法相比,LFA的主動防御利用拓?fù)浠煜夹g(shù)在攻擊者的偵察階段進(jìn)行干預(yù),使其形成與真實拓?fù)湎嗨菩暂^低的攻擊視圖,從而誤導(dǎo)其攻擊非瓶頸目標(biāo),增加攻擊成本。Trassare等[10]首先通過添加虛擬鏈路使關(guān)鍵節(jié)點的瓶頸度量最小化的方式形成虛擬拓?fù)?然后在網(wǎng)絡(luò)中部署智能路由器來識別并攔截測繪流量,由智能路由器對測繪流量根據(jù)虛擬拓?fù)渖煞祷氐臄?shù)據(jù)包。Liu等提出的TopoObfu[11]首先將部分路由器替換為SDN交換機(jī),通過修改IP數(shù)據(jù)包的TTL字段來實現(xiàn)在拓?fù)渲刑砑犹摂M鏈路,使攻擊者獲得虛假的拓?fù)錅y繪結(jié)果。Kim等提出的SDHoneyNet[12]首先在瓶頸節(jié)點的附近節(jié)點上部署符合冪律分布的誘餌網(wǎng)絡(luò),當(dāng)真實網(wǎng)絡(luò)中出現(xiàn)TTL值為1的traceroute測繪流量時,將其引入到誘餌網(wǎng)絡(luò)中。這三種方法有一個共性在于少數(shù)的部署節(jié)點需要處理大量的測繪流量,則這些少數(shù)的部署節(jié)點就成為了瓶頸本身。Liu等提出了一個輕量級、低消耗的防御系統(tǒng)NetObfu[13],其首先針對網(wǎng)絡(luò)中的瓶頸鏈路均生成對應(yīng)的虛擬鏈路,以降低瓶頸鏈路的流密度,然后將盡可能多的流量引向安全性較高的鏈路,誘導(dǎo)攻擊者向其發(fā)起進(jìn)攻。Ding等提出的Linkbait[14]首先根據(jù)各鏈路的流量密度來推測潛在的目標(biāo)鏈路,然后將攻擊者發(fā)送的測繪流量重路由至目標(biāo)鏈路附近的誘餌鏈路,以增加誘餌鏈路的流量密度,達(dá)到誤導(dǎo)攻擊者的效果。這些機(jī)制在應(yīng)對攻擊者發(fā)起的拓?fù)錅y繪行為上均能夠達(dá)到一定的混淆效果,但是當(dāng)攻擊者發(fā)起不依賴測繪結(jié)果的盲攻擊時,針對于測繪階段的拓?fù)浠煜齽t無法發(fā)揮作用了。由Kim等提出的BottleNet[15]在緩解盲攻擊問題上提供了一個思路,在瓶頸鏈路附近部署虛擬拓?fù)?當(dāng)瓶頸鏈路出現(xiàn)擁塞的時候,將一部分流量重路由至虛擬拓?fù)?讓其經(jīng)過足夠多的虛擬節(jié)點后再轉(zhuǎn)發(fā)至目標(biāo)節(jié)點。但是該方法在防御過程中欠缺主動性,而且需要額外部署虛擬節(jié)點,當(dāng)瓶頸鏈路發(fā)生改變后,需要花費較大的部署成本。
假設(shè)攻擊者控制著一組可以在網(wǎng)絡(luò)中注入流量的主機(jī)bots,拓?fù)渲械墓?jié)點和鏈路均可成為網(wǎng)絡(luò)瓶頸,每個節(jié)點和鏈路的瓶頸值由聚合流量、路由路徑和鏈路使用率等多種因素定義。要發(fā)起LFA,攻擊者需要執(zhí)行三個步驟:(1)攻擊者控制bots多次使用測繪工具探測節(jié)點之間的路徑,并形成攻擊視圖;(2)將流量匯聚的節(jié)點和鏈路確定為網(wǎng)絡(luò)瓶頸;(3)攻擊者控制bots向選定的節(jié)點發(fā)送大量合法的、低速率的流量來淹沒網(wǎng)絡(luò)瓶頸。如此一來,這些擁塞的網(wǎng)絡(luò)瓶頸會嚴(yán)重影響整個網(wǎng)絡(luò)的連通性。
traceroute[16]和iperf[17]是攻擊者常用的拓?fù)錅y繪工具。traceroute具有定位主機(jī)之間所有路由器的功能,其通過向目標(biāo)發(fā)送TTL值從零遞增的數(shù)據(jù)包,并收集沿途節(jié)點返回的“超時”信息來刻畫數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑。攻擊者通過在不同的bot上執(zhí)行traceroute并分析其結(jié)果,可以確定目標(biāo)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)[18]。iperf可用于測量端到端之間的帶寬,這意味著攻擊者可以大致發(fā)現(xiàn)帶寬使用率大的鏈路。這兩個工具是合法用戶常用的主機(jī)在線狀態(tài)和網(wǎng)絡(luò)故障的檢測工具,因此攻擊者可將其測繪行為偽裝成合法用戶發(fā)起的故障檢測行為,以繞過防御者的檢測機(jī)制。此外,該文還假設(shè)攻擊者會發(fā)起不依賴拓?fù)錅y繪結(jié)果的盲攻擊,通過向隨機(jī)目標(biāo)發(fā)送大量低速流量,以消耗沿途鏈路的剩余帶寬,進(jìn)而使得網(wǎng)絡(luò)出現(xiàn)擁塞甚至癱瘓的情況。
PrNet的整體架構(gòu)分為路徑權(quán)重計算、混淆拓?fù)渖伤惴?、測繪流量識別和概率路徑轉(zhuǎn)發(fā)算法4個模塊,如圖1所示。
圖1 PrNet系統(tǒng)架構(gòu)
其中,路徑權(quán)重計算和混淆拓?fù)渖伤惴ㄖ饕饔檬欠治鼍W(wǎng)絡(luò)拓?fù)洹B窂綑?quán)重計算模塊定期收集拓?fù)湫畔?包括連接結(jié)構(gòu)和流量統(tǒng)計信息,基于各節(jié)點和鏈路的瓶頸指標(biāo)與配置文件信息,計算得出當(dāng)前各節(jié)點之間可達(dá)路徑的瓶頸權(quán)重,混淆拓?fù)渖伤惴ǜ鶕?jù)計算結(jié)果生成用于欺騙攻擊者的混淆拓?fù)?。測繪流量識別和概率拓?fù)滢D(zhuǎn)發(fā)算法主要作用是拓?fù)溥\行過程中為數(shù)據(jù)包選擇轉(zhuǎn)發(fā)路徑。測繪流量識別模塊會識別網(wǎng)絡(luò)中具有追蹤功能的數(shù)據(jù)包,并為其分配對應(yīng)的混淆路徑。對于非測繪流量,由概率路徑轉(zhuǎn)發(fā)算法根據(jù)節(jié)點之間可達(dá)路徑的瓶頸權(quán)重分別形成概率值,并按概率為非測繪流量選擇轉(zhuǎn)發(fā)路徑。
2.2.1 路徑權(quán)重計算
PrNet綜合考慮了網(wǎng)絡(luò)拓?fù)涞牟煌卣?從靜態(tài)和動態(tài)的角度定義節(jié)點和鏈路的瓶頸度量指標(biāo)。靜態(tài)度量指標(biāo)的定義主要從網(wǎng)絡(luò)拓?fù)涞幕窘Y(jié)構(gòu)入手,不同的特征可以從不同的角度決定節(jié)點的重要性,參考BottleNet[15]中提出的3個靜態(tài)指標(biāo)來識別網(wǎng)絡(luò)瓶頸,具體定義如下:
介數(shù)中心性(Betweenness Centrality,BC)表示在兩個節(jié)點的可達(dá)路徑中,經(jīng)過某個節(jié)點的路徑數(shù)量。節(jié)點的介數(shù)中心性越大,意味著它是越多路徑的中間節(jié)點,該節(jié)點的故障將會造成許多路徑的連接中斷。對于任意節(jié)點u的介數(shù)中心性,其定義為:
(1)
其中,pathst表示節(jié)點s和t之間的可達(dá)路徑的數(shù)量,而pathst(u)表示這些路徑中經(jīng)過節(jié)點u的數(shù)量。
緊密中心性(Closeness Centrality,CC)可以用來表示一個節(jié)點到所有其他可達(dá)節(jié)點的平均距離,節(jié)點的緊密中心性越大,其所在拓?fù)渲械奈恢迷娇拷行摹τ谌我夤?jié)點u的緊密中心性,其定義為:
(2)
其中,d(u,v)表示節(jié)點u和v之間的最短距離。
度中心性(Degree Centrality,DC)可以用來表示一個節(jié)點與其他節(jié)點的相關(guān)性程度。若一個節(jié)點具有較高的度,則意味著該節(jié)點與鄰居節(jié)點存在著較多連接,那么該節(jié)點的故障將會對網(wǎng)絡(luò)連通性造成很大的影響。對于任意節(jié)點u的度中心性,其定義為:
(3)
其中,deg(u)表示節(jié)點u的度。此外,根據(jù)網(wǎng)絡(luò)拓?fù)溥\行過程中節(jié)點和鏈路的流量變化情況定義動態(tài)度量指標(biāo),通過OpenFlow協(xié)議[19]收集以下2個動態(tài)指標(biāo)來識別網(wǎng)絡(luò)瓶頸,具體定義如下:
聚合流量比例(Aggregate Traffic Ratio,ATR)用于表示一個節(jié)點在一定時間內(nèi)接收到的字節(jié)總數(shù)的比例,能夠反映出拓?fù)渲懈鞴?jié)點的使用率。使用REST API[20]來實現(xiàn)與底層OpenFlow交換機(jī)的通信,定期獲取各個節(jié)點的聚合統(tǒng)計信息,對于任意節(jié)點u的聚合流量比例,其計算公式為:
(4)
(5)
其中,fu(t)表示節(jié)點u在t時間戳接收的字節(jié)總數(shù),F(u)表示節(jié)點u在t2-t1時間間隔接收字節(jié)總數(shù)的變化率。
鏈路使用率(Consumed Link Ratio,CLR)表示一條鏈路的使用帶寬占鏈路總帶寬的比例,能夠反映出該鏈路的使用情況。運用OpenFlow協(xié)議的Port_Statistics消息收集SDN交換機(jī)中所有端口的流量統(tǒng)計信息,對于任意鏈路e(u,v)的使用率,其計算公式為:
(6)
其中,TXu,v(t)表示在t時間內(nèi)e(u,v)傳輸?shù)淖止?jié)數(shù)量,bw(u,v)表示e(u,v)的總帶寬。
PrNet會在部署階段使用深度優(yōu)先算法計算兩兩節(jié)點之間所有的可達(dá)路徑Pathu,v,然后在網(wǎng)絡(luò)拓?fù)涔ぷ鬟^程中定期收集各個節(jié)點和鏈路的度量指標(biāo)信息來計算每一條可達(dá)路徑的瓶頸權(quán)重。不同指標(biāo)對路徑權(quán)重計算的影響程度由影響因子M=(mBC,mCC,mDC,mATR,mCLR)T決定。例如當(dāng)M取值為[1,1,1,0,0]時,表示該路徑的權(quán)重只由靜態(tài)指標(biāo)BC、CC和DC決定。對于每個節(jié)點的度量指標(biāo)信息使用矩陣D來表示:
(7)
其中,r表示節(jié)點度量指標(biāo)的類型,n表示節(jié)點的數(shù)量,dij表示第i個節(jié)點的第j類指標(biāo)的度量值。
對于每條鏈路的使用率,使用矩陣C來表示:
C=(c1…ce…cn)T
(8)
其中,n表示鏈路的數(shù)量,ce表示鏈路e的使用率。
因此,對于每條可達(dá)路徑path的瓶頸權(quán)重path_w可表示為:
(9)
其中,mj表示第j類指標(biāo)的影響因子。
2.2.2 混淆拓?fù)渖伤惴?/p>
拓?fù)浠煜构粽咝纬膳c實際流量拓?fù)洳灰恢碌囊晥D,從而達(dá)到隱藏網(wǎng)絡(luò)瓶頸的目的。該實際流量拓?fù)湟鉃楫?dāng)前時間數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑形成的拓?fù)湟晥D,攻擊者只有掌握流量的走向和分布,才能實施有效的攻擊,因此隱藏數(shù)據(jù)包的實際轉(zhuǎn)發(fā)路徑是拓?fù)浠煜年P(guān)鍵所在。攻擊者可能會在不同的時間段發(fā)起多次測繪行為,測繪結(jié)果的不一致會引起攻擊者的懷疑,進(jìn)而發(fā)起盲攻擊,因此PrNet根據(jù)靜態(tài)度量指標(biāo)來生成混淆拓?fù)?并且混淆拓?fù)渚烧鎸嵉木W(wǎng)絡(luò)節(jié)點和鏈路形成,避免額外的部署開銷。針對攻擊者的測繪流量,PrNet會分配一條包含最少瓶頸節(jié)點的最遠(yuǎn)的轉(zhuǎn)發(fā)路徑,因此測繪流量會經(jīng)過更多的非瓶頸節(jié)點,使得非瓶頸節(jié)點在攻擊者的攻擊視圖中呈現(xiàn)更高的瓶頸度量。用Bu表示每個節(jié)點的瓶頸權(quán)重,Ib表示一條可達(dá)路徑中包含的瓶頸節(jié)點,Wb表示一條可達(dá)路徑中瓶頸節(jié)點的權(quán)重和。
(10)
混淆拓?fù)渖伤惴∣bfu-Topology的工作流程如算法1所示,輸入為網(wǎng)絡(luò)拓?fù)銰、節(jié)點度量指標(biāo)D、瓶頸節(jié)點個數(shù)K、影響因子M=[1,1,1,0,0],輸出為混淆拓?fù)銰'?;煜?fù)渖伤惴ㄊ紫热u中最大的K個節(jié)點形成瓶頸節(jié)點集合Vb,優(yōu)先選擇不包含瓶頸節(jié)點的路徑作為混淆路徑,若一對節(jié)點中所有的可達(dá)路徑都需要經(jīng)過瓶頸節(jié)點,則選擇Wb最小的路徑作為混淆路徑。并且PrNet會對瓶頸節(jié)點的選擇進(jìn)行負(fù)載均衡處理,適當(dāng)調(diào)整被選中的瓶頸節(jié)點的權(quán)重值Bu。
圖2為網(wǎng)絡(luò)拓?fù)銭unetworks,假設(shè)K取值為網(wǎng)絡(luò)拓?fù)涔?jié)點總數(shù)的15%,根據(jù)計算可得出(S5,S7)為瓶頸節(jié)點。當(dāng)S4中的主機(jī)向S3發(fā)起traceroute測繪時,會分配不經(jīng)過瓶頸節(jié)點的路徑path=(S4,S1,S2,S3)作為混淆路徑;對于S4到S11的混淆路徑,會分配為經(jīng)過最少的瓶頸節(jié)點且最遠(yuǎn)的路徑,即path=(S4,S5,S8,S9,S10,S11);而對于S4到S12的混淆路徑,系統(tǒng)會進(jìn)行負(fù)載均衡處理,將其分配為path=(S4,S1,S2,S3,S7,S12)。
圖2 拓?fù)銭unetworks
Algorithm 1:Obfu-Topology
Input: Physical topologyG; Node MetricsD; Number of bottleneck nodesK; Impact FactorM=[1,1,1,0,0]
Output:Obfuscated TopologyG'
1.Bu←D*M
2.Vb← TheKlargest value inBu
3.foru,v∈G
4.for path in Pathu,v
5.Ib← path∩Vb
6.ifIb=?
7.Ou,v←path
8.else
10.Ou,v←The path with the smallestWb
11.Bu(Ib)←Bu(Ib)+1
12.end if
13.end for
14.G'← The largest path_w inOu,v
15.end for
16.returnG'
2.2.3 測繪流量識別
測繪流量識別模塊主要用于識別網(wǎng)絡(luò)中的測繪數(shù)據(jù)包,當(dāng)新的數(shù)據(jù)包進(jìn)入OpenFlow交換機(jī)時,因為缺少針對該數(shù)據(jù)包的轉(zhuǎn)發(fā)流表,所以交換機(jī)會觸發(fā)table_miss向SDN控制器請求下發(fā)相應(yīng)的流表,此時測繪流量識別模塊會對該數(shù)據(jù)包的內(nèi)容進(jìn)行特征分析,若為測繪流量,則分配混淆路徑。攻擊者能夠使用traceroute工具進(jìn)行拓?fù)浒l(fā)現(xiàn),其通過向目標(biāo)主機(jī)發(fā)送目的端口為33 434-33 534并且TTL=1的UDP數(shù)據(jù)包,再根據(jù)沿途路由器返回的“超時”信息刻畫數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑。一個簡單的解決方案是部署蜜罐檢測所有TTL=1的UDP數(shù)據(jù)包,但是如果攻擊者精心設(shè)計數(shù)據(jù)包使其在蜜罐節(jié)點上的TTL值大于1,或者使用其他類型的數(shù)據(jù)包,則可繞過蜜罐的檢測。為了使檢測規(guī)則更加完善,PrNet讓所有OpenFlow交換機(jī)都成為檢測節(jié)點,捕捉網(wǎng)絡(luò)中目的端口大于33 434并且TTL值小于6的所有類型的數(shù)據(jù)包,再由SDN控制器為相應(yīng)的節(jié)點下發(fā)高優(yōu)先級的特定流表用于轉(zhuǎn)發(fā)該測繪數(shù)據(jù)包。
2.2.4 概率路徑轉(zhuǎn)發(fā)算法
經(jīng)過測繪流量識別模塊的過濾后,需要為合法的流量分配轉(zhuǎn)發(fā)路徑,該部分工作由概率路徑轉(zhuǎn)發(fā)算法完成。在傳統(tǒng)的網(wǎng)絡(luò)架構(gòu)中,路由轉(zhuǎn)發(fā)路徑是固定的,當(dāng)網(wǎng)絡(luò)中出現(xiàn)鏈路擁塞或者攻擊者的惡意盲攻擊時,路由器沒法靈活調(diào)整流量的走向,從而影響了數(shù)據(jù)的傳輸效率。為了提高網(wǎng)絡(luò)的靈活性和可用性,PrNet會在源節(jié)點和目標(biāo)節(jié)點之間選擇L條最優(yōu)的可達(dá)路徑作為備選路徑As,d,定期變更數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑,使網(wǎng)絡(luò)中的流量盡可能實現(xiàn)負(fù)載均衡,減少網(wǎng)絡(luò)瓶頸的產(chǎn)生。
可達(dá)路徑的瓶頸權(quán)重path_w越大,則代表經(jīng)過的節(jié)點和鏈路越多,或者經(jīng)過的節(jié)點和鏈路正處于高負(fù)荷狀態(tài),選擇path_w較大的路徑將使得數(shù)據(jù)包的轉(zhuǎn)發(fā)延遲增大。考慮到轉(zhuǎn)發(fā)效率的問題,概率路徑轉(zhuǎn)發(fā)算法需要先對數(shù)據(jù)包的源地址s和目的地址d之間所有的可達(dá)路徑Paths, d根據(jù)用戶自定義的備選路徑數(shù)量L進(jìn)行篩選,排除掉path_w較大的路徑,再對剩下的路徑進(jìn)行概率值分配。備選路徑的概率值Probpath計算公式為:
(11)
最后從備選路徑中選擇一條路徑作為數(shù)據(jù)包在T時間的轉(zhuǎn)發(fā)路徑,確保轉(zhuǎn)發(fā)路徑的分配會根據(jù)網(wǎng)絡(luò)拓?fù)淞髁康膶嶋H情況進(jìn)行調(diào)整。概率路徑轉(zhuǎn)發(fā)算法Prob-Path的工作流程如算法2所示,輸入為數(shù)據(jù)包的源地址s、目的地址d和備選路徑的數(shù)量L,輸出為數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑pathforward。
例如,在網(wǎng)絡(luò)拓?fù)銭unetworks中,與S7直連的H7向與S8直連的H8發(fā)送UDP數(shù)據(jù)包,節(jié)點S7到S8一共有4條可達(dá)路徑,分別是path=(S7,S6,S5,S8)、path=(S7,S12,S11,S13,S8)、path=(S7,S12,S11,S10,S9,S8)、path=(S7,S3,S2,S1,S4,S5,S8), 其path_w分別為1.3、1.6、3.2、4.5,假設(shè)此時備選路徑數(shù)量為3,則path=(S7,S3,S2,S1,S4,S5,S8)在該時間段會被剔除,而剩下的3條路徑作為備選路徑,其被選中的概率分別為0.45、0.37、0.18,根據(jù)概率值組成三個區(qū)間(1,45)(45,82)(82,100),假設(shè)由隨機(jī)算法產(chǎn)生的隨機(jī)值為56,位于第二個區(qū)間,則將path=(S7,S12,S11,S13,S8)分配為數(shù)據(jù)包(H7,H8,UDP)的轉(zhuǎn)發(fā)路徑。SDN控制器會向路徑沿途的交換機(jī)S7、S12、S11、S13和S8下發(fā)相應(yīng)的流表,在T時間內(nèi)該類型的數(shù)據(jù)包可在網(wǎng)絡(luò)拓?fù)渲兄苯愚D(zhuǎn)發(fā)而無需經(jīng)過控制器,在T時間后,先前分配的流表超時,控制器需要重新計算出新的轉(zhuǎn)發(fā)路徑,并將流表下發(fā)至對應(yīng)的交換機(jī)中。PrNet以數(shù)據(jù)包的源地址、目的地址和協(xié)議區(qū)分不同的數(shù)據(jù)包,若H7向H8同時發(fā)送UDP和TCP數(shù)據(jù)包,控制器會為兩種數(shù)據(jù)包類型進(jìn)行獨立計算,并下發(fā)不同的流表。
Algorithm2:Prob-Path
Input: Source Addresss; Destination Addressd; Number of alternative pathsL
Output: Forwarding path pathforward
1.As,d←TheLsmallest values of path_w in Paths,d
2.for path inAs,d
4.Set[i]←Set[i-1]+Probpath
5.end for
6.r←random(1,100)
7.foriin Set
8.if Set[i-1] 9.pathforward←Thei-th path inAs,d 10.end if 11.end for 12.return pathforward 該文使用基于OpenFlow1.3協(xié)議的Ryu作為SDN控制器,使用Mininet對數(shù)據(jù)集Topology Zoo[21]中3種不同規(guī)模的網(wǎng)絡(luò)拓?fù)溥M(jìn)行模擬仿真,其網(wǎng)絡(luò)節(jié)點與鏈路的數(shù)量如表1所示。主要從以下幾個方面來評估PrNet:(1)驗證混淆拓?fù)涞陌踩?(2)驗證概率路徑轉(zhuǎn)發(fā)算法的有效性;(3)PrNet性能基準(zhǔn)測試。對下面給出的每項評估均重復(fù)實驗30次,并展示出最終的平均值。 表1 網(wǎng)絡(luò)拓?fù)湫畔?/p> 混淆拓?fù)涞陌踩钥梢酝ㄟ^比較混淆拓?fù)渑c實際流量拓?fù)涞南嗨菩詠砗饬?。該文引入編輯距離(Levenshtein distance)表示混淆路徑與實際流量路徑之間的差異,路徑的差異性可以表示為編輯距離和實際流量路徑的長度比,實際流量路徑為備選路徑的概率的加權(quán)和,拓?fù)湔w的相似性表示為: simi=1- (12) 圖3 相似性 在網(wǎng)絡(luò)拓?fù)溥\行過程中驗證概率路徑轉(zhuǎn)發(fā)算法的有效性,首先測試備選路徑的概率值是否根據(jù)網(wǎng)絡(luò)實時流量的變化而變化,其次測試概率路徑轉(zhuǎn)發(fā)算法對盲攻擊的緩解效果。 3.2.1 備選路徑的概率變化 在Eunetworks中,設(shè)定瓶頸節(jié)點數(shù)量為總節(jié)點的20%,備選路徑數(shù)量為4,為了能夠凸顯拓?fù)溥\行過程中鏈路使用率CLR對備選路徑概率值的影響,影響因子M取值為[1,1,1,1,3]。H7和H8是分別連接在節(jié)點S7和S8上的兩臺主機(jī),path1=(S7,S6,S5,S8)、path2=(S7,S12,S11,S13,S8)、path3=(S7,S12,S11,S10,S9,S8)、path4=(S7,S3,S2,S1,S4,S5,S8)為數(shù)據(jù)包(H7,H8,UDP)的所有可達(dá)路徑,由于備選路徑數(shù)量為4,故該4條可達(dá)路徑均為備選路徑。 圖4中給出了數(shù)據(jù)包(H7,H8,UDP)的備選路徑概率值變化情況。隨著e(S5,S6)的CLR上升,包含有e(S5,S6)的備選路徑path1的瓶頸權(quán)重會上升,使得分配給該備選路徑的概率值會隨之下降,當(dāng)e(S5,S6)的CLR為0.2時,path1的概率值為0.24,而當(dāng)e(S5,S6)的CLR為1.0時,代表e(S5,S6)處于擁塞狀態(tài),此時SDN控制器將不再把流量引向擁塞的鏈路,因此path1的概率值會調(diào)整為0。實驗結(jié)果與預(yù)想相符合,說明PrNet在拓?fù)溥\行過程中能夠定期收集各個節(jié)點和鏈路的度量指標(biāo)信息用于更新可達(dá)路徑的瓶頸權(quán)重,并調(diào)整可達(dá)路徑分配得到的概率值,使得網(wǎng)絡(luò)具備更好的處理能力和靈活性。 圖4 備選路徑的概率變化 3.2.2 緩解盲攻擊 在Eunetworks中驗證PrNet如何緩解網(wǎng)絡(luò)中出現(xiàn)的盲攻擊。假設(shè)攻擊者在節(jié)點S1、S6、S9和S13上部署有bots,其中S6、S9、S13中的bots發(fā)送大量低速率流量至S1的誘餌服務(wù)器上,此時e(S4,S5)成為了最有可能被攻擊者洪泛的鏈路,如圖5所示。將所有鏈路的帶寬設(shè)置為10 Gbps,每個節(jié)點之間產(chǎn)生的背景流量消耗每條鏈路大約40%的鏈路使用率??紤]到LFA具有低速率流量的特性,規(guī)定每個bot最多發(fā)送8 Mbps的攻擊流量。 圖5 用于測試盲攻擊的拓?fù)銭unetworks 圖6給出了分別運行最短路徑策略(Shortest Path First,SPF)和PrNet時鏈路使用率隨攻擊成本的變化趨勢,橫坐標(biāo)為攻擊者洪泛e(S4,S5)所需要的攻擊成本,攻擊成本以每個節(jié)點需要部署bots的數(shù)量來呈現(xiàn),縱坐標(biāo)為e(S4,S5)的鏈路使用率CLR。根據(jù)實驗結(jié)果,當(dāng)bots的數(shù)量為250時,在SPF方案中e(S4,S5)的使用率達(dá)到了100%,而在PrNet中e(S4,S5)的使用率僅為65%,與SPF方案相比,PrNet使攻擊者需要多花費接近一倍的代價才能達(dá)到洪泛鏈路的目的。實驗結(jié)果與預(yù)想相符合,說明PrNet在拓?fù)溥\行過程中會根據(jù)流量的走向和分布調(diào)整數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑,使網(wǎng)絡(luò)中的流量盡可能實現(xiàn)負(fù)載均衡,減少鏈路擁塞情況的出現(xiàn),有效緩解了攻擊者發(fā)起的盲攻擊。 圖6 緩解盲攻擊 通過測試系統(tǒng)在拓?fù)浣Y(jié)構(gòu)更新時的靈敏性和備選路徑數(shù)量對數(shù)據(jù)包轉(zhuǎn)發(fā)時延的影響來衡量PrNet的性能。 3.3.1 系統(tǒng)的靈敏性 當(dāng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)發(fā)生變化時,PrNet需要根據(jù)實際拓?fù)浣Y(jié)構(gòu)調(diào)整各節(jié)點的靜態(tài)度量指標(biāo)值,以及重新生成混淆拓?fù)洹T?種不同規(guī)模的網(wǎng)絡(luò)拓?fù)渲袦y量這兩個步驟的處理時間,如表2所示。結(jié)果表明,對于規(guī)模較小的網(wǎng)絡(luò)拓?fù)?PrNet能夠在0.5秒以內(nèi)完成節(jié)點度量指標(biāo)值和混淆拓?fù)涞挠嬎?而對于大型網(wǎng)絡(luò)拓?fù)淙鏘ris,計算時間雖然對比前兩者有明顯增大,但是總時間仍控制在1分鐘以內(nèi)。因此,筆者認(rèn)為PrNet具有良好的靈敏性,能夠有效應(yīng)對真實環(huán)境中拓?fù)浣Y(jié)構(gòu)更新的情況。 表2 處理時間 ms 3.3.2 數(shù)據(jù)包的轉(zhuǎn)發(fā)時延 在此評估中,測量備選路徑數(shù)量增多,對數(shù)據(jù)包轉(zhuǎn)發(fā)時延的影響。在3種不同規(guī)模的網(wǎng)絡(luò)拓?fù)渲?隨機(jī)挑選兩個位于不同節(jié)點的主機(jī)進(jìn)行通信,主機(jī)之間連續(xù)30秒每秒發(fā)送10個數(shù)據(jù)包,每個數(shù)據(jù)包大小為5 000字節(jié)。當(dāng)PrNet中備選路徑數(shù)量為1時,代表此時系統(tǒng)使用最短路徑策略分配轉(zhuǎn)發(fā)路徑。 如圖7所示,當(dāng)備選路徑數(shù)量為1時,單個數(shù)據(jù)包在3種拓?fù)渲械钠骄D(zhuǎn)發(fā)時延分別為0.193 ms,0.205 ms,0.211 ms,當(dāng)備選路徑數(shù)量為2時,轉(zhuǎn)發(fā)時延分別為0.202 ms,0.216 ms,0.223 ms。在PrNet中,數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑會是備選路徑中的任意一條路徑,而隨著備選路徑數(shù)量的增大,會有更長的路徑納入備選路徑中,當(dāng)數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑為其中的一條較長的路徑時,其轉(zhuǎn)發(fā)延遲也會相應(yīng)的增大,因此數(shù)據(jù)包的轉(zhuǎn)發(fā)延遲會隨著備選路徑數(shù)量的增大而增大。但是在3種網(wǎng)絡(luò)拓?fù)渲?轉(zhuǎn)發(fā)時延的平均漲幅分別為0.010 5 ms,0.011 ms和0.012 ms,變化幅度較小,對數(shù)據(jù)包的正常轉(zhuǎn)發(fā)造成的影響不大。 圖7 轉(zhuǎn)發(fā)時延 該文提出了一種應(yīng)對鏈路洪泛攻擊的機(jī)制PrNet,PrNet的主要思想是從多角度定義形成網(wǎng)絡(luò)瓶頸的度量指標(biāo),通過識別攻擊者的測繪流量并為其分配一條安全的混淆路徑,使得網(wǎng)絡(luò)瓶頸在攻擊者形成的攻擊視圖中具有較低的瓶頸度量值,并且通過概率路徑轉(zhuǎn)發(fā)算法,使網(wǎng)絡(luò)拓?fù)渲械牧髁勘M可能實現(xiàn)負(fù)載均衡,減少網(wǎng)絡(luò)瓶頸的產(chǎn)生。實驗表明,PrNet生成的混淆拓?fù)淠軌虻钟粽咴诠羟捌趯嵤┑木W(wǎng)絡(luò)偵察行為,概率路徑轉(zhuǎn)發(fā)算法能夠讓網(wǎng)絡(luò)具備更好的處理能力和靈活性,并且有效緩解攻擊者不依賴測繪結(jié)果而發(fā)起的盲攻擊。PrNet僅考慮了將所有傳統(tǒng)路由器變更為SDN交換機(jī)的實現(xiàn)方案,對于大型網(wǎng)絡(luò)來說,更換所有路由器需要付出較大的代價,下一步將繼續(xù)探索僅將網(wǎng)絡(luò)中的部分路由器更換為SDN交換機(jī)的方案;對于大型網(wǎng)絡(luò)拓?fù)?加入多個控制器,提升系統(tǒng)的數(shù)據(jù)處理能力;引入機(jī)器學(xué)習(xí)的算法,由算法根據(jù)當(dāng)前拓?fù)涞牧髁壳闆r,決定備選路徑的數(shù)量,為數(shù)據(jù)包分配最優(yōu)的轉(zhuǎn)發(fā)路徑。3 實驗評估
3.1 驗證混淆拓?fù)涞陌踩?/h3>
3.2 驗證概率路徑轉(zhuǎn)發(fā)算法的有效性
3.3 PrNet性能基準(zhǔn)測試
4 結(jié)束語