VoIP 網路品質 (QoS)
VoIP 通話好不好,說到底看底層 IP 網路的表現。傳統 PSTN 是電路交換、頻寬獨佔;IP 網路則是封包交換、頻寬共享,語音封包得跟其他資料流量搶資源。QoS(Quality of Service)做的事,就是讓語音優先通行,把通話品質維持在可接受的水準。
影響通話品質的三大因子
延遲(Latency)
延遲是語音封包從發送端到接收端所需的時間,也稱為端對端延遲(End-to-End Delay)。
延遲的組成:
| 延遲來源 | 典型值 | 說明 |
|---|---|---|
| 編碼延遲 | 0-40 ms | Codec 演算法延遲(G.711: 0.125ms, G.729: 15ms) |
| 封包化延遲 | 20 ms | 收集一個封包的語音取樣(通常 20ms) |
| 序列化延遲 | < 1 ms | 將封包放上線路的時間 |
| 傳播延遲 | 1-50 ms | 訊號在介質中傳播的時間(光纖約 5ms/1000km) |
| 交換/路由延遲 | 1-10 ms | 每個網路設備的處理時間 |
| Jitter Buffer 延遲 | 20-100 ms | 抖動緩衝器的等待時間 |
| 解碼延遲 | 0-40 ms | Codec 解碼時間 |
延遲等級與使用者感受:
| 單向延遲 | 品質等級 | 使用者感受 |
|---|---|---|
| < 150 ms | 優秀 | 自然對話,無感知延遲 |
| 150-250 ms | 可接受 | 輕微延遲,不影響對話 |
| 250-400 ms | 不佳 | 明顯延遲,對話節奏受影響 |
| > 400 ms | 不可接受 | 嚴重延遲,難以正常對話 |
這裡有個公認的基準:ITU-T G.114 建議單向端對端延遲不要超過 150ms。客服中心的麻煩在於,一通話常要經過好幾個設備(SBC、媒體伺服器、錄音分流),每多一個媒體處理節點就多一點延遲,所以架構設計時要把延遲預算算進去。
抖動(Jitter)
抖動是封包到達間隔的變異量。理想情況下,每 20ms 發送一個封包,接收端也應每 20ms 收到一個,但實際上到達間隔會有波動。
抖動的來源:
| 來源 | 說明 |
|---|---|
| 網路壅塞 | 佇列等待時間不固定 |
| 路由變化 | 不同封包走不同路徑 |
| 封包重排序 | 先發的封包後到 |
| 設備處理差異 | 負載變化導致處理時間不一 |
抖動等級:
| 抖動值 | 品質等級 | 說明 |
|---|---|---|
| < 20 ms | 優秀 | Jitter Buffer 可輕鬆處理 |
| 20-50 ms | 可接受 | 需要適當的 Jitter Buffer |
| 50-100 ms | 不佳 | 需要較大的 Jitter Buffer,增加延遲 |
| > 100 ms | 不可接受 | 即使有 Jitter Buffer 也難以維持品質 |
封包遺失(Packet Loss)
封包遺失是指在傳輸過程中消失、損壞或延遲太久而被丟棄的封包比例。
丟包的影響:
語音通話對丟包非常敏感。連續丟失的封包比隨機分散的丟包影響更大,因為 Codec 的封包遺失隱藏(PLC, Packet Loss Concealment)機制在連續丟包時效果較差。
| 丟包率 | 品質等級 | 說明 |
|---|---|---|
| < 1% | 優秀 | 幾乎無感知影響 |
| 1-3% | 可接受 | PLC 機制可補償 |
| 3-5% | 不佳 | 語音出現斷續 |
| > 5% | 不可接受 | 嚴重影響通話品質 |
同樣是 3% 丟包,突發性的比隨機的難搞很多。3% 隨機丟包(每 33 個封包丟 1 個)對語音影響不大;但 3% 的突發性丟包(連續丟一串再恢復)就明顯得多。突發性丟包通常來自網路壅塞或設備緩衝區溢出,而 PLC 機制對「連續丟好幾個」幾乎補不回來。
QoS 設定
DSCP/ToS 標記
DSCP(Differentiated Services Code Point)用於標記 IP 封包的優先級,讓網路設備根據標記進行差異化處理。
VoIP 建議 DSCP 標記:
| 流量類型 | DSCP 值 | PHB | 說明 |
|---|---|---|---|
| 語音媒體(RTP) | 46 | EF(Expedited Forwarding) | 最高優先級,低延遲轉發 |
| 語音信令(SIP) | 24 | CS3 | 次高優先級 |
| 視訊媒體 | 34 | AF41 | 高優先級 |
| 視訊信令 | 24 | CS3 | 與語音信令同級 |
| 一般資料 | 0 | BE(Best Effort) | 預設,無優先處理 |
頻寬保留
在 WAN 連線上為語音流量保留固定頻寬:
| 方法 | 說明 |
|---|---|
| LLQ(Low Latency Queuing) | 為語音流量提供嚴格優先佇列 |
| CBWFQ(Class-Based WFQ) | 為不同流量類別分配頻寬比例 |
| Traffic Shaping | 平滑輸出流量,避免突發 |
| Traffic Policing | 限制超出配額的流量 |
QoS 設計原則
- 端對端一致性:所有經過的網路設備都需正確識別和處理 DSCP 標記
- 信任邊界:在網路入口處(交換器埠或 SBC)設定信任點,重新標記流量
- 語音 VLAN 分離:語音流量使用獨立 VLAN,便於 QoS 策略套用
- CAC(Call Admission Control):當頻寬不足時拒絕新通話,而非降低現有通話品質
實務上建議把 IP 話機獨立放在語音 VLAN(Voice VLAN)裡。多數交換器都支援這功能,話機能透過 LLDP-MED 或 CDP 自動拿到 VLAN 設定,而語音 VLAN 裡的流量會自動吃到較高的 802.1p 優先級。
MOS 分數等級
MOS 概述
MOS(Mean Opinion Score)是 ITU-T P.800 定義的語音品質評分標準,分數範圍 1.0-5.0。
| MOS 分數 | 品質等級 | 使用者感受 |
|---|---|---|
| 4.3-5.0 | 優秀(Excellent) | 高品質,可與 PSTN 媲美 |
| 4.0-4.3 | 良好(Good) | 可清楚聽到,品質令人滿意 |
| 3.6-4.0 | 尚可(Fair) | 品質可接受,偶有瑕疵 |
| 3.1-3.6 | 不佳(Poor) | 品質不佳但可溝通 |
| 1.0-3.1 | 差(Bad) | 無法正常通話 |
各 Codec 的 MOS 基準值
| Codec | 理想環境 MOS | 1% 丟包 MOS | 3% 丟包 MOS |
|---|---|---|---|
| G.711 | 4.1 | 3.9 | 3.6 |
| G.729 | 3.92 | 3.7 | 3.3 |
| G.722 | 4.5 | 4.3 | 4.0 |
| Opus (16kbps) | 4.2 | 4.0 | 3.7 |
R-Factor(E-Model)
R-Factor 是 ITU-T G.107 定義的客觀語音品質評估模型,考慮延遲、丟包、Codec 等因素,分數範圍 0-100。
R-Factor 計算公式(簡化):
R = R0 - Is - Id - Ie + A| 參數 | 說明 |
|---|---|
| R0 | 基礎訊噪比(通常 93.2) |
| Is | 同步損傷(量化噪音等) |
| Id | 延遲損傷(隨延遲增加) |
| Ie | 設備損傷(Codec 壓縮損失 + 丟包影響) |
| A | 期望優勢因子(行動用戶容忍度較高) |
R-Factor 與 MOS 的對應:
| R-Factor | MOS | 品質等級 |
|---|---|---|
| 90-100 | 4.34-4.50 | 優秀 |
| 80-90 | 4.03-4.34 | 良好 |
| 70-80 | 3.60-4.03 | 尚可 |
| 60-70 | 3.10-3.60 | 不佳 |
| < 60 | < 3.10 | 差 |
網路品質測試工具與方法
主動測試工具
| 工具 | 類型 | 功能說明 |
|---|---|---|
| iperf3 | 開源 | 測量頻寬、抖動、丟包率 |
| SIPVicious | 開源 | SIP 安全與效能測試 |
| StarTrinity SIP Tester | 免費 | SIP 壓力測試 + MOS 評估 |
| SIPp | 開源 | SIP 流量產生器 |
| Wireshark | 開源 | 封包分析 + RTP 串流品質 |
被動監測方法
| 方法 | 說明 |
|---|---|
| RTCP 監測 | 收集 RTCP RR/XR 中的品質指標 |
| SIP 品質標頭 | 部分設備在 BYE 中附帶品質資訊 |
| CDR 分析 | 從通話紀錄中分析通話時長異常 |
| SNMP 監控 | 監控網路設備的介面使用率和錯誤率 |
Wireshark 在這裡特別好用:Telephony > RTP > RTP Streams 會把所有 RTP 串流列出來,選一條 Analyze,就能看到每個封包的 Jitter、Delta(封包間隔)、Lost,還能匯出成 CSV 再細看。
品質改善策略
網路層改善
| 策略 | 說明 |
|---|---|
| 語音 VLAN 分離 | 避免資料流量衝擊語音品質 |
| DSCP 標記 + LLQ | 語音封包優先處理 |
| 冗餘路徑 | 主備鏈路自動切換 |
| 頻寬升級 | 當利用率持續偏高時 |
設備層改善
| 策略 | 說明 |
|---|---|
| Adaptive Jitter Buffer | 動態調整緩衝深度 |
| PLC(Packet Loss Concealment) | 遺失封包的語音插值補償 |
| 迴音消除器調校 | 減少回音對品質的影響 |
| Codec 選擇優化 | 根據網路狀況選擇合適的 Codec |
架構層改善
| 策略 | 說明 |
|---|---|
| 減少媒體跳數 | 盡量讓 RTP 直連,減少錨定點 |
| 就近接入 | SBC/媒體伺服器部署在靠近用戶端的位置 |
| CAC 機制 | 避免超載導致所有通話品質下降 |
| 監控告警 | 品質劣化時即時通知處理 |