由499吃到飽申辦風暴
淺談網路QoS的排程機制

邱顯智 Ozzy Chiou

  • 恆逸教育訓練中心-資深講師
  • 技術分類:網路管理與通訊應用

 

 

日前各大電信業者門口大排長龍,不管是去辦吃到飽或是單純繳費的民眾無不怨聲載道,其實申辦效率可以透過網路QoS(Quality of Service)的排程機制(Queueing System)進行優化。

所謂的QoS就是對不同類型的應用程式封包,給予不同的差別待遇,以提供比較順暢的網路傳輸品質,如同高速高路也有針對不同的車種給予不同的差別待遇,希望可以提供較為順暢的高速公路交通品質一樣。

以下舉一個擁有20個服務櫃台(比擬網路頻寬)的某電信營業處為例,探討如何透過QoS機制將客戶(比擬網路應用程式)進行分類、調解並優化整體申辦效率(比擬網路傳輸品質)

  • 針對單純繳費老客戶分類為EF,走LLQ,最多限用兩個櫃台
  • 辦1399方案者屬AF41,專人到府服務
  • 無合約在身且辦499方案者屬AF31,保障四個專用櫃台
  • 無合約在身且辦299方案者屬AF32,保障三個專用櫃台
  • 有他家合約要辦499方案者屬AF21,保障五個專屬櫃台
  • 有他家合約要辦299方案者屬AF22,保障三個專屬櫃台
  • 有自家合約要辦499方案者屬AF11,保障兩個專屬櫃台
  • 有自家合約要辦299方案者屬BE,只留最後一櫃讓他們排到死

相信各位經過上面的簡單說明以後,應該對QoS的分類(Classification)與權重式排程(Weighted Queueing)應該稍有概念了,但是應該還是對EF、AF41、AF32…這些代號霧煞煞吧?莫急莫慌莫害怕,且讓我緩緩道來(先喝口咖啡先)。

首先,網路設備接收到來自四面八方各式各樣的應用程式封包的時候,應該要先進行分類(Classification),分類這個動作就像是一堆豆子倒出來,您需要先挑出紅豆、綠豆、黃豆…,然後各自裝在不同的容器裡,否則不同的豆子沒有辦法用同一鍋水煮湯。

然而將豆子分類這個動作是很耗費精神的,所以當孩子挑完豆子以後,如果媽媽信任孩子挑選的結果,媽媽就可以省略挑豆子這個動作直接去煮紅豆湯、綠豆湯…了,所以孩子挑完豆子以後必須在容器上面做記號,用來告知媽媽裡面裝的到底是紅豆還是綠豆,在QoS術語裡面我們稱這個動作為標記(Marking)。

IP表頭裡面的Type of Service欄位就是用來做封包類別Marking的欄位(如下圖所示),目前使用DSCP (Differentiated Services Code Point)為主流標記方式,預設值為BE (Best Efford),網路設備會盡力傳送這類型封包,但是沒有提供任何保證,說得直白一點就是沒有QoS。


如果要對封包提供保障,則必須將封包的DSCP值改標為AF等級(Assured Forwarding),AF分成12個等級(如右圖所示),一般用AFXY格式表示,其中X分四個Class(AF1~AF4),數字愈高代表愈重要;另外Y代表的是封包被丟棄的機率(Drop Probability),當網路需要丟棄封包(類似高承載管制)以減少頻寬消耗的時候,會先從High Drop開始丟,其次為Medium Drop,最後才是丟Low Drop,但是要注意的是Drop Probabilty是同一Class在比較的順序,也就是AF31與AF33相比的話,會先丟AF33的封包;但是AF31如果PK的對象是AF43的話,那麼AF31會優先被丟棄,因為根據本段稍早曾經提到的說明,AF4比AF3重要。

Assured Forwarding通常使用CBWFQ(Class-based Weighted Fair Queue),是一種以輪流(Round Robin)為基礎的排程技術,再加上權重(Weight)以及頻寬消耗量來計算每一輪中,各別類型應用程式封包可以保障使用的網路頻寬,不過由於是以輪流為基礎,任何一類應用程式只要在這一輪輪過了,就只能等下一輪才能進行傳送,因此對於遲滯時間(Delay)較為敏感的應用程式,例如VoIP,可能就不適用。

所以針對VoIP封包,通常會歸類為EF (Expedited Forwarding),只要這種封包一旦出現,網路設備會給它們最優先的立即傳送處理(Priority Queue),就好像是迪士尼樂園的快速通關一樣,但是如果今天迪士尼買快速通關票的遊客很多,可能某項遊樂設施持續被快速通關遊客佔滿,那麼持普通入園票的遊客不就都玩不到了?

一旦給了Priority Queue,這類的應用程式對網路頻寬就有高度侵略性(Aggressive),如果這類程式持續霸佔頻寬,可能會造成其它應用程式因為連線逾時(Timeout)而開始中斷,這種現象稱為餓死(Starvation),因此為了讓其它優先權較低的應用程式仍然有機會可以使用頻寬,不致於被餓死,針對Priority Queue的應用程式我們通常會附加限制頻寬使用量的管制措施,這種做法即為LLQ(Low Latency Queue)。

看完上述的說明之後,您不妨再對照本文章剛開始所介紹的客戶分類方式,應該就不難理解每一種DSCP等級之間重要性的差異了。

QoS是一門很深的學問,可以調解網路效能的手法並非只有Queueing一種技術而已,所幸Cisco體恤各位網管人員的辛勞,推出了一個懶人包指令—Auto qos,您可以在要啟動QoS控管的介面上輸入這條指令。只是Auto QoS並不是套用制式的公版設定,您必須事先在介面輸入Auto discovery qos指令,讓設備先觀察該介面進出的封包並且記錄(個人建議至少觀察半個月以上),日後您再輸入Auto qos指令的時候,Cisco設備就會自動根據這段期間觀察的結果,幫您生出一套近乎量身訂做的QoS Policy。