什么是 Anycast?
Anycast 是一種網(wǎng)絡(luò)尋址和路由方法,可以將傳入請求路由到各種不同的位置或“節(jié)點”。在 CDN 的上下文中,Anycast 通常會將傳入的流量路由到距離最近并且能夠有效處理請求的數(shù)據(jù)中心。選擇性路由使 Anycast 網(wǎng)絡(luò)能夠應(yīng)對高流量、網(wǎng)絡(luò)擁塞和 DDoS 攻擊。
Anycast 如何工作?
Anycast 網(wǎng)絡(luò)路由能夠跨多個數(shù)據(jù)中心路由傳入的連接請求。當(dāng)請求進(jìn)入與 Anycast 網(wǎng)絡(luò)關(guān)聯(lián)的單個 IP 地址時,網(wǎng)絡(luò)將根據(jù)某種優(yōu)先級排序方法分發(fā)數(shù)據(jù)。通常,通過選擇與請求方距離最短的數(shù)據(jù)中心來優(yōu)化選擇特定數(shù)據(jù)中心的選擇過程,從而縮短延遲。Anycast 的特征是許多關(guān)聯(lián)中的一對一,并且是 Internet 協(xié)議中使用的 5 種主要網(wǎng)絡(luò)協(xié)議方法之一。
為什么使用 Anycast 網(wǎng)絡(luò)?
如果同時向同一源站服務(wù)器發(fā)出許多請求,該服務(wù)器可能會不堪重負(fù),無法有效響應(yīng)其他傳入請求。在 Anycast 網(wǎng)絡(luò)中,主要流量不是由一臺源站服務(wù)器來承擔(dān),其負(fù)載可以分散到其他可用的數(shù)據(jù)中心,每個數(shù)據(jù)中心都具有能夠處理和響應(yīng)傳入請求的服務(wù)器。這種路由方法可以預(yù)防源站服務(wù)器擴(kuò)充容量,而且能避免向源站服務(wù)器請求內(nèi)容的客戶端遭遇服務(wù)中斷。
Anycast 和單播有什么區(qū)別?
大多數(shù) Internet 通過稱為“單播”的路由方案工作。在單播下,網(wǎng)絡(luò)上的每個節(jié)點都有一個唯一的 IP 地址。家庭和辦公室網(wǎng)絡(luò)使用單播;如果一臺計算機連接到無線網(wǎng)絡(luò)并收到一條消息,指出 IP 地址已被使用,這時發(fā)生了 IP 地址沖突,因為同一單播網(wǎng)絡(luò)上的另一臺計算機已在使用同一個 IP。在大多數(shù)情況下,這是不允許的。
如果 CDN 使用單播地址,流量會直接路由到特定的節(jié)點。當(dāng)網(wǎng)絡(luò)遇到異常流量時(例如在 DDoS 攻擊期間),這會造成漏洞。由于流量直接路由到特定的數(shù)據(jù)中心,該位置或其周圍的基礎(chǔ)設(shè)施可能會被流量所壓垮,進(jìn)而可能導(dǎo)致合法請求遭受拒絕服務(wù)。
使用 Anycast 意味著網(wǎng)絡(luò)可以極有彈性。由于流量會找到最佳路徑,因此整個數(shù)據(jù)中心脫機也沒有關(guān)系,流量會自動流向鄰近的數(shù)據(jù)中心。
Anycast 網(wǎng)絡(luò)如何緩解 DDoS 攻擊?
在其他 DDoS 緩解工具過濾掉一些攻擊流量后,Anycast 會將剩余的攻擊流量分散到多個數(shù)據(jù)中心,以防止任何一個位置被請求壓垮。如果 Anycast 網(wǎng)絡(luò)的容量大于攻擊流量,就可以有效緩解攻擊。在大多數(shù) DDoS 攻擊中,許多受損的“僵尸”或“機器人”計算機被用來組建成所謂的僵尸網(wǎng)絡(luò)。這些計算機可以在網(wǎng)絡(luò)上四處分散,產(chǎn)生大量流量,以致壓垮典型的單播連接機器。
正確實施 Anycast 的 CDN 可以擴(kuò)大接收網(wǎng)絡(luò)的表面積,使得來自分布式僵尸網(wǎng)絡(luò)的未過濾拒絕服務(wù)流量能被 CDN 的各個數(shù)據(jù)中心吸收掉。因此,隨著網(wǎng)絡(luò)規(guī)模和容量的不斷擴(kuò)大,針對使用 CDN 的任何人發(fā)起有效 DDoS 的難度也越來越高。
設(shè)置一個真正的 Anycast 網(wǎng)絡(luò)并不容易。正確實現(xiàn)需要 CDN 提供商維護(hù)自己的網(wǎng)絡(luò)硬件,建立與上游運營商的直接關(guān)系,并調(diào)優(yōu)他們的網(wǎng)絡(luò)路由,以確保流量不會在多個位置之間“交替”。這篇 Cloudflare 博客文章闡述了 Cloudflare 如何在沒有負(fù)載均衡器的情況下使用 Anycast 來進(jìn)行負(fù)載均衡。