周 蓉,周京偉
(1.泰山學(xué)院附屬中學(xué),山東 泰安 271000;2.泰山學(xué)院網(wǎng)絡(luò)與教育技術(shù)中心,山東 泰安 271000)
隨著移動互聯(lián)和物聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,越來越多的移動智能設(shè)備接入到互聯(lián)網(wǎng)中,尤其是5G 網(wǎng)絡(luò)和自媒體、短視頻的發(fā)展,使得互聯(lián)網(wǎng)中傳輸?shù)臄?shù)據(jù)規(guī)模呈爆炸式增長,音視頻在互聯(lián)網(wǎng)中的比例越來越高。同時,由于接入設(shè)備更多是手機、平板等移動設(shè)備,設(shè)備的移動性越來越高,基于傳輸兩端位置的TCP/IP網(wǎng)絡(luò)體系結(jié)構(gòu)在移動管理方面存在的缺陷愈加明顯。為了解決移動問題,Mobile IP 等各種附加協(xié)議不斷涌現(xiàn),然而體系結(jié)構(gòu)設(shè)計上的缺陷使得協(xié)議越來越臃腫,通信效率越來越低。
在傳統(tǒng)的TCP/IP 網(wǎng)絡(luò)體系中,網(wǎng)絡(luò)中兩個主機的通信首先需要知道對方的位置即IP,在此基礎(chǔ)上進行數(shù)據(jù)交換,網(wǎng)絡(luò)中最重要的是通信的對象是誰。在當(dāng)今網(wǎng)絡(luò)中,我們更大的需求是從網(wǎng)絡(luò)中獲取想要的信息,重點是信息本身,而不是信息的所有者是誰。因此,人們對網(wǎng)絡(luò)的需求已經(jīng)與互聯(lián)網(wǎng)建立之初有了天翻地覆的差別,要適應(yīng)這種需求,只能建立一種新的網(wǎng)絡(luò)模型[1]。命名數(shù)據(jù)網(wǎng)絡(luò)正是在這種背景下產(chǎn)生的,它將內(nèi)容本身看作網(wǎng)絡(luò)中的主導(dǎo)實體,最為符合當(dāng)前及未來網(wǎng)絡(luò)的發(fā)展趨勢,成為國內(nèi)外研究的熱點。
傳統(tǒng)的TCP/IP 采用分層模型,層與層之間相對獨立,下層為上層提供服務(wù),各層的協(xié)議和標準數(shù)量差別很大,最底層的物理層和最高層的應(yīng)用層協(xié)議多,而中間的網(wǎng)絡(luò)層協(xié)議少,形成沙漏結(jié)構(gòu)。其中最重要的是沙漏“細腰”部分的網(wǎng)絡(luò)層,不同通信媒介實現(xiàn)的針對不同業(yè)務(wù)的通信最終都要靠網(wǎng)絡(luò)層來實現(xiàn)。
NDN 架構(gòu)保留了傳統(tǒng)的TCP/IP 網(wǎng)絡(luò)的沙漏模型及分層思想,但是對最重要的“細腰”部分進行了顛覆性的改進,不再使用基于位置IP 協(xié)議作為網(wǎng)絡(luò)通信的基礎(chǔ),而是采用基于內(nèi)容的方式,把數(shù)據(jù)內(nèi)容作為通信的基礎(chǔ)。網(wǎng)絡(luò)中所有的數(shù)據(jù)都有一個唯一的名稱,根據(jù)數(shù)據(jù)的名稱完成路由轉(zhuǎn)發(fā),從而建立一個新型架構(gòu)網(wǎng)絡(luò)。在這樣的通信模式下,通信雙方不再關(guān)心內(nèi)容數(shù)據(jù)的存儲位置,只關(guān)心內(nèi)容本身。沙漏模型如圖1所示。
圖1 沙漏模型
NDN 中網(wǎng)絡(luò)中的參與者可以分為生產(chǎn)者、消費者兩類角色,傳輸過程中用到的數(shù)據(jù)包只有興趣包和數(shù)據(jù)包2 種。
數(shù)據(jù)的內(nèi)容以名字作為標識,數(shù)據(jù)包緩存在網(wǎng)絡(luò)中的節(jié)點即路由器上,當(dāng)消費者需要獲取某內(nèi)容的數(shù)據(jù)時,首先生成帶有數(shù)據(jù)名字的興趣包,發(fā)給離自己最近的節(jié)點,節(jié)點根據(jù)路由表在網(wǎng)絡(luò)中轉(zhuǎn)發(fā),直到在某個節(jié)點路由器發(fā)現(xiàn)該數(shù)據(jù)的緩存,此時,節(jié)點將數(shù)據(jù)包沿著興趣包的反向路徑返回給最初的內(nèi)容請求者,即消費者[2]。數(shù)據(jù)包的結(jié)構(gòu)如圖2 所示。
圖2 興趣包和數(shù)據(jù)包結(jié)構(gòu)圖
與傳統(tǒng)IP 網(wǎng)絡(luò)不同,NDN 網(wǎng)絡(luò)的中間節(jié)點即路由器有3 個功能:一是緩存,通過內(nèi)容緩存(Content Store,CS)模塊實現(xiàn);二是興趣包來源記錄,使用待定興趣包表(Pending Interest Table,PIT)模塊實現(xiàn);三是路由轉(zhuǎn)發(fā),通過轉(zhuǎn)發(fā)信息表(Forwarding Information Base,F(xiàn)IB)來實現(xiàn)[3]。
基本工作過程如下:路由器收到興趣包后,首先檢查自己的緩存是否有符合要求的數(shù)據(jù)包,如果有就直接返回,如果沒有響應(yīng)數(shù)據(jù)包則查看待定興趣表PIT。如果PIT 中已有該請求,則在PIT 上增加轉(zhuǎn)來興趣包的接口;如果PIT 中沒有該請求,則根據(jù)轉(zhuǎn)發(fā)信息表的轉(zhuǎn)發(fā)策略增加一條轉(zhuǎn)發(fā)條目。當(dāng)路由器收到數(shù)據(jù)包后,首先檢查PIT 中的轉(zhuǎn)發(fā)條目,找到響應(yīng)的請求后,根據(jù)轉(zhuǎn)發(fā)條目中記錄的端口號回應(yīng)請求興趣包,刪掉PIT 中對應(yīng)的請求條目,同時根據(jù)緩存策略決定是否刪除緩存的數(shù)據(jù)包或者保留數(shù)據(jù)包[4]。
在信息中心網(wǎng)絡(luò)的研究課題中,主要聚焦以下幾個方面:①路由問題。解決如何實現(xiàn)在查詢相關(guān)內(nèi)容的文件時路由器有高效的路由的問題。②緩存問題。解決如何在節(jié)點路由器中緩存數(shù)據(jù)和替換緩存數(shù)據(jù)的問題,使消費者更快地找到數(shù)據(jù)。③移動性問題。解決在信息中心網(wǎng)絡(luò)架構(gòu)中生產(chǎn)者或者消費者發(fā)生位置移動時路由和緩存如何能高效發(fā)生動態(tài)變化達到變化的問題,按照變化之前的算法重新計算變化之后的路由和緩存。當(dāng)然,對于信息中心網(wǎng)絡(luò)的研究還有命名機制、安全性、綠色節(jié)能策略等,本文主要介紹NDN網(wǎng)絡(luò)的移動性問題。
在NDN 網(wǎng)絡(luò)中,一次通信的發(fā)起是由消費者提出請求開始的,當(dāng)消費者提出請求后又發(fā)生了位置移動,那么數(shù)據(jù)包返回的時候會出現(xiàn)超時,此時只要消費者再次提出請求,那么數(shù)據(jù)就可以成功轉(zhuǎn)發(fā)到消費者。一般情況下根據(jù)節(jié)點緩存機制,附近的路由器往往會保存數(shù)據(jù)包的緩存,這樣,消費者再次發(fā)起請求的時候,請求很可能在附近的路由器處獲得回應(yīng),而不必要到原始數(shù)據(jù)包所在路由器[5]。因此,NDN 網(wǎng)絡(luò)天生對消費者移動具有良好的適應(yīng)性。
而如果發(fā)生移動的是生產(chǎn)者,則情況大有不同,對于消費者來說,并不能提前獲得生產(chǎn)者已經(jīng)發(fā)生了位置移動的信息,所以在發(fā)出內(nèi)容請求時,請求仍會按照原路徑進行轉(zhuǎn)發(fā),直到消費者收到請求超時的消息。生產(chǎn)者位置發(fā)生變化后,會接入到新的節(jié)點,此時整個網(wǎng)絡(luò)的路由將會發(fā)生改變。在改變過程中,消費者無法從生產(chǎn)者處獲取內(nèi)容,如何解決快速路由問題成為生產(chǎn)者移動問題的關(guān)鍵。
針對內(nèi)容生產(chǎn)者移動的問題,目前的研究主要有基于隧道的方法、類DNS 方法和自適應(yīng)的方法。
基于隧道的方法:該方法的原理是當(dāng)生產(chǎn)者發(fā)生移動時,在原節(jié)點路由器和新節(jié)點路由器之間建立一條隧道,轉(zhuǎn)發(fā)到源路由器的請求經(jīng)過包裝后轉(zhuǎn)發(fā)到新路由器,從而完成路由[6]。
基于隧道的方法如圖3 所示,生產(chǎn)者移動前,消費者發(fā)出的請求興趣包通過R5 轉(zhuǎn)發(fā)到R4,最后到R1獲取到需要的數(shù)據(jù),數(shù)據(jù)返回的方向與興趣包轉(zhuǎn)發(fā)的方向正好相反。生產(chǎn)者從R1 移動到R2 后,R1 和R2之間通過某種算法建立隧道,興趣包轉(zhuǎn)發(fā)到R1 后會根據(jù)隧道協(xié)議自動轉(zhuǎn)發(fā)到R2,在R2 處得到數(shù)據(jù)包后,數(shù)據(jù)包從R2 返回到R1,然后轉(zhuǎn)發(fā)到R4,最后到R5。這種方式中,隧道的建立需要生產(chǎn)者移動結(jié)束后完成,整個路由信息的重新建立也需要在隧道建立后完成。
圖3 基于隧道的方法
類DNS 方法:類DNS 轉(zhuǎn)發(fā)方法類似于傳統(tǒng)網(wǎng)絡(luò),在網(wǎng)絡(luò)中增加一個類似于DNS 服務(wù)器的服務(wù)單元,該服務(wù)單元需要記錄數(shù)據(jù)包內(nèi)容和節(jié)點位置的對應(yīng)關(guān)系。當(dāng)節(jié)點位置發(fā)生變化時,會根據(jù)節(jié)點中記錄的DNS服務(wù)器的地址向DNS 匯報,DNS 作為位置內(nèi)容關(guān)系對應(yīng)的權(quán)威向請求內(nèi)容的節(jié)點提供數(shù)據(jù)所在節(jié)點的位置信息。采用這種方法,一旦DNS 服務(wù)器發(fā)生故障,則整個網(wǎng)絡(luò)將陷入癱瘓[7]。
自適應(yīng)的方法:這種方法利用仿生學(xué)、BP 神經(jīng)網(wǎng)絡(luò)等自適應(yīng)算法,讓網(wǎng)絡(luò)中的節(jié)點服務(wù)器自動判斷網(wǎng)絡(luò)結(jié)構(gòu)變化,從而確定數(shù)據(jù)的位置。這種算法往往需要消耗較大的算力和較長的時間,對整體網(wǎng)絡(luò)的效率會有較大的影響。
上文隧道算法中,生產(chǎn)者移動后,新的路由需要在生產(chǎn)者到達新的節(jié)點一段時間后才能完成,生產(chǎn)者移動的過程可能跨越2 個節(jié)點,也可能連續(xù)跨越多個節(jié)點。如需要連續(xù)跨越多個節(jié)點,那么可能會存在消費者到達新位置后,路由剛剛建立或尚未建立,生產(chǎn)者又發(fā)生了新的移動,造成消費者始終無法獲得正確的路由,只有在跨越多個節(jié)點停止移動路由穩(wěn)定后才能正常進行數(shù)據(jù)傳輸。
為解決生產(chǎn)者快速連續(xù)移動問題,假設(shè)消費者請求到達節(jié)點前生產(chǎn)者剛剛發(fā)生移動,則生產(chǎn)者所在原節(jié)點可立即向相鄰的節(jié)點轉(zhuǎn)發(fā)請求,由于生產(chǎn)者剛剛產(chǎn)生移動,則原節(jié)點轉(zhuǎn)發(fā)的請求大概率會被其鄰居節(jié)點響應(yīng),如不能響應(yīng)可以繼續(xù)向鄰居節(jié)點的下一級節(jié)點轉(zhuǎn)發(fā)請求,直到發(fā)現(xiàn)移動中的生產(chǎn)者或者生產(chǎn)者移動完成后形成穩(wěn)定的路由。
改進的基于隧道的方法如圖4 所示。
圖4 改進的基于隧道的方法
改進前,生產(chǎn)者原位置注冊在R1,現(xiàn)在由R1 移動到了R2,按照上文中提到的算法,生產(chǎn)者移動到R2 后,R2 會通過廣播方式尋找生產(chǎn)者之前的位置節(jié)點路由器R1,找到R1 后在R1 和R2 之間建立隧道,然后數(shù)據(jù)包從R1 轉(zhuǎn)發(fā)到R2。
改進后的算法為:數(shù)據(jù)包離開R1 位置后,興趣包到達R1 發(fā)生超時,此時知道R1 已經(jīng)發(fā)生了位置移動,此時R1 將請求信息轉(zhuǎn)發(fā)到它的鄰居節(jié)點R2 和R6,若恰好此時節(jié)點剛剛抵達R2,則R2 對興趣包進行回應(yīng),可節(jié)省R2 和R1 之間建立隧道的時間。最優(yōu)的情況發(fā)生在生產(chǎn)者到達R2 后,繼續(xù)移動到R1 的另一個鄰居節(jié)點R6。此時,如按照原文中的算法,R2 在與R1 建立隧道的過程中,節(jié)點已經(jīng)到達了R6,興趣包到達R1 后被轉(zhuǎn)往R2,發(fā)現(xiàn)R2 處仍超時,則等待R6 的回應(yīng),后繼續(xù)建立隧道。而按照改進的方法,R1 把興趣包直接轉(zhuǎn)發(fā)到了鄰居節(jié)點R6,對于消費者來說,并不需要知道R2 的存在。
假設(shè)R1 向其鄰居節(jié)點發(fā)送數(shù)據(jù)包需要的時間為t,此算法最低效率的情況為生產(chǎn)者已在新位置處R2注冊,R1 和R2 正在建立隧道期間,則此時節(jié)約的時間為R2 和R1 建立隧道需要的最后一個數(shù)據(jù)包的時間t。此算法效率最高的情況為生產(chǎn)者連續(xù)移動多個位置,最后到達R1 的鄰居節(jié)點R6,此時興趣包的轉(zhuǎn)發(fā)時間為t,而最后一段隧道尚未建立,則節(jié)省最后一段隧道的建立時間,根據(jù)參考文獻[7]的計算方法,隧道建立時間最少約為4t。另外,通過隧道轉(zhuǎn)發(fā)時需要將興趣包轉(zhuǎn)發(fā)到每一個隧道中的節(jié)點,而改進的方法則只需要將興趣包直接轉(zhuǎn)發(fā)到鄰居路由器,所以最優(yōu)的情況可能節(jié)約的時間更高。以此推算,該算法提高的時間80%的概率下應(yīng)該在1t~4t之間,小概率下也可能會小于1t或大于4t,需要進一步通過模擬器計算。
本文簡述了數(shù)據(jù)中心網(wǎng)絡(luò),NDN 網(wǎng)絡(luò)的發(fā)展背景、基本原理,并對NDN 網(wǎng)絡(luò)的移動性問題尤其是生產(chǎn)者移動問題進行了較為深入的分析,發(fā)現(xiàn)現(xiàn)有算法存在一些需要解決的問題。基于隧道的方法需要在整個移動過程結(jié)束之后才能重建路由,實現(xiàn)正常傳輸,類DNS方法則容易受到單點故障的影響?;诜律鷮W(xué)、BP 神經(jīng)算法等自適應(yīng)的方法則存在算法復(fù)雜、效率低的問題。在此基礎(chǔ)上,本文對基于隧道的方法進行了一些改進,在此基礎(chǔ)上預(yù)期可以提高整體傳輸效率。