基于网络环境感知的P2P通信方案设计

2011-09-07 10:17:02韩新超马永强郑秋生
计算机工程与设计 2011年8期
关键词:公网端口服务器

韩新超, 马永强, 郑秋生

(1.中原工学院计算机学院河南省郑州市网络安全评估重点实验室,河南郑州450007;2.河南理工大学计算机科学与技术学院,河南焦作454000)

0 引 言

P2P(Peer to Peer)通信技术即对等网络[1-5],是近年来发展的一种新的获取信息的方式,是一种主机不经过中继设备直接交换数据或服务的技术。在P2P通信模式中,通信节点之间通过直接通信实现信息的交换和资源的共享,这使得用户之间的沟通和交互变得更直接、更便捷。然而,由于网络环境的复杂性,在某些情况下,无法直接在两个对等点之间建立P2P会话以便完成通信和资源共享。例如,在目前的网络IPv4环境中,由于NAT(network address translator)设备的广泛存在,使得处于不同内部私有网络中的主机直接进行通信变得很困难甚至不可能[6-8]。NAT技术旨在解决IPv4网络中地址匮乏的问题[9-11],位于NAT设备后的主机的地址通常为私有地址,这些地址不能在因特网络中路由,因此,NAT设备后的设备节点往往不能直接通信,需要借助中间服务器完成P2P会话的建立。即使在IP地址比较充裕的IPv6网络中,由于IPv4和IPv6隧道的存在,为了在不同网络中在IPv4和IPv6地址之间进行切换,NAT设备也将在很长一段时间存在[12-13]。因此,针对这些复杂的网络环境,本文提出了一种具有网络环境感知能力的P2P通信方案并予以实现,该方案旨在对P2P通信中的两个Peer环境进行感知,并根据感知的网络环境采用最优的P2P方案进行通信,以提高P2P会话的建立成功的连接率,提高端到端延时性能,同时尽可能的减小协议引入的开销。

1 P2P会话连接建立技术

现有P2P会话连接技术主要分为以下3种:服务器中转技术、反向连接技术、UDP打洞技术[14-15],各种技术的特点如表1所示。

表1 P2P会话连接技术比较

2 具有网络环境感知能力的P2P通信方案的设计和实现

2.1 通信方案描述

假定通信双方为peerA和Peer B。由于A和B所处的网络环境可能非常复杂,而且A和B可能无法直接通信(例如A和B均位于一个私有网络中),因此在实现中我们必须采用一个中间服务器ServerC服务P2P会话的建立。首先,peerA和Peer B向Server C注册。其次,当Peer A向Server C发起连接请求,请求连接PeerB。最后,ServerC根据PeerA和PeerB所处的网络环境为peerA和PeerB选择最优的通信方案。必要时,中间服务器将作为中转服务器为peer A和Peer B之间的通信进行中转。

2.2 具体方案实现

具有网络环境感知能力的P2P通信方案的设计分为两部分:服务器部分和对等点客户端部分,其目的在需要通信的对等点之间建立直连的P2P会话,会话建立过程根据感知的网络环境借助中间服务器完成。其实现算法分为以下几个步骤:

(1)部署中间服务器。首先,server C在某个UDP端口和某个公网地址上监听,等待来自peer客户端的连接。

(2)登陆的peer向中间服务器注册。Peer在登录时向中间服务器注册,注册时将本地端口和本地地址携带在登录消息中。服务器收到某peer的注册消息后,从注册消息体中获取该peer的本地地址和本地端口号 (以下简称私有端口和私有地址),同时调用getsockname获取该peer客户端的真正端口号、真正的地址(以下简称为公有地址和公有端口号)。注意公有地址和公有端口号可能是私有地址和私有端口经过NAT设备转换后得到的地址和端口号。

(3)Peer A向Server C请求连接Peer B。

