qos

網路的安全機制

QoS(Quality of Service,服務質量)指一個網路能夠利用各種基礎技術,為指定的網路通信提供更好的服務能力,是網路的一種安全機制,是用來解決網路延遲和阻塞等問題的一種技術。

QoS的保證對於容量有限的網路來說是十分重要的,特別是對於流多媒體應用,例如VoIP和IPTV等,因為這些應用常常需要固定的傳輸率,對延時也比較敏感。

定義


而當網路發生擁塞的時候,所有的數據流都有可能被丟棄;為滿足用戶對不同應用不同服務質量的要求,就需要網路能根據用戶的要求分配和調度資源,對不同的數據流提供不同的服務質量:對實時性強且重要的數據報文優先處理;對於實時性不強的普通數據報文,提供較低的處理優先順序,網路擁塞時甚至丟棄。QoS應運而生。支持QoS功能的設備,能夠提供傳輸品質服務;針對某種類別的數據流,可以為它賦予某個級別的傳輸優先順序,來標識它的相對重要性,並使用設備所提供的各種優先順序轉發策略、擁塞避免等機製為這些數據流提供特殊的傳輸服務。配置了QoS的網路環境,增加了網路性能的可預知性,並能夠有效地分配網路帶寬,更加合理地利用網路資源。
下面從QoS服務模型出發,對使用最多、最成熟的一些QoS技術逐一進行描述。在特定的環境下合理地使用這些技術,可以有效地提高服務質量。
通常QoS提供以下三種服務模型:Best-Effort service(儘力而為服務模型),Integrated service(綜合服務模型,簡稱Int-Serv),Differentiated service(區分服務模型,簡稱Diff-Serv)。
1. Best-Effort服務模型是一個單一的服務模型,也是最簡單的服務模型。對Best-Effort服務模型,網路盡最大的可能性來發送報文。但對延時、可靠性等性能不提供任何保證。
Best-Effort服務模型是網路的預設服務模型,通過FIFO(first in first out 先入先出)隊列來實現。它適用於絕大多數網路應用,如FTP、E-Mail等。
2. Int-Serv服務模型Int-Serv是一個綜合服務模型,它可以滿足多種QoS需求。該模型使用資源預留協議(RSVP),RSVP運行在從源端到目的端的每個設備上,可以監視每個流,以防止其消耗資源過多。這種體系能夠明確區分並保證每一個業務流的服務質量,為網路提供最細粒度化的服務質量區分。但是,Inter-Serv模型對設備的要求很高,當網路中的數據流數量很大時,設備的存儲和處理能力會遇到很大的壓力。Inter-Serv模型可擴展性很差,難以在Internet核心網路實施。
3. Diff-Serv服務模型Diff-Serv是一個多服務模型,它可以滿足不同的QoS需求。與Int-Serv不同,它不需要通知網路為每個業務預留資源。區分服務實現簡單,擴展性較好。

相關介紹


產生背景

在網際網路創建初期,沒有意識到QoS應用的需要。因此,整個網際網路運作如一個“竭盡全力”的系統。每段信息都有4個“服務類別”位和3個“優先順序”位,但是他們完全沒有派上用場。依發送和接收者看來,數據包從起點到終點的傳輸過程中會發生許多事情,併產生如下有問題的結果:
·丟失數據包- 當數據包到達一個緩衝器(buffer)已滿的路由器時,則代表此次的發送失敗,路由器會依網路的狀況決定要丟棄、不丟棄一部份或者是所有的數據包,而且這不可能在預先就知道,接收端的應用程序在這時必須請求重新傳送,而這同時可能造成總體傳輸嚴重的延遲。
·延遲- 或許需要很長時間才能將數據包傳送到終點,因為它會被漫長的隊列遲滯,或需要運用間接路由以避免阻塞;也許能找到快速、直接的路由。總之,延遲非常難以預料。
·傳輸順序出錯- 當一群相關的數據包被路由經過網際網路時,不同的數據包可能選擇不同的路由器,這會導致每個數據包有不同的延遲時間。最後數據包到達目的地的順序會和數據包從發送端發送出去的順序不一致,這個問題必須要有特殊額外的協議負責刷新失序的數據包。
·出錯- 有些時候,數據包在被運送的途中會發生跑錯路徑、被合併甚至是毀壞的情況,這時接收端必須要能偵測出這些情況,並將它們統統判別為已遺失的數據包,再請求發送端再送一份同樣的數據包。
吞吐量:在特定時段內可以實現的請求數量,這個指標同樣也受到負載能力和延時性的限制。

釋義

1.國際電信聯盟(ITU)在x.902標準即“信息技術開放式處理參考模型”中定義服務質量(QoS)為:定義在一個或多個對象的集體行為上的一套質量需求的集合。吞吐量、傳輸延遲和錯誤率等一些服務質量參數描述了數據傳輸的速度和可靠性等。
2.在ATM中定義服務質量(QoS)為“關於ATM性能參數集合的術語,這些參數描述了在一個給定虛擬連接上數據流量的特徵”。服務質量參數大多應用在較低層次的協議層上,這些參數並不直接被應用程序所觀察和感覺到。這些參數包括信元丟失率、信元錯誤率、信元錯誤插入率、信元延遲變化、信元傳輸延遲和平均信元傳輸延遲。根據服務質量參數定義了五種服務級別,級別0指的是“盡最大努力”服務方式,在這種服務級別中沒有特定的流量參數和絕對的服務質量保證。
3.IETF在研究ATM時就已經開始考慮服務質量的問題。即有陳述:“隨著在網路上實時服務的逐步增加,在共享網路上要求提供確定的傳輸服務。這些確定的傳輸服務要求應用程序和網路基礎設施有能力請求、設置和強化數據的傳輸。總的來說,這些服務指的是帶寬預留和服務質量”。在“基於ATM的IP”中這樣描述: “實時應用程序所使用的服務質量參數被假設在數據傳輸之前的資源預留協議中設置,或者以某種形式攜帶在數據之中”。“工作正在重點研究服務質量參數怎樣被表達出來和怎樣做出本地的決定”。

