1. 程式人生 > >002.AnyCast技術淺析

002.AnyCast技術淺析

一      常見通訊方式

1.1  UniCastAnyCast

UniCast,即單播,指網路中一個節點與另一個節點之間需要建立一個單獨的資料通道,從一個節點發出的資訊只被一個節點收到,這種傳送方式稱為單播。即網路中從源向目的地轉發單播流量的過程,IP地址與節點(主機)一一對應,單播流量地址唯一。每個節點必須分別對需要訪問的節點發送單獨的查詢,而被訪問節點必須向每個訪問節點發送所申請的資料包拷貝。 003

1.2  MultiCast

MultiCast,即多播,指網路中一個節點發出的資訊被多個節點(一組節點)接受。這種技術用於多媒體應用、多使用者互動(如聊天室)、軟體分發等,相比與傳統的UniCast可以大大提高效率。在子網內實現MultiCast較為簡單,跨越子網時需要Route 、Gateway等裝置的支援。
004

1.3  BroadCast

BroadCast,即廣播,指網路中一個節點發出的資訊被網路中的所有可能(通常的同子網下)的節點接受。網路裝置簡單地將它接收到的任何廣播報文副本轉發到除該報文到達的介面以外的每個介面。 005

二      什麼是BGP AnyCast

AnyCast,也稱任意播,或泛播,指IPV6協議中一個傳送方同最近的一組接收方之間的通訊。BGP AnyCast就是利用一個(或多個)AS號碼在不同的地區廣播相同的一個IP段。即不同地區若干個AS號廣播同一個IP(段)。 Any Cast IP擁有MultiCast和UniCast各自的部分特性:
從巨集觀上來說,AnyCast類似於MultiCast,同一種類型的資料流同時存在多個接收者。 而從微觀上來說,AnyCast又有著UniCast的唯一性。每一個單獨的IP會話都能夠找到唯一的源主機和目標主機(最終通訊雙方唯一),如下圖所示。 即在AnyCast環境下,同時存在多個有效的資料包接收端,但具體一個特定IP資料包而言,僅有一個接收端主機收到了此資料包。 AnyCast利用BGP的尋路原則,短的AS PATH會選成最優路徑(BGP尋路原則之一),從而優化了訪問速度。 即可多個不同伺服器使用了相同的IP地址(該地址即這一組主機的共享單播地址)的一種技術。當傳送方傳送報文給這個共享單播地址時,報文會根據路由協議路由到這一組主機中離傳送方最近的一臺,所以這個技術也可以用來做負載均衡。
006

三      AnyCast技術特點

AnyCast的定義是:當一個單播地址被分配到多於一個的介面上(即目的地址不是唯一)時,發到該介面的報文被網路路由到由路由協議度量的“最近”的目標介面(某個節點)上。 AnyCast允許源節點向一組目標節點中的一個節點發送資料報,而這個節點由路由系統選擇,對源節點透明。 同時,路由系統選擇“最近”的節點為源節點提供服務,從而在一定程度上為源節點提供了更好的服務也減輕了網路負載。AnyCast分佈的服務節點共享相同的IP地址,同時在IP層進行透明的服務定位,這使得各種網路服務特別是應用層服務具有更強的透明性,如DNS(DomainNameSystem,域名系統),使用者不需要特殊配置也不用關心訪問的是哪一臺DNS伺服器。 其次,路由系統選擇了“最近”的服務,縮短了服務響應的時間,同時減輕了網路負載。 最後,相同的服務在網路上冗餘分佈,路由系統可以提供機制選擇負載相對輕的頻寬相對高的路徑來轉發報文,這樣就給使用者帶來了兩個方面的好處:
  • 減弱了分散式拒絕服務攻擊(DDoS:DistributedDenialofService)對使用者帶來的影響。當AnyCast組中某一個成員或者幾個成員受到攻擊時,負責報文轉發的路由器可以根據各個組成員的響應時間來決定報文應該轉發到哪個成員上,而受到攻擊的成員由於沒有響應,所以報文就不會被轉發到此節點,同時,由於AnyCast提供的服務訪問透明性,組成員也相對較難受到DDoS攻擊。
  • 減弱了網路擁塞給使用者帶來的影響,當AnyCast的某些組成員處在擁塞的網段時,它的響應時間就較長,報文可以被轉發到響應較好的成員那裡,對於終端使用者而言是無感知的。

