一种对等网络中充分利用带宽资源的数据传输方法及装置的制作方法

文档序号:7655415阅读:123来源:国知局
专利名称:一种对等网络中充分利用带宽资源的数据传输方法及装置的制作方法
技术领域
本发明涉及数据传输技术,特别是涉及一种对等网络中充分利用带宽资源的数据传输方法及装置。
背景技术
在目前的各种网络应用中,许多网络服务需要使用点对点技术(peer-to-peer,简称P2P)。P2P又称为对等互联网络技术,是一种用于不同PC(Personal Computer的缩写,也就是个人计算机)用户之间,不经过中继设备直接交换数据或服务的技术。
在互联网上提供在线实时流媒体直播服务时,需要使用P2P技术,在服务器端将实时流媒体数据封装成多个数据块,并通过一个数据驱动的P2P网络将这些数据块传输给每一个在线客户端。所述数据驱动的P2P网络具有以下特点(1)网络由许多P2P节点构成,这些节点包括在线用户(即客户端)和服务器,其中每个节点都和一部分其他节点相连接,这些节点称为该节点的邻居;(2)每一个P2P节点周期性地与它的邻居交换数据块可用性信息;(3)每一个P2P节点从它的邻居节点索取和接收自己所没有的数据块,并将自己所拥有的数据块发送给向自己索取的邻居,即主要由数据块的接收方决定数据块的传播路径,且每一个数据块的传播路径可能不同。
对于一个基于P2P技术的实时流媒体传输网络,存在以下等式服务器有效输出流量+所有客户端有效上传流量总和=所有客户端下载流量总和;其中,有效流量是指排除丢包等情况后的实际流量。
根据上述等式来衡量一个指标“所有客户端最大上传流量总和”,当这个值小于“所有客户端下载流量总和”的值时,“服务器有效输出流量”的值将大于零,即客户端下载流量中的一部分需要从服务器输出,这样使得P2P带宽增益存在一个理论上限(通常很低),这种情况称为P2P不可行。其中,所述带宽增益表示为所有客户端节点的实际使用的上传带宽之和与服务器端提供的上传带宽之比,这个值越高说明P2P起的作用越大。
如果“所有客户端最大上传流量总和”的值大于“所有客户端下载流量总和”的值,从理论上,服务器端只需要把原始流媒体数据块传输一份给一部分客户端,然后通过客户端之间的P2P传输,就可以将数据块最终传输到每一个客户端。这样,当直播在线人数足够多时,带宽增益将不再存在理论上限,这种情况称为P2P可行。
在目前的P2P网络中,通常使用TCP协议(Transmission ControlProtoeol,传输控制协议)进行P2P节点之间的数据传输。TCP协议是最为流行的传输层协议,它完美解决了网络层存在的数据包丢包、乱序等问题,实现了不可靠网络上的可靠传输,是CS(Client-Server,客户端-服务器)模式下视频应用的主要传输协议。
但是,对于采用NAT(Network Address Translator,网络地址转换)协议的网络(以下简称NAT网络),这种传输无法实现处于不同NAT网络的两个节点之间的通信。所述NAT网络结构呈现为一种类似防火墙的私有网结构,NAT网络外部的Internet网称为公网,NAT网络称为内网。内网节点与公网节点之间无法直接通信,需要通过NAT协议把内网地址转换为公网地址,实现内网节点与公网节点的连通。但是由于TCP协议的传输特性,不同内网的节点之间无法实现连通。
将处于NAT内部的节点称为NAT节点,处于NAT外部的节点称为非NAT节点。在采用TCP传输的P2P网络中,由于不同内网的NAT节点之间无法通信,使得大量NAT节点的上传带宽只能被少数非NAT节点利用(因为NAT节点能够与非NAT节点连接,但无法与其他不同NAT内部的节点连接),而非NAT节点的上传带宽虽然可以被所有节点利用(因为非NAT节点可以与所有NAT内部的节点连接),但在实际网络条件下,非NAT节点多是一些ADSL(AsymmetricDigital Subscriber Loop,非对称数字用户环路)节点,其上传带宽有限。所以当NAT节点在整个P2P网络中所占比例达到一定程度时,“所有客户端最大上传流量总和”将小于“所有客户端下载流量总和”,使得P2P不可行。

