謝英英,石 澗,雷 凱
(北京大學深圳研究生院 互聯(lián)網(wǎng)研發(fā)中心,深圳 518055)
命名數(shù)據(jù)網(wǎng)絡(named data networking, NDN)[1]顛覆了TCP/IP(transmission control protocol/internet protocol)網(wǎng)絡中IP的主導地位,數(shù)據(jù)名稱取代了IP作為網(wǎng)絡中的唯一標識,網(wǎng)絡層的數(shù)據(jù)請求、路由、轉(zhuǎn)發(fā)以上層應用直接關心的數(shù)據(jù)名稱作為第一語義,而不用關心數(shù)據(jù)所在位置,NDN的這一改變解決了當今TCP/IP網(wǎng)絡在內(nèi)容分發(fā)、移動性、網(wǎng)絡安全等方面的不適應性[2],因此成為一種主流的未來網(wǎng)絡架構(gòu)。除了NDN系統(tǒng)架構(gòu)、擁塞控制、轉(zhuǎn)發(fā)策略等這些NDN傳統(tǒng)的研究方向,NDN下實際應用的設計和部署能為驗證NDN的架構(gòu)正確性和優(yōu)勢提供真實的場景和流量,也是當前NDN的一大研究熱點。
發(fā)布/訂閱[3]系統(tǒng)廣泛應用于分布式計算、數(shù)據(jù)同步等場景,是多對多異步通信的一種有效解決方案。在發(fā)布/訂閱系統(tǒng)中,發(fā)布者和訂閱者實現(xiàn)了解耦,但是這種解耦在TCP/IP網(wǎng)絡下是以復雜的中間件為代價的,中間件解決了IP網(wǎng)絡層拓撲和發(fā)布/訂閱應用層邏輯拓撲不一致帶來的矛盾。NDN由于具有上下邏輯拓撲一致性、天然適合多播、網(wǎng)內(nèi)緩存、多路徑轉(zhuǎn)發(fā)等特點,能有效簡化發(fā)布/訂閱系統(tǒng)的中間件設計,減少發(fā)布/訂閱系統(tǒng)對網(wǎng)絡的負荷、降低往返時延,改善發(fā)布/訂閱系統(tǒng)的服務質(zhì)量。
文獻[4-5]是最早提出信息中心網(wǎng)絡(information centric networking, ICN)中發(fā)布/訂閱解決方案的2篇文獻,文獻[4]提出在ICN中提供類似于IP單播的轉(zhuǎn)發(fā)服務用于發(fā)布/訂閱中更新數(shù)據(jù)的推送,文獻[5]中特定節(jié)點維護訂閱列表這一數(shù)據(jù)結(jié)構(gòu)以維護訂閱者多播樹。這方面的早期研究對于信息中心網(wǎng)絡的網(wǎng)絡架構(gòu)改動較大。近年來,對于信息中心和發(fā)布/訂閱模式結(jié)合的研究主要集中在物聯(lián)網(wǎng)場景下,文獻[6-7]分別是面向車聯(lián)網(wǎng)和移動ad-hoc網(wǎng)絡場景的信息中心網(wǎng)絡發(fā)布/訂閱系統(tǒng)解決方案,這些方案考慮到物聯(lián)網(wǎng)數(shù)據(jù)產(chǎn)生的周期性,因此采用訂閱者周期性向發(fā)布者發(fā)送數(shù)據(jù)請求包,輪詢是否有數(shù)據(jù)更新的設計方式。這種輪詢的方式只適合于物聯(lián)網(wǎng)這樣周期性產(chǎn)生監(jiān)控數(shù)據(jù)的應用場景,對于數(shù)據(jù)產(chǎn)生時間間隔比較大、數(shù)據(jù)產(chǎn)生周期不規(guī)律的場景不適用,而且周期性地輪詢Interest包會帶來很大的網(wǎng)絡開銷。因此本文提出的發(fā)布/訂閱系統(tǒng)采用發(fā)布者主動推送數(shù)據(jù)更新的方式進行設計,適用的場景更加廣泛,減少了訂閱者無效數(shù)據(jù)請求對網(wǎng)絡造成的額外負荷。
本文的貢獻可總結(jié)為以下4點:
1)分析了NDN下實現(xiàn)發(fā)布/訂閱系統(tǒng)相比于TCP/IP網(wǎng)絡下實現(xiàn)發(fā)布/訂閱系統(tǒng)的不同和優(yōu)勢;
2)設計了NDN下的一種通用的發(fā)布/訂閱系統(tǒng),并在此基礎上利用NDN的命名機制針對小塊數(shù)據(jù)傳輸?shù)膱鼍皩ο到y(tǒng)設計進行優(yōu)化,進一步降低了系統(tǒng)對網(wǎng)絡的負荷;
3)根據(jù)NDN工作組發(fā)布的NFD-android項目,在Android平臺上實現(xiàn)了分別代表大塊數(shù)據(jù)和小塊數(shù)據(jù)發(fā)布/訂閱應用場景的新聞和天氣信息發(fā)布/訂閱系統(tǒng);
4)對系統(tǒng)進行功能驗證以及性能評測。
TCP/IP網(wǎng)絡下的發(fā)布/訂閱系統(tǒng)解決的是多對多異步通信下發(fā)布者和訂閱者之間的解耦問題。解耦是指發(fā)布者發(fā)布數(shù)據(jù)而不需要關心發(fā)布的數(shù)據(jù)將發(fā)送給哪些訂閱者,訂閱者訂閱數(shù)據(jù)而不需要關心訂閱的數(shù)據(jù)具體來源于哪個發(fā)布者。TCP/IP網(wǎng)絡是基于端到端通信的,為了實現(xiàn)發(fā)布者和訂閱者之間的解耦,就需要復雜的中間件。TCP/IP網(wǎng)絡下的發(fā)布/訂閱系統(tǒng)模型如圖1所示,中間件有訂閱注冊器、發(fā)布匹配器、路由算法等,訂閱注冊器負責維護訂閱者對發(fā)布者的訂閱,發(fā)布訂閱器負責將發(fā)布者發(fā)布的信息與訂閱者相匹配,路由算法負責在發(fā)布者和訂閱者之間選擇最佳路徑進行傳輸[8]。
圖1 TCP/IP網(wǎng)絡下的發(fā)布/訂閱系統(tǒng)模型Fig.1 Publish/subscribe system model in TCP/IP network
NDN實現(xiàn)發(fā)布/訂閱系統(tǒng)相比于TCP/IP網(wǎng)絡更有優(yōu)勢的原因主要在于NDN具有上下拓撲一致性、網(wǎng)內(nèi)緩存、天然適合多播、多路徑路由和轉(zhuǎn)發(fā)這4個特性。以下將從這4個方面分別進行闡述。
NDN網(wǎng)絡層拓撲和應用層邏輯拓撲具有一致性。NDN采用7層架構(gòu),保留了細腰沙漏模型,在細腰處采用命名數(shù)據(jù)取代IP。數(shù)據(jù)命名具有可讀化、層次化的特點,例如本系統(tǒng)發(fā)布者之間同步數(shù)據(jù)層的數(shù)據(jù)名稱為”/ndn/broadcast/ChronoSync-0.3/weather/(Digest)”。NDN名稱中攜帶了路由信息,同時也是數(shù)據(jù)的唯一標識[9],這使得NDN在網(wǎng)絡層具有語義,具有應用層與網(wǎng)絡層的拓撲一致性。與TCP/IP網(wǎng)絡相比,在NDN中獲取數(shù)據(jù)不需要先獲取數(shù)據(jù)所在位置,減少了中間件的開發(fā),提高了通信效率。以數(shù)據(jù)命名為第一語義也使NDN實現(xiàn)發(fā)布/訂閱系統(tǒng)可以有效地應對節(jié)點移動、拓撲動態(tài)變化[10]。
NDN天然適合多播場景與發(fā)布/訂閱系統(tǒng)中廣泛存在的發(fā)布者與訂閱者之間的一對多的關系相契合,這種上下邏輯拓撲的一致性可有效地降低系統(tǒng)對網(wǎng)絡的負荷、減少發(fā)布者的開銷。轉(zhuǎn)發(fā)請求表(pending interest table,PIT)記錄節(jié)點接收到的Interest包的名稱以及入接口,具有相同名稱的Interest包在PIT中會聚合成一條記錄了多個入接口的PIT條目。在發(fā)布/訂閱系統(tǒng)中,當多個訂閱者向發(fā)布者請求相同數(shù)據(jù)時,發(fā)布者只需要發(fā)送一個數(shù)據(jù)包就能滿足多個訂閱者的數(shù)據(jù)請求,在TCP/IP網(wǎng)絡中則需要為每一個訂閱者的IP單獨發(fā)送一個數(shù)據(jù)包。
NDN的中間節(jié)點可以將流經(jīng)它的Data包緩存到內(nèi)容存儲庫(content store,CS)中,并且能夠作為此后相應Interest包的回復。在發(fā)布/訂閱系統(tǒng)中,NDN的網(wǎng)內(nèi)緩存相當于把發(fā)布者發(fā)布的數(shù)據(jù)儲存到離訂閱者更近的網(wǎng)絡節(jié)點上,當緩存命中時,可以有效降低訂閱者獲取更新數(shù)據(jù)的時延,改善用戶體驗,而且重復數(shù)據(jù)包的傳輸路徑縮短了,減輕了網(wǎng)絡負荷,有利于改善整體網(wǎng)絡狀況。
NDN的多路徑路由和轉(zhuǎn)發(fā)特性增加了節(jié)點的連通性,可以有效挖掘數(shù)據(jù)包從源端到目的地的最短路徑,增強發(fā)布/訂閱系統(tǒng)應對網(wǎng)絡故障的健壯性。轉(zhuǎn)發(fā)信息表(forwarding information base,F(xiàn)IB),PIT,CS和接口(Face)是NDN節(jié)點的4個主要組成部分。FIB可以為一個命名前綴提供多個轉(zhuǎn)發(fā)接口,而且NDN能夠根據(jù)轉(zhuǎn)發(fā)策略實時地、單跳地為Interest包選擇多個Face進行轉(zhuǎn)發(fā),相比于IP的單一最佳路徑路由,NDN的多路徑路由和轉(zhuǎn)發(fā)特性更有利于實現(xiàn)高效的發(fā)布/訂閱系統(tǒng)。
本節(jié)首先提出了一種通用的發(fā)布/訂閱模式設計,然后針對小塊數(shù)據(jù)傳輸?shù)膱鼍?,利用NDN Interest包名稱中可以攜帶一定量數(shù)據(jù)的特點,提出了一種適合小塊數(shù)據(jù)傳輸場景的優(yōu)化設計,相比于通用的發(fā)布/訂閱模式,將發(fā)布者發(fā)布更新數(shù)據(jù)的通信過程縮短了一半。
通用情況下的發(fā)布/訂閱模式是指同時適用于大塊數(shù)據(jù)傳輸和小塊數(shù)據(jù)傳輸?shù)陌l(fā)布/訂閱模式。要實現(xiàn)的是多個發(fā)布者和多個訂閱之間的發(fā)布/訂閱活動,這可以剖解為2部分:一個發(fā)布者和多個訂閱者之間的發(fā)布和訂閱活動,這部分的設計將在2.1.1部分具體介紹;多個發(fā)布者之間的全數(shù)據(jù)集同步,這部分是利用NDN工作組提出的ChronoSync協(xié)議[11]實現(xiàn)的,將在2.1.2部分具體介紹。每個部分都從命名設計和通信協(xié)議設計2個部分具體闡述。
2.1.1 發(fā)布者和訂閱者之間的通信
發(fā)布者和訂閱者之間的通信可以根據(jù)功能分為四大類:連接控制、訂閱管理、推送通知和拉取數(shù)據(jù)。對這四大通信類型的數(shù)據(jù)包的命名分別進行設計,如圖2所示。四大通信類型消息的命名前綴相同,用于數(shù)據(jù)包在網(wǎng)絡中的路由。命名中第2部分為FaceUri,有利于系統(tǒng)與本機的FaceUri進行比對,判斷是否是發(fā)給自己的數(shù)據(jù)包。命名中還加入了時間戳,用于區(qū)分同一用戶不同時刻發(fā)送的相同類型數(shù)據(jù)包。名稱的最后一部分是數(shù)據(jù)類型,這里的數(shù)據(jù)類型根據(jù)應用場景而不同,比如在新聞信息發(fā)布/訂閱系統(tǒng)中,這里的數(shù)據(jù)類型可能是一類新聞,比如財經(jīng)新聞、科技新聞、娛樂新聞等。
通用情況下,發(fā)布/訂閱模式可以采用發(fā)布者推送數(shù)據(jù)更新通知,然后訂閱者拉取數(shù)據(jù)的形式,數(shù)據(jù)類型放在名稱中,而數(shù)據(jù)具體內(nèi)容放在Data包的內(nèi)容中。當發(fā)布者有新的信息產(chǎn)生時,通過檢索本地維護的訂閱列表,確定需要向哪些訂閱者推送psync-notify Interest包,而新產(chǎn)生信息的類型包含在psync-notify Interest包的名稱中,訂閱者接收到psync-notify Interest包之后通過解析名稱得知發(fā)布者有數(shù)據(jù)更新,然后發(fā)送一個內(nèi)容為空的Data包作為回復。緊接著訂閱者發(fā)送psync-get Interest包來獲取更新數(shù)據(jù)的內(nèi)容。 類似的,對于訂閱者訂閱信息和取消訂閱信息這2個功能,也是通過將訂閱信息的類型放在subscribe Interest和unsubscribe Interest包的名稱中實現(xiàn)的,發(fā)布者接收到興趣包之后,解析名稱以獲取訂閱或者取消訂閱信息的類型,然后更新本地的訂閱列表。
圖2 通用情況發(fā)布/訂閱系統(tǒng)命名Fig.2 Naming scheme for common publish/subscribe system
2.1.2 發(fā)布者之間的通信
整個被觀察數(shù)據(jù)集可以由多個發(fā)布者共同維護,因此需要進行發(fā)布者之間的全數(shù)據(jù)集同步,為了實現(xiàn)分布式的發(fā)布者同步功能,利用NDN工作組發(fā)布的ChronoSync協(xié)議進行設計。發(fā)布者之間的通信涉及3個過程:建立連接、同步數(shù)據(jù)層同步數(shù)據(jù)集摘要、應用層獲取應用數(shù)據(jù)。
對每個通信過程的數(shù)據(jù)包分別進行命名設計,如表1所示。連接層命名用于在一個局域網(wǎng)中的發(fā)布者之間建立連接,互相之間獲取對方的FaceUri, FaceUri作為后續(xù)建立發(fā)送興趣包的Face接口的依據(jù)。m_username是用戶輸入的發(fā)布者用戶名,m_session是用戶進入系統(tǒng)的時間,m_username和m_session一起作為區(qū)分不同發(fā)布者的身份標識。獲取m_FaceUri是發(fā)布者之間建立連接通信過程的真正目的。m_module用于區(qū)分具體應用,在本文實現(xiàn)的天氣信息和新聞信息發(fā)布/訂閱系統(tǒng)中可以是news或者weather,用于區(qū)分是News模塊還是Weather模塊的發(fā)布者之間的通信。同步數(shù)據(jù)層命名中/ndn/broadcast/ChronoSync-0.3作為廣播包的路由前綴,Digest是發(fā)布者全數(shù)據(jù)集摘要,反映了發(fā)布者目前同步過的全部數(shù)據(jù)。應用數(shù)據(jù)層命名中/m_userame/m_module/RandomString/作為路由前綴,其中,RandomString是10位的隨機字符串,每個發(fā)布者的隨機字符串都不同。Seq_num是發(fā)布者目前最新發(fā)布數(shù)據(jù)的序列號,發(fā)布者從序列號0開始發(fā)布數(shù)據(jù),序列號提供了發(fā)布者目前發(fā)布的數(shù)據(jù)總數(shù)信息。
表1 發(fā)布者之間同步的命名Tab.1 Naming scheme in synchronization between publishers
發(fā)布者連接WIFI之后對局域網(wǎng)內(nèi)所有可能存在的IP進行Ping操作,一旦某個IP能Ping通,則以這個IP為FaceUri建立Face接口,從這個Face接口發(fā)送連接Interest包,對方收到連接請求包之后將自己保存的FaceUri列表放在Data包的數(shù)據(jù)區(qū),對連接Interest包進行回復。發(fā)布者A接收到這個連接回復Data包之后對數(shù)據(jù)區(qū)進行解析獲取FaceUri,更新本地維護的FaceUri列表,成功建立連接。
建立連接之后,發(fā)布者A和發(fā)布者B向網(wǎng)絡中廣播同步數(shù)據(jù)層Interest包,同步數(shù)據(jù)層Interest包中包含了發(fā)布者目前的全數(shù)據(jù)集摘要Digset1,當發(fā)布者A發(fā)布新的數(shù)據(jù)之后,發(fā)布者A的全數(shù)據(jù)集摘要更新為Digest2,這時同步數(shù)據(jù)層Interest包得到滿足,發(fā)布者A回復一個數(shù)據(jù)區(qū)存放了新產(chǎn)生數(shù)據(jù)名稱的同步數(shù)據(jù)層Data包。這就是發(fā)布者之間同步數(shù)據(jù)層同步數(shù)據(jù)集摘要的完整過程。
發(fā)布者B接收到同步數(shù)據(jù)層Data包之后,提取數(shù)據(jù)區(qū)的內(nèi)容得到新產(chǎn)生數(shù)據(jù)的名稱,然后以這個名稱發(fā)送應用數(shù)據(jù)層Interest包,發(fā)布者A對這一應用數(shù)據(jù)層Interest包回復帶有相應數(shù)據(jù)的應用數(shù)據(jù)層Data包。至此,發(fā)布者A與發(fā)布者B之間完成了一次全數(shù)據(jù)集同步,接下來,發(fā)布者A和發(fā)布者B分別向網(wǎng)絡中廣播數(shù)據(jù)集摘要為Digest2的同步數(shù)據(jù)層Interest包,進入下一輪的全數(shù)據(jù)集同步過程。
在小塊數(shù)據(jù)傳輸?shù)膱鼍跋?,由于要傳輸?shù)臄?shù)據(jù)比較小,因此可以將數(shù)據(jù)作為Interest包的名稱的一部分,采用發(fā)布者主動推送數(shù)據(jù)的形式。發(fā)布者和訂閱者之間的通信可以簡化為3個過程:連接控制、訂閱管理和發(fā)布推送。對3個通信過程的命名設計如表2所示,與通用情況的命名設計不同的是,直接將數(shù)據(jù)類型和數(shù)據(jù)內(nèi)容附加在名稱的后面,使得發(fā)布者推送數(shù)據(jù)成為可能。比如在天氣信息發(fā)布/訂閱系統(tǒng)中,數(shù)據(jù)類型可以是城市名稱,數(shù)據(jù)內(nèi)容為對應城市的溫度。
當發(fā)布者有新的信息產(chǎn)生時,通過檢索本地維護的訂閱列表,確定需要向哪些訂閱者推送Psync Interest包,而新產(chǎn)生信息的類型以及內(nèi)容就包含在Psync Interest包的名稱中,訂閱者接收到Psync Interest包之后通過解析名稱就可以獲取推送的內(nèi)容,然后發(fā)送一個內(nèi)容為空的Data包。訂閱者回復一個內(nèi)容為空的Data包的目的有2個:①告知發(fā)布者自己已經(jīng)接收到了推送數(shù)據(jù),②解除Psync Interest包對中間路由器中PIT資源的占用。連接控制和訂閱管理2個通信過程和通用情況的相應通信過程類似,因此不再贅述。
表2 小塊數(shù)據(jù)發(fā)布/訂閱模式的命名設計Tab.2 Naming scheme in publish/subscribe model for small chunk of data
本系統(tǒng)在Android平臺上對NDN工作組發(fā)布的NFD-android項目進行二次開發(fā),根據(jù)本文提出的發(fā)布/訂閱通信協(xié)議和NDN工作組提出的ChronoSync協(xié)議實現(xiàn)了一個NDN下的發(fā)布/訂閱系統(tǒng),該系統(tǒng)功能由分別代表小塊數(shù)據(jù)和大塊數(shù)據(jù)傳輸?shù)腤eather模塊和News模塊實現(xiàn),這兩大模塊實現(xiàn)了三大功能:小塊數(shù)據(jù)傳輸下發(fā)布者與訂閱者之間的發(fā)布/訂閱、大塊數(shù)據(jù)傳輸下訂閱者與發(fā)布者之間的發(fā)布/訂閱、發(fā)布者之間的全數(shù)據(jù)集同步。
基于Android的命名數(shù)據(jù)網(wǎng)絡發(fā)布/訂閱系統(tǒng)架構(gòu)如圖3所示,Android操作系統(tǒng)層包括Linux內(nèi)核、系統(tǒng)類庫、運行時、應用程序框架層,除此之外還包括用于支持在Android系統(tǒng)中開發(fā)NDN應用的JNDN通用庫,而JNDN通用庫由用C++編寫的cryptopp庫、ndn-cxx庫、nfd庫等組成,cryptopp庫是一個加密類庫,ndn-cxx是實現(xiàn)了命名數(shù)據(jù)網(wǎng)絡協(xié)議的C++類庫,nfd是用C++實現(xiàn)的命名數(shù)據(jù)網(wǎng)絡轉(zhuǎn)發(fā)守護進程。
Android應用層劃分為2層,底層為基本服務模塊,包括General模塊、Faces模塊、Routes模塊和Logcat模塊,這些模塊提供了對NFD運行情況的控制和統(tǒng)計,便于查看和調(diào)試,涉及到NFD的底層代碼和JNI機制的調(diào)用;上層為發(fā)布/訂閱模式的具體實現(xiàn)層,包括News模塊和Weather模塊,它們分別實現(xiàn)了命名數(shù)據(jù)網(wǎng)絡在大塊數(shù)據(jù)和小塊數(shù)據(jù)情況下的發(fā)布/訂閱功能,News模塊和Weather模塊內(nèi)部又分為2個模塊:ChronoSync實現(xiàn)了發(fā)布者之間的全數(shù)據(jù)集同步,PLSync和PSSync分別實現(xiàn)了適合于大塊數(shù)據(jù)和小塊數(shù)據(jù)傳輸?shù)陌l(fā)布者和訂閱者之間的部分數(shù)據(jù)集同步。
針對系統(tǒng)的News模塊和Weather模塊均考慮到3種應用場景:多個發(fā)布者、一個發(fā)布者和多個訂閱者、多個發(fā)布者和多個訂閱者。因此,測試用的3種網(wǎng)絡拓撲如圖4所示。測試過程中,為了盡可能單獨測試每個功能,在每一個應用場景下又設計了若干個不同的測試用例,測試用例匯總?cè)绫?所示。
測試結(jié)果顯示,本系統(tǒng)實現(xiàn)了全部的預定功能,具體有:發(fā)布者之間、發(fā)布者和訂閱者之間建立連接、斷開連接;發(fā)布者發(fā)布信息;訂閱者訂閱信息、取消訂閱信息;發(fā)布者與訂閱者進行部分數(shù)據(jù)集同步;發(fā)布者與訂閱者進行全數(shù)據(jù)集同步;對訂閱者錯誤的容錯處理。
圖3 系統(tǒng)總體架構(gòu)圖Fig.3 system architecture
圖4 系統(tǒng)功能測評網(wǎng)絡拓撲圖Fig.4 Network topologies for system functional test
表3 測試用例匯總表Tab.3 Summary of test cases
在ndnSIM 2.4模擬器上對設計的2種發(fā)布/訂閱協(xié)議進行性能測評,評測所用網(wǎng)絡拓撲為一個3級樹狀拓撲(如圖5所示),根節(jié)點作為發(fā)布者,4個葉節(jié)點分別作為訂閱者。發(fā)布者有15個主題可供訂閱者訂閱,每個訂閱者隨機訂閱n個主題,發(fā)布者每次隨機選取一個主題發(fā)布內(nèi)容,總共發(fā)布m次。實驗統(tǒng)計隨著n和m的變化,通用情況下的發(fā)布/訂閱模式、小塊數(shù)據(jù)傳輸場景的發(fā)布/訂閱模式下2個測評指標的變化,2個評測指標為:①系統(tǒng)效率,即傳輸?shù)男畔?shù)與網(wǎng)絡所有節(jié)點傳輸?shù)陌倲?shù)的比值,傳輸一個信息指訂閱者的一次訂閱或者取消訂閱、發(fā)布者的一次發(fā)布;②從發(fā)布者發(fā)布數(shù)據(jù)到訂閱者接收到數(shù)據(jù)的時延,訂閱者所接收到數(shù)據(jù)的來源可以是發(fā)布者也可以是網(wǎng)絡內(nèi)緩存。實驗參數(shù)統(tǒng)計見表4。
3.3.1 系統(tǒng)效率
實驗統(tǒng)計通用情況下的發(fā)布/訂閱模式、小塊數(shù)據(jù)傳輸場景的發(fā)布/訂閱模式在訂閱比例不同(即n=5和n=10時),隨著發(fā)布次數(shù)m的增加,網(wǎng)絡內(nèi)所有節(jié)點傳輸包的總數(shù)N的變化,由此得到系統(tǒng)效率的變化,系統(tǒng)效率的計算公式為
圖5 實驗拓撲圖Fig.5 Network topology for simulation
表4 實驗參數(shù)表Tab.4 Simulation parameters
實驗結(jié)果如圖6所示,從實驗結(jié)果可以得到以下結(jié)論:1)小塊數(shù)據(jù)傳輸場景的發(fā)布/訂閱模式比通用情況下的發(fā)布/訂閱模式的系統(tǒng)效率高。這是因為在設計上小塊數(shù)據(jù)傳輸場景的發(fā)布模式充分利用了傳輸數(shù)據(jù)小的特點,巧妙利用NDN的命名機制,使數(shù)據(jù)發(fā)布的通信過程相對于通用情況下的發(fā)布/訂閱模式減半;2)訂閱比例越高,通用情況下的發(fā)布/訂閱模式系統(tǒng)效率越高,小塊數(shù)據(jù)傳輸場景的發(fā)布/訂閱模式系統(tǒng)效率基本不變。這是因為訂閱比例越高,不同訂閱者訂閱相同主題的可能性越高,發(fā)布者發(fā)布數(shù)據(jù)時,部分訂閱者更有可能從網(wǎng)絡緩存中得到數(shù)據(jù),因此系統(tǒng)效率有提升;3)訂閱比例一定的時候,發(fā)布次數(shù)越多,通用情況下的發(fā)布/訂閱模式系統(tǒng)效率有所降低,小塊數(shù)據(jù)傳輸場景的發(fā)布/訂閱模式系統(tǒng)效率有所提高。
3.3.2 接收時延
實驗統(tǒng)計在n=10時,通用情況下的發(fā)布/訂閱模式和小塊數(shù)據(jù)傳輸場景的發(fā)布/訂閱模式的訂閱者接收時延,實驗結(jié)果如圖7所示,小塊數(shù)據(jù)傳輸場景下訂閱者的接收時延明顯低于通用情況下訂閱者的接收時延,這是因為當發(fā)布者發(fā)布數(shù)據(jù)時,通用情況下訂閱者經(jīng)過兩輪Interest-Data傳輸之后接收到所發(fā)布的數(shù)據(jù),小塊數(shù)據(jù)場景下訂閱者經(jīng)過一輪Interest-Data傳輸之后就接收到所發(fā)布的數(shù)據(jù)。
圖6 系統(tǒng)效率實驗結(jié)果圖Fig.6 Simulation results for system efficiency
圖7 接收時延實驗結(jié)果圖Fig.7 Simulation results for system delay
本文提出了一種NDN下的通用的發(fā)布/訂閱模式通信協(xié)議,充分利用了NDN的上下拓撲一致性、天然適合多播、具有網(wǎng)內(nèi)緩存、多路徑路由和轉(zhuǎn)發(fā)的特性。在此基礎上,針對小塊數(shù)據(jù)傳輸?shù)膱鼍?,利用NDN命名機制對通用的發(fā)布/訂閱模式通信協(xié)議進行了優(yōu)化,使發(fā)布者發(fā)布更新數(shù)據(jù)的通信過程簡化一半。以天氣信息和新聞信息的發(fā)布/訂閱分別作為大塊數(shù)據(jù)和小塊數(shù)據(jù)傳輸?shù)膽脠鼍?,將設計的2種發(fā)布/訂閱通信協(xié)議在Android平臺實現(xiàn),實現(xiàn)了一個NDN下高效的天氣信息和新聞信息發(fā)布/訂閱系統(tǒng),該系統(tǒng)支持多發(fā)布者和多訂閱者的分布式發(fā)布和訂閱活動。
本文還分析了TCP/IP網(wǎng)絡和NDN網(wǎng)絡實現(xiàn)發(fā)布/訂閱模式的區(qū)別,對本文后續(xù)的工作有所幫助。本文的下一步工作將從實驗數(shù)據(jù)測量與對比角度出發(fā),對TCP/IP下的發(fā)布/訂閱模式和本文設計的發(fā)布/訂閱模式進行對比,量化分析TCP/IP網(wǎng)絡下的發(fā)布/訂閱系統(tǒng)和本文實現(xiàn)的發(fā)布/訂閱系統(tǒng)在數(shù)據(jù)包傳輸跳數(shù)、往返時延、數(shù)據(jù)請求比等指標上的表現(xiàn)。
[1] ZHANG L, AFANASYEV A, BURKE J, et al. Named data networking[J]. Acm Sigcomm Computer Communication Review, 2014, 44(3):66-73.
[2] 雷凱.信息中心網(wǎng)絡與命名數(shù)據(jù)網(wǎng)絡[M].北京:北京大學出版社,2015.
LEI Kai. Information centric networking(ICN) and named data networking(NDN)[M]. Beijing:Peking University Press, 2015.
[3] 汪錦嶺.面向Internet的發(fā)布/訂閱系統(tǒng)的關鍵技術研究[D].深圳:中國科學院研究生院(軟件研究所),2005.
WANG Jinling. Research on Key Technologies in Internet-scale Publish/Subscribe Systems[D]. Shenzhen: Institute of Software, Chinese Academy of Sciences, 2005.
[4] CARZANIGA A, PAPALINI M, WOLF A L. Content-based publish/subscribe networking and information-centric networking[C]//ACM SIGCOMM Workshop on Information-Centric Networking. Toronto, Ontario, Canada: ACM, 2011:56-61.
[5] CHEN J, ARUMAITHURAI M, JIAO L, et al. COPSS: An Efficient Content Oriented Publish/Subscribe System[C]//ACM/IEEE Symposium on Architectures for Networking & Communications Systems. Brooklyn, Ny, USA: IEEE, 2011:99-110.
[6] DRIRA W, FILALI F. A Pub/Sub extension to NDN for efficient data collection and dissemination in V2X networks[C]// IEEE, International Symposium on A World of Wireless, Mobile and Multimedia Networks. Sydney, NSW, Australio: IEEE, 2014:1-7.
[7] DETTI A, TASSETTO D, MELAZZI N B, et al. Exploiting content centric networking to develop topic-based, publish-subscribe MANET systems[J]. Ad Hoc Networks, 2015, 24:115-133.
[8] 馬建剛,黃濤,汪錦嶺,等.面向大規(guī)模分布式計算發(fā)布訂閱系統(tǒng)核心技術[J].軟件學報,2006,17(1):134-147.
MA Jiangang, HUANG Tao, WANG Jinling, et al. Underlying techniques for large-scale distributed computing oriented publish/subscribe system[J]. Journal of Software, 2006, 17(1):134-147.
[9] JACOBSON V L, SMETTERS D K, THORNTON J D, et al. Networking named content[C]// conference on emerging network experiment and technology. Rome, Italy: ACM, 2009: 1-12.
[10] 樸雪威,鄭亦哲,雷凱.命名數(shù)據(jù)網(wǎng)絡中的移動管理技術綜述[J].計算機應用研究,2017,34(4):961-964.
PU Xuewei, ZHENG Yizhe, LEI Kai. Survey of mobility management technologies based on named data networking[J].Application Research of Computers, 2017, 34(4):961-964.
[11] ZHU Z, AFANASYEV A. Let’s ChronoSync: Decentralized dataset state synchronization in Named Data Networking[C]//IEEE International Conference on Network Protocols.[S.l.]: IEEE, 2014:1-10.
(編輯:魏琴芳)