(4)Server C分别向Peer A和Peer B返回其对等体的网络信息。返回的网络环境信息包括其通信Peer的私有地址、私有端口、公有地址和公有端口等信息。

(5)PeerA根据其自身和PeerB的信息进行网络环境感知。首先,Peer A确定其自身及其Peer B所处的网络环境:如果其自身的本地地址和服务器返回地址相同,则表明该Peer位于公网内;否则,则表明该Peer位于NAT设备之后。其次,根据Peer A其自身所处的网络环境和Peer B所处的网络环境,发起直接连接请求。其连接请求的socket端口对分为两种情况:(peer A本地地址和本地端口、Peer B本地地址和本地端口)、(peer A本地地址和本地端口、Peer B公网地址和公网端口)。如果PeerA位于NAT设备之后,则经过NAT设备之后,socket端口连接又被转化为(peer A公网地址和公网端口、Peer B本地地址和本地端口)、(peerA公网地址和公网端口、peerB公网地址和公网端口)。PeerA分别向这2个socke对t发送连接消息,连接信息中包含的请求的Peer ID信息和认证等信息。

(6)等待连接消息响应。Peer A向2个socket对发送连接消息后,将在一定时间等待连接响应。通过响应的socket对可以进一步确定两个 Peer所处的网络环境。若响应是来自socket对(peerA本地地址和本地端口、PeerB本地地址和本地端口),则表明Peer A和Peer B可以通过本地网络直接通信,PeerA和PeerB应该位于同一局域网内,PeerA和PeerB建立的P2P通话应该以本地通道优先。若响应消息来自(peerA本地地址和本地端口、Peer B公网地址和公网端口),则表明的PeerA和PeerB不在同一局域网环境中,则P2P会话通道必须通过NAT设备。同时,在这种情况,通过比较PeerB的公网地址和PeerB的私有地址情况判断PeerB是否位于某一私有网络中。需要注意的时候,有可能在一定的时间都不会受到连接响应消息,这是由于某些NAT设备不兼容性,导致UDP打洞失败,最终无法建立P2P会话。在这种情况下,通信方案将采用服务器中转技术的进行P2P通信中转。

2.3 实验结果及分析

在P2P通信的过程中,能感知P2P的相对网络环境并采用最优的方式进行通信,具有十分重要的意义,这对于节省网络带宽,提高传输效率具有十分重要的意义。为此,设计出一个通用的P2P即时通信验证平台,并对实现方案进行验证。仿真开发环境为Linux操作系统,开发语言为c语言,采用基于UDP的socket程序实现。利用Vmware模拟各种NAT网络拓扑以便对实现的方案的可用性进行测试。为了验证提出方案的完整性,将网络环境抽象为如表2所示的3种情况,并用Vmware模拟了各种网络并对提出的方案进行了测试。测试的结论及其分析如下:

针对各种拓扑结构,从3个方面比较各种P2P会话连接技术的协议性能。首先,针对会话连接建立成功率来比较,其实验结果如图1所示,其对应的具体值如表3所示。

从图1以及表3可以看出,在各种拓扑情况下,本文提出的网络感知P2P方案的连接建立成功率和服务器中转技术的成功率几乎等同。

表2 P2P会话拓扑分类

图1 各种P2P方案连接建立成功率对比

表3 连接建立成功率对比

在拓扑1环境测试中,由于Client A和Client B均具有公有地址,Client A和Client B能快速的建立P2P会话。在这种情况下,Peer A和Peer B均位于公共网络中,在对我们的方案测试中,P2P建立连接率为100%。需要注意的是,由于IP地址的匮乏,这种拓扑方案在现实情况中比较少见。

在拓扑2中,反向连接技术和UDP打洞技术由于网络环境的局限性,其连接建立的成功概率均相对较低,而对于本文提出的具有网络环境感知的P2P会话方案,其连接建立率可以达到99.7%。

