區分服務(Differentiated Services)
/ DiffServ: DIFF-serv /
想像一家航空公司,與其為每位乘客確切的舒適需求分別接受預訂,不如只提供幾個艙等——頭等、商務、經濟——並對持有同一種票的人一視同仁。這比逐一追蹤每位旅客好經營得多,卻仍能讓高級艙乘客先登機、享有更多腿部空間。區分服務(DiffServ)就是網路版的這套:它不為每一條個別流保留資源,而是把封包分類進少數幾個類別,並在每一跳給每個類別一致、有區別的待遇。
讓它能擴展的分工是這樣的。在網路邊緣、流量進入之處,封包被分類、依其約定設定檔被管制,並被標上一個小代碼——寫進 IP 標頭 DS 欄位的 DSCP 值——說明每個封包屬於哪一類。然後在核心,路由器做一件刻意簡單的事:它只讀那個標記,並套用一個預先定義的逐跳行為(例如,給低延遲即時流量的「加速轉送」,或具不同丟棄優先序的「確保轉送」類別)。核心完全不保持逐流狀態——它只看類別標記,據此排隊或排程。複雜性住在邊緣;核心保持快速且無狀態。
為什麼重要:DiffServ 是真正能擴展到大型網路的服務品質架構,也是真實業者在其網域內部署的方案。它用 IntServ 那種硬性逐流保證,換成柔性、聚合、逐類別的待遇,從而避開了拖垮 IntServ 的狀態爆炸。誠實的提醒:DiffServ 不對任何特定的流承諾一個硬性的頻寬或延遲數字——它只承諾某一類被待得比另一類好。而且 DSCP 標記通常只在單一業者的網域內有意義;橫跨開放的網際網路,業者常重新標記或忽略彼此的標記,這又是端到端服務品質在整個網際網路上仍然罕見的另一個原因。
一家電信業者在它的邊緣把網路電話封包標上「加速轉送」DSCP。在它整個核心中,每一台路由器只憑讀取那個標記,就把那些封包放進低延遲的優先佇列——沒有逐通話的保留、沒有逐流狀態。盡力而為的網頁流量帶著預設標記,在普通佇列中等待。
DiffServ 在邊緣把封包標記進各類別;無狀態的核心只需遵從那個標記。
DiffServ 之所以能擴展,是因為核心不保持逐流狀態,但它只給相對的、逐類別的待遇——而非對任何單一流的硬性保證。而且 DSCP 標記通常只在單一管理網域內被信任,很少端到端地橫跨整個網際網路。