馬素剛
(西安郵電大學 計算機學院,陜西 西安 710121)
隨著人們對網絡應用的需求不斷提高,除了傳統的WWW、E-mail、FTP等數據應用外,Internet還必須能夠承載一些非傳統數據業務,如遠程教學、可視電話、視頻會議等。不同的應用,要求網絡提供的服務質量 (Quality of Service,QoS)也不同。例如文件傳輸服務要求網絡提供準確的傳輸,任何一位數據都不允許被錯誤遞交,但是對網絡延遲并不敏感,而視頻會議有非常嚴格的延遲要求,如果在傳輸過程中出現少量錯誤卻可以接受。因此,針對網絡傳輸中的不同應用,應該為它們提供相應級別的服務質量保證。
即使在整個多層交換網絡中都有足夠的帶寬,多種網絡設計屬性也可能影響網絡性能,即存在QoS問題[1]。不同的服務質量通常體現在帶寬、延遲、延遲抖動、丟包率等方面[2]。
網絡帶寬用于衡量網絡的吞吐能力,如果網絡上存在多個數據流,它們將互相競爭帶寬。網絡帶寬取決于物理鏈路的速率,但通過QoS技術可以提高網絡帶寬的利用效率。也就是說,QoS并不能增加網絡的帶寬資源,只是根據業務的需求和網絡管理配置來管理帶寬。
網絡延遲用于衡量數據包在網絡中傳輸時間的長短,一些實時應用(如視頻會議)比較關心延遲的大小。
抖動用于衡量網絡延時的穩定性。同一個數據流的不同數據包,在網絡中經歷的延遲可能不同,從而產生抖動。抖動對實時應用的影響較大,會造成失真。
網絡丟包率用于衡量網絡的可靠性。網絡發生擁塞時,由于緩沖隊列被占滿,必然導致部分數據包被丟棄。
傳統的IP網絡沒有使用QoS機制,提供 “盡力而為”(Best-Effort)服務。所有的報文都被無區別地同等對待,每個路由器對所有的報文均采用先進先出 (First In First Out,FIFO)的策略進行處理,盡最大努力將報文送到目的地,但對報文傳送的可靠性、穩定性等不提供任何保證。采用QoS技術能夠緩解延遲、抖動、數據包丟失等問題,其實現模型主要有 綜 合 服 務 (Integrated Service,IntServ)和 區 分 服 務(Differentiated Service,DiffServ)[3]兩種。
IntServ模型通過信令向網絡申請特定的QoS服務,網絡在流量參數描述的范圍內,預留資源以承諾滿足該請求。IntServ模型采用基于流的策略,傳輸路徑上的所有網絡元素(交換機、路由器等)都要顯式地為流提供預定的服務。IntServ模型使用RSVP(Resource reSerVation Protocol,資源預留協議)作為網絡中預留資源的控制協議。RSVP是一種信號機制,并不用于傳遞業務數據,可以實現基于每條流的資源預留。
在通過RSVP建立端到端通信的過程中,每個節點都要保存每個報文流的狀態信息,在某一時間會占用非常大的系統資源。盡管RSVP的控制粒度很細,但可擴展性很差,因此IntServ模型并沒有在流量匯集的Internet核心網上得以廣泛實施。
與IntServ模型不同,DiffServ模型不需要信令,根據每個報文指定的QoS來提供特定的服務。在應用程序發出報文之前,不需要通知網絡為其預留資源,網絡也不需要為每個流維護狀態。DiffServ模型是一種基于類的QoS技術,它在網絡邊界將數據流按QoS要求進行簡單分類,并根據業務的不同服務等級約定,有差別地進行流量控制和轉發,以解決擁塞問題。區分服務還是基于逐跳行為(Per-Hop Behavior,PHB)的服務質量模型,它不是在轉發路徑上實施統一的資源預留,而是在每一跳上對不同標記的包實施不同的行為。
DiffServ模型的服務粒度不再是每個流,從而大大地緩解了可擴展性問題。另外,DiffServ模型可以將其大部分實現復雜度轉移到網絡的邊緣上,而在網絡核心只需實現最簡單的服務保證機制,因而降低了其實現復雜度。
DiffServ模型由多個組件組成,具有較復雜的體系結構,如圖1所示。在輸入端,需要對入站數據包進行分類、流量控制以及標記操作,在輸出端,需要確定標記后的數據包加入哪個傳輸隊列,以及如何調度這些隊列。

