國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
37
第四章 調整封包大小的壅塞控制方法
很多時效性應用必頇以固定間隔時間送出封包,縮短封包在網路中的延遲時間。目 前的 VoIP 在通話前會先設定好傳輸速率,固定其 bit-rate,在整個傳輸的過程中不再改 變,可變速率方法(Flexible Bit-rate)能在通話的過程中,在網路頻寬足夠時使用較低的縮 率提高語音品質,在網路頻寬不足的情況下使用較高的壓縮率來調整 bit-rate 以避免網 路壅塞。
圖 34 中 original packet stream 是編碼器以固定時間間隔(例如 30 毫秒)送出一系列的 語音封包,第二個 change inter-packet time 表示將編碼器產生的封包置於 buffer 中,在 壅塞控制的指揮下送出資料流,因為 buffer 的緣故,inter-packet time 是變動的;第三個 是採用固定封包間隔而變動封包大小的方法送出之資料流,圖中顯示其送出時間與編碼 器產生封包的時間幾乎同步,因此可知 change inter-packet time 的方式會導致延遲時間 拉長,但 change packet size 則否。
圖 34 調整發送間隔與調整封包大小之壅塞控制方式比較
0
2 1 0
2 1 0
3 4
4 3 2 1
Change inter-packet time Original packet stream
Change packet size
Time Time Time
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
38
4.1 設計目標
目前 DCCP 無法取代 UDP 成為不可靠傳輸協議的主流,且現行的壅塞控制機制不 適用於即時性網路應用程式,但我們仍可以配合應用程式來改變語音封包的大小,藉此 調整傳輸速率。
4.1.1 手動調整方法
我們提出一套網路電話架構,讓使用者能在網路電話通進行中,藉由自身對於通話 品質的感受,手動的調整語音壓縮 bit-rate 來適應網路情況。
4.1.2 自動調整方法
我們提出一套網路電話架構,讓系統能在通話進行中偵測到網路壅塞的情況,當網 路壅塞時自動降低語音壓縮 bit-rate 來舒緩頻寬,等到網路回復順暢時自動提高語音壓 縮 bit-rate 提升通話品質。
4.2 Bit-rate 調整演算法
4.2.1 壅塞偵測方法
網路電話是使用定位元速率(Constants Bit-rate)方式傳送語音封包,封包傳送到接收 端時,連續收到兩個封包的間隔時間應該在一個固定的時間範圍之內;當頻寬不足時,
接收端連續兩個封包的間隔會拉長,偵測到此現象時視為網路壅塞,如圖 35 所示。
圖 35 改變 Bit-rate 以適應網路情況
‧
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
40
圖 36 常態分配之經驗法則 4.2.1 降低 Bit-rate 演算法
利用常態分配之經驗法則,並避免不斷的調整 bit-rate,我們設計下一個封包間隔時 間 小於[ ̅ ]視為網路狀況正常,如果 超過[ ̅ ]則判斷為網路壅塞,連 續超過 次則送出降低 bit-rate 一個等級的指令給發話端,演算法如下。
𝑤ℎ𝑒𝑛 𝑟𝑒𝑐𝑒𝑖𝑣𝑒 𝑎 𝑛𝑒𝑤 𝑝𝑎𝑐𝑘𝑒𝑡 𝑎𝑡 𝑇𝑖 𝑇ℎ𝑒𝑛 𝑡𝑛𝑒𝑤 𝑇𝑖 𝑇𝑖 𝑖𝑓 𝑡𝑛𝑒𝑤 ≥ 𝑡̅ σ𝑡 𝑎𝑛𝑑 𝑐𝑜𝑛𝑔𝑒𝑠𝑡𝑖𝑜𝑛 𝑓𝑟𝑒𝑞𝑢𝑒𝑛𝑐𝑦 ≥ α
𝑠𝑒𝑛𝑑 𝑑𝑒𝑐𝑟𝑒𝑎𝑠𝑒 𝑏𝑖𝑡𝑟𝑎𝑡𝑒 𝑐𝑜𝑚𝑚𝑎𝑛𝑑 𝑡𝑜 𝑠𝑒𝑛𝑑𝑒𝑟 𝑐𝑜𝑛𝑔𝑒𝑠𝑡𝑖𝑜𝑛 𝑓𝑟𝑒𝑞𝑢𝑒𝑛𝑐𝑦
𝑐𝑜𝑛𝑔𝑒𝑠𝑡𝑖𝑜𝑛 𝑓𝑟𝑒𝑞𝑢𝑒𝑛𝑐𝑦 𝑐𝑜𝑛𝑔𝑒𝑠𝑡𝑖𝑜𝑛 𝑓𝑟𝑒𝑞𝑢𝑒𝑛𝑐𝑦 𝑒𝑙𝑠𝑒
𝑓𝑖
𝑒𝑙𝑠𝑒 𝑖𝑓 𝑡𝑛𝑒𝑤 ≥ 𝑡̅ σ𝑡
𝑐𝑜𝑛𝑔𝑒𝑠𝑡𝑖𝑜𝑛 𝑓𝑟𝑒𝑞𝑢𝑒𝑛𝑐𝑦 𝑐𝑎𝑙𝑐𝑢𝑙𝑎𝑡𝑒 𝑛𝑒𝑤 𝑡̅ 𝑎𝑛𝑑 𝑛𝑒𝑤 σ𝑡
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
41
4.2.2 提升 Bit-rate 演算法
當發話端收到受話端傳來的降低 bit-rate 指令後,此時發話端會進入 Low Bit-rate 狀 態。為了避免發話端始終維持 Low Bit-rate 狀態,此時發話端每間隔 秒會提升發送語音 bit-rate 一個等級,直到 bit-rate 回到通話初始時的標準。
4.2.3 調整 Bit-rate 範例
舉例而言,表 8 為十筆接收端收到語音封包的間隔時間,則在時間點 時可計算出 平均間隔時間 ̅ 、標準差 、 ̅ ,我們看到在時 間點 、 、 時出現超過 ̅ 的間隔時間,此時若 設定為 3,則受話端會向發話 端送出降低 bit-rate 的命令。
表 8 以封包間隔時間調整 Bit-rate 範例
Time Spot Inter-Packet Arrival Time
32.98
35.02
32.59
33.61
32.92
32.52
32.56
39.41
38.58
38.58
𝑤ℎ𝑒𝑛 𝑠𝑒𝑛𝑑𝑒𝑟 𝑒𝑛𝑡𝑟𝑦 𝑙𝑜𝑤 𝑏𝑖𝑡𝑟𝑎𝑡𝑒 𝑠𝑡𝑎𝑡𝑒 𝑢𝑛𝑡𝑖𝑙 [𝑏𝑖𝑡𝑟𝑎𝑡𝑒𝑛𝑜𝑤 𝑏𝑖𝑡𝑟𝑎𝑡𝑒𝑠𝑡𝑎𝑟𝑡] 𝑑𝑜
𝑆𝑙𝑒𝑒𝑝 β)
𝑖𝑛𝑐𝑟𝑒𝑎𝑠𝑒 𝑏𝑖𝑡𝑟𝑎𝑡𝑒 𝑑𝑜𝑛𝑒