一种IPv4和IPv6混合网络中P2P通信方法
2015-11-30卢慧李华吴承勇
文/卢慧 李华 吴承勇
一种IPv4和IPv6混合网络中P2P通信方法
文/卢慧1李华2吴承勇2
P2P网络是一种构建在互联网上的分布式网络,打破了传统的Client/Server模式,在网络中的每个结点的地位都是对等的。每个结点既充当服务器,为其他结点提供服务,同时也享用其他结点提供的服务。由于P2P网络极大提高了Internet中信息、带宽和计算资源的利用率,因此得到了迅速发展。随着IPv4地址的耗尽,IPv4网络向IPv6网络过渡成为必然,但IPv4的发展已有30多年历史,现有的大多数网络设备都是基于IPv4设计的,在短时间内完全实现IPv4到IPv6的转换不切实际,IPv4/ IPv6混合网必然会长时间共存。目前多数P2P研究都是在两个P2P结点之间具有相同通信协议(如IPv4)的基础上进行的。因此P2P系统中运行IPv4协议的结点与运行IPv6协议的结点之间的通信逐渐成为一个问题,如果无法解决好这个问题,P2P技术的发展必将受到阻碍。
为解决互联网上运行IPv4协议的P2P结点与运行IPv6协议的P2P结点之间的相互通信问题,本文结合IPv4向IPv6三种过渡方案之双协议栈技术和P2P系统,提出一种IPv4/IPv6混合网络中基于中转结点的P2P通信方法。
基于中转结点的P2P通信方法
本文赋予运行双协议栈的结点双重角色,即它既是P2P网络中的普通结点,可以参与资源共享,又可以作为中转结点,实现IPv4结点和IPv6结点的通信。例如,IPv4结点需要得到IPv6网络的资源时,只要发送资源转发请求包到中转结点,由中转结点获取资源后发送给IPv4结点即可。同理IPv6结点也可以向中转结点请求IPv4网络的资源。从而实现IPv4/IPv6混合网络中不同协议结点之间的通信。此法不需对网络硬件做任何改动,只需要结点自己判断网络类型(纯IPv4协议栈、纯IPv6协议栈、IPv4/IPv6双协议栈)来设定自己的结点类型。
本文以采用中心化拓扑的Bittorrent系统为研究背景,整个系统包括两部分:纯IPv4网络的P2P子系统和纯IPv6网络的P2P子系统,包含三类结点,即纯IPv4结点Peer_v4、纯IPv6结点Peer_v6、双协议栈结点Peer_v4v6(该类结点同时支持与IPv4和IPv6结点的通信),系统还包括安装双协议栈的索引服务器Tracker_v4v6、安装双协议栈的种子服务器。系统网络拓扑图如图1所示。
当Peer_v4可以从IPv4网络的P2P子系统得到资源分片时,则按照正常的P2P协议进行通信。当Peer_v4无法从IPv4网络的子系统得到资源分片时,则按随即选择策略选择一个Peer_v4v6作为中转结点,根据随机片段选择算法挑选一个需要的片段,然后向选择的Peer_v4v6发起资源转发请求,由Peer_v4v6在IPv6网络的P2P子系统中请求该资源片段,Peer_v4v6获得该资源片段后转发给Peer_v4。反之,Peer_v6同样可以通过Peer_v4v6请求到来自IPv4网络的P2P子系统的资源分片。Peer_v4v6同时在两个P2P网络子系统中下载分片,同时作为中转结点要优先下载来自Peer_v4或Peer_ v6资源转发请求所要的分片。
下面详细说明Peer_v4向Peer_v4v6发送数据中转请求的过程。
假设:图1所示P2P系统中有IPv4网络里的一对等端Peer_v4为机器P4_1,其IP地址是201.58.170.5;一运行IPv4和IPv6双协议栈的对等端Peer_v4v6为机器P46_1,其IPv4地址是201.58.173.3,IPv6地址是2001::1;IPv6网里的一对等端Peer_v6为机器P6_1,IP地址是2003::3。
图1 混合网络中基于请求转发机制的P2P通信网络拓扑
1.对等结点Peer获取种子文件并向索引服务器注册信息。
首先结点P4_1、P46_1和P6_1从IPv4/IPv6种子服务器获取种子文件,并从中提取索引服务器Tracker_v4v6的信息,向Tracker_v4v6发起注册请求,注册信息包括Peer的结点标识、IP地址(Peer_v4v6需提交IPv4和IPv6两个地址)、结点类型和对等通信端口。
Tracker_v4v6收到Peer的请求消息后,保存该Peer的信息,并将邻居结点信息(包含Peer的结点标识、IP地址、结点类型和对等通信端口)返回给该Peer。这里的邻居结点对Peer_v4来说是指IPv4网络中P2P子系统中的邻居结点,包括Peer_v4与Peer_ v4v6。对Peer_v4v6来说是指整个P2P系统中的邻居结点,包括Peer_v4,Peer_v6与Peer_v4v6。对Peer_v6来说是指IPv6网络的P2P子系统中的邻居结点,包括Peer_v6与Peer_v4v6。
2.Peer_v4向Peer_v4v6发送数据中转请求的过程。
在收到邻居结点信息后,P4_1启动与P46_1的握手交互,同时,P6_1启动与P46_1的握手交互。当P4_1无法从当前IPv4 P2P网络得到更多新的资源分片,需要从IPv6 P2P网络得到资源时,则根据情况随机选择一个未有的资源分片向随机选择的中转结点(设为P46_1)发送资源转发请求消息。P46_1通过当前接收资源转发请求的数目来决定是否接收该请求。如果接收该请求,且本地有该资源则发送“有资源”(Resources have)消息给P4_1。如果接收请求但本地没有该资源则向拥有该资源的P6_1发送“请求资源”(Request)消息。
经过一段时间的传输,P46_1由IPv6 P2P网络从P6_1得到了该资源,通过IPv4 P2P网络发送“有资源”(Resources have)消息给P4_1。P4_1收到“有资源”(Resources have)消息后,判断自己是否拥有该资源。若有则发送取消资源转发请求消息给P46_1,P46_1收到取消资源转发请求后删除资源转发请求记录。若还没有该资源则发送“请求资源”(Request)消息给P46_1。P46_1收到“请求资源”(Request)消息后,发送资源给P4_1并删除资源转发请求记录。
在P2P通信过程中,P4_1、P6_1和P46_1定时向Tracker_v4v6发送更新消息,告知进度。具体通信流程如图2所示。
Peer_v6向Peer_v4v6发送数据中转请求的情况与之类似,不再赘述。
图2 混合网络中资源请求通信流程
验证
本文将P2P应用BitTorrent部署在IPv4/IPv6混合网络中,通过仿真实验来评估基于中转结点的P2P通信方法在IPv6发展过程中,对整个P2P系统性能的影响以及对IPv4用户和IPv6用户的P2P性能的影响。经过分析,在不同时期,当双协议栈结点占纯IPv6结点的比例小于20%时,P2P系统性能明显较差,双协议栈结点的数目在IPv6发展初期影响最为明显。当双协议栈结点占纯IPv6结点的比例大于20%时,系统平均完成时间稳定在较低水平。
本方法利用IPv4/IPv6混合网络中双协议栈结点来中转IPv4网络与IPv6网络中P2P结点间通信的消息,从而实现IPv4网络中P2P结点与IPv6网络中P2P结点的通信。其效率依赖于双协议栈的数目以及如何合理利用此类结点进行中转资源。
本方法需要在原有P2P协议中加入资源中转请求处理方面的消息处理,增加了原有协议的复杂性。但是对数据通信的流量不会有太大影响,侧重于通过信息交互来合理地疏导数据流量,从而使文件分布更加迅速有效。
(作者单位:1为内蒙古大学计算机学院,2为内蒙古大学网络信息中心)