處理流程


分類

Classifying即分類,其過程是根據信任策略或者根據分析每個報文的內容來確定將這些報文歸類到以CoS值來表示的各個數據流中,因此分類動作的核心任務是確定輸入報文的CoS值。分類發生在埠接收輸入報文階段,當某個埠關聯了一個表示QoS策略的Policy-map后,分類就在該埠上生效,它對所有從該埠輸入的報文起作用。
● ● 協議
有些協議非常“健談”,只要它們存在就會導致業務延遲,因此根據協議對數據包進行識別和優先順序處理可以降低延遲。應用可以通過它們的EtherType進行識別。譬如,AppleTalk協議採用0x809B,IPX使用0x8137。根據協議進行優先順序處理是控制或阻止少數較老設備所使用的“健談”協議的一種強有力方法。
(2) TCP和UDP埠號碼
許多應用都採用一些TCP或UDP埠進行通信,如HTTP採用TCP埠80。通過檢查IP數據包的埠號碼,智能網路可以確定數據包是由哪類應用產生的,這種方法也稱為第四層交換,因為TCP和UDP都位於OSI模型的第四層。
(3) 源IP地址
許多應用都是通過其源IP地址進行識別的。由於伺服器有時是專門針對單一應用而配置的,如電子郵件伺服器,所以分析數據包的源IP地址可以識別該數據包是由什麼應用產生的。當識別交換機與應用伺服器不直接相連,而且許多不同伺服器的數據流都到達該交換機時,這種方法就非常有用。
(4) 物理埠號碼
與源IP地址類似,物理埠號碼可以指示哪個伺服器正在發送數據。這種方法取決於交換機物理埠和應用伺服器的映射關係。雖然這是最簡單的分類形式,但是它依賴於直接與該交換機連接的伺服器。

策略

Policing 即策略,發生在數據流分類完成後,用於約束被分類的數據流所佔用的傳輸帶寬。Policing動作檢查被歸類的數據流中的每一個報文,如果該報文超出了作用於該數據流的Police所允許的限制帶寬,那麼該報文將會被做特殊處理,它或者要被丟棄,或者要被賦予另外的DSCP 值。
在QoS 處理流程中,Policing 動作是可選的。如果沒有Policing 動作,那麼被分類的數據流中的報文的DSCP 值將不會作任何修改,報文也不會在送往Marking 動作之前被丟棄。

標識

Marking即標識,經過Classifying 和Policing 動作處理之後,為了確保被分類報文對應DSCP的值能夠傳遞給網路上的下一跳設備,需要通過Marking 動作將為報文寫入QoS 信息,可以使用QoS ACLs 改變報文的QoS信息,也可以使用Trust 方式直接保留報文中QoS 信息,例如,選擇Trust DSCP 從而保留IP 報文頭的DSCP 信息。

隊列

Queueing即隊列,負責將數據流中報文送往埠的某個輸出隊列中,送往埠的不同輸出隊列的報文將獲得不同等級和性質的傳輸服務策略。
每一個埠上都擁有8 個輸出隊列,通過設備上配置的DSCP-to-CoS Map 和Cos-to-Queue Map 兩張映射表來將報文的DSCP 值轉化成輸出隊列號,以便確定報文應該被送往的輸出隊列。

調度

Scheduling即調度,為QoS 流程的最後一個環節。當報文被送到埠的不同輸出隊列上之後,設備將採用WRR 或者其它演演算法發送8 個隊列中的報文。
可以通過設置WRR演演算法的權重值來配置各個輸出隊列在輸出報文的時候所佔用的每循環發送報文個數,從而影響傳輸帶寬。或通過設置DRR演演算法的權重值來配置各個輸出隊列在輸出報文的時候所佔用的每循環發送報文位元組數,從而影響傳輸帶寬。

相關技術


鏈路層QoS技術主要針對ATM(Asynchronous Transfer Mode,非同步傳輸模式)、幀中繼、令牌環等鏈路層協議支持QoS。作為一種面向連接的技術,ATM提供對QoS最強有力的支持,而且可以基於每個連接提供特定的QoS保證。幀中繼網路確保連接的CIR(Committed Information Rate,承諾信息速率)最小,即在網路擁塞時,傳輸速度不能小於這個值。令牌環和更新的IEEE802.1p標準具有區分服務的機制。

鏈路效率機制

鏈路效率機制,用於改善鏈路的性能,間接提高網路的QoS,如降低鏈路發包的時延(針對特定業務)、調整有效帶寬。鏈路效率機制有很多種,下面介紹兩種比較典型的鏈路效率機制及其基本原理。
1. 鏈路分片與交叉(Link Fragment & Interleave,LFI)
對於低速鏈路,即使為語音等實時業務報文配置了高優先順序隊列(如RTP優先隊列或LLQ),也不能夠保證其時延與抖動,原因在於介面在發送其他數據報文的瞬間,語音業務報文只能等待,而對於低速介面發送較大的數據報文要花費相當的時間。採用LFI以後,數據報文(非RTP實時隊列和LLQ中的報文)在發送前被分片、逐一發送,而此時如果有語音報文到達則被優先發送,從而保證了語音等實時業務的時延與抖動。LFI主要用於低速鏈路。
鏈路效率機制的工作原理圖如圖11 所示:
如上圖所示,應用LFI技術,在大報文出隊的時候,可以將其分為定製長度的小片報文,這就使RTP優先隊列或LLQ中的報文不必等到大片報文發完后再得到調度,它等候的時間只是其中小片報文的發送時間,這樣就很大程度的降低了低速鏈路因為發送大片報文造成的時延。
2. RTP報文頭壓縮(RTP Header Compression,cRTP)
cRTP主要在低速鏈路上使用,可將40位元組的IP/UDP/RTP頭壓縮到2~4個位元組(不使用校驗和可到2位元組),提高鏈路的利用率。cRTP主要得益於同一會話的語音分組頭和語音分組頭之間的差別往往是不變的,因此只需傳遞增量。
RTP協議用於在IP網路上承載語音、視頻等實時多媒體業務。RTP報文包括數據部分和頭部分,RTP的數據部分相對小,而RTP的報頭部分較大。12位元組的RTP頭,加上20位元組的IP頭和8位元組的UDP頭,就是40位元組的IP/UDP/RTP頭。而RTP典型的負載是20位元組到160位元組。為了避免不必要的帶寬消耗,可以使用cRTP特性對報文頭進行壓縮。cRTP可以將IP/UDP/RTP頭從40位元組壓縮到2~5位元組,對於40位元組的負載,頭壓縮到5位元組,壓縮比為(40+40)/(40+5),約為1.78,可見效果是相當可觀的,可以有效的減少鏈路,尤其是低速鏈路帶寬的消耗。

