- 命名數(shù)據(jù)網(wǎng)絡(luò)原理、技術(shù)與應(yīng)用
- 謝人超 霍如 劉江 黃韜 劉韻潔編著
- 3318字
- 2019-07-26 13:13:56
2.1 NDN基本原理
NDN作為全新的網(wǎng)絡(luò)架構(gòu),與TCP/IP架構(gòu)最大的區(qū)別是其以信息為中心的設(shè)計思想,NDN將數(shù)據(jù)與位置分離,從TCP/IP架構(gòu)關(guān)注內(nèi)容位置轉(zhuǎn)移到關(guān)注內(nèi)容自身上。對于TCP/IP網(wǎng)絡(luò)而言,NDN是一種“革命性”的網(wǎng)絡(luò)架構(gòu)。本節(jié)主要介紹NDN的設(shè)計原則及其體系架構(gòu),讓讀者對命名數(shù)據(jù)網(wǎng)絡(luò)有一個整體的認(rèn)識,以方便后面章節(jié)的閱讀和理解。
2.1.1 NDN設(shè)計原則
NDN的主要設(shè)計目標(biāo)是更好地支持內(nèi)容檢索與獲取,這一目標(biāo)決定了NDN的體系架構(gòu)不是一個會話模型,而是一個以信息為中心的模型(兼顧資源共享式的通信)。NDN體系架構(gòu)的設(shè)計原則主要包括以下6個方面。
(1)保留沙漏模型。沙漏模型的中心是一個通用的網(wǎng)絡(luò)層,為全局連接實施最小而必要的功能。這種“細(xì)腰”特性使原有互聯(lián)網(wǎng)設(shè)計更加強大,允許下層和上層不斷革新變化并去掉不必要的限制,保證了互聯(lián)網(wǎng)的迅猛增長。如圖2-1所示,NDN協(xié)議棧模型沿用了傳統(tǒng)TCI/IP的這種沙漏結(jié)構(gòu)。

