雙十一剛剛過去,你的快遞都收到了嗎?好像曾經因流量激增,導緻各地中轉及收件點爆倉,快遞遲遲不到,延遲甚至長達半個月的新聞幾乎絕迹。當運輸速度恒定,中轉站點的多寡、分揀能力的強弱、是否丢包重發,決定了你的快遞能否如期到達。
那麼,如果 IM 消息是物,音視頻内容是物,那麼全球通信網就是負責傳輸的物流系統。在物理距離恒定的前提下,對于路由跳數、網絡帶寬、網絡質量和緩存隊列的設計和優化,決定了系統能否做到高質量、低延遲的傳輸。
這是融雲首席架構師李淼在 WICC 廣州“出海分論壇”中分享的話題引子。也因此,李淼關于《全球低延遲通信網絡的設計與優化》的話題分享變得更加具象。

RTC 與 IM 全球網絡的設計有所同,有所不同
融雲全球通信網絡分為 RTC 全球網絡和 IM 全球通信絡兩個部分,這是由于 RTC 和 IM 在傳輸中不同的加速特點所決定。

(RTC 網絡與 IM 網絡)
相同點在于:二者可在數據中心、節點等多項物理設施上進行複用,并且都必須保證高質量、低延遲的傳輸,從而為用戶帶來的場景體驗。
不同點在于:RTC 基于 UTP 協議運行,對于用戶體驗而言,允許有一定的丢包率,但對于延時要求苛刻;而 IM 基于 TCP 協議進行業務承載,在要求消息不能丢失的同時,需要消息的集中存儲,不僅能為用戶不在線時存儲離線消息,還要根據業務類型,進行曆史消息的存儲。
因此,融雲對于 RTC 的設計,是完全去中心化的分布式通信網絡。好處是在後續進行網絡優化時,可以随意增加媒體節點部署,而不影響用戶的任何使用體驗。
融雲 IM 的網絡設計采用的是将數據流量導入到數據中心的方式,已陸續在國内、北美和新加坡分别設立了數據中心,目前已疊代至基于Anycast 的一體化加速網。特點在于多協議支持、多數據中心支持,并且,基于 SmartDNS & Anycast的加速原理可以更高質量地保證在全球範圍内,節點分配的準确度。此外,IM 的許多全球鍊路優化工作,都可以在 RTC 上複用。
了解完以上架構,重點來了:融雲是如何進行延時優化的呢?這需要分别從 RTC 和 IM 兩個方向進行解析。
如何降低 RTC 的網絡延時

