架構解析|網易自研新一代大規模分佈式傳輸網

溝通是人類永恆的追求,我們總是渴望突破時空的限制,拉近人與人之間的距離。

隨着 RTC、直播等技術的成熟,更實時、更高質量的通信變得越來越觸手可及。結合傳統的IM消息等,“融合通信”成了近年來的一個熱點領域,而云信則致力於打造業界“融合通信雲第一品牌“。想要達到這個目標,通信數據的傳輸質量是至關重要的,但在長距離、複雜網絡條件下保證傳輸質量一直都是一個難題。並且在追求更高質量的前提下,更低的成本以及更通用、更靈活的架構也是考察一個通信系統是否更優秀的重要指標。

在這些背景下,雲信自研的新一代大規模分佈式傳輸網絡——WE-CAN(Communications Acceleration Network)誕生了。它不僅可以大大提高端到端的通信質量,降低通信成本,並且能夠適用於多種應用場景。

WE-CAN 不但有遠大的目標、先進的架構設計以及優秀的工程實現,在雲信的實際線上業務中也已經得到了充分的落地和驗證:

  1. 每日傳輸千億條消息和數億分鐘媒體流數據;
  2. 在亞太的主要國家都有多個節點,印度、中東、歐洲、北美、北非等地區也都有節點覆蓋,中國國內每個省級單位都有大量邊緣節點,覆蓋全球 200+ 地區;
  3. 在國內音視頻傳輸中做到了超過 99.9% 的網內優質傳輸率,端到端優質傳輸率超過 99%;
  4. 跨國通信接近專線質量,全球範圍內延遲不超過 250 ms。

本文將從各個角度剖析 WE-CAN 的架構設計和關鍵的技術難點。

WE-CAN 的定義

WE-CAN(Communications Acceleration Network)是一個架設在公共互聯網上的,通過對各種資源智能調度來實現提高數據傳輸質量、降低數據傳輸成本目標的複雜網絡系統。

WE-CAN 的目標

作爲打造雲信“融合通信第一品牌”的基座,WE-CAN 的根本目標是建立一個能將任意數據從全球任一點穩定、快速、高效地發送到全球任何其他角落的通用傳輸網絡,且這個網絡是架設在公共互聯網之上的 —— 即無需藉助任何特殊的硬件設備或架設專線,而是通過軟件方案來達到目標。

對比同類產品,WE-CAN 的目標是:

  • Faster than CDN
  • Cheaper than SD-WAN
  • More versatile than RTN

WE-CAN 的優勢

做傳輸網,雲信不是第一家,也不會是最後一家,相比其他同類產品,WE-CAN 有其獨特的優勢:相較於 CDN 來說,WE-CAN 不但能做到內容的大規模、邊緣化分發,並且能做得更快;而對於 RTN 來說,WE-CAN 不但能支持流媒體 RTC 業務,也能支持其他多種傳輸模式。

  • WE-CAN 能對流媒體進行高到達、低延遲的傳輸,且 WE-CAN 能在媒體本身的各種 QoS 策略之外額外進行可選的、對業務透明的 ARQ、FEC 及其他冗餘策略,這些策略對 WE-CAN 其他所有傳輸模式也通用;
  • WE-CAN 也能對視頻直播進行超大規模分發,通過路徑級聯和複用消除房間人數瓶頸,降低帶寬成本,做到成本上接 近CDN,實時性上接近 RTC,更好地支持低延遲直播場景;
  • WE-CAN 還能對信令、IM或其他數據進行可靠傳輸。所謂“可靠傳輸”是指保證數據一定能到,並且保證數據投遞的順序性;
  • WE-CAN 的服務和協議擁有業界領先的解耦和分層設計,實現優雅,使用簡單,方式靈活。例如其對可靠傳輸協議進行了抽象封裝,對外提供了一個極簡接口,我們管它叫 MessageBus,MessageBus 的目標是提供一個全球部署的分佈式消息隊列服務。

WE-CAN 的效果

以下都是 WE-CAN 生產環境的線上真實數據,用雲信 RTC 部分頻道走 WE-CAN,部分頻道媒體服務器間直連(不走 WE-CAN)做 A/B 測試的對比結果。

下圖是過去 13 天的端到端優質傳輸率變化曲線,從圖中可以看出走 WE-CAN 的頻道其網絡傳輸到達率有明顯提高(我們的優質傳輸率指:所有統計窗口中到達率大於 95% 的比率):

端到端優質傳輸率

卡頓率對比

下圖是雲信 RTC 音頻大盤卡頓率在過去 13 天的變化曲線:

雲信 RTC 音頻卡頓率變化曲線

延遲對比

下圖給出了 24 小時的大盤延遲梯度統計:

24 小時大盤延遲梯度統計

WE-CAN 的架構

考慮將一個報文從 A 發到 B 的過程,站在 WE-CAN 的角度看,這個過程分爲3個階段:

  1. 從客戶端 A 到其接入的服務器 A';
  2. 從服務器 A' 到 B 的服務器 B';
  3. 從服務器 B' 最後到客戶端 B。

報文從 A 發到 B 過程

所以 WE-CAN 需要優化兩種不同的傳輸場景:

  1. S2S (Server to Server),就是網內傳輸;
  2. Last-mile,就是邊緣接入。

對這兩種傳輸場景的優化又都可以進一步分爲兩個維度——質量成本。所以網內傳輸和邊緣接入分別有不同的手段去優化質量和成本,並在這兩者間找到一個平衡。從這個角度出發,WE-CAN 的終極目標就是爲各種類型的數據傳輸需求都能夠提供高質量、低成本的邊緣接入和網內傳輸解決方案

網內傳輸

核心節點

WE-CAN 的網內傳輸部分核心系統主要分爲三種節點,接入節點(Edge)、中轉節點(Relay)、控制節點(Controller)。

核心節點

**接入節點 :**Edge 作爲接入節點,是 WE-CAN 在物理部署上離客戶端最近的部分。

中轉節點 :Relay 負責數據在網內的中轉,Relay 節點相互之間組成一張(近似於) Full-Mesh 的網絡:

中轉節點

  • 數據的中轉在遠距離傳輸,尤其是跨國傳輸時較爲多見,有時甚至會需要進行多跳中轉。如廣州機房的數據發往洛杉磯時 WE-CAN 可能會讓其先發往香港,然後再從香港發到洛杉磯,甚至可能會走廣州-香港-新加坡-洛杉磯的中轉路徑。實際的路徑由當時的網絡狀況決定;
  • 第二種需要中轉的情況是單線接入節點跨 ISP (網絡供應商)時,如江蘇移動接入節點上的數據要發往浙江電信節點,需通過江蘇三線(或浙江三線) Relay 進行中轉;
  • 第三種常見的需要中轉的情況是多線機房某條線發生故障或網絡抖動時,如杭州三線節點聯通口發生故障時,國內其他聯通機房可以將數據先發到就近的三線節點 Relay,再發到杭州三線的電信/移動口,這樣就可以使杭州三線節點聯通口故障時繼續提供服務。

除了少數預設規則(如兩節點跨ISP的情況下一定需要進行中轉)外,WE-CAN 中任意兩點間的數據是否需要中轉,中轉路徑如何都是根據當前網絡狀況動態進行路由和調配的。

控制節點 :Relay 互相之間會進行鏈路質量探測並向 Controller 上報。

控制節點

兩個 Relay 之間如果有直髮數據流量(不需要中轉),這些流量報文及其 Ack 會被用作統計鏈路質量;對於沒有直髮流量的 Relay-Relay 鏈路,WE-CAN 會按照特定模式構造人爲的探測流量,並用這些探測流量來統計鏈路質量;任意一對 Relay-Relay 間需不需要進行鏈路質量探測和統計,是由控制節點 Controller 來決定的。有些特定的鏈路是不做探測的,比如電信到聯通節點之間因爲一定會走中轉,所以鏈路探測沒有意義。所以 Controller 會對 Relay 的組網/探測策略根據預設配置進行計算並將其下發至 Relay。

