自适应及可伸缩的包纠错装置和方法

文档序号:7681259阅读:113来源:国知局
专利名称:自适应及可伸缩的包纠错装置和方法
技术领域
本发明涉及数据传输技术,特别是涉及一种自适应及可伸縮的包纠错 装置和方法。
背景技术
用无线网络进行数据通信,特别是视频和/或音频流传输是当今主流应
用。有些无线系统,例如WLAN,可以在多播域自一个发送器向多个接收器 分发视频流。
图1为显示一传统多播无线系统的示意图。该系统用于从至少一个发 送器10向多个接收器20传输视频流。视频包由发送器端的视频服务器
(图1中未示出)生成并发送到接收器。接收器接收到视频包时,对这些 视频包进行解码。如果在接收器收到的视频包中发生丢包,接收器的解码 器将不能解码视频包。因此,需要采用一些纠错方法。前向纠错(FEC)和 自动重传请求(ARQ)是两种基础的纠错方法。
前向纠错(FEC)是一种除了源数据包外还发送一些冗余数据包至接收 器的方法,使得被丢失的包可以利用这些冗余的包在接收器端恢复。在一 种前向纠错(FEC)方法中,将一些主动修复包(proactive repairs)
(冗余包)包含在数据包流中。这些主动修复包是在不知道是否需要传输 修复包之前就发出。在前向纠错(FEC)中,包发送器对每K个源数据包引 入N-K个修复包以组成N个包。当接收器收到这N个包中的至少K个包 时,就能够恢复所有K个源数据包。在前向纠错(FEC)方法中,源数据包 丢失的数量必须由收到至少相同数量的修复包来补偿,从而恢复所有的源 数据包。如果这些修复包不足以使接收器可靠地解码源数据,接收器将请求重
新传输额外的修复包。这个请求称为自动重传请求(ARQ) 。 ARQ自动重传 请求将被连续发出直至成功解码数据包。
一种由FEC和ARQ组合,称为混合FEC/ARQ的方法,在过去数十年已 被广泛研究。公开于计算机通信,2001年3月,由Dan Rubenstein等在 "A Study of Proactive Hybrid FEC/ARQ and Scalable Feedback Techniques for Reliable, Real-Time Multicast"中示出了一个实例。 该论文揭示了混合FEC/ARQ方法运用在多播网络中,其中发送器根据网络 的情况,选择一个主动性因子(proactivity factor)来调整主动修复 包。如果发送器被严重泛滥的反馈占用,它会提高主动性因子以增加更多 的主动性修复包。如果发送器只收到较少的反馈,它会减小主动性因子以 减少主动修复包的数目。
每个自接收器发送的ARQ/NAK ( (NAK即否定应答,通知发送器包丢 失),ARQ等同于NAK)都包含接收器需要传输的修复包数量仏,以及一个 NAK轮数该NAK轮数指的是接收器查到的那组(block)数据传输的当 前"轮数"。当发送器传输修复包时,其包中包含一个NAK轮数^,对应 于它从任何接收器接收到那组数据包的最大NAK轮数。
发送器可以利用三种方式响应来自接收器的请求仏个修复包、轮数为 ^的NAK,发送器采用其中一种响应来自客户端的NAK的方法称为"当前轮 (round-current)"。在这种方法中,发送器保存一计数传输的轮数等 于当前发送器处的轮数M的修复包的总数/7。对于到达的NAK,如果^ 〈#s 则忽略NAK。如见=见,就传输max(O,仏-")个包,并将"设置为max (", 仏)。如果见〉见,则/7设为仏,见=见,并传输仏个包。
接收器的NAK轮数^初始为1。发送一个NAK后,其NAK计数就增加 1,如1 = 7^+1。当收到的来自发送器包中的NAK轮数大于或等于其自身 当前值时,该接收器将其NAK轮数更新至发送器的当前轮数值加1 (如果7^》l 令^=见+1)。
然而,正如本文所示,上述方法中不必要地发送一些冗余请求。比
如,当有两个接收器A和B,其中接收器A的传输往返时间比接收器B短。 当这两个接收器都发送轮数为1的NAK时,B请求仏个修复包而A请求较 少的修复包数/7a。假如发送器首先收到仏个修复包的请求,并多播发出仏 个修复包。如果这些修复包在发往接收器A的途中丢失,则接收器A将在 传输第一轮的仏-仏个额外修复包达到(或确认)之前,即请求第二轮的额 外修复包。因此,当仏-仏个修复包可以恢复其余的丢包时,第二轮请求的 修复包就是冗余的,但由于其NAK中的轮数大,而将传输所有的包。
另外,在这个方法中,所有接收器都由来自发送器的NAK轮数A^和修 复包信息来协调。如果一个接收器发送其某一请求具有一个轮数以及所需 要的修复包数,其他接收器只有在上述信息自接收器到发送器再从发送器 到接收器的过程完成后才知道这些信息。因为这个过程要花很多时间,一 些发送器可能无法及时收到其它接收器的信息,而会发送一些冗余请求。

