董丁維 ,王 晶 ,沈奇威
(1.北京郵電大學網絡與交換技術國家重點實驗室 北京100876;2.東信北郵信息技術有限公司 北京100191)
隨著多媒體技術的發展和普及,網絡上信息的形式及應用的類型日益豐富,人們對于Internet內容的需求也在飛速增長。傳統的窄帶網絡及單一的Web頁面內容已經不能滿足人們的需要,網絡上用戶訪問速度慢、體驗差正逐漸成為制約信息技術發展的障礙。很多人認為網絡技術的不完善是Web性能差的主要原因,增加網絡帶寬、采用高速的路由器等方法就能加速Web訪問,但實際上帶寬不足并不是惟一原因。隨著寬帶網絡的普及,網絡的訪問速度在一定程度上得到了緩解,同時海量并發用戶密集訪問型的應用(如網絡電視點播業務)迅速發展,仍然會引起網絡擁塞,因此單純依賴網絡帶寬并不能完全解決穩定性和服務質量的問題,需要引入一種高效的內容服務網絡——內容分發網絡(content delivery network,CDN)[1]。
CDN的原理是通過在現有的Internet中加入一層新的網絡架構,將要分發的內容發布到最接近用戶的網絡邊緣節點 (edge point,EP),使用戶能就近獲得所需內容,CDN一般分為兩級結構:由中心服務器節點(center point,CP)和EP構成的第一級網絡結構,內容發布的流程在這一級上進行;第二級網絡是由EP和終端用戶之間構成的P2P分發網絡,主要用于內容向最終用戶下發[2]。
內容分發模型是指在CDN的第一級網絡中,通過構建合理的拓撲結構,采用有效的傳輸方式,同時結合聚類算法,讓EP更加合理地選擇鄰居節點,采用片選策略,使EP快速地從鄰居節點處下載適當的內容,完成內容在CP和EP之間的快速分發。不同的CDN根據其業務需求不同,往往采用不同的內容分發模型。
實踐證明,CDN的出現很大程度上改善了Internet的網絡擁塞狀況,提高了用戶訪問內容的響應速度和質量,特別是多媒體服務的質量。在以往的工程應用中,業務和內容的差異十分明顯,有的業務要求塊式內容最短時間到達,因此CDN的分發模型側重于聚類算法的有效性;有的業務注重流式內容的有序傳輸,因此要求分發模型的片選機制更加完善。隨著網絡技術的發展,兼有塊式和流式內容海量訪問的業務會日漸增多,這就對內容分發模型提出了新的要求。本文針對這一趨勢,設計了一種兼顧塊式和流式內容分發的模型。
內容分發模型利用組播技術將內容從CP向多個EP快速高效地分發下去。組播技術是指單個信息發送者對應多個接收者的一種網絡通信,現在常見的兩種技術是IP組播和應用層組播。IP組播的主要思想是在Internet單播的框架上進行擴展,功能主要通過路由器實現,網絡資源利用率較高,但存在很多問題,主要表現在:路由器需要為所有組播保存狀態,擴展性較差;對路由器的依賴過高,并不是所有路由器都支持IP組播,可行性差;IP組播中的算法設計復雜,維護開銷大[3]。應用層組播技術,保持了互聯網原有的簡單、不可靠、單播的轉發模型,由端系統實現組播轉發功能,同時克服了IP組播需要對路由器改造的不足,可以有效節省帶寬,提高分發效率[4]。
本文設計的內容分發模型采用應用層組播技術。
(1)小規模多源組播分發模型
代表是 End System Multicast和ALMI[5],針對小規模、多數據源的情況,典型應用是視頻會議系統。
End System Multicast首先將組播組的成員組織成一個“網”(mesh),每個成員都維護所有組成員的列表,提高了組播組的可靠性;在mesh上以每個數據源為根各構造一個生成樹(spanning tree),這樣可針對每個數據源進行性能優化。其缺點是系統開銷比較大,降低了系統的可擴展性,適合小規模組播組的情況。ALMI在組播成員之間維護一個“最小生成樹”(minimum spanning tree,MST),減小了維護開銷,但從每個源出發傳輸開銷無法單獨優化。生成樹的維護開銷限制了組播組的規模[6]。
(2)基于特定邏輯結構的分發模型
代表是 Bayeux[7]和CAN(content-addressable network)[8],使用特殊的邏輯結構對組播節點映射或編址,組播轉發可使用簡單的規則實現,從而減少狀態維護開銷和轉發開銷,避免路由協議的使用。
Bayeux基于Tapestry[9],每個節點擁有全局惟一的ID,并維護一個鄰居表,這些鄰居節點的ID和本節點的ID在一定數量的位上相同。轉發中第n跳節點ID和目的節點ID至少有n位相同。Bayeux在Tapestry的基礎上將組播樹的狀態信息保存在“中間節點”上,其主要問題是會限制算法的可擴展性。CAN組播是對CAN的擴展。CAN將一個d維坐標空間劃分成若干部分,每個節點擁有其中某部分。兩個直接相鄰部分的坐標在d-1維上相同,而在另一維上不同。轉發報文時把報文發給鄰居中和目標坐標最接近的節點。CAN組播將組播組構造為CAN,使用“洪泛”方法在CAN內轉發報文,這樣可減少節點上維護的狀態信息,提高數據傳輸的可靠性,但也會產生大量重復報文。存在的問題是,邏輯空間中節點間的關系并不能對應實際網絡中的關系,得到的報文轉發路徑很有可能在性能方面存在問題。
(3)BitTorrent分發模型
BitTorrent可以被認為是一種P2P的應用層組播技術,采用網狀拓撲,以最小化平均內容分發時間為目標,同時采用激勵機制遏制節點自私行為,以保障內容分發的效率[10]。BitTorrent一般被塊式內容分發系統所采用。
傳統的分發模型由于采用固定的算法和結構,對特定類型(塊式或流式)的分發有較好的效果,但由于算法上的缺陷,很難同時支持塊式或者流式內容的分發。本文設計的自適應聚類片選分發模型,可以通過算法參數的動態調整,針對不同應用、不同類型的分發內容,提供分發功能,并達到良好的效果。
Hash表的鍵是一個存儲對象的標識,值則為存儲對象的屬性信息。在本模型的CP中提供的HTS(Hash table service,Hash表的維護服務),用來保存和同步EP的狀態信息,使CP與EP之間的元數據保持一致并動態更新。HTS的接口設計見表1。
為了保證內容的傳送效率,降低丟失后的重傳損耗,內容分發時一般把內容分成許多大小相同的分片,以內容片作為傳送單位。當一個EP接收一個完整內容片之后,立即向用戶客戶端提供內容下載,也可以在鄰居EP內進行內容片互傳,充分利用有限帶寬;當傳送過程中出現某個內容片損壞或者丟失時,只需重傳單個內容片而無需重傳所有內容,節省了傳送資源,提高了效率。

