《电子技术应用》
您所在的位置:首页 > 通信与网络 > 业界动态 > 使用TDMoP产品的抖动缓冲器补偿报文时延差异(PDV)

使用TDMoP产品的抖动缓冲器补偿报文时延差异(PDV)

2008-02-26
作者:美信公司

摘 要:DS34T10x和DS34S10x系列TDM-over-Packet (TDMoP)芯片采用抖动缓冲器来补偿包网络中存在的报文时延" title="时延">时延差异。本应用笔记将解释PDV的含义以及它如何影响通信质量,讨论抖动缓冲器的作用和类型。本笔记还介绍了如何设置TDMoP芯片的抖动缓冲器的控制参数,以此来降低PDV的影响。

 

导言

DS34T10xDS34S10x系列TDM-over-Packet (TDMoP)芯片采用抖动缓冲器来补偿包网络中存在的报文时延差异,这些缓冲器在每个绑定" title="绑定">绑定或者每个链接的基础上都可以独立配置。另外,它们可以动态调整,即可以实时地适应包网络特性参数的改变。本应用笔记讨论了抖动缓冲器的控制器以及如何设定这些参数来降低PDVTDM时钟恢复造成的影响。

DS34T10x
包括DS34T101DS34T102DS34T104DS34T108DS34S10x包括DS34S101DS34S102DS34S104DS34S108

TDM网络中的同步

TDM网络中的所有设备都使用同一个时钟源,接收端TDM设备从输入数据中提取出时钟并利用它来发送数据(环回同步),如1所示。


1. TDM网络中的环回同步

由于网络的拥塞、时钟漂移或者路由改变而导致的报文到达时间的差异称为抖动,因此,当采用IP/MPLS网络和两个TDMoP设备来取代TDM物理连接(2所示),接收端的TDMoP设备(从设备)接收到的TDMoP报文会有不同的到达时间差异。

在处理完报文后,设备会以TDM网络的恒定速率将TDM数据送到TDM侧,降低抖动带来的影响。为了实现这个恒定的数据率,时钟恢复模式下的设备要重建源端的TDM时钟,以此实现接收端的TDM设备工作在环回同步模式下。


2. TDM-over-Packet网络的定时

抖动缓冲器

DS34T10x/DS34S10x利用抖动缓冲器来减小PDV对通信质量的影响。抖动缓冲器是一段共享的存储区,TDM报文就在这段平均分配的存储区被接收、存储并送到电路仿真引擎。抖动缓冲器位于TDM连接的发送和接收末端,它有意识的延时到达的报文,以此让终端用户感受到一个很小或者没有语音失真的清晰连接。

有两种类型的抖动缓冲器:静态和动态。静态抖动缓冲器基于硬件,由厂商配置;动态抖动缓冲器基于软件,可以由网络管理员根据网络的延时和PDV的状况而相应配置。

DS34T10x/DS34S10x在SDRAM中设置有动态抖动缓冲器。这些抖动缓冲器有两个主要的作用:  

  • 补偿报文时延差异  
  • 在TDMoP从设备上重建远端TDM时钟  

根据接收到的以太网报文的到达时间,数据以不同的速率进入缓冲器;数据会以恒定的TDM速率离开缓冲区。在时钟恢复模式下,抖动缓冲器的大小可以表征时钟恢复机制。

对于TDMoP协议(CESoPSN、SAToP和TDMoIP),绑定可以由来自一个E1或者T1的任意多个64kbps时隙" title="时隙">时隙组成。绑定是单向的码流,通常配合以相反方向的绑定可以形成全双工的通信。在两个TDMoP边界设备间可以传输多个绑定。

DS34T10x/DS34S10x具有很大的抖动缓冲器(最高达64个绑定),为了补偿由IP/MPLS/以太网络带来的时延差异,缓冲器可以在每个绑定的基础上独立调整。每一个绑定都可以被净荷类型机制或者CPU指定到任意TDM端口。所有的绑定都具有以下可独立配置的特性:  

  • 发送和接收队列  
  • 接收抖动缓冲器深度  
  • 可选的连接级冗余(同时适用于SAToP和CESoPSN)  

