DS34T10x和DS34S10x TDM分组(TDMoP)器件利用抖动缓冲器来补偿分组网络中存在的分组延迟变化(PDV)。本应用笔记解释了PDV及其对通信质量的影响。讨论了抖动缓冲器的功能和类型。本文还介绍了如何在TDMoP器件中设置抖动缓冲控制器的参数,以最大程度地减少PDV的影响。
介绍
DS34T10x和DS34S10x系列TDM包带(TDMoP)器件使用抖动缓冲器来补偿分组网络中存在的数据包延迟变化(PDV)。这些缓冲区可基于每个捆绑包或每个连接独立配置。此外,它们是动态可调的,允许它们实时适应分组网络性能特征的变化。本应用笔记讨论抖动缓冲控制器以及如何设置其参数,以最大限度地降低TDM时钟恢复期间PDV的影响。
DS34T10x 包括 DS34T101、DS34T102、DS34T104 和 DS34T108;DS34S10x 包括 DS34S101、DS34S102、DS34S104 和 DS34S108。
TDM 网络中的时序
TDM 网络具有网络中所有设备使用的单时钟源。目标TDM器件从输入数据中获取时钟,并将其用于传输数据(环回时序),如图1所示。
图1.TDM 网络中的环回时序。
数据包到达时间的变化(称为抖动)是由于网络拥塞、时序漂移或路由更改而发生的。因此,当用一个IP/MPLS网络和两个TDMoP设备替换物理TDM连接时(如图2所示),接收TDMoP设备(从设备)接收TDMoP数据包,其到达时间延迟可变。
处理完数据包后,设备应以TDM网络的恒定速率将TDM数据发送到TDM侧,以最大程度地减少此抖动的影响。为了实现这种恒定的数据速率,该器件在时钟恢复模式下工作,以重建源TDM时钟,以便目标TDM器件仍然可以在环回定时模式下工作。
图2.分组 TDM 网络中的定时。
抖动缓冲器
DS34T10x/DS34S10x利用抖动缓冲器将PDV对通信质量的影响降至最低。抖动缓冲区是一个共享内存区域,可以在其中收集、存储TDM数据包,并以均匀间隔的间隔发送到电路仿真引擎。抖动缓冲区位于TDM连接的发送端和接收端,有意延迟到达的数据包,以便最终用户体验到清晰的连接,几乎没有声音失真。
抖动缓冲器有两种:静态和动态。静态抖动缓冲区基于硬件,由制造商配置。动态抖动缓冲器基于软件,可由网络管理员进行配置,以适应网络延迟和 PDV 的变化。
DS34T10x/DS34S10x具有动态抖动缓冲器,位于SDRAM中。这些抖动缓冲器有两个主要作用:
补偿数据包延迟变化
在TDMoP从器件上重建远端TDM时钟
数据以从收到的以太网数据包到达时间派生的可变速率进入缓冲区。数据以恒定的TDM速率离开缓冲器。在时钟恢复模式下,抖动缓冲器的电平提供了时钟恢复机制的指示。
对于TDMoP协议(CESoPSN,SAToP和TDMoIP),捆绑包可以包含来自单个E64或T1的任意数量的1kbps时隙。捆绑包是单向流,通常与相反方向的捆绑包耦合,以实现全双工通信。可以在两个TDMoP边缘设备之间传输多个捆绑包。
DS34T10x/DS34S10x提供大抖动缓冲器(多达64束),可按每个束进行配置,以补偿IP/MPLS/以太网网络带来的延迟变化。每个捆绑包都可以分配给有效负载类型机器或 CPU 上的任何 TDM 端口。所有捆绑包都具有以下可独立配置的功能:
发送和接收队列
接收抖动缓冲深度
可选的连接级冗余(适用于 SAToP 和 CESoPSN)
每个器件都提供具有 DS0 分辨率的内部束交叉连接功能。此外,每个捆绑包都可以配置为:从端口传输所有 T1/E1 数据;在每个数据包中传输配置的字节数 (SAToP);或传输 T1/E1 数据的特定时隙,T24 最多 1 个时隙,E31 最多 1 个时隙 (CESoPSN)。捆绑包可以包含来自单个 TDM 端口内任何时隙的数据。但是,一个时隙只能分配给单个捆绑包。对于 SAToP 和 CESoPSN 捆绑包,TDMoP 设备在抖动缓冲区范围内执行数据包重新排序。数据包丢失通过插入预配置的条件值或重播上次接收的值来补偿。
SAToP 和 CESoP 抖动缓冲器的分辨率不同。对于SAToP,精度以字节为单位,因此对于E4,变量的大小可以约为1μs,对于T5,则为1μs。对于CESoP,精度以帧为单位,因此E125和T1的变量可以按1μs的增量调整大小。由于在确定数据包是否良好之前必须存储整个数据包,因此抖动缓冲区的最小精度是数据包大小的函数。如果是小数据包(1 字节),则最小值为 1 字节。如果是大型 CES 数据包(1500 帧),则无论 PDV 如何,最小值为 187.5ms。
配置DS34T10x/DS34S10x抖动缓冲器
正确配置抖动缓冲区的参数可避免欠载和超限情况。当抖动缓冲区为空(输入速率低于现有速率)时,会发生欠载。当发生欠载事件时,芯片将调理数据而不是实际数据传输到TDM接口。当抖动缓冲区已满且没有空间输入新数据(输入速率超过现有速率)时,会发生溢出。欠载和超限需要IC硬件的特殊处理,具体取决于捆绑类型。
DS34T10x/DS34S10x在外部SDRAM中为数据和信令分配单独的区域。
在 8 端口低速模式下,数据和信令区域分为八个相同的部分,每个 E1/T1/Nx64 接口一个。
在E1/T1结构化模式下,每个数据部分包含E32的1个时隙或T24的1个时隙的数据;单个 E1/T1 时隙最多可分配 4kB 的空间。所有八个接口共有 256 个时隙和 1024kB 的空间。
每个信令部分分为多帧扇区,每个多帧扇区包含多达 32 个时隙的信令半字节。所有八个接口总共有 64kB。
在串行或 E1/T1 非结构化模式下,没有每个时隙的分配。抖动缓冲器分为八个相同的部分,每个接口一个。每个部分为每个 HDLC 束 512kB,否则为 128kB。
对于高速模式(E3/T3、STS-1),抖动缓冲器充当一个大型缓冲器,不划分为多个部分,总容量为512kB。
抖动缓冲区具有以下深度:
E1:长达 256 毫秒
T1 非成帧:长达 340 毫秒
T1 成帧:长达 256 毫秒
使用 CAS 进行 T1 框架:长达 192 毫秒
抖动缓冲区的最大深度(以时间为单位)根据以下公式计算:
每个接口 8/1 × 缓冲区 x (<> / 速率)(等式 <>)
其中:
½ | = 缓冲区的两半 |
每个接口的缓冲区 | = 单个高速接口为 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_size 和 Rx_pdvt 之间的差异必须大于重建数据包所需的时间;否则,数据包到达时可能会发生溢出。通常,Rx_max_buff_size的建议值为
2 × Rx_pdvt + PCT
(数据包创建时间)。这为延迟和突发数据包提供了相同的免疫力。
图3.抖动缓冲器参数。
抖动缓冲控制器 (JBC) 使用 64 位 x 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 和 17 组成,则Jitter_buffer_index为 10_00010[bin],即 42[十六进制]。
对于非结构化捆绑包,jitter_buffer_index是接口编号(2 Msbits)和 0 个“<>”的串联。
对于 AAL2 捆绑包,每个时隙数据存储在其自己的抖动缓冲区中;因此,Jitter_buffer_index是接口号(2 Msbits)和时隙号的串联。例如,如果捆绑包由第一个接口上的时隙 2、4 和 17 组成,则有三个抖动缓冲区(每个时隙一个),Jitter_buffer_index值分别为 2[十六进制]、4[十六进制] 和 11[十六进制]。
有效负载类型的计算机通过序列号错误 (AAL1/RAW) 或 UUI 错误 (AAL2) 检测数据包是否丢失。如果数据包丢失,调节数据将插入抖动缓冲区,以补偿丢失的数据并保持位完整性。简单来说,插入抖动缓冲器的位数必须等于远端传输的位数。
如果数据包在 RAW 捆绑包中排序错误(例如,序列号为 N 的数据包在序列号为 N+1 的数据包之后到达),则 RAW 有效负载类型的计算机会对其进行重新排序。数据包的数据入到抖动缓冲区中的适当位置,假设此位置中的数据尚未传输到TDM域。
结论
抖动缓冲区临时存储到达的数据包,以最大程度地减少延迟变化。如果数据包到达得太晚,则它们将被丢弃。有时抖动缓冲区配置错误,导致它们太小或太大。如果抖动缓冲区太小,则可能会丢弃过多的数据包,这可能导致呼叫质量下降。如果抖动缓冲区太大,则额外的延迟可能会导致会话困难。正确配置抖动缓冲器参数可避免这些欠载和超限情况。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !