專利名稱:用于改善內(nèi)容分發(fā)網(wǎng)絡(luò)對分布式拒絕服務(wù)攻擊的適應(yīng)力的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及計算機網(wǎng)絡(luò),特別涉及用于改善內(nèi)容分發(fā)網(wǎng)絡(luò)對分布式拒絕服務(wù)攻擊的適應(yīng)力的技術(shù)。
背景技術(shù):
檢測和阻止對因特網(wǎng)服務(wù)器的分布式拒絕服務(wù)(DDoS)攻擊的問題最近引起了網(wǎng)絡(luò)化研究團體和主要是為了抗擊這些類型的攻擊而建立的新公司的高度關(guān)注。這些攻擊典型地以虛假請求分組淹沒(flood)網(wǎng)絡(luò)或服務(wù)器,使得其不可用于處理合法請求。在性能和可用性是因特網(wǎng)服務(wù)的關(guān)鍵區(qū)別因素的時代,這樣的停工期將導(dǎo)致相當大的經(jīng)濟損失。盡管對安全問題的認識日益增強,但是拒絕服務(wù)攻擊仍然是一個嚴重問題。例如,根據(jù)最近的計算機安全協(xié)會調(diào)查,表明其網(wǎng)站遭到DoS攻擊(例如,TCP SYN淹沒)的被調(diào)查者數(shù)目從2000年的27%升至2001年的38%。
目前大部分對抗DDoS攻擊的工作集中于針對單個集中服務(wù)器位置或網(wǎng)站的攻擊,其中攻擊者可以相對容易地使帶寬和服務(wù)器資源超限運行。然而,在現(xiàn)今的因特網(wǎng)架構(gòu)中,很多高容量站點是分布式的,其或者在若干數(shù)據(jù)中心處復(fù)制內(nèi)容,或者使用內(nèi)容分發(fā)服務(wù)提供者(CDSP)分發(fā)內(nèi)容。例如,在由Media Metrix報導(dǎo)的通信量最大的前20個因特網(wǎng)站點中,至少15個站點使用CDSP,如Akamai、Digital Island或Speedera。另外,顯然的是,高容量站點很可能是DDoS攻擊的目標。例如,在2000年2月,大量高級DDoS攻擊使若干高性能(high-profile)站點包括Yahoo、Ebay、Amazon.com、CNN和Buy.com停工,其中的大部分站點目前都是采用CDSP來分發(fā)內(nèi)容。
除了期望的較佳性能之外,CDSP通常還聲稱它們可以提供較強的對DDoS攻擊的適應(yīng)力。雖然內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)由于其內(nèi)在的分布特性而確實提供一些對抗DDoS攻擊的保護,但是其共享的服務(wù)器底層結(jié)構(gòu)也是一個弱點。對單個CDN托管(CDN-hosted)網(wǎng)站的攻擊會影響由CDSP托管的很多(或所有)客戶站點。在沒有仔細的站點分配策略的情況下,由CDN提供的冗余性和復(fù)制為所有托管的客戶提供有限的保護。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的各個實施例,提供了適于內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)的拒絕服務(wù)攻擊制止機制。這些機制包括基于散列(hash-based)的請求路由選擇方案和站點分配方案。基于散列的請求路由選擇方案提供區(qū)分合法請求與虛假請求的方法。使用該機制,當站點內(nèi)容從n個CDN高速緩存(cache)服務(wù)時,需要攻擊者產(chǎn)生O(n2)的通信量來使CDN托管站點不可用。在沒有這些改進的情況下,攻擊者只需產(chǎn)生O(n)的通信量來使站點停工。站點分配方案提供了CDN托管網(wǎng)站之間的充分隔離以防止一個網(wǎng)站上的攻擊使其他站點不可用。使用基于二進制碼的分配策略,可以提供使其所分配的服務(wù)器失去能力的任何單獨網(wǎng)站上的成功攻擊不會使由CDN托管的其他網(wǎng)站停工的保證。
在本發(fā)明的各個實施例中,提供了一種用于改善內(nèi)容分發(fā)網(wǎng)絡(luò)對分布式拒絕服務(wù)攻擊的適應(yīng)力的方法。根據(jù)該方法,從客戶端接收源地址,然后驗證源地址以確保它在服務(wù)器處被接受。如果它被接受,則向客戶端提供更高級別的服務(wù)。
驗證源地址屬于客戶端可以包括采用基于散列的技術(shù),其中對源地址和站點地址執(zhí)行散列操作(hash)以獲得服務(wù)器標識,并且將服務(wù)器標識發(fā)送到源地址。當服務(wù)器接收到包括客戶端源地址和所請求的站點地址的客戶端請求時,對這些值執(zhí)行散列操作以獲得第二服務(wù)器標識。然后,確定該服務(wù)器標識是否標識該服務(wù)器。
當不是所有CDN服務(wù)器都托管全部客戶站點時,使用客戶端源地址和目的站點地址在服務(wù)器處確定客戶端請求的接受。本發(fā)明提供了一種隨同客戶端源地址一起在客戶端請求中傳達站點信息的方法??梢愿鶕?jù)由客戶端用來聯(lián)系服務(wù)器的目的地址在服務(wù)器處確定所請求的站點地址。
可以將來自被提供更高級別服務(wù)的客戶端的請求插入到正常隊列中,并且將其余的來自客戶端的請求插入到低優(yōu)先級隊列中。正常隊列中的請求被給予比低優(yōu)先級隊列中的請求更高的優(yōu)先級。低優(yōu)先級隊列中的請求可被丟棄。
另外,可提供多個優(yōu)先級級別。在這種情況下,來自客戶端的請求被插入到多級優(yōu)先級隊列的第i級別中,其中i是服務(wù)器處的客戶端優(yōu)先級級別。
在CDN中使用的散列函數(shù)可以是使用在路由器和服務(wù)器之間共享的秘密密鑰的帶密鑰散列函數(shù)。這些散列函數(shù)可被周期性地更新。在預(yù)定時間間隔期間,在驗證源地址時,可以認可(honor)舊和更新的散列函數(shù)。
根據(jù)本發(fā)明的各個實施例,還提供一種用于在內(nèi)容分發(fā)網(wǎng)絡(luò)中將網(wǎng)站分配給服務(wù)器的方法。為多個網(wǎng)站提供分配向量,每個分配向量包括用于映射服務(wù)器到網(wǎng)站的分配的二進制向量。使用指定資源約束確定網(wǎng)站到服務(wù)器的最佳分配,然后配置分配向量以反映所確定的最佳分配。
可以使用編碼理論的結(jié)果來確定最佳分配向量。例如,可以為預(yù)定數(shù)目的服務(wù)器生成多個n位二進制向量,使得每個n位二進制向量具有相等的漢明權(quán)重,并且n位二進制向量之間的成對漢明距離為最大值。如果服務(wù)器數(shù)目是已知的,則可以通過為預(yù)定數(shù)目的服務(wù)器生成多個n位二進制向量來確定給定漢明距離的最佳分配,使得每個n位二進制向量具有相等的漢明權(quán)重,并且n位二進制向量之間的成對漢明距離為預(yù)定值。
通過下面結(jié)合附圖閱讀的對優(yōu)選實施例的詳細描述,本發(fā)明的這些和其他目的、特性和優(yōu)點將會變得清楚。
圖1示出示例性內(nèi)容分發(fā)網(wǎng)絡(luò);以及圖2示出根據(jù)本發(fā)明實施例的基于散列的請求路由選擇技術(shù)。
具體實施例方式
本發(fā)明集中于開發(fā)適于內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)的制止機制。根據(jù)本發(fā)明的各個實施例,提供了一種通過支持(leverage)獨特于CDN的特性即將客戶端請求引導(dǎo)到最適合的CDN服務(wù)器的請求路由選擇系統(tǒng),以及將網(wǎng)站內(nèi)容分配給共享CDN服務(wù)器的策略而使攻擊者的工作變得困難得多的技術(shù)。公開了各種機制,其改善共享CDN內(nèi)容服務(wù)底層結(jié)構(gòu)的適應(yīng)力,并且還提供了CDN托管網(wǎng)站之間的充分隔離以防止對一個網(wǎng)站的攻擊使其他站點不可用。
本發(fā)明提供了顯著更高的對DDoS攻擊的適應(yīng)力,并且改善了網(wǎng)站可用性,從而使得攻擊者在CDN環(huán)境中實現(xiàn)其目標困難得多。此外,不是試圖在仍然提供某種級別的保護的同時優(yōu)化CDN的性能,焦點集中于保證對單獨網(wǎng)站的攻擊不影響其他CDN托管站點的站點分配方案。該方案是保持該保證同時對于其余站點還盡可能少地降低性能。
參照圖1,內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)100包括分布在多個區(qū)域內(nèi)的多個CDN服務(wù)器,如CDN服務(wù)器120。如圖1所示,CDN區(qū)域如CDN區(qū)域110包括CDN服務(wù)器組。雖然區(qū)域典型地具有某布局或地理意義,但是可以任意地定義它們。例如,部署在一組ISP網(wǎng)絡(luò)或自主系統(tǒng)中的服務(wù)器可以是單個CDN區(qū)域的一部分。
由于每個CDN服務(wù)器可以服務(wù)來自多個內(nèi)容提供者(即,CDSP的客戶)的內(nèi)容,因此它是共享的。還可以存在起源服務(wù)器(originserver),其擔當特定內(nèi)容提供者的授權(quán)內(nèi)容源。該模型適用于在很多站點之間復(fù)制的任何基于萬維網(wǎng)的內(nèi)容或應(yīng)用程序。
在工作時,客戶端140通過首先聯(lián)系請求路由器如請求路由器130來訪問來自CDN服務(wù)器的內(nèi)容,其中該請求路由器(透明地)將客戶端140引導(dǎo)到適當?shù)膮^(qū)域高速緩存。請求路由器在邏輯上與高速緩存分離,不過它也可以在物理上與其共處一地。請求路由器的分布通常取決于CDN大小。例如,如果CDN具有非常廣的分布,則可以在每一個區(qū)域內(nèi)部署它們。請求路由器可以使其決策基于客戶端IP地址,也許還可以基于有關(guān)網(wǎng)絡(luò)或候選服務(wù)器的狀態(tài)或者有關(guān)正被請求的內(nèi)容的其他信息。實際上,請求路由器可以是當客戶端發(fā)出名稱解析請求或客戶端請求時分別選擇鄰近高速緩存的DNS服務(wù)器或萬維網(wǎng)服務(wù)器。我們不考慮客戶端如何與請求路由器進行聯(lián)系。然而,很多CDN使用DNS來達到此目的。
本發(fā)明集中于淹沒型攻擊,其中,攻擊者試圖以極其大量的網(wǎng)絡(luò)通信量淹沒受攻擊網(wǎng)站,使得站點實際上不可用于服務(wù)用戶請求。
為了啟動大規(guī)模DDoS攻擊,攻擊者必須首先滲入和策反大量在地理上分布的連接到網(wǎng)絡(luò)的機器。然后,使用這些被侵害機器產(chǎn)生攻擊通信量或者作為跳板來隱藏攻擊的真實起源。侵害主機并安裝攻擊工具的過程經(jīng)常是自動的,并且可以數(shù)秒內(nèi)在單個主機上完成。由于被侵害主機本身可用來進一步掃描和策反其他主機,因此在一小時內(nèi)可以侵害數(shù)千主機。如果使用攻擊主機來了解一些有關(guān)托管目標網(wǎng)站的CDN的信息(例如,CDN服務(wù)器的地址),則主機可以在攻擊過程中交換該信息。
經(jīng)常地,攻擊者將在攻擊分組中偽造源IP地址,以便隱藏攻擊的真實起源,并且提高其有效性。使用真實IP地址將泄露攻擊源,從而允許現(xiàn)有方案對其進行追溯。而且,使用有狀態(tài)分組過濾,檢測大量來自一組IP地址的分組隨后阻止該通信量是相當可行的。最初,我們假設(shè)攻擊者從整個IP地址空間均勻選擇源IP地址。然而,后來我們發(fā)現(xiàn)如果攻擊者試圖更仔細地選擇地址,我們方案的有效性也不降低。
由于HTTP協(xié)議使用TCP,因此淹沒CDN服務(wù)器是TCP SYN淹沒攻擊的特殊情況。眾多應(yīng)對TCP SYN淹沒攻擊的保護措施已被提出和部署。一些應(yīng)對措施被部署在潛在的攻擊目標上,例如隨機丟棄TCPSYN分組,縮短為建立TCP連接而允許的時間周期,增加保存部分建立的TCP連接的隊列的長度,以及增加系統(tǒng)存儲器大小。其他方案被部署在網(wǎng)絡(luò)路由器上,例如速率限制和通信量調(diào)整(traffic-shaping)。雖然所有這些應(yīng)對措施在防止攻擊目標處的過載方面是有效的,但是它們不能區(qū)分惡意TCP SYN分組與由突發(fā)事件觸發(fā)的大量合法TCP SYN分組。應(yīng)當清楚,本發(fā)明不僅防止過載,而且提供發(fā)向CDN服務(wù)器的惡意和合法請求之間的有效區(qū)別。
為了幫助更好地理解本發(fā)明,我們首先考慮一種簡單的度量來定量網(wǎng)站的相對適應(yīng)力。直觀上,如果攻擊者需要發(fā)送比使站點B停工所需更多的通信量來使站點A停工,則我們認為站點A比站點B更有適應(yīng)力。因此,我們?nèi)缦露x站點A與另一個站點B相比的相對適應(yīng)力服務(wù)器的適應(yīng)力如果需要比使服務(wù)器B不可用多k倍的攻擊通信量來使服務(wù)器A不可用,則服務(wù)器A具有比服務(wù)器B大k倍的適應(yīng)力,其中不可用性對于服務(wù)器A和B是相同定義的。
更具體地說,當我們把CDN視作復(fù)制起源服務(wù)器的完全內(nèi)容的n個服務(wù)器的網(wǎng)絡(luò)時,由于使所有n個高速緩存停工花費比使單個服務(wù)器停工所需多n倍的攻擊通信量,因此可以簡單直接地表示與單個服務(wù)器相比,CDN提供O(n)的適應(yīng)力。
我們的第二度量定量一站點與由相同CDN托管的另一個站點上的攻擊的隔離或保護度。例如,考慮托管兩個獨立網(wǎng)站A和B的CDN。理想地,站點A上的DDoS攻擊根本不應(yīng)當影響站點B的性能或可用性。當兩個站點不共享任何公共服務(wù)器,這為真。但是實際上,網(wǎng)站由共享服務(wù)器托管以便通過多個服務(wù)器實現(xiàn)良好的吞吐量性能。因此,平衡被托管網(wǎng)站的性能要求和保護是重要的。具體地說,一個重要目標是最大化托管每個站點的服務(wù)器數(shù),同時保證它們之間的隔離級別。
一種定量隔離級別的方法是計算未被感興趣站點共享的服務(wù)器數(shù)。更具體地說,我們?nèi)缦露x任何兩個站點之間的隔離度隔離度設(shè)wi和wj表示兩個獨立網(wǎng)站,并且Si={s1,...sl}且Sj={s′1,...,s′k}]]>分別表示分配給wi和wj的CDN服務(wù)器集合。我們定義wi和wj之間的隔離度為min(|Si-Sj|,Sj-Si|)。
如后面所示,假設(shè)向每個站點分配相等數(shù)目的服務(wù)器,則兩個站點之間的隔離度簡單地為d/2,其中d表示不相交高速緩存的數(shù)目。
接下來,我們提出一種稱作基于散列的請求路由選擇的新穎算法,其可以顯著改善CDN對使用偽造IP地址的DDoS攻擊的適應(yīng)力?;谏⒘械恼埱舐酚蛇x擇的主要思想是區(qū)別對待具有合法源IP地址的請求和具有偽造源IP地址的請求,使得當CDN過載時優(yōu)選地丟棄大部分攻擊分組同時服務(wù)合法請求。該目標通過支持獨特于CDN的特性之一即請求路由選擇系統(tǒng)來實現(xiàn)。該基于散列的請求路由選擇方案在根本不禁止合法請求的情況下阻止大部分攻擊通信量。更具體地說,當存在n個服務(wù)網(wǎng)站的服務(wù)器時,服務(wù)器將丟棄攻擊通信量的 部分。這樣,我們可以確保即使在攻擊下服務(wù)器資源也大部分用來服務(wù)合法請求,從而顯著改善CDN的生存性。
該基于散列的請求路由選擇算法基于大部分CDN采用請求路由選擇系統(tǒng)作為其服務(wù)底層結(jié)構(gòu)的一部分這一事實而構(gòu)建當客戶端想要訪問由CDN托管的網(wǎng)站時,它首先聯(lián)系本地請求路由器以得到所要聯(lián)系的CDN服務(wù)器的IP地址。一般而言,請求路由選擇系統(tǒng)試圖優(yōu)化客戶端感覺到的響應(yīng)時間或者均衡CDN服務(wù)器處的負載。在我們的架構(gòu)中,該基于散列的請求路由選擇用于區(qū)分合法請求與具有偽造IP地址的潛在攻擊通信量的目的。該目標通過使用在路由器和CDN服務(wù)器之間共享的秘密密鑰的簡單帶密鑰散列法來實現(xiàn)。
參照圖2,示出基于散列的請求算法的操作。當客戶端想要訪問網(wǎng)站時,它首先發(fā)送請求到本地請求路由器以發(fā)現(xiàn)所要聯(lián)系的CDN服務(wù)器的地址(步驟1)??蛻舳丝梢月?lián)系其區(qū)域內(nèi)的任何請求路由器。接下來,請求路由器使用與CDN服務(wù)器秘密共享的散列函數(shù)H基于網(wǎng)站和客戶端的源IP地址選擇CDN服務(wù)器(步驟2)。可以使用簡單的均勻散列函數(shù)。例如,H網(wǎng)站×IP地址→服務(wù)器地址。換句話說,任何給定(網(wǎng)站,IP地址)對同等可能地通過散列操作而轉(zhuǎn)換成任何服務(wù)器地址。
接下來,請求路由器以所要聯(lián)系的CDN服務(wù)器的地址響應(yīng)(步驟3)。注意,攻擊者不能使用偽造地址發(fā)現(xiàn)IP地址與服務(wù)器之間的映射,因為響應(yīng)將被發(fā)送回到包含在查詢中的源地址。換句話說,攻擊者只能發(fā)現(xiàn)被侵害主機IP地址的映射,這些IP地址與整個可用IP地址空間相比相對較小。
當接收到來自請求路由器的響應(yīng)時,客戶端發(fā)送請求到具有服務(wù)器地址的服務(wù)器(步驟4)。當CDN服務(wù)器接收到請求時,它使用共享散列函數(shù)H檢查請求中的(源地址,網(wǎng)站)對是否通過散列操作而轉(zhuǎn)換成其自己的地址。
如果散列值匹配其自己的地址,則服務(wù)器將請求插入到“正?!狈?wù)隊列中;否則,它將請求插入到“低優(yōu)先級”服務(wù)隊列中,其中“低優(yōu)先級”服務(wù)隊列只有小量的緩沖區(qū)來吸收由于路由選擇異?;蛘呷魏闻R時不一致性所引起的誤導(dǎo)分組(步驟5)?!罢!狈?wù)隊列中的請求總是在“低優(yōu)先級”服務(wù)隊列之前得到服務(wù);只有當“正?!标犃锌諘r,“低優(yōu)先級”隊列才得到服務(wù)。
一旦服務(wù)器處理了請求,則將所請求的對象返回給客戶端(步驟6)。注意,在假設(shè)在請求路由器與服務(wù)器之間保持H的一致性的普通情況下,沒有合法請求將被插入到“低優(yōu)先級”服務(wù)隊列中。
現(xiàn)在,假定攻擊者通過從整個IP地址空間隨機選擇IP地址來偽造源地址。根據(jù)均勻散列函數(shù)H的假設(shè),在統(tǒng)計上只有總攻擊通信量的1/n部分將通過服務(wù)器處的測試,并且將被插入在正常服務(wù)隊列中。攻擊通信量的其他 部分將不能通過測試,并且將被放入低優(yōu)先級隊列。由于低優(yōu)先級隊列只有有限數(shù)量的緩沖區(qū)來處理諸如誤導(dǎo)分組的稀少事件,因此大部分攻擊通信量將被無聲無息地丟棄。因此,服務(wù)器的寶貴資源不會被攻擊通信量浪費。
從攻擊者的角度來說,這意味著它必須產(chǎn)生更多的攻擊通信量來使服務(wù)器停工。更具體地說,使具有基于我們的基于散列的請求路由選擇機制的過濾的單個CDN服務(wù)器停工所需的攻擊通信量實際上比使沒有該過濾的服務(wù)器停工所需的攻擊通信量多O(n)倍。由于在一個區(qū)域內(nèi)存在n個這樣的協(xié)作服務(wù)器,因此為了同時使所有n個服務(wù)器停工而使站點完全不可用,攻擊者需要產(chǎn)生總共比使由單個服務(wù)器托管的站點停工所需多O(n2)倍的攻擊通信量。換句話說,與單服務(wù)器站點相比,基于散列的請求路由選擇算法對于具有n個服務(wù)器的CDN保證O(n2)的適應(yīng)力。
前面提及過,試圖以巨大數(shù)量的具有真實源IP地址的請求淹沒站點應(yīng)當被視為對于攻擊者是無效的,因為它泄漏了攻擊源。而且,有狀態(tài)分組過濾可以通過檢測來自一組IP地址的巨大通信量來有效地阻止攻擊流。因此,當攻擊站點時,攻擊者將必須偽造源IP地址。前面提及過,實際上存在無限數(shù)目的候選散列函數(shù),并且這些函數(shù)不基于任何網(wǎng)絡(luò)級信息,例如,服務(wù)器與特定IP地址的鄰近性或者每個服務(wù)器的負載級別。因此,實際上不可能讓攻擊者猜測到映射并且智能地偽造IP地址。
應(yīng)當理解,這里描述的方案區(qū)別對待由于來自僅僅用戶興趣突增情況下的攻擊而造成的過載。在攻擊的情況下,理想地服務(wù)器應(yīng)當忽略進入請求而不采取任何操作。另一方面,在過載的情況下,服務(wù)器應(yīng)當試圖以性能下降例如響應(yīng)時間增加為代價按照到達次序服務(wù)所有用戶請求。本發(fā)明通過丟棄大部分攻擊分組而大致遵循理想行為,從而允許服務(wù)器實際上僅僅處理攻擊分組的一小部分;而在過載的情況下,所有請求都將被放入正常隊列,并且最終將按照其到達次序由服務(wù)器進行服務(wù)。
為了容錯和負載均衡的目的,請求路由器可以以多于一個服務(wù)器地址響應(yīng)客戶端請求。如同在DNS中,當服務(wù)器之一由于故障而不能提供期望服務(wù)時,客戶端可以試圖聯(lián)系其他服務(wù)器以獲得對象。同時,通過在響應(yīng)中隨機選擇所要聯(lián)系的初級服務(wù)器,可以降低使單個服務(wù)器過載的機會。然而,該方法不利地影響基于散列的請求路由選擇機制的有效性,因為此時單個IP地址將通過多個服務(wù)器的測試。因此,具有偽造IP地址的攻擊通信量具有較高的機會通過服務(wù)器的基于散列的過濾。
更具體地說,如果請求路由器以{服務(wù)器1、服務(wù)器2、...、服務(wù)器n}響應(yīng)客戶端x的網(wǎng)站查詢,則在列表中的所有k個服務(wù)器處都必須接受來源于x的通信量。假設(shè)k個隨機選擇的服務(wù)器與每個IP地址相關(guān)聯(lián),則每個服務(wù)器必須接受與以前相比k倍的地址是合法的。按照DDoS攻擊,服務(wù)器處的基于散列的過濾此時接受攻擊通信量的k/n部分而不是通信量的1/n部分。這實際上將基于散列的請求路由選擇方案的適應(yīng)力從O(n2)降低到O(n2/K)。
一種克服該問題的方法是帶優(yōu)先級地關(guān)聯(lián)IP地址與服務(wù)器標識,并且只要可能就讓客戶端首先聯(lián)系初級服務(wù)器。例如,對于地址x,假設(shè)服務(wù)器1是初級服務(wù)器,服務(wù)器2是次級服務(wù)器等等。在這種情況下,客戶端x必須首先聯(lián)系服務(wù)器1以檢索對象。只有當服務(wù)器1不可用時,客戶端才可依次嘗試服務(wù)器2和列表中的其他服務(wù)器。在服務(wù)器處,我們產(chǎn)生一組地址的不同類型帶優(yōu)先級關(guān)聯(lián)。我們假設(shè)每個服務(wù)器具有帶k+1個級別的優(yōu)先級隊列,其中,級別1是最高優(yōu)先級。對于分組的源地址,讓我們定義分組的優(yōu)先級類別為服務(wù)器的等級。當服務(wù)器接收到來自優(yōu)先級類別i中的地址的分組時,它將分組插入到優(yōu)先級隊列的第i級別中。如果分組來自范圍外(out-of-profile)的地址,則將它放入最低優(yōu)先級隊列。這樣,服務(wù)器處理來自具有最高優(yōu)先級的第一優(yōu)先級地址的分組,從而優(yōu)化響應(yīng)時間。
實際上,為了實用起見,k值將較小,例如,k=2或者3,從而對于帶優(yōu)先級的操作只需少量的附加開銷,同時提供必要的冗余性。
雖然在理論上攻擊者只能發(fā)現(xiàn)其控制下的被侵害主機的映射,但是他們可以通過各種渠道了解其他IP地址的映射,例如通過在網(wǎng)絡(luò)鏈路上竊聽從請求路由器出來的響應(yīng)。雖然攻擊者可能沒有資源或時間來捕獲所有響應(yīng)或者發(fā)送探測分組,但是考慮到該了解過程也可以采用分布方式并行完成,攻擊者在攻擊過程中或者甚至在啟動大規(guī)模攻擊之前就可以發(fā)現(xiàn)大部分映射。為了解決這一問題,我們可以在一定間隔之后周期性地更新共享散列函數(shù)H,從而使攻擊者在前面間隔內(nèi)了解到的映射無效。
具體地說,CDN服務(wù)提供者預(yù)先將一組H分發(fā)給請求路由器和服務(wù)器。通過該“供應(yīng)”,CDN服務(wù)器和請求路由器可以在攻擊過程期間獨立地更新散列函數(shù)H。當更新散列函數(shù)H時,可能存在一段時間在請求路由器與服務(wù)器之間散列函數(shù)不一致。該問題可以通過允許“切換”期間來容易地處理,在此期間,認可舊和新的映射。通過該附加的保護級別,攻擊者發(fā)現(xiàn)散列函數(shù)H難得多。
現(xiàn)在我們概述各種將網(wǎng)站分配給不同CDN服務(wù)器的策略,其目的在于隔離任何一個站點上的攻擊的影響。理想地,我們想要這樣的站點到服務(wù)器的分配,其使得即使由相同CDN服務(wù)的其他站點受到攻擊,站點的響應(yīng)時間和吞吐量也盡可能小地惡化。分配策略應(yīng)當解決下面兩個相互沖突的目標(1)對于每個網(wǎng)站,我們想要讓大量CDN服務(wù)器服務(wù)站點。(2)對于任何網(wǎng)站對,如果一個是DDoS的目標,則另一個應(yīng)當盡可能小地遭受服務(wù)損失。
第一目標最大化由CDN托管的任何站點的吞吐量,并且第二目標使網(wǎng)站與任何其他站點上的攻擊相隔離。這樣的分配策略在與前述請求路由選擇算法相結(jié)合時大大增加了攻擊者試圖通過攻擊由CDN同時托管的另一個網(wǎng)站而使網(wǎng)站停工所需的工作量。直觀地,向兩個不同站點的每一個均分配大部分可用高速緩存將迫使托管這兩個站點的服務(wù)器之間的較大重疊。因此,使托管一個站點的服務(wù)器停工的攻擊也對其他站點間接地產(chǎn)生了較大的服務(wù)損失。因此,分配策略必須均衡將站點分配給服務(wù)器中的這兩個要求。
下面術(shù)語在形式上表述了服務(wù)器分配策略的問題。
設(shè)S是CDN服務(wù)器集合,W是分配給S中的服務(wù)器的網(wǎng)站集合。對于每個站點w∈W,形成長度|S|的二進制向量,其中如果w被分配給服務(wù)器i,則設(shè)置位i。該|S|長度位向量稱作站點的分配向量。
遵循標準術(shù)語,二進制向量的漢明權(quán)重被定義為該向量中1的數(shù)目。因此,站點分配向量的漢明權(quán)重表示為該網(wǎng)站服務(wù)內(nèi)容的CDN服務(wù)器的數(shù)目。這樣,上面要求可以如下重新表述。
(1)每個站點的分配向量具有盡可能大的漢明權(quán)重。
(2)對于任何兩個網(wǎng)站w1和w2,服務(wù)w1而非w2(以及相反)的服務(wù)器的數(shù)目盡可能地大,即如果s1和s2分別是分配向量w1和w2,則二進制向量(s1∧(s2))和(s2∧(s1))盡可能地大。
在同等對待所有網(wǎng)站的受限情況下,即當分配向量s1和s2具有相等漢明權(quán)重時,則有漢明權(quán)重(s1s2)=2×漢明權(quán)重(s1∧(s2))=2×漢明權(quán)重(s2∧(s1))向量的漢明權(quán)重(s1s2)稱作向量s1和s2之間的漢明距離。因此,在此受限情況下,我們想要得到這樣的站點分配向量,其具有大的漢明權(quán)重以及具有盡可能大的向量間漢明距離的約束。給定固定數(shù)目的CDN服務(wù)器,分配策略必須靈活得足以容納盡可能大的網(wǎng)站集合。因此,站點分配的問題可以如下表述給定n即CDN服務(wù)器的數(shù)目,我們想要一種高效算法來枚舉長度均為n的大量二進制向量,使得每個向量均具有正好為h的漢明權(quán)重(盡可能地大),并且向量間的成對漢明距離d盡可能地大。
這樣的算法可以順序產(chǎn)生這樣的n位向量,并且分配它們作為每個網(wǎng)站的分配向量。然后,該算法保證每個網(wǎng)站由可能n個CDN服務(wù)器中的h個CDN服務(wù)器服務(wù)。如果對應(yīng)于特定站點的服務(wù)器全都由于拒絕服務(wù)攻擊而使得不工作,則任何其他站點被保證由至少d/2個服務(wù)器服務(wù)。因此,在這樣的分配下,每個網(wǎng)站利用可用容量的h/n,并且當任何一個網(wǎng)站停工時導(dǎo)致的服務(wù)損失最大為(1-d2h)×100]]>百分比。
根據(jù)前述要求,最好讓參數(shù)h和d盡可能地大并且存在足夠的向量來覆蓋所有網(wǎng)站。接下來,我們概述試圖隨同最大化m即可以容納的網(wǎng)站總數(shù)一起最大化h和d的一般分配方法。后面,我們考慮其他可能性,例如給定m的固定值并且希望優(yōu)化其他參數(shù)h和d的情況。
在本發(fā)明中,分配策略是來自編碼理論的結(jié)果的改用(adaptation),其中該編碼理論是生成大量具有有保證的向量間漢明距離的二進制向量(不一定具有相同漢明權(quán)重)的高效算法的研究。在形式上,長度n和最小距離d的碼是長度n的二進制向量的集合,其中任何兩個向量之間的漢明距離至少為d。已提出了各種算法以將碼轉(zhuǎn)換成分配向量。我們的討論概述沒有實際碼細節(jié)的一般構(gòu)造。
一般而言,定義具有大量向量的碼,其中所有碼字正好具有固定的漢明權(quán)重,這是編碼理論中的困難問題。稱作不變權(quán)重碼的用來產(chǎn)生不變漢明權(quán)重碼字的現(xiàn)有少數(shù)碼通常僅產(chǎn)生小數(shù)目(通常為碼長度的多項式)的碼字。為了容納較大數(shù)目的網(wǎng)站,我們探索了多種采取任意碼并且修剪(prune)它們以產(chǎn)生適合我們規(guī)定的二進制向量的算法。我們的第一分配策略嘗試是下面的樸素算法。
算法1以大的最小距離d固定長度n的碼。選擇參數(shù)h,使得存在足夠的漢明權(quán)重h的碼字。枚舉分配向量的簡單策略是生成漢明權(quán)重正好為h的所有二進制向量,并且僅輸出作為碼字即屬于該碼的那些向量。
注意,在該算法的描述中,對于d或h沒有固定的特定值。為此,首先從固定參數(shù)d的碼族中固定碼。一旦固定了碼或碼族,則這定義了碼中向量的漢明權(quán)重分布。然后,根據(jù)該漢明權(quán)重分布來選擇參數(shù)h以具有至少m個網(wǎng)站的分配。
除了得到參數(shù)h和d的良好值之外,我們還希望使用具有枚舉碼字的顯式構(gòu)造和高效算法的碼。特別好的具有容易的碼字識別算法的碼類別是線性碼類別。這包括多種碼,例如在其他領(lǐng)域內(nèi)也具有廣泛應(yīng)用的里德-所羅門(Reed-Solomon)碼。
我們定義線性碼是形成線性子空間的一組長度n的向量,即如果c1和c2是碼字,則c1c2是碼字。(n,k,d)線性碼是具有最小距離d的長度n的線性碼,并且線性子空間的維數(shù)(dimension)為k。這樣的線性碼由稱作生成矩陣的k×n二進制矩陣G定義,并且碼字的集合由x×G獲得,其中x涵蓋(range over)長度k的所有二進制向量。
回想一下在我們的討論中使用的有關(guān)線性碼的一些基本事實。首先,注意線性碼產(chǎn)生具有任意漢明權(quán)重的碼字。產(chǎn)生屬于線性碼的字的算法是簡單直接的順序地枚舉長度k的向量,并且乘以生成矩陣G??蛇x地,線性碼還由其伴隨式矩陣C即(n-k)×n二進制矩陣定義當且僅當x×CT=0時,n長度字x屬于碼。使用此,對得到分配向量的下一步改進如下算法2以大的最小距離d固定(n,d,k)線性碼。然后,系統(tǒng)地生成漢明權(quán)重h的所有二進制向量,并且僅保持使得x×CT=0的那些字x??蛇x地,我們可以枚舉長度k的向量y,并且作為y×G生成碼字,并且僅保持具有漢明權(quán)重h的那些碼字。
再次,如同以前,通過首先固定線性碼族來選擇參數(shù)d和h以限定d。一旦碼被固定,則選擇h以最大化該碼中具有漢明權(quán)重h的碼字數(shù)。
在我們提供有關(guān)一些實際碼及其產(chǎn)生的參數(shù)的細節(jié)之前,我們將描述另一種用來從碼獲得分配向量的一般方案。在此方案中,不是選擇任意的h值,而是試圖集中于特別好的h值。注意,如果我們?yōu)閔選擇太大的值,則存在極少的漢明權(quán)重h的向量,由此存在極少的漢明權(quán)重h的碼字。另外,為h選擇太大的值意味著最大距離(最大可以是n-h)將較小。另一方面,如果我們?yōu)閔選擇太小的值,則每個網(wǎng)站由最多h個CDN服務(wù)器服務(wù),因此導(dǎo)致浪費的容量。從這一角度而言,優(yōu)選的h值為n/2。這是存在最大數(shù)目的二進制向量由此有可能存在大量碼字的值。對于h的這一選擇,我們可以使用下面技術(shù),其在碼長度方面很少浪費但產(chǎn)生具有準確漢明權(quán)重的字。
算法3以最小長度d固定長度n的碼C。定義改進碼C’,其中對于每個碼字c∈C,C’包含2n長度字c’=cc。
在改進碼C’中,如此生成的每個碼字具有長度2n。此外,改進碼中的每個碼字具有正好為n的權(quán)重(碼長度的一半),并且C’中的最小字距離至少為2d。這是使用任何碼來產(chǎn)生具有h=n/2的不變漢明權(quán)重的字的快速方法。如果我們選擇多個良好的碼作為C的候選者,則因為C中的每個碼字然后將被轉(zhuǎn)換成分配向量,所以該算法將產(chǎn)生很多分配向量。
這些算法是用來將碼轉(zhuǎn)換成將網(wǎng)站分配給CDN服務(wù)器的分配策略的一般方法。將良好的碼內(nèi)插到上述構(gòu)造中將產(chǎn)生良好的分配策略。我們還注意到,在另一方向上也保持等價性任何分配策略可以被轉(zhuǎn)換成碼。如果我們具有將m個網(wǎng)站的每一個分配給n個CDN服務(wù)器中的h個的策略,其中不受攻擊的網(wǎng)站被保證讓其CDN服務(wù)器的至少部分f仍然工作,則分配向量形成n長度不變權(quán)重碼(權(quán)重h)和最小距離2fh,其中具有至少m個碼字。該等價性有用于研究具有特定參數(shù)的分配策略是否是可能的存在多個表,在給定h和距離d的值的情況下,(針對小的n值)列出這樣的碼中可能的最大數(shù)目的碼字。
現(xiàn)在,我們考慮實際上可以如何使用不同參數(shù)的實際值執(zhí)行分配的例子。我們所考慮的例子是我們具有要由CDN托管的100個網(wǎng)站的情況,其中保證在任何時候不受攻擊的網(wǎng)站由CDN中的3個服務(wù)器服務(wù)。換一個方式表述,該問題是給定m=100且最小距離d=6,我們想要得到n和h的最佳值。
第一步驟是得到這樣的n的最小值,其中對于該值,存在具有距離d=6且至少m=100個碼字的碼。參考標準表,我們將知道n的最小可能值為15。
第一分配策略是使用非常具體化(specialized)的非線性碼,其產(chǎn)生具有漢明權(quán)重8且長度n=16的大約128個碼字。這向我們提供相當好的使用秘密(esoteric)非線性碼的分配策略。
另一種分配策略可以使用算法2中的里德-所羅門碼來獲得。所使用的特定里德-所羅門碼具有n=21的長度和d=5的距離,其產(chǎn)生512個碼字。檢查每個漢明權(quán)重的碼字數(shù),我們發(fā)現(xiàn)碼字的分布在權(quán)重10和11下最大。我們選擇h=11,并且僅選擇權(quán)重11的碼字,這產(chǎn)生126個碼字。對于這些不變權(quán)重字,距離(必須是偶數(shù))實際上為6,這匹配所要求的參數(shù)。
略微次優(yōu)但是簡單直接的分配是使用算法3,其選擇碼C為長度15和距離3的漢明碼。漢明碼具有極其簡單的編碼算法和大量的碼字,但是距離僅為3。對于所選的參數(shù),漢明碼具有2048個碼字。將該碼內(nèi)插到算法3中向我們提供可容易實現(xiàn)的分配策略,其中n=30并且每個網(wǎng)站被分配給至少15個CDN服務(wù)器。雖然不是最優(yōu)的,但是該碼產(chǎn)生了大量的碼字,這向我們提供了在需要時擴展至更多網(wǎng)站的靈活性。
我們選擇了這些碼來闡述分配中的折衷。最優(yōu)碼一般往往是非線性的且具有復(fù)雜的編碼算法。簡單直接的碼選擇如里德-所羅門碼向我們提供了n的略微次優(yōu)值。一旦固定了碼和n,則h的最優(yōu)值往往為大約n/2。在本例中使用的碼僅是很多可能選擇中的一些。
接下來,我們討論多種可能的分配策略,其處理不同的場景,即針對不同類別的參數(shù)m、h和d,并且枚舉它們能夠提供的保證。應(yīng)當理解,這里給出的情況表示一大堆(a whole host of)參數(shù),并且決不意味著是詳盡無遺漏的。表1匯總了使用在此給出的碼的站點分配策略。
表1 所考慮的第一情況是與n即CDN服務(wù)器數(shù)相比m即網(wǎng)站數(shù)小的情況。對于m小于(2n-2)的情況,我們可以使用哈德門碼子集,并且獲得非常良好的有關(guān)CDN服務(wù)器適應(yīng)力的保證。哈德門碼是(n,log(2n),n/2)線性碼,并且包含2n個碼字。當n是2的冪時,可以遞歸地構(gòu)造哈德門矩陣,其中除一行之外的其他所有行正好具有n/2。因此,采用該構(gòu)造,我們可以構(gòu)造均具有n/2的漢明權(quán)重的2n-2個二進制向量,使得最小成對距離為n/2。使用此作為分配向量集合,我們可以將每個站點分配給n/2個服務(wù)器,其中保證即使所有駐留另一個網(wǎng)站的服務(wù)器由于DDoS攻擊而變得不可用,站點也將總是由至少n/4個服務(wù)器服務(wù)。這樣,該分配保證網(wǎng)站將具有不大于50%的服務(wù)損失。因此,對于m的小值,我們可以獲得非常良好的有關(guān)CDN適應(yīng)力的保證。
除了參數(shù)優(yōu)化之外,我們還希望具有高效的分配向量構(gòu)造。非常通用的良好類別的具有大的最小距離和高效的碼字生成算法的碼是里德-所羅門碼。它們典型地為大的字母表(alphabet)產(chǎn)生最佳參數(shù),但是這里我們僅集中于這些碼的二進制型式。里德-所羅門碼是具有以下參數(shù)的線性碼對于滿足s≤r≤q的任何整數(shù)q、r和s,存在 里德-所羅門碼。通過仔細地選擇參數(shù)并且使用上述算法3的技術(shù),給定n,我們可以使用里德-所羅門碼來枚舉指數(shù)個數(shù)(2c1n)的具有至少為 的最小距離的碼字,其中c1和c2是常量。因此,可以保證,即使當其他網(wǎng)站受到攻擊而使得在其上托管它們的CDN服務(wù)器不工作時,沒有網(wǎng)站將遭受多于log(n)系數(shù)的服務(wù)下降。雖然log(n)系數(shù)服務(wù)下降的保證較高,但是如此獲得的分配算法是可容易實現(xiàn)的。
如同對于小網(wǎng)站數(shù)的情況產(chǎn)生良好分配策略的哈德門碼,存在很多其他可以被轉(zhuǎn)換成良好分配策略的碼。然而,在使用更高級的編碼方法的同時應(yīng)當注意,因為典型地,更高級的編碼技術(shù)具有復(fù)雜的編碼算法,并且可以為n的大值獲得最佳參數(shù)。一個這樣的產(chǎn)生良好參數(shù)的碼族是Justesen碼。將這些碼內(nèi)插到上述算法3中向我們提供了產(chǎn)生指數(shù)個數(shù)的分配向量的分配算法,其中每個網(wǎng)站被分配給n/2個CDN服務(wù)器,其中可以保證,即使另一個網(wǎng)站受到攻擊,不受攻擊的網(wǎng)站也將最多僅遭受(小)不變系數(shù)的服務(wù)損失。
到此為止,我們枚舉了一些基于為不同范圍的參數(shù)產(chǎn)生良好結(jié)果的示例碼的分配策略。實際上,所選的實際碼完全取決于參數(shù)n、m的實際值以及h和d的期望值。得到碼以轉(zhuǎn)換成分配向量的第一步驟是調(diào)查可行性。例如,給定n的特定值,可以使用標準表訪問關(guān)于d的各個值的碼字數(shù)上限的表,其中標準表列出n的小值的這些限制。這直接給出可以為d的不同值分配的最大網(wǎng)站數(shù)。類似地,對于n的較大值,可以使用關(guān)于任何碼的距離的一般上限,以消除給定n和m的情況下d的某些值。注意,僅因為特定的值選擇未被這些限制排除,并不意味著可以為給定參數(shù)得到碼。
到此為止,我們僅考慮了單一類別的服務(wù)即所有網(wǎng)站被同等對待的情況。只有當分配向量的漢明權(quán)重相同時,分配適應(yīng)力與碼距離之間的直接關(guān)系才是可能的。實際上,在構(gòu)建CDN的同時,我們可能需要多個級別的服務(wù)以提供分化級別的服務(wù)。
為了處理k個級別的服務(wù),分配問題變成得到k個二進制向量集合S1、...、Sk的問題,其中每個集合包含相同漢明權(quán)重的向量,使得對于屬于任意集合的任何兩個向量u和v,要求向量的漢明權(quán)重u∧v和v∧u盡可能地大。雖然要求與以前相同,但是等式漢明權(quán)重(uv)=2×漢明權(quán)重(u∧(v))=2×漢明權(quán)重(v∧(u))不再有效。換句話說,適應(yīng)力不再與距離直接相關(guān)。因此,分配算法可以不再直接使用碼的構(gòu)造。盡管非常簡短地概括,但仍然可以使用碼得到多個類別的服務(wù)的分配。首先,必須調(diào)整(tweak)碼字,使得碼的漢明距離產(chǎn)生關(guān)于想要的隔離屬性的保證。存在若干可能的方法來實現(xiàn),這里我們概述了非?;镜姆桨浮?br>
調(diào)整碼字以獲得良好隔離的第一基本方法如下將n長度碼字分成2位塊,并且通過使用其余三位以分別采用第3、4或5位中的1記錄二位塊的漢明權(quán)重(0,1或2),將每個2位塊編碼成5位塊。通過該調(diào)整,如果兩個2位塊x和y具有非零漢明距離,則向量x′∧y′和y′∧x′具有至少1的漢明權(quán)重,其中x’和y’是x和y的調(diào)整型式。因此,如果兩個n位向量u和v具有至少d的漢明距離,則其調(diào)整型式u’和v’具有至少d/2的隔離。這些調(diào)整形式具有長度5n/2。這是非常基本的將距離d碼字轉(zhuǎn)換成具有至少d/2隔離的二進制向量的方案。然而,放大是相當大的,并且碼長度顯著上升。存在很多其他通過擴展碼長度類似地將碼轉(zhuǎn)換成有適應(yīng)力分配的方案。例如,通過加倍距離d里德-所羅門碼的長度并且使用小調(diào)整,我們可以獲得提供d的隔離保證的二進制向量。
使用調(diào)整碼字以獲得提供良好隔離保證的向量的這樣方案,我們可以定義類似于受限情況的算法的分配策略。該方法是類似的選擇具有良好距離的碼C,并且調(diào)整以獲得具有良好隔離的二進制向量。選擇權(quán)重h1、...、hk的值,使得在具有這些漢明權(quán)重的調(diào)整碼中存在足夠的字。具有權(quán)重h1、...、hk的不同碼字集合為不同級別的服務(wù)定義分配向量。如同以前,實際的權(quán)重選擇取決于碼選擇。服務(wù)級別數(shù)即k值和在不同級別的服務(wù)中所需的分化量對漢明權(quán)重的選擇施加了附加的約束。然而,首先選擇良好碼并且將碼字轉(zhuǎn)換成分配向量的一般策略在此設(shè)置中也同等好地工作。
如上所述,基于散列的請求路由選擇算法根據(jù)將客戶端IP地址唯一地映射到區(qū)域內(nèi)的CDN服務(wù)器的散列函數(shù)來區(qū)分虛假分組與合法分組。然而,隨著站點分配算法的引入,請求路由選擇算法必須根據(jù)客戶端地址及其希望訪問的網(wǎng)站將客戶端映射到CDN服務(wù)器標識符。這可以通過為每個客戶網(wǎng)站引入散列函數(shù)來完成。不過,如果CDN服務(wù)器在接收到?jīng)]有表明正被請求的站點的分組(例如,TCP SYN分組)時不知道要應(yīng)用哪個散列函數(shù),則基于散列的請求路由選擇的有效性可能降低。
如果可以強制客戶端在發(fā)送第一SYN以建立連接時向CDN服務(wù)器通知正在請求哪個站點,則可以解決此問題。一個簡單的方法是在由請求路由器返回的IP地址中對站點信息進行編碼。具體地說,請求路由器以這樣的地址響應(yīng),其網(wǎng)絡(luò)部分包含CDN服務(wù)器的真實網(wǎng)絡(luò)地址,但是主機部分包含(站點,服務(wù)器標識)的編碼。
例如,如果對于站點A所要聯(lián)系的CDN服務(wù)器是192.19.1.13,則請求路由器可以以192.19.212.9響應(yīng),其中網(wǎng)絡(luò)地址192.19.0.0/16相同,但是該地址的主機部分212.9是有關(guān)站點A和服務(wù)器標識的編碼信息。當客戶端發(fā)送初始SYN分組時,該分組將經(jīng)過路由選擇被傳送到CDN服務(wù)器群集所駐留的192.19.0.0/16子網(wǎng)。在入口點,分組使用交換機(例如,快速NAT盒或?qū)?交換機)被交換到正確的服務(wù)器,其中交換機典型地執(zhí)行CDN服務(wù)器之間的負載均衡。在該方案中,交換機根據(jù)(站點,服務(wù)器標識)編碼將分組轉(zhuǎn)發(fā)到CDN服務(wù)器,并且該服務(wù)器可以計算散列函數(shù)以判定分組是否合法??蛇x地,CDSP可以將散列功能性安設(shè)(co-locate)在交換機處,以較早地濾出虛假分組。該方案是吸引人的,因為它對于客戶端是透明的,但是適用于在每個區(qū)域內(nèi)部署一些服務(wù)器群集的CDSP。
雖然在此參照附圖描述了本發(fā)明的示例性實施例,但是應(yīng)當理解,本發(fā)明不局限于這些具體實施例,并且本領(lǐng)域的技術(shù)人員可以實現(xiàn)各種其他改變和修改而不脫離本發(fā)明的范圍或精神。
權(quán)利要求
1.一種用于改善內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)對分布式拒絕服務(wù)攻擊的適應(yīng)力的方法,包括從客戶端接收源地址;驗證源地址在服務(wù)器處被接受;以及如果源地址在服務(wù)器處被接受,則向客戶端提供更高級別的服務(wù)。
2.如權(quán)利要求1所述的方法,其中驗證源地址在服務(wù)器處被接受包括以下步驟對源地址和站點地址執(zhí)行散列操作以獲得服務(wù)器標識;將服務(wù)器標識發(fā)送到源地址;在服務(wù)器處接收客戶端請求,其包括客戶端源地址和所請求的站點地址;對客戶端源地址和所請求的站點地址執(zhí)行散列操作以獲得第二服務(wù)器標識;以及確定第二服務(wù)器標識是否標識所聯(lián)系的服務(wù)器。
3.如權(quán)利要求1所述的方法,其中向客戶端提供更高級別的服務(wù)包括將客戶端請求插入到正常隊列中。
4.如權(quán)利要求1所述的方法,還包括以下步驟如果源地址在服務(wù)器處未被接受,則將客戶端請求插入到低優(yōu)先級隊列中。
5.如權(quán)利要求4所述的方法,其中丟棄低優(yōu)先級隊列中的請求。
6.如權(quán)利要求5所述的方法,其中所丟棄的請求在低優(yōu)先級隊列滿時被丟棄。
7.如權(quán)利要求1所述的方法,其中向客戶端提供更高級別的服務(wù)包括將客戶端請求插入到多級優(yōu)先級隊列的第i級別中,其中i是服務(wù)器處的客戶端優(yōu)先級級別。
8.如權(quán)利要求2所述的方法,其中根據(jù)客戶端用來聯(lián)系服務(wù)器的目的地址在服務(wù)器處確定所請求的站點地址。
9.如權(quán)利要求2所述的方法,其中在CDN中使用的散列函數(shù)是使用在路由器和服務(wù)器之間共享的秘密密鑰的帶密鑰散列函數(shù)。
10.如權(quán)利要求9所述的方法,其中周期性地更新散列函數(shù)。
11.如權(quán)利要求10所述的方法,其中在預(yù)定時間間隔期間,在驗證源地址時,認可舊和更新的散列函數(shù)。
12.一種用于在內(nèi)容分發(fā)網(wǎng)絡(luò)中將網(wǎng)站分配給服務(wù)器的方法,包括為多個網(wǎng)站的每一個提供分配向量,每個分配向量包括用于映射服務(wù)器到網(wǎng)站的分配的二進制向量;使用指定資源約束確定網(wǎng)站到服務(wù)器的最佳分配;以及配置分配向量以反映所確定的最佳分配。
13.如權(quán)利要求12所述的方法,其中確定網(wǎng)站到服務(wù)器的最佳分配包括為預(yù)定數(shù)目的服務(wù)器生成多個n位二進制向量,使得每個n位二進制向量具有相等的漢明權(quán)重,并且n位二進制向量之間的成對漢明距離為最大值。
14.如權(quán)利要求12所述的方法,其中確定網(wǎng)站到服務(wù)器的最佳分配包括為預(yù)定數(shù)目的服務(wù)器生成多個n位二進制向量,使得每個n位二進制向量具有相等的漢明權(quán)重,并且n位二進制向量之間的成對漢明距離為預(yù)定值。
15.一種可機讀程序存儲裝置,有形地包含可在機器上執(zhí)行的指令程序以執(zhí)行用于改善內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)對分布式拒絕服務(wù)攻擊的適應(yīng)力的方法步驟,這些方法步驟包括從客戶端接收源地址;驗證源地址在服務(wù)器處被接受;以及如果源地址在服務(wù)器處被接受,則向客戶端提供更高級別的服務(wù)。
全文摘要
提供了若干適于內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)(120)的制止機制。這些機制包括基于散列的請求路由選擇方案和站點分配方案?;谏⒘械恼埱舐酚蛇x擇方案提供區(qū)分合法請求與虛假請求的方法。使用該機制,當站點內(nèi)容從n個CDN高速緩存服務(wù)時,需要攻擊者產(chǎn)生O(n
文檔編號H04L29/06GK1669009SQ03816806
公開日2005年9月14日 申請日期2003年6月24日 優(yōu)先權(quán)日2002年7月29日
發(fā)明者蘇利史·N·查利, 鄭葆誠, 李康源, 薩姆比特·薩胡, 阿尼斯·A·沙克 申請人:國際商業(yè)機器公司