ATM QoS

ATM是一種大小固定的信元交換和多路復用技術,它是面向連接的,任何用戶數據在兩個或更多ATM連接設備之間傳輸之前,都必須建立虛電路(VC,Virtual Circuit)。ATM有兩種主要的連接方式(或VC):永久虛電路(PVC,Permanent Virtual Circuit)和交換虛電路(SVC,Switched Virtual Circuit)。PVC通常是靜態的,需要手工或外部配置來建立;而SVC是動態,根據需要創建。它們的創建需要在ATM端點和ATM交換機之間運行信令協議。
ATM通過使ATM端系統顯示流量合同來提供QoS保證,流量合同描述了希望的通信流指標。流描述符包括QoS參數,例如峰值信元速率(PCR,Peak Cell Rate)、持續信元速率(SCR,Sustained Cell Rate)以及突發量。
ATM端系統負責確保傳輸的流量符合QoS合同。ATM端系統通過緩衝數據來對流量進行整形,並按約定的QoS參數傳輸通信。ATM交換機控制每個用戶的通信指標,並將其與QoS合同進行比較。對於超過了QoS合同的通信,交換機可以設置不順從通信的CLP位。在網路擁塞時,CLP位被設置的信元被丟棄的可能性更大。

FR QoS

FR(Frame Relay,幀中繼)是一種流行的適用於數據通信的廣域網(WAN)分組技術。它是一種較簡單的協議,消除了X.25網路中鏈路層流控和糾錯功能,這些功能被留給端點站的應用程序處理。這種協議最適合於數據通信,因為它可以傳送偶然的突發。
幀中繼使用VC(Virtual Circuit)運行,VC提供了幀中繼網路上兩個端點之間的邏輯連接,網路可以使用幀中繼VC代替私有的租用線。PVC是網路操作員在網路管理站創建的,而SVC是基於呼叫動態建立的。
幀中繼報頭中的3個位提供了幀中繼網路中的擁塞控制機制,這3個位分別叫做向前顯式擁塞通知(FECN,Forward Explicit Congestion Notification)位、向後顯式擁塞通知(BECN,Backward Explicit Congestion Notification)位和丟棄合格(DE,Discard Eligible)位。可以通過交換機將FECN位置1來告知諸如路由器等目標數據終端設備(DTE,Data Terminal Equipment),在幀從源傳送到目的地的方向發生了擁塞。交換機將BECN位置1則告知目標路由器,在幀從源傳送到目的地的反方向上發生了擁塞。DE位由路由器或其他DTE設備設置,指出被標記的幀沒有傳輸的其他幀那麼重要,它在幀中繼網路中提供了一種基本的優先順序機制,如果發生擁塞時,DE位被設置的幀將在DE位沒有被設置的幀之前被丟棄。
幀中繼流量整形(FRTS,Frame Relay Traffic Shaping)對從幀中繼VC輸出的通信進行整形,使之與配置速率一致,它將超出平均速率的分組放到緩衝區來使突發通信變得平滑。根據配置的排隊機制,當有足夠的可用資源時,這些緩衝的分組出隊並等候被傳輸。排隊演演算法是基於單個VC配置的,它只能針對介面的出站通信進行設置。FRTS可對每個VC的流量進行整形,將其峰值速率整形為承諾信息速率(CIR,Committed Information Rate)或其他定義的值,如超額信息速率(EIR,Excess Information Rate)。自適應模式的FRTS還能夠根據收到的網路BECN擁塞指示符降低幀中繼VC的輸出量,將PVC的輸出流量整形為與網路的可用帶寬一致

MPLS QoS

於MPLS標籤交換路由器(LSR)在標籤交換的轉發過程中並不檢查IP頭,所以MPLS標籤交換路由器利用MPLS標籤中的EXP比特來配置QoS策略。因此,在MPLS網路中可以利用MPLS標籤中的EXP比特來設置MPLS報文的優先順序別,從而實現區分服務。類似對IP報文實施的區分服務一樣,我們可以利用class-map命令將MPLS報文分成一個類或者多個類別,可以利用policy-map命令對已經分好的類進行QoS策略設置。最後利用service-policy命令將已經配置好的QoS策略應用於介面上。
MPLS QoS即在MPLS網路上應用QoS。MPLS QoS並沒有定義專門的QoS結構。在實際的MPLS網路中,MPLS QoS通常使用區分服務(Differentiated Services)結構(又稱分類服務),區分服務結構是為IP QoS而專門定義的。MPLS QoS結構就是在區分服務結構基礎上增加了MPLS對區分服務的支持。
區分服務的基本原理是:在網路邊緣,根據業務的QoS要求將該業務映射到一定的業務類別中,如果是IP報文,可以通過6比特的區分服務代碼點欄位(DSCP)來設置報文的優先順序別,從而唯一的標記該類業務,然後,骨幹網路中的各節點根據該欄位對各種業務採取預先設定的服務策略,保證相應的服務質量。與傳統的IP QoS的不同在於,MPLS QoS是以MPLS標籤中的EXP比特來設置MPLS報文的優先順序別從而實現區分服務。
下面對MPLS QoS的部分專業術語進行介紹:
n
EXP比特指的是MPLS標籤中第20到第22比特,這3位比特稱為實驗(EXP)比特,專用於服務質量(QoS)。EXP欄位在MPLS標籤中的位置,請參見圖-2。與IP傳輸中可以按照IP報文中的IP優先順序或者DSCP比特來分類並標記類似,在MPLS網路中,可以按照MPLS報文的EXP比特來分類並標記。
MPLS標籤結構
每跳行為PHB(Per-hop Behavior)指在轉發報文時,路由器對報文是如何處理的。"每跳"是強調這裡所說的行為只涉及到本路由器轉發的這一跳的行為,而下一個路由器再怎樣處理則與本路由器的處理無關。通常我們把基於IP報文中的IP Precedence/DSCP的轉發行為稱為IP PHB,基於MPLS報文中的EXP的轉發行為稱為MPLS PHB。
由EXP 比特決定PHB 的LSP。在轉發過程中,LSP 決定轉發路徑,但是EXP比特決定在每一跳LSR 上的調度和丟棄優先順序,因此同一條LSP 可以承載8 類不同PHB 的流(3比特的EXP欄位的取值範圍為0-7),通過MPLS頭部的EXP 比特來進行區分。
LER(Label Switching Edge Router)位於MPLS的網路邊緣,負責將進入到MPLS網路的流量壓入對應的MPLS標籤。負責將離開MPLS網路的流量彈出標籤還原為原始的報文。LER通常又稱作Provider Edge(PE)Router。
LSR(Label Switching Router)是MPLS網路的核心設備,它提供標籤交換和標籤分發功能。LSR通常又稱作Provider(P)Router。

