Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
吳東澤 楊哲男
國家高速網路與計算中心
woodjason@nchc.org.tw
yangcn@nchc.org.tw
摘要 顯著的便利性:即使用封包為編碼單位而不影響所
有路徑上路由器的架構[3,9,13]。此外無論是在綠能
為了節能而降低傳輸功率會導致丟包率增加,補 科技、無線傳輸節能方面,降低能源的使用率近來
償的做法是利用 FEC Code 將失去的封包復原,以 也日益受到重視[5,8],適當的 FEC 可以降低能源消
達到既省電又具效能的傳輸。於是 FEC-TCP 可以 耗,於是許多研究建議將能源功率消耗、FEC、
降低能源功率消耗的研究日益受重視,許多研究建 ARQ(Automatic Repeat-reQuest)等三個參數一併考
議將能源消耗、FEC、ARQ 等三個參數一併考量計 量計算。
算。然而一般的 FEC 都是基於固定編碼率的 Block 在降低功率消耗之後丟包率也增加了,適當的
Code,Block Code 仍必須事先量測通道的丟包率, FEC 雖然可以減少 ARQ 的比率,然而前述研究內
並且在變動丟包率的情況下表現不佳。 Fountain 容所探討的 FEC 都是基於固定編碼率的 Block code,
Code 則不需要考慮這些,發送端將 K 份資料編碼 Block code 仍必須事先量測通道的丟包率,進而增
如泉水般不斷流往接收端,接收端如裝水般收滿 N 加相對應比例的冗餘碼,但是一旦丟包率超過修正
份(略大於 K)即可解回原始資料,其可以抵禦變動 負荷則失去修復能力,於是被稱為 fix-rate code,而
丟包率的特性使之被稱為 rate-less code,LT Code 無法修復的部分還是必須用上 ARQ 來通知重送。
是第一個實現此目標的 FEC Code。另一方面,SCTP Fountain Code 可以描述為:發送端將 K 份資料
是目前最先進的網際網路傳輸協定,利用多路徑靈 編碼後,如泉水般不斷流往接收端,無論接收過程
活地增進了傳輸效能。本篇論文選定 LT Code 為主 的漏水(丟包)程度,接收端如裝水般收滿 N 份(略大
題,敘述了 LT Code 的階數與 pdf 分佈,分析現行 於 K)即可解回原始資料,其可以抵禦變動丟包率的
網路傳輸機制並敘述如何利用 Fountain Code 階數 特性使之被稱為 rate-less code,此外 Fountain Code
來達到差異化保護,指出在實際應用上的方法以及 的 random 特性使之適合用於平行傳輸,原因在 2.2
與 SCTP 相關的多路徑特性,達到平行傳輸,及避 節以後會詳加解釋。
免過度的頻寬浪費,以期在降低能源消耗的同時確 Luby Transform Code(LT Code)[12]是第一個實現
保傳輸效能,並在文末探討未來可繼續延伸的研究 此目標的 FEC Code,於是本篇論文選定 LT Code
方向。 為討論主題,敘述了 LT Code 的階數(degree) 的機
率分佈 pdf(probability distribution function),分析現
關鍵詞: 行網路的傳輸機制與 Luby Transform 參數之間的關
Fountain code,LT code,FEC-TCP,SCTP,傳輸效 聯性,指出 Fountain Code 在實際應用上與 SCTP 相
能,節能科技 關的多路徑特性,在平行傳輸的同時得以容忍變動
的丟包率,以期在降低傳輸功率下符合綠色節能與
提升性能的雙重目標,並在文末探討未來可繼續延
1. 前言 伸的研究方向。
SCTP(Stream Control Transmission Protocol) [18]
是目前最先進的網際網路傳輸協定,不僅能結合各 2. Fountain Code 在網路傳輸的適應性
種 TCP 的改良以增進效能(SACK、NewReno、Early
Fountain Code 其理想是不需要考慮丟包行為,如
Retransmit)[2],還能利用不同的技術[10]偵測多路
同從一個供水系統接水一樣,每滴水的地位相等便
徑的頻寬以選擇合適的路徑,更靈活地增進了傳輸
不需要去關注掉了哪些封包,僅要確定收到足夠的
效能。
封包數即可將編碼還原。
在 改 善 TCP 效 能 的 另 一 方 面 , 錯 誤 更 正 碼
Forward Error Correction Code(FEC 或稱 Erasure
2.1 ACKnowlegement Packets
Correction Code,因為網路封包只要驗證碼不過,
該封包即被丟棄,網路通道常歸類為 Binary Erasure 有效率的傳輸其意義是在容許的頻寬內盡量將
Channel,BEC)一開始是基於網路第二層 link layer 資料送往對方;Ordering TCP 的做法是利用 end to
的觀點[1,4],然而端到端(end to end)的 FEC 有著最
end 之間的 ACK 行為來確保在不造成丟包的情況 封包之後會更有效率。
下盡量將回傳的數量盡量減少;FEC-TCP 則是增加
一小比例的冗餘碼,無法修復時才通知重傳, 2.2 The Random Nature of Fountain Code
Ordering TCP 與 FEC-TCP 的效能評比如圖 1 所示。
基於 Fountain Code 的 Fountain base protocol(FBP) 當發送端的原始資料經過 Fountain 編碼之後,便
並不專注於目前要傳送”哪個”原始資料,而是將這 沒有”次序”的區分了, FBP 讓封包如同泉水的每滴
些資料一視同仁地隨機選取特定數量的資料做編 水滴一樣地位平行,這樣一來的好處就是可以利用
碼,只要隨機選取的資料數量是符合特定 pdf 分佈 接收端的各種媒介頻寬來接收資料,而無須考慮如
的情況,接收端能在冗餘封包極少的情況下將編碼 何整合收到資料的次序,然而現今的 SCTP 仍是基
還原。 於 Ordering TCP 下的實作方式。
Ordering TCP 的壅塞控制在 RTT 極長、JITTER 最顯著的應用就是平行傳輸,如同 SCTP 般的建
極大的情況下效率會明顯降低,然而 Fountain Code 立多條連線,然而卻不需像 Ordering TCP 必須審慎
不會受到這些干擾的影響,但是這並不代表 ACK 考量接收封包的次序、將收到資料重整、超過等待
機制不需要深入研究。ACK 同時也扮演著量測通訊 時間再重新傳送。不像 SCTP 的傳輸速度受限於主
通道的狀況,回報 RTT、JITTER、可用頻寬、丟包 要路徑的連線瓶頸,只要是 FBP 所有備用連線的頻
率等數據,對於一個可用的通訊方法來說,判斷路 寬也可以同時被利用。
徑上的可用頻寬由其重要,SCTP 可說是有著多路 另一個應用也同樣有著異曲同工之妙,[15]解釋
徑選徑功能的 Ordering TCP,在 SCTP 上常用來判 是在於異地(甚至多地)的資料備原機制。我們將資
斷路徑瓶頸的 packet pair method 可以用圖 2 表示。 料經過 Fountain 編碼再儲存到異地的伺服器上,日
後需要讀取資料的時候所有備份伺服器的頻寬都
可以同時被接收端利用,以達到快速讀取或是快速
復原資料的目的。
網路路由器的頻寬對於所有使用者來說都是共
圖 2 判斷路徑瓶頸頻寬[10] 同持有的資源,TCP 各種控制的原意就是要避免
Tragedy of Commons 的發生,然而[11]的實驗顯示
Fountain Code 其原意就是不需要任何 ACK 封包 FBP 不僅可以導致十分穩定的 Nash Equilibrium,還
的協助仍可完成傳輸工作,然而加入適當的 ACK 比 TCP 較難招致 Tragedy of Commons 的發生,如
FBP 在圖 3 中維持一個穩定的平台,直到惡意使用 ρ(i)是 Luby Transform 的關鍵,如圖 4 的 rho,其定
者超過 11 效率才開始下降,TCP 方面惡意使用者 義如下:
在 11 的時候,效率已經下降幾近為零了。而且使用
ρ
者在可以選擇 protocol 的情況下會偏好 FBP,因為
FBP 的效率比 TCP 還高得多。 ρ
階數 的機率是
可想而知這樣的編碼方式效率不夠好,為了要讓接
收端能有效將編碼解回,Luby 發展了複雜的機率分
佈。
除了 LT Code 之外,仍然有許多新穎而卓越的
Fountain Code 正在被研究當中,由於 LT code 是第
一個達到 Fountain Code 的標準,同時也是最知名而
具代表性的編碼方式,本章節介紹 LT Code 的階數
分佈 pdf。
Luby[12]為了快速解碼證明了一個最理想的編
圖 5 需要 N 封包來解回檔案的 Host 比率
碼機率分佈,稱為 Ideal Soliton Distribution,其方
(橫軸為 N,縱軸為 Host 比率,K=10000)[15]
法描述如下:
(a) c=0.01, δ=0.5
K 個原始資料 s1,s2,s3…sK 經過以下步驟編成已編 (b) c=0.03, δ=0.5
碼封包 tn。 (c) c=0.05, δ=0.5
1. 隨機由階數分佈 ρ(i)中選擇階數 i。
2. 隨機由 K 個原始資料中選擇 i 個資料,將之作 這是[12]考慮到理想的狀況下,僅需要一個階數
XOR 運算之後,即為已編碼封包 tn。 為一的封包,並且在解碼的過程中都恰好有一個可
立即被處理的 t。然而錯誤更正碼即是要容忍變動
比例的丟包,假使過程中發生沒有階數為一的封包 STEP 1
可處理時,解碼即被中斷。於是 Luby 提出微調過 決定最高階數 d
的 Robust Soliton Distribution 實作 Fountain Code, STEP 2
增加一些”漣漪”讓解碼過程不致中斷。
STEP 3
3.2 Robust Soliton Distribution for ( i = 1 ; n > f(i) ; i++ )
n -= f(i);
STEP 4
Robust Soliton Distribution[12],μ,其主要用來製
i 即是我們欲取的階數,重複 2、3 步驟
造漣漪的函式 τ 中新增了兩個參數 c 與 δ 供使用者
即可依 pdf f(x)產生欲編碼的階數。
視情況調整,該函式如圖 4 的 tau,定義如下:
0.5
0.45
τ 0.4
0.35
0.3
0.25
0.2
其中 為預期階數為 1 的封包數, 0.15
δ
階數為 1 即為原始資料的複本。而函式 τ 加上 Ideal 0.1
Soliton Distribution 之後,再標準化到總和為一,即 0.05
0
為 Robust Soliton Distribution,μ:
1 2 3 4 5 6 7 8 9 10
階數pdf f(i)