5分鐘教會你泛播技術

Anycast over IPv4

Anycast的實現方式一般是在伺服器上起相同地址的環回口,透過等價路由的方式來實現,問題來了:

1。對網元需要怎樣的需求?

2。路由協議上是否只是簡單地宣告?

3。對不同協議(ospf,bgp)是否有差別?

4。路由收斂對服務的影響不吝賜教?

5分鐘教會你泛播技術

泛播技術

在以前的文章也有介紹,有興趣的讀者可以前去閱讀。

什麼是泛播Anycast?

先舉一個生活中的例子,最早某大型超市開在古北水城路上,只此一家,做為亞洲年銷售額第一的超市,常常被擠的水洩不通,連浦東的人也慕名遠道而來。沒多久時間,某大型超市就在全市各個區開了十多家,顧客通常去最近的一家,這樣客戶分流,就沒有那麼擁擠,使用者滿意度提高,銷售額也大幅增長。但如果附近的門店關門歇業,顧客則需要到稍遠的門店購物。

泛播也是採用以上的思路,將

相同的IP地址配置在不同地理位置的伺服器上

,每臺伺服器提供相同的服務,甚至資料都是同步的,伺服器服務範圍為以自己為原點,半徑在幾十到幾千公里不等的輻射圈,使用者

則依據路由表最近原則,選擇最靠近自己的伺服器來服務

,一旦附近的伺服器罷工,客戶的訪問流量會切換到稍遠一些的伺服器。

泛播,我們每天都在使用,但很多人沒有意識到,比如DNS域名解析,全球13個根域名伺服器幾乎都使用泛播,在各個大洲同時部署相同IP的伺服器,各個洲的使用者會自動選擇自己洲的伺服器,距離近,訪問延遲最小,使用者體驗會好得多。

但如果一個洲只有一臺伺服器,一旦掛了,會切換到其它洲的伺服器,如果希望切換永不發生,則需要在一個場點部署多臺伺服器,組成一個Cluster,不光可以負載均衡,還可以冗餘備份。

如果泛播IP面向全球使用者,IP地址需要透過IGP/BGP、或直接BGP通告出去,最終都會以一條BGP路由呈現在路由表裡,如果一個運營商泛播伺服器只給本運營商提供服務,則需要使用

BGP No_Export

屬性。

如果泛播面向企業網內使用者,使用IGP通告,使用者則認為Cost值小的,距離自己最近,所以需要把跨越遙遠距離(不同城市)的WAN鏈路Cost值修改的很巨大,比如1000,使得使用者會優先選擇相同城市的泛播伺服器。

如何防止流量黑洞?

一直沒有談一個問題,假定一個場點只有一臺泛播伺服器,突然崩潰了,而路由協議沒有意識到它掛了,依然把路由廣播出去,那附近的使用者依然會選擇它來服務,於是流量全部被丟

(流量黑洞)

,這不是我們希望看到的,最好伺服器上執行IGP/BGP,一旦掛了,其它

路由器能很快檢測到超時,然後撤銷路由通告

,附近的使用者就不會再訪問它。

但以上只能檢測到

鏈路失效(Down)

、伺服器宕機,但

無法檢測到服務程序停止工作

,所以最好還能有一種監控程序健康工作的機制,一旦程序停止工作,則停止泛播IP的通告。

環回口繫結泛播IP最大的好處

只要伺服器處於執行狀態,這個環回口就是UP狀態,如果有多個物理介面可以網路,則任何一個介面Down,都不妨礙泛播IP的可達,此外環回口可以配置/32位掩碼,不會有任何的浪費。

路由收斂對泛播的影響

至於路由收斂對泛播的影響,泛播IP與其它IP沒有本質區別,所以路由收斂期間可能會引起訪問中斷,一旦路由可達,訪問立馬恢復。

以上基本回答了題主的問題,至於泛播對網元的要求,泛播IP僅僅指把普通的IP配置在多個地方,所以它還是IP,對網元沒有特殊要求。

泛播IP不適應的場景

泛播適合DNS域名解析、線上影片CDN、入口網站,但卻不適合

Long-Lived TCP-Based 應用程式

,由於TCP狀態資訊不在泛播伺服器之間同步,一旦切換到其它伺服器,則連線狀態全部丟失。