IP QoS

對於Ip QoS,QoS是由流量標記、擁塞管理、擁塞避免和流量整形構成,可以對IP報文實施WRR(帶權重的隊列輪轉),DRR,SP等調度方式,實施加權隨機早期檢測(WRED),流量監管,以及流量整形。在為MPLS報文實施QoS的時候可以根據EXP比特來使用相同的特性。

QoS的關鍵指標


QoS的關鍵指標主要包括:可用性、吞吐量、時延、時延變化(包括抖動和漂移)和丟失。下面詳細敘述。

可用性

可用性是當用戶需要時網路即能工作的時間百分比。可用性主要是設備可靠性和網路存活性相結合的結果。對它起作用的還有一些其他因素,包括軟體穩定性以及網路演進或升級時不中斷服務的能力。

吞吐量

吞吐量是在一定時間段內對網上流量(或帶寬)的度量。對IP網而言可以從幀中繼網借用一些概念。根據應用和服務類型,服務水平協議(SLA)可以規定承諾信息速率(CIR)、突發信息速率(BIR)和最大突發信號長度。承諾信息速率是應該予以嚴格保證的,對突發信息速率可以有所限定,以在容納預定長度突發信號的同時容納從話音到視像以及一般數據的各種服務。一般講,吞吐量越大越好。

時延

時延指一項服務從網路入口到出口的平均經過時間。許多服務,特別是話音和視像等實時服務都是高度不能容忍時延的。當時延超過200-250毫秒時,互動式會話是非常麻煩的。為了提供高質量話音和會議電視,網路設備必須能保證低的時延。
產生時延的因素很多,包括分組時延、排隊時延、交換時延和傳播時延。傳播時延是信息通過銅線、光纖或無線鏈路所需的時間,它是光速的函數。在任何系統中,包括同步數字系列(SDH)、非同步傳輸模式(ATM)和彈性分組環路(RPR),傳播時延總是存在的。

時延變化

時延變化是指同一業務流中不同分組所呈現的時延不同。高頻率的時延變化稱作抖動,而低頻率的時延變化稱作漂移。抖動主要是由於業務流中相繼分組的排隊等候時間不同引起的,是對服務質量影響最大的一個問題。某些業務類型,特別是話音和視像等實時業務是極不容忍抖動的。分組到達時間的差異將在話音或視像中造成斷續。所有傳送系統都有抖動,只要抖動落在規定容差之內就不會影響服務質量。利用緩存可以克服過量的抖動,但這將增加時延,造成其他問題。
漂移是任何同步傳輸系統都有的一個問題。在SDH系統中是通過嚴格的全網分級定時來克服漂移的。在非同步系統中,漂移一般不是問題。漂移會造成基群失幀,使服務質量的要求不能滿足。

丟包

不管是比特丟失還是分組丟失,對分組數據業務的影響比對實時業務的影響都大。在通話期間,丟失一個比特或一個分組的信息往往用戶注意不到。在視像廣播期間,這在屏幕上可能造成瞬間的波形干擾,然後視像很快恢復如初。即便是用傳輸控制協議(TCP)傳送數據也能處理丟失,因為傳輸控制協議允許丟失的信息重發。事實上,一種叫做隨機早丟(RED)的擁塞控制機制在故意丟失分組,其目的是在流量達到設定門限時抑制TCP傳輸速率,減少擁塞,同時還使TCP流失去同步,以防止因速率窗口的閉合引起吞吐量擺動。但分組丟失多了,會影響傳輸質量。所以,要保持統計數字,當超過預定門限時就向網路管理人員告警。

QoS應用