每个芯片具有以DS0的精度进行内部绑定间的相互交叉功能。另外,一个绑定可以被配置为:传送来自同一个端口的所有T1/E1数据;传输的每一个报文(SAToP)字节数可配置;传送特定时隙的T1/E1数据,对于T1最多可以有24个时隙,对于E1可以有31个时隙(CESoPSN)。一个绑定可以包含来自一个TDM端口的任意时隙,但是,一个时隙只能被指定到一个绑定。对于SAToP和CESoPSN绑定,TDMoP芯片在抖动缓冲器内会对报文进行重排序。报文丢失会通过插入预先设定的调整值或者重复最后一个接收值进行补偿。

SAToP和CESoPSN抖动缓冲器的精度是不同的,对于SAToP,精度以字节为单位,所以变量的增量对于E1来讲可以是4μs,对于T1可以是5μs;对于CESoP,精度以帧为单位,所以变量的增量对于E1和T1都可以是125μs。因为整个报文都必须先进行存储才可以确定它是否可用,抖动缓冲器的最小精度就是报文大小的函数。如果是小的报文(1字节),那么最小值就是1字节,如果是大的CES报文(1500帧),那么无论PDV的大小,最小值都是187.5ms。 

DS34T10x/DS34S10x抖动缓冲器的配置

正确配置抖动缓冲器的参数可以避免发生欠载和溢出。当抖动缓冲器是空的时(输入速率低于输出速率)就会发生欠载。当欠载发生时,芯片会向TDM接口发送调整数据而不是实际的数据。当抖动缓冲器变满而没有空间再接收新的数据时(输入速率超过输出速率)就会发生溢出。欠载和溢出都需要IC硬件根据绑定的类型进行特殊的处理。

DS34T10x/DS34S10x在外部SDRAM中会给数据和信令分配不同的区域。

  • 8端口低速率模式下,数据区和信令区被分为8个相同的部分,每个E1/T1/Nx64接口占用一区。
    • E1/T1结构化" title="结构化">结构化模式下,每个数据区包含有E132个时隙或者T124个时隙的数据;一个E1/T1的单一时隙可以最多分配到4kB的空间,对于8个接口一共有256个时隙和1024kB的空间;
    • 每一个信令区被分成多帧部分,每一个多帧部分包含有最多32个时隙的信令半字节。对于8个接口一共有64kB的空间。
    • 在串行或者E1/T1非结构化模式下,没有针对每个时隙的分配。抖动缓冲器被分为8个相同的部分,一个接口占用一个区域。对于HDLC绑定每个区域是512kB,其它则是128kB
  • 对于高速率模式(E3/T3 STS-1),抖动缓冲器作为一个大的缓冲区域没有分区,大小为512kB

抖动缓冲器具有以下的深度:

  • E1:最高达256ms
  • T1成帧" title="成帧">成帧:最高达340ms
  • T1成帧:最高达256ms
  • T1成帧带CAS:最高达192ms

抖动缓冲器以时间为单位的最大深度按照下面的公式计算:

? ×
每个接口的缓冲器大小x (8 / 速率) (公式1)

式中:

?

= 缓冲器的一半

每个接口的缓冲器大小

= 对于单一高速接口为512kB,对于低速接口为128kB

8

= 每字节中的比特数

速率

= 传输速率(例如:2.048Mbps)


对于带CAS的成帧T1,将公式1的结果乘以0.75

抖动缓冲器的深度由绑定配置表中的Rx_max_buff_size 参数定义。当抖动缓冲器的数值水平达到了Rx_max_buff_size值,处理器会指示发生溢出。