发明内容
本发明所要解决的技术问题是提供一种对等网络中充分利用带宽资源的数据传输方法及装置,以解决网络中的NAT节点数量达到一定程度时,造成P2P不可行的问题。
为解决上述技术问题,根据本发明提供的具体实施例,本发明公开了以下技术方案一种对等网络中的数据传输方法,所述对等网络包括内网节点和公网节点,包括内网节点向公网节点发送请求,请求中包含该节点的相关信息;所述公网节点将与自己相连的其他内网的节点信息发送给该内网节点;所述公网节点将该内网节点的相关信息发送给所述与自己相连的其他内网的节点;该内网节点根据接收到的其他内网的节点信息,与其他内网的节点建立连通,进行数据传输。
所述方法还包括其他内网的节点根据接收到的所述内网节点的相关信息,与该内网节点建立连通。
其中,所述节点信息包括节点的外部IP地址和端口号,其中所述外部IP地址为经地址转换后的公网地址。
其中,采用UDP协议进行节点间的数据传输。
所述方法还包括在内网节点与公网节点之间、公网节点之间以及同一内网的节点之间,也采用UDP协议进行数据传输。
优选的,在数据传输过程中加入错误恢复数据包,用于采用前向纠错方法恢复丢失的数据包。
一种对等网络中的数据传输装置,所述对等网络包括内网节点和公网节点,包括运行在公网节点的第一数据传输单元和运行在内网节点的第二数据传输单元,公网节点与内网节点之间通过所述两个数据传输单元进行通信,其中,第一数据传输单元用于接收包括节点信息的内网节点请求,将与自己相连的其他内网的节点信息发送给该内网节点,并将该内网节点的相关信息发送给与自己相连的其他内网的节点;第二数据传输单元用于向公网节点发送请求,请求中包含该节点的相关信息;接收公网节点发来的其他内网的节点信息,并根据所述节点信息与其他内网的节点建立连通,进行数据传输。
其中,所述第一数据传输单元和第二数据传输单元之间的数据传输采用UDP协议;所述第一数据传输单元之间以及第二数据传输单元之间的数据传输也采用UDP协议。
优选的,所述第一数据传输单元和第二数据传输单元在数据传输过程中加入错误恢复数据包,用于采用前向纠错方法恢复丢失的数据包。
其中,所述节点信息包括节点的外部IP地址和端口号,其中所述外部IP地址为经地址转换后的公网地址。
根据本发明提供的具体实施例,本发明公开了以下技术效果首先,P2P直播网络中的客户端节点之间采用UDP协议进行网络传输,实现了处于不同NAT内部的节点之间的通讯。对于一对处于不同内网的NAT节点,由公网节点将对方的外部IP地址和端口号发送给NAT节点双方,然后利用UDP(User Datagram Protocol,用户数据报协议)协议的传输特性,两个NAT节点就可以向对方的IP地址和端口号发送数据而连通了。
由于处于不同NAT内部的节点之间可以通信,使得NAT节点的上传带宽既可以被非NAT节点利用,也可以被其他内网的NAT节点利用,这样就增加了NAT节点的上传流量。因此,在使用UDP协议进行传输的情况下,每个客户端(无论是NAT节点还是非NAT节点)的上传带宽都能够得到充分利用,使得“所有客户端最大上传流量总和”总是大于“所有客户端下载流量总和”,P2P的可行性得到了保证。
其次,针对数据传输过程中的丢包、乱序问题,使用前向纠错(ForwardError Correction,简称FEC)技术来解决,即在数据包的传输过程中加入错误恢复数据包,在出现丢包时该数据包能够重新恢复被丢包的数据,对传输没有任何影响。而且,在不丢包的情况下,UDP协议会逐步上调发送速度,使得最终传输带宽稳定在接近真实带宽的水平。