QoS是網路與用戶之間以及網路上互相通信的用戶之間關於信息傳輸與共享的質的約定,例如,傳輸延遲允許時間、最小傳輸畫面失真度以及聲像同步等,是用來解決網路延遲和阻塞等問題的一種技術。路由器一般均支持QoS。QoS 是網路的一種安全機制,是用來解決網路延遲和阻塞等問題的一種技術。在正常情況下,如果網路只用於特定的無時間限制的應用系統,並不需要QoS,比如 Web應用,或E-mail設置等。但是對關鍵應用和多媒體應用就十分必要。當網路過載或擁塞時,QoS 能確保重要業務量不受延遲或丟棄,同時保證網路的高效運行。
在Internet等計算機網路上為用戶提供高質量的QoS必須解決以下問題:
1. QoS的分類與定義。對QoS進行分類和定義的目的是使網路可以根據不同類型的QoS進行管理和分配資源。例如,給實時服務分配較大的帶寬和較多的CPU處理時間等,另一方面,對QoS進行分類定義也方便用戶根據不同的應用提出QoS需求。
2. 准入控制和協商。即根據網路中資源的使用情況,允許用戶進入網路進行多媒體信息傳輸並協商其QoS。
3. 資源預約。為了給用戶提供滿意的QoS,必須對端系統、路由器以及傳輸帶寬等相應的資源進行預約,以確保這些資源不被其他應用所強用。
4. 資源調度與管理。對資源進行預約之後,是否能得到這些資源,還依賴於相應的資源調度與管理系統。
Internet僅提供儘力而為(best-effort service)的傳送服務,業務量儘快傳送,沒有明確的時間和可靠性保障。隨著網路多媒體技術的飛速發展,Internet上的多媒體應用層出不窮,如IP電話、視頻會議、視頻點播(VOD)、遠程教育等多媒體實時業務、電子商務在Internet上傳送等。Internet已逐步從單一的數據傳送網向數據、語音、圖像等多媒體信息的綜合傳輸網演化。這些不同的應用需要有不同的Qos(quality of service)要求,Qos通常用帶寬、時延、時延抖動和分組丟失率來衡量。各種應用對服務質量的需求在迅速增長。
顯然,現有的儘力傳送服務已無法滿足各種應用對網路傳輸質量的不同要求,需要Internet提供多種服務質量類型的業務。而儘力而為的服務仍將提供給那些只需要連通性的應用。
服務質量Qos系指用來表示服務性能之屬性的任何組合。為了使其具有價值,這些屬性必須是可提供的、可管理的、可驗證和計費的,而且在使用時它們必須是始終如一的、可預測的、有的屬性甚至是起決定性作用的。為了滿足各種用戶應用的需要,構建對IP最優並具備各種服務質量機制的網路是完全必要的。專線服務、語音、文件傳遞、存儲轉發、互動式視頻和廣播視頻是現有應用的一些例子。

分類標準


優先順序分類根據各種網路所關注的業務類型已經出現多種不同的標準,相關標準可以參考:

RFC 791

根據各IP應用的特點,將業務分為Network Control、Internetwork Control、CRITIC/ECP、Flash Override、Flash、Immediate、Priority、Routine共8類優先順序。其中,Routine優先順序最低,Network Control優先順序最高。

RFC 1349

將業務按照TOS的定義分為16類優先順序,TOS使用4個bit位分別表示:minimize delay、maximize throughput、minimize monetary cost、maximize reliability,並建議了各IP應用應該如何取TOS值,例如,FTP CONTROL報文建議其TOS取值為minimize delay。

RFC 1490

將業務按照Frame Relay Discard Eligibility bit的定義分為2類丟棄優先順序。

RFC 1483

Multiprotocol Encapsulation over ATM Adaptation Layer 5
將業務按照ATM Cell Loss Priority bit的定義分為2類丟棄優先順序。

RFC 2474

Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Header
DiffServ網路定義了四類PHB:EF(Expedited Forwarding)PHB適用於低時延、低丟失、低抖動、確保帶寬的優先業務;AF(Assured Forwarding)PHB分為四類,每個AF類又分為三個丟棄優先順序,可以對相應業務進行等級細分,QoS性能參數低於EF類型;CS(class selector)PHB是從IP TOS欄位演變而來,共8類;BE PHB是CS中特殊一類,沒有任何保證,現有IP網路流量也都默認為此類。

IEEE 802.5

Token ring access method and Physical Layer specifications
令牌環網的優先順序,可以將業務根據Access Priority的定義為8類優先順序。
IEEE 802.1p,Class of Service
乙太網優先順序,可以將業務根據802.1P Priority的定義分為8類優先順序,0類至7類優先順序相應遞增,0類是BE業務,儘力傳輸)。

QoS配置


預設QOS設置

用戶在進行QoS配置之前,需要清楚和QoS有關的幾點信息,如下:
一個介面最多關聯1個Policy-map
一個Policy-map可以擁有多個Class-map
一個Class-map最多關聯1個ACL,該ACL的所有ACE必須具有相同過濾域模板
一個介面上關聯的ACE的個數服從“配置安全ACL”章節的限制
預設情況下,QoS 功能是關閉的,即設備對所有的報文同等處理。但當您將一個Policy Map 關聯到某一個介面上,並設置了介面的信任模式時,該介面的QoS 功能即被打開。要關閉該介面的QoS 功能,您可以通過解除該介面的Policy Map 設置,並將介面的信任模式設為Off 即可。以下為QOS的預設配置:
預設CoS值
隊列個數8
隊列輪轉演演算法WRR
QueueWeight1:1:1:1:1:1:1:1
WRR Weight Range1:15
DRR Weight Range1:15
信任模式No Trust
Cos值到隊列的默認映射表
CoS值1234567
隊列12345678
CoS to DSCP默認映射表
CoS值1234567
DSCP值8162432404856
IP-Precedence to DSCP默認映射表
IP-Precedence1234567
DSCP8162432404856
DSCP to CoS的默認映射表
DSCP8162432404856
CoS1234567

信任模式

預設情況下,介面的Qos信任模式是不信任
命令作用
SW# configure terminal進入配置模式
SW(config)# interfaceinterface進入介面配置模式
SW(config-if)# mls qos trust {cos | ip-precedence | dscp}
配置介面的Qos 信任模式
cos,dscp或 ip-precedence
SW(config-if)# no mls qos trust恢復介面默認Qos 信任模式
以下命令將埠interface GigabitEthernet 0/4信任模式設置為DSCP:
SW(config)# interfacegigabitEthernet 0/4
SW(config-if)# mls qos trust dscp
SW(config-if)# end
SW# show mls qosinterface g0/4
Interface: GigabitEthernet 0/4
Attached input policy-map:
Default trust: trust dscp
Default COS: 0

預設CoS值