質量優化

WE-CAN 通過中轉節點間實時智能路由來提高網內傳輸質量。

每個 WE-CAN 中轉節點都會定期互相之間進行質量探測,並將探測結果向控制節點彙報。控制節點在收到全網的質量探測信息後會計算出網絡全圖的最佳路由,然後將路由下發到各中轉節點,當兩個接入節點之間直連質量較差時他們之間的流量就會經由中轉節點進行轉發;而“路由”則決定了走哪些中轉節點,以及中轉節點間的串聯關係。

因爲每個中轉節點的承載能力是有限的,所以在路由時要避免中轉節點過載,當某中轉節點故障或網絡抖動惡化時其流量要均勻地分配到其他中轉節點,防止其他中轉節點被打爆造成網絡雪崩效應;且控制節點收集質量探測信息、計算路由下發是有周期性的,當某中轉節點出現網絡抖動時路由的切換和規避會有一定滯後性,所以 WE-CAN 的中轉節點會動態地根據當前的探測結果對路由表進行修正來快速響應網絡擁塞和節點故障。總而言之 WE-CAN 是通過各節點的緊密配合,由控制節點週期性對路由表的更新下發以及接入/中轉節點實時對路由表的修正來提高網內傳輸質量,降低丟包率和延遲的。

WE-CAN 在各節點之間還會做報文級別的 ARQ (超時重傳)和 FEC (丟包恢復)來提高傳輸質量,這種 ARQ 和 FEC 策略對傳輸內容是透明的,因爲這些策略會帶來額外的帶寬消耗,所以其打開與否和打開程度都是可選的。WE-CAN 也可以提供兩點間的多路冗餘傳輸,以多倍的傳輸帶寬來提高傳輸質量,這種策略也是可選的,並且 WE-CAN 會保證多條冗餘傳輸路徑間互不交疊。

成本優化

WE-CAN 通過公網傳輸以及邊緣節點下沉來降低網內傳輸成本。

WE-CAN 不依賴專線保證節點間傳輸質量,而是通過智能實時路由的手段,由普通的公網傳輸來降低帶寬成本;同時,WE-CAN 不使用昂貴的 BGP 節點或者是三線(多運營商)節點進行接入,也就是說接入節點一般情況下只部署在單線機房(特定運營商),中轉節點纔會主要部署在三線機房,這樣可以大幅降低帶寬成本;此外,WE-CAN 在計算路由時會考慮中轉節點的歷史峯值帶寬,避免在同一計費週期(月)內對不同中轉節點造成較高的峯值,在不影響路由質量的前提下將帶寬儘量穩定地分配到各中轉節點。WE-CAN 支持單個報文向多目的地投遞,多播報文的多個目的地接入節點和路徑上的中轉節點會組織成樹狀級聯結構,通過路徑複用來降低流量,在大頻道或低延遲直播等場景中,有很好的效果。

邊緣接入

接入節點

WE-CAN 接入節點在網內傳輸的角度來看是一個叫 Edge 的服務,但它其實是由一組服務組成的服務集羣(Edge Cluster):

接入節點

  • Gateway:負責接收並緩存數據,以及未來可能的各種協議轉換,使得下游服務可以進行熱插拔升級而不用擔心數據丟失;
  • Broker:負責 Topic 管理,MessageBus 可靠傳輸協議封裝等;
  • Driver:負責對數據進行各種處理,包括拆包、組包、重傳、排序、Session 管理等;
  • Edge:負責管理其他 Edge 以及 Relay 的狀態;
  • Monitor:負責整個 Edge Cluster 的監控,包括健康狀況、負載狀況等。同時會對節點間網內鏈路質量進行評估和上報;
  • ENS-Registrar:負責 Topic 的註冊和查詢,其中 ENS(Edge Name Service) 是 Edge Cluster 的一部分,Registrar 則是一箇中心化服務。

