CN100356736C - 一种ip网络抖动模拟的方法 - Google Patents
一种ip网络抖动模拟的方法 Download PDFInfo
- Publication number
- CN100356736C CN100356736C CNB2004100902346A CN200410090234A CN100356736C CN 100356736 C CN100356736 C CN 100356736C CN B2004100902346 A CNB2004100902346 A CN B2004100902346A CN 200410090234 A CN200410090234 A CN 200410090234A CN 100356736 C CN100356736 C CN 100356736C
- Authority
- CN
- China
- Prior art keywords
- time
- packet
- delay
- formation
- simulation
- 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.)
- Active
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种IP网络抖动模拟的方法,解决了语音通讯领域在IP网络抖动模拟过程中存在的出入队时排序工作量大,处理速度慢的问题。本方案在缓存中开辟两个队列,分别用于存放延时为(固定延时-抖动时间)和(固定延时+抖动时间)的数据包,通过查询并进行队列切换的方式发送两个队列中的数据包来实现抖动模拟。采用本方案可以大大提高延时和抖动模拟的处理速度,使其在PC机上可以轻易达到100Mbps线速;采用大规模逻辑芯片FPGA外接存贮器时,处理速度可达到3Gbps以上。
Description
技术领域
本发明涉及语音通信领域,尤其涉及一种IP网络抖动模拟的方法。
背景技术
IP网络由于其固有特性,分组数据(称数据包或IP包)在网络上传输时不可避免地存在一定延时。不同的数据包的延时也存在差异,这种传输延时的差异称为抖动。延时与抖动是IP网络的重要特性。在进行网络设备、相关算法(如语音质量评估算法)的测试时,就需要进行包括延时与抖动在内的网络损伤模拟,即用测试仪器(或软件)模拟真实网络的性能,以期提供接近真实的网络环境。
目前对网络延时与抖动的模块采用纯软件实现,比如在一台PC机上运行的软件。测试之前,需要用户设置两个参数:固定延时Td和抖动Tj。由于抖动是数据包之间延时的差异,所以抖动不能超过固定延时,即0≤Tj≤Td。通常用户可以设置对所有数据包进行损伤模拟,或者仅对符合特定要求的数据包进行损伤模拟。
固定延时的模拟:当接收到一个数据包时,软件取当前时间Tc并加上用户设置的固定延时Td,作为一个时间标签(简称时标)打在数据包上,将数据包放入内部的存贮器(也称缓存)队列中,这个过程称为入队。队列中的数据包是按顺序存放的,即先收到的数据包放在队列的前面,因此会先被发送出去。而软件就不断地查询队列前面数据包的时标是否与当前时间相等,如果相等就将此数据包取出(称为出队),从接口发送出去,然后查询并等待发送下一个数据包。
抖动的模拟与固定延时的模拟原理相似,只是数据包在入队时,时标不是由当前时间Tc加上固定延时Td,而是由软件均匀或者随时地产生一个0到Tj之间的数值Tr,将(Tc+Tr)作为该数据包的时标。由于Tr的大小是变化的,而队列中的数据包是按照时标从小到大的顺序存放的,即先发送的数据包在队列前面,因此接收到的数据包之间的顺序可能会产生变化,也就是说后收到的数据包可能会先发送。
为了解决这一问题目前可采用两种方案,方案一是将新收到的数据包根据其时标的大小***到队列中间适当的位置,而不是简单地放到队列最后面,也就是每次入队时都要重新进行队列排序,以保证队列前面的数据包的时标最小。
方案一的缺点是:每处理一个数据包都需要进行队列的重新排序,当延时和抖动参数值很大时,队列就会很长,导致排序工作量增加,因此数据包的入队处理费时,速度慢。
方案二是按照数据包接收的先后顺序存放到数据包的队列的,即新收到数据包放在队列的最后,因此入队很简单。出队时,软件需要将整个队列中的数据包查询一遍,看看是否有数据包到了发送的时刻。
方案二的缺点是:当延时和抖动参数值很大时,缓存中的队列就会很长,每次发送时需要的查询时间就会相应增加,处理速度也很慢。
发明内容
本发明针对现有技术的不足,提供一种IP网络抖动模拟的方法,以解决现有技术中延时和抖动模拟算法繁杂,处理速度慢的问题。
为解决现有技术中的问题,本发明提供一种IP网络抖动模拟的方法,该方法包括如下步骤:
A、设定固定延时和抖动时间;
B、将一部分数据包的延时设置为固定延时与抖动时间之差的第一延时,将另一部分数据包的延时设置为固定延时与抖动延时之和的第二延时;
C、将当前时间与第一延时之和作为具有第一延时的数据包的时标,并将该数据包顺序放入第一队列的尾部;将当前时间与第二延时之和作为具有第二延时的数据包的时标,并将该数据包顺序放入第二队列的尾部;
D、查询所述第一队列和第二队列,将该第一队列或该第二队列中到达延时的数据包发送出队列,其中,同一时间段内只需查询其中一个队列,当该队列中的数据包发送完毕或经过切换时间后,则查询另一个队列并发送其中的数据包,依次进行发送队列切换,直到两个队列中的数据包均发送完毕。
所述切换时间最长为抖动时间的2倍。
本发明带来的有益效果是:通过采用两个延时队列实现抖动模拟以及队列的切换,大大提高了延时和抖动模拟的处理速度,使其在PC机上可以轻易达到100Mbps线速,当采用大规模逻辑芯片FPGA外接存贮器时,处理速度则可达到3Gbps以上。
附图说明
图1是本发明IP网络抖动模拟流程图。
具体实施方式
在实际应用中,延时和抖动模拟可以对所有接收的数据包进行,也可以根据某种规则过滤,只对符合要求的数据包进行处理。例如在VoIP(基于IP网络承载的语音业务)测试中,对某些语音通道的数据包进行损伤模拟,其他数据则做透明传输处理(即直接发送)。
参阅图1所示,本发明的主要处理过程如下:
步骤1、设定固定延时Td和抖动时间Tj,且0≤Tj≤Td,即抖动时间不得超过固定延时。
步骤2、将奇数数据包的延时设置为固定延时与抖动时间之差(Td-Tj)的第一延时,将偶数据包的延时设置为固定延时与抖动延时之和(Td+Tj)的第二延时。抖动存在时,由于每个数据包延时上的差异,可能导致发送的顺序与接收不同,为了避免现有方案在入队时对队列重新排序或者出队时将队列中所有数据包的时标都查询一遍引起的速度瓶颈,本发明对抖动进行了简化处理。即将相邻两个数据包分别在固定延时的基础上提前和延迟Tj时间,作为这两个相邻数据包的延时时间,例如固定延时为100ms,抖动为20ms,则第1个数据包延时为80ms,第2个延时为120ms,第3个延时为80ms,第4个延时为120ms......即延时时间分别为(Td+Tj)和(Td-Tj)。
步骤3、在缓存中开辟两个队列,第一队列用于存放奇数数据包,第二队列用于存放偶数数据包。
步骤4、将当前时间与第一延时之和作为奇数数据包的时标,并将打上该时标的数据包送入第一队列;将当前时间与第二延时之和作为偶数数据包的时标,并将该打上该时标的数据包送入第二队列。
为了保证数据的正确性,每个队列需要维护一个入队指针、一个出队指针及一个空、满信号。
其中,入队指针用来指示下一个数据包的存放地址,例如接收到数据包前打上时标后需要将数据包放到队列中,存放的位置就由入队指针来指示,即入队指针中的内容就是数据包放入缓存的地址,每入队一个数据包,入队指针需要做相应调整,指向下一个空单元。出队指针则指示下一个待发送的数据包的存放地址,即出队时读取数据包的地址就是出队指针的内容,出队后出队指针也需要调整,指向下一个待发送单元的地址。这里的单元是指缓存的单元,比如32位宽度的存贮器,就是指一个32位。由于一个数据包都包含很多字节,在缓存中存放时需要多个单元。
空信号用于指示队列是否为空,初始时队列中没有数据包,这时空信号有效,一旦有数据包放入则变成无效;或者当队列中的所有数据包都已发送完时,空信号也会有效,从而避免了重复发送。满信号指示队列是否已满,由于缓存大小是有限的,放满后再放就会把原来的内容覆盖,导致数据丢失,所以需要有一个满信号来提示并控制数据包的发送,以防止错误的发生。
为了对当前时间Tc进行计时,需要维护一个溢出周期大于最大固定延时时间的计时器。入队时,将当前时间与第一延时之和即(Td-Tj+Tc)作为时标打在接收顺序为奇数的数据包上,并将该数据包顺序放入第一队列的尾部。将当前时间与第二延时之和即(Td+Tj+Tc)作为时标打在接收顺序为偶数的数据包上,并将该数据包顺序放入第二队列的尾部。
步骤5、查询奇数队列(第一队列)的数据包,将到达延时的数据包发送出队列。
由于出队时,同一时间段内只需查询其中一个队列,本实施例首先查询并发送奇数数据包。
步骤6、检测奇数队列中的数据包是否发送完毕或者经过切换时间,若是则进入步骤7,否则回到步骤5继续查询并发送奇数队列的数据包。
这里切换时间最长为2*Tj,也可以小于此值。这是因为在2*Tj到达之前,第二队列的数据包不可能到发送时间。
例如,刚开始时奇数队列中的数据包延时是从80ms开始的,偶数队列中是从120ms开始的,只有在奇数队列发送完毕或者经过40ms(两者取时间较小者)后,才需要将发送队列切换到偶数队列。
如果未经过2*Tj时间当前队列中的数据包已发送完毕,则不必等到2*Tj时间即可进行队列切换,如果经过2*Tj时间后当前队列中的数据包仍未发送完毕,也必须进行队列切换。
步骤7、查询偶数队列(第二队列)的数据包,将到达延时的数据包发送出队列。
步骤8、检测偶数队列中的数据包是否发送完毕或者经过切换时间,若是则进入步骤9,若否则回到步骤7继续查询并发送偶数队列的数据包。
步骤9、检测是否所有的数据包均发送完毕,是则执行步骤10,否则执行步骤5继续查询并发送奇数队列中的数据包,依次进行奇偶数据包的切换,直至所有数据包发送完毕为止。
步骤10、结束任务。
采用本方案可以大大提高延时和抖动模拟的处理速度,使其在PC机上可以轻易达到100Mbps线速;采用大规模逻辑芯片FPGA外接存贮器时,处理速度可达到3Gbps以上。
本实施例只提供了实施本发明过程的一种方案,本发明的应用方法不限于该方案。例如步骤2中为了避免抖动产生的时速度瓶颈的影响,对抖动进行简化处理的过程中,不一定将相邻的奇数数据包设置为第一延时,偶数数据包设置为第二延时。上述实施例如此设置只是一种简化的处理方式,主要目的在于将数据包分为两个部分,一部分设为第一延时,另一部分设为第二延时,例如也可以将相邻四个数据包中前两个设为第一延时,后两个设为第二延时;或者前三个设为第一延时,后一个设为第二延时(此时两个缓存深度为3∶1)等。
另外,实施例中将抖动时间Tj设为一个固定的时间20ms,该抖动时间也可以是变化的(但同一个队列中的数据包抖动变化范围不应该引起数据包相对顺序的变化,否则就会出错)。此为本发明抖动模拟过程中可能出现的情况之一,在此不作穷尽性描述。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (5)
1、一种IP网络抖动模拟的方法,其特征在于,如下步骤:
A、设定固定延时和抖动时间;
B、将一部分数据包的延时设置为固定延时与抖动时间之差的第一延时,将另一部分数据包的延时设置为固定延时与抖动延时之和的第二延时;
C、将当前时间与第一延时之和作为具有第一延时的数据包的时标,并将该数据包顺序放入第一队列的尾部;将当前时间与第二延时之和作为具有第二延时的数据包的时标,并将该数据包顺序放入第二队列的尾部;
D、查询所述第一队列和第二队列,将该第一队列或该第二队列中到达延时的数据包发送出队列;其中,同一时间段内只需查询其中一个队列,当该队列中的数据包发送完毕或经过切换时间后,才查询另一个队列并发送其中的数据包,直到两个队列中的数据包均发送完毕。
2、如权利要求1所述的IP网络抖动模拟的方法,其特征在于,所述步骤B中,将每两组相邻的数据包中的一组设置为第一延时,另一组设置为第二延时,其中每组包括一个或一个以上数据包。
3、如权利要求1所述的IP网络抖动模拟的方法,其特征在于,将接收顺序为奇数的一组数据包的延时设置为第一延时,将接收顺序为偶数的一组数据包的延时设置为第二延时。
4、如权利要求3所述的IP网络抖动模拟的方法,其特征在于,所述步骤C中,将打上时标的奇数数据包和偶数数据包分别顺序放入第一队列和第二队列的尾部。
5、如权利要求1所述的IP网络抖动模拟的方法,其特征在于,所述切换时间最长为抖动时间的2倍。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100902346A CN100356736C (zh) | 2004-10-27 | 2004-10-27 | 一种ip网络抖动模拟的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100902346A CN100356736C (zh) | 2004-10-27 | 2004-10-27 | 一种ip网络抖动模拟的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1767457A CN1767457A (zh) | 2006-05-03 |
CN100356736C true CN100356736C (zh) | 2007-12-19 |
Family
ID=36743076
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100902346A Active CN100356736C (zh) | 2004-10-27 | 2004-10-27 | 一种ip网络抖动模拟的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100356736C (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009109069A1 (en) * | 2008-03-07 | 2009-09-11 | Arcsoft (Shanghai) Technology Company, Ltd. | Implementing a high quality voip device |
CN102769513B (zh) * | 2012-07-20 | 2015-12-16 | 中国电子科技集团公司第四十一研究所 | 以太网数据帧时延损伤实现方法 |
CN110798378B (zh) * | 2019-10-22 | 2022-04-22 | 苏州浪潮智能科技有限公司 | 一种存储测试方法及*** |
CN114513477A (zh) * | 2020-11-17 | 2022-05-17 | 华为技术有限公司 | 报文处理方法以及相关装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1335039A (zh) * | 1998-12-01 | 2002-02-06 | 艾利森电话股份有限公司 | 一种用于分组交换通信网络的访问控制机制 |
US6442141B1 (en) * | 1998-08-31 | 2002-08-27 | 3Com Corporation | Network delay and loss simulator |
-
2004
- 2004-10-27 CN CNB2004100902346A patent/CN100356736C/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6442141B1 (en) * | 1998-08-31 | 2002-08-27 | 3Com Corporation | Network delay and loss simulator |
CN1335039A (zh) * | 1998-12-01 | 2002-02-06 | 艾利森电话股份有限公司 | 一种用于分组交换通信网络的访问控制机制 |
Non-Patent Citations (1)
Title |
---|
IP电话语音质量的测试 汪雁,黄本雄,胡昕,余鑫,郑朝霞,柳郁松.计算机工程,第28卷第3期 2002 * |
Also Published As
Publication number | Publication date |
---|---|
CN1767457A (zh) | 2006-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9313115B2 (en) | Traffic generator with priority flow control | |
US8068429B2 (en) | Transmit scheduling | |
CN1668029B (zh) | 用于同步组合分组数据的方法、设备和*** | |
US6967951B2 (en) | System for reordering sequenced based packets in a switching network | |
KR100334922B1 (ko) | 효율적인출력요구패킷스위치와방법 | |
US20120163396A1 (en) | Queue speed-up by using multiple linked lists | |
CN102123073B (zh) | 数据包重排序方法及装置 | |
US8687483B2 (en) | Parallel traffic generator with priority flow control | |
JPH08512179A (ja) | セルスイッチ及びこれを通してセルを経路選択する方法 | |
CN102025638A (zh) | 基于优先级的数据传输方法、装置及网络设备 | |
CN101547063A (zh) | 一种转发延迟测试方法和*** | |
CN112769514A (zh) | 基于时间敏感的通信设备 | |
CN103731409A (zh) | 用于具有tcp加速的嵌入式汽车采集设备的分布式测量装置 | |
CN100589477C (zh) | 一种基于绑定链路实现数据发送的方法 | |
CN114301995A (zh) | 实时工业以太网协议的转换切换与互通融合***及其方法 | |
CN101136841A (zh) | 基于现场可编程门阵列的隧道实现装置及方法 | |
JP4530806B2 (ja) | パケット伝送装置 | |
CN109525518A (zh) | 一种基于fpga的ip报文网络地址转换方法及装置 | |
CN100356736C (zh) | 一种ip网络抖动模拟的方法 | |
CN102916902A (zh) | 数据存储方法及装置 | |
CN113141279B (zh) | 一种交换机网状测试***及方法 | |
CN104333516A (zh) | 用于组合输入交叉点缓存交换结构的旋转轮训调度方法 | |
CN100531123C (zh) | 一种实现数据包模式到信元帧模式转换的装置及其方法 | |
CN100396044C (zh) | 动态缓存管理的atm交换装置及其交换方法 | |
Carvajal et al. | Atacama: An open FPGA-based platform for mixed-criticality communication in multi-segmented Ethernet networks |
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 |