您可以通過下面的設置步驟來配置每一個介面的預設CoS值
預設情況下,介面的預設CoS值為0
命令作用
R# configure terminal進入配置模式
R(config)# interfaceinterface進入介面配置模式
R(config-if)# mls qos cos default-cos配置介面的預設CoS值, default-cos為要設置的預設CoS值, 取值範圍為0~7
R(config-if)# no mls qos cos默認的預設CoS值
下面的例子將介面Interface g0/4預設CoS值設置為6
R# configure terminal
R(config)#interfaceg 0/4
R(config-if)# mls qos cos6
R(config-if)# end
R# show mls qosinterface g 0/4
Interface: GigabitEthernet 0/4
Attached input policy-map:
Default trust: trust dscp
Default COS: 6

埠組

在介面配置模式下,請按如下步驟將埠加入邏輯埠組:
命令作用
R(config-if)#
[no] virtual-groupvirtual-group-number
將該介面加入一個邏輯埠組或退出一個邏輯埠組。virtual-group-number表示邏輯埠組成員埠組的編號,即邏輯埠組號。
在介面配置模式下使用no virtual-group virtual-group-number命令將一個物理埠退出邏輯埠組。
下面的例子是將乙太網介面0/1配置成邏輯埠組 5的成員:
R# configure terminal
R(config)# interface gigabitEthernet0/1
R(config-if-range)# virtual-group5
R(config-if-range)# end
配置Class Maps
您可以通過下面的設置步驟來創建並配置Class Maps
命令作用
R# configure terminal進入配置模式
R(config)# ip access-list extended {id | name}
R(config)# ip access-list standard {id | name}
R(config)# mac access-list extended {id | name}
R(config)# expert access-list extended {id |name}
R(config)# ipv6 access-list extendedname
R(config)# access-listid […]
創建ACL
R(config)# [no] class-map class-map-name
創建並進入class map配置模式,class-map-name是要創建的class map的名字
no選項 刪除一個已經存在的class map
R(config-cmap)# [no] match access-group {acl-num | acl-name }
設置匹配ACL, acl-name 為已經創建的ACL 名字,
acl-num為已經創建的ACL id,no選項刪除該匹配
R(config-cmap)# [no] match ip dscp
dscp-value1 [dscp-value2 [dscp-valueN] ]
設置要匹配的報文的ip dscp值,dscp-valueN為要匹配的DSCP值,一次最多可以匹配8個不同的值。
R(config-cmap)# [no] match ip
precedence
ip-pre-value1 [ip-pre-value2 [ip-pre-valueN] ]
設置要匹配的報文的ip precedence值,ip-pre-valueN為要匹配的EXP值,一次最多可以匹配8個不同的值。
例如,以下設置步驟創建了一個名為Class1的Class-map,它關聯一個ACL:acl_1。這個Class-map將分類所有埠號為80的TCP報文
R(config)# ip access-list extendedacl_1
R(config-ext-nacl)# permit tcp any anyeq 80
R(config-ext-nacl)# exit
R(config)# class-mapclass1
R(config-cmap)# match access-groupacl_1
R(config-cmap)# end
配置Policy Maps
您可以通過下面的設置步驟來創建並配置Policy Maps
命令作用
R# configure terminal進入配置模式
R(config)# [no] policy-map policy-map-name
創建並進入policymap配置模式,policy-map-name是要創建的policymap的名字
no選項 刪除一個已經存在的policy map
R(config-pmap)# [no] class class-map-name
創建並進入數據分類配置模式,class-map-name 是已經創建的class map名字
no選項 刪除該數據分類
R(config-pmap-c)# [no] set {ip dscpnew-dscp | cosnew-cos [none-tos]}
為該數據流中的IP報文設置新的 ip dscp值或者設置新的cos值;對於非IP報文,設置新的ip dscp不起作用;
new-dscp 是要設置的新DSCP值,取值範圍依產品不同而不同;
new-cos 是要設置的新CoS值,取值範圍為0-7;
none-tos 是代表設置新的CoS值,同時不修改報文的DSCP值,僅S8600,S12000系列設備支持none-tos選項
R(config-pmap-c)# policerate-bpsburst-byte [exceed-action {drop | dscp dscp-value | cos cos-value [none-tos]}]
限制該數據流的帶寬和為帶寬超限部分指定處理動作,rate-bps是每秒鐘帶寬限制量(kbps),burst-byte猝發流量限制值(Kbyte),drop來丟棄帶寬超限部分的報文,dscp dscp-value改寫帶寬超限部分報文的DSCP值,dscp-value取值範圍依產品不同而不同,cos cos-value改寫帶寬超限部分的報文的CoS值,cos-vlaue取值範圍為0-7,none-tos選項代表改寫報文的CoS值時,不修改報文的DSCP值,僅S8600,S12000系列設備支持改寫帶寬超限部分的報文的CoS值,且僅作用於輸入方向;
對於S2900系列,rate-bps的有效範圍是1-10000000;
burst-byte的有效範圍是4-2097152
R(config-pmap-c)# no police取消限制該數據流的帶寬和為帶寬超限部分指定處理動作
例如,以下的設置步驟創建了一個名為Policy1的Policy-map,並將該Policy-map關聯介面Gigabitethernet 1/1
R(config)# policy-mappolicy1
R(config-pmap)# classclass1
R(config-pmap-c)# set ip dscp48
R(config-pmap-c)# exit
R(config-pmap)# exit
R(config)# interfacegigabitethernet1/1
R(config-if)# switchport mode trunk
R(config-if)# mls qos trust cos
R(config-if)# service-policy inputpolicy1
應用Policy Maps
可以通過下面的設置步驟將Policy Maps應用到埠上:
命令作用
R# configure terminal進入配置模式
R(config)# interfaceinterface進入介面配置模式
R(config-if)# [no] service-policy {input | output} policy-map-name將創建的Policy Map應用到介面上;policy-map-name是已經創建的policy map的名字,input 為輸入,output 為輸出
應用Policy Maps
可以通過下面的設置步驟將Policy Maps應用到邏輯埠組上
命令作用
configure terminal進入配置模式
virtual-group-number進入邏輯埠組配置模式
[no] service-policy {input | output}
policy-map-name
將創建的Policy Map應用到邏輯埠組上;policy-map-name是已經創建的policy map的名字,input 為輸入限速,output 為輸出限速

調度演演算法

您可以為埠的輸出隊列調度演演算法:WRR,SP,RR和DRR,預設情況下,輸出隊列演演算法為WRR(帶權重的隊列輪轉)
您可以通過以下步驟對埠優先順序隊列調度方式進行設置。
命令作用
R# configure terminal進入配置模式
R(config)# mls qos scheduler {sp | rr | wrr | drr | wfq}埠優先順序隊列調度方式,sp為絕對優先順序調度,rr為 輪轉調度,wrr為帶幀數量權重輪轉調度,drr為帶幀長度權重輪轉調度
R(config)#no mls qos scheduler恢復為預設wrr調度
例如,以下的設置步驟將埠的輸出輪轉演演算法設置成SP:
R# configure terminal
R(config)# mls qos scheduler sp
R(config)# end
R# show mls qos scheduler
Global Multi-Layer Switching scheduling
Strict Priority

輸出輪轉權重

可以通過以下步驟設置埠的輸出輪轉權重
命令作用
R#configure terminal進入配置模式
R(config)# {wrr-queue | drr-queue}bandwidth weight1...weightnweight1...weightn 為指定的輸出隊列的權重值,個數及取值範圍見預設QOS設置
R(config)#no {wrr-queue | drr-queue} bandwidthno 選項恢復權重的預設值
下面的例子將wrr調度權重設置為1:2:3:4:5:6:7:8
R# configure terminal
R(config)# wrr-queue bandwidth1 2 3 4 5 6 7 8
R(config)#end
R# show mls qos queueing
Cos-queue map:
cos qid
--- ---
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
wrr bandwidth weights:
qid weights
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
R(config)#

Cos-Map

您可以通過設置Cos-Map來選擇報文輸出時進入哪個輸出隊列,Cos-Map的預設設置見預設QOS配置
命令作用
R# configure terminal進入配置模式
R(config)#priority-queueCos-Mapqidcos0 [cos1 [cos2 [cos3 [cos4 [cos5 [cos6 [cos7]]]]]]]qid 為隊列id,cos0..cos7 為指定和這個隊列關聯的CoS 值。
R(config)# no priority-queue cos-mapCos-Map恢復成預設值
下面是設置CoS Map的例子
R# configure terminal
R(config)#priority-queue Cos-Map 1 2 4 6 7 5
R(config)# end
R#show mls qos queueing
Cos-queue map:
cos qid
--- ---
0 1
1 2
2 1
3 4
4 1
5 1
6 1
7 1
wrr bandwidth weights:
qid weights
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
CoS-to-DSCP Map
CoS-to-DSCP Map 用於將報文的CoS 值映射到內部DSCP 值,您可以通過以下步驟對CoS-to-DSCP Map 進行設置 ,CoS-to-DSCP Map的預設設置見預設QOS配置
命令作用
R# configure terminal進入配置模式
R(config)# mls qos map cos-dscp dscp1...dscp8修改CoS-to-DSCP Map 的設置,dscp1...dscp8 是對應於CoS 值0~7 的DSCP 值,DSCP 取值範圍依產品不同而不同
R(config)# no mls qos map cos-dscp恢復預設值
例如如下配置:
R#configure terminal
R(config)# mls qos map cos-dscp56 48 46 40 34 32 26 24
R(config)# end
R# show mls qos maps cos-dscp
cos dscp
--- ----
0 56
1 48
2 46
3 40
4 34
5 32
6 26
7 24
配置DSCP-to-CoS Map
DSCP-to-CoS 用於將報文的內部DSCP 值映射到CoS 值,以便為報文選擇輸出隊列
DSCP-to-CoS Map的預設設置見預設QOS配置, 您可以通過以下步驟對DSCP-to-CoS Map 進行設置:
命令作用
R# configure terminal進入配置模式
R(config)# mls qos map dscp-cosdscp-list to cos
設置DSCP to COS Map,
dscp-list :要設置的DSCP 值的列表,DSCP 值之間用空格分隔,取值範圍依產品不同而不同,cos :對應DSCP 值的CoS 值,取值範圍為:0~7;
R(config)#no mls qos map dscp-cos設置為默認值
例如,以下的設置步驟將DSCP值0、32、56設置對應成6:
R# configure terminal
R(config)#mls qos map dscp-cos0 32 56 to 6
R(config)# show mls qos maps dscp-cos
dscp cos dscp cos dscp cos dscp cos
0 6 1 0 2 0 3 0
4 0 5 0 6 0 7 0
8 1 9 1 10 1 11 1
12 1 13 1 14 1 15 1
16 2 17 2 18 2 19 2
20 2 21 2 22 2 23 2
24 3 25 3 26 3 27 3
28 3 29 3 30 3 31 3
32 6 33 4 34 4 35 4
36 4 37 4 38 4 39 4
40 5 41 5 42 5 43 5
44 5 45 5 46 5 47 5
48 6 49 6 50 6 51 6
52 6 53 6 54 6 55 6
56 6 57 7 58 7 59 7
60 7 61 7 62 7 63 7
配置埠速率限制
可以通過以下步驟對埠速率限制進行設置
命令作用
R# configure terminal進入配置模式
R(config)# interfaceinterface進入介面配置模式
R(config-if)# rate-limit {input | output }
bps burst-size
埠速率限制,input 為輸入限速,output 為輸出限速,bps 是每秒鐘的帶寬限制量(kbps),
burst-size猝發流量限制值(Kbyte)
R(config-if)# no rate-limit取消埠限速
R# configure terminal
R(config)# interfacegigabitEthernet 0/4
R(config-if)# rate-limit input100 100
R(config-if)# end
配置IPpre to DSCP Map
IPpre-to-Dscp用於將報文的IPpre值映射到內部DSCP值, IPpre-to-DSCP Map的預設設置見預設QOS配置,您可以通過以下步驟對IPpre-to-Dscp Map進行設置:
命令作用
R# configure terminal進入配置模式
R(config)# mls qos map ip-prec-dscp dscp1...dscp8修改IP-Precedence-to-Dscp Map的設置,dscp1...dscp8 是對應於IP-Precedence值0~7 的DSCP 值
R(config)# no mls qos map ip-prec-dscp恢復預設配置。
例如如下配置:
R# configure terminal
R(config)# mls qos map ip-precedence-dscp56 48 46 40 34 32 26 24
R(config)# end
R# show mls qos maps ip-prec-dscp
ip-precedence dscp
0 56
1 48
2 46
3 40
4 34
5 32
6 26
7 24
配置交換機buffer
可以配置交換機buffer管理處於802.3x flow-control狀態或處於QoS狀態。
命令作用
R# configure terminal進入配置模式
R(config)# buffer management{ fc | qos }
配置交換機的buffer管理模式
FC:802.3xflow-control
QoS:QoS模式
R(config)# no buffer management取消交換機的Buffer管理
例如如下配置交換機處於qos模式:
R# configure terminal
R(config)#buffer management qos
R(config)# end
R# show buffer management
%current port's buffer management mode: qos