管控平臺

WE-CAN 管控平臺(Dashboard)包含一個 Web 頁面、一個配置數據庫和一組 API 接口,負責對 WE-CAN 各種資源的配置、監控與管理。

統一調度

統一調度系統通過管控平臺的配置數據庫獲得各邊緣節點的靜態配置信息,結合由各 Edge 通過 MessageBus 上報的動態負載信息,對邊緣節點按照預設規則和歷史數據反饋進行調度分配。

統一調度系統的長遠目標是對雲信的所有資源都能夠按照通用規則進行管理和分配。

質量優化

WE-CAN 通過接入節點的實時智能調度來提高邊緣接入質量,並在全球部署足夠多的接入節點供調度系統就近分配。

接入節點會將自己的實時負載信息和匯聚信息上報到調度系統。對於每一個接入請求,調度系統會爲其分配最優的同運營商接入節點,這樣可以保證接入質量,通常情況下,最優的接入節點是地理位置最近或者是同省/同國(未必是直線距離最近)的節點。

在挑選最優節點過程中調度系統會參考匯聚信息,如同一頻道的人會盡量分配在同一個服務器上,前提是這個服務器對每個用戶來說都比較“接近”。

對於小運營商用戶或者海外用戶(沒有相應的同運營商單線節點),調度系統會給其分配 BGP 節點。調度系統會參考歷史數據對分配結果進行修正,分爲正反饋修正、負反饋修正、靜態查表修正三種,小運營商用戶在通過修正後也可以接入到單線節點,以避開昂貴且效果未必很好的 BGP 節點。

成本優化

WE-CAN 通過對分配結果的匯聚和對接入節點的梯度選擇來降低接入成本。

分配匯聚不但可以提高傳輸質量(避免節點間的傳輸),也可以降低傳輸成本。離用戶最近/效果最好的接入節點可能成本較高,WE-CAN 通過對不同的業務模型有選擇地分配一些成本較低的節點來降低接入成本,如在低延遲直播場景中,通過犧牲一定的延遲,既可以提高分配匯聚程度,又可以挑選成本較低的節點。

分層解耦

WE-CAN 的傳輸協議是充分分層解耦的,首先與業務解耦,即可以支持各種數據和傳輸模式,然後 WE-CAN本身提供的各種功能和服務保障也被分爲三層來實現,這三層由不同的服務負責,各自使用不同的協議頭:

  • 應用層:目前應用層提供了 MessageBus 的協議封裝,包括 Topic 訂閱、消費等機制,未來會根據不同業務場景進行擴展。
  • 傳輸層 :傳輸層負責Session的管理,報文的排序、重傳、切片、重組等,WE-CAN 的傳輸層基於 UDP 協議自研了一套可靠傳輸機制。
  • 網絡層 :網絡層負責數據的路由、流量調度、擁塞控制,同時網絡層在各轉發節點間也會有逐跳的 ARQ、FEC 及其他冗餘策略以提高到達率、降低延遲。 由於 WE-CAN 對各層協議做了抽象和封裝,這樣既能使各層獨立工作互不影響,提高系統穩定性,又能促進功能的快速迭代,降低開發難度。 徹底的分層抽象也使 WE-CAN 能夠提供更靈活,更多元化的分級服務。比如網絡層在軟件定義的智能路由網絡之外還可以提供專線服務,甚至能在專線和公網之間靈活切換。又比如傳輸層能提供多種報文重傳策略和數據冗餘策略等。

結語

依託於“分層解耦,分級服務,路徑複用”等先進的設計理念,WE-CAN 成爲業內首個獨立於業務邏輯的傳輸基座。但是網易雲信的追求不止於此,作爲融合通信雲服務專家,網易雲信不僅在音視頻與即時通訊技術能力層面不斷打磨,更是致力於成爲全球智能路由網絡引領者。深入地在每一個方向上做到極致,網易雲信將以持續的技術創新賦能客戶的內生成長,實現價值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章