发明内容
一方面,本发明提供了一种在多播网络的接收器处进行的包纠错方
法。该方法包括步骤侦听其它接收器以检测其它接收器发送的重传请 求;根据检测到的重传请求的参数累计来确定是否应抑制或发送该接收器 的重传请求;以及如果该重传请求未被抑制则发送该重传请求。
根据一实施例,接收器的每个重传请求包含显示在网络中发送的重传 请求的当前轮数,以及显示在当前重传请求轮中接收器所要求的修复包数 的信息。
根据另一个实施例,检测到的重传请求的参数累计是检测到的重传请 求所要求的修复包数的累计。
在再一个实施例中,接收器还保存检测到的重传请求的最大轮数。有利的是,当检测到的重传请求包含一个比保存在接收器中的轮数大 的轮数时,即由接收器将检测到的重传请求的信息中含有的修复包数加至 所述累计数并更新接收器保存的轮数。
在一个较佳实施例中,当接收器需要的修复包数大于累计的修复包数 时,由接收器发送其重传请求。
在另一个实施例中,当接收器发送重传请求时,接收器中保存的轮数 增加1并将该增加后的轮数包含在该重传请求中。
在还有另一个实施例中,当接收器发送重传请求时,所请求的修复包 数为累计修复包数与接收器所需要的修复包数之差,该差被加在所述累计 数中。
根据还有另一个实施例,当接收器检测到丢包时,在发送重传请求 前,它将等待一个延迟,该延迟期最好是与接收器所需的修复包数成反 比。
另一方面,本发明描述了一种接收器,用于接收来自多播网络中的发 送器的数据包。在接收器包括一个重传请求检测器,用于检测其它接收器 发送的重传请求, 一个重传请求处理器,根据检测到的重传请求的参数累
计来确定是否应抑制或发送该接收器处的重传请求;以及一重传请求发送 器,用于在该重传请求未被抑制时发送该重传请求。
根据另一个实施例,接收器的每个重传请求包含显示其在网络中发送 的重传请求的当前轮数,以及显示在当前重传请求轮中接收器所要求的修 复包数的信息。
根据另一个实施例,检测到的重传请求的参数累计是检测到的重传请 求所要求的修复包数的累计。
在再一个实施例中,接收器还包括一修复包计数单元,累计检测到的 重传请求所要求的修复包数。
在另一个实施例中,接收器还包括一个轮数计数单元,保存检测到的重传请求的最大轮数。
在一个实施例中,当轮数计数单元中保存的轮数小于在检测到的请求 中所包含的轮数时,则由该轮数计数单元更新轮数的计数。
在另一个实施例中,当接收器所需的修复包数大于累计的修复包数 时,接收器发送其重传请求。
在还有另一个实施例中,当接收器发送重传请求时,保存在轮数计数 单元中的轮数增加1,并将该增加后的轮数包含在重传请求中。
有利的是,当接收器发送重传请求时,所请求的修复包数为累计的修 复包数与接收器所需要的修复包数之差,该差被加在累计数中。
在一个较佳实施例中,接收器还包括一个延迟期计时器,用于对一个 延迟期进行计时,该延迟期是接收器发送重传请求前等待的时期。
在另一个实施例中,该延迟期与接收器所需修复包数成反比。


本发明的其它特征和优点将辅以