四      AnyCast應用場景

AnyCast主要應用於大範圍的DNS部署,CDN資料快取,資料中心等。 疑惑一:在AnyCast網路中多個主機用同一個IP,這豈不是IP地址衝突了? 解惑:首先,每一個節點主機處在不同的地理位置,相互之間不在同一個廣播域內。所以把所有主機配置成相同的IP地址並不會引起我們日常所見的IP地址衝突; 其次,在僅僅配置相同IP之外,還需要藉助BGP協議進行地址宣告,通過BGP,各個站點向Internet宣告相同的AnyCast IP地址。 疑惑二:具有多條到達目的的路徑,且具有相同Anycast IP地址的Prefix,資料包如何做到就近路由選址的呢?。 解惑:當用戶的DNS(資料)請求到達運營商的寬頻路由器以後,運營商的路由器會根據BGP的選路原則選擇到達目的的最優路徑。在使用者寬頻運營商和DNS伺服器Internet運營商相同的情況下,最終會以IGP metric為關鍵因素來決定哪個DNS伺服器給使用者提供服務。而IGP的 Metric某種程度上就是物理距離的代表,從而實現就近原則。

4.1  場景一:基於IP Anycast+BGP的DNS部署

背景:假設部署三個DNS伺服器站點,地點分別在北京、上海、廣州,且服務於全國的DNS解析。 常規方案:為了實現三個DNS伺服器負載均衡,通常會考慮到使用硬體負載均衡裝置,例如常見的F5負載均衡裝置等。 方案缺陷:
  • 網路流量瓶頸:所有的流量都需要先通過負載均衡裝置,而硬體裝置本身的吞吐量決定了整個網路環境的吞吐量。
  • 高昂的硬體成本:為了實現全國的流量負載均衡,需要極大吞吐量的硬體裝置,從而大大提高了部署成本。
AnyCast方案: 方案優點:通過AnyCast技術,無需要藉助任何第三方負載均衡器,就可以輕鬆達到負載均衡的效果,同時還提供了冗餘和高可靠性。 方案實施: 007 通過配置三個DNS站點的伺服器IP為相同IP,例如1.1.1.1/32。然後通過各個站點的BGP對網際網路宣告1.1.1.0/24的網段。 以上步驟完成以後,網際網路路由錶針對1.1.1.1/24會有三個不同的出口路由器,分別是北京,上海,廣州。 假設現有使用者都使用1.1.1.1作為DNS伺服器,依據就近原則,若使用者地域為東北,則會優先採用北京DNS伺服器進行解析。 同理,貴陽的寬頻路由器通過檢視BGP路由,發現1.1.1.1出口最優路由是在廣州,那麼貴陽使用者的DNS資料包將被髮送給廣州的DNS伺服器。而江南一帶的則是上海DNS伺服器負責提供解析服務。 故障容災: 若三臺DNS伺服器中某一臺出現故障,如廣東DNS服務宕機,BGP協議會立即停止通告此1.1.1.0/24的網段,Internet路由表將會只有北京和上海的DNS可供選擇。 此時原廣東DNS服務的使用者將再次根據“就近原則”選擇其他DNS伺服器,例如上海DNS,從而達到業務的平滑遷移和服務的高可用性。 總結結論: 全國使用者最終會根據距離DNS伺服器的遠近來判斷使用哪個DNS伺服器做域名解析; 從DNS角度來說,正因為不同的地理位置使用者會根據就近路由判斷,從而選擇不同的DNS伺服器,最終會使三臺DNS伺服器達到負載均衡的效果; 若其中某一個節點出現故障以後,業務會立即自動遷移到其他可用的節點上,從而避免網路服務故障。

4.2  場景二:防範DDOS攻擊

4.2.1    DDoS簡述

DoS攻擊是指故意的攻擊網路協議實現的缺陷或直接通過野蠻手段殘忍地耗盡被攻擊物件的資源,目的是讓目標計算機或網路無法提供正常的服務或資源訪問,使目標系統服務系統停止響應甚至崩潰。 DDoS(分散式拒絕服務)指藉助於客戶/伺服器技術,將多個計算機聯合起來作為攻擊平臺,同時對一個或多個目標發動DoS攻擊。 DDOS攻擊主要分為三類:流量型攻擊;連線型攻擊;特殊協議缺陷。 最常見的為流量型攻擊,當大規模異常流量湧入時,會佔用運營商核心MPLS網路頻寬,同時這種洪泛攻擊會給客戶網路造成短時間的癱瘓。 案例參考:以NTP協議為例,NTP協議基於C/S模式,客戶發起NTP時間查詢申請,伺服器響應NTP查詢。假設有成千上萬的殭屍主機紛紛偽造如下資料包並不斷連續傳送給全球NTP伺服器:
  • 偽造源地址:1.2.3.4               #此地址為真正需要攻擊的地址
  • 目標地址:全球各個NTP伺服器地址     #大批量提供響應的節點
當全球各地的NTP伺服器收到此查詢以後,它會把查詢結果傳送回給真正的被攻擊者1.2.3.4,此時IP地址為1.2.3.4的受害者收到全世界的NTP伺服器發過來的資料包時,其有限的頻寬鏈路就很容易產生擁塞並造成服務中斷。受到的DDoS攻擊流量=虛假資料包傳送數量x全世界NTP伺服器的數量。

4.2.2    AnyCast防範DDOS攻擊

DDOS攻擊最關鍵是需要把所有地理位置分散的小流量最終彙集為一個巨大的流量,從而發起攻擊。 在AnyCast環境下,由於多個地理位置不同的主機同時使用同一個IP地址。因此,DDOS攻擊流量在穿越運營商路由器時,路由器會根據地理位置遠近把資料包路由到距離源地址最近的受害者主機站點,從而間接又再次分散了整個DDOS流量。 如上案例,假設IP地址為1.2.3.4的受害者採用了AnyCast協議部署網路,其伺服器分佈在全國各地。當DDOS洪流攻擊時,不同的NTP伺服器根據路由選擇,把流量傳送到距離NTP伺服器最近的受害者伺服器上。最終,大流量的攻擊被逐步分解。

4.3  場景三:大型企業CDN部署

AnyCast在大型企業中也常用於CDN部署,採用了Anycast技術為使用者提供距離使用者最近的Cache伺服器,可大大提高了使用者的服務體驗。在全球建設了多個數據中心,憑藉於AnyCast的高冗餘性,任何一個數據中心出現網路、系統故障。均不會影響客戶體驗度,所有當地的客戶流量會自動路由到其他就近的資料中心。相對傳統企業網路面對網路節點故障的脆弱性,Anycast具有很強的優勢。 008

4.4  場景四:時延敏感度高的內容服務業務

針對https/tcp等對時延敏感的協議(涉及多次握手的協議),由於使用者位置流動,而資料中心相對固定,因此會隨著使用者的移動,體驗可能出現嚴重下降。 基於以上背景,可在全球有相關業務的地址位置部署小型資料中心,所有小型資料中心和總部資料中心保持長期穩定的TCP會話連線。當相對於總部的遠端使用者訪問服務時,TCP連線實際是傳送至使用者當地的小型資料中心,從而降低了訪問延時,提高了使用者體驗度。 在全球大規模部署多個節點時,為了確保使用者能就近訪問所在地的資料中心,可把所有小型資料中心的IP採用相同地址,通過BGP釋出至Internet。 當用戶訪問服務時,DNS解析會返回此小型資料中心的IP,然後使用者運營商會根據就近原則路由使用者資料到最近的小型資料中心,從而達到了上面所述的優化延遲的目的。

五      AnyCast總結

5.1  優點

  • AnyCast可以零成本實現負載均衡,同時對於客戶端而言是透明的,且無視流量大小;
  • AnyCast是非常有效的DDOS防禦措施,採用了逐層分解的思想;
  • 部署AnyCast可以獲得裝置的高冗餘性和可用性,即當任意目的節點異常時,可自動路由到就近目的節點;
  • AnyCast適用於無連線的UDP,以及有連線的TCP協議;
  • 基於AnyCast的特性——就近原則,很大程度上提升了客戶端的響應速度。

5.2  缺點

AnyCast嚴重依賴於BGP的選路原則,在整個Internet網路拓撲復雜的情況下,可能導致次優路由選擇。

參考:https://blog.csdn.net/enweitech/article/details/79778528