特約通訊員 黃俏丹

命名數據網絡(named data network,NDN)項目在2010年獲得美國國家科學基金會(National Science Foundation,NSF)未來互聯網設計項目(Future Internet Design,FIND) 近 800萬美元的支持,蘊含了未來互聯網變革性研究,共有12個美國高校聯合參加,主要由美國加州大學洛杉磯分校(University of California at LosAngeles,UCLA)的張麗霞教授和帕洛阿爾托研究中心(Palo Alto Research Center,PARC)的范.雅各布森(Van Jacobson)主持。內容中心網絡(Content Centric Network,CCN)是帕洛阿爾托研究中心基于NDN項目的一個開源實現。
隨著互聯網的發展,人們對數據內容本身的需求越來越強烈。2008年夏天,谷歌的搜索引擎達到了一個新的里程碑,即在網絡上收錄了超過1萬億個唯一網址(URLs),2011年超過了3萬億。從2009年至2014年,全球IP網絡流量將增加4倍,2014年的增長幅度將達到每月64艾字節。相對而言,2009年的增長幅度大約在每月15艾字節左右。在這種背景下,傳統的以主機為中心的網絡體系結構已經難以滿足現在互聯網的發展,雖然CDN(content delivery network) 和 P2P(peer-to-peer)技術的提出和改進在一定程度上緩解了內容需求膨脹的壓力,但這些技術有各自的缺點(見表1),比如復雜度高、代價高等,互聯網迫切需要高擴展性和高性價比的內容分發解決方案。
與傳統基于IP的網絡體系不同,命名數據網絡是一種全新的以內容和信息為中心的網絡體系。NDN項目旨在通過建立全新的以內容為中心的網絡構架體系,爭取顛覆主宰互聯網半個世紀的TCP/IP協議。項目不考慮內容存儲所在的物理位置,直接建立命名數據網絡體系。NDN項目主要致力于研究路由可擴展性、快速轉發、信任模型、網絡安全、內容和隱私保護以及新的支持設計的基礎通信原理等關鍵問題。
NDN從協議構架設計上徹底地解決了TCP/IP設計上的不適應性,保留了細腰沙漏模型,主要不同點體現在基于數據本身的安全機制和多樣的路由策略選擇(strategy)上。NDN直接對數據包進行加密保護,加密是端到端的,對網絡層是基本透明的,由應用程序或者庫處理,不像TCP/IP依賴對傳輸端點和傳輸管道的保護,路由安全性得到顯著提高。具體表現在:第一,所有數據包括路由消息都需要簽名,防止被他人偽造或篡改;第二,多路徑路由減輕前綴劫持,因為路由器可以檢測由前綴造成的異常劫持并嘗試其它路徑來檢索數據;第三,NDN的消息只能與相關應答數據交互,并不一定發送到主機上,這就使得惡意的數據包很難轉發到一個特定的目標。這種機制實現了數據安全與網絡傳輸的分離,降低了實現和管理難度,靈活性強,更加直接和方便,也是真正符合數據請求的自然處理方式。
通信策略由請求方驅動,請求方向網絡中廣播請求(interest)包,通過數據命名以pull方式獲取數據包。路由機制上除了保留轉發路由表(FIB)外,還增加了待處理請求表(PIT)和數據包緩存(content store)數據結構。NDN數據包是獨立的,與它從哪里來和它將被轉發到哪里去沒有關系,不依賴像TCP的連接控制,傳輸過程中也不需要狀態信息(stateless)。NDN路由器將請求包和數據包都保存一段時間,分別存在待處理請求表和數據包緩存中。當多個相同數據的請求到達時會消重并記錄到達的接口(interface),存儲在待處理請求表中,只轉發第一個請求到數據源。當數據包到達時,路由器查找到匹配的待處理請求表的條目,將數據從表中列出的所有接口轉發回去。待處理請求表刪除相應的條目,將數據緩存到數據包緩存中,數據包緩存基本上是數據包的緩沖存儲器,具有一些緩存策略功能。數據包選擇與請求包完全相同的路徑,以相反的方向傳遞。請求包經過每一跳都有可能得到匹配的數據包,不一定要到達數據源的終點,從而實現了逐跳(hop-by-hop)流平衡。NDN的路由策略上是非常靈活的,可以自動同時支持各種路由協議,包括內容分發(許多用戶在不同的時間請求相同的數據)、組播(很多用戶在同一時間請求相同的數據)、移動性(用戶從不同的地點連續請求數據)以及延遲容錯網絡(用戶之間間歇性通信)等。而IP路由采用一個單一的最佳路徑,以防止循環。NDN不僅從原理上避免了網絡沖突和擁塞,擺脫了傳輸端到端連接的依賴,還從根本上實現了多鏈路路由(multi-homing),同時基于網絡內緩存實現了就近獲取、負載均衡和容斷能力,提高了大規模內容分發的可靠性、性能和效率。