通过以下对本发明非限定性 的描述而显现
图1表示的是传统多播无线系统的示意图2是根据本发明实施例的接收器的组成元件的模块示意图; 图3是显示包接收器更新轮数程序的流程示意图;以及 图4是显示在缓冲期发生丢包时的处理程序的流程图。
具体实施例方式
这里所描述的例子用来说明本发明的较佳实施方式,而不能以任何方 式构成对发明保护范围的限制。
这里所描述的实施方式分别用于解释包发送器和包接收器在处理视频 流方面的方法、程序和装置。正如本领域一般技术人员所知,在一些实时视频应用中,例如在线电 影,对于传送至接收器的一组(block)视频包,这些视频包在被送达到解 码器之前在接收器处缓冲一段时间BT。在该缓冲期BT,如果接收器端没有 丢失任何包,则在该缓冲期BT结束之后,这组(block)视频包可以被解 码器成功解码。无论何时,当接收器测到在缓冲期BT中有一些丢包,它将 向发送器发送ARQ,请求重传额外的修复包,直至视频包恢复或直至缓冲期 终止。
图2显示了根据本发明的一个接收器。如图2所示,每个接收器200 括包接收单元21,接收视频包以及一些和视频包一起传输用于恢复丢包的 主动修复包(proactive r印airs),并在丢失的包无法以主动修复包来恢 复时,接收来自发送器的重传的修复包,额外的修复包由接收器200请求 并被重传到其上;丢包分析器22,根据接收到的包来分析丢失了多少包; ARQ检测器25,用于检测其它接收器发送的ARQ;轮数计数单元24,用于 对已经进行的ARQ轮进行计数;修复包计数单元26,用于对所有已经进行 的ARQ轮中发送的修复包数进行计数;ARQ处理器23,根据检测到的其它 接收器发送的ARQ和接收器200处的丢包来确定是否需要发送ARQ或者抑 制ARQ的发送;ARQ发送器29,通过网络广播ARQ;缓冲期计时器28,对 缓冲期BT进行计时;以及延迟期计时器,对发送ARQ之前需要等待的延迟 期进行计时。
现在来参考图3。图3的流程图显示了包接收器处更新轮数的流程。 来自接收器G的每个ARQ请求A包含接收器G请求传输的修复包数 仏,以及表明这组(block)包传输的当前ARQ轮数,M。
对于传输至接收器G的一组(block)视频包,首先由缓冲期计时器 28设置缓冲期BT。设置缓冲期是现有技术领域已知的方法,因此这里就不 介绍了。接收器G这里有一个ARQ轮数计数W以及一修复包计数"/ 。 ARQ轮数计数见'用于累计有多少轮的ARQ已经被发送出去。修复包计数用于累计在所有已经进行的ARQ轮中发送的修复包的数量。在轮数计数 单元24处的轮数计数的初始设置为0,而在修复包计数单元26处的修复包 计数也初始化为0。在缓冲期BT,接收器G保持侦听其它接收器的ARQ 以更新其轮数计数W和修复包计数仏'。为了清楚起见,轮数计数和修 复包计数更新程序以及丢包处理程序将在后面单独进行描述。
首先结合图2和图3介绍轮数计数和修复包计数更新程序。缓冲期计 时器28在步骤310设置缓冲期BT。在步骤320,在轮数计数单元24处的 ARQ轮数计数初始设置为0,而在修复包计数单元26处的修复包计数
也初始化为0。
在步骤330,接收器G处的ARQ检测器25在缓冲期BT侦听无线网络 上的其它接收器。然后在步骤340,确定接收器G是否听到来自其它接收 器的任何其它ARQ, AG^,巧)。如果没有("N"),则程序进行到步骤 370,以检测缓冲期BT是否结束。如果在步骤340判断为"是" ("Y"),则在步骤350进一步确定M.是否大于W,。这一步骤是用于确 定在轮之后是否发出了另一轮的请求,以及在接收器G处的轮数计数 单元24的轮数计数见'和修复包计数单元26处的修复包计数/7/分别需 要进行更新。如果W大于vV/ ,即步骤350的判断为"是"("Y"),则 在步骤360中,接收器G的轮数计数单元24将根据^来更新轮数计数
,修复包计数器单元28设置/7/ =巧+/7/ 。就是说,另一轮的ARQ发 送了,当前由所有接收器发起的ARQ轮数总数为^,并且由所有接收器请 求的修复包数为=&+/7/ 。如果不是,则忽略请求A,程序进行到步骤 370。因为当大于或等于M,意味着接收器G在它发出请求A之前可 能错过了其它接收器发送的请求。所以有时候接收器G处的丢包可能会被 接收器G未听到的接收器发送的修复包恢复。为避免发生这种情况,这类 请求在接收器处被忽略。而即使是接收器G已经发出了请求A,也可能在 发送器处被忽略(当M小于W )。在步骤370,接收器G将检测缓冲期BT是否结束。如果缓冲期结束,即步骤370为"是"("Y"),意味着这 组(block)视频包需要被发送给解码器。这样程序在步骤380结束。否 则,程序转至步骤330继续检测网络上发送的ARQ请求。
以这种方式,通过更新处理,每个接收器可迅速知道其它接收器发送 ARQ请求的情况,知道进行了多少次ARQ请求以及发送了多少ARQ请求。
在接收器G侦听其它接收器以更新其轮数计数和修复包计数77/ 时,它还同时检测它的这组(block)视频包是否发生丢包,从而处理丢包的 情况。
图4为发生丢包时的处理步骤的流程图。如图4所示,在步骤400设 置缓冲期BT,在步骤410轮数计数和修复包计数的初始化值为0,和 图3中所示的步骤310和320相同。在缓冲期BT,步骤420确定是否有一 些包被丢失。如果没有丢包,即步骤420为"否"("N"),程序进行到 步骤530。当接收器G发生丢包,即步骤420为"是"("Y")时,则接 收器G的ARQ处理器23会确定需要重传的修复包数仏。在发送ARQ时,接 收器G需要等待一个延迟期r,。该延迟期r,由延迟期计时器27在步骤430 中设置。延迟期几小于缓冲期BT,并且可以根据接收器需要的修复包数仏 的反比自适应地进行设置。所以要求的修复包数较多的ARQ请求可以被尽 早发送。因此一些冗余的请求就被抑制了。因为即使较少丢失视频包的接 收器没有发送其请求给发送器,由丢失包较多的接收器发送的具有较大修 复包数的重传请求也足以恢复丢失包较少的接收器所丢失的包。
在步骤440,判断接收器G是否收到一些重传的修复包。如果为 "是"("Y"),则接收器G会确定多少丢失的包被恢复并更新修复包数 仏。然后再判断请求A是否应该被抑制或不是。这个判断是在步骤460基 于接收器G需要的修复包数仏与修复包计数单元26处的修复包计数77/ 的比较。如果接收器G需要的修复包数仏不大于修复包计数单元26最新更 新的修复包计数,即步骤460为"否"("N" ) , ARQ处理器23将在步骤490中抑制其自己的ARQ请求A,并在步骤520等待重传修复包, 因为在这种情况下,已经发送的请求了该数量修复包的ARQ足以恢复接收 器G的丢包。所以接收器G就不必发送请求A。在步骤470中,判断延迟 期7;是否结束。因为在延迟期乙修复包计数还是根据来自其它接收 器的ARQ保持更新的。当更新后的修复包计数仏'大于或等于仏,接收器 G将抑制ARQ请求A.。接收器G将继续比较仏和仏,,直至延迟期r,.结 束。
如果延迟期r,结束,接收器G需要的修复包数仏还是大于参数仏,, 即步骤470为"是"("Y"),接收器G需要进行新一轮的ARQ请求。在 延迟期7;结束,在步骤480在轮数计数单元24将轮数计数增加1,而带有 新的轮数W以及需要发送器重传的修复包数仏-仏'的ARQ请求A则在步 骤500发送。然后,修复包计数在步骤510被更新,即在修复包计数 单元26设置/7/ =仏。因为,如果发送ARQ请求A,将有仏个修复包被请 求。
然后,接收器将在步骤520等待重传一段时间。在步骤530判断缓冲 期BT是否结束。如果为"是"("Y"),程序到步骤550终止。如果为 "否"("N"),接收器在缓冲期BT结束之前收到修复包,则在步骤540 中确定丢失的包是否可以被重传的修复包恢复以及是否需要发送其它ARQ 请求。如果在重传中一些重传的修复包丢失,接收器会决定进行另一轮请 求,程序转到步骤430,根据前面描述的还需要的包数来设置延迟期7;。如 果重传的修复包足够恢复接收器G的丢包,而接收器不需要另一轮的ARQ 传输,即步骤540为"否"("N"),则程序在步骤550结束。
发送器的处理是以Dan Rubenstein等提出的round-current方式进 行的。开始时发送器保持轮数^为0,并保持传输的轮数等于当前发送器 轮数^的修复包总数的计数n。对于到达的ARQ,如果W〈^则忽略ARQ。 如M=M,就传输max(0,/7y-;7)个包,并将n设置为max(/7,/7》。如果^〉l则设/7=仏,7^1并传输仏个包。
虽然己对本发明的最佳设计作了描述,但本发明在此公幵的内容的实 质和范围基础上可能被进一步修改。因此,本申请所要求保护的覆盖那些 以本发明的原理所做的各种变化、用途、或调整。另外,本申请所要求保 护的还覆盖那些偏离本发明公开内容但属于与本发明相关的本领域已知或 公知常识并落入所附权利要求的限定范围内的内容。
权利要求
1.一种在多播网络的接收器进行包纠错的方法,包括步骤侦听其它接收器以检测其它接收器发送的重传请求;根据检测到的重传请求的参数累计来确定该接收器的重传请求是否应该被抑制或发送;以及如果该重传请求未被抑制则发送该重传请求。
2. 根据权利要求1所述的在多播网络的接收器进行包纠错的方法,其中来自接收器的每个重传请求包含显示其在网络中发送的重传请求的当前轮数,以及显示在当前轮的重传请求中接收器所要求的修复包数的信息。
3. 根据权利要求2所述的在多播网络的接收器进行包纠错的方法,其中检测到的重传请求的参数累计是检测到的重传请求所要求的修复包数的累计。
4. 根据权利要求3所述的在多播网络的接收器进行包纠错的方法,其中接收器还保存检测到的重传请求的最大轮数。
5. 根据权利要求4所述的在多播网络的接收器进行包纠错的方法,其中当检测到的重传请求包含一个比保存在接收器中的轮数大的轮数时,即由接收器将检测到的重传请求的信息中含有的修复包数加至所述累计的修复包数并更新接收器处保存的轮数。
6. 根据权利要求5所述的在多播网络的接收器进行包纠错的方法,其中当接收器需要的修复包数大于累计的修复包数时,由接收器发送其重传请求。
7. 根据权利要求6所述的在多播网络的接收器进行包纠错的方法,其中当接收器发送重传请求时,接收器中保存的轮数增加1,并且将该增加后的轮数包含在该重传请求中。
8. 根据权利要求7所述的在多播网络的接收器进行包纠错的方法,其中当接收器发送重传请求时,所请求的修复包数为所述累计的修复包数与接收器所需要的修复包数之差,该差被加在累计数中。
9. 根据权利要求8所述的在多播网络的接收器进行包纠错的方法,其 中当接收器检测到丢包时,在发送重传请求前,它将等待一个延迟期。
10. 根据权利要求9所述的在多播网络的接收器进行包纠错的方法,其中所述延迟期与接收器所需修复包数成反比。
11. 一种用于在多播网络中接收来自发送器数据包的接收器(200),包括重传请求检测器(25),用于检测其它接收器发送的重传请求; 重传请求处理器(23),用于根据检测到的重传请求的参数累计确定 是否应抑制或来发送重传请求;以及重传请求发送器(29),用于在该重传请求未被抑制时发送该重传请求。
12. 根据权利要求ll的接收器(200),其中发自接收器的每个重传 请求包含显示其在网络中发送的重传请求的当前轮数,以及显示在当前这 一轮重传请求中接收器所要求的修复包数的信息。
13. 根据权利要求12的接收器(200),其中检测到的重传请求的参 数累计是检测到的重传请求所要求的修复包数的累计。
14. 根据权利要求13的接收器(200),其中它还包括一修复包计数 单元(26),用于累计检测到的重传请求所要求的修复包数。
15. 根据权利要求14的接收器(200),其中它还包括一轮数计数单 元(24),用于保存检测到的重传请求的最大轮数。
16. 根据权利要求15的接收器(200),其中当轮数计数单元中保存 的轮数计数小于包含在检测到的请求中的轮数,则由该轮数计数单元更新 轮数的计数。
17. 根据权利要求16的接收器(200),其中当接收器(200)所需的 修复包数大于累计的修复包数时,接收器(200)发送其重传请求。
18. 根据权利要求17的接收器(200),其中当接收器发送重传请求时,保存在轮数计数单元中的轮数增加1,并且将该增加后的轮数包含在重传请求中。
19. 根据权利要求18的接收器(200),其中当接收器发送重传请求时,所请求的修复包数为累计修复包数与接收器所需要的修复包数之差,该差被加在累计数中。
20. 根据权利要求19的接收器(200),其中还包括一延迟期计时器(27),用于对一个延迟期进行计时,该延迟期是接收器发送重传请求前等待的时期。
21. 根据权利要求20的接收器(200),其中该延迟期与接收器所需修复包数成反比。
全文摘要
本发明提供了一种在无线多播网络中自适应及可伸缩包纠错装置和方法。每个来自接收器的重传请求中包含一个重传请求轮数和在该轮中发送的修复包数。在每个接收器中,有两个计数器,用于对在网络中发送的重传请求轮数以及所请求的修复包进行计数。在该无线多播网络中的接收器侦听其它接收器发送的ARQ请求以更新这两个计数器,并确定它的请求是否要抑制或发送。
文档编号H04L1/16GK101627569SQ200780052029
公开日2010年1月13日 申请日期2007年3月6日 优先权日2007年3月6日
发明者周光华, 张焕强, 钧 李, 王传铭, 陈仁雷, 马小骏 申请人:汤姆逊许可公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1