[黃潤懷 海錦霞 梁潔]
隨著8k/VR等大視頻業(yè)務(wù)的快速發(fā)展,以及雙千兆網(wǎng)絡(luò)的大力推廣,用戶對視頻服務(wù)質(zhì)量要求越來越高,要求大碼率、零卡頓、低時延等極致體驗。部分互聯(lián)網(wǎng)內(nèi)容提供商也要求在本地網(wǎng)提供服務(wù),實現(xiàn)用戶訪問時快速提供服務(wù)。這就要求CDN運營商能夠?qū)DN節(jié)點盡量下沉至靠近用戶的地方,實現(xiàn)低時延高質(zhì)量的CDN服務(wù)。
CDN服務(wù)節(jié)點下沉之后該如何實現(xiàn)流量的精準(zhǔn)調(diào)度是本文考慮的重點。中國電信目前以省為單位集中部署Local DNS,由LDNS代理用戶請求進行遞歸查詢,這導(dǎo)致了依賴于DNS調(diào)度的準(zhǔn)確度只能局限到以省為單位,難以滿足大視頻業(yè)務(wù)低時延的服務(wù)質(zhì)量要求。
本文接下來將闡述如何基于EDNS優(yōu)化以及CDN調(diào)度系統(tǒng)(GSLB)的優(yōu)化來實現(xiàn)CDN的精準(zhǔn)調(diào)度。
現(xiàn)有的互聯(lián)網(wǎng)CDN的調(diào)度方式大部分是基于傳統(tǒng)DNS的調(diào)度,CDN業(yè)務(wù)的調(diào)度流程可歸納分為兩大部分,一是DNS解析流程,二是CDN資源調(diào)度流程,具體流程如圖1所示。
圖1 基于傳統(tǒng)DNS的CDN調(diào)度流程
終端向LDNS發(fā)起DNS解析請求,LDNS根據(jù)用戶請求的域名層層遞歸至DNS授權(quán)服務(wù)器,獲取該域名的CNAME記錄之后,LDNS根據(jù)CNAME之后的域名再次進行遞歸查詢,最終獲取CDN GSLB的地址并請求域名解析。
CDN GSLB根據(jù)LDNS的地址,進行查詢和調(diào)度策略匹配,可定位用戶屬于某個省份,若該省份僅部署了一個節(jié)點,即向LDNS返回該節(jié)點IP,若該省份在多個地市均部署了CDN服務(wù)節(jié)點,則GSLB會對這些CDN節(jié)點進行輪詢,隨機分配一個節(jié)點,返回該節(jié)點的IP給LDNS。終端獲取到最終的CDN服務(wù)節(jié)點的IP,向該節(jié)點發(fā)起服務(wù)請求。
現(xiàn)有的調(diào)度機制存在問題如下:
CDN GSLB對用戶位置的判斷依據(jù)是從DNS請求中獲取LocalDNS遞歸地址,而LocalDNS以省為單位部署,所以GSLB能判斷用戶是屬于某個省份,但無法實現(xiàn)地市級別的精準(zhǔn)調(diào)度,會出現(xiàn)跨地市的CDN服務(wù),網(wǎng)絡(luò)時延大且不穩(wěn)定,用戶體驗較差。
為解決CDN精確調(diào)度的問題,Google等互聯(lián)網(wǎng)公司提出了edns-client-subnet擴展協(xié)議(ECS協(xié)議),通過附加字段傳遞原始用戶網(wǎng)絡(luò)地址給權(quán)威DNS ,從而權(quán)威DNS可根據(jù)原始用戶源地址信息實現(xiàn)精準(zhǔn)調(diào)度。目前IETF已發(fā)布相應(yīng)的ECS協(xié)議RFC,為ECS的應(yīng)用打下良好基礎(chǔ)。
EDNS的基本原理如圖2所示。
圖2 EDNS基本原理
EDNS是DNS的逐跳擴展,因此,EDNS應(yīng)用于每一對服務(wù)器之間,即遞歸解析器和權(quán)威服務(wù)器之間。遞歸解析器向權(quán)威服務(wù)器發(fā)送攜帶ECS選項的查詢請求,ECS選項中包含了source prefix-length,并將用戶地址截取至該長度,用0補齊。權(quán)威服務(wù)器返回的DNS響應(yīng)包含scope-prefix-length,遞歸解析器根據(jù)source prefixlength、scope-prefix-length以及最大緩存長度的關(guān)系確定存儲地址的長度,并將響應(yīng)標(biāo)記為對該范圍內(nèi)的所有地址有效。
RFC定義的EDNS0存在以下問題:
按照RFC7871定義,每個應(yīng)答報文只能含有一個緩存生效地址段。同一個域名每個用
戶地址段至少需要一個緩存條目,對于一個省級ISP,用戶IPv4源地址條目數(shù)一般能夠達到幾千條(以C類計算),這樣一個域名在緩存中的條目數(shù)量大量膨脹。
根據(jù)ECS遞歸算法,來自不同用戶地址段的同一個域名查詢請求都需要進行遞歸查詢。這樣遞歸查詢量大幅上升,資源消耗大幅上升。
為了解決上述EDNS以及現(xiàn)有CDN調(diào)度系統(tǒng)存在的問題,本文提出了一種基于ENDS優(yōu)化的CDN精準(zhǔn)調(diào)度方案。具體方案實現(xiàn)如圖3所示。
圖3 CDN精準(zhǔn)調(diào)度方案
首先,LDNS升級支持ECS協(xié)議,并且支持根據(jù)業(yè)務(wù)模型規(guī)劃調(diào)度單元將用戶歸類,為每個調(diào)度單元分配唯一映射地址,該映射地址為LDNS與CDN GSLB協(xié)商好的的地址。這樣,在用戶請求域名解析時,LDNS根據(jù)這個用戶所在的調(diào)度單元,查詢到該調(diào)度單元對應(yīng)的映射地址,這時,LDNS不再攜帶用戶原始IP,改為攜帶映射地址和CDN GSLB通信。
同時,LDNS支持多視頻緩存,根據(jù)調(diào)度單元增設(shè)唯一對應(yīng)的多分區(qū)緩存,普通域名繼續(xù)使用公共分區(qū),通過緩存分區(qū)可大幅度提升緩存命中率,減少遞歸流量。
雖然LDNS的遞歸可以同時兼容EDNS遞歸和普通遞歸 ,但EDNS遞歸比普通遞歸更加消耗資源,建議部署單獨的EDNS遞歸,集中控制EDNS域名的遞歸或轉(zhuǎn)發(fā)策略,實現(xiàn)遞歸解析分流,保障LDNS原有性能不降低。
CDN調(diào)度系統(tǒng)(GSLB)升級支持ECS協(xié)議,周期性探測各CDN節(jié)點狀態(tài),在收到LDNS的域名解析請求時,根據(jù)LDNS攜帶的ECS信息,優(yōu)化調(diào)度算法,結(jié)合權(quán)重、節(jié)點服務(wù)質(zhì)量、熱點等綜合考慮,返回最優(yōu)的CDN節(jié)點IP,實現(xiàn)用戶的精準(zhǔn)調(diào)度。GSLB初期集中式部署,需要采集全國CDN節(jié)點的狀態(tài)數(shù)據(jù),當(dāng)業(yè)務(wù)流量越來越大,CDN節(jié)點增多時,GSLB性能壓力增大,建議采用分布式部署方式,提升GSLB性能和效率,實現(xiàn)用戶請求的快速精準(zhǔn)調(diào)度。
LDNS在收到CDN GSLB響應(yīng)報文時,忽略掉報文里面的scope-prefix-length,根據(jù)source prefix-length存儲地址的長度,并緩存對應(yīng)的“映射地址段-CDN節(jié)點IP”條目
為了驗證方案的可行性,項目團隊部署了實驗室測試環(huán)境,包含了現(xiàn)網(wǎng)DNS設(shè)備以及中國電信云公司CDN設(shè)備,主要測試廠商DNS系統(tǒng)和云公司的權(quán)威服務(wù)器之間的ECS功能測試,解析性能,以及安全防護能力。測試結(jié)果表明,現(xiàn)網(wǎng)主流廠商的DNS設(shè)備可以通過軟件升級支持ECS功能,能夠支持多視圖緩存,以及ECS遞歸,云公司的GSLB系統(tǒng)可以通過升級支持ECS協(xié)議,實現(xiàn)將用戶精準(zhǔn)地調(diào)度至最靠近且服務(wù)質(zhì)量最優(yōu)的CDN節(jié)點提供服務(wù),驗證了上述章節(jié)的CDN精準(zhǔn)調(diào)度方案的技術(shù)可行性。
進行了實驗室測試驗證之后,項目組在寧波進行了現(xiàn)網(wǎng)試點,從試運行采集到的數(shù)據(jù)來看(如圖4所示),采用本方案實現(xiàn)精準(zhǔn)調(diào)度后,寧波的用戶會被精準(zhǔn)調(diào)度至寧波的CDN節(jié)點,而未采用精準(zhǔn)調(diào)度方案之前,寧波的用戶會被隨機調(diào)度至杭州或者 溫州的CDN節(jié)點提供服務(wù)。從用戶體驗提升較為明顯,首包到達時延下降了60%,內(nèi)容下載時間下降了80%以上。
圖4 CDN精準(zhǔn)調(diào)度前后服務(wù)質(zhì)量對比
本文提出了基于EDNS優(yōu)化的CDN精準(zhǔn)調(diào)度方案,并進行了實驗室驗證和現(xiàn)網(wǎng)試點驗證,通過對LDNS升級支持ECS,并優(yōu)化支持多視圖劃分,地址映射以及分區(qū)緩存等功能,同時,對CDN調(diào)度系統(tǒng)優(yōu)化支持智能調(diào)度,最終實現(xiàn)CDN的精準(zhǔn)調(diào)度,滿足大視頻業(yè)務(wù)及互聯(lián)網(wǎng)業(yè)務(wù)的服務(wù)質(zhì)量要求,大大提升了用戶體驗,同時也為運營商對互聯(lián)網(wǎng)業(yè)務(wù)的精細(xì)化運營奠定了基礎(chǔ)。