圖2-1 TCP/IP棧與NDN協(xié)議棧
(2)考慮安全性。互聯(lián)網(wǎng)在設(shè)計之初并沒有考慮到網(wǎng)絡(luò)的安全性,所有的安全措施都是事后增加的,這種修補式的安全,已無法滿足當(dāng)今互聯(lián)網(wǎng)環(huán)境的要求,對互聯(lián)網(wǎng)造成了很大的負(fù)面影響。因此,在設(shè)計NDN架構(gòu)時,必須考慮網(wǎng)絡(luò)的安全性。
(3)保留端到端原則。端到端的原則在網(wǎng)絡(luò)出現(xiàn)故障時,維持了應(yīng)用的頑健性,一般分層系統(tǒng)設(shè)計都應(yīng)該考慮,NDN繼承并擴展了這一原則。
(4)流量自調(diào)節(jié)。數(shù)據(jù)分發(fā)的流量均衡是網(wǎng)絡(luò)穩(wěn)定可靠運行的保證。由于IP提供的是開環(huán)數(shù)據(jù)分發(fā),即只負(fù)責(zé)數(shù)據(jù)的分發(fā),對數(shù)據(jù)是否到達(dá)以及數(shù)據(jù)在傳輸過程中遇到的問題沒有反饋調(diào)節(jié)機制,而是由傳輸層協(xié)議承擔(dān)了單播的流量均衡任務(wù)。不同于IP, NDN在設(shè)計中融入了流量均衡機制。
(5)保留路由和轉(zhuǎn)發(fā)平面的分離。路由和轉(zhuǎn)發(fā)平面的分離使路由系統(tǒng)即使不斷演進(jìn)更新,也能保證轉(zhuǎn)發(fā)平面的正常運行,這就保證了轉(zhuǎn)發(fā)技術(shù)和路由技術(shù)能夠并行發(fā)展。因此,保留路由和轉(zhuǎn)發(fā)平面的分離十分必要,NDN沿用了這種設(shè)計原則。
(6)保證網(wǎng)絡(luò)架構(gòu)的中立,使用戶選擇和競爭盡可能簡單。網(wǎng)絡(luò)架構(gòu)應(yīng)有利于用戶的選擇和競爭,盡管以前的網(wǎng)絡(luò)設(shè)計沒有考慮到網(wǎng)絡(luò)架構(gòu)的中立性問題,但全局部署的經(jīng)驗告訴我們“網(wǎng)絡(luò)架構(gòu)并不是中立的”。因此,NDN的設(shè)計需要考慮到授權(quán)給用戶或終端的必要性,使之能夠相互競爭。
2.1.2 NDN體系架構(gòu)
如圖2-1所示,NDN保留了TCP/IP網(wǎng)絡(luò)的沙漏模型,不同的是,NDN用內(nèi)容塊(Content Chunk)代替了IP層。從網(wǎng)絡(luò)的角度看,就是在網(wǎng)絡(luò)中用對數(shù)據(jù)命名代替對物理實體命名,用戶所交換的信息與位置無關(guān),其安全性將依賴于數(shù)據(jù)包中必須攜帶的簽名。另外,利用網(wǎng)絡(luò)泛在緩存功能來緩存經(jīng)過的數(shù)據(jù)包,縮短了其他用戶訪問緩存數(shù)據(jù)包的響應(yīng)時間,特別是對于流行度較高的內(nèi)容,從整體上減少了網(wǎng)絡(luò)流量。此外,NDN在時間和空間上對信息的接收者和請求者進(jìn)行了解耦,增加了網(wǎng)絡(luò)的頑健性,能夠抵抗對內(nèi)容源的DDoS攻擊、抵抗通道攻擊等。
在內(nèi)容塊層之上的是支持基于命名數(shù)據(jù)的應(yīng)用層,應(yīng)用層可完成可靠性檢驗、數(shù)據(jù)簽名等功能,從而保證了網(wǎng)絡(luò)中數(shù)據(jù)的安全和完整性。內(nèi)容塊下層是策略層,具有轉(zhuǎn)發(fā)、路由選擇和存儲功能,興趣包(Interest Packet)可根據(jù)策略層的規(guī)則沿多條路徑進(jìn)行轉(zhuǎn)發(fā)。策略層以下是支持傳輸?shù)膮f(xié)議和底層物理鏈路,最下層可以兼容UDP、IP以及P2P、廣播等機制,保證了對IP網(wǎng)絡(luò)的兼容性。
與傳統(tǒng)的TCP/IP體系架構(gòu)相比,NDN主要有以下幾方面的優(yōu)勢。
(1)NDN節(jié)點不再是傳統(tǒng)的基于終端位置進(jìn)行路由,而是基于數(shù)據(jù)內(nèi)容的名字進(jìn)行路由。內(nèi)容文件的位置與其名字剝離,路由不再依賴內(nèi)容的具體位置,而是通過識別網(wǎng)絡(luò)內(nèi)容來確定終端,從而擺脫了移動性等問題的束縛。
(2)NDN主要傳輸模型采用發(fā)布-訂閱范式。訂閱者與發(fā)布者不需要事先建立連接,用戶可以根據(jù)內(nèi)容名獲取發(fā)布者發(fā)布的內(nèi)容而不需要知道具體哪一個數(shù)據(jù)源擁有自己感興趣的內(nèi)容。這種傳輸模型使內(nèi)容的產(chǎn)生、獲取在時間和空間上分離開,擁有更高的內(nèi)容傳輸效率,增強了可擴展性。
(3)NDN通過公鑰加密的方法保證數(shù)據(jù)的合法性。在TCP/IP網(wǎng)絡(luò)體系中,用戶所看到的終端地址與實際的內(nèi)容名字并不相干,使TCP/IP網(wǎng)絡(luò)存在很大的安全隱患,用戶很容易受到惡意網(wǎng)站的攻擊。NDN通過對數(shù)據(jù)包進(jìn)行簽名,大大提高了網(wǎng)絡(luò)的安全性能。
2.1.3 NDN工作機制
NDN網(wǎng)絡(luò)的通信是由請求方(Consumer)驅(qū)動的,數(shù)據(jù)可以進(jìn)行塊級傳輸,其數(shù)據(jù)報文分為興趣包和數(shù)據(jù)包兩類。如圖2-2所示,興趣包和數(shù)據(jù)包都含有一個內(nèi)容名稱來標(biāo)識用戶想要獲取的內(nèi)容或數(shù)據(jù)包負(fù)載的數(shù)據(jù)。與興趣包不同的是,數(shù)據(jù)包還包含所要交換的內(nèi)容及其內(nèi)容發(fā)布者的簽名。

