4.1 4.1 封包漏失回復機制 封包漏失回復機制 封包漏失回復機制 封包漏失回復機制
網路傳輸協定主要有兩種,TCP (Transport Control
Protocol)和 UDP(User Datagram Protocol) 。TCP 會先建立兩端點 的連線,並使用重傳機制來保證資料不會漏失且不會脫序的可靠性機 制。而 UDP 則是屬於無連接模式,每個封包透過路由器(Router)傳送 到目的地,無論接收端收到封包與否,UDP 皆無須重傳。因此 UDP 較 適用於要求即時服務的互動式影音通訊,缺點則是不能保證資料傳遞 的可靠度。
網路傳輸過程中不可避免會有封包漏失的情形發生,尤其當頻寬 不足以傳送有傳輸速度限制的資料,例如聲音或者是影像訊號等。一 般而言,封包漏失概分為兩種狀況,第一是傳輸層沒有收到封包,第 二是收到封包的內容有錯誤,同樣會被丟棄,因此適當的漏失封包控 制或是回復機制有其必要性。最常見的兩種方式,一種是自動重傳要 求(Automatic Repeat reQuest , ARQ ),主要是架構在 TCP 上,透 過 ARQ 來傳輸可靠性要求較高的資料,如檔案傳輸或是電子信件等。
問題是這個機制並不適合應用於即時性的網路語音傳輸以及多重播 送骨幹(Multicast backbone),因為 ARQ 本身並不做任何錯誤更正,
僅偵測錯誤並回覆內含漏失封包序號的 NACK 訊號給傳送端,要求重 傳漏失的封包。而這樣一連串交互的控制訊息,將造成傳輸上的延 遲,增加網路資源的耗損,也大幅降低傳輸效率。
相較於資料傳輸,語音封包的傳輸對網路延遲是較敏感的。但是 人耳的聽覺卻可以允許傳輸時些許的封包漏失(< 10 %),因為這樣的 漏失所造成的音質損害是人類感觀所能容忍的上限。為了降低封包漏 失率,前人發展出封包層級的前向錯誤控制碼(Packet-level FEC) 的機制,主要是傳送端在傳遞一個語音封包前加上冗餘資訊,接收端 則利用此資訊來做封包漏失的回復工作。必須注意的是,使用 FEC 的 系統須同時傳送原始資料以冗餘資料,接收端必須收到兩者再經過額
外計算,才能回復可能漏失的原始資料。基於傳輸延遲以及計算複雜 度之考量,冗餘資料量的增加額度有其限制。
表(4.1)整理了兩種方式的優缺點:
優點 缺點
FEC
1. 不需重傳所以回復速度較 快,增加傳輸效能
2. 主從架構的網路協定較簡單
需使用更多的頻寬傳送冗餘 資訊
ARQ 無須傳輸額外資訊,因而不會佔 去額外頻寬
延遲時間過長,造成網路擁塞
表 4.1 ARQ vs.FEC
4.2
4.2 4.2
4.2 前向錯誤控制 前向錯誤控制 前向錯誤控制 前向錯誤控制
FEC 原理在於傳輸原始資料的同時附加額外保護資訊,接收端可 以利用這些額外資訊來回復漏失的封包。傳輸媒介的不同,資料在傳 輸的過程中發生錯誤的屬性就有所不同。如在無線網路或是窄頻通道 的環境下,經常發生封包內部的位元錯誤,較強調針對錯誤的位元做 更正;而在有線或是寬頻通道的環境下,位元錯誤就不是那麼的顯 著,主要是網路壅塞所衍生的封包漏失。依照不同層級的錯誤回復需 求而劃分為三大類,依序為位元層級、位元組層級、封包層級。
‧位元層級(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 檢測到,這個封包在傳輸層就會被丟掉。因此不管是 因隨機位元錯誤或是由於擁塞而丟棄封包,都會導致整個封包漏失的 現象。換句話說,所要處理的問題不再針對位元錯誤,而是封包漏失,
因而需在傳輸層針對封包漏失的問題做錯誤更正。
在一連串的資料流裡,依回復用額外資訊的差異亦分為兩類模 式,一個是完全與資料流的內容無關(Media independent),另外一 個則是與資料流的格式有關(Media specific)。
[1] 與資料流格式有關的前向錯誤更正-media specific FEC
通常應用在多人對講模式,主要是利用每一封包內攜帶其他封包 的輔助資訊,萬一封包掉了,還可以利用成功接收封包的輔助資訊來 做回復的動作,圖(4.1)說明其基本原理。原始封包會以較高位元率 的方式編碼,而冗餘的封包則是採用低位元率的模式編碼,冗餘的部 分被後來的封包所背負著(piggy backed) ,可以減少封包的數量。
另外冗餘資訊可以多個封包產生,這樣的方式用來解決連續封包漏失 的現象,如圖(4.2)所示。依此方式雖可以解決連續封包漏失的問題,
若網路傳輸品質良好,錯誤發生機率很低的時候,發生叢發性的封包
圖 4.1 media specific FEC
封包漏失 [2] 與內容無關的前向錯誤更正-Media-Independent FEC
使用(N,K)區塊碼的編碼處理方式,是以 K 個訊息封包來產生(N-K) 個檢查封包,共同組合成 N 個封包的區塊再傳遞出去,如圖(4.3)所 示。訊息完整回覆的原則是 N 個封包中至少有 K 個被成功接收,則其
他的漏失封包皆可被回復。針對任何一個特定封包而言,皆須等待所 有 N 個封包被接收到才能進一步確認訊息的完整性,無形中衍生額外 的延遲。圖(4.4)以(5,3)RS 碼為例子來說明封包經 FEC 機制後的傳 送過程,其中 Tp表示封包間隔的時間,則 FEC 區塊中第 i 個封包的額 外延遲可表示為
DFEC i, =
(
N− ⋅i T)
p (4.1) 在區塊碼的選擇方面,同位碼(Parity code)與 RS 碼是最常使用 的錯誤更正方式。同位碼是每 N 個封包裡頭有 1 個是檢查封包,因此 它僅只能回復單一封包漏失,圖(4.5)說明整個過程。在此研究中,我們將鎖定在封包層級的前向錯誤控制,特別是採用 Reed-Solomon (RS)編碼器。
k 個訊息封包
第i個Byte
n-k 個檢查封包
產生同位檢查
d1 d2 d3 dk c1 cn k−
圖 4.3 RS 編碼過程
time
time
time buffer delay
DFEC,1=(N−1)Tp
圖 4.4 (*: redundant) FEC 機制下的封包傳送與接收
3
1 2 n-1
1 2 3 n-1 FE C
1 2 n -1 FE C
1 2 3 n -1
圖 4.5 同位碼回復錯誤的過程
1 2 3 4 5 6 7 8 9 * * * *