摘 要:DS34T10x和DS34S10x系列TDM-over-Packet (TDMoP)芯片采用抖動(dòng)緩沖器來補(bǔ)償包網(wǎng)絡(luò)中存在的報(bào)文時(shí)延" title="時(shí)延">時(shí)延差異,。本應(yīng)用筆記將解釋PDV的含義以及它如何影響通信質(zhì)量,討論抖動(dòng)緩沖器的作用和類型。本筆記還介紹了如何設(shè)置TDMoP芯片的抖動(dòng)緩沖器的控制參數(shù),以此來降低PDV的影響。
?
導(dǎo)言
DS34T10x和DS34S10x系列TDM-over-Packet (TDMoP)芯片采用抖動(dòng)緩沖器來補(bǔ)償包網(wǎng)絡(luò)中存在的報(bào)文時(shí)延差異,,這些緩沖器在每個(gè)綁定" title="綁定">綁定或者每個(gè)鏈接的基礎(chǔ)上都可以獨(dú)立配置。另外,它們可以動(dòng)態(tài)調(diào)整,,即可以實(shí)時(shí)地適應(yīng)包網(wǎng)絡(luò)特性參數(shù)的改變。本應(yīng)用筆記討論了抖動(dòng)緩沖器的控制器以及如何設(shè)定這些參數(shù)來降低PDV對(duì)TDM時(shí)鐘恢復(fù)造成的影響,。
DS34T10x包括DS34T101,、DS34T102、DS34T104和DS34T108,;DS34S10x包括DS34S101,、DS34S102,、DS34S104和DS34S108。
TDM網(wǎng)絡(luò)中的同步
TDM網(wǎng)絡(luò)中的所有設(shè)備都使用同一個(gè)時(shí)鐘源,,接收端TDM設(shè)備從輸入數(shù)據(jù)中提取出時(shí)鐘并利用它來發(fā)送數(shù)據(jù)(環(huán)回同步),,如圖1所示。
圖1. TDM網(wǎng)絡(luò)中的環(huán)回同步
由于網(wǎng)絡(luò)的擁塞,、時(shí)鐘漂移或者路由改變而導(dǎo)致的報(bào)文到達(dá)時(shí)間的差異稱為抖動(dòng),,因此,當(dāng)采用IP/MPLS網(wǎng)絡(luò)和兩個(gè)TDMoP設(shè)備來取代TDM物理連接(如圖2所示),,接收端的TDMoP設(shè)備(從設(shè)備)接收到的TDMoP報(bào)文會(huì)有不同的到達(dá)時(shí)間差異,。
在處理完報(bào)文后,設(shè)備會(huì)以TDM網(wǎng)絡(luò)的恒定速率將TDM數(shù)據(jù)送到TDM側(cè),,降低抖動(dòng)帶來的影響,。為了實(shí)現(xiàn)這個(gè)恒定的數(shù)據(jù)率,時(shí)鐘恢復(fù)模式下的設(shè)備要重建源端的TDM時(shí)鐘,,以此實(shí)現(xiàn)接收端的TDM設(shè)備工作在環(huán)回同步模式下,。
圖2. TDM-over-Packet網(wǎng)絡(luò)的定時(shí)
抖動(dòng)緩沖器
DS34T10x/DS34S10x利用抖動(dòng)緩沖器來減小PDV對(duì)通信質(zhì)量的影響。抖動(dòng)緩沖器是一段共享的存儲(chǔ)區(qū),,TDM報(bào)文就在這段平均分配的存儲(chǔ)區(qū)被接收,、存儲(chǔ)并送到電路仿真引擎。抖動(dòng)緩沖器位于TDM連接的發(fā)送和接收末端,,它有意識(shí)的延時(shí)到達(dá)的報(bào)文,,以此讓終端用戶感受到一個(gè)很小或者沒有語(yǔ)音失真的清晰連接。
有兩種類型的抖動(dòng)緩沖器:靜態(tài)和動(dòng)態(tài),。靜態(tài)抖動(dòng)緩沖器基于硬件,,由廠商配置;動(dòng)態(tài)抖動(dòng)緩沖器基于軟件,,可以由網(wǎng)絡(luò)管理員根據(jù)網(wǎng)絡(luò)的延時(shí)和PDV的狀況而相應(yīng)配置,。
DS34T10x/DS34S10x在SDRAM中設(shè)置有動(dòng)態(tài)抖動(dòng)緩沖器。這些抖動(dòng)緩沖器有兩個(gè)主要的作用: ?
- 補(bǔ)償報(bào)文時(shí)延差異 ?
- 在TDMoP從設(shè)備上重建遠(yuǎn)端TDM時(shí)鐘 ?
根據(jù)接收到的以太網(wǎng)報(bào)文的到達(dá)時(shí)間,,數(shù)據(jù)以不同的速率進(jìn)入緩沖器,;數(shù)據(jù)會(huì)以恒定的TDM速率離開緩沖區(qū)。在時(shí)鐘恢復(fù)模式下,,抖動(dòng)緩沖器的大小可以表征時(shí)鐘恢復(fù)機(jī)制,。
對(duì)于TDMoP協(xié)議(CESoPSN、SAToP和TDMoIP),,綁定可以由來自一個(gè)E1或者T1的任意多個(gè)64kbps時(shí)隙" title="時(shí)隙">時(shí)隙組成,。綁定是單向的碼流,通常配合以相反方向的綁定可以形成全雙工的通信,。在兩個(gè)TDMoP邊界設(shè)備間可以傳輸多個(gè)綁定,。
DS34T10x/DS34S10x具有很大的抖動(dòng)緩沖器(最高達(dá)64個(gè)綁定),,為了補(bǔ)償由IP/MPLS/以太網(wǎng)絡(luò)帶來的時(shí)延差異,緩沖器可以在每個(gè)綁定的基礎(chǔ)上獨(dú)立調(diào)整,。每一個(gè)綁定都可以被凈荷類型機(jī)制或者CPU指定到任意TDM端口,。所有的綁定都具有以下可獨(dú)立配置的特性: ?
- 發(fā)送和接收隊(duì)列 ?
- 接收抖動(dòng)緩沖器深度 ?
- 可選的連接級(jí)冗余(同時(shí)適用于SAToP和CESoPSN) ?
每個(gè)芯片具有以DS0的精度進(jìn)行內(nèi)部綁定間的相互交叉功能。另外,,一個(gè)綁定可以被配置為:傳送來自同一個(gè)端口的所有T1/E1數(shù)據(jù);傳輸?shù)拿恳粋€(gè)報(bào)文(SAToP)字節(jié)數(shù)可配置,;傳送特定時(shí)隙的T1/E1數(shù)據(jù),,對(duì)于T1最多可以有24個(gè)時(shí)隙,對(duì)于E1可以有31個(gè)時(shí)隙(CESoPSN),。一個(gè)綁定可以包含來自一個(gè)TDM端口的任意時(shí)隙,,但是,一個(gè)時(shí)隙只能被指定到一個(gè)綁定,。對(duì)于SAToP和CESoPSN綁定,,TDMoP芯片在抖動(dòng)緩沖器內(nèi)會(huì)對(duì)報(bào)文進(jìn)行重排序。報(bào)文丟失會(huì)通過插入預(yù)先設(shè)定的調(diào)整值或者重復(fù)最后一個(gè)接收值進(jìn)行補(bǔ)償,。
SAToP和CESoPSN抖動(dòng)緩沖器的精度是不同的,,對(duì)于SAToP,精度以字節(jié)為單位,,所以變量的增量對(duì)于E1來講可以是4μs,,對(duì)于T1可以是5μs,;對(duì)于CESoP,,精度以幀為單位,所以變量的增量對(duì)于E1和T1都可以是125μs,。因?yàn)檎麄€(gè)報(bào)文都必須先進(jìn)行存儲(chǔ)才可以確定它是否可用,,抖動(dòng)緩沖器的最小精度就是報(bào)文大小的函數(shù),。如果是小的報(bào)文(1字節(jié)),那么最小值就是1字節(jié),,如果是大的CES報(bào)文(1500幀),,那么無(wú)論P(yáng)DV的大小,最小值都是187.5ms,。?
DS34T10x/DS34S10x抖動(dòng)緩沖器的配置
正確配置抖動(dòng)緩沖器的參數(shù)可以避免發(fā)生欠載和溢出,。當(dāng)抖動(dòng)緩沖器是空的時(shí)(輸入速率低于輸出速率)就會(huì)發(fā)生欠載。當(dāng)欠載發(fā)生時(shí),,芯片會(huì)向TDM接口發(fā)送調(diào)整數(shù)據(jù)而不是實(shí)際的數(shù)據(jù),。當(dāng)抖動(dòng)緩沖器變滿而沒有空間再接收新的數(shù)據(jù)時(shí)(輸入速率超過輸出速率)就會(huì)發(fā)生溢出。欠載和溢出都需要IC硬件根據(jù)綁定的類型進(jìn)行特殊的處理,。
DS34T10x/DS34S10x在外部SDRAM中會(huì)給數(shù)據(jù)和信令分配不同的區(qū)域,。
- 在8端口低速率模式下,,數(shù)據(jù)區(qū)和信令區(qū)被分為8個(gè)相同的部分,每個(gè)E1/T1/Nx64接口占用一區(qū),。
- 在E1/T1結(jié)構(gòu)化" title="結(jié)構(gòu)化">結(jié)構(gòu)化模式下,,每個(gè)數(shù)據(jù)區(qū)包含有E1的32個(gè)時(shí)隙或者T1的24個(gè)時(shí)隙的數(shù)據(jù);一個(gè)E1/T1的單一時(shí)隙可以最多分配到4kB的空間,,對(duì)于8個(gè)接口一共有256個(gè)時(shí)隙和1024kB的空間,;
- 每一個(gè)信令區(qū)被分成多幀部分,每一個(gè)多幀部分包含有最多32個(gè)時(shí)隙的信令半字節(jié),。對(duì)于8個(gè)接口一共有64kB的空間,。
- 在串行或者E1/T1非結(jié)構(gòu)化模式下,沒有針對(duì)每個(gè)時(shí)隙的分配,。抖動(dòng)緩沖器被分為8個(gè)相同的部分,,一個(gè)接口占用一個(gè)區(qū)域。對(duì)于HDLC綁定每個(gè)區(qū)域是512kB,,其它則是128kB,。
- 對(duì)于高速率模式(E3/T3、 STS-1),,抖動(dòng)緩沖器作為一個(gè)大的緩沖區(qū)域沒有分區(qū),,大小為512kB。
抖動(dòng)緩沖器具有以下的深度:
- E1:最高達(dá)256ms
- T1非成幀" title="成幀">成幀:最高達(dá)340ms
- T1成幀:最高達(dá)256ms
- T1成幀帶CAS:最高達(dá)192ms
抖動(dòng)緩沖器以時(shí)間為單位的最大深度按照下面的公式計(jì)算:
? × 每個(gè)接口的緩沖器大小x (8 / 速率)
式中:
? |
= 緩沖器的一半 |
每個(gè)接口的緩沖器大小 |
= 對(duì)于單一高速接口為512kB,,對(duì)于低速接口為128kB |
8 |
= 每字節(jié)中的比特?cái)?shù) |
速率 |
= 傳輸速率(例如:2.048Mbps) |
對(duì)于帶CAS的成幀T1,,將公式1的結(jié)果乘以0.75。
抖動(dòng)緩沖器的深度由綁定配置表中的Rx_max_buff_size 參數(shù)定義,。當(dāng)抖動(dòng)緩沖器的數(shù)值水平達(dá)到了Rx_max_buff_size值,,處理器會(huì)指示發(fā)生溢出。
Rx_pdvt參數(shù)(同樣在綁定配置表中)定義了抖動(dòng)緩沖器中用來補(bǔ)償網(wǎng)絡(luò)時(shí)延差異而存儲(chǔ)的數(shù)據(jù)量,。圖3所示為抖動(dòng)緩沖器參數(shù),。Rx_pdvt參數(shù)具有兩個(gè)含義:
- Rx_pdvt定義了IC對(duì)以太網(wǎng)絡(luò)時(shí)延差異的抗擾度
- 來自網(wǎng)絡(luò)的數(shù)據(jù)在被送到TDM側(cè)前要經(jīng)過Rx_pdvt的延時(shí)
Rx_pdvt應(yīng)該比Rx_max_buff_size小。另外,,Rx_max_buff_size和Rx_pdvt間的差值必須大于重建一個(gè)報(bào)文所需的時(shí)間,,否則,當(dāng)報(bào)文到達(dá)時(shí)有可能發(fā)生溢出,。通常,,Rx_max_buff_size的推薦值是2 × Rx_pdvt + PCT (報(bào)文建立時(shí)間)。這樣可以對(duì)延時(shí)和突發(fā)報(bào)文有同等的抗擾性,。
圖3. 抖動(dòng)緩沖器的參數(shù)
抖動(dòng)緩沖器控制器(JBC)采用64位乘32位的綁定時(shí)隙表來確定每一個(gè)工作綁定被指定的時(shí)隙,。這個(gè)表的索引就是綁定號(hào)。軟件必須配置每一個(gè)工作綁定的入口。對(duì)于非結(jié)構(gòu)化的綁定,,所有的綁定入口(32位)都要被設(shè)定,,設(shè)定某位就代表著相應(yīng)地時(shí)隙被指定到這個(gè)綁定。
JBC統(tǒng)計(jì)表被存儲(chǔ)在一個(gè)128個(gè)入口的表中,,每一個(gè)TDM端口具有32個(gè)專用的入口,,一個(gè)時(shí)隙一個(gè)入口。抖動(dòng)緩沖器狀態(tài)表中存儲(chǔ)每一個(gè)處于工作狀態(tài)下的綁定的抖動(dòng)緩沖器的狀態(tài),,一個(gè)稱為Jitter_buffer_index (位于TSA表中)可配置的參數(shù)定義了這個(gè)表的入口,,抖動(dòng)緩沖器的統(tǒng)計(jì)數(shù)據(jù)就通過該表寫入和讀取。
軟件根據(jù)Jitter_buffer_index來讀寫抖動(dòng)緩沖器狀態(tài)表,,狀態(tài)表包含有目前的抖動(dòng)緩沖器的狀態(tài),,比如抖動(dòng)緩沖器的數(shù)值水平和狀態(tài)(比如良好、欠載或者溢出),,它還包含有兩個(gè)變量,,用來報(bào)告抖動(dòng)緩沖器的最大和最小數(shù)值水平,。這些變量為用戶提供了網(wǎng)絡(luò)性能的信息,。比如,利用這些數(shù)據(jù),,用戶可以計(jì)算出距離抖動(dòng)緩沖器頂部(Rx_max_buff_size)和底部的余量,。如果還有空余空間,那么用戶可以減小Rx_pdvt值來降低由于抖動(dòng)緩沖器而給輸入數(shù)據(jù)帶來的延時(shí),。
用戶應(yīng)該按照下面的步驟來定義Jitter_buffer_index的值: ?
- 對(duì)于AAL1/HDLC/RAW結(jié)構(gòu)化綁定,,Jitter_buffer_index就是接口號(hào)(2 Msbits)和綁定中最小時(shí)隙號(hào)的并置。比如,,如果綁定在第三個(gè)接口上包含有時(shí)隙2,、4和7,那么Jitter_buffer_index就是10_00010[bin],,即42[hex],。 ?
- 對(duì)于非結(jié)構(gòu)化綁定,jitter_buffer_index是接口號(hào)(2 Msbits)和5個(gè)零,。 ?
- 對(duì)于AAL2綁定,,每一個(gè)時(shí)隙數(shù)據(jù)存儲(chǔ)在自己的抖動(dòng)緩沖器中,因此,,Jitter_buffer_index是接口號(hào)(2 Msbits)和時(shí)隙號(hào)的并置,。比如,如果綁定在第一個(gè)接口上包含有時(shí)隙2,、4和17,,每個(gè)時(shí)隙有各自的抖動(dòng)緩沖器,則Jitter_buffer_index分別是 2[hex]、4[hex]和11[hex],。 ?
有效載荷型機(jī)制通過隊(duì)列號(hào)碼錯(cuò)誤(AAL1/RAW)或者UUI錯(cuò)誤(AAL2)來檢測(cè)是否有報(bào)文丟失,。如果報(bào)文丟失,在抖動(dòng)緩沖器中會(huì)插入調(diào)整數(shù)據(jù)來補(bǔ)償數(shù)據(jù)丟失并保證比特的完整性,。簡(jiǎn)單的說,,插入抖動(dòng)緩沖器的比特?cái)?shù)目必須等于遠(yuǎn)端發(fā)送的比特?cái)?shù)目。
如果在RAW綁定中有報(bào)文亂序,,比如序列號(hào)為N的報(bào)文晚于序列號(hào)為N+1的報(bào)文,,RAW凈荷類型機(jī)制會(huì)對(duì)其進(jìn)行重新排序。如果抖動(dòng)緩沖器的相應(yīng)位置還沒有被發(fā)送到TDM側(cè),,那么報(bào)文數(shù)據(jù)就會(huì)被插入相應(yīng)的位置,。?
總結(jié)
抖動(dòng)緩沖器對(duì)接收?qǐng)?bào)文進(jìn)行緩存來減低抖動(dòng)差異。如果報(bào)文到達(dá)的太晚,,那么它們會(huì)被丟棄,。有些時(shí)候抖動(dòng)緩沖器被錯(cuò)誤配置后就會(huì)太小或者太大。如果一個(gè)抖動(dòng)緩沖器太小,,那么很多的報(bào)文就會(huì)被丟棄,,這會(huì)導(dǎo)致呼叫質(zhì)量的降級(jí)。如果一個(gè)抖動(dòng)緩沖器太大,,那么附加的延時(shí)會(huì)導(dǎo)致通話困難,。因此正確配置抖動(dòng)緩沖器的參數(shù)可以避免上述的欠載和溢出情況的發(fā)生。