劉福泉
摘 要: 即時通信是一類非常實用的網絡應用程序,常見的即時通信軟件一般采用基于IP網絡的客戶端-服務器設計方式,這是簡單和流行的做法,但存在一些缺點,如單點失效、流量集中和安全問題。命名數據網絡是一種以數據為中心的網絡,本身具有很好的安全性和多播特性。設計了一款基于命名數據網絡的分布式即時通信系統HAHA,避免了單點失效和流量集中的問題,改善了數據傳輸效率和安全性。在NS3上進行了仿真實驗,證明了HAHA軟件較好的網絡性能。
關鍵詞: 命名數據網絡; 即時通信; 分布式; 客戶-服務器
中圖分類號:TP319 文獻標志碼: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 引言
即時通信是一種非常有用的網絡應用程序,已經被廣泛用于一組參與者之間進行信息交流。已有的即時通信軟件一般采用基于IP網絡的客戶端-服務器設計方式,這是簡單和流行的做法,但也有缺點,比較突出的問題是單點失效和大量訪問流量都集中在少數幾臺服務器上。此外,客戶端-服務器模型還容易成為攻擊的目標,因為服務器的地址是公開的[1]。
HAHA是本文設計的一款基于命名數據網絡的分布式即時通信軟件,利用命名數據網絡[2]天生的安全和組播優勢,避免了在客戶端-服務器和P2P模型中遇到的問題。HAHA系統類似于QQ,是一款即時通信系統。QQ系統采用了基于客戶-服務器的實現方式,系統由服務器對所有參與者進行管理,參與者通過客戶端軟件登錄和聊天。HAHA系統是一種去中心化系統,即沒有中心服務器,每個參與者所運行的軟件既是服務器也是客戶端。相對客戶機-服務器模型,同步是設計HAHA的一個關鍵問題[3-4]。
1 背景
命名數據網絡被稱為未來網絡體系結構,源于內容中心網絡(Content-Centric Networking,CCN)項目[5],其概念最早由Van Jacobson于2006年公開提出[6]。名數據網絡(NDN)與IP網絡不同,IP網絡是一種以主機為中心的網絡,解決主機與主機之間的通信和資源共享,而NDN是一種以數據為中心的網絡,每個數據包擁有一個全局唯一的名字,每個名字被加密簽名[7]。網絡僅僅需要根據數據包的名字對數據包進行轉發(或緩存),而不需要對數據包進行其他(比如安全)的處理。因此,網絡從繁雜的工作中解脫出來,僅僅需要管理信息的流動,并用正確的信息快速響應信息的消費者,因此可以大大提高網絡效率。
在NDN中存在三種用戶角色,即內容生產者、內容發布者和內容消費者。內容生產者創建用戶數據。內容發布者將用戶數據進行轉換,轉換成網絡中的數據對象,每個數據對象都有一個相應的加密的身份標識,然后使用CCNx將這些數據發布到網絡中。內容消費者使用CCNx協議檢索發布者已經進行身份認證過的用戶數據。這些內容是通過使用發布者給定的名字進行發布和定位的,而不是使用物理的主機(服務器)地址來發布和定位的。
在NDN網絡中使用了兩種消息:一是請求消息,被稱為Interest,二是響應消息,被稱為data。響應消息中封裝了消費者所請求的有效負載,該有效負載被稱為內容對象(Content Object)。消費者發起請求,網絡將Interest消息進行路由轉發,可能要經歷多個轉發器,每個轉發器采用最長前綴匹配算法對Interest消息中的名字字段進行匹配。Interest在網絡中傳輸過程中在轉發器中會留下其狀態信息。這些狀態信息存儲在PIT(Pending Interest Table)表中。一旦發現有匹配的Content Object,這個Content Object就根據Interest在PIT表中留下的狀態信息,沿著Interest的傳輸路徑返回給消費者。由于內容本身是可自標識的獨立的實體,任何內容對象都可以被緩存在網絡設備上。因此,Interest消息請求的Content Object可能在網絡傳遞路徑上的緩存中得到匹配,而不是一定得在發布者那里才能得到匹配。
2 HAHA系統設計
2.1 系統概述
HAHA是一個類似QQ的即時通信軟件,相對于基于客戶-服務器工作方式的QQ而言,由于沒有一個中心服務器對系統進行集中管理,同步成為設計HAHA系統的一個關鍵。為了實現同步操作,需要三個重要的數據表:用戶信息列表、聊天數據列表和數據狀態列表,分別管理用戶信息、聊天數據和數據狀態。用戶信息列表用于維護參與者的信息,具有全局性;聊天數據列表用于保存某個用戶的聊天記錄,具有局部性;聊天數據列表保存了每個聊天記錄的摘要信息和日志信息,一旦產生或刪除一條聊天記錄,系統就會在聊天數據信息表中記錄該聊天數據的摘要信息和日志信息。另外還需要三種類型的消息,即:數據請求消息、數據響應消息和同步消息。每種消息采用固定首部和可變長度的消息體格式,其中固定首部定義了消息的版本、消息的類型、消息的總長度、消息的路由限制和消息的首部長度等信息,其格式如圖1所示。消息類型字段用于表示不同的消息類型,其中%x0001表示數據請求消息和同步請求消息,%x0002表示數據響應消息。消息體采用類型-長度-值(Type-Length-Value,TLV)格式對具體的消息格式進行定義,為了區別數據請求消息和同步請求消息,在請求消息類型的消息體部分設置了請求類型字段,請求類型為%x0000時表示數據請求消息,長度和值字段都為0,請求類型為%x0001時表示同步請求消息,長度為需要同步的消息名長度,值為需要同步的消息的名稱,如圖2所示。
[版本\&消息類型\&總長度\&路由跳數\&保留字\&首部長度\&]
圖1 消息的固定首部字段
[請求消息(1)\&消息長度\&消息名稱\&同步請求(1)\&長度\&同步數據名稱\&元數據\&]
圖2 同步請求字段
2.2 同步操作過程
HAHA系統中存在兩種聊天的情況,一種是好友之間對等聊天,另一種是一組用戶進行群聊。系統中每個參與者和群組都有一個惟一的ID,該ID是成為參與者和群組中所產生的所有數據的前綴。
對等聊天的同步操作過程,數據發送端采用數據消息格式將數據發送到網絡,數據的名稱由數據發布者的命名空間連接數據摘要組成,同時發布一條同步請求消息。同步請求消息中包含了聊天數據的名稱,接收端收到同步請求以后,提取同步請求中的聊天數據名稱,發起對聊天數據的請求。請求消息中的名字就是從同步請求提取出來的聊天數據的名稱。例如,有兩個HAHA好友Bob和Alice,當Bob給Alice發送聊天信息時,Bob會把以其自身的命名空間為前綴結合聊天數據的摘要作為數據名,把聊天數據發布到網絡上,同時Bob還會發送一條同步消息,同步消息是一種Interest數據包格式,其中name字段中的內容為Alice的ID,其后附加了Bob所發布的聊天數據的名稱字段,Alice一旦收到了Bob發布的同步數據包,就立刻發送一個同步響應數據包,接下來再發出聊天數據請求,提取Bob給其發送的聊天數據。
群聊的同步操作過程,消息生產者會發布以群命名空間附加生產者命名空間和聊天數據摘要為名稱的聊天數據信息,同時發布一條以群組命名空間為名稱的同步請求消息。同步請求消息中包含了需要同步的數據信息的名稱,其他參與者一旦接收同步請求,就可以從同步請求中提取需要同步的數據信息的名稱,利用提取出來的數據名稱,重新發起數據信息請求,這樣就實現了參與者之間的信息同步。
2.3 信息的命名格式
在NDN網絡中,信息的命名是非常關鍵的。在HAHA系統中,采用了NDN的命名規范[10],每個群組有一個命名空間用于惟一標識一個群組,每個參與者有各自的命名空間用于惟一標識一個參與者。
參與者產生的聊天數據的名稱格式為:
聊天數據名稱=群組命名空間+生產聊天數據的參與者的命名空間+聊天數據的摘要。
好友之間對等聊天產生的聊天數據格式為:
聊天數據名稱=生產聊天數據的參與者的命名空間+ 聊天數據的摘要。
在圖3和圖4中分別給出群聊時產生的數據的命名格式和好友之間以對等方式聊天時產生的數據的命名格式。
[系統前綴][群組命名空間][/ndn/haha/chatroom@abc/Bob/a2sf34][參與者命名空間][內容摘要]
圖3 群聊數據格式示例
[/ndn/haha/Alice/a892fsa][系統前綴][參與者命名空間][內容摘要]
圖4 對等聊天數據格式示例
3 實驗與分析
我們采用NS-3模擬器作為實驗平臺[11],在平臺上模擬了一個基于命名數據網絡的分布式結構的HAHA即時通信系統和一個基于TCP/IP協議棧[12]的客戶端-服務器結構的QQ即時聊天系統。在NS-3模擬平臺上選擇了系統自帶的Sprint point-of-presence[13]方案分別對兩種實現系統進行網絡拓撲結構規劃和設計,在結構中定義了52個節點和84條鏈路。每條鏈路的帶寬均設置為100Mbps。在基于NDN的HAHA即時通信模擬系統的拓撲結構中,每個節點都實現了NDN協議和HAHA即時通信協議。在基于IP網絡的QQ即時通信模擬系統的拓撲結構中,設置了一個服務器節點和51個客戶端節點。在實驗中分別設置了一個群組,在HAHA系統中52個節點都啟動了聊天進程,每個節點向群組發送1000條消息,在基于TCP協議的即時通信系統中,51個客戶端節點啟動了客戶端聊天進程,每個節點向群組發送1000條消息,1個服務器節點啟動了服務器進程。
在實驗中分別統計了兩者每條鏈路接收到的數據包數和每條消息的延時,統計數據表明,HAHA系統中每條鏈路上傳輸的消息數比較均衡,而且消息的傳輸延遲較小。具體實驗數據如圖5和圖6所示。
圖5 鏈路上消息數
圖6 傳輸延時
4 結束語
HAHA系統采用去中心化的系統結構,利用命名數據網絡天生的安全和組播特性,免去了單點失效和流量集中的問題,改善了內容分發效率,提高了系統的安全性。利用仿真平臺證實了HAHA系統具有較好的鏈路均衡性和較低的消息傳輸延時。命名數據網絡被認為是下一代互聯網體系結構。設計和實現基于命名數據網絡的應用程序有很好應用前景和研究價值。
參考文獻:
[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):實現[M].
機械工業出版社,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.