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