QoS 深入:讓語音與視訊優先
頻寬永遠不夠用時,誰該先走?這一節把 QoS 從「知道有這回事」帶到「說得出整套機制」。
約 14 分鐘
第 3 節介紹了 QoS 的基本名詞。這一節把整套機制串起來 —— 這是考綱 4.7 的完整範圍,也是實務上語音電話品質好壞的關鍵。
為什麼需要 QoS:不同流量的需求天差地別
| 流量類型 | 對延遲 | 對抖動 | 對丟包 | 對頻寬 |
|---|---|---|---|---|
| 語音 VoIP | 極敏感 | 極敏感 | 敏感 | 需求小(固定) |
| 視訊會議 | 敏感 | 敏感 | 敏感 | 需求大 |
| 一般資料(網頁/檔案) | 不敏感 | 不敏感 | 可重傳 | 有彈性 |
QoS 的四大工具
- 分類與標記(Classification & Marking) —— 辨識流量是什麼,打上標記。越靠近來源標記越好。
- 佇列與排程(Queuing / Scheduling) —— 塞車時決定誰先送出去。
- 壅塞避免(Congestion Avoidance) —— 佇列快滿之前就先丟一些,避免整批一起爆掉。
- 管制與整形(Policing / Shaping) —— 限制某類流量的速率上限。
① 標記:CoS 與 DSCP
| 標記 | 在哪一層 | 位元數 | 範圍 | 存活範圍 |
|---|---|---|---|---|
| CoS | 第 2 層(802.1Q 標籤) | 3 bit | 0~7 | 只在 trunk 上,離開就沒了 |
| DSCP | 第 3 層(IP 標頭) | 6 bit | 0~63 | 端到端都在 |
| DSCP 名稱 | 值 | 對應流量 |
|---|---|---|
| EF(Expedited Forwarding) | 46 | 語音 |
| AF41 | 34 | 視訊 |
| AF31 | 26 | 呼叫控制訊號 |
| CS6 | 48 | 路由協定等網路控制 |
| DF / BE(Default) | 0 | 一般流量(盡力而為) |
信任邊界(Trust Boundary)
QoS 標記應該在越靠近來源、越可信的地方完成。如果讓使用者的電腦自己標記,任何人都能把自己的流量標成「語音優先」來插隊。所以標記通常在接入層交換器進行 —— 但 IP 電話是例外,它是可信的設備,交換器會信任 IP 電話送來的標記。
② 佇列:語音走低延遲佇列
塞車時,交換器/路由器把封包依標記分到不同佇列,再依規則排程送出。關鍵機制是 LLQ(Low Latency Queue,低延遲佇列)。
- PQ(Priority Queue,優先佇列) —— 這個佇列裡的封包永遠先送。語音放這裡。
- LLQ = 優先佇列 + 頻寬保證 —— 給語音一個「永遠先送、且保證一定頻寬」的佇列,這是語音的標準做法。
- CBWFQ(Class-Based Weighted Fair Queuing) —— 依類別分配頻寬比例給其他流量。
③ 壅塞避免:WRED
佇列滿了才丟包,會造成「尾部丟棄(tail drop)」—— 一瞬間丟掉一大批,導致很多 TCP 連線同時重傳、然後又同時湧入,形成波動(TCP 全域同步)。WRED(Weighted Random Early Detection)在佇列還沒滿時就隨機提早丟一些低優先權的封包,把丟包分散開來,避免整批爆掉。
④ 管制 vs 整形
| 比較 | Policing(管制) | Shaping(整形) |
|---|---|---|
| 超量時 | 直接丟棄(或重新標記) | 緩衝延後送 |
| 對延遲 | 不增加 | 增加(要排隊) |
| 典型方向 | 入口 | 出口(WAN) |
| 對 TCP | 造成重傳 | 較平順 |
立即測驗這一節(3 題)