QoS顯示命令


顯示class-map
您可以通過以下步驟顯示class-map內容
命令作用
show class-map [class-name]顯示class map實體的內容
例如:
R# show class-map
Class Map cc
Match access-group 1
R#
顯示policy-map
您可以通過以下步驟顯示Policy-map內容
命令作用
show policy-map [policy-name [classclass-name]]
顯示QoS policy map,
policy-name為選定的policy map名,指定class class-name時顯示相應policy map綁定的class map。
例如:
R# show policy-map
Policy Map pp
Class cc
R#
顯示mls qos interface
您可以通過以下步驟顯示所有埠qos信息
命令作用
show mls qos interface [interface | policers]
顯示介面的QoS信息,
Policers選項顯示介面應用的Policy map
例如:
R# show mls qos interfacegigabitEthernet 0/4
Interface: GigabitEthernet 0/4
Attached input policy-map: pp
Default trust: trust dscp
Default COS: 6
R# show mls qos interface policers
Interface: GigabitEthernet 0/4
Attached input policy-map: pp
R#
顯示mls qos virtual-group
您可以通過以下步驟顯示所有埠qos信息
命令作用
show mls qos virtual-group [virtual-group-number | policers]
顯示邏輯埠組關聯的police信息
Policers選項顯示邏輯埠組關聯的police
例如:
R# show mls qos virtual-group 1
Virtual-group: 1
Attached input policy-map: pp
R#show mls qos virtual-group policers
Virtual-group: 1
Attached input policy-map: pp
R#
顯示mls qos queueing
您可以通過以下步驟顯示qos隊列信息
命令作用
show mls qos queueing
顯示QoS隊列信息,
CoS-to-queue map,wrr weight及drr weight;
舉例如下:
R# show mls qos queueing
Cos-queue map:
cos qid
--- ---
0 1
1 2
2 1
3 4
4 1
5 1
6 1
7 1
wrr bandwidth weights:
qid weights
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
顯示mls qos scheduler
您可以通過以下步驟顯示QOS調度方式
命令作用
show mls qos scheduler顯示埠優先順序隊列調度方式
舉例如下:
R# show mls qos scheduler
Global Multi-Layer Switching scheduling
Strict Priority
R#
顯示mls qos maps
您可以通過以下步驟顯示mls qos maps對應表
命令作用
show mls qos maps [cos-dscp | dscp-cos | ip-prec-dscp]
顯示cos-dscp maps
dscp-cos maps
ip-prec-dscp maps
舉例如下:
R# show mls qos maps cos-dscp
cos dscp
--- ----
0 0
1 8
2 16
3 24
4 32
5 40
6 48
7 56
R# show mls qos maps dscp-cos
dscp cos dscp cos dscp cos dscp cos
0 6 1 0 2 0 3 0
4 0 5 0 6 0 7 0
8 1 9 1 10 1 11 1
12 1 13 1 14 1 15 1
16 2 17 2 18 2 19 2
20 2 21 2 22 2 23 2
24 3 25 3 26 3 27 3
28 3 29 3 30 3 31 3
32 6 33 4 34 4 35 4
36 4 37 4 38 4 39 4
40 5 41 5 42 5 43 5
44 5 45 5 46 5 47 5
48 6 49 6 50 6 51 6
52 6 53 6 54 6 55 6
56 6 57 7 58 7 59 7
60 7 61 7 62 7 63 7
R# show mls qos maps ip-prec-dscp
ip-precedence dscp
0 56
1 48
2 46
3 40
4 34
5 32
6 26
7 24
顯示mls qos rate-limit
您可以通過以下步驟顯示埠速率限制信息
命令作用
show mls qos rate-limit [interfaceinterface]顯示[埠] 速率限制
舉例:
R# show mls qos rate-limit
Interface: GigabitEthernet 0/4
rate limit input bps = 100 burst = 100
顯示show policy-map interface
您可以通過以下步驟顯示埠policymap的配置
命令作用
show policy-map interfaceinterface顯示[埠] policymap配置
舉例:
R# show policy-mapinterface f0/1
FastEthernet 0/1 input (tc policy): pp
Class cc
set ip dscp 22
mark count 0
顯示交換機buffer管理模式
您可以通過以下步驟顯示交換機buffer管理模式
命令作用
show buffer management顯示交換機buffer管理模式
舉例:
R# show buffer management
%current port's buffer management mode: qos
顯示virtual-group
在特權模式下,請按如下步驟顯示virtual-group設置。
命令作用
show virtual-group [virtual-group-number | summary]顯示邏輯埠組信息。
R#show virtual-group 1
virtual-group member
1 Gi0/2 Gi0/3 Gi0/4 Gi0/5
Gi0/6 Gi0/7 Gi0/8 Gi0/9 Gi0/10
R#show virtual-group summary
virtual-group member
1 Gi0/1 Gi0/2 Gi0/3 Gi0/4
Gi0/5 Gi0/6 Gi0/7 Gi0/8 Gi0/9
2 Gi0/11 Gi0/12 Gi0/13 Gi0/14
Gi0/15 Gi0/16 Gi0/17 Gi0/18 Gi0/19