圖2-2 NDN興趣包與數(shù)據(jù)包結(jié)構(gòu)
如圖2-3所示,NDN路由節(jié)點通過3種重要的數(shù)據(jù)結(jié)構(gòu)完成數(shù)據(jù)的轉(zhuǎn)發(fā),分別是轉(zhuǎn)發(fā)信息庫(Forwarding Information Base, FIB)、待定興趣表(Pending Interest Table, PIT)和內(nèi)容緩存庫(Content Store, CS)。其中,F(xiàn)IB記錄當(dāng)前節(jié)點到達(dá)內(nèi)容提供節(jié)點的下一跳接口,相當(dāng)于IP網(wǎng)中的FIB,由路由協(xié)議自動生成,是轉(zhuǎn)發(fā)興趣包的依據(jù)。與IP轉(zhuǎn)發(fā)不同的是,NDN轉(zhuǎn)發(fā)允許有一組轉(zhuǎn)發(fā)出口,而不限于一個。PIT用于記錄已經(jīng)轉(zhuǎn)發(fā)但未響應(yīng)興趣包的內(nèi)容名及其來源接口,目的是使相應(yīng)的數(shù)據(jù)包能夠準(zhǔn)確到達(dá)請求者,當(dāng)響應(yīng)數(shù)據(jù)包利用某PIT條目轉(zhuǎn)發(fā)后,或者某PIT條目超出閾值,則將該條目刪除。CS用于保存路由節(jié)點的緩存內(nèi)容,類似于IP路由器中的緩存,但采用了不同于IP的緩存替換策略,路由器會定期更新CS緩存的信息,對于熱點請求的數(shù)據(jù)路由器進(jìn)行持續(xù)的緩存,而對于超時的數(shù)據(jù)路由器則將其從緩存中刪除。