在拓扑3中,这种优势更加明显。这是由于第3种拓扑是最复杂的拓扑,同时在P2P通信中也是最常见的拓扑。例如,在迅雷下载或者BT下载中,两个下载的用户大多数情况下都位于私有网络中,也就是位于NAT设备之后。在测试中,我们发现,99.8%左右的情况下,PeerA和PeerB能成功直接建立直连的P2P会话。其它的0.2%情况下,Peer A和Peer B之间的通信需要ServerC中转。这是由于某些NAT设备不兼容的原因。在第3种拓扑中,我们又对两种拓扑分别进行了测试。第一种情况下,Peer A和Peer B位于同一个私有网络中,在这种情况下,我们的通信方案感知到这种网络环境后,能在Peer和PeerB建立之间的通信会话并能在它们之间建立高速的传输通道,其传输效率非常高。在第二种情况中,Peer A和Peer B位于不同的NAT设备之后,也就是说Peer A和Peer B无法利用私有地址进行通信,其会话建立过程必须借助中间服务器。在20%的情况下,PeerA和PeerB无法建立直连的通信信道,其通信借助Server C完成。总体上来说,网络感知方案最终建立的P2P会话的成功率高达99.8%,可以不受这种网络环境的限制,而其它几种连接建立P2P会话的成功率较低。

其次,比较了各种连接的信令开销性能,其实验结果如图2所示。

图2 协议信令开销与传输数据对比

从图2可以看出,在各种拓扑测试中,服务器中转技术具有最高的协议开销,而具有网络感知的P2P方案的协议开销最小。这是因为服务器中转技术需要对所有的数据的进行中转,故其开销永远都为100%,这也是服务器中转技术很少采用的原因之一。而具有网络感知的P2P方案仅仅在会话建立初期需要产生某些信令开销,一旦会话建立成功,会话的对等体之间就可以直接通信,不会产生其它的信令开销。同时可以看出,拓扑3产生的信令开销要比拓扑2和拓扑1产生的信令开销要大,这是由于P2P方案为了感知网络环境所产生的额外开销。

最后,比较了各种连接技术的端到端时延性能,其实验结果如图3所示。从图中看出,在各种测试拓扑中,具有网络感知的P2P技术方案时延性能最好,而服务器中转技术的时延性能最差。具有网络感知的 P2P技术方案在拓扑1的情况下,其平均时延为220ms左右。随着拓扑结构复杂性提高,其时延性能降低。例如在拓扑3的情况下,具有网络感知的P2P技术方案其平均时延约为240ms。同理,其它几种技术方案在拓扑1的情况下其时延性能最好,在拓扑3的情况下其平均时延最长。其原因主要是由于随着网络拓扑结构的复杂性提高,P2P报文的处理时间变长,平均时延性能降低。例如在拓扑1的情况下,由于Peer A和PeerB均位于公网中,P2P报文不需要经过NAT设备的处理。而在拓扑3的情况下,由于Peer A和Peer B均位于NAT设备后,P2P报文需要经过至少两个NAT设备的处理,使得端到端的延时性能降低。相对于其它3种P2P通信方案,具有网络感知的P2P方案的端到端延时性能最好。这是由于,这种方案能对Peer A和Peer B所处的网络环境进行感知,然后利用最优的方案在Peer A和Peer B进行P2P通信,最优的方案使得端到端之间的时延降到最低。在所有的方案中,服务器中转技术的端到端延时性能最低,这是由于这种方案不考虑Peer A和Peer B所处的相对网络环境,所有的P2P报文均通过服务器中转,导致端到端延时增加。

图3 协议端到端延时对比

通过上述的实验,有如下结论:在P2P通信的绝大多数环境下,本文的方案能够在PeerA和PeerB之间建立直连的P2P通信,而且相对于其它P2P会话建立技术而言,具有更高的会话建立连接率,具有更少的信令开销,其端到端延时性能优于其它P2P通信方案。

3 结束语

