QoS(Quality of Service)是為了解決網絡擁塞、時延、抖動、丟包等問題的一種技術。
傳統的QoS基於端口進行流量調度,HQoS(Hierarchical QoS)指層次化QoS,是一種既能控制某端口下更細粒度的用戶流量,又能同時根據用戶內業務的優先級進行調度的QoS技術。

隊列調度算法
隊列調度算法的公平性、分組排隊時延等性能是影響QoS特性的中央因素。
1、RR(Round-Robin)輪詢
RR輪詢調度通過給每個業務流隊列分配時間片,通過時間片輪轉使所有業務流隊列輪流進行報文轉發。
RR調度給每條隊列分配相同的時間片,這樣的調度方式對等長隊列(指報文個數)是公平的,但是通常業務流隊列是由不定長分組流(指報文大小)構成的,因此不同隊列就可能具有不同的分組長度,分組長度大的隊列會接收更多的服務需求,這是隊列之間不公平性的緣起。此外,RR調度無法滿足高時延業務的要求。
為了改善RR算法的時延特性和其在變長分組環境下的不公平性,出現了一些改進算法:
1.1、WRR(Weight RR)加權輪詢
WRR算法為每個隊列分配一個權值,當輪詢到某個隊列時,根據權值大小決定其可轉發的分組報文個數。
WRR算法的缺點是,當分組報文大小不等時,不能公平的分配帶寬。
1.2、DRR(Defict RR)差額輪詢
DRR算法規定,每個調度輪詢中各隊列可接收的服務量(指總報文字節數)定額為Q。每一輪循環中,業務流中超過Q的分組將不再處理,累積到下一輪。
DRR算法提高了變長分組環境中算法的公平性,但是在時延特性上有明顯地缺陷,即每一輪詢中中,隊列的服務順序是靜態指定的,不能根據業務的屬性進行動態調整。
1.3、URR(Urgency-based RR)緊急輪詢
URR算法是為了改善RR算法的時延特性而產生的,在每一輪循環前,URR算法為每個隊列分配U值,然后按照U值大小順序為各隊列提供服務。
URR算法在公平性上仍然存在問題。
2、PQ(Strict-Priority Queue)調度
PQ調度即嚴格優先級調度,共有4個優先級隊列——High、Medium、Normal、Low。根據協議類型、報文大小、協議端口號等,划分不同優先級隊列。
PQ調度按照優先級入不同的隊列,如果隊列滿,則報文丟棄。嚴格按照隊列優先級調度,當高優先級隊列中有報文時,低優先級隊列得不到調度。

PQ調度特別適合於對延遲、延遲抖動敏感的業務,采用PQ調度,可以讓關鍵業務如ERP、視頻業務的報文進入最高優先級隊列,保證在擁塞時總是有限獲得轉發服務。
應用場景分析
實際使用中,單純采用PQ調度時,低優先級隊列長期得不到調度;而單純采用DRR調度,高時延要求業務(如語音)得不到優先調度。因此通常要使用PQ+DRR結合調度模式。用戶可以指定其中幾組隊列進行PQ調度,其他隊列進行DRR調度。

如圖所示,設備首先按照PQ調度Queue 5~7隊列中的業務流,只有當這些隊列中的報文轉發完畢之后,才開始以DRR方式調度Queue 0~4隊列中的業務流。