圖1 DiffServ模型體系結構Fig.1 Architecture of DiffServ model
1)分類。網絡設備可以使用第二層幀中CoS(Class of Service,服務類別)位,也可以使用第三層數據包中的IP優先級/DSCP(Differentiated Services Code Point,差異化服務編碼點)位來進行分類。在第二層,使用802.1Q或ISL(Inter-Switch Link,交換機間鏈路)幀中的 3位(CoS位)來分類,可以表示8個不同的服務級別,即0~7。在第三層,將IP報頭中的ToS(Type of Service,服務類型)字段的6個最高有效位作為DSCP字段,可以表示的服務級別范圍為0~63。CoS與DSCP值之間的映射關系分別如表1、表2所示。

表1 CoS到DSCP的映射Tab.1 The CoS to DSCP mapping

表2 DSCP到CoS的映射Tab.2 The DSCP to CoS mapping
2)流量控制。流量控制用于約束被分類的數據流所占用的傳輸帶寬,從而控制通信流通過交換機傳輸的速度。
3)標記。修改入站幀的CoS、IP優先級或DSCP值,確保被分類后的報文對應的標記值能夠傳遞給網絡上的下一跳設備。
4)入隊列。負責將數據流中的報文送往端口的某個輸出隊列中,進入不同輸出隊列的報文將獲得不同等級和性質的傳輸服務策略。
5)隊列調度。確定以什么樣的方式來處理被送到端口各個輸出隊列中的報文。每一種隊列調度技術都用來解決特定的問題,會對網絡性能產生特定的影響。常見的隊列調度算法包括 FIFO、PQ (Priority Queue, 優先級隊列)、CQ(Custom Queue,自定義隊列)、WFQ(Weighted Fair Queue,加權公平隊列)、WRR(Weighted Round Robin,加權輪詢)等[4]。
WRR將每個端口分為多個輸出隊列,在隊列之間進行輪流調度,保證每個隊列都能得到一定的服務時間。以Catalyst 3550交換機[5]為例,對一個100 Mb/s的端口使用了4個出站隊列,如果配置隊列1~4的加權值分別為50、30、10、10,這樣可以保證最低優先級隊列也能獲得至少10 Mb/s的帶寬。雖然多個隊列的調度是輪詢進行,但對每個隊列不是固定地分配服務時間片。如果某個隊列為空,那么馬上換到下一個隊列調度,這樣帶寬資源可以得到充分利用。
使用 Catalyst 3550 交換機 1 臺、PC 機 4 臺(S1、S2、S3、PC)搭建如圖2所示網絡。正確配置PC機的網絡參數,確保4臺PC處于同一個局域網中。
1)啟用 QoS
S3550(config)#mls qos!----在交換機 S3550 上全局啟用QoS

圖2 網絡連接示意圖Fig.2 Structure of the network
2)配置訪問控制列表
S3550 (config)#access-list 100 permit ip any any!----配置訪問控制列表(ACL)
3)配置分類映射表
S3550 (config)#class-map match-all ANYIP1!----配置分類映射表ANYIP1
S3550 (config-cmap)#match access-group 100!----匹配編號為100的ACL
S3550 (config)#class-map match-all ANYIP2!----配置分類映射表ANYIP2
S3550 (config-cmap)#match access-group 100
4)配置策略映射表
S3550 (config)#policy-map POLICY1!----配置策略映射表POLICY1
S3550 (config-pmap)#class ANYIP1!----匹配分類映射表ANYIP1
S3550 (config-pmap-c)#set ip dscp 32!----設置 DSCP值為32
S3550 (config)#policy-map POLICY2!----配置策略映射表POLICY2
S3550 (config-pmap)#class ANYIP2!----匹配分類映射表ANYIP2
S3550 (config-pmap-c)#set ip dscp 40!----設置 DSCP值為40
5)在端口上應用策略
S3550 (config)#interface f0/2!----入口 f0/2
S3550 (config-if)#service-policy input POLICY1!----在端口f0/2上應用策略POLICY1
S3550 (config)#interface f0/3!----入口 f0/3
S3550 (config-if)#service-policy input POLICY1!----在端口f0/3上應用策略POLICY1
S3550 (config)#interface f0/4!----入口 f0/4
S3550 (config-if)#service-policy input POLICY2!----在端口f0/4上應用策略POLICY2
6)在端口上配置CoS映射關系
S3550 (config)#interface f0/1!----出口 f0/1
S3550 (config-if)#wrr-queue cos-map 1 0 1!----隊列1
S3550 (config-if)#wrr-queue cos-map 2 2 3!----隊列2
S3550 (config-if)#wrr-queue cos-map 3 4!----隊列 3
S3550 (config-if)#wrr-queue cos-map 4 5 6 7!----隊列4
7)配置WRR權重
S3550 (config)#interface f0/1!----出口 f0/1
S3550 (config-if)#wrr-queue bandwidth 5 5 5 85!----配置4個隊列的WRR權重[6]
分別把 S1、S2、S3配置為 FTP服務器[7],在客戶端 PC上用FTP命令同時從S1、S2、S3上下載文件。為了保證從S1、S2、S3下載同樣大小的文件所花費的時間具有可比性,3臺FTP服務器應該采用相同的實現方法。實驗中使用的文件大小約為1.18 GB(準確大小為1269432320 B),4臺PC的配置均為:Intel Pentium CPU G630 2.70GHz (雙核)、2GB 內存、500GB硬盤、Windows XP(SP3)系統。記錄連續5次文件傳輸所用的時間及傳輸速率,如表3所示。

