摘 要:DS34T10x和DS34S10x系列TDM-over-Packet (TDMoP)芯片采用抖動(dòng)緩沖器來(lái)補(bǔ)償包網(wǎng)絡(luò)中存在的報(bào)文時(shí)延" title="時(shí)延">時(shí)延差異。本應(yīng)用筆記將解釋PDV的含義以及它如何影響通信質(zhì)量,討論抖動(dòng)緩沖器的作用和類型。本筆記還介紹了如何設(shè)置TDMoP芯片的抖動(dòng)緩沖器的控制參數(shù),以此來(lái)降低PDV的影響。
?
導(dǎo)言
DS34T10x和DS34S10x系列TDM-over-Packet (TDMoP)芯片采用抖動(dòng)緩沖器來(lái)補(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ù)來(lái)降低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í)鐘并利用它來(lái)發(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è)備來(lái)取代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)帶來(lái)的影響。為了實(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)緩沖器來(lái)減小PDV對(duì)通信質(zhì)量的影響。抖動(dòng)緩沖器是一段共享的存儲(chǔ)區(qū),TDM報(bào)文就在這段平均分配的存儲(chǔ)區(qū)被接收、存儲(chǔ)并送到電路仿真引擎。抖動(dòng)緩沖器位于TDM連接的發(fā)送和接收末端,它有意識(shí)的延時(shí)到達(dá)的報(bào)文,以此讓終端用戶感受到一個(gè)很小或者沒(méi)有語(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速率離開(kāi)緩沖區(qū)。在時(shí)鐘恢復(fù)模式下,抖動(dòng)緩沖器的大小可以表征時(shí)鐘恢復(fù)機(jī)制。
對(duì)于TDMoP協(xié)議(CESoPSN、SAToP和TDMoIP),綁定可以由來(lái)自一個(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ò)帶來(lái)的時(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è)綁定可以被配置為:傳送來(lái)自同一個(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è)綁定可以包含來(lái)自一個(gè)TDM端口的任意時(shí)隙,但是,一個(gè)時(shí)隙只能被指定到一個(gè)綁定。對(duì)于SAToP和CESoPSN綁定,TDMoP芯片在抖動(dòng)緩沖器內(nèi)會(huì)對(duì)報(bào)文進(jìn)行重排序。報(bào)文丟失會(huì)通過(guò)插入預(yù)先設(shè)定的調(diào)整值或者重復(fù)最后一個(gè)接收值進(jìn)行補(bǔ)償。
SAToP和CESoPSN抖動(dòng)緩沖器的精度是不同的,對(duì)于SAToP,精度以字節(jié)為單位,所以變量的增量對(duì)于E1來(lái)講可以是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)緩沖器變滿而沒(méi)有空間再接收新的數(shù)據(jù)時(shí)(輸入速率超過(guò)輸出速率)就會(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)化模式下,沒(méi)有針對(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ū)域沒(méi)有分區(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)緩沖器中用來(lái)補(bǔ)償網(wǎng)絡(luò)時(shí)延差異而存儲(chǔ)的數(shù)據(jù)量。圖3所示為抖動(dòng)緩沖器參數(shù)。Rx_pdvt參數(shù)具有兩個(gè)含義:
- Rx_pdvt定義了IC對(duì)以太網(wǎng)絡(luò)時(shí)延差異的抗擾度
- 來(lái)自網(wǎng)絡(luò)的數(shù)據(jù)在被送到TDM側(cè)前要經(jīng)過(guò)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í)隙表來(lái)確定每一個(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ù)就通過(guò)該表寫入和讀取。
軟件根據(jù)Jitter_buffer_index來(lái)讀寫抖動(dòng)緩沖器狀態(tài)表,狀態(tài)表包含有目前的抖動(dòng)緩沖器的狀態(tài),比如抖動(dòng)緩沖器的數(shù)值水平和狀態(tài)(比如良好、欠載或者溢出),它還包含有兩個(gè)變量,用來(lái)報(bào)告抖動(dòng)緩沖器的最大和最小數(shù)值水平。這些變量為用戶提供了網(wǎng)絡(luò)性能的信息。比如,利用這些數(shù)據(jù),用戶可以計(jì)算出距離抖動(dòng)緩沖器頂部(Rx_max_buff_size)和底部的余量。如果還有空余空間,那么用戶可以減小Rx_pdvt值來(lái)降低由于抖動(dòng)緩沖器而給輸入數(shù)據(jù)帶來(lái)的延時(shí)。
用戶應(yīng)該按照下面的步驟來(lái)定義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ī)制通過(guò)隊(duì)列號(hào)碼錯(cuò)誤(AAL1/RAW)或者UUI錯(cuò)誤(AAL2)來(lái)檢測(cè)是否有報(bào)文丟失。如果報(bào)文丟失,在抖動(dòng)緩沖器中會(huì)插入調(diào)整數(shù)據(jù)來(lái)補(bǔ)償數(shù)據(jù)丟失并保證比特的完整性。簡(jiǎn)單的說(shuō),插入抖動(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)位置還沒(méi)有被發(fā)送到TDM側(cè),那么報(bào)文數(shù)據(jù)就會(huì)被插入相應(yīng)的位置。?
總結(jié)
抖動(dòng)緩沖器對(duì)接收?qǐng)?bào)文進(jìn)行緩存來(lái)減低抖動(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ā)生。