CDN 服務了網際網路的大部分場景,是網際網路業務背後重要的基礎元件。CDN 的存取異常有可能造成大面積的網際網路業務影響,如何應對存取異常是衡量 CDN 服務質量好壞的一個重要標準。比如某某電信大樓著火事件造成了某些地區的網路不可存取,阿里雲 CDN 通過技術手段,保障了客戶業務的正常運轉。這背後是如何做到的呢?
阿里雲 CDN 擁有 3 千個節點,支撐了全球的內容下載加速服務,可以看作是一個龐大分散式系統。節點眾多可以服務更廣範圍的客戶,但同時也帶來了系統的極大複雜性。
某個節點可能因為各種原因不能服務客戶,如運營商網路問題、節點裝置問題、某個服務問題或者某個回源鏈路問題等等。CDN 解決問題的一個常用方法是——快速節點逃逸,即快速發現有問題的節點,然後切換掉這個節點的業務。快速發現問題成為解決 CDN 問題的關鍵一環。
如何快速發現 CDN 問題?如前所述節點存取問題會有各種各樣的原因,那麼需要針對每個場景去設計不同的的監控方式,但這會是一個異常複雜的探測監控系統。
有沒有更高效的方式呢?分析可知,雖然出問題的場景多種多樣,但是大部分的場景都會體現為業務網路存取問題。所以通過網路探測的方式去發現邊緣雲節點問題是一條便捷、快速的方式,即通過邊緣網路感知快速發現問題。這裡說的邊緣網路感知,既包括基礎的 3、4 層基礎網路探測,如 ICMP ping、TCP Ping 等,也包括上層業務探測,http/https 等業務相關的探測。
通過網路探測發現節點問題,關鍵點是在有限的資源下如何更快地發現問題。在快的同時,也需要解決準和全的問題。
準和快通常是矛盾的兩方,一個網路波動可能持續 10 秒,隨後又恢復了正常,如果 10 秒就決策逃逸,那麼就容易陷入來回波動的場景。需要快和準之間尋找最佳的平衡點。
覆蓋全和資源有限又是一對矛盾,CDN 支撐全球幾十億的使用者,各種場景很難全覆蓋,或者需要極高的代價才能進行全面的覆蓋。不斷提升探測能力、擴大覆蓋範圍,也是邊緣網路感知的必然之路。
對於網路探測來說,有三個基本組成部分,探測源、探測目標以及探測鏈路。
探測源是任務的發起方,通過發起多種探測方式探測整個鏈路。
探測目標是被探測方,它既可能是邊緣雲自有資源,也可能是業務方目標,還可能是第三方資源,如電信運營商基礎資源。
探測鏈路隨著不同場景,覆蓋不同的鏈路,可能是基本的網路鏈路,也可能包含某個中間鏈路,還可能是一條端到端鏈路。針對不同鏈路進行探測資料分析,得到邊緣網路質量的關鍵資訊。
對於邊緣網路感知,通常放在一個完整的業務邏輯,包括任務規劃、網路探測、資料收集、資料處理,以及最終的業務消費。
CDN 存取的典型場景是,客戶存取就近的 CDN 節點,該節點對請求提供服務。當就近節點沒有快取內容的時候,就會向其他 CDN 節點請求或者向源站進行請求對應的資源。宏觀上看,CDN 節點間構建了一張龐大的內容傳輸的骨幹網。
骨幹網網路感知就是基於邊緣節點,針對節點間的網路質量進行感知,當出現問題及時進行逃逸。CDN 骨幹網承載節點間中的大量重要資料,類比人體血管的話,就是人體的各個主動脈。骨幹網存取出故障會出現全域性性的問題,影響全國、全省或者幾個地級市的業務。
阿里雲 CDN 基於邊緣雲 3K+節點,針對節點間的網路質量,構建了全球骨幹網網路感知系統。現在每分鐘執行著幾十億的探測,保障著 CDN 業務的平穩執行。
全鏈路感知由最後一公里探測、骨幹網探測和源站探測構成。其中最後一公里探測,是客戶經常關注的問題。骨幹網網路感知解決了 CDN 大範圍故障的問題,但是對於某個或某幾個節點的問題,仍廣泛存在。
隨著阿里雲 CDN 體量越來越大,小範圍的問題也會造成較大的影響。一種典型問題就是,客戶上報某某省存取有問題,但是 CDN 側卻不能發現。問題排查下來發現,最後一公里的鏈路影響了客戶的存取。而最後一公里探測能夠快速的發現客戶測問題。
如何構建最後一公里探測:專用的端探測裝置+節點反向網友探測。基於端探測裝置,阿里雲構建了與客戶存取一致的網路感知能力,以此模擬客戶的業務存取。端探測裝置資源有限,有可能覆蓋不全,與節點反向網友探測形成互補。
阿里雲基於骨幹網探測、端邊探測技術以及回源探測能力,構建了全球覆蓋的全鏈路網路感知系統。現在每分鐘執行上億次全鏈路探測,覆蓋了 CDN 節點全量 VIP 網路質量監控。
構建網路拓撲,並基於網路拓撲進行網路問題的分析。
國內運營商的網路是相對簡單的。三大運營商都是集團、省公司、市公司的結構,對應的網路也是分層的,國家骨幹網、省級骨幹網以及縣市的網路。隨著阿里雲海外業務的不斷拓展,網路感知也拓展到海外場景。
新場景新特點:運營商多,BGP IP 多,多線路宣告。什麼意思呢?在國內 A 到 B 的存取,通常規劃在同一個運營商,是一條規劃好的路線,A 從 A 省,到國家層次骨幹網,到 B 省,到 B 市,到 B。而在海外不同,A 到 B,有可能經歷多個運營商,比如可能是:A->運營商 C->運營商 D->運營商 B->B,也可能是 A->運營商 E->運營商 B->B。不同運營商會設定不同的策略,造成網路存取的複雜度更高。
新問題新思路:在國內探測方法基礎之上,增加多線路探測能力,構建海外網路拓撲圖,感知所有可達線路的質量。在多條可達鏈路中進行最優選擇,保障客戶業務的服務質量。
CDN 節點逃逸效果:針對不同場景,邊緣網路感知系統客製化了相應的策略。對於重點鏈路,採用高強度探測,最高做到毫秒級探測,能夠實現秒級逃逸;對於大規模問題節點,基於網際網路網路波動的特點,實現分鐘級逃逸;對於單 VIP 問題,實現十分鐘級逃逸。
邊緣網路感知一個重要場景是節點逃逸,這也會應用到到其他場景:
| 選路場景。全站加速、直播、組網等業務,都會基於網路狀態進行最優路徑的選擇。網路感知作為選路的基礎資訊,提供了實時及歷史資料,進行最優路徑的選擇。
| 節點質量分級場景。
| 協定棧優化場景等。
基於邊緣網路感知的質量大圖監控整個邊緣雲的執行狀態,既有實時的問題發現與問題解決,又有長週期的資源質量評價、業務質量評價、技術指標基準等。這些保障著邊緣雲的健康發展。
全鏈路探測覆蓋了大部分場景,但是還不能做到每個客戶的業務都能有對等覆蓋的監控。如何更有效的探測,是個值得思考的問題。把邊緣網路感知想象成人體的神經系統,它既要無處不在、處處感知,又要能做到重大影響快速感知、快速反應,小的影響有效過濾。