關于UCloud直播云,所有的技術細節都在這里了(一)
網絡視頻直播存在已有很長一段時間,隨著移動上下行帶寬提升及資費的下調,視頻直播被賦予了更多娛樂和社交的屬性,人們享受隨時隨地進行直播和觀看,主播不滿足于單向的直播,觀眾則更渴望互動,直播的打開時間和延遲變成了影響產品功能發展重要指標。那么,問題來了: 如何實現低延遲、秒開的直播?
影響延時的因素
先來看看視頻直播的5個關鍵的流程:錄制->編碼->網絡傳輸->解碼->播放,每個環節對于直播的延遲都會產生不同程度的影響。這里重點分析移動設備的情況。受限于技術的成熟度、硬件環境等,針對移動場景簡單總結出直播延遲優化的4個點:網絡、協議、編解碼、移動終端,并一一解密UCloud直播云實現低延遲、秒開的技術細節。
接入網絡優化技術
1)全局負載均衡-就近接入
實現就近接入的技術比較廣為人知,就是CDN即Content Delivery Network (內容分發網絡)。CDN包含兩大核心技術:負載均衡和分發網絡,隨著10多年的演進,對負載均衡和分發的實現方式已多種多樣,分發網絡的構建策略通常是經過日積月累的總結出一套最合適的分發路由,并且也不是一成不變,需時刻關注調整,動態運營。這里重點介紹下CDN的負載均衡技術。
負載均衡是如何實現讓用戶就進訪問的呢?比較普遍的實現方式:通過用戶使用的DNS服務器來判斷客戶端所在的網絡位置,從而返回對應的服務IP。如下圖示例:
廣東電信用戶IP:1.1.1.1 需要看一個直播http://www.ucloud.cn/helloworld.flv ,實現就近訪問的過程是:
1>用戶向配置的DNS服務器1.1.1.0(通常是運營商指定,也稱local DNS,后面簡稱Ldns)發起www.ucloud.cn 的查詢;
2> Ldns 上沒有該域名的記錄,則往***即Root NS上發起查詢;
3>Root NS返回告知Ldns該域名的權威解析記錄在UCloud NS上;
4>Ldns 向UCloud NS發起查詢;
5>UCloud NS 向UCloud GSLB服務發起查詢,GSLB發現 Ldns1.1.1.0是屬于廣東電信;
6>返回廣東電信的就近節節點IP1.1.1.2;
7>返回1.1.1.2給Ldns;
8>返回給用戶1.1.1.2,用戶到1.1.1.2上去獲取直播內容。
鏈路很長,但是每個Ldns上都會對查詢過的域名做合理的緩存,下一個廣東電信的用戶再來查詢的時候就可以直接返回1.1.1.2。架構并不復雜,關鍵點是如何知道Ldns是位于廣東電信,這就涉及一個IP地址庫。有開源地址庫,也有商業地址庫,可以按需求采購即可,一般一年1萬左右。
這里不難看出來,調度的準確度是完全依賴用戶配置的Ldns,而這些Ldns大多數是省級別的,即GLSB只知道用戶是廣東電信,但是常常分不出來是廣東廣州電信,還是廣東深圳電信。 HTTPDNS就是實現更精準的調度一種方式:
1>用戶1.1.1.1通過HTTP協議直接向UCloud NS請求直播域名www.ucloud.cn;
2>UCloud NS發現用戶IP1.1.1.1屬于廣東深圳電信;
3>返回廣東深圳電信節點1.1.1.11給UCloud NS;
4>返回給用戶。
HTTPDNS的好處顯而易見:一可精準獲得用戶端的IP,有效避免用戶配錯Ldns(有時是網絡中心配錯DNS)的情況,可更精準定位用戶所在網絡位置。二可避免DNS解析劫持。
2)BGP中轉架構-最短傳輸路徑
BGP即Border Gateway Protocol (邊界網關協議),業內簡稱BGP。為什么BGP中轉架構對直播加速和分發如此重要?不得不提國內復雜的網絡狀況,較廣為人知的是“南電信北聯通”的寬帶用戶分布。那一個簡單的問題,電信主播發起了直播,聯通的用戶想看怎么辦呢? 從結構上講,肯定是有有限個電信聯通兩個運營商的交匯點,相當于信息橋梁。 這就會帶來兩個問題:1、路程要繞遠,網絡延遲高且不穩定;2、高峰期擁堵,導致直播流卡頓。
BGP的技術原理往簡單的說就是允許同一IP在不同網絡中廣播不同的路由信息,效果就是同一個IP,當電信用戶來訪問時走電信網內的路由,聯通用戶來訪問時走的聯通的路由。所以BGP技術對跨運營商的訪問帶來了巨大的便利,特別是直播場景。不同于傳統的文件緩存場景,一個圖片哪怕***次是跨了遙遠的距離從源站獲取后,本地網絡進行緩存,后面的訪問都走本地網絡。直播加速是流式的,并且當要做到低延遲的時候,中間的緩存要盡可能少。 BGP相當于給跨網的用戶就近搭建了一坐橋梁,不必繞遠路,延時和穩定性都大大提高了。
技術原理部分介紹完了,那么多直播延遲影響有多少改善呢?首先這里的就近,不一定是物理距離近,不考慮瞬時負載情況下,更多是指測速延時***的機房。在國內一般而言相同的接入運營商(電信、聯通、移動)并且地理位置最近的情況網絡延遲***,小于15ms??缡⊥\營商的網絡延遲25~50ms,跨運營商情況更復雜一些,在50~100ms??偨Y起來,直播當中每個包的延時可以縮短100ms,由于網絡的疊加效果,反射到上層是秒級的延遲縮減。
以上就是直播云實現接入網絡優化的技術細節,關于直播協議選擇、內容緩存與傳輸策略優化、終端優化,請參閱接下來發布的其他部分。