表1 HTS接口
內容分片的大小會影響到整個傳送過程的效率,所以分片的大小是一個很重要的參數,有研究表明,分片大小為256 KB或者512 KB時,效率最高,BitTorrent也是采用了256 KB或者512 KB(版本不同參數不同)的分片大小。本設計采用256 KB的內容分片,既不會因為分片太小造成EP之間內容片互傳時I/O開支過大,也避免了分片過大造成分片重傳時的耗時低效[11]。
網狀拓撲結構有效避免了單樹和多樹結構的不足,也是分發系統中最常見的結構,既能支持塊式內容(如光盤鏡像)的分發,又能支持流式內容(如流媒體)的分發,可以針對不同的應用需求,提供不同的內容支持,并易于擴展和優化。由于每個節點在網狀拓撲結構中都有很多鄰居節點,可靠性較好,可規避節點失效的風險,保證連通性。網狀拓撲結構既支持Pull方式也支持Push方式的內容分發,但需要每個節點維護其鄰居節點的信息,有一定的系統開銷。
由于本分發模型重點在于聚類算法和動態調整片選策略,網狀結構能靈活地適應變化的網絡情況和應用需求,因此采用網狀拓撲結構。
內容分發模型中的聚類算法體現在如何為一個EP選擇一組其他的EP組成一個鄰居網,目的是生成一個覆蓋網絡的拓撲結構。鄰居網的形成直接影響到分發的性能和網絡結構的健壯性。
結合CP中的HTS功能,每個EP都被指定惟一的ID,某個時段內EP會有一個描述信息,稱為EP元數據,元數據中包含EP的IP地址和接收發送內容的端口號以及EP所在自治域(電信、網通)的名稱,如某臺EP的ID為“EP1號”,元數據為“IP:210.1.70.231;Port:8088;AS:EB”。每個 EP都會調用CP的HTS,將自己的ID和元數據信息在CP注冊,在聚類時再次調用HTS查詢其他EP元數據,尋找自己的鄰居節點。在開始發布流程時,CP會連接所有參與發布的EP,把其他EP的元數據信息通知EP,EP就獲得了其他參加發布的EP的地址和信息。
動態聚類算法的數學描述為:對某一個EP x而言,設參與發布的EP的總數為N,x的最大鄰居節點數為C,參與發布的其他EP中與x在同一個自治域的個數為M,如果用K表示鄰居節點中同一個自治域內EP的個數,則K應該滿足:
