Why AnyCast


自己公司拿來做技術評審的文檔和大家分享一下,已刪除部分敏感內容

為什麼要做這件事

  • 公司基礎業務技術的第一塊磚,肯定要我來敲。

  • 同时支持 NS 接入。這樣可以随时切换到自建 NS。此外,支持 DNSSEC 也迫在眉睫。
  • 同时支持 IP 接入。我們需要看到 DNS 的 Anycast IPv4 和 IPv6 信息,这样可以安全地在根域名下使用第三方 DNS。對於業務的彈性配置擁有更多的資助選擇權。

    強推 AnyCast 原因

Anycast 最初是在 RFC1546 中提出並定義的,根據 RFC1546 的說明 IPv4 的任播地址不同於 IPv4 的單播地址,它建議從 IPv4 的地址空間分配出一塊獨立的地址空間作為任播地址空間。

Anycast 提供的是一種無狀態的、盡力而為的服務,目前對於 Anycast 的中文譯稱主要有任播、泛潘、選播等。任播的基本概念是從物理主機設備中分離出的邏輯服務標識符,任播地址可以根據服務類型來分配,使得網絡服務擔當一個邏輯主機的角色。

RFC1546 定義的這種任播沒有得到廣泛的使用,在 1998 年的 RFC2373 規定了 IPv6 尋址體系結構。在這個文檔中改進了任播的定義:發送到一個任播地址的報文被傳送到由該地址標識的接口之一(根據路由協議的距離量度最近的一個)。RFC2373 定義的 IPv6 的任播模型沒有限制路由選擇的下部結構,也沒有限制可使用該服務的上部協議。

RFC3513 (廢棄了 RFC 2373)中,進一步對任播進行了定義:任播地址被分配給兩個以上的接口 (一般指不同 IP 地址的節點) ,而發送到這個地址上的分組被路由到最近的接口。這裡最近可以是指路由器跳數、服務器負載、服務器吞吐量、客戶和服務器之間的往返時間 (RTT,round trip time)、鏈路的可用帶寬等特徵值 (metric) 決定。

在實際應用中,任播 (Anycast) 是一種網絡尋址和路由的策略。Anycast 採用將一個單播地址分配到處於 Internet 中多個不同物理位置的主機上,發送到這個主機的報文被網絡路由到路由協議度量的最近的目標主機上。

相关图片 例如:在 IP 網絡上通過一個 Anycast 地址標識一組提供特定服務的主機,同時服務訪問方並不關心提供服務的具體是哪一台主機(比如:DNS 或者鏡像服務),訪問該地址的報文可以被 IP 網絡路由到這一組目標中的任何一台主機上。

總結優勢

  1. 不同客戶端將訪問不同目的主機,此過程對客戶端透明,從而實現了目的主機的負載均衡。
  2. 當任意目的主機接入的網絡出現故障,導致該目的主機不可達時,客戶端請求可以在無人為干預的情況下自動被路由到目前可達的最近目的主機,在一定程度上為目標主機提供了冗余性。
  3. 當目的主機受到 DoS 攻擊而無法到達時,由於網絡不可到達,客戶端請求也將路由到其它目的主機上。而在 DDoS 攻擊時,由於任播的負載均衡效應,避免了單台目的主機承受所有攻擊流量,因此在一定程度上為目的主機提高了安全性。
  4. 因為任播利用路由度量到最近的目的主機,提高了客戶端響應速度。

總結劣勢

  1. 使用任播中的共享單播地址不能作為客戶端發起請求,因為請求的響應不一定能返回到發起的任播單播地址。但是在我們的實際業務需求中並不依賴於此。因此,目前任播僅適合一些特定的上層協議。從目前的實際應用來看,任播最廣泛的應用是 DNS 的部署。

面臨的潛在問題

  • 域名解析複雜,遷移時容易發生遺漏問題
  • 域名緩存時間長,關鍵業務可能受到影響

應對措施

  • 批量導出域名解析紀錄後仔細核對,敏捷遷移
  • 再遷移前關閉 CDN 模式,使用直連解析狀態,待確定直連生效後進行 AnyCast 解析,可以確保無論解析到源站 IP 還是 AnyCast IP 均可以訪問業務
  • 堤防惡意攻擊

Updated

閱讀時間: Less than 1 min