一 常見通信方式
1.1 UniCastAnyCast
UniCast,即單播,指網絡中一個節點與另一個節點之間需要建立一個單獨的數據通道,從一個節點發出的信息只被一個節點收到,這種傳送方式稱為單播。即網絡中從源向目的地轉發單播流量的過程,IP地址與節點(主機)一一對應,單播流量地址唯一。每個節點必須分別對需要訪問的節點發送單獨的查詢,而被訪問節點必須向每個訪問節點發送所申請的數據包拷貝。
1.2 MultiCast
MultiCast,即多播,指網絡中一個節點發出的信息被多個節點(一組節點)接受。這種技術用於多媒體應用、多用戶交互(如聊天室)、軟件分發等,相比與傳統的UniCast可以大大提高效率。在子網內實現MultiCast較為簡單,跨越子網時需要Route 、Gateway等設備的支持。
1.3 BroadCast
BroadCast,即廣播,指網絡中一個節點發出的信息被網絡中的所有可能(通常的同子網下)的節點接受。網絡設備簡單地將它接收到的任何廣播報文副本轉發到除該報文到達的接口以外的每個接口。
二 什么是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地址(該地址即這一組主機的共享單播地址)的一種技術。當發送方發送報文給這個共享單播地址時,報文會根據路由協議路由到這一組主機中離發送方最近的一台,所以這個技術也可以用來做負載均衡。
三 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技術,無需要借助任何第三方負載均衡器,就可以輕松達到負載均衡的效果,同時還提供了冗余和高可靠性。
方案實施:
通過配置三個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具有很強的優勢。
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