本文提出了一种具有网络环境感知的P2P通信方案并予以实现,取得了良好的效果,方案能对各种网络拓扑进行很好的感知,而且,在80%的情况下能够建立直连的P2P会话,而在其它20%左右的情况,也能通过中转进行P2P通信。同时提出的方案相对于其它常用的方案而言,具有更少的通信协议开销,其端到端延时性能更好。但是,需要指出的是,在算法的设计过程中没有考虑多个P2P对等点通信的情况,对于如何利用感知的网络环境在多个对等点之间,有效的进行信息的传递和分析是未来需要研究的内容。同时,本文提出的算法在对等点间无法建立直连会话时,需要利用中转服务器进行中转,当这种情况比较多时,服务器的负担将较重,因此,如何在这种情况下利用P2P中的其它对等点进行信息中转对于改善该算法的可扩展性具有十分重要的意义,也是未来的研究工作的重点内容。

[1]徐向阳,韦昌法.基于NAT穿越技术的P2P通信方案的研究与实现[J].计算机工程与设计,2007,28(7):1559-1561.

[2]臧雪柏,郭睿,丛玉良,等.面向即时通信系统的P2P网络模型[J].吉林大学学报(工学版),2010,40(增刊):310-314.

[3]王嵩贺,董馨荧.基于P2P模型的安全即时通信软件的研究与开发[J].计算机光盘软件与应用,2010(9):140-141.

[4]侯孟书,卢显良,周旭,等.非结构化P2P系统的路由算法[J].电子科技大学学报,2005,34(1):105-108.

[5]熊伟,谢冬青,焦炳旺,等.一种结构化P2P协议中的自适应负载均衡方法[J].软件学报,2009,20(3):66-70.

[6]Guclu Hasan,Yuksel Murat.Scale-free overlay topologies with hard cutoffs for unstructured peer-to-peer networks[C].Toronto:Proceedings of the 27th International Conference on Distributed Computing Systems,2007:32-33.

[7]Eppinger J L.TCP connections for P2P apps:A software approach to solving the NAT problem[R].Pittsburgh,PA:Carnegie Mellon University,2005.

[8]魏立峰,刘丹斌,王庆辉.一种媒体流穿越NAT的算法设计与实现[J].计算机工程,2009,35(24):81-83.

[9]Yung-Li Chang,Hsiang-Kai Liao,Ce-Kuen Shieh,et al.A NAT traversal approach by using protocol behavior analysis[C].IIHMSP,2006:177-180.

[10]何伟.NAT技术的研究及其应用[J].怀化学院学报,2008,27(2):64-66.

[11]刘欣,王行建.NAT技术的研究与应用[J].自动化技术与应用,2008,27(7):52-53.

[12]李广华,朱志祥.NAT技术基本原理及其在实际中的应用[J].西安邮电学院学报,2009,14(1):91-95.

[13]姚政.NAT技术原理探究及在校园网上的应用实例[J].电脑知识与技术,2008(12):457-460.

[14]Ford B,Srisuresh P,Kegel D.Peer-to-peer communication across network address translators[C].Proceedings of the USENIX Annual Technical Conference,2005:179-192.

[15]Jennings C.NAT classification results using STUN[S].Internet-Draft,2006.

猜你喜欢
公网端口服务器
浅析大临铁路公网覆盖方案
中国新通信(2022年4期)2022-04-23 23:04:20
一种端口故障的解决方案
科学家(2021年24期)2021-04-25 13:25:34
公网铁路应急通信质量提升的技术应用
通信控制服务器(CCS)维护终端的设计与实现
端口阻塞与优先级
得形忘意的服务器标准
知识产权(2016年8期)2016-12-01 07:01:13
计算机网络安全服务器入侵与防御
基于公网短信的河北省高速公路数据传输应用
初识电脑端口
电脑迷(2015年6期)2015-05-30 08:52:42
生成树协议实例探讨
职业·中旬(2015年4期)2015-05-30 05:54:49