CN117136514A - 用于数据的稳健传输的加扰分组有效载荷映射 - Google Patents
用于数据的稳健传输的加扰分组有效载荷映射 Download PDFInfo
- Publication number
- CN117136514A CN117136514A CN202280028563.4A CN202280028563A CN117136514A CN 117136514 A CN117136514 A CN 117136514A CN 202280028563 A CN202280028563 A CN 202280028563A CN 117136514 A CN117136514 A CN 117136514A
- Authority
- CN
- China
- Prior art keywords
- packet
- frames
- sequence
- main frame
- data
- 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.)
- Pending
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 120
- 238000013507 mapping Methods 0.000 title claims abstract description 73
- 238000000034 method Methods 0.000 claims abstract description 114
- 239000000872 buffer Substances 0.000 claims description 163
- 230000004044 response Effects 0.000 claims description 9
- 230000008569 process Effects 0.000 description 93
- 238000004891 communication Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 9
- 238000011084 recovery Methods 0.000 description 8
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 230000003139 buffering effect Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000008713 feedback mechanism Effects 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013506 data mapping Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/43—Assembling or disassembling of packets, e.g. segmentation and reassembly [SAR]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/166—IP fragmentation; TCP segmentation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0823—Errors, e.g. transmission errors
- H04L43/0829—Packet loss
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/34—Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9057—Arrangements for supporting packet reassembly or resequencing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
- H04L49/9068—Intermediate storage in different physical parts of a node or terminal in the network interface card
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/08—Arrangements for detecting or preventing errors in the information received by repeating transmission, e.g. Verdan system
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Environmental & Geological Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
描述了用于数据的稳健传输的分组有效载荷映射的系统和方法。例如,方法可以包括:使用网络接口传输第一分组,第一分组包括来自数据帧序列的主帧和一个或多个在前帧,其中,第一分组的一个或多个在前帧在帧序列中与第一分组的主帧相离步幅参数的相应倍数;传输第二分组,第二分组包括来自数据帧序列的主帧和一个或多个在前帧,其中,第一分组的主帧是第二分组的一个或多个在前帧中的一个在前帧;以及在传输第一分组和第二分组之前,随机确定第一分组和第二分组的传输顺序。
Description
技术领域
本公开涉及用于数据的稳健传输的加扰分组有效载荷映射。
背景技术
当通过网络应用进行数据传输时,有两种主要类型的互联网协议(IP)流量:传输控制协议(TCP)和用户数据报协议(UDP)。每种协议都有自己的预期用途和优势。
例如,TCP就是通常所说的确认模式协议。这意味着当数据被交换时,内置的反馈机制检查并确认数据是否被正确地接收。如果任何数据缺失或丢失,则进一步的机制对损坏或缺失的信息进行重传。这些机构使得TCP特别适合于传输诸如静态图像、数据文件和网页之类的信息。虽然这种可靠性使TCP非常适合这些用例,但它确实是有代价的。为了保证稳定性,每个客户端接收其自己的TCP流(称为单播),这意味着如果网络上有许多客户端,则数据经常被复制。这些控制和反馈机制导致更大的协议开销,这意味着网络连接上的更大比例的有价值带宽被用于发送此种附加的控制信息。除了附加的带宽开销,数据的重传还可能会导致等待时间的增加,从而使实时应用受到影响。
另一方面,UDP是一种无确认模式协议,这意味着没有主动机制来对在交换期间丢失的数据进行重传。因此,在某些情况下,与TCP相比,UDP是一种糟糕的发送和接收数据的方式(例如,发送电子邮件或下载文件)。然而,其他因素使UDP在实时通信方面具有优势。由于UDP是无确认的,因此占用可用于有用数据的有价值空间的协议开销更少,从而使传输更快并且更高效。
发明内容
本文所公开的是用于数据的稳健传输的加扰分组有效载荷映射的实现。
在第一方面中,提供了一种用于传输被划分成数据帧序列的数据的系统。系统包括存储器、存储器、以及网络接口。存储器存储可由处理器执行以使系统用于以下操作的指令:使用网络接口传输第一分组,第一分组包括来自数据帧序列的主帧和两个或更多个在前帧,其中,第一分组的两个或更多个在前帧中的至少一个在前帧在帧序列中与第一分组的主帧相离第一步幅参数的相应倍数,并且第一分组的两个或更多个在前帧中的至少一个在前帧在帧序列中与第一分组的主帧相离第二步幅参数的相应倍数,第二步幅参数与第一步幅参数不同;使用网络接口传输第二分组,第二分组包括来自数据帧序列的主帧和两个或更多个在前帧,其中,第二分组的两个或更多个在前帧中的至少一个在前帧在帧序列中与第二分组的主帧相离第一步幅参数的相应倍数,并且第二分组的两个或更多个在前帧中的至少一个在前帧在帧序列中与第二分组的主帧相离第二步幅参数的相应倍数,并且其中,第一分组的主帧是第二分组的两个或更多个在前帧中的一个在前帧;以及在传输第一分组和第二分组之前,随机确定第一分组和第二分组的传输顺序。
在第二方面中,提供了一种用于传输被划分成数据帧序列的数据的方法。方法包括:使用网络接口传输第一分组,第一分组包括来自数据帧序列的主帧和两个或更多个在前帧,其中,第一分组的两个或更多个在前帧中的至少一个在前帧在帧序列中与第一分组的主帧相离第一步幅参数的相应倍数,并且第一分组的两个或更多个在前帧中的至少一个在前帧在帧序列中与第一分组的主帧相离第二步幅参数的相应倍数,第二步幅参数与第一步幅参数不同;使用网络接口传输第二分组,第二分组包括来自数据帧序列的主帧和两个或更多个在前帧,其中,第二分组的两个或更多个在前帧中的至少一个在前帧在帧序列中与第二分组的主帧相离第一步幅参数的相应倍数,并且第二分组的两个或更多个在前帧中的至少一个在前帧在帧序列中与第二分组的主帧相离第二步幅参数的相应倍数,并且其中,第一分组的主帧是第二分组的两个或更多个在前帧中的一个在前帧;以及在传输第一分组和第二分组之前,随机确定第一分组和第二分组的传输顺序。
在第三方面中,提供了一种用于传输被划分成数据帧序列的数据的非瞬态计算机可读存储介质。非瞬态计算机可读存储介质包括可执行指令,可执行指令在由处理器执行时促进操作的执行,这些操作包括:使用网络接口传输第一分组,第一分组包括来自数据帧序列的主帧和两个或更多个在前帧,其中,第一分组的两个或更多个在前帧中的至少一个在前帧在帧序列中与第一分组的主帧相离第一步幅参数的相应倍数,并且第一分组的两个或更多个在前帧中的至少一个在前帧在帧序列中与第一分组的主帧相离第二步幅参数的相应倍数,第二步幅参数与第一步幅参数不同;使用网络接口传输第二分组,第二分组包括来自数据帧序列的主帧和两个或更多个在前帧,其中,第二分组的两个或更多个在前帧中的至少一个在前帧在帧序列中与第二分组的主帧相离第一步幅参数的相应倍数,并且第二分组的两个或更多个在前帧中的至少一个在前帧在帧序列中与第二分组的主帧相离第二步幅参数的相应倍数,并且其中,第一分组的主帧是第二分组的两个或更多个在前帧中的一个在前帧;以及在传输第一分组和第二分组之前,随机确定第一分组和第二分组的传输顺序。
在第四方面中,提供了一种用于传输被划分成数据帧序列的数据的系统。系统包括存储器、存储器、以及网络接口。存储器存储可由处理器执行以使系统用于以下操作的指令:使用网络接口传输第一分组,第一分组包括来自数据帧序列的主帧和一个或多个在前帧,其中,第一分组的一个或多个在前帧在帧序列中与第一分组的主帧相离步幅参数的相应倍数;使用网络接口传输第二分组,第二分组包括来自数据帧序列的主帧和一个或多个在前帧,其中,第二分组的一个或多个在前帧在帧序列中与第二分组的主帧相离步幅参数的相应倍数,并且其中,第一分组的主帧是第二分组的一个或多个在前帧中的一个在前帧;以及在传输第一分组和第二分组之前,随机确定第一分组和第二分组的传输顺序。
在第五方面中,提供了一种用于传输被划分成数据帧序列的数据的方法。方法包括:传输第一分组,第一分组包括来自数据帧序列的主帧和一个或多个在前帧,其中,第一分组的一个或多个在前帧在帧序列中与第一分组的主帧相离步幅参数的相应倍数;传输第二分组,第二分组包括来自数据帧序列的主帧和一个或多个在前帧,其中,第二分组的一个或多个在前帧在帧序列中与第二分组的主帧相离步幅参数的相应倍数,并且其中,第一分组的主帧是第二分组的一个或多个在前帧中的一个在前帧;以及在传输第一分组和第二分组之前,随机确定第一分组和第二分组的传输顺序。
在第六方面中,提供了一种用于传输被划分成数据帧序列的数据的非瞬态计算机可读存储介质。非瞬态计算机可读存储介质包括可执行指令,可执行指令在由处理器执行时促进操作的执行,这些操作包括:传输第一分组,第一分组包括来自数据帧序列的主帧和一个或多个在前帧,其中,第一分组的一个或多个在前帧在帧序列中与第一分组的主帧相离步幅参数的相应倍数;传输第二分组,第二分组包括来自数据帧序列的主帧和一个或多个在前帧,其中,第二分组的一个或多个在前帧在帧序列中与第二分组的主帧相离步幅参数的相应倍数,并且其中,第一分组的主帧是第二分组的一个或多个在前帧中的一个在前帧;以及在传输第一分组和第二分组之前,随机确定第一分组和第二分组的传输顺序。
附图说明
当与所附附图结合来阅读时,本公开从下列具体实施方式而被最佳地理解。所强调的是,根据惯例,附图的各种特征不是按比例的。相反,为了清楚起见,各种特征的尺寸被任意扩大或缩小。
图1是用于使用用于数据的稳健传输的分组有效载荷映射将成帧数据从服务器传输到一个或多个客户端设备的系统的示例的框图。
图2是使用用于数据的稳健传输的分组有效载荷映射的分组编码方案的示例的时序图。
图3A和图3B是具有各自保存分组的主帧和一个或多个在前帧的条目的环形缓冲器的示例的存储器映射。
图4是图1所示的系统的计算设备的内部配置的示例的框图。
图5是示出用于使用用于数据的稳健传输的分组有效载荷映射来传输被划分成数据帧序列的数据的过程示例的流程图。
图6是示出用于使用用于数据的稳健传输的分组有效载荷映射来接收被划分成数据帧序列的数据的过程示例的流程图。
图7是示出用于从具有各自保存分组的主帧和一个或多个在前帧的条目的缓冲器中读取数据帧的过程的示例。
图8是被配置成用于使用用于数据的稳健传输的分组有效载荷映射来接收被划分成数据帧序列的数据的计算设备中的数据流的示例的框图。
图9是示出用于在去除分组有效载荷冗余之后通过重组缓冲器传递成帧数据的过程的示例的流程图。
图10是示出用于使用用于数据的稳健传输的具有多个步幅的分组有效载荷映射来传输被划分成数据帧序列的数据的过程示例的流程图。
图11是示出用于使用用于数据的稳健传输的具有多个步幅的分组有效载荷映射来接收被划分成数据帧序列的数据的过程示例的流程图。
图12A是示出用于对承载被划分成数据帧序列的数据的分组的传输顺序进行随机化的过程的示例的流程图。
图12B是示出用于对承载被划分成数据帧序列的数据的分组的传输顺序进行随机化的过程的示例的流程图。
图13示出了四个条形图,它们示出了在对传输顺序进行发送方侧加扰和不进行发送方侧加扰的情况下的突发分组丢失。
图14示出了两个条形图,它们示出了对传输顺序进行发送方侧加扰和不进行发送方侧加扰的情况下的突发分组丢失。
具体实施方式
当从实时数据传输的角度来看时,UDP由于没有开销和或低等待时间限制而成为优选的传输层协议。然而,重传的缺乏带来了稳定性和可靠性的问题。一般来说,使用UDP时会发生一些丢失(因此在音频中出现爆音或在视频中出现小故障(glitch))是公认的。本文描述的分组-帧映射方案可以提供用于恢复此种丢失的数据中的一些数据的方法。
分组-帧映射提供了一种分发冗余数据的方式,以允许在使用UDP时恢复数据丢失。存在其他方法来实现这种类型的恢复(诸如前向纠错),但是分组-帧映射可以使用能够提供优于现有系统的优点的不同的分发和排序冗余数据的方式。例如,实现用于成帧数据的传输的分组-帧映射的系统对于长突发分组丢失可能更加稳健,长突发分组丢失在一些网络环境(诸如拥塞的高流量无线网络)中可能是常见的。
在描述分组-帧映射方案时,有几个术语要定义。如本文所使用的,“步幅(stride)”是指用被选择包含在给定分组中的帧之间的、按数据帧序列中的帧的数量来表示的间隔。例如,分组-帧映射方案的步幅可以对应于客户端设备在丢失数据的映射后有信心接收的连续分组的最小数量(例如,该方案被设计为从中完全恢复的最长的分组丢失突发)。该数量可以基于接收到的分组的统计来选择。
如本文所使用的,“段(segment)”是指示被捆绑到分组中的冗余帧的数量的冗余参数。
如本文所使用的,分组-帧映射的“长度”是映射中相对于索引为零的当前帧的最低帧索引或最大绝对索引。例如,在音频流中,长度乘以帧大小就是可以恢复多少音频。例如,对于长度为64并且帧大小为2.5ms的分组-帧映射,可以使用该映射恢复160ms的音频。
如本文所使用的,分组映射数据结构指示分组映射方案的步幅和段,并且可以指定在网络或其他通信通道上编码的分组有效载荷的结构。例如,服务器设备可以使用分组映射数据结构来创建和发送数据,以解码分组有效载荷,并且实例化缓冲器来接收分组以利用冗余。例如,{0,-16,-32,-48,-64}是步幅为16并且段为4的映射。分组帧映射可以被设计成用于在高分组丢失事件之后恢复数据。它也可以处理偶尔的分组丢失;然而,它在大型丢失事件中大放异彩。例如,在扫描事件期间,iOS设备可能会丢失45到55个分组,然后接收到16个分组,然后再次丢失45到55个分组。在这个场景中,步幅为16并且段为4将允许恢复长达64个分组的突发分组丢失,从而使系统对iOS扫描事件具有稳健性。
具有这种分组-帧映射风格的分组帧映射尤其擅长恢复稳定的、重复出现的丢失模式。例如,当移动设备上发生无线扫描时,无线卡会离开其主通道并跳至其他通道进行快速扫描,搜索是否有性能更高的通道可供切换。因此,可能会出现如下模式:丢失50个分组,接收20个分组,丢失50个分组,接收到20个分组,丢失50个分组,接收到20个分组,以此类推。就上下文而言,这是由于无线卡跳离主通道、扫描并跳回而导致的。因此出现了丢失、接收、丢失模式。示例分组-帧映射允许在这种场景中进行完全恢复。
尽管具有单个步幅的分组-帧映射非常强大,但是这种基于模式的恢复也存在局限性。例如,步幅为16指示设备在丢失事件之后需要接收16个分组来保证从支持的最大分组丢失事件中完全恢复。在嘈杂的无线环境中,每接收到几个分组就会以随机无模式的方式丢失分组,这种情况很常见。这种类型的环境与无线扫描搭配将导致单步幅分组-帧映射失效,除非该单步幅分组-帧映射显著减小其步幅。例如,步幅为4并且长度为64的单步幅映射:{0,-4,-8,-12,-16,-20,-24,-28,-32,-36,-40,-44,-48,-52,-56,-60,-64}必须使用16的大段,这会造成增加。如图所示,这增加了分组中的帧的数量,并因此增加了分组-帧映射方案的网络带宽消耗。
为了更好地处置偶尔或偶发的分组丢失,可以扩展分组-帧映射以支持多个步幅。例如,短步幅(例如,1或2)可以与较长步幅(例如,8或16)搭配来处理具有不同概况的分组丢失。分组-帧映射中的每个步幅可以具有相应的段,该相应的段指定在该步幅下每个分组的冗余帧的数量。
在一些实现方式中,通过改变步幅,可以使用多步幅分组-帧映射,这可以帮助很好地解决这两种数据丢失场景。例如,分组-帧映射{0,-1,-2,-3,-4,-8,-16,-32,-48,-64}具有1的步幅和4的段以及8的步幅和5的段,并且由于映射开始处的步幅较小,因此能够处理小而频繁的分组丢失事件,同时由于长度值较大,因此还能够恢复更大量的数据。每个分组的冗余帧的总数是分组-帧映射中跨所有步幅的段的总和,在该示例中为每个分组4+5=9个冗余帧。
一种用于实现分组-帧映射方案的系统,该系统可以包括根据分组映射数据结构来打包和发送数据的服务器、以及可以正确地解包和利用冗余数据的客户端。在一些实现方式中,客户端设备使用两种不同类型的缓冲器:环形缓冲器和重组缓冲器。环形缓冲器的大小可以由步幅和段的大小来确定。在我们的示例中,步幅为16,段为4,因此环形缓冲器的大小可以被设计成用于存储来自(步幅×段)+1个分组=65个分组的帧。在一些实现方式中,环形缓冲器的大小可以被设计成用于存储来自(步幅×段)个分组=64个分组的帧,并且最新分组或实况分组(该最新分组或实况分组承载环形缓冲器中存储的最旧分组中的最新帧的帧副本作为其最旧帧)可以被存储在环形缓冲器之外,直到最旧分组已经从环形缓冲器中被删除之后。例如,如果我们有与持续时间为2.5毫秒的音频信号相对应的音频数据帧,并且缓冲器的大小被设计成用于恢复多达64个帧(例如,分组映射数据结构中的最低数量),则由缓冲方案引入的等待时间会是2.5毫秒*64=160毫秒。例如,重组缓冲器的大小可以取决于步幅的大小,在这种情况下为16。环形缓冲器的目的是接收并找出哪些数据丢失了。然后,可以在重组缓冲器中重建数据,以便允许正确地恢复和播放丢失的数据。
一些实现方式可以采用发送方侧加扰,即,根据分组映射方案对承载成帧数据的分组的传输顺序进行随机化。代替仅在客户端侧创建缓冲器并且让客户端存储然后重新排序帧,可以在服务器侧添加缓冲器,并且可以在向客户端传输具有冗余的分组客户端之前对该分组的传输顺序进行随机加扰。尽管主帧的顺序被加扰,但是冗余帧仍然根据分组映射方案而与它们的相同的相应主帧配对。传输顺序的发送方侧加扰可以提供优点,诸如增加对突发分组丢失事件的恢复能力,使得系统更加稳健。
图1是用于使用用于数据的稳健传输的分组有效载荷映射将成帧数据从服务器传输到一个或多个客户端设备的系统100的示例的框图。系统100包括具有网络接口104的服务器设备102,网络接口104被配置成用于经由网络106发送和接收数据。网络106可以包括例如互联网,和/或网络106可以是或者包括局域网(LAN)、广域网(WAN)、虚拟专用网络(VPN)、或能够在计算设备(例如,客户端和服务器)之间传输数据的任何其他公共或专用电子计算机通信手段。网络106或系统100的任何其他元件或元件的组合可以包括网络硬件,诸如路由器、交换机、负载平衡器、其他网络设备、或它们的组合。例如,网络106可以是WiFi网络。例如,网络106可以是蜂窝电话网络。例如,服务器设备102可以包括经由网络106将音频数据传输到客户端设备的音频服务器。在一些实现方式中,服务器设备102被配置成用于经由体育场或其他场所中的无线网络(例如,WiFi网络)将现场音乐会或音乐表演的音频数据多播到音乐会观众的个人计算机设备(例如,智能手机或平板电脑)。例如,服务器设备102可以包括经由网络106将视频数据传输到客户端设备的视频服务器。例如,服务器设备102可以包括经由网络106将文件传输到客户端设备的文件服务器。例如,服务器设备可以包括图4的计算设备400的部件。例如,服务器设备102可以实现图5的过程500。例如,服务器设备102可以实现图10的过程1000。
系统100还包括客户端设备110和客户端设备112。客户端设备110包括网络接口120,网络接口120被配置成用于经由网络106发送和接收数据。客户端设备112包括网络接口122,网络接口122被配置成用于经由网络106发送和接收数据。客户端设备110包括环形缓冲器130,环形缓冲器130可以用于促进使用用于数据的稳健传输的分组有效载荷映射进行的成帧数据的接收。环形缓冲器130可以允许在分组有效载荷映射中使用冗余,以从传输期间的分组丢失(包括潜在长突发分组丢失)中恢复。例如,环形缓冲器130可以包括各自保持分组的主帧和一个或多个在前帧的条目。在一些实现方式中,环形缓冲器130可以存储数据帧的多个副本并且被配置成用于输出数据帧序列中的每个帧的单个副本。例如,环形缓冲器130可以基于分组有效载荷映射方案的一个或多个参数(诸如步幅参数和/或冗余参数)来提供。例如,环形缓冲器130可以是图3A和图3B的环形缓冲器302。类似地,客户端设备112包括环形缓冲器132,环形缓冲器132可以用于促进使用用于数据的稳健传输的分组载荷映射进行的成帧数据的接收。例如,环形缓冲器132可以是图3A和图3B的环形缓冲器302。例如,客户端设备110可以包括图4的计算设备400的部件。例如,客户端设备112可以包括图4的计算设备400的部件。例如,客户端设备110和客户端设备112可以实现图6的过程600。例如,客户端设备110和客户端设备112可以实现图11的过程1100。
服务器设备102被配置成用于传输分组(包括分组140),该分组包括一个或多个冗余数据帧,该一个或多个冗余帧在帧序列中相隔由分组有效载荷映射方案的步幅参数确定的多个帧。例如,在其中步幅参数为5并且冗余参数为3的分组有效载荷映射方案中,分组140可以包括具有帧索引I的主帧、具有帧索引I-5的在前帧、具有帧索引I-10的在前帧、以及具有帧索引I-15的在前帧。例如,图2的分组编码方案200可以用于对由服务器设备102传输的分组140和其他分组进行编码。在一些实现方式中,分组140由服务器设备102多播到客户端设备110和客户端设备112。在一些实现方式中,分组140由服务器设备102广播到网络106上的所有设备。在一些实现方式中,分组140由服务器设备102单播到客户端设备110。注意,为了简单起见,图1中示出了两个客户端设备110和112,但是服务器设备102可以支持更多的客户端设备。
图2是使用用于数据的稳健传输的分组有效载荷映射的分组编码方案200的示例的时序图。分组编码方案200使用步幅参数5,这意味着被包括在分组中的帧在数据帧序列中彼此相隔5个帧。分组编码方案200使用冗余参数3,这意味着分组包括根据步幅参数间隔开的主(例如,最新近的)帧和三个在前帧,这三个在前帧可能已经在先前分组中作为主帧和/或作为在前帧被传输。
被传输的第一分组是分组零210,分组零210包括帧索引为0的主帧212、帧索引为-5的(即,在帧0之前五个帧的)在前帧214、帧索引为-10的在前帧、以及帧索引为-15的在前帧218。被传输的第二分组是分组一220,分组一220包括帧索引为1的主帧222、帧索引为-4的在前帧224、帧索引为-9的在前帧226、以及帧索引为-14的在前帧228。被传输的第三分组是分组二230,分组二230包括帧索引为2的主帧232、帧索引为-3的在前帧234、帧索引为-8的在前帧236、以及帧索引为-13的在前帧238。被传输的第四分组是分组三240,分组三240包括帧索引为3的主帧242、帧索引为-2的在前帧244、帧索引为-7的在前帧246、以及帧索引为-12的在前帧248。被传输的第五分组是分组四250,分组四250包括帧索引为4的主帧252、帧索引为-1的在前帧254、帧索引为-6的在前帧256以及帧索引为-11的在前帧258。
例如,分组编码方案200使得能够基于五个连续分组(即,步幅个连续分组)的接收来恢复多达15个分组(即,步幅乘以冗余)的突发分组丢失。例如,分组编码方案200可以非常适合于容易出现长突发分组丢失的网络环境。
图3A示出了具有各自保存分组的主帧和一个或多个在前帧的条目310-340的环形缓冲器302的示例的存储器映射300。在该示例中,环形缓冲器302的大小被设计成用于支持步幅参数为5且冗余参数为3的分组有效载荷映射方案(例如,图2的分组编码方案200)。存储器映射300的外环表示针对每个分组而存储的主帧。存储器映射300的三个内环表示针对每个分组而存储的在前帧。在存储器映射300中,环形存储器302的条目310与具有当前存储在环形存储器302中的帧的最旧分组相对应。环形存储器302的条目340与具有当前存储在环形存储器302中的帧的最新分组相对应。条目310是要被评估以从环形存储器302读取下一数据帧的下一条目。由于条目310存储索引为0的帧的有效副本作为其主帧(即,成功接收到的对应的分组),因此索引为0的帧可以从环形缓冲器302的条目310被读取为主帧。响应于条目310的主帧从环形缓冲器302被读取,条目310可以被删除(例如,存储器位置可以被释放以供重新使用)。注意,条目340将索引为0的帧的副本包括在其最旧的(最内的)在前帧时隙中。通过在与条目340相对应的分组被接收之前等待以读取具有该帧作为其主帧的条目310,在从环形缓冲器302读取时具有索引为0的帧的有效副本的机会被最大化。因此,环形缓冲器302的大小可以被设计成用于存储来自数量等于(步幅×冗余)+1的(即,在该示例中为16个)分组的帧。对于实时媒体传输(例如,音频或视频),该缓冲方案可能会引入与帧持续时间(例如,2.5毫秒或5毫秒)乘以步幅参数乘以冗余参数相对应的算法等待时间。
例如,环形缓冲器302可以实现为循环缓冲器。在一些实现方式中,环形缓冲器302可以从自抖动缓冲器输出的分组取得输入,并且环形缓冲器302可以作为先进先出(FIFO)缓冲器来操作。
图3B示出了具有各自保存分组的主帧和一个或多个在前帧的条目的环形缓冲器302的存储器映射350。存储器映射350示出了在比图3A的存储器映射300中的状态晚的时间的环形缓冲器302。条目310已被更新以存储已接收到的最新分组的帧。该最新分组包括帧索引为16的主帧。现在,条目312与应该将其帧存储在环形存储器302中的最旧分组相对应。然而,与条目312相对应的分组已经丢失(例如,损坏或以其他方式丢失)。因此,索引为1的、帧序列上的下一帧不可用作条目312中的主帧。替代地,可以在环形缓冲器302中搜索该下一帧的有效副本以供读出。在该示例中,存在索引为1的帧的两个有效副本,这两个有效副本作为在前帧存储在环形缓冲器的条目332和条目310中。索引为1的帧的这些副本中的一个可以然后作为在前帧从环形缓冲器302被读取。
图4是图1所示的系统的计算设备400的内部配置的示例的框图,诸如服务器设备102、客户端设备110、和/或客户端设备112。例如,客户端设备和/或服务器设备可以是包括多个计算设备和/或单个计算设备的计算系统,诸如移动电话、平板计算机、膝上型计算机、笔记本计算机、台式计算机、服务器计算机、和/或其他合适的计算设备。计算设备400可以包括诸如以下各项的部件和/或单元:处理器402、总线404、存储器406、外围设备414、电源416、网络通信单元418、用户接口420、其他合适的部件、和/或它们的任何组合。
处理器402可以是诸如微处理器之类的中央处理单元(CPU),并且可以包括具有单个或多个处理核的单个或多个处理器。替代地,处理器402可以包括现在存在或以后开发的能够操纵或处理信息的另一类型的设备或多个设备。例如,处理器402可以包括以任何方式互连的(包括硬连线和/或联网的(包括无线联网的))多个处理器。在一些实现方式中,处理器402的操作可以跨多个物理设备和/或单元分布,这些物理设备和/或单元可以直接耦合或跨局域网或其他类型的网络耦合。在一些实现方式中,处理器402可以包括用于操作数据和/或指令的本地存储的高速缓存或高速缓存存储器。处理器402的操作可以跨多个机器分布,这些机器可以直接耦合或跨局域网或其他类型的网络耦合。
存储器406可以包括易失性存储器、非易失性存储器、和/或它们的组合。例如,存储器406可以包括易失性存储器(诸如一个或多个DRAM模块(诸如DDR SDRAM))和非易失性存储器(诸如盘驱动器、固态驱动器、闪存存储器、相变存储器(PCM)、和/或能够诸如在没有有源电源的情况下持久存储电子信息的任何形式的非易失性存储器)。存储器406可以包括现在存在的或以后开发的能够存储用于由处理器402处理的数据和/或指令的另一类型的设备或多个设备。处理器402可以经由总线404访问和/或操纵存储器406中的数据。尽管在图4中存储器406被示出为单个框,但是存储器406可以被实现为多个单元。例如,计算设备400可以包括易失性存储器(诸如RAM)和持久存储器(诸如硬盘驱动器或其他存储)。存储器406可以跨多个机器分布,诸如基于网络的存储器,或执行客户端和/或服务器的操作的多个机器中的存储器。
存储器406可以包括以下各项以供处理器402立即访问:可执行指令408;数据,诸如应用数据410;操作系统412;或它们的组合。可执行指令408可以包括例如一个或多个应用程序,该一个或多个应用程序可以全部或部分地从非易失性存储器被加载和/或复制到易失性存储器,以由处理器402执行。可执行指令408可以被组织成可编程模块和/或算法、功能程序、代码、代码段、和/或它们的组合,以执行本文描述的各种功能。例如,存储器406可以包括这样的指令:该指令可由处理器402执行,以使得包括计算设备400的系统实现图5的过程500、图6的过程600、图10的过程1000、或图11的过程1100。
应用数据410可以包括例如:用户文件;数据库目录和/或字典;功能程序的配置信息,诸如网络浏览器、网络服务器、数据库服务器;和/或它们的组合。操作系统412可以是例如:MicrosoftMac OS/>或/>用于小型设备(诸如智能手机或平板设备)的操作系统;或用于大型设备(诸如大型计算机)的操作系统。存储器406可以包括一个或多个设备,并且可以利用一种或多种类型的存储,诸如固态存储或磁存储。
外围设备414可以经由总线404耦合到处理器402。外围设备可以是传感器或检测器,或者是包含任意数量的传感器或检测器的设备,传感器或检测器可以监测计算设备400本身和/或计算设备400周围的环境。例如,计算设备400可以包含地理空间位置标识单元,诸如全球定位系统(GPS)位置单元。作为另一示例,计算设备400可以包含用于测量计算设备400的部件(诸如处理器402)的温度的温度传感器。如可以构想的,其他传感器或检测器可以与计算设备400一起被使用。在一些实现方式中,客户端和/或服务器可以省略外围设备414。在一些实现方式中,电源416可以是电池,并且计算设备400可以独立于外部配电系统来操作。计算设备400的部件中的任何部件(诸如外围设备414或电源416)可以经由总线404与处理器402通信。尽管总线404在这里被描绘为单个总线,但是总线404可以由多个总线组成,这些总线可以通过各种桥、控制器和/或适配器彼此连接。
网络通信单元418也可以经由总线404耦合到处理器402。在一些实现方式中,网络通信单元418可以包括一个或多个收发器。网络通信单元418经由网络接口提供到网络(诸如网络106)的连接或链路,网络接口可以是有线网络接口(诸如以太网)或无线网络接口。例如,计算设备400可以使用一种或多种网络协议(诸如以太网、TCP、IP、电力线通信(PLC)、WiFi、红外、GPRS、GSM、CDMA、TDMA、UMTS、或其他合适的协议)经由网络通信单元418和网络接口来与其他设备通信。
用户接口420可以包括显示器;位置输入设备,诸如鼠标、触摸板、触摸屏等;键盘;和/或其他人机接口设备。用户接口420可以经由总线404耦合到处理器402。除了显示器之外或作为显示器的替代,还可以提供允许用户编程或以其他方式使用计算设备400的其他接口设备。在一些实现方式中,用户接口420可以包括显示器,显示器可以是液晶显示器(LCD)、阴极射线管(CRT)、发光二极管显示器(例如,OLED显示器)、或其他合适的显示器。用户接口420可以包括音频驱动器(例如,扬声器),该音频驱动器被配置成用于将电子音频数据转换为介质(例如,空气)中的声音。例如,用户接口420中的扬声器可以用于播放音频数据(例如,编码音乐或语音信号)。
图5是示出用于使用用于数据的稳健传输的分组有效载荷映射来传输被划分成数据帧序列的数据的过程500的示例的流程图。过程500包括:传输502指示步幅参数和冗余参数的分组映射数据结构;对于数据帧序列,从序列中选择510下一帧作为用于传输的主帧,并且传输520按数据帧序列中与步幅参数相对应的间隔包括主帧和一个或多个在前帧的分组;当(在操作525处)最后一帧已经作为主帧被传输520时,传输530包括与经过序列的最后一帧的下一序列索引相对应的伪主帧以及与该伪主帧相距步幅间隔的一个或多个在前帧的分组,直到(在操作535处)帧序列的最后一帧已经被传输了等于一加冗余参数的次数;以及结束540数据传输。例如,图5的过程500可以由图1的服务器设备102实现。例如,图5的过程500可以由图4的计算设备400实现。
过程500包括:传输502分组映射数据结构,该分组映射数据结构指示步幅参数,并且指示要在包括来自数据帧序列的帧的分组集合中的每个分组中被传输的冗余在前帧的计数。步幅参数可以指定在帧序列中、在多个分组中的分组中包括的主分组和一个或多个在前分组之间的间隔。在一些实现方式中,步幅参数大于四。冗余在前帧的计数可以被称为分组有效载荷映射方案的冗余参数。例如,分组映射数据结构可以包括作为对应在前帧的帧索引偏移的整数列表,针对每个在前帧有一个整数(例如,对于具有步幅5和冗余3的方案该整数列表为{-5,-10,-15},或对于具有步幅16和冗余4的方案该整数列表为{-16,-32,-48,-64})。在一些实现方式中,分组数据结构包括分别表示步幅参数和冗余参数的两个正整数。可以使用网络接口(例如,网络接口104)来传输502分组映射数据结构。在一些实现方式中,在数据帧开始被传输520之前,分组映射数据结构在单独的分组中被传输502一次。在一些实现方式中,分组映射数据结构作为用于传输帧序列的分组集合中的每个分组的头部(header)的一部分被传输502。例如,数据帧序列可以是音频数据(例如,编码音乐或语音信号)的帧序列。例如,数据帧序列可以是视频数据的帧序列。
过程500包括选择510下一帧作为用于在下一分组中传输的主帧。例如,下一帧指针或计数器可以被初始化为指向数据帧序列的开始处的帧,并且帧指针或计数器可以被递增或以其他方式被更新,以选择510下一帧来作为主进行传输。在一些实现方式中,承载数据帧的分组的传输顺序可以被随机化,以减轻大突发分组丢失事件对分组映射方案的影响。例如,过程500可以包括:在传输第一分组和第二分组之前,随机确定第一分组和第二分组的传输顺序。可以缓冲要传输的分组的数据帧以实现乱序帧(out-of-frame-order)传输。可以使用发送侧缓冲器的各种大小,这取决于所期望的突发丢失容限的水平和应用中的端到端等待时间的容限。例如,发送方侧缓冲器的大小可以被设计成用于存储与由用于对应接收器设备中的分组映射方案的环形缓冲器存储的多个分组相匹配的多个分组的数据。在一些实现方式中,随机确定传输顺序包括:随机生成具有存储与相应的分组(包括第一分组和第二分组)相关联的数据的条目的缓冲器的索引,以选择用于传输的下一分组。在随机传输顺序被确定之前或者在随机传输顺序被确定之后,可以通过由分组映射数据结构编码的分组映射方案基于与其主帧相关的数据帧来生成分组。例如,选择510下一帧作为用于在下一分组中传输的主帧可以包括:实现图12A的过程1200,以对传输顺序进行随机化。例如,选择510下一帧作为用于在下一分组中传输的主帧可以包括:实现图12B的过程1250,以对传输顺序进行随机化。
过程500包括:传输520包括来自数据帧序列的主帧(例如,当前被选择510的帧)和一个或多个在前帧的分组。第一分组的一个或多个在前帧在帧序列中与第一分组的主帧相离步幅参数的相应倍数(例如,如针对步幅参数为5的分组编码方案200所示)。例如,可以使用网络接口(例如,网络接口104)来传输520分组。在一些实现方式中,分组的一个或多个在前帧包括来自数据帧序列的两个或更多个在前帧。分组可以包括其他数据,诸如头部数据(例如,Ipv6头部和UDP头部),以促进分组跨网络(例如,网络106)的传输。如果(在操作525处)在要传输的数据帧序列中有更多帧,则可以选择510下一帧,并且将其作为另一分组中的主帧连同相对于新主帧的一个或多个对应的在前帧一起进行传输520。当过程500启动时,在要进行重传的帧序列中没有对应的较早帧的情况下,可以从分组中省略在前帧中的一个或多个在前帧。在与步幅参数相对应的多个分组已经被传输之后,先前已经在较早分组(例如,第一分组)中作为主帧被传输的帧可以作为后续分组(例如,第二分组)中的在前帧被重传。例如,过程500可以包括:使用网络接口传输520第二分组,第二分组包括来自数据帧序列的主帧和一个或多个在前帧,其中,第二分组的一个或多个在前帧在帧序列中与第二分组的主帧相离步幅参数的相应倍数,并且其中,第一分组的主帧是第二分组的一个或多个在前帧中的一个在前帧。在一些实现方式中,过程500包括:使用网络接口传输520作为相应分组的主帧的数据帧序列中的第一分组的主帧和第二分组的主帧之间的所有帧,相应分组各自包括来自数据帧序列的、在序列帧中相离步幅参数的倍数的一个或多个在前帧。分组可以经由网络被传输520到一个或多个客户端设备。例如,第一分组和第二分组可以是广播分组。例如,第一分组和第二分组可以是多播分组。在一些实现方式中,数据帧序列中的帧都具有相同的大小。
当(在操作525处)帧序列的所有帧均已经作为相应分组的主帧被传输520时,可以传输530一个或多个分组,该一个或多个分组包括与经过序列的最后一帧的下一序列索引相对应的伪主帧(或省略主帧)以及按步幅的对应的在前帧,直到(在操作535处)所有帧已经作为与冗余参数相对应的在前帧被传输了多次。当(在操作535处)序列的所有帧均已经作为在前帧被传输冗余参数次数时,数据帧序列的传输结束540。
图6是示出用于使用用于数据的稳健传输的分组有效载荷映射来接收被划分成数据帧序列的数据的过程600的示例的流程图。过程600包括:接收610指示步幅参数和冗余参数的分组映射数据结构;根据步幅参数接收620各自分别包括来自数据帧序列的主帧和一个或多个在前帧的分组;将分组的帧存储630在具有各自保存分组的主帧和一个或多个在前帧的条目的缓冲器中;以及从缓冲器中读取640帧,以在缓冲器的输出处获得帧的单个副本。例如,图6的过程600可以由图1的客户端设备110实现。例如,图6的过程600可以由图4的计算设备400实现。
过程600包括:使用网络接口接收610分组映射数据结构,该分组映射数据结构指示步幅参数并且指示在分组中的每个分组中要传输的冗余在前帧的计数。步幅参数可以指定在帧序列中、在多个分组中的分组中包括的主分组和一个或多个在前分组之间的间隔在一些实现方式中,步幅参数大于四。冗余在前帧的计数可以被称为分组有效载荷映射方案的冗余参数。例如,分组映射数据结构可以包括作为对应在前帧的帧索引偏移的整数列表,针对在前帧有一个整数(例如,对于具有步幅5和冗余3的方案该整数列表为{-5,-10,-15},或对于具有步幅16和冗余4的方案该整数列表为{-16,-32,-48,-64})。在一些实现方式中,分组数据结构包括分别表示步幅参数和冗余参数的两个正整数。例如,可以使用网络接口(例如,网络接口120)来接收610分组映射数据结构。在一些实现方式中,在数据帧开始被接收620之前,分组映射数据结构在单独的分组中被接收610一次。在一些实现方式中,分组映射数据结构作为用于传输帧序列的分组集合中的每个分组的头部的一部分被接收610。例如,数据帧序列可以是音频数据(例如,编码音乐或语音信号)的帧序列。例如,数据帧序列可以是视频数据的帧序列。
过程600包括:接收620各自分别包括来自数据帧序列的主帧和一个或多个在前帧的分组。相应分组的一个或多个在前帧在帧序列中与相应分组的主帧相离步幅参数的相应倍数(例如,如针对步幅参数为5的分组编码方案200所示)。例如,可以使用网络接口(例如,网络接口120)来接收620分组。在一些实现方式中,每个相应分组的一个或多个在前帧包括数量等于冗余参数的在前帧,并且冗余参数大于一。可以经由网络从一个或多个服务器设备(例如,服务器设备102)接收620分组。
过程600包括:将分组的帧存储630在具有各自保存分组的主帧和一个或多个在前帧的条目的缓冲器(例如,环形缓冲器302)中。在一些实现方式中,每个相应分组的一个或多个在前帧包括数量等于冗余参数的在前帧,并且其中,缓冲器的大小被设计成用于存储来自数量等于步幅参数乘以冗余参数加一的分组的帧。在一些实现方式中,在来自分组的有效载荷的帧被存储630在缓冲器中之前,被接收620的分组可以被传递通过抖动缓冲器。例如,过程600可以包括:在分组被接收620时将其存储在抖动缓冲器中;以及在将分组的帧存储630在缓冲器之前从抖动缓冲器读取分组。在一些实现方式中,数据帧序列中的帧都具有相同的大小。
过程600包括:从缓冲器(例如,环形缓冲器302)中读取640帧。例如,图7的过程700可以被实现,以从缓冲器中读取640帧。在一些实现方式中,来自序列的数据帧包括音频数据,并且过程600包括响应于从缓冲器中读取帧而播放该帧的音频数据。在一些实现方式中,从缓冲器中读取640的数据帧在重组缓冲器(例如,图8的重组缓冲器820)中的数据帧序列中被重组。例如,图9的过程900可以被实现,以重组数据帧序列,从而促进播放音频数据。
图7是示出用于从具有各自保存分组的主帧和一个或多个在前帧的条目的缓冲器中读取数据帧的过程700的示例。过程700包括:基于缓冲器来确定710具有作为数据帧序列中的下一帧的主帧的分组是否已经丢失;当(在操作715处)分组没有丢失时,按照来自缓冲器的条目中的一个条目的主帧从缓冲器中读取720帧;当(在操作715处)分组已经丢失时,按照缓冲器中较新条目的在前帧在缓冲器中寻找740该下一帧的冗余副本,并且按照条目的在前帧从缓冲器中读取750该下一帧;以及当(在操作755处)在数据帧序列中不再有要读取的帧时,结束760数据接收。例如,图7的过程700可以由图1的客户端设备110实现。例如,图7的过程700可以由图4的计算设备400实现。
过程700包括:基于缓冲器(例如,环形缓冲器302)来确定710具有作为数据帧序列中的下一帧的主帧的分组已经丢失。例如,可以检查缓冲器中的最旧条目,以确定710与最旧条目对应的分组是否丢失。在一些实现方式中,条目包括指向来自接收到的分组的有效数据的指针,或者如果对应的分组丢失则包括空指针。在一些实现方式中,缓冲器包括条目当前是否正在存储有效数据帧的指示(例如,标志),该指示可以在来自接收到的分组的数据被存储在条目中时被设置,并且在条目被删除730时(例如,在读取主帧之后)被重置。在一些实现方式中,确定710分组已经丢失包括对存储在与感兴趣的分组相对应的条目中的数据执行数据完整性检查(例如,循环冗余检查(CRC))。
过程700包括:当(在操作715处)分组没有丢失时,按照来自缓冲器的条目中的一个条目的主帧从缓冲器中读取720帧(例如,第一帧)。过程700包括:响应于从缓冲器中读取720缓冲器的条目(例如,第一条目)的主帧,从缓冲器中删除730该条目。例如,可以通过释放该条目的存储器以供重用(例如,以存储新接收到的分组的帧)来删除730该条目。
过程700包括:当(在操作715处)分组已经丢失时,按照缓冲器中较新条目的在前帧在缓冲器中寻找740下一帧的冗余副本。例如,在缓冲器中可以存储有多达冗余参数个的帧的副本作为后续分组的在前帧(例如,如环形缓冲器302的内环所示以及如关于图3A至图3B所讨论的)。可以检查与在分组有效载荷映射方案下承载该帧作为在前帧的分组相对应的这些条目中的一个或多个条目,以寻找740该帧的有效副本。过程700包括:响应于确定分组丢失,按照来自缓冲器的条目中的一个条目的在前帧从缓冲器中读取750下一帧。尽管在图7没有明确示出,但是过程700可以通过返回错误消息和/或基于数据帧序列中的较早和/或较晚的数据对丢失数据进行插值来处理没有成功接收到帧的副本并且在缓冲器中没有找到740副本的情况。
当(在操作755处)在数据帧序列中不再有要读取的帧时,可以结束760数据接收。
图8是被配置成用于使用用于数据的稳健传输的分组有效载荷映射来接收被划分成数据帧序列的数据的计算设备中的数据流800的示例的框图。分组源802输出各自分别包括来自数据帧序列的主帧和一个或多个在前帧的分组。相应分组的一个或多个在前帧在帧序列中与相应分组的主帧相离步幅参数的相应倍数(例如,如针对步幅参数为5的分组编码方案200所示)。例如,分组源可以是经由网络(例如,网络106)从服务器设备(例如,服务器设备102)接收分组的网络通信单元(例如,网络通信单元418)。在一些实现方式中,分组源802包括被配置成用于按传输顺序输出分组的抖动缓冲器。
数据流800包括具有各自保存分组的主帧和一个或多个在前帧的条目的缓冲器(例如,环形缓冲器302)。在前帧可以是在较早分组中作为主帧被发送的帧的冗余副本。因此,缓冲器810可以存储数据帧序列中的帧的多个副本(例如,如关于图3A至图3B所讨论的)。这种冗余可以使数据流800对分组源802中的大量突发的分组丢失具有稳健性。
数据流800包括具有各自保存数据帧序列的帧的条目的重组缓冲器820。可以从缓冲器810读取帧的单个副本并将其写入重组缓冲器820,以去除用于在噪声网络上传输的冗余和/或对帧进行适当排序,从而将帧重组成可用形式的源数据(例如,对被划分成帧的文件进行重组或对音频或视频数据的较大超帧进行排队以在用户接口中播放)。例如,重组缓冲器820可以具有与数量等于步幅参数的帧相对应的大小。在一些使用多步幅分组-帧映射的实现方式中,重组缓冲器820的大小可以被设计成用于存储数量等于由接收到的分组使用的分组-帧映射的最大步幅参数的帧。例如,重组缓冲器820可以是先进先出(FIFIO)缓冲器。例如,重组缓冲器820可以实现为循环缓冲器。
数据流800包括数据阱(sink)822,数据阱822消耗来自重组缓冲器820的成帧数据。例如,数据接收器822可以包括用于播放帧中的音频数据的音频驱动器(例如,包括扬声器)。例如,数据接收器822可以是非易失性存储器中与成帧数据一起被写入的文件。
图9是示出用于在去除分组有效载荷冗余之后将成帧数据传递通过重组缓冲器的过程900的示例的流程图。过程900包括:播放910存储在来自重组缓冲器的最旧帧中的音频数据;从重组缓冲器中删除920最旧帧;以及将从缓冲器中读取的帧写入930重组缓冲器。例如,图9的过程900可以由图1的客户端设备110实现。例如,图9的过程900可以由图4的计算设备400实现。
过程900包括:播放910存储在来自重组缓冲器(例如,重组缓冲器820)的最旧帧中的音频数据。例如,可以使用用户接口420的音频驱动器(例如,扬声器)来播放910音频数据。过程900包括从重组缓冲器中删除920最旧帧。例如,可以通过释放条目的存储器以供重用(例如,通过更新重组缓冲器的指针或计数器)来删除920条目。
过程900包括将从缓冲器(例如,缓冲器810)中读取的帧(例如,包括第一帧和下一帧)写入重组缓冲器(例如,重组缓冲器)。重组缓冲器可以包括各自由数据帧序列中的帧组成的条目。在一些实现方式中,重组缓冲器的大小被设计成用于存储数量等于步幅参数的帧。
图10是示出用于使用用于数据的稳健传输的具有多个步幅的分组有效载荷映射来传输被划分成数据帧序列的数据的过程1000的示例的流程图。过程1000包括:传输1002分组数据映射结构,该分组映射数据结构指示多个步幅参数和对应的冗余参数(例如,步幅和对应的段);对于数据帧序列,从序列中选择1010下一帧作为用于传输的主帧,并且传输1020按帧序列中与多个步幅参数相对应的间隔包括主帧和两个或更多个在前帧的分组;当(在操作1025处)最后一帧已经作为主帧被传输1020时,传输1030包括与经过序列的最后一帧的下一序列索引相对应的伪主帧以及与该伪主帧相距步幅间隔的一个或多个在前帧的分组,直到(在操作1035处)帧序列的最后一帧已经被传输了等于一加针对多个步幅参数的冗余参数的总和的次数;以及结束1040数据传输。例如,图10的过程1000可以由图1的服务器设备102实现。例如,图10的过程1000可以由图4的计算设备400实现。
过程1000包括:传输1110分组映射数据结构,该分组映射数据结构指示多个步幅参数(包括第一步幅参数和第二步幅参数),并且指示针对每个步幅参数要在包括来自数据帧序列的帧的分组集合的每个分组中被传输的冗余在前帧的计数。每个步幅参数可以指定在帧序列中、在多个分组中的分组中包括的主分组和一个或多个在前分组之间的间隔。在一些实现方式中,第一步幅参数小于三,并且第二步幅参数大于四。冗余在前帧的计数可以被称为分组有效载荷映射方案的针对相应步幅参数的冗余参数。例如,分组映射数据结构可以包括整数的列表,这些整数是与在前帧相对应的帧索引偏移,其中针对每个在前帧有一个整数(例如,{-1,-2,-5,-10,-15}针对具有第一步幅1和对应冗余2以及第二步幅5和对应冗余3的方案,或者{-2,-4,-6,-16,-32,-48,-64}针对具有第一步幅2和对应冗余3以及第二步幅16和对应冗余4的方案)。在一些实现方式中,分组数据结构针对每个步幅参数包括两个正整数,分别表示步幅参数及其对应的冗余参数。可以使用网络接口(例如,网络接口104)来传输1002分组映射数据结构。在一些实现方式中,在数据帧开始被传输1020之前,分组映射数据结构在单独的分组中被传输1002一次。在一些实现方式中,分组映射数据结构作为用于传输帧序列的分组集合中的每个分组的头部的一部分被传输1002。例如,数据帧序列可以是音频数据(例如,编码音乐或语音信号)的帧序列。例如,数据帧序列可以是视频数据的帧序列。
过程1000包括选择1010下一帧作为用于在下一分组中传输的主帧。例如,下一帧指针或计数器可以被初始化为指向数据帧序列的开始处的帧,并且帧指针或计数器可以被递增或以其他方式被更新,以选择1010下一帧来作为主帧进行传输。在一些实现方式中,承载数据帧的分组的传输顺序可以被随机化,以减轻大突发分组丢失事件对分组映射方案的影响。例如,过程1000可以包括:在传输第一分组和第二分组之前,随机确定第一分组和第二分组的传输顺序。可以缓冲要传输的分组的数据帧以实现乱序帧传输。可以使用用于发送侧缓冲器的各种大小,这取决于所期望的突发丢失容限的水平和应用中的端到端等待时间的容限。例如,发送方侧缓冲器的大小可以被设计成用于存储与由用于对应接收器设备中的分组映射方案的环形缓冲器存储的多个分组相匹配的多个分组的数据。在一些实现方式中,随机确定传输顺序包括:随机生成具有存储与相应的分组(包括第一分组和第二分组)相关联的数据的条目的缓冲器的索引,以选择用于传输的下一分组。在随机传输顺序被确定之前或者在随机传输顺序被确定之后,可以通过由分组映射数据结构编码的分组映射方案基于与其主帧相关的数据帧来生成分组。例如,选择1010下一帧作为用于在下一分组中传输的主帧可以包括:实现图12A的过程1200,以对传输顺序进行随机化。例如,选择1010下一帧作为用于在下一分组中传输的主帧可以包括:实现图12B的过程1250,以对传输顺序进行随机化。
过程1000包括:传输1020包括来自数据帧序列的主帧(例如,当前被选择1010的帧)和两个或更多个在前帧的分组(例如,第一分组)。可以基于由分组映射数据结构指定的多步幅分组-帧映射来从数据帧序列中选择用于包括在分组中的两个或更多个在前帧。在一些实现方式中,分组的两个或更多个在前帧中的至少一个在前帧在帧序列中与分组的主帧相离第一步幅参数的相应倍数,并且分组的两个或更多个在前帧中的至少一个在前帧在帧序列中与分组的主帧相离第二步幅参数的相应倍数,第二步幅参数与第一步幅参数不同。例如,可以使用网络接口(例如,网络接口104)来传输1020分组。在一些实现方式中,每个分组中可以使用多于两个步幅。例如,分组的两个或更多个在前帧中的至少一个在前帧可以在帧序列中与分组的主帧相离第三步幅参数的相应倍数,第三步幅参数与第一步幅参数和第二步幅参数不同。分组可以包括其他数据,诸如头部数据(例如,Ipv6头部和UDP头部),以促进分组跨网络(例如,网络106)的传输。
如果(在操作1025处)在要传输的数据帧序列中有更多帧,则可以选择1010下一帧,并且将其作为另一分组中的主帧连同相对于新主帧的一个或多个对应的在前帧一起进行传输1020。当过程1000启动时,在要进行重传的帧序列中没有对应的较早帧的情况下,可以从分组中省略在前帧中的一个或多个在前帧。在与步幅参数相对应的多个分组已经被传输之后,先前已经在较早分组(例如,第一分组)中作为主帧被传输的帧可以作为后续分组(例如,第二分组)中的在前帧被重传。例如,过程1000可以包括:使用网络接口传输1020第二分组,第二分组包括来自数据帧序列的主帧和两个或更多个在前帧,其中,第二分组的两个或更多个在前帧中的至少一个在前帧在帧序列中与第二分组的主帧相离第一步幅参数的相应倍数,并且第二分组的两个或更多个在前帧中的至少一个在前帧在帧序列中与第二分组的主帧相离第二步幅参数的相应倍数,并且其中,第一分组的主帧是第二分组的两个或更多个在前帧中的一个在前帧。在一些实现方式中,过程1000包括:使用网络接口传输1020作为相应分组的主帧的、数据帧序列中的第一分组的主帧和第二分组的主帧之间的所有帧,该相应分组各自包括来自数据帧序列的、在序列帧中相离第一步幅参数的倍数和第二步幅参数的倍数的两个或更多个在前帧。分组可以经由网络被传输1020到一个或多个客户端设备。例如,第一分组和第二分组可以是广播分组。例如,第一分组和第二分组可以是多播分组。在一些实现方式中,数据帧序列中的帧都具有相同的大小。
当(在操作1025处)帧序列的所有帧已经作为相应分组的主帧被传输1020时,可以传输1030一个或多个分组,该一个或多个分组包括与经过序列的最后一帧的下一序列索引相对应的伪主帧(或省略主帧)以及按步幅的对应的在前帧,直到(在操作1035处)所有帧已经作为与分组映射数据结构的冗余参数(例如,针对相应步幅的段)的总和相对应的在前帧被传输了多次。当(在操作1035处)序列的所有帧已经在分组-帧映射的每个冗余时隙中被传输时,数据帧序列的传输结束1040。
图11是示出用于使用用于数据的稳健传输的具有多个步幅的分组有效载荷映射来接收被划分成数据帧序列的数据的过程1100的示例的流程图。过程1100包括:接收1110指示多个步幅参数和对应的冗余参数(例如,步幅和对应的段)的分组映射数据结构;接收1120各自分别按帧序列中与多个步幅参数相对应的间隔包括来自数据帧序列的主帧和两个或更多个在前帧的分组;将分组的帧存储1130在具有各自保存分组的主帧和两个或更多个在前帧的条目的缓冲器中;以及从缓冲器中读取1140帧,以在缓冲器的输出处获得帧的单个副本。例如,图11的过程1100可以由图1的客户端设备110实现。例如,图11的过程1100可以由图4的计算设备400实现。
过程1100包括:接收1110分组映射数据结构,该分组映射数据结构指示多个步幅参数(包括第一步幅参数和第二步幅参数),并且指示针对每个步幅参数要在包括来自数据帧序列的帧的分组集合的每个分组中被传输的冗余在前帧的计数。每个步幅参数可以指定在帧序列中、在多个分组中的分组中包括的主分组和一个或多个在前分组之间的间隔。在一些实现方式中,第一步幅参数小于三,并且第二步幅参数大于四。冗余在前帧的计数可以被称为分组有效载荷映射方案的针对相应步幅参数的冗余参数(例如,段)。例如,分组映射数据结构可以包括整数的列表,这些整数是与在前帧相对应的帧索引偏移,其中针对每个在前帧有一个整数(例如,{-1,-2,-5,-10,-15}针对具有第一步幅1和对应冗余2以及第二步幅5和对应冗余3的方案,或者{-2,-4,-6,-16,-32,-48,-64}针对具有第一步幅2和对应冗余3以及第二步幅16和对应冗余4的方案)。在一些实现方式中,分组数据结构针对每个步幅参数包括两个正整数,分别表示步幅参数及其对应的冗余参数。例如,可以使用网络接口(例如,网络接口120)来接收1110分组映射数据结构。在一些实现方式中,在数据帧开始被接收1120之前,分组映射数据结构在单独的分组中被接收1110一次。在一些实现方式中,分组映射数据结构作为用于传输帧序列的分组集合中的每个分组的头部的一部分被接收1110。例如,数据帧序列可以是音频数据(例如,编码音乐或语音信号)的帧序列。例如,数据帧序列可以是视频数据的帧序列。
过程1100包括:接收1120各自分别包括来自数据帧序列的主帧和两个或更多个在前帧的分组。可以基于由分组映射数据结构指定的多步幅分组-帧映射来从数据帧序列中选择用于包括在分组中的两个或更多个在前帧。在一些实现方式中,相应分组的两个或更多个在前帧中的至少一个在前帧在帧序列中与相应分组的主帧相离第一步幅参数的相应倍数,并且相应分组的两个或更多个在前帧中的至少一个在前帧在帧序列中与相应分组的主帧相离第二步幅参数的相应倍数,第二步幅参数与第一步幅参数不同。例如,可以使用网络接口(例如,网络接口120)来接收1120分组。在一些实现方式中,每个相应分组的两个或更多个在前帧包括数量等于针对相应步幅参数的冗余参数的总和的在前帧,并且针对第二步幅参数的冗余参数大于一。可以经由网络从一个或多个服务器设备(例如,服务器设备102)接收1120分组。
过程1100包括:将分组的帧存储1130在具有各自保存分组的主帧和两个或更多个在前帧的条目的缓冲器(例如,环形缓冲器302)中。在一些实现方式中,每个相应分组的两个或更多个在前帧包括数量等于针对相应步幅参数(包括第一步幅参数和第二步幅参数)的冗余参数的总和的在前帧。例如,缓冲器的大小可以被设计成用于存储来自数量等于最大步幅参数乘以针对该最大步幅参数的相应冗余参数加一的分组的帧。在一些实现方式中,在来自分组的有效载荷的帧被存储1130在缓冲器中之前,被接收1120的分组可以被传递通过抖动缓冲器。例如,过程1100可以包括:在分组被接收1120时将其存储在抖动缓冲器中;以及在将分组的帧存储1130在缓冲器之前从抖动缓冲器读取分组。在一些实现方式中,数据帧序列中的帧都具有相同的大小。
过程1100包括:从缓冲器(例如,环形缓冲器302)读取1140帧。例如,图7的过程700可以被实现,以从缓冲器读取1140帧。在一些实现方式中,来自序列的数据帧包括音频数据,并且过程1100包括响应于从缓冲器读取帧而播放该帧的音频数据。在一些实现方式中,从缓冲器读取1140的数据帧在重组缓冲器(例如,图8的重组缓冲器820)中的数据帧序列中被重组。例如,图9的过程900可以被实现,以重组数据帧序列,从而促进播放音频数据。
图12A是示出用于对承载被划分成数据帧序列的数据的分组的传输顺序进行随机化的过程1200的示例的流程图。过程1200包括:将包括第一分组和第二分组的分组存储1210在缓冲器中,以等待按随机确定的顺序进行传输。包括冗余数据帧的分组有效载荷可以与或不与各种级别的通信协议头部一起被存储。可以使用用于发送侧缓冲器的各种大小,这取决于所期望的突发丢失容限的水平和应用中的端到端等待时间的容限。例如,发送方侧缓冲器的大小可以被设计成用于存储与由用于对应接收器设备中的分组映射方案的环形缓冲器存储的多个分组相匹配的多个分组的数据。
过程1200包括:随机确定1220第一分组和第二分组的传输顺序。在一些实现方式中,随机确定1220传输顺序包括:随机生成具有存储与相应的分组(包括第一分组和第二分组)相关联的数据的条目的缓冲器的索引,以选择用于传输的下一分组。例如,可以使用操作系统的随机数生成器(RNG)(例如,Linux核RNG)来确定缓冲器的索引。例如,图12A的过程1200可以由图1的服务器设备102实现。例如,图12A的过程1200可以由图4的计算设备400实现。
图12B是示出用于对承载被划分成数据帧序列的数据的分组的传输顺序进行随机化的过程1250的示例的流程图。在该示例中,在主帧已经被标识为按经随机化的传输顺序的下一帧之后,生成1280分组。在分组映射方案下,过程1250可以通过避免缓冲组装分组中存在的数据帧的冗余副本来节省存储器。过程1250包括:将包括第一分组的主帧和第二分组的主帧的帧存储1260在缓冲器中,以等待按随机确定的顺序进行传输。可以使用用于发送侧缓冲器的各种大小,这取决于所期望的突发丢失容限的水平和应用中的端到端等待时间的容限。例如,发送方侧缓冲器的大小可以被设计成用于存储与由用于对应接收器设备中的分组映射方案的环形缓冲器存储的多个分组相匹配的多个分组的数据。
过程1250包括:随机确定1270第一分组和第二分组的传输顺序。在一些实现方式中,随机确定1270传输顺序包括随机生成具有存储与相应的分组(包括第一分组和第二分组)相关联的数据的条目的缓冲器的索引,以选择用于传输的下一分组。例如,可以使用操作系统的随机数生成器(RNG)(例如,Linux核RNG)来确定缓冲器的索引。
过程1250包括:响应于第一分组的主帧成为按随机确定的顺序用于作为主帧进行传输的下一帧,生成第一分组。可以通过由分组映射数据结构编码的分组映射方案基于与其主帧相关的数据帧来生成第一分组。例如,图12B的过程1250可以由图1的服务器设备102实现。例如,图12B的过程1250可以由图4的计算设备400实现。
图13示出了四个条形图,它们示出了对传输顺序进行发送方侧加扰和不进行发送方侧加扰的情况下的突发分组丢失。在这些条形图(1310、1320、1330和1340)中,线的高度表示实况数据帧序列号。条形图1310示出了使用固定分组传输顺序在没有发送方侧加扰的情况下的数据传输。条形图1320示出了经受突发丢失模式的相同分组的接收。
条形图1330示出了在具有发送方侧加扰的情况下的数据传输,该发送方侧加扰随机确定分组的传输顺序。条形图1340示出了经受与条形图1320中所示的相同的突发丢失模式的、按经随机化的顺序传输的相同分组的接收。注意,相同的突发丢失模式现在跨更大的传输分布。
图14示出了两个条形图,它们示出了在对传输顺序进行发送方侧加扰和不进行发送方侧加扰的情况下的突发分组丢失。图14呈现了在较大传输窗口上分摊的突发丢失的另一视图。在这些条形图(1410和1420)中,x轴对应于主帧的帧号,并且y轴是二进制的。存在/非零高度的条对应于已成功接收的分组。不存在/零高度的条对应于已丢失接收的分组。条形图1410示出了在不进行加扰的情况下传输的分组序列的接收。条形图1420示出了在进行加扰的情况下传输的分组序列的接收。在具有随机确定的传输顺序的情况下,加扰可以提供优势,诸如,通过在较长的时间段内分摊丢失,实际的连续丢失量变得更小,这既有助于分组映射恢复,又可以实现针对丢失帧数据的更好的数据插值。
虽然已经结合某些实施例描述了本公开,但是应当理解,本公开不限于所公开的实施例,而是相反,旨在覆盖包括在所附权利要求的范围内的各种修改和等效布置,该范围应被赋予最宽泛的解释,以涵盖法律允许的所有此类修改和等效结构。
Claims (20)
1.一种用于传输被划分成数据帧序列的数据的系统,所述系统包括:
网络接口;
存储器;以及
处理器,其中,所述存储器包括能由所述处理器执行以使所述系统用于以下操作的指令:
使用所述网络接口传输第一分组,所述第一分组包括来自所述数据帧序列的主帧和两个或更多个在前帧,其中,所述第一分组的两个或更多个在前帧中的至少一个在前帧在所述帧序列中与所述第一分组的主帧相离第一步幅参数的相应倍数,并且所述第一分组的两个或更多个在前帧中的至少一个在前帧在所述帧序列中与所述第一分组的主帧相离第二步幅参数的相应倍数,所述第二步幅参数与所述第一步幅参数不同;
使用所述网络接口传输第二分组,所述第二分组包括来自所述数据帧序列的主帧和两个或更多个在前帧,其中,所述第二分组的两个或更多个在前帧中的至少一个在前帧在所述帧序列中与所述第二分组的主帧相离所述第一步幅参数的相应倍数,并且所述第二分组的两个或更多个在前帧中的至少一个在前帧在所述帧序列中与所述第二分组的主帧相离所述第二步幅参数的相应倍数,并且其中,所述第一分组的主帧是所述第二分组的两个或更多个在前帧中的一个在前帧;以及
在传输所述第一分组和所述第二分组之前,随机确定所述第一分组和所述第二分组的传输顺序。
2.如权利要求1所述的系统,其特征在于,所述存储器包括能由所述处理器执行以使所述系统用于以下操作的指令:
将包括所述第一分组和所述第二分组的分组存储在缓冲器中,以等待按所随机确定的顺序进行传输。
3.如权利要求1所述的系统,其特征在于,所述存储器包括能由所述处理器执行以使所述系统用于以下操作的指令:
将包括所述第一分组的主帧和所述第二分组的主帧的帧存储在缓冲器中,以等待按所随机确定的顺序进行传输;以及
响应于所述第一分组的主帧成为按所随机确定的顺序用于作为主帧进行传输的下一帧,生成所述第一分组。
4.如权利要求1所述的系统,其特征在于,所述第一步幅参数小于三,并且所述第二步幅参数大于四。
5.如权利要求1所述的系统,其特征在于,所述第一分组的两个或更多个在前帧中的至少一个在前帧在所述帧序列中与所述第一分组的主帧相离第三步幅参数的相应倍数,所述第三步幅参数与所述第一步幅参数和所述第二步幅参数不同。
6.如权利要求1所述的系统,其特征在于,所述存储器包括能由所述处理器执行以使所述系统用于以下操作的指令:
使用所述网络接口传输作为相应分组的主帧的、所述数据帧序列中的所述第一分组的主帧和所述第二分组的主帧之间的所有帧,所述相应分组各自包括来自所述数据帧序列的、在所述序列帧中相离所述第一步幅参数的倍数和所述第二步幅参数的倍数的两个或更多个在前帧。
7.如权利要求1所述的系统,其特征在于,所述存储器包括能由所述处理器执行以使所述系统用于以下操作的指令:
使用所述网络接口传输分组映射数据结构,所述分组映射数据结构指示所述第一步幅参数和所述第二步幅参数,并且指示针对每个步幅参数要在包括所述第一分组和所述第二分组的分组集合中的每个分组中被传输的冗余在前帧的计数。
8.一种用于传输被划分成数据帧序列的数据的方法,所述方法包括:
使用网络接口传输第一分组,所述第一分组包括来自所述数据帧序列的主帧和两个或更多个在前帧,其中,所述第一分组的两个或更多个在前帧中的至少一个在前帧在所述帧序列中与所述第一分组的主帧相离第一步幅参数的相应倍数,并且所述第一分组的两个或更多个在前帧中的至少一个在前帧在所述帧序列中与所述第一分组的主帧相离第二步幅参数的相应倍数,所述第二步幅参数与所述第一步幅参数不同;
使用所述网络接口传输第二分组,所述第二分组包括来自所述数据帧序列的主帧和两个或更多个在前帧,其中,所述第二分组的两个或更多个在前帧中的至少一个在前帧在所述帧序列中与所述第二分组的主帧相离所述第一步幅参数的相应倍数,并且所述第二分组的两个或更多个在前帧中的至少一个在前帧在所述帧序列中与所述第二分组的主帧相离所述第二步幅参数的相应倍数,并且其中,所述第一分组的主帧是所述第二分组的两个或更多个在前帧中的一个在前帧;以及
在传输所述第一分组和所述第二分组之前,随机确定所述第一分组和所述第二分组的传输顺序。
9.如权利要求8所述的方法,其特征在于,随机确定所述传输顺序包括:
随机生成具有存储与包括所述第一分组和所述第二分组的相应分组相关联的数据的条目的缓冲器的索引,以选择用于传输的下一分组。
10.如权利要求8所述的方法,所述方法包括:
将包括所述第一分组和所述第二分组的分组存储在缓冲器中,以等待按所随机确定的顺序进行传输。
11.如权利要求8所述的方法,所述方法包括:
将包括所述第一分组的主帧和所述第二分组的主帧的帧存储在缓冲器中,以等待按所随机确定的顺序进行传输;以及
响应于所述第一分组的主帧成为按所随机确定的顺序用于作为主帧进行传输的下一帧,生成所述第一分组。
12.如权利要求8所述的方法,其特征在于,所述第一步幅参数小于三,并且所述第二步幅参数大于四。
13.如权利要求8所述的方法,所述方法包括:
使用所述网络接口传输作为相应分组的主帧的、所述数据帧序列中的所述第一分组的主帧和所述第二分组的主帧之间的所有帧,所述相应分组各自包括来自所述数据帧序列的、在所述序列帧中相离所述第一步幅参数的倍数和所述第二步幅参数的倍数的两个或更多个在前帧。
14.如权利要求8所述的方法,所述方法包括:
使用所述网络接口传输分组映射数据结构,所述分组映射数据结构指示所述第一步幅参数和所述第二步幅参数,并且指示针对每个步幅参数要在包括所述第一分组和所述第二分组的分组集合中的每个分组中被传输的冗余在前帧的计数。
15.一种用于传输被划分成数据帧序列的数据的系统,所述系统包括:
网络接口;
存储器;以及
处理器,其中,所述存储器包括能由所述处理器执行以使所述系统用于以下操作的指令:
使用所述网络接口传输第一分组,所述第一分组包括来自所述数据帧序列的主帧和一个或多个在前帧,其中,所述第一分组的一个或多个在前帧在所述帧序列中与所述第一分组的主帧相离步幅参数的相应倍数;
使用所述网络接口传输第二分组,所述第二分组包括来自所述数据帧序列的主帧和一个或多个在前帧,其中,所述第二分组的一个或多个在前帧在所述帧序列中与所述第二分组的主帧相离所述步幅参数的相应倍数,并且其中,所述第一分组的主帧是所述第二分组的一个或多个在前帧中的一个在前帧;以及
在传输所述第一分组和所述第二分组之前,随机确定所述第一分组和所述第二分组的传输顺序。
16.如权利要求15所述的系统,其特征在于,所述存储器包括能由所述处理器执行以使所述系统用于以下操作的指令:
将包括所述第一分组和所述第二分组的分组存储在缓冲器中,以等待按所随机确定的顺序进行传输。
17.如权利要求15所述的系统,其特征在于,所述存储器包括能由所述处理器执行以使所述系统用于以下操作的指令:
将包括所述第一分组的主帧和所述第二分组的主帧的帧存储在缓冲器中,以等待按所随机确定的顺序进行传输;以及
响应于所述第一分组的主帧成为按所随机确定的顺序用于作为主帧进行传输的下一帧,生成所述第一分组。
18.如权利要求15所述的系统,其特征在于,所述步幅参数大于四。
19.如权利要求15所述的系统,其特征在于,所述存储器包括能由所述处理器执行以使所述系统用于以下操作的指令:
使用所述网络接口传输作为相应分组的主帧的、所述数据帧序列中的所述第一分组的主帧和所述第二分组的主帧之间的所有帧,所述相应分组各自包括来自所述数据帧序列的、在所述序列帧中相离所述步幅参数的倍数的一个或多个在前帧。
20.如权利要求15所述的系统,其特征在于,所述存储器包括能由所述处理器执行以使所述系统用于以下操作的指令:
使用所述网络接口传输分组映射数据结构,所述分组映射数据结构指示所述步幅参数,并且指示要在包括所述第一分组和所述第二分组的分组集合中的每个分组中被传输的冗余在前帧的计数。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163175352P | 2021-04-15 | 2021-04-15 | |
US63/175,352 | 2021-04-15 | ||
PCT/US2022/014322 WO2022220907A1 (en) | 2021-04-15 | 2022-01-28 | Scrambled packet payload mapping for robust transmission of data |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117136514A true CN117136514A (zh) | 2023-11-28 |
Family
ID=80785290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280028563.4A Pending CN117136514A (zh) | 2021-04-15 | 2022-01-28 | 用于数据的稳健传输的加扰分组有效载荷映射 |
Country Status (5)
Country | Link |
---|---|
US (3) | US11496612B1 (zh) |
EP (1) | EP4324130A1 (zh) |
KR (1) | KR102499294B1 (zh) |
CN (1) | CN117136514A (zh) |
WO (1) | WO2022220907A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6442152B1 (en) * | 1998-07-13 | 2002-08-27 | Samsung Electronics, Co., Ltd. | Device and method for communicating packet data in mobile communication system |
GB2374771B (en) * | 2000-12-29 | 2004-07-07 | Vtech Communications Ltd | Frame structure with diversity |
EP2330777B1 (en) * | 2004-08-12 | 2018-03-21 | InterDigital Technology Corporation | Method and system for controlling access to a wireless communication medium |
KR101221913B1 (ko) * | 2006-12-20 | 2013-01-15 | 엘지전자 주식회사 | 디지털 방송 시스템 및 데이터 처리 방법 |
WO2021061935A1 (en) * | 2019-09-25 | 2021-04-01 | MIXHalo Corp. | Multi-stride packet payload mapping for robust transmission of data |
-
2022
- 2022-01-28 CN CN202280028563.4A patent/CN117136514A/zh active Pending
- 2022-01-28 US US17/587,655 patent/US11496612B1/en active Active
- 2022-01-28 KR KR1020227037507A patent/KR102499294B1/ko active IP Right Grant
- 2022-01-28 EP EP22711112.7A patent/EP4324130A1/en active Pending
- 2022-01-28 WO PCT/US2022/014322 patent/WO2022220907A1/en active Application Filing
- 2022-10-12 US US17/964,109 patent/US11968284B2/en active Active
-
2024
- 2024-03-20 US US18/611,263 patent/US20240236213A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220337681A1 (en) | 2022-10-20 |
EP4324130A1 (en) | 2024-02-21 |
US11496612B1 (en) | 2022-11-08 |
KR102499294B1 (ko) | 2023-02-10 |
WO2022220907A1 (en) | 2022-10-20 |
US11968284B2 (en) | 2024-04-23 |
KR20220151012A (ko) | 2022-11-11 |
US20230104252A1 (en) | 2023-04-06 |
US20240236213A1 (en) | 2024-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9130740B2 (en) | Variable acknowledge rate to reduce bus contention in presence of communication errors | |
US20230412528A1 (en) | Multi-stride packet payload mapping for robust transmission of data | |
US9294227B2 (en) | LT staircase FEC code | |
JP2019106697A (ja) | 相互接続ネットワークでのメッセージ再送遅延を動的に管理するための方法及びデバイス | |
US9401775B2 (en) | Communication method, information processing apparatus, and recording medium | |
US7953120B2 (en) | Efficient synchronization of a sliding buffer window to prevent packet re-injection in an internet protocol (IP) network | |
CN117136514A (zh) | 用于数据的稳健传输的加扰分组有效载荷映射 | |
US8504899B2 (en) | Data transfer method and information processing apparatus | |
CN116318545A (zh) | 视频数据传输方法、装置、设备及存储介质 | |
CN115333677A (zh) | 云业务处理方法、系统、装置、设备及存储介质 | |
Ageneau et al. | Practical random linear coding for MultiPath TCP: MPC-TCP | |
Halvorsen | Improving I/O Performance of multimedia servers | |
KR20160123562A (ko) | 데이터 패킷 처리를 위한 수신기 장치 및 수신기 장치에서의 데이터 패킷 처리 방법 | |
JP2013165410A (ja) | 通信システム、移動無線通信端末、通信プログラム、記憶媒体及び通信方法 | |
JP2010016719A (ja) | 通信制御装置、およびそれを搭載した受信装置 | |
US20240089191A1 (en) | Systems and methods for multi-phase recoding for batched network coding | |
US20030108114A1 (en) | Method for interleaving data in packet-based communications and a system thereof | |
WO2011144179A2 (zh) | 对数据包进行循环冗余校验的方法及装置 | |
BR112017000636B1 (pt) | Método de desvio para dados de correção de erro, dispositivo e memória legível | |
JP2003188858A (ja) | パケットデータ伝送装置、パケットデータ伝送方法、およびそのプログラム | |
KR20160021420A (ko) | 재생 지연 감소를 위한 동영상 스트리밍 방법 및 사용자의 패킷 저장 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |