一种数据包序列接收的方法及设备的制作方法

文档序号:7668646阅读:170来源:国知局
专利名称:一种数据包序列接收的方法及设备的制作方法
技术领域
本发明涉及数据包接收技术,特别涉及一种数据包序列接收的方法及设备。
背景技术
在网络中,发送端将需要发送的数据封装在各种协议的数据包里进行传 输。虽然不同协议的数据包报文头部格式不同,但在数据包报文头部中都包
含有两个常见的信息字段序号(Sequence Number)和时戳(Timestamp )。 接收端接收到发送端发送的数据包后,根据数据包报文头部中包含的序号或 时戳信息作为重排序的依据,恢复发送端发出的原始数据包序列。
以播放音视频为例,服务器每次从节目中获取一帧数据,分成几个实时 传输协议(RTP, Real Time Protocol)数据包,将编码数据封装成RTP数据 包,然后将时戳和序号添加到RTP包头,属于同一帧的数据包具有相同的 时戳。当到达数据包所应播放的时间后,服务器便将这一帧的音视频数据包 发送出去,然后再读取下一帧数据。
音视频RTP数据包经互联网络传输到客户接收端后,先进入一个緩冲 队列等待,这个緩冲队列中的所有数据包按照包头中包含的序号重新排序, 如果有迟到的数据包,则根据迟到的数据包中包含的序号重新将迟到的数据 包插入到正确的位置上,以避免乱序的问题。
客户接收端每次从緩冲队列头部读取一帧的数据,从包头中包含的时戳 信息解出该帧的播放时间,然后进行音视频同步处理。同步后的数据将送入 解码器进行解码,解码后的数据被送入一个循环读取的緩存中等待。 一旦该 帧的播放时间到达,解码数据就被从緩存中取出,送入播放模块驱动底层硬
件设备进行显示或播放。客户接收端还可根据序列号对丟失、损坏和重复的 数据包进行检测。
在现有技术中,例如上述播放音视频中,客户接收端根据数据包包头包 含的序号对发送端发送的原始数据包重新排序,恢复原始数据包序列。在实 际应用中,如果发送的数据包间隔发生变化,也就是数据包包头序号信息所 表示的时间长度发生变化时,基于序号排序不能体现出这种数据包发包的间 隔变化,因此,在现有技术中,对于发包时间间隔变化的数据包,采用其它 控制处理技术,需要额外的处理开销。
此外,发送端发送的数据包时间间隔正常,而序号可能因为某种原因清 零或发生大的跳变的情况下,客户接收端接收数据包,根据包含的序号(序 号清零或发生大的跳变)不能确定发送端的情况,增加了进行统计和处理的 复杂度。
进一 步地,如果客户接收端单纯根据接收的数据包包含的序号来恢复发 送端的原始数据包序列,在某些应用场合下会受限于序号的位宽。举例来说,
如果序号位宽为16bit,则序号的最大值为65535,传输过程中,可能很快就 将出现序号溢出的现象,如果序号位宽更小,序号溢出的频率也就越频繁, 需要系统增加额外的开销来处理序号溢出回转归零问题,降低了系统资源的 利用率。
现有技术中另外一种恢复发送端的原始数据包序列的方法是通过数据 包中包含的时戳信息,客户接收端根据时戳对原始数据包序列重新排序。发 送端在采样数据包分组中的第 一个字节设置时戳,时戳值随着发送分组的时 间推迟而递增,客户接收端接收到数据包后,利用时戳信息重建数据包原始 时间,同步数据包,并以正确的速率播放信息。
但上述基于时戳恢复原始数据包序列的方法,时戳精度要求较高,相对 于序号,相同位宽的时戳,其溢出的频率比序号快很多,这也需要增加系统 额外的开销来处理溢出回转归零问题。

发明内容
本发明实施例提供一种数据包序列接收的方法,可以适应不同的数据包 时间间隔,提高资源利用率。
本发明实施例还提供一种数据包序列接收的设备,可以适应不同的数据 包时间间隔,提高资源利用率。
为达到上述目的,本发明实施例的技术方案具体是这样实现的
一种数据包序列接收的方法,该方法包含
接收数据包序列,为接收的数据包分配虚拟序号;
当接收的当前数据包是第 一个分配虚拟序号的数据包以后的数据包时, 根据上一个数据包虚拟序号及时戳信息、当前数据包时戳信息以及最小数据 打包间隔获取当前数据包的虚拟序号;
根据虚拟序号对所述接收的数据包序列重新排序。
一种数据包序列接收的设备,该设备包含
数据包接收单元,用于接收数据包序列;
虚拟序号生成单元,用于给数据包接收单元接收到的数据包分配虚拟序 号,并在接收单元接收到的当前数据包是第一个分配虚拟序号的数据包以后 的数据包时,根据上一个数据包虚拟序号及时戳信息、当前数据包时戳信息, 以及最小数据打包间隔获取当前数据包的虚拟序号;
数据包处理单元,用于根据数据包包含的虚拟序号对接收的数据包序列 重新排序。
由上述技术方案可见,本发明实施例的一种数据包序列接收的方法及设 备,通过将数据包中的时戳信息转换成位宽不受限的虚拟序号,虚拟序号携 带时戳信息,并根据虚拟序号对接收的数据包序列进行重新排序,虚拟序号 的位宽大,溢出频率低,虚拟序号与时戳及数据包打包时长相关,其溢出的 频率可以控制,工作的确定性更高,稳定性更好,可以自适应任意数据包打 包时长,提高了资源的利用率。


