自研海外PCDN系统技术架构与演进
Photo by?Nick Wehrli?from?Pexels
本文來自小溪流科技首席架構師張道遠在LiveVideoStackCon 2019深圳站上的演講,演講內容主要涉及PCDN海外復雜環境中如何提高穿透率和分享率的同時,保證弱網的用戶體驗和內容版權的保護中采用的技術,架構演進及實際落地效果展示。
?
文 / 張道遠
整理 / LiveVideoStack
?
大家好,我是來自深圳市小溪流科技有限公司的系統架構師張道遠,主要負責公司PCDN的系統架構設計。我們公司主要是做方案集成商,包括CDN和PCDN這塊,一直耕耘于海外。
?
今天我帶來的主要內容是自研PCDN系統技術架構與演進。演講主要從四個方面進行分享。如何提高穿透率和分享率,在海外弱網環境下的實踐,另外就是安全體系建設的一些方面。
?
1. PCDN提高穿透率
?
1.1 NAT的分類
提到穿透率,避免不了提到NAT。快速給大家講一下NAT的分類。
(1)完全錐形
完全錐形的特性是只要知道網關上映射的端口和IP,在任何一個地方都可以通過內網IP訪問。
?
(2)限制錐形
限制錐形的映射方式與完全錐形相似,但在安全性上有所不同。它拒絕“不請自來”的IP訪問。
?
?
(3)端口限制錐形
它的映射方式和限制錐形一樣,但它對IP和端口都做了訪問限制。如圖,對于同一個IP,通過另外的端口訪問時接收不到數據的。同一個端口,沒有主動發出請求的IP也是收不到數據包的。
?
(4)對稱型
不同的請求、目的、地址有不同的映射。同時它與限制錐形NAT映射相似,但它拒絕主動請求的IP及端口的訪問。如上圖,對S1、S2發出請求,S1雖然知道出口IP,但是主動發出請求并不會被接收。
?
實際中NAT類型還有很多種,例如公網IP、UDP Block等。
?
1.2 全球家庭級別網關NAT類型分布
?
我們對國外各類型網關NAT類型做了初步研究。上圖是我們搜集的數據。我們發現端口限型和對稱型分別占比75%和16%,兩者占比非常高達91%,這意味著打通它們兩者之間是我們面臨的主要難題,也是提高穿透率的關鍵所在。
?
1.3 穿透率提高的關鍵
由于端口限制類型會拒絕接收主動請求的端口和IP的訪問數據,對稱型對新的訪問數據會發起新的映射方式,所以正常情況下兩者之間無法打洞。
?
對稱型和對稱型之間的都使用新的映射關系,而且對稱型會拒絕主動請求的IP和端口訪問,所以正常情況下,兩者之間打洞是不成功的。我們用了以下方法成功打洞。
?
1.4 如何提高對稱型的穿透率?
?
?
(1)生日算法
生日算法來源于生日悖論,應用到打洞場景上主要使用數據集有64511個端口(1024以下的端口不用)。據我們實驗,假如設定對撞碰出端口的成功率是70%嘗試的次數大概是三百到四百次。
(2)UPNP
UPNP是即插即用的通用縮寫,主要用于智能設備的相互發現和通訊。我們在打洞時主要使用它將內網IP直接映射到出口IP當作公網服務模式使用。
(3)中繼模式。
例如我有A、B、C三個節點,A和B之間可以打通,B和C之間可以打通,但是A和C之間由于NAT映射關系無法打通。當A和C通訊時可以將B作為中繼點。中繼節點具有服務器和客戶端的特性,我們在選取中繼節點時,最好選取帶寬優質、能用內網或者UPNP模式開啟的節點。
(4)MDNS
MDNS是多播協議。沒有傳統DNS的情況下,用于內部節點的相互發現和通訊。在打洞過程中可不通過服務器使內網節點相互發現通訊。它使用UDP端口協議,組播特性端口為5353。
?
1.5 全球UPNP開啟NAT分布情況
?
?
我們搜集分析數據驗證了這些方法的有效性。我們對全球UPNP開啟NAT分布情況總結發現,端口映射型數據會增高,對稱型基本不變,其它類型也基本不變。將樣本總結分析發現,端口限制型的數據下降了,對稱型增加了。我們關鍵要看的是第四個圖。我們發現有46%的節點可直接以公共服務的方式提供P2P分享,保守估計P2P之間組網穿透率可達90%以上。我個人覺得穿透率的提高并不會直接帶動分享率的提高。
?
2.??PCDN提高分享率
?
?
接下來我會給大家介紹P2P節點組網模型、調度策略、跨區域或國際策略以及一些落地案例。
?
2.1 P2P組網模型
?
P2P常見組網模型有以下幾種:
(1)樹形組網
樹形組網以頂層節點獲取資源,常見的就是一分二、二分四這種模式,節點帶寬夠的話也可以一分多。但是我們可以很明顯的看到它的缺點。隨著樹形高度增加,底層的累計延時會越來越大,如果父節點離線會導致子節點處于孤兒狀態。同時,最底層的節點是一個完全消費者模型,無法進行數據分享。
(2)網狀組網
網狀模型中每個節點都是被動請求,只要節點的數據量級客觀,數據肯定可以從周圍節點請求得到。但是如果用于低延時,高可變的情況(比如直播),此模型就不是很合適。同時,此模型中消息互動是高頻率互動的狀態。
(3)分布式星際組網
分布式星級組網是去中心化,它的優勢是每個節點狀態容易同步一致,上線下線對網絡影響狀態小。但是它的缺點是消息冗余和消息延時,不適用于直播場景。這個模型稍作改動可作為點播類、文件分享比較合適;
?
2.2 調度策略
?
按照不同的國家,我們會按照區域調度,調度原則就是同城同網。對于跨區域調度,我們遵循同網劃分,以節點間RTT值越小等級越高來區分。跨國調度以距離、RTT帶寬為條件區分。混合調度結合了以上三種調度方式。
?
?
上圖是我們自己的P2P組網模型。我們采用了樹形組網,但是我們規避優化了傳統樹形模型的缺點。為防止延時過高,我們在調度時會嚴格控制樹形高度。為彌補父節點掉線造成孤兒狀態的不足,我們使系統中每個節點都首先從CDN拉流。如果出現父節點掉線的情況,它立即向服務器補片,同時觸發新的組網。對于純粹的消費者模型,我們目前有兩種方案,其中一種是節點可以做中繼服務。第二種方式我們目前還在規劃,我們希望將樹形組網與網狀組網融合。這種方案目前還沒有落地。
?
我們會在每個區域形成一張區域層級圖,用mdns方式將同一內網用戶串聯起來,通過打洞調度將同區域同ISP節點組網,這樣形成了ISP多根樹模型。需要跨國際節點通過RTT等級區分并結合國際時差提供調度服務。通過這種方式,實現了不同國家,不同區域的層級拓撲圖。
?
3. 全球弱網環境實踐
?
?
不同國家的網絡有很多復雜的情況,弱網環境是常見的情況。國際上有幾種協議來處理弱網環境問題。
(1)Google QUIC一款出名的谷歌定制的基于UDP的低延時互聯網傳輸層協議。
(2)SRT是Haivision新一代低延遲開源視頻協議,同樣基于UDP協議。
(3)KCP是一個快速可靠的協議,能以犧牲 TCP10%-20%的帶寬為代價,換取平均延遲30%-40%的降低 ,且最大延遲降低三倍的傳輸效果。
(4)BGTP是我們自研發的基于GOP分片的流媒體傳輸協議。
?
3.1 各協議實際流媒體傳輸測試
我們在方案選擇前做了測試。我們把QUIC、SRT、KCP在不丟包的情況下使用恒定碼率進行了對比測試。我們發現QUIC、KCP的帶寬有略微增幅,SRT的帶寬大約漲了10%。
?
在30%丟包率效果下,網絡抖動越大,HTTP使用帶寬的效率會越低。從應用側看,QUIC和KCP都能流暢的播放觀看,但是帶寬基本漲了一倍。我們實驗時沒有得到SRT的相關數據,也許是方法不對,實驗時傳輸了正確的數據,由于設置了低延時,客戶端收到的數據會導致視頻出現馬賽克、花屏等情況。我們的應用場景是要保證丟包率在30%左右時能穩定傳輸,同時在帶寬成本考量范圍內,所以以上方案都沒有納入選擇范圍。根據以往的經驗,我們基于現有協議做了深度改造,形成了BGTP傳輸協議。
?
3.2 BGTP抗抖動
BGTP抗抖動沒有特別復雜的技術。我們按照TS流通過封閉式GOP切片,每個GOP切片分組分包編號。客戶端認證成功之后,服務器端主動推流,這個過程中如果發現丟包,由客戶端請求丟包重傳,同時GOP時延參數配置在服務器端主控。如果客戶端GOP接收不完整,客戶端會主動丟棄GOP,避免出現馬賽克、花屏情況。
BGTP優點:
低延時,首屏塊。它沒有http那樣復雜的握手過程,一個包接收到就可以完成認證推流過程。
能在低于30%丟包情況下穩定傳輸。
配置靈活適應不同場景。
BGTP缺點:
協議目前只適合封閉式GOP的TS流,不適用于通用數據傳輸。
同比環境下比HTTP占用更多資源。
如上圖是我們BGTP和HTTP落地效果對比。我們從兩個維度收集了用戶端數據。第一張圖是卡頓率。用戶最直觀的就是卡頓。我們可以看出,對于弱網用戶BGTP比HTTP減少了超過10%的卡頓率。第二張圖表示的是首屏加載速度。BGTP對弱網用戶首屏加載速度提升了大約2%。
?
4. PCDN安全體系
?
我們通過三個問題解決PCDN安全體系建設問題。
?
4.1 OTT流媒體業務的數字版權如何保護?
說起OTT數字版權,首先想到業內有名的DRM標準,例如微軟PLAY READY、谷歌WIDEVINE以及VERIMATRIX。我們提煉了VERIMATRIX的一些機制,做了自己的版權保護體系。我們的版權保護體系有兩個重要點,首先是節點認證體系,另外就是節點間傳輸加密。
?
4.2 PEER節點接入組網時候如何保證安全性?
(1)節點認證體系
節點認證體系分了三大板塊完成。
終端管理系統,主要是管控OTT類產品,簡單來講是在生產過程燒錄license+key。
終端認證系統,主要負責在用戶端甄別OTT類產品,校驗license+key的合法性。
認證、授權、計算系統和我們的實際業務相關。
(2)節點間傳輸機密體系
用戶要接入我們系統,首先要通過TMS+TAS+AAA認證,之后會在后端獲取有時效性TOKEN,我們的TRACKER調度只調度有時效合法的TOKEN。組網之后,節點間直接協商流媒體加密。重要的是要保證每個節點間的密鑰和加密算法都不一樣。
?
4.3 惡意請求及非法流量如何拒之門外?
?
?
從近年來互聯網事件來看,單靠自己的安全體系是不夠的。我們在安全問題上,不僅完善自己的安全體系,還考慮利用各大廠商的防御策略。在業務層,我們使用了特定的TOKEN機制結合各大廠商的防護規則來保護我們的CND和業務體型。DDOS流量通過P2P節點網絡分流,減輕核心CDN系統壓力。這個目前還沒有做完,只做了小區域的嘗試。
只做防范不做預警是被動的。我們對P2P節點做了實時預警系統。具體做法是我們在tracker集群上部署了一套節點監控預警系統,每個tracker收到的數據包都會在系統日志留下記錄,日志數據清洗時,將生成IP、協議類型、geo位置信息等數據源作為事件,以可視化方式展現出來。如圖是我們其中一臺機器上的實時監控圖像。破解外面的協議、使用其它協議訪問服務器都會預警。后臺對不是P2P協議的數據按照不同級別,分級別預警。
?
5. 自研PCDN技術總結
?
P2P打洞成功率和組網調度策略決定分享率高低;
海外網絡環境極度復雜,弱網是首要解決的難題;
數字版權資源保護是海外推廣落地敲門磚;
海外商業環境不同于國內,安全預警和安全防護需要并行。
?
?
我們對于PCND技術走向有一些自己的想法。我們雖然選擇了現有協議,但是面對復雜的環境,需要各大CDN廠商的傳輸協議融合。另外,對于安全問題,我們所做的遠遠不夠,我們在安全領域還有很長的路要走。第三點海外OTT盒子加速節點已經出現,近幾年又提出云計算、物計算的相關概念,但是服務是一切的前提,這也是以后要考慮的范疇。
LiveVideoStackCon 2020?講師招募
2020年LiveVideoStackCon將持續迭代,歡迎將你的技術實踐、踩坑與填坑經歷、技術與商業創業的思考分享出來,獨樂不如眾樂。請將個人資料和話題信息郵件到?speaker@livevideostack.com?或點擊【閱讀原文】了解成為LiveVideoStackCon講師的權益與義務,我們會在48小時內回復。
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的自研海外PCDN系统技术架构与演进的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 特别策划:视频会议协作平台的机会与技术挑
- 下一篇: 基于Open WebRTC Toolki