• 沒有找到結果。

封包漏失回復機制

第四章 語音傳輸系統規劃

4.1 封包漏失回復機制

網路傳輸協定主要有兩種,TCP (Transport Control Protocol)和 UDP(User Datagram Protocol) 。TCP 會先建立兩端點的連線,並使用 重傳機制來保證資料不會漏失且不會脫序的可靠性機制。而 UDP 則 是屬於無連接模式,每個封包透過路由器(Router)傳送到目的地,無 論接收端收到封包與否,UDP 皆無須重傳,因此適用於需即時服務 的語音或影像資料,缺點則是不能保證資料傳遞的可靠度。

網路傳輸過程中不可避免會有封包漏失的情形發生,尤其當頻寬 不足以傳送有傳輸速度限制的資料,例如聲音或者是影像訊號等。一 般而言,封包漏失概分為兩種狀況,第一是傳輸層沒有收到封包,第 二是收到封包的內容有錯誤,同樣會被丟棄,因此適當的漏失封包控

制或是回復機制有其必要性。最常見的兩種方式,一種是自動重傳要 求(Automatic Repeat reQuest , ARQ ),主要是架構在 TCP 上,透過 ARQ 來傳輸可靠性要求較高的資料,如檔案傳輸或是電子信件等。顯然這 個機制並不適合即時性的網路語音傳輸以及多重播送骨幹(Multicast backbone),因為 ARQ 本身並不做任何錯誤更正,僅偵測錯誤並回覆 內含漏失封包序號的 NACK 訊號給傳送端,要求重傳漏失的封包。

而這樣一連串交互的控制訊息,將造成傳輸上的延遲,增加網路資源 的耗損。

相較於資料傳輸,語音封包的傳輸對網路延遲是較敏感的,但是 人耳的聽覺卻可以允許傳輸時些許的封包漏失(< 10 %),因為這樣的 漏失所造成的音質損害是人類感觀所能容忍的上限,因此發展出另外 一種前向錯誤控制碼(Forward Error Control, FEC)的機制,它是傳送 端在傳遞一個資料封包前加上冗餘資訊(redundant information) ,接 收端可以利用這個資訊來做封包漏失的回復工作。另外必須注意的 是,使用 FEC 的系統除了原始資料以外還要攜帶額外資料,接收端 必須收到兩者再經過額外計算,才能回復可能漏失的原始資料。在考 量冗餘資料會增加傳輸延遲以及接收端的計算複雜度之下,維持適當 的冗餘資料量是必要的。此外在叢發性封包漏失(bursty packet lost)情 形下,FEC 的效能會降低。表 4.1 整理了兩種方式的優缺點。有鑑於

兩者之間各有其優缺點,也有學者研究如何去合併這兩者的優點 (Hybrid ARQ ),有效減少封包漏失機率進而減少重傳機制也增加網路 頻寬的使用效能,當應用在多重播送骨幹時的效能的確較單一使用 FEC 或 ARQ 來得好。

優點 缺點

FEC 1. 不需重傳所以回復速度較 快,增加傳輸效能

2. 主從架構的網路協定較簡單

需傳送冗餘資訊因而浪費頻 寬

ARQ 無須傳輸額外資訊,因而不會佔 去額外頻寬

延遲時間過長,造成網路擁塞

表 4.1 FEC 與 ARQ 的比較 4.2 前向錯誤控制

FEC 是一種消弭雜訊效應的技術,廣泛使用於各種數位資訊系 統。舉凡家中的視聽設備,如 CD、數位錄音帶、數位電視等,以及 辦公室中用來儲存資料的硬碟,甚至衛星通訊系統等均可見其相關應 用。它的原理在於傳輸原始資料的同時附加額外保護資訊,接收端可 以利用這些額外資訊來回復漏失的封包。傳輸媒介的不同,資料在傳 輸的過程中發生錯誤的屬性就有所不同。如在無線網路或是窄頻通道 的環境下,經常發生封包內部的位元錯誤,較強調針對錯誤的位元做 更正;而在有線或是寬頻通道的環境下,位元錯誤就不是那麼的顯

著,主要是網路壅塞所衍生的封包漏失。依照不同層級的錯誤回復需 求而劃分為三大類,依序為位元層級(Bit level)、位元組層級(Byte level) 、封包或是訊框層級(Packet level or Frame level)

‧位元層級(Bit level)

在電路交換網路(Circuit switch network)中,較常發生位元錯誤,

因此可以藉由數位訊號處理(DSP)晶片或是特殊應用的積體電路等一 些典型的硬體設備在實體層(Physical layer) 實現其錯誤控制。針對頻 寬受限制的通道而言,通常使用格子碼(trellis code)加上 Viterbi 解碼 器。而在寬頻通道的環境下,則使用區塊碼(Block code )或是迴旋碼 (Convolutional code) ,配合 Viterbi 解碼演算法。

‧位元組層級(Byte level)

對無線通訊而言,訊號由於受到反射、繞射或是都普勒效應的影 響會產生多路徑衰落的現象,導致位元發生錯誤的情況相當顯著,倘 若沒在鏈結層(data link layer,DLL)做更正的動作,在傳輸層(transport layer)將會是叢發性的封包漏失(bursty packet loss)。在鏈結層,每一個 封包都會加上循環冗餘檢查(Cyclic Redundancy Checksums,CRCs),

用以檢查發生錯誤的真實資料位元。由於 FEC 解碼的計算相當複 雜,因此在過去這些 CRCs 位元只當作檢測之用,然而近年來由於計

算能力提昇,可以利用這些資訊來修復錯誤的位元,常用的方式如 Reed-Solomon (RS) 編碼器。

‧封包層級(Packet level)

在網路傳送過程中錯誤發生可以區分為兩種,一是通道雜訊導致 隨機的位元錯誤,另一種則是壅塞的連結導致封包漏失。在有線的網 路環境裡,特別是光纖網路,位元發生錯誤的情況相當少,而當錯誤 位元經由 CRCs 檢測到,這個封包在傳輸層就會被丟掉。因此不管是 因隨機位元錯誤或是由於擁塞而丟棄封包,都會導致整個封包漏失的 現象。換句話說,所要處理的問題不再針對位元錯誤,而是封包漏失,

因而需在傳輸層針對封包漏失的問題做錯誤更正。在此研究中,我們 將鎖定在封包層級的前向錯誤控制且採 Reed-Solomon (RS)編碼器。

在一連串的資料流裡,依回復用額外資訊的差異亦分為兩類模 式,一個是完全與資料流的內容無關(Media independent),另外一個 則是與資料流的格式有關(Media specific)。

[1] 與資料流格式有關的前向錯誤更正-media specific FEC

通常應用在多人對講模式,主要是利用每一封包內攜帶其他封包 的輔助資訊,萬一封包掉了,還可以利用成功接收封包的輔助資訊來 做回復的動作,圖 4.1 說明其基本原理。原始封包會以較高位元率的

方式編碼,而冗餘的封包則是採用低位元率的模式編碼,冗餘的部分

[2] 與內容無關的前向錯誤更正-Media-Independent FEC

使用(n,k)區塊碼的編碼處理方式,是以 k 個訊息封包來產生 n-k 個檢查封包,形成 n 個封包的區塊再傳遞出去,如圖 4.3 所示。訊息 完整回覆的原則是 n 個封包中至少有 k 個被成功接收,則其他的漏失 封包皆可被回復。針對任何一個特定封包而言,皆須等待所有封包被 接收到才能進一步確認訊息的完整性,無形中衍生額外的延遲。如圖 4.4 所示,其中Tp表示封包間隔的時間,則額外的延遲可表示為

(

1

)

FEC p

d = k− ⋅T (4.1) 有鑑於dFEC在單一路徑的延遲佔了相當的比重,因此近年來有學者提 出整合 FEC 與接收端的撥放暫存器[5],在附錄 B 我們針對這個部分 做一簡單說明。

在區塊碼的選擇方面,同位碼(Parity code )與 RS 碼是最常使用 的錯誤更正方式。同位碼是每 n 個封包裡頭有 1 個是檢查封包,因此 它僅只能回復單一封包漏失,圖 4.5 說明整個過程。相對而言,RS 碼的漏失回復能力較強,對於 RS 碼的過程會在 4.4 節做詳細描述。

k 個訊息封包

4.3 吉伯特漏失模型

封包漏失的屬性可區分為隨機 (random) 以及叢發性 (bursty) 兩 種,前向錯誤更正的效益會隨著漏失屬性的不同而存在明顯差異,因 此漏失模型分析對 FEC 回復效能的掌握是很重要的一環。對於兩端點 間的網路特性已經有許多學者提出相關模型,針對不同封包漏失屬性 常採用隨機模型或有限狀態的馬可夫鏈模型(finite- state Markov chain model) ,此處我們將運用吉伯特(Gilbert)模型進行有關叢發性 錯誤之模擬。如圖 4.6,它是由兩個狀態來模擬網路漏失其中 1 表 示封包漏失而 0 表示成功接收,參數 p 與 q 分別表示 0 到 1 以及 1 到 0 的 狀 態 移 轉 機 率 。 更 明 確 地 說 , p=Pr

(

Yk =1 |Yk1=0

)

(

1

)

Pr k 0 | k 1

q= Y = Y =Pc = − =1 q Pr

[

Yk =1 |Yk1 =1

]

,其中Yk表示第 k 個封 包的接收狀態。

0 1

1-P 1-q

p

q

圖 4.6 吉伯特漏失模型

狀態 1 與狀態 0 的穩定機率(stationary probability),分別為

( )

1 Pr Yk 1

π = = 與π0 =Pr

(

Yk =0

)

,則可推導得

1 P Y( k 1) P Y( k 1,Yk 1 0) P Y( k 1,Yk 1 1)

其中q i( )=Pr(1 0 | 0)i1 =Pr

( {

Yj = ∀ ∈1, j

{

1, ,i1

} }

{

Yi =0 |

} {

Y0 =0

} )

(4.6)

Hocquenghem (BCH)只能處理二進位位元錯誤的限制,RS 碼做了延 伸。以 RS(n,k)來表示,利用 k 個訊息封包產生 n-k 個檢查封包,一

包,假設有一連串共 k 個訊息封包依序分別為

{

d d1, 2, dk

}

;稱之為傳 送群組(transmission group ,TG),利用 RS 碼產生 n-k 個檢查封包

{

h h1, 2, hn k

}

,其中每個封包有 m 個位元,總共 n 個封包形成一個

處理後的封包漏失率為

= Pr

(

Yk =0

)

Pr

(

( )

k-1 個訊息封包內有(i1)個接收|Yk =0

)

圖 4.7 k 值與PLRFEC的關係 4.5 系統規劃與討論

上節提到使用較大的 n 值與較小的 k 值的確可以讓封包漏失率明 顯的下降,同時也讓封包漏失所對應的損害值Ie跟著降低,問題是 (n,k)可以一直增加使得封包漏失率降到最低嗎?在本章第二小節提及 隨著(n,k)值的增加,所衍生的額外延遲dFEC也會使得整體效能降低,

因此(n,k)最佳值的設定必須同時考量封包漏失與網路延遲的交互影 響。

我們先定義單一路徑網路延遲是有哪些因子所組合成的。當封包 將進入網路時造成傳輸延遲,在網路傳輸也會造成傳撥延遲以及變動 的佇列延遲,統稱為網路延遲dnetwork。在接收端為了順暢音質所加上 的撥放暫存器,會造成額外的暫存延遲dde jitter buffer _ 。再加上編碼延遲

codec

d 及 FEC 延遲dFEC,而產生口對耳延遲(mouth-to ear delay) : Dm e2 =dcodec+dnetwork+dFEC+dde jitter buffer _ (4.19)

接下來我們設定一些條件,看看在這樣的條件下(n,k)變化所表 現出來的回復效能。首先固定 3

2 n

k = ,這個動作在於雖然(n,k)呈線性 增加,但整體傳輸位元率依舊維持固定。舉例而言,G.711、G.729 與 G.723 的位元率分別從原本 64Kb/s、8 Kb/s 與 6.3 Kb/s 擴充3

2倍而為

96Kb/s、12 Kb/s 與 9.45 Kb/。另外依據美國 AT&T 公司在網際網路延 遲的實際量測而設定dnetwork為 35ms,並採用 Cisco 內定dde jitter buffer _ 的初 始值 40ms。

[實驗一]

目的 : 在固定 FEC 編碼增益比 n

k 的條件下,針對語音編碼技術 G.729a 為核心的語音傳輸系統,探討其衍生延遲與封包漏失的 交互影響,並分析選擇( , )n k 值的最佳化問題。

k 的條件下,針對語音編碼技術 G.729a 為核心的語音傳輸系統,探討其衍生延遲與封包漏失的 交互影響,並分析選擇( , )n k 值的最佳化問題。

相關文件