图1为本发明实施例一种数据包序列接收的设备结构示意图; 图2为本发明实施例一种数据包序列接收的方法流程示意图。
具体实施例方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举 实施例,对本发明作进一步详细说明。
本发明实施例通过为数据包序列的第 一个数据包分配虚拟序号并存储 相应的虛拟序号和时戳信息,后续中根据上一个数据包虚拟序号及时戳信 息、当前数据包时戳信息以及最小数据打包间隔获取当前数据包的虚拟序 号,将数据包中的时戳信息转换成位宽不受限的虚拟序号,根据虚拟序号对 接收的数据包序列进行重新排序,并可以使用虚拟序号对接收队列以数据分 片或数据包为单位进行排序和输出管理。
为了实现上述目的,本发明实施例提出了一种数据包序列接收的设备。
图1为本发明实施例一种数据包序列接收的设备结构示意图。参见图1, 该设备包含数据包接收单元、虚拟序号生成单元及数据包处理单元,其中,
数据包接收单元,用于接收数据包序列;
虚拟序号生成单元,用于给数据包接收单元接收到的数据包随机分配虚 拟序号,并在接收单元接收到的当前数据包是第 一个分配虚拟序号的数据包 以后的数据包时,根据上一个数据包虚拟序号及时戳信息、当前数据包时戳 信息,以及最小数据打包间隔获取当前数据包的虚拟序号。
实际应用中,虚拟序号生成单元具体可以为第一虚拟序号生成单元,用 于根据当前数据包的时戳和上一个数据包的时戳获取当前数据包与上一个 数据包的打包间隔,将所述打包间隔与所述最小数据打包间隔相比,得到虚 拟序号增量,将上一个数据包的虚拟序号加上所述虚拟序号增量获取所述当 前数据包的虚拟序号;
虚拟序号生成单元也可以为第二虚拟序号生成单元,用于根据当前数据包的时戳和上一个数据包的时戳获取当前数据包与上一个数据包的打包间 隔,将所述打包间隔与设置的调度发包补偿时间相加后与最小数据打包间隔 相比,对相比后的结果进行取整运算得到虚拟序号增量,将上一个数据包的 虚拟序号加上所述虚拟序号增量获取所述当前数据包的虚拟序号。
虚拟序号生成单元包括虚拟序号生成模块及存储模块,其中,
存储模块,用于存储数据包的虚拟序号及时戳信息;
虚拟序号生成模块,用于给数据包接收单元接收到的数据包虚拟序号, 将分配的虚拟序号及对应数据包的时戳信息存储至存储模块;并在接收单元 接收到的当前数据包是第 一个分配虚拟序号的数据包以后的数据包时,根据 存储模块存储的上一个数据包虚拟序号及时戳信息、当前数据包时戳信息以 及最小数据打包间隔获取当前数据包的虚拟序号,将获取的虚拟序号及当前 数据包的时戳信息更新至存储模块。
实际应用中,判断接收到的当前数据包是否为第 一个分配虚拟序号的数 据包,可以根据用户的实际需求来进行选择,如用户可以根据实际需求选择 接收的数据包序列中一个数据包为第一个数据包,为该数据包随机分配虚拟 序号,则后续依次接收的数据包为第二个,第三个,…,第k个。当计算出 的虚拟序号溢出时,进行溢出回转归零处理,由于虚拟序号的位宽可较序号 和时戳的位宽大很多,大大降低了其溢出的频率。
数据包处理单元,用于根据数据包包含的虚拟序号对接收的数据包序列 重新排序。
实际应用中,数据包处理单元还可以包括緩存模块以及排序模块; 緩存模块,用于緩存数据包;
緩存模块緩存的大小可以根据实际需要进行设置,緩存数据包后,形成 緩存数据包队列,
排序模块,用于根据当前数据包的虛拟序号进行排序,将当前数据包插 入到緩存模块的数据包队列的相应位置。
该设备还可以进一步包括数据分片单元,用于将当前数据包的打包间隔
与最小数据打包间隔相比得到当前数据包包含的数据分片数N,给当前数据
包的N个分片分配从虚拟序号生成单元得到的当前数据包的虚拟序号开始 的连续N个虚拟序号,每个虚拟序号对应一个最小打包间隔时间的数据分 片。
图2为本发明实施例一种数据包序列接收的方法流程示意图。参见图2, 该流程包括
步骤201,记录接收到的数据包序列,为接收的数据包分配虚拟序号;
本步骤中,设置接收到的数据包序列的第一个数据包的虚拟序号为N, 记录接收到的数据包序列的第 一个数据包的时戳信息及设置的虛拟序号。
实际应用中,N值可以根据实际需要进行设置,其设置的初值,即第一 个数据包的虚拟序号可以不受限制,同样,虚拟序号的位宽也可以不受限制。
设置接收的数据包作为当前数据包。举例来说,如果接收到数据包序列 的第一个数据包,则第一个数据包为当前数据包;当接收到数据包序列的第 二个数据包时,第二个数据包为当前数据包,第一个数据包为上一个数据包, 依此类推。
步骤202,当接收的当前数据包是第 一个分配虚拟序号的数据包以后的 数据包时,根据上一个数据包虚拟序号及时戳信息、当前数据包时戳信息以 及最小数据打包间隔获取当前数据包的虚拟序号;
本步骤中,获取当前数据包的虚拟序号,即虚拟序号算法可以是
当前数据包的虚拟序号-上一个数据包的虚拟序号十M[(当前数据包的 时戳-上一个数据包的时戳)/最小数据打包间隔];
虚拟序号算法也可以是
当前数据包的虚拟序号上一个数据包的虚拟序号+M[(当前数据包的 时戳-上一个数据包的时戳+Delta) /最小数据打包间隔]; 其中,
Delta为调度发包补偿时间,是考虑调度数据包发包存在的时间误差所 引入的参数,如果数据包严格按打包间隔进行调度,则Delta可以设置为零
或不进行设置,Delta最大不超过最小数据打包间隔。实际应用中,可以取 最小数据打包间隔的一半,单位与时戳的单位一致;
当前数据包的时戳-上一个数据包的时戳,为当前数据包的打包间隔。
最小数据打包间隔,与时戳的单位保持一致;
M[],表示对[]进行取整运算的运算符。
举例来说,例如实际最小数据打包间隔为10ms,时戳单位为1/8ms,则 公式中最小数据打包间隔与时戳的单位保持一致,为80 (1/8ms); 假设此时时戳之差是160 (1/8ms) , Delta取40 ( 1/8ms ),则 当前数据包的虚拟序号=上一数据包的虚拟序号+2。 实际应用中,也可以设定其它的算法计算数据包序列的虚拟序号,并将 当前数据包的时戳信息及计算好的虚拟序号进行存储,即用当前数据包的时 戳信息及计算好的虚拟序号替换存储的上一个时戳信息及虚拟序号。对于虚 拟序号算法中的除以最小数据包打包间隔取值的运算,也可以通过移位运算 来实现。
步骤203,根据当前数据包的打包间隔与最小数据打包间隔,计算得到 当前数据包包含的数据分片数,重新排序;
本步骤中,当前数据包的打包间隔=当前数据包的时戳-上一个数据包 的时戳。举例来说,假设数据包最小打包间隔为10ms,当前数据包的打包 间隔为30ms,时戳单位为1/8ms,上一数据包的虚拟序号为97,则依据算 法当前数据包的虚拟序号-上一个数据包的虚拟序号+M[(当前数据包的 时戳-上一个数据包的时戳+Ddta) /最小数据打包间隔]。
计算出当前数据包的虚拟序号为100,当前数据包打包间隔是最小数据 打包间隔单位的3倍,则认为当前数据包中包含了虚拟序号为100、 101、 102的三个数据分片,并将这三个数据分片按照虚拟序号顺序进行排序并插 入到緩存数据包队列的适当位置。
实际应用中,如果根据上述算法计算得到当前数据包的虛拟序号是L, 而当前数据包中的数据(实际打包间隔)是最小数据打包间隔单位的P倍,
即计算得到当前数据包包含的数据分片数为P,则可以认为当前数据包中包
含了虛拟序号为L、 L+l......L + P-1的P个K据分片,每个虛拟序号
对应 一个最小打包间隔时间的数据分片,并将这P个数据分片按虚拟序号的 顺序进行排序并插入到緩存数据包队列中。
实际应用中,对于緩存数据包队列,也可以不以数据分片为单位而直接 以数据包为单位进行管理即多个数据分片的数据包序列可以不分解成虛拟 序号不同的数据分片,而直接以虚拟序号间隔为P的数据包为单位进行緩存 以及数据包队列的排序,举例来说,假设P = 3,上一个数据包虚拟序号为 97,则当前数据包虛拟序号为100,按照虚拟序号间隔为3对数据包进行緩 存和排序,即不考虑数据包包含的的数据分片的虚拟序号,在输出的时候再 根据数据包内包含的数据分片数决定该数据包持续播放的时间。
对于接收的数据包序列,数据包的重复和乱序也可以基于虚拟序号进行 判断,其判断的方法与基于序号的判断方法相类似,在此不再赘述。
由上述实施例可见,丰发明实施例的一种数据包序列接收的方法及设 备,通过为数据包序列的第 一个数据包分配虚拟序号并存储相应的虚拟序号 和时戳信息,后续中根据上一个数据包虚拟序号及时戳信息、当前数据包时 戳信息,采用设定的虚拟序号算法计算得到当前数据包的虚拟序号,将数据 包中的时戳信息转换成位宽不受限的虚拟序号,并根据虚拟序号对接收的数 据包序列进行重新排序,并可以使用虚拟序号对接收的数据包序列以数据分 片或数据包为单位进行排序和输出管理。由于虚拟序号的位宽和初值可以进 行设置,大大拓宽了虚拟序号的范围,降低了溢出的频率;而且,虚拟序号 与时戳及数据包打包时长相关,其溢出的频率可以控制,工作的确定性更高, 稳定性更好,可以自适应任意数据包打包时长,提高了资源的利用率。
以上举较佳实施例,对本发明的目的、技术方案和优点进行了进一步详 细说明,所应理解的是,以上所述仅为本发明的较佳实施例而已,并不用以 限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、 改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种数据包序列接收的方法,其特征在于,该方法包括接收数据包序列,为接收的数据包分配虚拟序号;当接收的当前数据包是第一个分配虚拟序号的数据包以后的数据包时,根据上一个数据包虚拟序号及时戳信息、所述当前数据包时戳信息以及最小数据打包间隔获取所述当前数据包的虚拟序号;根据虚拟序号对所述接收的数据包序列重新排序。
2. 如权利要求1所述的方法,其特征在于,所述获取当前数据包的虚 拟序号包括根据当前数据包的时戳和上一个数据包的时戳获取当前数据包与上一 个数据包的打包间隔,将所述打包间隔与所述最小数据打包间隔相比,得到 虚拟序号增量,将上一个数据包的虚拟序号加上所述虚拟序号增量获取所述 当前数据包的虚拟序号。
3. 如权利要求1所述的方法,其特征在于,所述获取当前数据包的虚 拟序号包括设置调度发包补偿时间,根据当前数据包的时戳和上一个数据 包的时戳获取当前数据包与上一个数据包的打包间隔,将所述打包间隔与所 述设置的调度发包补偿时间相加后与最小数据打包间隔相比,对相比后的结 果进行取整运算得到虚拟序号增量,将上一个数据包的虚拟序号加上所述虚 拟序号增量获取所述当前数据包的虚拟序号。
4. 如权利要求1或2或3所述的方法,其特征在于,在为第一个数据 包分配虚拟序号后,所述方法进一步包括存储分配的虚拟序号及数据包包 含的时戳信息。
5. 如权利要求4所述的方法,其特征在于,在所述获取所述当前数据 包的虚拟序号后,所述方法进一步包括用所述当前数据包时戳信息及获取 的当前数据包虚拟序号分别替换存储的所述当前数据包的上一个包的虚拟 序号及时戳信息。
6. 如权利要求1或2或3所述的方法,其特征在于,所述获取当前数 据包的虚拟序号进一步包括根据当前数据包的打包间隔与最小数据打包间 隔,计算得到当前数据包包含的数据分片数N,分片数为N的数据包,占用 从计算得到的虚拟序号开始的连续N个虚拟序号,每个虛拟序号对应一个 最小打包间隔时间的数据分片。
7. 如权利要求6所述的方法,其特征在于,所述根据虛拟序号对接收 的数据包序列重新排序包括根据获取的数据包包含的数据分片按虚拟序号 的顺序重新排序。
8. 如权利要求1所述的方法,其特征在于,所述根据虚拟序号对接收 的数据包序列重新排序之后进一步包括根据数据包的打包间隔与最小数据 打包间隔,计算得到数据包的数据分片数,根据数据包内包含的数据分片数 决定该数据包持续播放的时间。
9. 一种数据包序列接收的设备,其特征在于,该设备包含 数据包接收单元,用于接收数据包序列;虚拟序号生成单元,用于给所述数据包接收单元接收到的数据包分配虚 拟序号,并在所述接收单元接收到的当前数据包是第一个分配虛拟序号的数 据包以后的数据包时,根据上一个数据包虚拟序号及时戳信息、所述当前数 据包时戳信息,以及最小数据打包间隔获取所述当前数据包的虚拟序号;数据包处理单元,用于根据数据包包含的虚拟序号对所述接收的数据包 序列重新排序。
10. 如权利要求9所述的设备,其特征在于,所述虚拟序号生成单元具 体为第一虚拟序号生成单元,用于根据当前数据包的时戳和上一个数据包的 时戳获取当前数据包与上一个数据包的打包间隔,将所述打包间隔与所述最 小数据打包间隔相比,得到虚拟序号增量,将上一个数据包的虚拟序号加上 所述虚拟序号增量获取所述当前数据包的虚拟序号。
11. 如权利要求9所述的设备,其特征在于,所述虚拟序号生成单元具 体为第二虚拟序号生成单元,用于根据当前数据包的时戳和上一个数据包的时戳获取当前数据包与上 一个数据包的打包间隔,将所述打包间隔与设置的 调度补偿时间相加后与最小数据打包间隔相比,对相比后的结果进行取整运 算得到虚拟序号增量,将上一个数据包的虚拟序号加上所述虚拟序号增量获 取所述当前数据包的虚拟序号。
12. 如权利要求9所述的设备,其特征在于,所述虚拟序号生成单元包括存储模块,用于存储数据包的虛拟序号及时戳信息;虚拟序号生成模块,用于给所述数据包接收单元接收到的数据包分配虚 拟序号,将分配的虚拟序号及对应数据包的时戳信息存储至所述存储模块; 并在所述接收单元接收到的当前数据包是第 一个分配虚拟序号的数据包以 后的数据包时,根据所述存储模块存储的上一个数据包虚拟序号及时戳信 息、当前数据包时戳信息以及最小数据打包间隔获取所述当前数据包虚拟序 号;将获取的虚拟序号及当前数据包的时戳信息更新至所述存储模块。
13. 如权利要求9~ 12中的任一项所述的设备,其特征在于,所述设备 还包括数据分片单元,用于将当前数据包的打包间隔与最小数据打包间隔相 比得到当前数据包包含的数据分片数N,给当前数据包的N个分片分配从所 述虚拟序号生成单元得到的当前数据包的虚拟序号开始的连续N个虚拟序 号,每个虚拟序号对应 一 个最小打包间隔时间的数据分片。
14. 如权利要求9~ 12中的任一项所述的设备,其特征在于,所述数据 包处理单元包括緩存模块,用于緩存数据包;排序模块,用于根据当前数据包的虚拟序号进行排序,将当前数据包插 入到所述緩存模块的数据包队列的相应位置。
全文摘要
本发明公开了一种数据包序列接收的方法,包含接收数据包序列,为接收的数据包分配虚拟序号;当接收的当前数据包是第一个分配虚拟序号的数据包以后的数据包时,根据上一个数据包虚拟序号及时戳信息、当前数据包时戳信息以及最小数据打包间隔获取当前数据包的虚拟序号;根据虚拟序号对接收的数据包序列重新排序。本发明同时公开了一种数据包序列接收的设备。应用本发明,可以降低虚拟序号溢出的频率,适应不同的数据包时间间隔,提高资源利用率。
文档编号H04L1/00GK101188477SQ200710301380
公开日2008年5月28日 申请日期2007年12月25日 优先权日2007年12月25日
发明者凡 余 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1