表 P2P、CDN和NDN關聯問題比較
CCN原理介紹
NDN的具體實現例子是施樂公司的帕洛阿托研究中心(PARC)的Van Jacobson等提出的內容中心網絡,簡稱 CCN(Content—Centric Networking)。CCN體系結構的外形和當今TCP/IP網絡很相似,都是沙漏模型,重要的是用Contentchunk代替了IP。從網絡的角度看,就是在網絡中用對數據命名代替了對物理實體的命名。另外,網絡中內建存儲功能,用來緩存經過的數據包,用以加快其他用戶訪問緩存數據包的響應時間,同時可減少網絡中的流量。
CCN的主要設計目標是更好地支持當今的主要應用:內容存取。只這一個目標就決定了CCN的體系結構不會是一個會話模型,而應該是一個以信息為中心的模型 (兼顧資源共享式的通信)。另外,PARC的Van Jacobson和UCLA的張麗霞教授等提出了設計CCN的6個原則。這些原則借鑒了若干當今互聯網設計的原則,而這些互聯網原則已經被證明是成功的。這六個設計原則分別是:
(1)保留沙漏模型。這種“瘦腰”特性保證了互聯網的迅猛增長,因為它允許下層和上層不斷革新變化,在CCN設計中也保留了這一模型。
(2)考慮安全性。當今互聯網的設計是沒有考慮安全的,所有的安全都是事后增加的,這種修補式的安全,對互聯網造成很大的負面影響。而CCN要把安全放在體系結構的設計中。
(3)保留端到端原則。端到端原則考慮系統性能和代價的均衡,一般分層系統設計都應該考慮,CCN系統也繼承了這一原則。
(4)流量自調節。流量均衡對一個穩定的網絡運行是必不可少的。當今互聯網的流量調節要依靠端的傳輸協議,網絡本身的設計沒有考慮。
(5)保留了路由和轉發平面的分離。保證了最好的轉發技術和路由技術并行發展。
(6)保證體系結構的中立,使得用戶選擇和競爭盡可能簡單。
CCN工作機制
CCN通信由數據消費者驅動,數據可以進行塊級傳輸,有兩個包類型:Interest和Data,消費者廣播Interest包,請求內容,監聽節點如果有該內容,則響應。興趣和數據包和位置無關,在一個廣播介質上,如果有一個興趣包請求,則其他對同一內容感興趣的消費者可以共享該請求。
興趣包的Contentname是數據包的Contentname的前綴,則該數據包滿足該請求。內容名字是復雜的,內容的名字可以動態生成,即讓不存在該請求內容的應用接收該興趣包,而臨時產生該內容。像現在的動態Web(靜態內容和動態產生混合支持)。
當一個包到達一個Face,利用名字進行最長前綴匹配查找,有三個關鍵數據結構完成轉發(FIB、內容緩存、PIT)。FIB類似IP的FIB,但允許一列出口,而不限于只是一個。內容緩存可以盡可能長時間地緩存轉發的包,以供其他消費者使用。PIT記錄已經轉發的興趣包,為了讓響應的數據包能到達其請求者。當響應興趣的數據包利用PIT的某條目轉發后或者抽出時間設定,該條目被擦除。
當一個Interest包到達,首先匹配內容緩存 (如果有,則響應并丟棄Interest),其次匹配PIT(如果有,則在PIT響應條目中增加Face,并丟棄Interest),最后匹配FIB(按照所有匹配的Face(除Interest到達Face)進行轉發Interest,并在PIT中記錄)。如果沒有匹配則丟棄。
data包的處理相對簡單,當數據包到達時,先對數據包的Content Name字段進行最長前綴匹配,先在Contentstore中匹配(如果有,則丟棄),再在PIT中匹配條目,如果有,轉發到請求者,然后緩存在Contentstore,如果沒有匹配則丟棄。
CCN使用舉例
(1)實時通話應用。為了驗證CCN網絡不只是能較好地支持內容分發應用,也能支持實時會話等當前IP上使用的其它普遍的功能,Van Jacobson實現了一個基于CCN的實時會話應用——VoCCN。發現它和VoIP在性能和功能上是相當的,但更簡單、更安全、可擴展性更強。但是,原型系統的環境是在局域網環境的概念證明系統(Proof-of-Concept),實際應用還需進一步驗證。
(2)音頻會議工具。為了推進CCN網絡的全球部署,Van Jacobson等人正在努力開發基于CCN網絡的應用,在繼VoCCN之后又開發了基于CCN的音頻會議工具(ACT)。ACT采用基于命名數據的方法發現正在進行的會議和每個會議演講者,并且從各自演講者處取得聲音數據。該設計是完全分布式的,取代了當今的集中式音頻會議,具有更強的魯棒性和可擴展性。
(3)全媒體交互(Omedia-CCN)。清華大學網絡安全實驗室一直從事覆蓋網絡的研究,開發了非結構化的P2P覆蓋網CORS系統(Cooperatively Overlay Routing Service),能支持大規模網絡節點,并在Planet-lab上進行了交互多媒體通信加速試驗。同時開發了基于CORS系統的P2P流媒體系統CORSTV,對比研究了普通P2P流媒體系統和基于網絡編碼的P2P流媒體系統,研究基于網絡編碼的P2P流媒體數據傳輸過程、調度算法,以及通過降低系統的數據包冗余率,以改善播放質量和播放時延等性能。