董丁維 ,王 晶 ,沈奇威
(1.北京郵電大學(xué)網(wǎng)絡(luò)與交換技術(shù)國家重點(diǎn)實(shí)驗(yàn)室 北京100876;2.東信北郵信息技術(shù)有限公司 北京100191)
隨著多媒體技術(shù)的發(fā)展和普及,網(wǎng)絡(luò)上信息的形式及應(yīng)用的類型日益豐富,人們對于Internet內(nèi)容的需求也在飛速增長。傳統(tǒng)的窄帶網(wǎng)絡(luò)及單一的Web頁面內(nèi)容已經(jīng)不能滿足人們的需要,網(wǎng)絡(luò)上用戶訪問速度慢、體驗(yàn)差正逐漸成為制約信息技術(shù)發(fā)展的障礙。很多人認(rèn)為網(wǎng)絡(luò)技術(shù)的不完善是Web性能差的主要原因,增加網(wǎng)絡(luò)帶寬、采用高速的路由器等方法就能加速Web訪問,但實(shí)際上帶寬不足并不是惟一原因。隨著寬帶網(wǎng)絡(luò)的普及,網(wǎng)絡(luò)的訪問速度在一定程度上得到了緩解,同時海量并發(fā)用戶密集訪問型的應(yīng)用(如網(wǎng)絡(luò)電視點(diǎn)播業(yè)務(wù))迅速發(fā)展,仍然會引起網(wǎng)絡(luò)擁塞,因此單純依賴網(wǎng)絡(luò)帶寬并不能完全解決穩(wěn)定性和服務(wù)質(zhì)量的問題,需要引入一種高效的內(nèi)容服務(wù)網(wǎng)絡(luò)——內(nèi)容分發(fā)網(wǎng)絡(luò)(content delivery network,CDN)[1]。
CDN的原理是通過在現(xiàn)有的Internet中加入一層新的網(wǎng)絡(luò)架構(gòu),將要分發(fā)的內(nèi)容發(fā)布到最接近用戶的網(wǎng)絡(luò)邊緣節(jié)點(diǎn) (edge point,EP),使用戶能就近獲得所需內(nèi)容,CDN一般分為兩級結(jié)構(gòu):由中心服務(wù)器節(jié)點(diǎn)(center point,CP)和EP構(gòu)成的第一級網(wǎng)絡(luò)結(jié)構(gòu),內(nèi)容發(fā)布的流程在這一級上進(jìn)行;第二級網(wǎng)絡(luò)是由EP和終端用戶之間構(gòu)成的P2P分發(fā)網(wǎng)絡(luò),主要用于內(nèi)容向最終用戶下發(fā)[2]。
內(nèi)容分發(fā)模型是指在CDN的第一級網(wǎng)絡(luò)中,通過構(gòu)建合理的拓?fù)浣Y(jié)構(gòu),采用有效的傳輸方式,同時結(jié)合聚類算法,讓EP更加合理地選擇鄰居節(jié)點(diǎn),采用片選策略,使EP快速地從鄰居節(jié)點(diǎn)處下載適當(dāng)?shù)膬?nèi)容,完成內(nèi)容在CP和EP之間的快速分發(fā)。不同的CDN根據(jù)其業(yè)務(wù)需求不同,往往采用不同的內(nèi)容分發(fā)模型。
實(shí)踐證明,CDN的出現(xiàn)很大程度上改善了Internet的網(wǎng)絡(luò)擁塞狀況,提高了用戶訪問內(nèi)容的響應(yīng)速度和質(zhì)量,特別是多媒體服務(wù)的質(zhì)量。在以往的工程應(yīng)用中,業(yè)務(wù)和內(nèi)容的差異十分明顯,有的業(yè)務(wù)要求塊式內(nèi)容最短時間到達(dá),因此CDN的分發(fā)模型側(cè)重于聚類算法的有效性;有的業(yè)務(wù)注重流式內(nèi)容的有序傳輸,因此要求分發(fā)模型的片選機(jī)制更加完善。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,兼有塊式和流式內(nèi)容海量訪問的業(yè)務(wù)會日漸增多,這就對內(nèi)容分發(fā)模型提出了新的要求。本文針對這一趨勢,設(shè)計了一種兼顧塊式和流式內(nèi)容分發(fā)的模型。
內(nèi)容分發(fā)模型利用組播技術(shù)將內(nèi)容從CP向多個EP快速高效地分發(fā)下去。組播技術(shù)是指單個信息發(fā)送者對應(yīng)多個接收者的一種網(wǎng)絡(luò)通信,現(xiàn)在常見的兩種技術(shù)是IP組播和應(yīng)用層組播。IP組播的主要思想是在Internet單播的框架上進(jìn)行擴(kuò)展,功能主要通過路由器實(shí)現(xiàn),網(wǎng)絡(luò)資源利用率較高,但存在很多問題,主要表現(xiàn)在:路由器需要為所有組播保存狀態(tài),擴(kuò)展性較差;對路由器的依賴過高,并不是所有路由器都支持IP組播,可行性差;IP組播中的算法設(shè)計復(fù)雜,維護(hù)開銷大[3]。應(yīng)用層組播技術(shù),保持了互聯(lián)網(wǎng)原有的簡單、不可靠、單播的轉(zhuǎn)發(fā)模型,由端系統(tǒng)實(shí)現(xiàn)組播轉(zhuǎn)發(fā)功能,同時克服了IP組播需要對路由器改造的不足,可以有效節(jié)省帶寬,提高分發(fā)效率[4]。
本文設(shè)計的內(nèi)容分發(fā)模型采用應(yīng)用層組播技術(shù)。
(1)小規(guī)模多源組播分發(fā)模型
代表是 End System Multicast和ALMI[5],針對小規(guī)模、多數(shù)據(jù)源的情況,典型應(yīng)用是視頻會議系統(tǒng)。
End System Multicast首先將組播組的成員組織成一個“網(wǎng)”(mesh),每個成員都維護(hù)所有組成員的列表,提高了組播組的可靠性;在mesh上以每個數(shù)據(jù)源為根各構(gòu)造一個生成樹(spanning tree),這樣可針對每個數(shù)據(jù)源進(jìn)行性能優(yōu)化。其缺點(diǎn)是系統(tǒng)開銷比較大,降低了系統(tǒng)的可擴(kuò)展性,適合小規(guī)模組播組的情況。ALMI在組播成員之間維護(hù)一個“最小生成樹”(minimum spanning tree,MST),減小了維護(hù)開銷,但從每個源出發(fā)傳輸開銷無法單獨(dú)優(yōu)化。生成樹的維護(hù)開銷限制了組播組的規(guī)模[6]。
(2)基于特定邏輯結(jié)構(gòu)的分發(fā)模型
代表是 Bayeux[7]和CAN(content-addressable network)[8],使用特殊的邏輯結(jié)構(gòu)對組播節(jié)點(diǎn)映射或編址,組播轉(zhuǎn)發(fā)可使用簡單的規(guī)則實(shí)現(xiàn),從而減少狀態(tài)維護(hù)開銷和轉(zhuǎn)發(fā)開銷,避免路由協(xié)議的使用。
Bayeux基于Tapestry[9],每個節(jié)點(diǎn)擁有全局惟一的ID,并維護(hù)一個鄰居表,這些鄰居節(jié)點(diǎn)的ID和本節(jié)點(diǎn)的ID在一定數(shù)量的位上相同。轉(zhuǎn)發(fā)中第n跳節(jié)點(diǎn)ID和目的節(jié)點(diǎn)ID至少有n位相同。Bayeux在Tapestry的基礎(chǔ)上將組播樹的狀態(tài)信息保存在“中間節(jié)點(diǎn)”上,其主要問題是會限制算法的可擴(kuò)展性。CAN組播是對CAN的擴(kuò)展。CAN將一個d維坐標(biāo)空間劃分成若干部分,每個節(jié)點(diǎn)擁有其中某部分。兩個直接相鄰部分的坐標(biāo)在d-1維上相同,而在另一維上不同。轉(zhuǎn)發(fā)報文時把報文發(fā)給鄰居中和目標(biāo)坐標(biāo)最接近的節(jié)點(diǎn)。CAN組播將組播組構(gòu)造為CAN,使用“洪泛”方法在CAN內(nèi)轉(zhuǎn)發(fā)報文,這樣可減少節(jié)點(diǎn)上維護(hù)的狀態(tài)信息,提高數(shù)據(jù)傳輸?shù)目煽啃?,但也會產(chǎn)生大量重復(fù)報文。存在的問題是,邏輯空間中節(jié)點(diǎn)間的關(guān)系并不能對應(yīng)實(shí)際網(wǎng)絡(luò)中的關(guān)系,得到的報文轉(zhuǎn)發(fā)路徑很有可能在性能方面存在問題。
(3)BitTorrent分發(fā)模型
BitTorrent可以被認(rèn)為是一種P2P的應(yīng)用層組播技術(shù),采用網(wǎng)狀拓?fù)洌宰钚』骄鶅?nèi)容分發(fā)時間為目標(biāo),同時采用激勵機(jī)制遏制節(jié)點(diǎn)自私行為,以保障內(nèi)容分發(fā)的效率[10]。BitTorrent一般被塊式內(nèi)容分發(fā)系統(tǒng)所采用。
傳統(tǒng)的分發(fā)模型由于采用固定的算法和結(jié)構(gòu),對特定類型(塊式或流式)的分發(fā)有較好的效果,但由于算法上的缺陷,很難同時支持塊式或者流式內(nèi)容的分發(fā)。本文設(shè)計的自適應(yīng)聚類片選分發(fā)模型,可以通過算法參數(shù)的動態(tài)調(diào)整,針對不同應(yīng)用、不同類型的分發(fā)內(nèi)容,提供分發(fā)功能,并達(dá)到良好的效果。
Hash表的鍵是一個存儲對象的標(biāo)識,值則為存儲對象的屬性信息。在本模型的CP中提供的HTS(Hash table service,Hash表的維護(hù)服務(wù)),用來保存和同步EP的狀態(tài)信息,使CP與EP之間的元數(shù)據(jù)保持一致并動態(tài)更新。HTS的接口設(shè)計見表1。
為了保證內(nèi)容的傳送效率,降低丟失后的重傳損耗,內(nèi)容分發(fā)時一般把內(nèi)容分成許多大小相同的分片,以內(nèi)容片作為傳送單位。當(dāng)一個EP接收一個完整內(nèi)容片之后,立即向用戶客戶端提供內(nèi)容下載,也可以在鄰居EP內(nèi)進(jìn)行內(nèi)容片互傳,充分利用有限帶寬;當(dāng)傳送過程中出現(xiàn)某個內(nèi)容片損壞或者丟失時,只需重傳單個內(nèi)容片而無需重傳所有內(nèi)容,節(jié)省了傳送資源,提高了效率。
表1 HTS接口
內(nèi)容分片的大小會影響到整個傳送過程的效率,所以分片的大小是一個很重要的參數(shù),有研究表明,分片大小為256 KB或者512 KB時,效率最高,BitTorrent也是采用了256 KB或者512 KB(版本不同參數(shù)不同)的分片大小。本設(shè)計采用256 KB的內(nèi)容分片,既不會因?yàn)榉制≡斐蒃P之間內(nèi)容片互傳時I/O開支過大,也避免了分片過大造成分片重傳時的耗時低效[11]。
網(wǎng)狀拓?fù)浣Y(jié)構(gòu)有效避免了單樹和多樹結(jié)構(gòu)的不足,也是分發(fā)系統(tǒng)中最常見的結(jié)構(gòu),既能支持塊式內(nèi)容(如光盤鏡像)的分發(fā),又能支持流式內(nèi)容(如流媒體)的分發(fā),可以針對不同的應(yīng)用需求,提供不同的內(nèi)容支持,并易于擴(kuò)展和優(yōu)化。由于每個節(jié)點(diǎn)在網(wǎng)狀拓?fù)浣Y(jié)構(gòu)中都有很多鄰居節(jié)點(diǎn),可靠性較好,可規(guī)避節(jié)點(diǎn)失效的風(fēng)險,保證連通性。網(wǎng)狀拓?fù)浣Y(jié)構(gòu)既支持Pull方式也支持Push方式的內(nèi)容分發(fā),但需要每個節(jié)點(diǎn)維護(hù)其鄰居節(jié)點(diǎn)的信息,有一定的系統(tǒng)開銷。
由于本分發(fā)模型重點(diǎn)在于聚類算法和動態(tài)調(diào)整片選策略,網(wǎng)狀結(jié)構(gòu)能靈活地適應(yīng)變化的網(wǎng)絡(luò)情況和應(yīng)用需求,因此采用網(wǎng)狀拓?fù)浣Y(jié)構(gòu)。
內(nèi)容分發(fā)模型中的聚類算法體現(xiàn)在如何為一個EP選擇一組其他的EP組成一個鄰居網(wǎng),目的是生成一個覆蓋網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。鄰居網(wǎng)的形成直接影響到分發(fā)的性能和網(wǎng)絡(luò)結(jié)構(gòu)的健壯性。
結(jié)合CP中的HTS功能,每個EP都被指定惟一的ID,某個時段內(nèi)EP會有一個描述信息,稱為EP元數(shù)據(jù),元數(shù)據(jù)中包含EP的IP地址和接收發(fā)送內(nèi)容的端口號以及EP所在自治域(電信、網(wǎng)通)的名稱,如某臺EP的ID為“EP1號”,元數(shù)據(jù)為“IP:210.1.70.231;Port:8088;AS:EB”。每個 EP都會調(diào)用CP的HTS,將自己的ID和元數(shù)據(jù)信息在CP注冊,在聚類時再次調(diào)用HTS查詢其他EP元數(shù)據(jù),尋找自己的鄰居節(jié)點(diǎn)。在開始發(fā)布流程時,CP會連接所有參與發(fā)布的EP,把其他EP的元數(shù)據(jù)信息通知EP,EP就獲得了其他參加發(fā)布的EP的地址和信息。
動態(tài)聚類算法的數(shù)學(xué)描述為:對某一個EP x而言,設(shè)參與發(fā)布的EP的總數(shù)為N,x的最大鄰居節(jié)點(diǎn)數(shù)為C,參與發(fā)布的其他EP中與x在同一個自治域的個數(shù)為M,如果用K表示鄰居節(jié)點(diǎn)中同一個自治域內(nèi)EP的個數(shù),則K應(yīng)該滿足: