CN101459585B - 一种p2p流媒体数据请求方法 - Google Patents
一种p2p流媒体数据请求方法 Download PDFInfo
- Publication number
- CN101459585B CN101459585B CN2007101795843A CN200710179584A CN101459585B CN 101459585 B CN101459585 B CN 101459585B CN 2007101795843 A CN2007101795843 A CN 2007101795843A CN 200710179584 A CN200710179584 A CN 200710179584A CN 101459585 B CN101459585 B CN 101459585B
- Authority
- CN
- China
- Prior art keywords
- packet
- request
- ingress
- data
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种P2P流媒体数据请求方法,针对P2P网络异构性,根据不同节点的带宽,对不同节点进行相应的数据请求。用户节点根据初始时对各入节点带宽的探测情况和所要请求的数据包的优先级大小,对各个入节点进行数据请求和轮块分配,加快数据到达速度,同时减少单点故障带来的影响;在数据请求末端,灵活调整连续请求数据块的大小,可以更快请求到最新的数据包,并且结合丢包检测重传机制,达到流畅播放的目的。
Description
技术领域
本发明涉及计算机网络流媒体技术领域,更具体地,本发明涉及一种P2P流媒体数据请求方法。
背景技术
数据请求分配是目前P2P流媒体技术领域中的一个关键技术问题。按照分配粒度,P2P流媒体系统中使用的数据请求分配方法主要分为两类,分别是基于数据层的粗粒度分配和基于数据包的细粒度分配。在基于数据层的粗粒度分配方法中,主要是基于多重描述编码(MDC)的数据分配方法,所述方法对每条多重描述编码子流采用独立多播树进行传输,接收方根据自身带宽情况选择加入到多棵多播树中,适应节点的异构性,但是,多重描述编码的效率比分层编码的效率低,同时,多重描述编码的各个分层之间的解码不存在依赖关系。基于数据包的细粒度分配方法主要分为两种,一种是基于TCP友好(TCP-friendly)带宽测试的数据分配方法,在不知发送节点可用带宽的条件下,确保每个数据包仅被一个发送节点发送;另一种是基于前向纠错编码(FEC)的数据分配方法,可以在突发丢包网络环境中,减小数据包的丢失概率。
上述现有的数据请求分配方法,或者以整个数据段为单位向入节点(本地节点向某个或某几个节点请求数据,这些被请求的节点称为本地节点的入节点)进行数据请求,或者以数据包为单位轮流向入节点进行数据请求。对于前者,在刚开始播放的时候,如果数据段比较大,因为入节点根据数据包的优先级进行响应,序号较小并具有较高优先级的数据包往往集中在同一个数据段中,所述同一数据段发向一个入节点,而一些优先级较低的数据包放在另一个数据段中,发向另外一个入节点,从而导致部分优先级高的数据包得不到及时的响应,而部分优先级较低的数据包在另外一个入节点得到优先响应。对于后者,在数据请求到达入节点中某个或某几个节点的缓冲区末端时,即部分入节点可供请求的最新数据数目已经不能达到正常播放码率所要求的数据包的数目时,由于该方法以数据包为单位轮流向入节点进行数据请求,将造成拥有稀有数据包的入节点同时也承担共有数据包的请求响应,从而导致拥有稀有数据包的入节点负载过大,变成网络中的瓶颈节点。
发明内容
为克服现有技术中的数据资源不能有效利用、带宽不能合理分配的缺陷,本发明提出一种P2P流媒体数据请求方法。
一种P2P流媒体数据请求方法,包括:
步骤10)、用户节点加入P2P网络,获得入节点列表,向所述列表中的入节点发送请求,检测丢包情况,获得各入节点的上行带宽;
步骤20)、根据所述各个入节点的上行带宽,向所述各个入节点分配数据请求:
步骤210)、当本地缓冲区的大小小于预设值时,将要请求的数据包按照优先级从大到小进行排序,按照排序结果依次将所述各个数据包按照一定的块大小进行分块,并分配给各个入节点,直至已分配的数量达到所述入节点的请求量;
步骤220)、当本地缓冲区的大小大于预设值时,依次检测从各入节点能获得的数据包的个数,根据所述数据包个数的比例,确定所述各入节点分配的请求量。
其中,数据包请求过程中,记录所述用户节点的唯一标识号,如果发往某个入节点的数据包丢失,则下次优先选择其他用户节点发送所述丢失数据包的请求。
在步骤10)中,在所述请求发送之前,检测上上次发送队列的全部和上次发送队列的前半部分的数据包是否存在丢包,或者检测上上次发送队列的数据包是否存在丢包。
其中,当还未开始播放时,在每次请求数据前,检测上上次发送队列的全部和上次发送队列的前半部分是否有数据包未收到,如果有数据包未收到,将所述数据包的播放位置值和对应的唯一标识号加入紧急队列,同时统计所述唯一标识号相应的入节点的丢包数。
其中,当已经开始播放时,在每次请求数据前,只检测上上次发送队列是否有数据包未收到,如果有数据包未收到,将所述数据包的播放位置值和对应的唯一标识号加入紧急队列,同时统计所述唯一标识号相应的入节点的丢包数。
其中,所述方法进一步包括:
步骤110)、将所述紧急队列中的序列号按照优先级的大小排序;
步骤120)、在数据请求前,优先处理所述紧急队列的数据请求,检测要请求的数据包的序列号是否过期,如果过期则放弃请求,如果没有过期,则请求所述数据包;
步骤130)、检查所述紧急队列中要请求的数据包对应节点的唯一标识号是否为空,如果不为空,在请求数据时,优先将所述数据包的请求向节点唯一标识号不同于所述紧急队列所记录的唯一标识号的节点发送。
其中,步骤210)中,根据所述入节点一次能够同时发送的数据包的大小,确定所述块的大小;为保证数据匀速发送,所述入节点将整个数据请求分作许多个时隙来发送;所述一次能够同时发送的数据包的大小是指一个时隙所述入节点发送的数据包的数目。
其中,步骤220)进一步包括:将相邻序号的所述各数据包请求分配给同一个入节点,直至分配数量达到所述入节点的请求量,然后将邻接的下一个数据包请求发送给下一个入节点,循环进行,直至本次数据包请求分配结束。
通过应用本发明,使得用户节点根据初始时对各入节点带宽的探测情况和所要请求数据包的优先级大小,对各个入节点进行数据请求,加快数据到达速度,减少单点故障带来的影响,在数据请求末端灵活调整连续请求数据块的大小,从而能更快请求到最新的数据包,达到流畅播放的目的。
附图说明
图1为P2P流媒体网络结构图;
图2为用户节点加入P2P网络流程图;
图3为数据请求流程图;
图4为丢包检测处理流程图;
具体实施方式
下面结合附图和具体实施例,对本发明提供的一种P2P流媒体数据请求方法作进一步说明。
图1示出P2P流媒体网络结构,数据源服务器为流媒体直播提供数据源,数据中转服务器负责在各流媒体直播区域中转数据源的数据,相当于各个直播区域的数据源服务器,各直播区域中的先加入的节点直接和数据中转服务器连接,获取流媒体数据,并为后加入的节点提供数据信息。
图2示出节点加入P2P网络的流程,用户节点A(下面称节点A)加入图1所示的P2P直播网络,节点A首先连接本区域的索引服务器,即图中所示的索引服务器1,索引服务器1根据节点A的IP地址在已有的网络节点中选择与其网络距离最近并且播放位置相近的节点列表返回给节点A。
节点A向所获得的节点列表中的所有节点发送连接请求,设图1中用户节点B(简称节点B)和用户节点C(简称节点C)在节点列表中,例如节点A向节点B发送连接请求,如果连接成功,则节点A将节点B设置为其入节点,节点B将节点A设置为其出节点,并定期向节点A发送自己的缓冲区映像,告知节点A目前节点B缓冲区所有的数据包的情况。
节点A根据节点列表中所有入节点所返回的缓冲区映像中播放位置(index)值确定节点A自身的起始播放点(PlayingIndex)。
图3示出用户节点发送数据请求的流程,节点A根据自己的缓冲区情况,向入节点发送数据请求。
节点A根据向各个入节点的上上次的请求量(Last2ReqNum)确定本次向该入节点的请求量;
如果是第一次请求,由于各个入节点的异构性,无法预知各个入节点的上行带宽,在第一次数据请求时,根据播放码率的M倍,向各个入节点均分请求量,M为自定义量,优选地,M取1.2-1.4。本次请求的目的是探测各个入节点的上行带宽,在第一次检测丢包情况的时候,可以根据各个入节点的丢包情况获得各个入节点的上行带宽的估计值,如果某些节点不存在丢包情况,说明这些节点具有足够的上行带宽,如果需要,可以增加对这些节点的数据请求量。
如果是第二次请求,节点A根据入节点中向各个节点的上次的请求量(LastReqNum)确定本次向该节点的请求量,如果某些节点存在丢包情况,则把上次对该节点的请求量(LastReqNum)减去丢包数进行请求,如果某些节点不存在丢包现象,此时默认请求速度处在快增长状态,则继续向该节点增加请求量N,N取较大值,可以快速逼近入节点上行带宽,并且,向各个入节点的请求总量控制在码率的M倍,M为自定义量,优选地,M取1.2-1.4。
第三次请求及以后的每次请求,节点A根据入节点中向各个节点的上上次的请求量(Last2ReqNum)确定本次向该节点的请求量,如果某些节点存在丢包情况,则把上次对该节点的请求量(LastReqNum)减去丢包数进行请求,如果某些节点不存在丢包现象,此时默认请求速度处在快增长状态,则继续向该节点增加请求量N,N取较大值,可以快速逼近入节点上行带宽,并且,向各个入节点的请求总量控制在码率的M倍,M为自定义量,优选地,M取1.2-1.4。
如图4所示,当本地缓冲区(Buffer)的百分比未达到开始播放百分比(START_PERCENT),此时还未开始播放,丢包检测采用立即检测机制,即本次发送数据之前检测上上次发送队列(Last_SentQue)和上次发送队列(This_SentQue)的前半部分数据是否到达。当本地缓冲区的百分比达到START_PERCENT后,此时已经开始播放,丢包检测采用隔轮检测机制,即在本次发送数据之前检测上上次发送队列(Last_SentQue)的数据包是否有丢包(具体检测方法见后面叙述的丢包检测方法)。
如果不存在丢包,根据目前请求速度所处的状态,进行请求增加,即如果处于初始快增长状态,则请求量增加N,N取值越大,可以越快逼近入节点上行带宽,如果请求速度状态处于慢速状态,增加一个小量n,n<N;如果发现存在丢包,将丢失的数据加入紧急队列中,如果丢包数小于预先设定的值--最大延迟数(MAX_DELAY_NUM),则本次请求量设置为上上次的请求量(Last2ReqNum)减去丢包数,当采用立即检测机制时,本次请求量设置为上次的请求量(LastReqNum)减去丢包数;如果丢包数大于一个预先设定的值--最大延迟数(MAX_DELAY_NUM),则将请求量设置为(Last2ReqNum-MAX_DELAY_NUM),当采用立即检测机制时,请求量设置为(LastReqNum-MAX_DELAY_NUM)。
根据请求过程中测量的各个入节点的上行带宽,向各个入节点分配本次请求的请求量。
当本地缓冲区(Buffer)的大小小于预设值(SWITCH_PERCENT)时,根据实时性(或者优先级大小)的要求将要请求的数据包从高到低进行排序,按照排序结果依次将各个数据包按照一定的块大小(假设为K)进行分块分配给各个入节点,直至已分配数量达到该入节点的请求量,此时的块大小取决于目标节点一次能够同时发送的数据包的大小,由于节点的异构性,每个节点一次能够同时发送的数据包大小会有所不同。发送端为保证数据匀速发送会将整个数据请求分作许多个时隙来发送,这里所指的一次能够同时发送的数据包的大小表示的是一个时隙发送端所发送的数据包的数目。
当本地缓冲区(Buffer)的大小大于预设值(SWITCH_PERCENT)时,依次检测从各入节点能获得的数据包的个数(RetrivNum)并根据各个入节点的RetrivNum比例确定各入节点本次分配的请求量,将相邻序号的各数据包请求分配给同一个节点,直至分配的数量达到该入节点的请求量,然后将邻接的下一个数据包请求发送给下一个入节点,如此循环,直至本次分配完毕。
数据包请求过程中,记录请求发送目的节点的唯一标识号(ID),如果遇到发往某个节点的数据包丢失,则下次发送是优先选择其他节点发送该数据包的请求。
丢包检测方法
采用双发送队列机制,即使用两个发送队列,一个发送队列This_SentQue存储本次发送请求的数据包的序列号值(index)和发送目的节点的唯一标识号(ID),另一个发送队列Last_SentQue存储上次发送请求的数据包的序列号值(index)和发送目的节点的唯一标识号(ID);
请求时,在This_SentQue当中记录请求数据包的序列号值(index)和请求发送的目的节点的唯一标识号(ID);
当本地缓冲区大小小于START_PERCENT时(此时还未开始播放),在每次请求数据前,检测Last_SentQue队列和This_SentQue的前半部分中是否还有数据包未收到,如果有数据包未收到,则将数据包的序列号值(index)和对应的唯一标识号(ID)加入紧急队列(UrgentQue),使用下述的紧急队列处理方法进行处理,同时根据唯一标识号(ID),统计相应的入节点的丢包数;
当本地缓冲区大小大于START_PERCENT时(此时已经开始播放),在每次请求数据前,只检测Last_SentQue队列是否有数据包未收到,如果有数据包未收到,则将数据包的序列号值(index)和对应的唯一标识号(ID)加入紧急队列(UrgentQue),使用下述的紧急队列处理方法进行处理,同时根据唯一标识号(ID),统计相应的入节点的丢包数。
紧急队列(UrgentQue)处理方法
将紧急队列中的序列号值(index)按照优先级的大小排序;
每次数据请求前优先处理紧急队列的数据请求,当处理紧急队列数据请求时,首先检测要请求的数据包的序列号值(index)是否过期,如果过期则放弃请求,如果没有过期,则请求该数据包;
检查紧急队列中要请求的数据包对应节点的唯一标识号(ID)是否为空,如果不为空,在请求数据时,优先将该数据包的请求向节点唯一标识号(ID)不同于紧急队列所记录的唯一标识号(ID)的节点发送。
总的来说,在本实施例中,首先根据初始时对各入节点带宽的探测情况和所要请求的数据包的优先级大小,对各个入节点所进行的数据请求轮块分配,在播放的初始阶段,以单个数据包为单位,按照优先级的大小将优先级较大的数据包分别先向不同的入节点发送请求,其次再发送优先级较低的数据包请求,使优先级较高的数据包请求能够得到快速的响应,从而加快数据响应速度;同时在数据请求末端灵活调整连续请求数据块的大小,采用一定大小的数据块为单位,向各个入节点发送数据请求,将公共拥有的数据请求发往拥有公共数据比重较大的入节点,而把稀有数据请求发往拥有稀有数据比重较大的入节点,以平衡各个入节点的带宽负载,从而减少单点故障带来的影响,并且结合丢包重传机制,最终达到流畅播放的目的。
最后应说明的是,以上所述实施例仅用以说明本发明的技术方案而非对其限制,并且在应用上可以延伸到其他的修改、变化、应用和实施例,同时认为所有这样的修改、变化、应用、实施例都在本发明的精神和范围内。
Claims (8)
1.一种P2P流媒体数据请求方法,包括:
步骤10)、用户节点加入P2P网络,获得入节点列表,向所述列表中的入节点发送请求,检测丢包情况,获得各入节点的上行带宽;
步骤20)、根据所述各个入节点的上行带宽,向所述各个入节点分配数据请求:
步骤210)、当本地缓冲区的大小小于预设值时,将要请求的数据包按照优先级从大到小进行排序,按照排序结果依次将所述各个数据包按照一定的块大小进行分块,并分配给各个入节点,直至已分配的数量达到所述入节点的请求量;
步骤220)、当本地缓冲区的大小大于预设值时,依次检测从各入节点能获得的数据包的个数,根据所述数据包个数的比例,确定所述各入节点分配的请求量。
2.权利要求1的方法,其中,数据包请求过程中,记录所述入节点的唯一标识号,如果发往某个入节点的数据包丢失,则下次优先选择向其他入节点发送所述丢失数据包的请求。
3.权利要求1的方法,在步骤10)中,在所述请求发送之前,检测上上次发送队列的全部和上次发送队列的前半部分的数据包是否存在丢包,或者检测上上次发送队列的数据包是否存在丢包。
4.权利要求3的方法,其中,当还未开始播放时,在每次请求数据前,检测上上次发送队列的全部和上次发送队列的前半部分是否有数据包未收到,如果有数据包未收到,将所述数据包的序列号值和对应入节点的唯一标识号加入紧急队列,同时统计所述唯一标识号相应的入节点的丢包数。
5.权利要求3的方法,其中,当已经开始播放时,在每次请求数据前,只检测上上次发送队列是否有数据包未收到,如果有数据包未收到,将所述数据包的序列值和对应入节点的唯一标识号加入紧急队列,同时统计所述唯一标识号相应的入节点的丢包数。
6.权利要求4或者权利要求5的方法,进一步包括:
步骤110)、将所述紧急队列中的序列号按照优先级的大小排序;
步骤120)、在数据请求前,优先处理所述紧急队列的数据请求,检测要请求的数据包的序列号是否过期,如果过期则放弃请求,如果没有过期,则请求所述数据包;
步骤130)、检查所述紧急队列中要请求的数据包对应节点的唯一标识号是否为空,如果不为空,在请求数据时,优先将所述数据包的请求向节点唯一标识号不同于所述紧急队列所记录的唯一标识号的节点发送。
7.权利要求1的方法,其中,步骤210)中,根据所述入节点一次能够同时发送的数据包的大小,确定所述块的大小;为保证数据匀速发送,所述入节点将整个数据请求分作许多个时隙来发送;所述一次能够同时发送的数据包的大小是指一个时隙所述入节点发送的数据包的数目。
8.权利要求1的方法,其中,步骤220)进一步包括:将相邻序号的所述各数据包请求分配给同一个入节点,直至分配数量达到所述入节点的请求量,然后将邻接的下一个数据包请求发送给下一个入节点,循环进行,直至本次数据包请求分配结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101795843A CN101459585B (zh) | 2007-12-14 | 2007-12-14 | 一种p2p流媒体数据请求方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101795843A CN101459585B (zh) | 2007-12-14 | 2007-12-14 | 一种p2p流媒体数据请求方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101459585A CN101459585A (zh) | 2009-06-17 |
CN101459585B true CN101459585B (zh) | 2010-11-03 |
Family
ID=40770224
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101795843A Expired - Fee Related CN101459585B (zh) | 2007-12-14 | 2007-12-14 | 一种p2p流媒体数据请求方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101459585B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102571903B (zh) * | 2010-12-08 | 2014-09-10 | 中国科学院声学研究所 | 一种基于区域服务器的p2p流媒体系统 |
CN103634332B (zh) * | 2012-08-20 | 2016-12-21 | 中国移动通信集团公司 | 一种基于p2p的流媒体传输方法、装置及系统 |
CN103873385B (zh) * | 2012-12-18 | 2017-02-15 | 中国科学院声学研究所 | 一种基于反馈控制的p2p流媒体数据请求方法及系统 |
CN105306280B (zh) * | 2015-12-03 | 2018-06-19 | 中国人民解放军理工大学 | 面向高效子流传输的数据驱动网络构建维护系统和方法 |
CN107426586A (zh) * | 2017-04-26 | 2017-12-01 | 上海云熵网络科技有限公司 | P2p网络的视频播放方法及系统 |
CN107579973B (zh) * | 2017-09-01 | 2019-12-31 | 北京知道创宇信息技术股份有限公司 | 一种网络空间探测方法、装置及计算设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1643716A1 (en) * | 2004-09-03 | 2006-04-05 | Microsoft Corporation | A system and method for receiver driven streaming in a peer-to-peer network |
CN1845530A (zh) * | 2006-05-19 | 2006-10-11 | 清华大学 | 基于策略优化的流媒体资源分配方法 |
-
2007
- 2007-12-14 CN CN2007101795843A patent/CN101459585B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1643716A1 (en) * | 2004-09-03 | 2006-04-05 | Microsoft Corporation | A system and method for receiver driven streaming in a peer-to-peer network |
CN1845530A (zh) * | 2006-05-19 | 2006-10-11 | 清华大学 | 基于策略优化的流媒体资源分配方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101459585A (zh) | 2009-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7310339B1 (en) | Packet messaging method and apparatus | |
US8467295B2 (en) | System and methods for distributed quality of service enforcement | |
JP3321043B2 (ja) | Tcpネットワーク内のデータ端末 | |
CN101459585B (zh) | 一种p2p流媒体数据请求方法 | |
KR101471226B1 (ko) | 피어-투-피어 라이브 스트리밍을 위한 큐-기반 적응성 청크 스케줄링 | |
CN110493145A (zh) | 一种缓存方法及装置 | |
US20090144425A1 (en) | Network bandwidth detection, distribution and traffic prioritization | |
CN105812287A (zh) | 分组交换网络中的有效电路 | |
US20100318602A1 (en) | Load balancing and admission scheduling in pull-based parallel video servers | |
US9100313B1 (en) | Shared egress buffer in a multi-stage switch | |
KR20130136558A (ko) | 계층적 프로파일 스케줄링 및 쉐이핑 | |
CN109348257B (zh) | 拉流控制方法、装置及直播系统 | |
CN102045253A (zh) | 链路聚合网络中发送视频监控业务报文的方法及设备 | |
WO2006074832A1 (en) | On-demand group communication services with quality of service (qos) guarantees | |
CN110971686A (zh) | 一种支持高并发、高可用的电子商城客服系统 | |
CN112437019B (zh) | 用于数据中心的基于信用包的主动型传输方法 | |
JP5738324B2 (ja) | 送信装置、通信装置、通信システムおよび送信方法 | |
CN111447114A (zh) | 一种数据包传输方法、装置、电子设备及存储介质 | |
CN101800704B (zh) | 一种基于混合动态优先队列的p2p流媒体系统数据请求调度方法 | |
WO2010072122A1 (zh) | 一种传输报文的方法、端口和系统 | |
Nguyen et al. | Path diversity and bandwidth allocation for multimedia streaming | |
Mehrotra et al. | Optimizing FEC transmission strategy for minimizing delay in lossless sequential streaming | |
CN111770027B (zh) | 一种基于网内缓存的差异化传输方法 | |
US20090052318A1 (en) | System, method and computer program product for transmitting data entities | |
WO2005119498A1 (en) | P2p based video service system and method for providing vod service using the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20101103 Termination date: 20131214 |