表3 未使用QoS策略Tab.3 Not applying the QoS policy
在Catalyst 3550交換機上,按照上述步驟啟用并配置QoS,從3臺FTP服務器上同時下載文件,記錄連續5次傳輸所用的時間與速率,如表4所示。可以看出,由于在端口f0/2、f0/3上應用了策略POLICY1,而在端口f0/4上應用了策略POLICY2,故從S3上下載同樣大小的文件所用時間最短,速率最大。

表4 在端口f0/4上應用策略POLICY2Tab.4 Applying the policy (POLICY2)in the interface f0/4
在Catalyst 3550交換機上,啟用并配置QoS,此時在端口f0/2、f0/4上應用策略POLICY1,而在端口f0/3上應用策略POLICY2,重新測試下載時間,如表5所示,從S2上下載同樣大小的文件所用時間最短,速率最大。
在Catalyst 3 550交換機上,啟用并配置QoS,此時在端口f0/3、f0/4上應用策略POLICY1,而在端口f0/2上應用策略POLICY2,重新測試下載時間,如表6所示,從S1上下載同樣大小的文件所用時間最短,速率最大。

表5 在端口f0/3上應用策略POLICY2Tab.5 Applying the policy (POLICY2)in the interface f0/3

表6 在端口f0/2上應用策略POLICY2Tab.6 Applying the policy (POLICY2)in the interface f0/2
未使用QoS策略時,從3臺FTP服務器下載文件所用的時間總體上相差不多。在交換機上啟用QoS,并把某個端口(如f0/4)優先級設置為最高時,則從該端口連接的FTP服務器(S3)上下載文件最快。測試結果表明,通過合理配置QoS機制,能夠為不同類別的數據流提供不同的傳輸優先級,從而提供不用級別的服務質量。文中設計的實驗,能夠幫助初學者更深刻地理解QoS的工作過程,從而更好地掌握計算機網絡相關原理。搭建的網絡拓撲及配置過程比較簡單,但是對于QoS技術在網絡中的部署具有一定的現實指導意義。
[1]劉大偉,張芳,譯.(美)Richard Froom,Balaji Sivasubramanian,Erum Frahim,著.CCNP自學指南:組建Cisco多層交換網絡(BCMSN)[M].3版.北京:人民郵電出版社,2006.
[2]張國清.QoS在IOS中的實現與應用[M].2版.北京:電子工業出版社,2012.
[3](美)Michael Flannagan,Richard Froom,Kevin Turek,著.Cisco Catalyst QoS—園區網中的服務質量 [M].尹敏,張衛,譯.北京:人民郵電出版社,2004.
[4]梅創社.平面網絡中QOS多播路由算法研究與設計[J].電子設計工程,2012,20(6):71-73.
[5](美)David Hucaby,Steve McQuerry, 著.Cisco現場手冊:Catalyst交換機配置[M].張輝,譯.北京:人民郵電出版社,2004.
[6]蔣崢崢,王丹丹,陳曉紅.基于DiffServ技術的園區網QoS控制與實現[J].科技信息,2013(22):16-17.
[7]何波,崔貫勛.計算機網絡實驗教程[M].北京:清華大學出版社,2013.