劉福泉
摘 要: 即時通信是一類非常實(shí)用的網(wǎng)絡(luò)應(yīng)用程序,常見的即時通信軟件一般采用基于IP網(wǎng)絡(luò)的客戶端-服務(wù)器設(shè)計方式,這是簡單和流行的做法,但存在一些缺點(diǎn),如單點(diǎn)失效、流量集中和安全問題。命名數(shù)據(jù)網(wǎng)絡(luò)是一種以數(shù)據(jù)為中心的網(wǎng)絡(luò),本身具有很好的安全性和多播特性。設(shè)計了一款基于命名數(shù)據(jù)網(wǎng)絡(luò)的分布式即時通信系統(tǒng)HAHA,避免了單點(diǎn)失效和流量集中的問題,改善了數(shù)據(jù)傳輸效率和安全性。在NS3上進(jìn)行了仿真實(shí)驗(yàn),證明了HAHA軟件較好的網(wǎng)絡(luò)性能。
關(guān)鍵詞: 命名數(shù)據(jù)網(wǎng)絡(luò); 即時通信; 分布式; 客戶-服務(wù)器
中圖分類號:TP319 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2015)09-19-03
HAHA:instant messaging system based on NDN
Liu Fuquan
(Jiyang College of Zhejiang A&F University, Zhuji, Zhejiang 311800, China)
Abstract: Instant messaging software is a useful network application, common instant messaging software is generally client-server designed based on IP network, it is a simple and popular method, but there are some shortcomings, such as single point failure, traffic concentration and security issues. NDN (Named data networking) is an information-centric networking, itself has a very good security and multicast characteristics. In this paper, a distributed instant messaging system named HAHA is designed, which avoids the problem of single point failure and traffic concentration, and improves the efficiency and security of data transmission. The HAHA shows good network performance in the simulation experiment on NS3 simulator.
0 引言
即時通信是一種非常有用的網(wǎng)絡(luò)應(yīng)用程序,已經(jīng)被廣泛用于一組參與者之間進(jìn)行信息交流。已有的即時通信軟件一般采用基于IP網(wǎng)絡(luò)的客戶端-服務(wù)器設(shè)計方式,這是簡單和流行的做法,但也有缺點(diǎn),比較突出的問題是單點(diǎn)失效和大量訪問流量都集中在少數(shù)幾臺服務(wù)器上。此外,客戶端-服務(wù)器模型還容易成為攻擊的目標(biāo),因?yàn)榉?wù)器的地址是公開的[1]。
HAHA是本文設(shè)計的一款基于命名數(shù)據(jù)網(wǎng)絡(luò)的分布式即時通信軟件,利用命名數(shù)據(jù)網(wǎng)絡(luò)[2]天生的安全和組播優(yōu)勢,避免了在客戶端-服務(wù)器和P2P模型中遇到的問題。HAHA系統(tǒng)類似于QQ,是一款即時通信系統(tǒng)。QQ系統(tǒng)采用了基于客戶-服務(wù)器的實(shí)現(xiàn)方式,系統(tǒng)由服務(wù)器對所有參與者進(jìn)行管理,參與者通過客戶端軟件登錄和聊天。HAHA系統(tǒng)是一種去中心化系統(tǒng),即沒有中心服務(wù)器,每個參與者所運(yùn)行的軟件既是服務(wù)器也是客戶端。相對客戶機(jī)-服務(wù)器模型,同步是設(shè)計HAHA的一個關(guān)鍵問題[3-4]。
1 背景
命名數(shù)據(jù)網(wǎng)絡(luò)被稱為未來網(wǎng)絡(luò)體系結(jié)構(gòu),源于內(nèi)容中心網(wǎng)絡(luò)(Content-Centric Networking,CCN)項(xiàng)目[5],其概念最早由Van Jacobson于2006年公開提出[6]。名數(shù)據(jù)網(wǎng)絡(luò)(NDN)與IP網(wǎng)絡(luò)不同,IP網(wǎng)絡(luò)是一種以主機(jī)為中心的網(wǎng)絡(luò),解決主機(jī)與主機(jī)之間的通信和資源共享,而NDN是一種以數(shù)據(jù)為中心的網(wǎng)絡(luò),每個數(shù)據(jù)包擁有一個全局唯一的名字,每個名字被加密簽名[7]。網(wǎng)絡(luò)僅僅需要根據(jù)數(shù)據(jù)包的名字對數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā)(或緩存),而不需要對數(shù)據(jù)包進(jìn)行其他(比如安全)的處理。因此,網(wǎng)絡(luò)從繁雜的工作中解脫出來,僅僅需要管理信息的流動,并用正確的信息快速響應(yīng)信息的消費(fèi)者,因此可以大大提高網(wǎng)絡(luò)效率。
在NDN中存在三種用戶角色,即內(nèi)容生產(chǎn)者、內(nèi)容發(fā)布者和內(nèi)容消費(fèi)者。內(nèi)容生產(chǎn)者創(chuàng)建用戶數(shù)據(jù)。內(nèi)容發(fā)布者將用戶數(shù)據(jù)進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換成網(wǎng)絡(luò)中的數(shù)據(jù)對象,每個數(shù)據(jù)對象都有一個相應(yīng)的加密的身份標(biāo)識,然后使用CCNx將這些數(shù)據(jù)發(fā)布到網(wǎng)絡(luò)中。內(nèi)容消費(fèi)者使用CCNx協(xié)議檢索發(fā)布者已經(jīng)進(jìn)行身份認(rèn)證過的用戶數(shù)據(jù)。這些內(nèi)容是通過使用發(fā)布者給定的名字進(jìn)行發(fā)布和定位的,而不是使用物理的主機(jī)(服務(wù)器)地址來發(fā)布和定位的。
在NDN網(wǎng)絡(luò)中使用了兩種消息:一是請求消息,被稱為Interest,二是響應(yīng)消息,被稱為data。響應(yīng)消息中封裝了消費(fèi)者所請求的有效負(fù)載,該有效負(fù)載被稱為內(nèi)容對象(Content Object)。消費(fèi)者發(fā)起請求,網(wǎng)絡(luò)將Interest消息進(jìn)行路由轉(zhuǎn)發(fā),可能要經(jīng)歷多個轉(zhuǎn)發(fā)器,每個轉(zhuǎn)發(fā)器采用最長前綴匹配算法對Interest消息中的名字字段進(jìn)行匹配。Interest在網(wǎng)絡(luò)中傳輸過程中在轉(zhuǎn)發(fā)器中會留下其狀態(tài)信息。這些狀態(tài)信息存儲在PIT(Pending Interest Table)表中。一旦發(fā)現(xiàn)有匹配的Content Object,這個Content Object就根據(jù)Interest在PIT表中留下的狀態(tài)信息,沿著Interest的傳輸路徑返回給消費(fèi)者。由于內(nèi)容本身是可自標(biāo)識的獨(dú)立的實(shí)體,任何內(nèi)容對象都可以被緩存在網(wǎng)絡(luò)設(shè)備上。因此,Interest消息請求的Content Object可能在網(wǎng)絡(luò)傳遞路徑上的緩存中得到匹配,而不是一定得在發(fā)布者那里才能得到匹配。
2 HAHA系統(tǒng)設(shè)計
2.1 系統(tǒng)概述
HAHA是一個類似QQ的即時通信軟件,相對于基于客戶-服務(wù)器工作方式的QQ而言,由于沒有一個中心服務(wù)器對系統(tǒng)進(jìn)行集中管理,同步成為設(shè)計HAHA系統(tǒng)的一個關(guān)鍵。為了實(shí)現(xiàn)同步操作,需要三個重要的數(shù)據(jù)表:用戶信息列表、聊天數(shù)據(jù)列表和數(shù)據(jù)狀態(tài)列表,分別管理用戶信息、聊天數(shù)據(jù)和數(shù)據(jù)狀態(tài)。用戶信息列表用于維護(hù)參與者的信息,具有全局性;聊天數(shù)據(jù)列表用于保存某個用戶的聊天記錄,具有局部性;聊天數(shù)據(jù)列表保存了每個聊天記錄的摘要信息和日志信息,一旦產(chǎn)生或刪除一條聊天記錄,系統(tǒng)就會在聊天數(shù)據(jù)信息表中記錄該聊天數(shù)據(jù)的摘要信息和日志信息。另外還需要三種類型的消息,即:數(shù)據(jù)請求消息、數(shù)據(jù)響應(yīng)消息和同步消息。每種消息采用固定首部和可變長度的消息體格式,其中固定首部定義了消息的版本、消息的類型、消息的總長度、消息的路由限制和消息的首部長度等信息,其格式如圖1所示。消息類型字段用于表示不同的消息類型,其中%x0001表示數(shù)據(jù)請求消息和同步請求消息,%x0002表示數(shù)據(jù)響應(yīng)消息。消息體采用類型-長度-值(Type-Length-Value,TLV)格式對具體的消息格式進(jìn)行定義,為了區(qū)別數(shù)據(jù)請求消息和同步請求消息,在請求消息類型的消息體部分設(shè)置了請求類型字段,請求類型為%x0000時表示數(shù)據(jù)請求消息,長度和值字段都為0,請求類型為%x0001時表示同步請求消息,長度為需要同步的消息名長度,值為需要同步的消息的名稱,如圖2所示。
[版本\&消息類型\&總長度\&路由跳數(shù)\&保留字\&首部長度\&]
圖1 消息的固定首部字段
[請求消息(1)\&消息長度\&消息名稱\&同步請求(1)\&長度\&同步數(shù)據(jù)名稱\&元數(shù)據(jù)\&]
圖2 同步請求字段
2.2 同步操作過程
HAHA系統(tǒng)中存在兩種聊天的情況,一種是好友之間對等聊天,另一種是一組用戶進(jìn)行群聊。系統(tǒng)中每個參與者和群組都有一個惟一的ID,該ID是成為參與者和群組中所產(chǎn)生的所有數(shù)據(jù)的前綴。
對等聊天的同步操作過程,數(shù)據(jù)發(fā)送端采用數(shù)據(jù)消息格式將數(shù)據(jù)發(fā)送到網(wǎng)絡(luò),數(shù)據(jù)的名稱由數(shù)據(jù)發(fā)布者的命名空間連接數(shù)據(jù)摘要組成,同時發(fā)布一條同步請求消息。同步請求消息中包含了聊天數(shù)據(jù)的名稱,接收端收到同步請求以后,提取同步請求中的聊天數(shù)據(jù)名稱,發(fā)起對聊天數(shù)據(jù)的請求。請求消息中的名字就是從同步請求提取出來的聊天數(shù)據(jù)的名稱。例如,有兩個HAHA好友Bob和Alice,當(dāng)Bob給Alice發(fā)送聊天信息時,Bob會把以其自身的命名空間為前綴結(jié)合聊天數(shù)據(jù)的摘要作為數(shù)據(jù)名,把聊天數(shù)據(jù)發(fā)布到網(wǎng)絡(luò)上,同時Bob還會發(fā)送一條同步消息,同步消息是一種Interest數(shù)據(jù)包格式,其中name字段中的內(nèi)容為Alice的ID,其后附加了Bob所發(fā)布的聊天數(shù)據(jù)的名稱字段,Alice一旦收到了Bob發(fā)布的同步數(shù)據(jù)包,就立刻發(fā)送一個同步響應(yīng)數(shù)據(jù)包,接下來再發(fā)出聊天數(shù)據(jù)請求,提取Bob給其發(fā)送的聊天數(shù)據(jù)。
群聊的同步操作過程,消息生產(chǎn)者會發(fā)布以群命名空間附加生產(chǎn)者命名空間和聊天數(shù)據(jù)摘要為名稱的聊天數(shù)據(jù)信息,同時發(fā)布一條以群組命名空間為名稱的同步請求消息。同步請求消息中包含了需要同步的數(shù)據(jù)信息的名稱,其他參與者一旦接收同步請求,就可以從同步請求中提取需要同步的數(shù)據(jù)信息的名稱,利用提取出來的數(shù)據(jù)名稱,重新發(fā)起數(shù)據(jù)信息請求,這樣就實(shí)現(xiàn)了參與者之間的信息同步。
2.3 信息的命名格式
在NDN網(wǎng)絡(luò)中,信息的命名是非常關(guān)鍵的。在HAHA系統(tǒng)中,采用了NDN的命名規(guī)范[10],每個群組有一個命名空間用于惟一標(biāo)識一個群組,每個參與者有各自的命名空間用于惟一標(biāo)識一個參與者。
參與者產(chǎn)生的聊天數(shù)據(jù)的名稱格式為:
聊天數(shù)據(jù)名稱=群組命名空間+生產(chǎn)聊天數(shù)據(jù)的參與者的命名空間+聊天數(shù)據(jù)的摘要。
好友之間對等聊天產(chǎn)生的聊天數(shù)據(jù)格式為:
聊天數(shù)據(jù)名稱=生產(chǎn)聊天數(shù)據(jù)的參與者的命名空間+ 聊天數(shù)據(jù)的摘要。
在圖3和圖4中分別給出群聊時產(chǎn)生的數(shù)據(jù)的命名格式和好友之間以對等方式聊天時產(chǎn)生的數(shù)據(jù)的命名格式。
[系統(tǒng)前綴][群組命名空間][/ndn/haha/chatroom@abc/Bob/a2sf34][參與者命名空間][內(nèi)容摘要]
圖3 群聊數(shù)據(jù)格式示例
[/ndn/haha/Alice/a892fsa][系統(tǒng)前綴][參與者命名空間][內(nèi)容摘要]
圖4 對等聊天數(shù)據(jù)格式示例
3 實(shí)驗(yàn)與分析
我們采用NS-3模擬器作為實(shí)驗(yàn)平臺[11],在平臺上模擬了一個基于命名數(shù)據(jù)網(wǎng)絡(luò)的分布式結(jié)構(gòu)的HAHA即時通信系統(tǒng)和一個基于TCP/IP協(xié)議棧[12]的客戶端-服務(wù)器結(jié)構(gòu)的QQ即時聊天系統(tǒng)。在NS-3模擬平臺上選擇了系統(tǒng)自帶的Sprint point-of-presence[13]方案分別對兩種實(shí)現(xiàn)系統(tǒng)進(jìn)行網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)規(guī)劃和設(shè)計,在結(jié)構(gòu)中定義了52個節(jié)點(diǎn)和84條鏈路。每條鏈路的帶寬均設(shè)置為100Mbps。在基于NDN的HAHA即時通信模擬系統(tǒng)的拓?fù)浣Y(jié)構(gòu)中,每個節(jié)點(diǎn)都實(shí)現(xiàn)了NDN協(xié)議和HAHA即時通信協(xié)議。在基于IP網(wǎng)絡(luò)的QQ即時通信模擬系統(tǒng)的拓?fù)浣Y(jié)構(gòu)中,設(shè)置了一個服務(wù)器節(jié)點(diǎn)和51個客戶端節(jié)點(diǎn)。在實(shí)驗(yàn)中分別設(shè)置了一個群組,在HAHA系統(tǒng)中52個節(jié)點(diǎn)都啟動了聊天進(jìn)程,每個節(jié)點(diǎn)向群組發(fā)送1000條消息,在基于TCP協(xié)議的即時通信系統(tǒng)中,51個客戶端節(jié)點(diǎn)啟動了客戶端聊天進(jìn)程,每個節(jié)點(diǎn)向群組發(fā)送1000條消息,1個服務(wù)器節(jié)點(diǎn)啟動了服務(wù)器進(jìn)程。
在實(shí)驗(yàn)中分別統(tǒng)計了兩者每條鏈路接收到的數(shù)據(jù)包數(shù)和每條消息的延時,統(tǒng)計數(shù)據(jù)表明,HAHA系統(tǒng)中每條鏈路上傳輸?shù)南?shù)比較均衡,而且消息的傳輸延遲較小。具體實(shí)驗(yàn)數(shù)據(jù)如圖5和圖6所示。
圖5 鏈路上消息數(shù)
圖6 傳輸延時
4 結(jié)束語
HAHA系統(tǒng)采用去中心化的系統(tǒng)結(jié)構(gòu),利用命名數(shù)據(jù)網(wǎng)絡(luò)天生的安全和組播特性,免去了單點(diǎn)失效和流量集中的問題,改善了內(nèi)容分發(fā)效率,提高了系統(tǒng)的安全性。利用仿真平臺證實(shí)了HAHA系統(tǒng)具有較好的鏈路均衡性和較低的消息傳輸延時。命名數(shù)據(jù)網(wǎng)絡(luò)被認(rèn)為是下一代互聯(lián)網(wǎng)體系結(jié)構(gòu)。設(shè)計和實(shí)現(xiàn)基于命名數(shù)據(jù)網(wǎng)絡(luò)的應(yīng)用程序有很好應(yīng)用前景和研究價值。
參考文獻(xiàn):
[1] Zhehao Wang, Zening Qu, Jeff Burke. Matryoshka: Design of
NDN Multiplayer Online Game[J]. ICN14, September 24-26,2014, Paris, France.
[2] L. Zhang.Named Data Networking (NDN) Project. PARC, Tech.
Rep. NDN-0001,October 2010.
[3] Z. Zhu, A. Afanasyev. ChronoSync: Decentralized dataset state
synchronization in Named Data Networking. ICNP 2013, Oct. 2013.
[4] Z. Zhu, C. Bian, A. Afanasyev, V. Jacobson, L.Zhang. Chronos:
Serverless multi-user chat over ndn. Technical report, NDN-0008,2012.
[5] Project CCNx. http://www.ccnx.org.
[6] V. Jacobson , K. Smetters, D. Thornton, F. Plass . Networking
Named Content. CoNEXT09, December 1-4, 2009, Rome, Italy.
[7] M. F.Bari, S. R.Chowdhury, R.Ahmed. A survey of naming and
routing in information-centric networks[J]. IEEE,2012.50(12):44-53
[8] CCNx Protocol.http://www.ccnx.org/releases/latest/doc/technical/
CCNxProtocol.html.
[9] Ccnx synchronization protocol. http://www.ccnx.org/releases/
latest/doc/technical/SynchronizationProtocol.html.
[10] D. Smetters, V. Jacobson. Securing Network Content. Technical
report, PARC,2009.
[11] A. Afanasyev, I. Moiseenko, and L. Zhang. ndnSIM: NDN
simulator for NS-3. NDN Technical Report NDN-0005, October 2012.http://named-data.net/techreports.html.
[12] Gary R. Wright, W.Richard Stevens. TCP/IP詳解(卷2):實(shí)現(xiàn)[M].
機(jī)械工業(yè)出版社,2000.
[13] N. Spring, R. Mahajan, D. Wetherall, and T. Anderson.
Measuring ISP topologies with Rocketfuel[J]. IEEE/ACM Transactions on Networking, vol. 12, no. 1, 2004.