具体实施方式
本发明的P2P流量优化系统是为了在保证P2P应用的用户体验的前提下,实现互联网络中的P2P流量引导,减少P2P流量对骨干网络的占用,保证其他传统主流内容的传播效果,使互联网业务正常开展。下面结合附图和实施例对本发明做进一步地描述。
一、整体网络构架
本实施例提供的P2P流量优化的网络系统,需要部署一种用于P2P流量优化的PPR(即P2P Redirector,中文名称是P2P重定向设备),在下文中将所述PPR均称为PPR服务器。同时,为了进一步优化P2P流量,本实施例也可以选择进一步部署PPC(即P2P Cache,中文名称是P2P缓存设备),在下文中将所述PPC称为PPC服务器。所述P2P流量优化的网络系统可以以自治域为单位进行部署,一个自治域可以对应一个互联网运营商管理的实际网络。图1和图2分别为运营商在单域和多域内部署PPR服务器和PPC服务器的网络构架示意图。
本实施例的一大特点就是将PPR服务器按照运营商的层次结构进行部署,每个PPR服务器形成一个P2P流量优化域,所述P2P流量优化域与运营商网络的相应自治域自然重合(运营商网络的自治域在部署PPR服务器后就形成P2P流量优化域,该P2P流量优化域所管辖的节点与原自治域一致,只是增加了PPR服务器),从而使P2P流量优化能够最大程度地接近实际网络,并且有利于利用运营商自身已知的一些信息对网络进一步地优化。
一个运营商的单域通常对应于一个城域网或校园网。运营商网络通常都具有层次化的子网结构。在一个实例中,运营商将所管理的网络有小到大分为PoP/Plot/SubNet/Net/Aera等不同层次,每个层次均包括若干个自治域(即子网)。为方便描述,不失一般性地,下文中均以PoP/Plot/SubNet/Net/Aera层次结构的运营商网络为例进行描述,但是,本发明的层次结构并不限于此,这是本领域技术人员易于理解的。
二、PPR服务器的部署
PPR服务器可以根据需要部署到PoP域至Aera域的各个层次。但是一般而言,PoP是运营商的一个拨号接入点,其下层的节点数较少,因此一般不考虑PPR部署到PoP层次内部。但这不是绝对的,运营商可以根据实际情况灵活决定各层次是否需要部署PPR服务器。图3示出了在一个Plot域中部署PPR服务器的示例。所述Plot域包含了若干个PoP域,每个PoP域均包含若干个P2P节点,各PoP域之间通过PoP接入点相互连接。在部署PPR服务器时,通过静态配置在本域的DNS服务器(域名服务器),将www.ddp.org注册为本域内的PPR的地址,客户端(即P2P节点)通过域名解析来获得所在域的PPR服务器的实际IP地址。所述PPR服务器仅为本域内的P2P节点提供服务。所述PPR服务器含有XML拓扑文件,所述XML拓扑文件描述本域的运营商拓扑结构,每个域内的PPR服务器均为运营商提供配置或修改XML拓扑文件的接口,这样可以更加有效的管理和优化P2P流量。
所述XML拓扑文件对运营商的网络描述主要包括四个部分的信息:
1、上级PPR的地址信息:当本域peer数量不够时,可以给用户返回上级PPR地址。当一个上级PPR是本地PPR的直接上级PPR时,称该上级PPR是本地PPR的父PPR。在本实施例中,所述上级PPR地址信息仅包括父PPR地址信息,但本发明并不限于此。容易理解,根据具体需求的 不同,所述上级PPR的地址信息也可以包括其它级别更高的PPR的地址信息。
2、运营商下属各个IP段的子网络信息:描述各IP段的属性。一个连续的IP段形成一个子网络,该子网络通常就是一个是最小的流量优化区域,根据各IP段的标识和属性,可提供流量优化的依据。
3、运营商网内各PoP节点之间的连通性信息:即各下级子网络之间的通信性能信息,用于描述运营商管理下所有PoP节点之间的通信性能。每个PoP节点自然的形成一个流量优化区域,当一个PoP节点区域之中peer数量不够的时候,可以通过PoP节点之间的连通性信息,找到最有效的另一个PoP节点区域之中的peer进行通信。运营商网内各PoP节点之间的连通性信息可以通过各PoP节点之间的连接权值来表达。
4、运营商希望进行流量优化的方式附加信息:运营商附加提供的优化建议信息。
在2和3提到的流量优化区域是自然形成的,如果某几个IP段之间或某几个PoP节点之间通信性能很好,运营商可以通过给出附加建议信息,优先它们之间的信息交换。所述附加建议信息可以是自治域合并的优先级信息。以下是一个XML拓扑文件的实例。
<?xml version=″1.0″encoding=″GB2312″?>
<Top>
<ParentPPR> //上级PPR地址
<Addr>159.226.219.217</Addr>
<Port>2008</Port>
</ParentPPR>
<Net> //运营商划分的各子网的网段信息
<Subnet>
<NetID>01</NetID> //自定义子网编号,用于标识一个IP段
<AddrStart>192.168.0.0</AddrStart> //该网段的始末IP和子网掩码
<AddrEnd>192.168.70.100</AddrEnd>
<MASK>255.255.0.0</MASK>
<Type>ADSL</Type> //网段类型
<Capacity>250</Capacity> //网段内现有主机数量
<PoPID>01</PoPID> //网段接入PoP节点编号
</Subnet>
<Subnet>...</Subnet>
<Subnet>...</Subnet>
</Net>
<Connectivity> //运营商下各PoP节点之间的连通性信息
<Term> //两个相互连接的PoP节点之间的连接信息
<PoPID>01</PoPID> //PoP节点ID标识信息为描述哪两个PoP节点连通性
<PoPID>02</PoPID>
<Cost>20</Cost> //自定义的两个PoP节点之间的开销,表示传输成本等
<Bandwidth>50</Bandwidth> //带宽,标识两PoP节点间的带宽属性
<Distance>4</Distance> //路由距离,标识两PoP节点间的远近
</Term>
<Term>...</Term>
<Term>...</Term>
</Connectivity>
<Recommend> //运营商给出的划分虚拟网络的建议
<PoP> //哪些PoP结合紧密,可以划分为一个虚拟网络
<Plot> //建议划分为一个虚拟网络的PoP节点ID放在一对
<PoPID>01</PoPID> //<Plot>标签内
<PoPID>02</PoPID>
<PoPID>03</PoPID>
</Plot>
<Plot>...</Plot>
</PoP>
<Sub> //哪些子网网段结合紧密,可以划分为一个小型虚拟网络
<Area> //建议划分为一个小型虚拟网络的IP段的ID放在一对
<NetID>01</NetID> //<Area>标签内
<NetID>02</NetID>
<NetID>03</NetID>
</Area>
<Area>...</Area>
</Sub>
</Recommend>
</Top>
本实施例以xml文件实现了轻量级的拓扑描述,具有很强可扩展性。但是,本发明的拓扑描述并不限于xml文件形式。现有技术中的拓扑描述一般需要建立数据库模式、编写数据库查询语言、维护数据库后台管理,过程非常繁琐,且成本较高;而本实施例通过XML文件查询简化了拓扑结构查询的问题,同时大幅减小了拓扑文件体积。另外,本实施例的实体设备种类少,只有PPR,PPC,DNS三类设备。再者,本实施例的协议设计简单,摒弃了P2P协议中很多字段(如BT中的MD5,piece),只保留了最必须的字段。可以看出,本实施例很好地实现了轻量级的系统设计,易于移植系统平台。
三、PPR服务器在本域内的优化方法
当一个P2P节点(下文中称为请求节点)请求某一目标资源时,处理步骤如下:
1)请求节点向本域的PPR服务器发出针对目标资源的请求。
2)所述PPR服务器在接到请求后,首先判断所述请求节点是否在本域内;如果不在本域内,则拒绝服务;如果在本域内,则在本域内查找含有所述目标资源的P2P节点,然后从中选择出临近所述请求节点的目标P2P节点。一般来说,优先选择与所述请求节点在同一子域(比如同一PoP域)的节点。当与所述请求节点在同一子域的节点数目不足时,再从临近 子域中选择目标节点。临近子域的优先级根据子域之间的连接权值决定。
参考图3,任意两个PoP接入点PoP_A和PoP_B之间的拓扑性能参数在XML拓扑文件中的<Connectivity>标签内描述,包括有路由距离distance、带宽throughput(主要用于优化流量),延时latency,丢包率lost(主要用于优化用户体验)、其它花销cost(该参数含义是:运营商需要保留PoP_A和PoP_B间链路一定比例的容量以保证服务质量,那么把cost设为一较大数值,就能提高权值)。路由距离distance、带宽throughput、延时latency,丢包率lost和其它花销cost等参数均存储在PPR服务器的数据库表中。
有了以上参数,PPR在为域内(子网内)发出请求的客户端节点返回peer list时,可以在域内随机返回的基础上,通过计算具有更优权值的PoP下的节点进行返回,以获得更加优化的效果(也即找到最优的peer进行通信)。PPR的优化算法描述如下:PoP_A和PoP_B间权值用路由距离、带宽、延时、其它花销的函数Weight=f(Cost,Throughput,Lantence,Lost,Distance)决定,
对于直播和点播类流媒体P2P应用, λ,γ为加权参数。
对于文件下载类流媒体P2P应用,
3)所述PPR服务器向所述请求节点返回目标P2P节点列表。
4)所述请求节点向目标P2P节点列表中的各节点发出请求并获取所述目标资源。
四、PPR服务器之间的优化方法
本实施例中,PPR服务器优先在自己所管辖的自治域内为资源请求节点寻找域内资源,如果某一层次的PPR服务器不能在自己所管辖的自治域内为资源请求节点找到合适的域内资源,那么系统执行以下步骤。
1)下级PPR服务器向它的上级父PPR发起资源请求;
2)父PPR服务器检索其本级的PPC服务器和自己所管辖的下级PPR服务器所汇报的资源;
3)如果父PPR服务器在自己本级的PPC服务器上检索到相应资源,则将该PPC服务器地址返回给发起请求资源的所述下级PPR服务器,并指令所述PPC为该下级PPR服务;
4)如果找到某一个下级域中有相应资源,则把同级交互的信令分别返回给请求的下级PPR服务器和拥有资源索引的下级PPR服务器。
5)如果找到多个下级域中有相应资源,超过了最初资源请求的数量,则上级父PPR执行链路优选算法,通过网络的量度信息找出较优的若干下级域,并如步骤4)返回。
6)下级PPR服务器得到上级父PPR服务器返回的信息,与相应上级PPC服务器或同级的PPR服务器进行交互,为本域内资源请求节点获取本域外的资源。
为了实现以上的交互,下级PPR服务器需定时向上级父PPR服务器发起资源汇报,即每隔一段时间在Announce报文中向上级PPR汇报并更新自己所拥有的本域资源列表。
上述方法中包括了同级PPR服务器之间的横向交互。在下级PPR服务器向上级父PPR服务器请求更广泛的资源检索时,父PPR服务器不会将资源交互节点扩展到其管辖的整个全域范围,而是根据资源检索的结果和链路优选算法决定若干个合适的下级域,然后通过信令启动其下级同层域之间的交互。本实施例中,两个同级PPR服务器能够直接进行资源交互,可以进一步地优化整个网络的P2P流量。
五、PPC服务器的部署
本实施例中的PPC服务器的主要目的是为了将热点内容局部化,优化运营商的骨干网流量压力。PPC服务器作为可选的设备部署在自治域的内部,在PPR服务器的调度下,为域内的P2P客户端,提供某些热门内容服务,从进一步减少域间的P2P流量,提高用户体验。
为了使PPC通过缓存服务实现流量优化,本实施例的PPC与PPR的交互过程主要包括如下步骤:
1)PPC向PPR注册;
2)PPR回复注册消息
3)PPC定时向PPR上报自己的缓存能力(该缓存能力同时作为一种心跳信息);
4)PPR请求PPC缓存列表
5)PPC返回缓存列表
6)PPR指令PPC缓存某资源。
7)PPR指令PPC为客户节点服务某资源
在PPR中,执行如下步骤:
1)PPR对每一项资源建立起根据其标识ID的索引,并关联到该资源的请求频度;
2)每隔一定时间,PPR定期对其维护的资源的请求频度进行快速排序;
3)PPR定期(可以是PPC的心跳间隔)根据各个PPC上报的缓存能力,通过快速排序算法优选其中能力较强者,指令其缓存请求频度最高的若干资源,即热点资源。
通过运行以上的交互PPC就能在PPR的引导下提供缓存服务。本实施例PPC需定期上报心跳,PPR则会定期对其查询和维护的缓存列表进行排序和优选。由于使用了具有资源和拓扑调度管理功能的PPR设备,根据较为准确的热点列表来指导缓存,本实施例能够大幅提高缓存命中率。
图4示出了一天内PPC缓存设备的进站流量flowInRate和出站流量flowOutRate,图中上方曲线是出站流量,下方曲线是进站流量,可以看出在PPC从外部缓存了相对少量的数据的同时,它为域内其它客户端节点提供了大量出站流量服务,其比率可以达到1∶10左右,即缓存的利用率是相当高的,为域内节省了大量重复流量,达到优化效果。
下面定义“缓存命中率”
缓存命中率=(出站流量-进站流量)/出站流量
由图5可以直观地看出该指标反映了PPC自身的效率,其缓存数据的利用率接近90%,可见PPR的调度引导策略(主要指热点列表的生成和维护)是高效的。
PPC服务器作为一个网络附加设备进行主动下载缓存应该不会消耗过多的网络资源,研究表明“网络中20%的资源消耗了80%的连接和流量”,所以热点内容的数量相对于资源总数是少量的,PPC服务器只要不重复缓存热点,就可以避免大量的下载和存储。
本实施例基于自治域构建流量优化域,切合实际的网络环境,避免了某些现有技术中理想化模型与实际网络环境不匹配而造成的问题。
另外,本实施例是一种轻量级设计,所需部署的设备少,部署简单,成 本低廉。
再者,本实施例提供了分级管理策略。一般认为P2P网络是一个分布式系统,即使引进混合架构,也只有扁平的超级节点层次管理。而本发明方案为了更好地从局部域到全网解决流量优化问题,引入了可扩展的分级架构,分别在不同范围域(即不同级别的自治域)内部署设备,达到协同联动的优化效果。通常来说,PPR服务器可以部署到3级甚至更多级别的自治域,这样可以达到更好的协同联动效果。
进一步地,本实施例构建了一个兼容各类P2P应用的拓扑信息描述文件,现有的P2P应用可以在其原有协议不变的前提下,附加本发明提出的拓扑信息描述文件,就能达到流量优化的效果,在普遍应用达到较好效果后,可以进一步发展成为P2P业界的标准化协议。
下面介绍申请人以典型的P2P协议BitTorrent(缩写为BT)为例所作的测试。申请人在一个城域网内部部署了本实施例的PPR服务器和PPC服务器,从而形成P2P流量优化的网络系统,在PPR服务器开启之前和开启之后分别进行了持续一周的测试。经过测试发现,在PPR服务器开启后,BT协议对出口流量的占用从原来的38%下降到了14%,同时HTTP等应用流量得到了回升,降低了出口的压力。同时由于域内用户在PPR的引导下,优先与临近的peer相连,并通过PPC服务器以代理缓存的方式从外网获取数据,用户的BT下载体验能够得到保障。通过监测大量客户端的BT下载速率,可以看出,在开启PPR服务器后,用户进行BT下载的平均速率有所提高。
以上所述的具体实施例对本发明的目的、技术方案以及有益效果进行了详细的说明。所应理解的是,上述内容仅为本发明的具体实施例而已,并不用于限制本发明。凡在本发明的精神与原则之内,所做的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。