Rx_pdvt参数(同样在绑定配置表中)定义了抖动缓冲器中用来补偿网络时延差异而存储的数据量。3所示为抖动缓冲器参数。Rx_pdvt参数具有两个含义:

  • Rx_pdvt定义了IC对以太网络时延差异的抗扰度
  • 来自网络的数据在被送到TDM侧前要经过Rx_pdvt的延时

Rx_pdvt应该比Rx_max_buff_size小。另外,Rx_max_buff_sizeRx_pdvt间的差值必须大于重建一个报文所需的时间,否则,当报文到达时有可能发生溢出。通常,Rx_max_buff_size的推荐值是2 × Rx_pdvt + PCT (报文建立时间)。这样可以对延时和突发报文有同等的抗扰性。


3. 抖动缓冲器的参数

抖动缓冲器控制器(JBC)采用64位乘32位的绑定时隙表来确定每一个工作绑定被指定的时隙。这个表的索引就是绑定号。软件必须配置每一个工作绑定的入口。对于非结构化的绑定,所有的绑定入口(32位)都要被设定,设定某位就代表着相应地时隙被指定到这个绑定。

JBC统计表被存储在一个128个入口的表中,每一个TDM端口具有32个专用的入口,一个时隙一个入口。抖动缓冲器状态表中存储每一个处于工作状态下的绑定的抖动缓冲器的状态,一个称为Jitter_buffer_index (位于TSA表中)可配置的参数定义了这个表的入口,抖动缓冲器的统计数据就通过该表写入和读取。

软件根据Jitter_buffer_index来读写抖动缓冲器状态表,状态表包含有目前的抖动缓冲器的状态,比如抖动缓冲器的数值水平和状态(比如良好、欠载或者溢出),它还包含有两个变量,用来报告抖动缓冲器的最大和最小数值水平。这些变量为用户提供了网络性能的信息。比如,利用这些数据,用户可以计算出距离抖动缓冲器顶部(Rx_max_buff_size)和底部的余量。如果还有空余空间,那么用户可以减小Rx_pdvt值来降低由于抖动缓冲器而给输入数据带来的延时。

用户应该按照下面的步骤来定义Jitter_buffer_index的值:  

  • 对于AAL1/HDLC/RAW结构化绑定,Jitter_buffer_index就是接口号(2 Msbits)和绑定中最小时隙号的并置。比如,如果绑定在第三个接口上包含有时隙2、4和7,那么Jitter_buffer_index就是10_00010[bin],即42[hex]。  
  • 对于非结构化绑定,jitter_buffer_index是接口号(2 Msbits)和5个零。  
  • 对于AAL2绑定,每一个时隙数据存储在自己的抖动缓冲器中,因此,Jitter_buffer_index是接口号(2 Msbits)和时隙号的并置。比如,如果绑定在第一个接口上包含有时隙2、4和17,每个时隙有各自的抖动缓冲器,则Jitter_buffer_index分别是 2[hex]、4[hex]和11[hex]。  

有效载荷型机制通过队列号码错误(AAL1/RAW)或者UUI错误(AAL2)来检测是否有报文丢失。如果报文丢失,在抖动缓冲器中会插入调整数据来补偿数据丢失并保证比特的完整性。简单的说,插入抖动缓冲器的比特数目必须等于远端发送的比特数目。

如果在RAW绑定中有报文乱序,比如序列号为N的报文晚于序列号为N+1的报文,RAW净荷类型机制会对其进行重新排序。如果抖动缓冲器的相应位置还没有被发送到TDM侧,那么报文数据就会被插入相应的位置。 

总结

抖动缓冲器对接收报文进行缓存来减低抖动差异。如果报文到达的太晚,那么它们会被丢弃。有些时候抖动缓冲器被错误配置后就会太小或者太大。如果一个抖动缓冲器太小,那么很多的报文就会被丢弃,这会导致呼叫质量的降级。如果一个抖动缓冲器太大,那么附加的延时会导致通话困难。因此正确配置抖动缓冲器的参数可以避免上述的欠载和溢出情况的发生。

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。