刘福泉
摘 要: 即时通信是一类非常实用的网络应用程序,常见的即时通信软件一般采用基于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.