(RTC 通信過程)
對于 RTC 而言,能降低延時的辦法,就是提高 RTC 節點的覆蓋率,目的在于縮短用戶與邊緣節點的物理距離,也就意味着以更少的跳數完成連接。
融雲對于節點的選擇先是要保證大洲級的全覆蓋,再是對熱門區域進行重點覆蓋。所選節點基于一線 IaaS 廠商的公有雲服務搭建,每個節點之間都可通過專線互聯。不但可以提升鍊路傳輸的穩定性,還可以降低 RTC 節點的跳數,甚至可以做到 0 跳或者 1 跳。
優化的難點在于:如何讓用戶選擇到質量的節點。通常最直觀的辦法是通過智能 DNS 解析,但融雲經過驗證發現,準确度率隻在 80% 左右。為此,融雲在之後增加了 IP Anycast,它跟 DNS 原理完全不同,可直接通過 IP 的方式來進行分配,這個分配是運營商級的。
在鍊路探測方面,物理距離最近的IDC 未必就是質量的節點,即便采用 smart DNS+IP Anycast,準确度依然無法達到。為此,融雲增加了客戶端的探測能力,在用戶連接時下發 N 個地址。客戶端根據下發地址進行探測,擇優選擇鍊路連接。據日志分析,準确度達99.5% 以上。
同雲連接可以通過鍊路優化來保證,那麼跨雲又該怎麼辦呢?
融雲的做法是通過二級級聯,将數據中心之間的流量通過所采購的 SD-WAN 進行導入導出。這其中,級聯優化至關重要。
比如,一個北美用戶跟一個國内用戶通信,融雲會先在北美與香港之間進行專線互聯,然後香港再與國内的節點進行專線互聯。這種通過香港節點進行轉發的方案,能夠在保證質量的前提下,達到低延時的網絡優化效果。
但難點在于:故障降級。傳輸過程中,同雲的專線和SD-WAN都可能會出現故障。盡管故障的概率極低,但一旦故障發生,就必須有所取舍,為了保證用戶能夠正常接聽互通,隻能選擇将整個通訊鍊路進行降級。比如當專線出問題時,會通過二級級聯的方式,進行節點的跳轉,或者直接通過互聯網公網的方式進行數據的轉發。
此外,要降延就要有完善的網絡延時監控系統。融雲在客戶端建設了各種标準的 QoS 監測系統,包括數據實時上報和後台分析。
如何降低 IM 的網絡延時
IM 的網絡延時優化途徑主要集中于節點間數據轉發和證書計算前置兩個方面。
在節點數據的轉發方面:由于 IM 數據基于 TCP 協議傳輸,但 TCP 的擁塞控制和丢包重傳策略并不友好,因此融雲将部分 TCP 協議替換成 QUIC 協議,也就是說,從物理距離最遠的邊緣節點到路由節點數據的傳輸,融雲都通過 QUIC 進行了優化。

(IM 全球網絡的曆程)
通過 QUIC 優化,首先可以避免在邊緣點跟路由節點之間,TCP 的三次握手,直接将 TLS RTT 降為 0;其次是當網絡抖動時,QUIC 有更友好的丢包重傳策略,可以做到丢哪個包就補哪個包,而不會像 TCP 那樣,一旦丢包,後續所有的包都要進行重傳。内測表明,這一優化,使整個網絡延時降低了 15% 左右。
在證書計算前置方面:融雲采取将TLS 證書和 SSL 的證書,在邊緣節點上直接進行交換的方式。這樣一來,首先是減少了用戶數據到數據中心之間的整體的 RTT,可将 RTT直接降到 0。其次,IM 多有小包通訊的場景,例如一個信令包隻有 10-20個字節,通過在邊緣點上将數據包進行解密,明文傳遞到融雲的路由節點,再進行加密傳到數據中心,大大降低了兩個最遠物理距端點間的數據傳輸量。
需要說明的是,用戶完全無需擔心數據的安全問題。因為融雲的邊緣節點和路由節點全部由融雲控制,均為受信網絡。但如果是必須要在公網完成數據傳輸,融雲仍然會通過傳統 TLS 方式來進行數據鍊路加密。
當然,融雲對 IM 的優化策略遠不止于此,更多表現在客戶端及服務端日志的收集、zero copy、多路複用、IP 直連和 QoS 保證等多個方面。
比如對日志的收集,融雲每發一個 SDK 版本,都會增加新的日志埋點,用于分析業務、分析網絡等,以此進行一些定向或定點區域的優化。
在談及未來計劃時,李淼指出,融雲将不計成本,不遺餘力地繼續加大網絡建設力度,為開發者提供更加優質的服務。就研發而言,将持續提升軟件本身的處理能力,不斷豐富數據收集的手段,同時提升數據預估的準确性。
免責聲明:本文僅代表作者個人觀點,與每日科技網無關。其原創性以及文中陳述文字和内容未經本站證實,對本文以及其中全部或者部分内容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,并請自行核實相關内容。
本網站有部分内容均轉載自其它媒體,轉載目的在于傳遞更多信息,并不代表本網贊同其觀點和對其真實性負責,若因作品内容、知識産權、版權和其他問題,請及時提供相關證明等材料并與我們聯系,本網站将在規定時間内給予删除等相關處理.