圖2-3 NDN轉(zhuǎn)發(fā)模型
基于NDN定義的兩種數(shù)據(jù)報文格式與路由節(jié)點定義的3種數(shù)據(jù)結(jié)構(gòu),當(dāng)內(nèi)容請求者需要請求內(nèi)容時,首先廣播興趣包,興趣包到達(dá)路由節(jié)點后,路由器根據(jù)興趣包中的內(nèi)容名,查詢CS,如果CS中包含所請求的數(shù)據(jù)包,則直接向興趣包的來源接口返回該數(shù)據(jù)包的副本并丟棄這個已經(jīng)被滿足的興趣包,否則在PIT中繼續(xù)查詢。如果PIT中有該內(nèi)容名條目,則說明之前已經(jīng)收到過相同的興趣包且已經(jīng)轉(zhuǎn)發(fā),但是沒有獲得返回結(jié)果,需要把該興趣包的來源接口加入PIT對應(yīng)的接口列表中,同時將該興趣包丟棄。當(dāng)對應(yīng)數(shù)據(jù)包返回時,根據(jù)接口列表向?qū)?yīng)接口恢復(fù)數(shù)據(jù)的副本,并將該數(shù)據(jù)包存儲在CS中以滿足未來的潛在請求。如果CS和PIT中都沒有結(jié)果,則查找FIB,如果在FIB中發(fā)現(xiàn)有對應(yīng)內(nèi)容名條目,則說明該節(jié)點第一次收到該興趣包,這時根據(jù)FIB的接口列表(不包含興趣包進(jìn)來的接口)轉(zhuǎn)發(fā)該興趣包,并在PIT中增加新的條目。如果在3個結(jié)構(gòu)中都沒有結(jié)果,則說明不存在相關(guān)的匹配路由,該節(jié)點無法處理這個興趣包,于是將其丟棄。該過程在基于命名路由協(xié)議中很常見,當(dāng)興趣包到達(dá)緩存有對應(yīng)請求數(shù)據(jù)的節(jié)點后,就會沿原路徑返回一個包含該數(shù)據(jù)名和數(shù)據(jù)內(nèi)容以及發(fā)送者簽名的數(shù)據(jù)包到請求節(jié)點。需要注意的是,興趣包和數(shù)據(jù)包并不攜帶主機或接口地址(如IP地址),興趣包根據(jù)所要請求數(shù)據(jù)的名稱路由到數(shù)據(jù)的持有者,數(shù)據(jù)包則通過興趣包經(jīng)過各個節(jié)點時所建立的狀態(tài)信息反向傳送給數(shù)據(jù)的請求方。
路由器對于數(shù)據(jù)包的處理則相對簡單,當(dāng)數(shù)據(jù)包到達(dá)路由節(jié)點時,根據(jù)數(shù)據(jù)包的內(nèi)容名字段,先在CS中查找。如果CS中存在,則丟棄該數(shù)據(jù)包;如果CS中沒有,則在PIT中查找。如果存在對應(yīng)條目,將數(shù)據(jù)轉(zhuǎn)發(fā)給該PIT匹配條目的所有接口,并緩存該內(nèi)容到CS中;如果PIT中沒有匹配條目,則丟棄該數(shù)據(jù)包。
綜上所述,NDN路由器能夠?qū)⑴d趣包和數(shù)據(jù)包保存一段時間,當(dāng)節(jié)點收到對同一個數(shù)據(jù)的多個興趣請求時,路由器僅需要向上游傳遞一個興趣包,然后將其存儲在PIT中。當(dāng)數(shù)據(jù)包返回時,路由器查找PIT,將數(shù)據(jù)轉(zhuǎn)發(fā)給該PIT匹配條目的所有接口,然后將該內(nèi)容緩存在CS中并擦除對應(yīng)的PIT條目。因為NDN數(shù)據(jù)包獨立于其位置而存在,因此緩存的數(shù)據(jù)包可以用于響應(yīng)將來的數(shù)據(jù)請求。數(shù)據(jù)沿著接收到的興趣包的路徑反向傳輸,每個數(shù)據(jù)包經(jīng)過每一跳只滿足一個興趣包,這就實現(xiàn)了NDN逐跳的流量均衡。
NDN數(shù)據(jù)包從某種意義上講,與它來自哪里或轉(zhuǎn)發(fā)到哪里無關(guān),因此路由器能夠緩存NDN數(shù)據(jù)包以滿足未來的潛在請求。這使NDN不需要額外的基礎(chǔ)設(shè)施就能自主地實現(xiàn)各種功能,包括內(nèi)容分發(fā)、組播、移動性以及延遲容忍網(wǎng)絡(luò)等。例如,設(shè)想一個用戶正在一輛移動的車中觀看視頻,用戶在發(fā)起了某數(shù)據(jù)請求后可能移動到了新的網(wǎng)絡(luò)區(qū)域,雖然原來的請求數(shù)據(jù)到達(dá)用戶原來的地方后被丟棄,但它卻沿路保存,當(dāng)用戶重新發(fā)送請求時,它很可能從臨近的緩存中獲取數(shù)據(jù),從而實現(xiàn)中斷的最小化。數(shù)據(jù)靠近用戶緩存也改善了包的傳輸性能并降低了對某一特定數(shù)據(jù)源的依賴。
- 黑客大曝光:Web應(yīng)用程序安全(原書第3版)
- P2P網(wǎng)絡(luò)測量與分析
- Bootstrap從入門到項目實戰(zhàn)
- 中文版Dreamweaver CC基礎(chǔ)培訓(xùn)教程
- 矛與盾:黑客攻防與腳本編程
- pfSense 2.x Cookbook
- HIS內(nèi)核設(shè)計之道:醫(yī)院信息系統(tǒng)規(guī)劃設(shè)計系統(tǒng)思維
- Dreamweaver+Flash+Photoshop網(wǎng)頁設(shè)計從入門到精通(微課精編版)
- 思科軟件定義訪問:實現(xiàn)基于業(yè)務(wù)意圖的園區(qū)網(wǎng)絡(luò)
- Adobe XD界面設(shè)計與原型制作教程(全彩)
- 信息主導(dǎo)論
- 云原生模式
- 對話大數(shù)據(jù) 政府/工業(yè)/金融/醫(yī)療/人才行業(yè)創(chuàng)新與應(yīng)用案例分析
- 深度學(xué)習(xí):主流框架和編程實戰(zhàn)
- JavaScript+jQuery前端開發(fā)基礎(chǔ)教程(微課版)