图1是本发明实施例中包含NAT节点的网络结构示意图;图2是本发明实施例所述连通不同NAT节点的方法流程图;
图3是本发明优选实施例中采用前向纠错技术传输数据的步骤流程图;图4是本发明实施例所述一种P2P网络中的数据传输装置结构图。
具体实施例方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本发明作进一步详细的说明。
本发明实施例提供了一种P2P网络中的数据传输方法,采用UDP协议进行数据传输,并利用UDP协议的传输特性,将处于不同NAT内部的节点连通,使得不同的NAT节点之间可以通信,达到充分利用客户端上传带宽的目的。同时,采用前向纠错技术解决数据传输过程中的丢包、乱序问题,使得视频传输时的带宽尽量接近真实带宽。
下面详细说明如何实现不同NAT内部的节点通信。
在提供直播服务的P2P网络中,服务器节点和客户端节点之间采用TCP协议进行传输,而客户端节点之间的传输则采用UDP协议,每一个客户端都和一部分其他客户端(即邻居节点)保持一条UDP的通讯信道。其中,所述客户端包括NAT节点和非NAT节点。
参照图1,是包含NAT节点的网络结构示意图。图中,NAT1和NAT2是两个采用不同NAT协议的内网,NAT1和NAT2外部的网络为公网。NAT1和NAT2内部的节点通过不同的NAT协议将内网地址转换为公网地址,实现与公网节点的连通。图中,节点A、B、C都是客户端节点,其中,节点A处于内网NAT1中,节点B处于内网NAT2中,节点C处于公网中,即节点A和B是NAT节点,而节点C是非NAT节点。节点A可以与节点C连接,并通过UDP协议进行数据传输;节点B也可以与节点C连接,同样采用UDP协议进行数据传输。但是,节点A和节点B之间无法直接连通。
根据NAT的设计特性,一部分NAT节点是可以被UDP协议连通的。参照图2,是所述连通不同NAT节点的方法流程图。以图1为例,为实现NAT节点A与NAT节点B之间的连通,采用如下过程步骤201,服务器节点首先引导NAT节点与非NAT节点建立通讯信道,节点A与节点C建立连接,节点B也与节点C建立连接。
步骤202,某个NAT节点在需要与其它NAT节点通讯时,会向与它已建立连接的某个非NAT节点发送一个请求。当节点A需要与其他NAT节点通讯时,先向与A连接的非NAT节点C发送请求。
步骤203,当非NAT节点收到某个NAT节点发送的请求时,将与自己有连接的其它所有NAT节点的相关信息发送给该NAT节点,同时将该NAT节点的相关信息发送给所述其它所有NAT节点。其中,节点相关信息主要是外部IP地址和端口号,用于建立连接时标识节点。所述外部IP地址是指内网地址经NAT转换后的公网地址。例如,非NAT节点C将NAT节点B的外部IP地址和端口号发送给NAT节点A,并将节点A的外部IP地址和端口号发送给节点B。
步骤204,所述NAT节点在收到请求回应后,开始向指定的外部IP地址和端口号发送消息,同时对方也开始向该NAT节点的外部IP地址和端口号发送消息,利用UDP协议的传输特性,不同的NAT节点就可以连通。这样,处于不同NAT内的节点A和节点B通过非NAT节点C,分别获得了对方的外部IP地址和端口号后,然后通过UDP协议就可以实现通信。
上述UDP协议的特性支持两个不同NAT节点连通的解释如下由于节点A与节点B都获知了对方的外部IP地址和端口号,节点A与节点B可以同时向对方发送数据包,但还是有前后次序,假设A比B先发包,而且不出现丢包,则会出现以下的次序(1)A向B发包,B的网关收到来自A的包,但之前B未同A通信,B的网关会认为这个包来自未知地址,一般的NAT网关会将这个包丢掉;(2)B向A发包,A的网关收到来自B的包,但之前A曾经向B发送过数据包,A的网关认为收到的这个包是之前发出包的回应,于是将这个包转发给A,于是A能收到B的包;(3)之后A再向B发包时,B网关的行为将同(2)中描述的A网关一致,B能接收到A的包;(4)由于A、B能互相发包并收到对方的包,NAT成功连通。
对于其他内网的NAT节点,在收到该NAT节点的外部IP地址和端口号后,根据需要也可以先向该NAT节点的外部IP地址和端口号发送消息,并建立连通。
在使用UDP协议进行网络传输的P2P直播网络中,由于处于不同NAT内部的节点之间可以通信,使得NAT节点的上传带宽既可以被非NAT节点利用,也可以被其他内网的NAT节点利用,这样就增加了NAT节点的上传流量。因此,在使用UDP协议进行传输的情况下,每个客户端(无论是NAT节点还是非NAT节点)的上传带宽都能够得到充分利用,使得“所有客户端最大上传流量总和”总是大于“所有客户端下载流量总和”,P2P的可行性得到了保证。
由上可知,采用UDP协议并结合上述传输方法,解决了传统TCP传输无法解决的问题,在实际应用中带来了更好的传输效果。但是,在采用UDP协议进行传输的网络中,由于UDP协议和TCP协议都是传输层协议,其底层协议都是网络层的IP协议,而IP协议存在丢包问题,所以在采用UDP协议实现上述传输的同时还需要解决网络丢包问题。数据包丢失是网络传输固有的问题,本发明实施例采用传统的“回应+重传”的解决办法。在发送端向接收端发送数据包的过程中,当接收端发现丢包后,在回应发送端的消息中通知对方数据包已丢失,发送端收到所述回应消息后重新向接收端传输丢失的数据包。通过所述“回应+重传”方法,保证了UDP传输的可靠性。
但是,由于上述实施例中的“回应+重传”方法需要在发送端和接收端之间进行多次请求和响应,而每一次通讯都需要花费时间,因此影响了传输效率。为提高UDP传输效率,本发明提供了另一优选实施例,在采用UDP协议取代TCP进行网络传输的同时,使用前向纠错技术来解决网络层存在的数据包丢包、乱序等问题,不仅保证了传输的可靠性,还提高了网络传输效率。
所述优选实施例在进行UDP传输时,仍采用图1所示的方法步骤来连通不同内网的NAT节点,使每个客户端(无论是NAT节点还是非NAT节点)的上传带宽都能够得到充分利用,保证P2P的可行性。同时,采用前向纠错技术来优化UDP传输的可靠性,具体说明如下。
前向纠错技术通过在传输列中加入冗余码进行纠错,在发送端由发送设备按一定算法生成错误恢复码插入到要传输的数据流中,接收端按同样算法对接收到的数据流进行解码,根据接收到的码流确定误码的位置并进行纠错。前向纠错技术通过在发送每N个数据包后添加一个错误恢复包来纠正错误,所述错误恢复包内含可被用来构建由N个数据包组成的分组内的任意一个数据包的信息。如果这N个数据包中的一个包恰巧在传输过程中丢失,错误恢复包用于在传输链路的远端上重建丢失的数据包。前向纠错技术消除了重新在传输链路上传输丢失数据包的需要,从而大大减少应用响应时间,提高了传输的效率。
参照图3,是采用前向纠错技术传输数据的步骤流程图。当一个发送端需要把一个数据块传输给另一个接收端时,实现方式如下步骤301,发送端将该数据块拆分成n个数据包;步骤302,发送端使用FEC算法,由n个数据包生成m个FEC包(其中,m>=n),使得m个FEC包中的任意n个FEC包都可以运算得到步骤301生成的n个数据包;步骤303,将每一个FEC包作为一个UDP包发送;步骤304,接收端收到n个FEC包后,采用相同的FEC算法运算得到n个数据包,从而得到原始的数据块;步骤305,若接收端在一定时间内收到的FEC包总数小于n,则说明网络丢包过多,传输失败,需要重新传输。
在上述过程中,FEC算法有很多种,可以采用本领域技术人员所熟知的一种来进行计算,在此不作限定。
在P2P的实际运用中,假设一个数据块的大小为1秒(指客户端连续播放1秒的流媒体数据所需要传输的数据块大小),设n取值为56,m取值为64,即允许有12.5%(1/8)的UDP包在网络上被丢弃。
在采用TCP传输的方法中,视频传输时能够达到的带宽通常小于真实带宽。因为当出现丢包的时候,TCP协议的实现会降低数据发送速率,例如在出现第一次丢包之前,TCP协议的发包速度一直随时间呈指数级上升;出现一次丢包时,TCP协议将会把发送速度直接降低到当前速率的一半,之后如果稳定不丢包,TCP协议的发送速度也只会随时间线性上升。所以当网络不太稳定、经常出现丢包的时候,TCP协议的发送速度降低得十分快而恢复得慢,带宽利用率很低,且十分不稳定,非常不适合视频应用。
与TCP传输形成对比的是,使用UDP协议和FEC算法实现网络传输,在出现丢包时,只要丢包率低于12.5%,FEC算法能够恢复被丢包的数据,对传输没有任何影响,故只要网络丢包不过分严重,UDP协议和FEC算法的组合将一直能保证数据传输以稳定的速度进行,且在不丢包的情况下,还会逐步上调发送速度,最终传输带宽将稳定在接近真实带宽的水平。
举例说明,P2P网络中采用UDP协议传输的两个节点,分别是节点E和节点F,其中节点E向节点F发送数据,数据传输流程如下(1)节点F向节点E请求获取数据块m;(2)节点E采用FEC算法把数据块m拆分成64个UDP包,按一定速度发送给节点F;(3)节点F接收所述64个UDP包,在一定时间内,只要接收到56个包,就可以使用同样的FEC算法完整地生成所有64个UDP包;(4)如果节点F没有接收到56个包,它可以向节点E发送消息,在下次发送数据块的时候,降低节点E到节点F的发送数据速度,以降低丢包率;(5)如果节点F接收到的包超过60个,它可以向节点E发送消息,在下次发送数据块的时候,提高节点E到节点F的发送数据速度,以追求更高的带宽。
如果节点F一直向节点E获取数据,那么节点E向节点F的发送速度趋近于12.5%的丢包率,即正好能使用FEC算法解出全部数据。在这种情况下,将能把传输带宽很好地维持在接近真实带宽的水平。
需要说明的是,上述内容虽然涉及的是NAT节点的传输情况,包括不同内网的NAT节点之间的传输;但对于内网的NAT节点与公网的非NAT节点之间、公网节点之间以及同一内网节点之间的传输,上述采用UDP协议和前向纠错技术结合的方法仍然适用。即在P2P网络中,客户端节点(无论是NAT节点还是非NAT节点)之间均采用“UDP+FEC”的方式实现传输。
综上所述,在P2P直播网络中采用UDP协议进行网络传输,实现处于不同NAT内的节点之间的通讯,使得每个客户端的上传带宽都能够得到充分利用;并结合前向纠错技术解决丢包、乱序问题,提高了传输效率,还使得视频传输时能够达到的带宽尽量接近真实带宽。UDP协议和前向纠错技术的结合,设计出一种能适应视频应用、更适合视频直播的传输方法。
针对上述P2P网络的数据传输方法,本发明实施例还提供了一种数据传输装置。参照图4,是所述传输装置的结构图,包括第一数据传输单元401和第二数据传输单元402。其中,第一数据传输单元401设置在非NAT节点(公网节点),第二数据传输单元402设置在NAT节点(内网节点),整个网络中的客户端节点之间通过所述两种单元来实现数据的传输。
第一数据传输单元401,用于接收NAT节点的第二数据传输单元402发来的请求,将与自己有连接的其他NAT节点的信息发送给该节点,同时将该NAT节点的信息发送给所述与自己有连接的其他NAT节点的第二数据传输单元402。其中,所述节点信息主要包括外部IP地址和端口号,用来标识网络中的节点。不同内网的NAT节点之间无法直接连通,需要通过所述第一数据传输单元401来获取对方的外部IP地址和端口号,从而实现不同NAT节点的连通。
第二数据传输单元402,用于向非NAT节点发送请求,并接收非NAT节点发来的其他NAT节点的信息,然后根据所述节点信息,与其中的NAT节点建立连通。
第一数据传输单元401和第二数据传输单元402之间的数据传输采用UDP协议,由于UDP协议的传输特性,通过图2所示的方法流程,处于不同NAT内部的节点之间可以通信,使得NAT节点的上传带宽得到充分利用,P2P的可行性得到保证。此外,第一数据传输单元401之间以及第二数据传输单元402之间的传输均采用UDP协议,即P2P网络中的客户端节点(无论是NAT节点还是非NAT节点)之间进行UDP传输。
优选的,为解决网络传输固有的丢包、乱序问题,在UDP传输过程中,将前向纠错技术与UDP传输协议结合使用,使得视频传输时能够达到的带宽尽量接近真实带宽,能够为P2P直播网络带来更好的视频直播效果。前向纠错技术的说明如前所述,在此不再详述。
图4所示装置中未详述的部分可以参见图1、图2和图3所示方法的相关部分,为了篇幅考虑,在此不再详述。
以上对本发明所提供的一种对等网络中充分利用带宽资源的数据传输方法及装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种对等网络中的数据传输方法,所述对等网络包括内网节点和公网节点,其特征在于,包括内网节点向公网节点发送请求,请求中包含该节点的相关信息;所述公网节点将与自己相连的其他内网的节点信息发送给该内网节点;所述公网节点将该内网节点的相关信息发送给所述与自己相连的其他内网的节点;该内网节点根据接收到的其他内网的节点信息,与其他内网的节点建立连通,进行数据传输。
2.根据权利要求1所述的方法,其特征在于,还包括其他内网的节点根据接收到的所述内网节点的相关信息,与该内网节点建立连通。
3.根据权利要求1所述的方法,其特征在于所述节点信息包括节点的外部IP地址和端口号,其中所述外部IP地址为经地址转换后的公网地址。
4.根据权利要求1所述的方法,其特征在于采用UDP协议进行节点间的数据传输。
5.根据权利要求4所述的方法,其特征在于,还包括在内网节点与公网节点之间、公网节点之间以及同一内网的节点之间,也采用UDP协议进行数据传输。
6.根据权利要求4或5所述的方法,其特征在于在数据传输过程中加入错误恢复数据包,用于采用前向纠错方法恢复丢失的数据包。
7.一种对等网络中的数据传输装置,所述对等网络包括内网节点和公网节点,其特征在于,包括运行在公网节点的第一数据传输单元和运行在内网节点的第二数据传输单元,公网节点与内网节点之间通过所述两个数据传输单元进行通信,其中,第一数据传输单元用于接收包括节点信息的内网节点请求,将与自己相连的其他内网的节点信息发送给该内网节点,并将该内网节点的相关信息发送给与自己相连的其他内网的节点;第二数据传输单元用于向公网节点发送请求,请求中包含该节点的相关信息;接收公网节点发来的其他内网的节点信息,并根据所述节点信息与其他内网的节点建立连通,进行数据传输。
8.根据权利要求7所述的装置,其特征在于所述第一数据传输单元和第二数据传输单元之间的数据传输采用UDP协议。
9.根据权利要求8所述的装置,其特征在于所述第一数据传输单元之间以及第二数据传输单元之间的数据传输也采用UDP协议。
10.根据权利要求8或9所述的装置,其特征在于所述第一数据传输单元和第二数据传输单元在数据传输过程中加入错误恢复数据包,用于采用前向纠错方法恢复丢失的数据包。
11.根据权利要求7所述的装置,其特征在于所述节点信息包括节点的外部IP地址和端口号,其中所述外部IP地址为经地址转换后的公网地址。
全文摘要
本发明公开了一种对等网络中充分利用带宽资源的数据传输方法及装置,以解决网络中的NAT节点数量达到一定程度时,造成P2P不可行的问题。所述方法包括内网节点向公网节点发送请求,请求中包含该节点的相关信息;所述公网节点将与自己相连的其他内网的节点信息发送给该内网节点;所述公网节点将该内网节点的相关信息发送给所述与自己相连的其他内网的节点;该内网节点根据接收到的其他内网的节点信息,与其他内网的节点建立连通,进行数据传输。在使用UDP协议进行传输的情况下,每个客户端(无论是NAT节点还是非NAT节点)的上传带宽都能够得到充分利用,使得P2P可行。同时,采用前向纠错技术解决了丢包、乱序问题,并使最终传输带宽稳定在接近真实带宽的水平。
文档编号H04L12/46GK101087239SQ20071011917
公开日2007年12月12日 申请日期2007年7月17日 优先权日2007年7月17日
发明者蒋又新, 张虎 申请人:北京搜狗科技发展有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1