专利名称:一种基于随机网络编码的本地多客户端协同数据下载方法
技术领域:
本发明涉及网络中数据传输的技术领域,更具体地说,涉及网络中利用网络编码加速本地多客户端从服务器下载数据的方法。术语解释网络编码的含义:网络编码是一种通过中继节点对接收到的信息进行编码来达到提高多播网络容量的技术。随机线性网络编码的含义:随机线性网络编码将n个待发送的原始数据分别乘以随机产生的n个系数并相加得到编码后的数据块,每个编码数据块会包含这n个系数。当一个节点接收到n个编码数据块后,会将每个数据块中的系数作为一个方程的系数,将n个原始数据作为未知数,得到一个n元线性方程组。然后通过高斯消元法解线性方程组来得到这n个原始数据。
背景技术:
最初网络上的数据下载大都采用“客户端/服务器”的模式,即客户端直接从服务器上下载数据。为了提高数据的下载速度同时减轻服务器的数据传输压力,P2P网络(对等网络)开始应用到数据的下载中。P2P网络的一个重要特点就是能够让所有的客户端都提供资源,客户端除了能够直接从服务器上下载数据外,还可以从其他客户端获取数据。但是在传统P2P网络中,当多个客户端同时从服务器下载同一段数据时(例如流媒体直播),由于服务器发送给各个客户端的数据都相同,所以这多个客户端间能够共享的数据大大减少,无法充分发挥客户端间的协作性来利用彼此的带宽。
发明内容
本发明利用了随机网络编码中对数据处理的方法,通过对数据编码来提高数据块的可利用率,同时利用本地客户端之间较高的数据传输带宽来增强协作性。本发明的技术方案如下:(I)本地多客户端间需要通过有线或者无线的方式组建成一个逻辑上的有向环形网络来共享数据。环形网络需首先由一个客户端作为发起者来建立一个逻辑上的有向链状网络,链状网络最后加入的节点作为末端节点。末端节点负责连接新的节点,并把新的节点作为自己的下游节点。当没有新的节点能够加入链状网络时,末端节点会连接发起者来形成一个逻辑上的有向环形网络。有向环形网络上,共享的数据只会从上游节点发向下游节点。当有向环形网络中的某个节点断开后,该节点的上游节点会连接该节点的下游节点来恢复成有向环形网络。(2)服务器需要对发送的文件数据进行分段,客户端下载文件数据时会依次下载这些数据分段。每当客户端向服务器发送消息确认收到某个数据段后,服务器会接着发送下一个数据段。每次服务器发送某个数据段时,会将该数据段分块,并按照随机线性网络编码中的编码方式生成一个编码块,然后不断发送这样的编码块给客户端直到客户端能够解码出原数据为止。(3)本地所有客户端会从服务器上下载同一个文件数据。每个客户端从服务器收到编码块后要发送给自己的下游节点,每个客户端收到上游节点的编码块后也要发送给下游节点除非该编码块对应的原数据分段已经被该客户端获取或者该编码块已经在环形网络上流动一圈。(4) 一个客户端收到足够的编码块后会按照随机线性网络编码中的方法对数据进行解码来得到原数据分段,然后向服务器发送消息确认收到该数据段。
图1是本发明的本地环形网络建立过程。图2是本发明的全局网络结构图。图3是本发明的工作流程图。
具体实施例方式下面结合附图和实施例对本发明做进一步的说明。参见图3,本方法内的数据协同下载过程主要包括以下步骤:步骤101:本地客户端之间组建环形网络,具体过程如下:假设本地有5个客户端,5个客户端之间能够彼此感知并建立连接。如图l_a,初始时,把I号客户端设为发起者先通过发起者建立一个有向链状网络,发起者会设置本次组建的环形网络的标示,添加下载文件名称以及对应的下载地址。由于最初链状网络上只有I号客户端,所以I号客户端同时为该链状网络的末端节点,末端节点负责监听其他客户端的请求信息,然后同其中的一个客户端建立连接。如图l_b,没有被设置为发起者的客户端会不断广播发送请求信息来让末端节点感知到自己的存在。I号客户端,即末端节点首先收到的2号客户端的请求信息后,会同2号客户端建立连接,同时不再处理其它请求信息,之后末端节点会向2号客户端发送确认信息,其中会包含发起者的网络地址,本次组建的环形网络标示,下载文件名称以及对应的下载地址等信息。2号客户端收到末端节点的确认信息后,会把末端节点设置为自己的上游节点,同时再向末端节点发送信息表示已经同意加入链状网络,此时2号节点会自动成为新的末端节点来接收请求信息,并停止发送请求信息。而原来的末端节点在收到2号客户端的同意信息后会将2号客户端设置为自己的下游节点,同时自动放弃自身末端节点的身份,不再接收请求信息。如图1-c,其它客户端按照上述过程不断加入链状网络,直到末端节点再也收不到其它客户端的请求信息,此时5号客户端成为了末端节点。如图1-d,末端节点,即5号客户端在一定时间(该时间可根据网络状况自动调整)内收不到请求信息后,会根据发起者的网络地址去连接发起者。连接建立起来后,发起者自动把末端节点设置为自己的上游节点,而末端节点自动将发起者设置为自己的下游节点。此时,环形网络已经建立起来,发起者会向自己的下游节点发送一个开始信息,每个客户端收到开始信息后会自动根据文件下载地址连接服务器下载文件数据,如果该客户端不是末端节点,它会把该信息发给自己的下游节点。
如图1-e,假如4号客户端需要退出环形网络,它会发送消息告知上游节点自己下游节点的网络地址,同时告知下游节点自己上游节点的网络地址,让自己的上游节点连接到自己的下游节点上,即让3号节点连接到5号节点上并更新它们的上下游节点信息。然后4号客户端就自动退出了环形网络。如果4号节点是突然退出的,那么5号客户端也会因为感知(每条连接应该通过周期性的交换数据来维持连接,并由此来感知连接是否断开)到与4号客户端之间连接的断开而没有了上游节点,此时5号客户端会发送请求信息,同时3号节点同样因为没有下游节点而开始接收请求信息,从而促成3号节点会连接到5号节点上,最终重新组成环形网络,如图l_f。步骤102:远端服务器收到客户端请求后开始发送编码块,具体过程如下:服务器会对发送的文件数据进行分段,客户端下载文件数据时会依次下载这些数据分段,这些分段会进行标号,数据段号按照在文件中的先后顺序递增。每当客户端向服务器发送消息确认收到某个数据段后,服务器会接着发送下一个数据段。服务器发送某个数据段时,会将该数据段分成k块,然后在有限域GF (256)内随机生成k个系数分别与这k块数据相乘后再利用有限域的加法运算(异或运算)加在一起生成一个编码块,编码块中会包含生成该编码块的k个系数。服务器会不断地从某个数据段中生成这样的编码块发送给需要该数据段的客户端。步骤103:本地客户端接收和转发编码块,具体过程如下:客户端收到服务器的一个编码块后,会在其中加入自己的网络地址信息并发送给自己的下游节点。每个节点收到上游节点的编码块后,如果编码块中的网络地址不是自己的下游节点的网络地址并且该编码块是自己正需要或者将来需要下载的数据段的编码块(由于数据段是顺次下载的,所以数据段的标号大于当前需要接收的数据段的标号即为自己将来需要下载的数据段),那么它将把该编码块发送给自己的下游节点。步骤104:本地客户端收到足够的编码块后解码得到原数据段,具体过程如下:客户端收到n个编码块后(n > = k),会把每个编码块中的随机系数作为一个线性方程组的系数矩阵,利用高斯消元法解方程就可以得到k块原始数据,将k块原始数据顺次组合起来就得到了真正需要的原始数据段。然后客户端就需要向服务器发送该数据段收到的确认信息,并等待服务器发送下一个数据段的编码块。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种基于随机网络编码的本地多客户端协同数据下载方法,其特征在于,服务器每次只发送文件数据的编码块,本地多个能够彼此建立连接的客户端需要组成一个逻辑上的有向环形网络来接收共享数据。
2.按权利要求1所述的方法,其特征在于,服务器先对文件数据进行分段,再把数据段分成多个文件块,服务器每次发送的数据都是按照随机网络编码中的编码方式对一个段内的所有原始文件块进行线性组合的编码块。
3.按权利要求1所述的方法,其特征在于,本地多个客户端之间要建立一个逻辑上的有向环形网络,每个客户端只有一个上游节点和一个下游节点,并且有一个客户端是末端节点可以接收新的节点加入到有向环形网络。
4.按权利要求1所述的方法,其特征在于,每个客户端都要将自己从服务器端接收的编码块转发给自己的下游节点,每个客户端收到上游节点的编码块后,都会将自己正需要或者将来需要下载数据段的编码块转发给自己的下游节点,每个客户端只会发送编码块给自己的下游节点。
全文摘要
本发明公开了一种基于随机网络编码的本地多客户端协同数据下载方法,该数据下载方法采取如下步骤服务器每次只发送客户端所请求数据的一个编码块;本地客户端之间建立一个逻辑上的有向环形网络;本地多个客户端从服务器下载相同的数据;每个客户端从服务器收到编码块后要发送给自己的下游节点;每个客户端收到上游节点的编码块后也要发送给下游节点除非该编码块对应的原数据已经被该客户端获取或者该编码块已经在环形网络上流动一圈;每个客户端收到足够多的编码块后就可以解码得到原数据。使用本方法下载数据,可以让每个客户端充分利用本地其他客户端下载的数据,从而成倍提高每个客户端的下载速度。
文档编号H04L1/00GK103095827SQ201310009810
公开日2013年5月8日 申请日期2013年1月11日 优先权日2013年1月11日
发明者潘耘, 王琨, 于亚芳, 方驰 申请人:中国传媒大学