朱杰
(南京中興新軟件有限責(zé)任公司 江蘇省南京市 210012)
QoS 是對(duì)網(wǎng)絡(luò)進(jìn)行差異化管理的一種技術(shù),針對(duì)不同的業(yè)務(wù)需求為其提供端到端的服務(wù)質(zhì)量保證。有效的利用網(wǎng)絡(luò)資源,允許不同流量不平等的競(jìng)爭(zhēng)網(wǎng)絡(luò)資源。特別在網(wǎng)絡(luò)擁塞的時(shí)候,可以?xún)?yōu)先保證高優(yōu)先級(jí)報(bào)文得到優(yōu)先調(diào)度,進(jìn)而保證高優(yōu)先級(jí)流量的服務(wù)質(zhì)量。
QoS 主要有三種服務(wù)類(lèi)型:盡力而為服務(wù)類(lèi)型、綜合服務(wù)類(lèi)型以及差分服務(wù)類(lèi)型。本文所提到的技術(shù)是基于差分服務(wù)類(lèi)型的。QoS 技術(shù)包括流量分類(lèi)、流量監(jiān)管、流量整形、擁塞管理、擁塞避免等。
流量分類(lèi)是將數(shù)據(jù)報(bào)文劃分為多個(gè)優(yōu)先級(jí)或多個(gè)服務(wù)類(lèi),是進(jìn)行服務(wù)的前提,通常作用的接口入方向??梢愿鶕?jù)報(bào)文輸入接口、源IP 地址、目的IP 地址、MAC 地址、IP協(xié)議或應(yīng)用程序的端口號(hào)進(jìn)行分類(lèi)。
流量監(jiān)管是指監(jiān)管進(jìn)入到某一網(wǎng)絡(luò)或系統(tǒng)中的各種流量。對(duì)特定類(lèi)型的流量設(shè)置一個(gè)門(mén)限,當(dāng)超出該門(mén)限的時(shí)候,則會(huì)對(duì)這種類(lèi)型的流量進(jìn)行懲罰,懲罰的措施包括降低報(bào)文優(yōu)先級(jí)、丟棄改報(bào)文等。其達(dá)到的效果是,防止該流量因過(guò)大,導(dǎo)致其他的流量被擠掉。
流量整形主要目的是保證報(bào)文從某端口出去的時(shí)候,不會(huì)產(chǎn)生突發(fā)。當(dāng)上游帶寬大于下游帶寬的時(shí)候,經(jīng)??梢酝ㄟ^(guò)瀏覽整形的方式,使得流量可以均勻的進(jìn)入下游流量。因此該技術(shù)主要應(yīng)用的端口的出向方向。
擁塞管理是指當(dāng)網(wǎng)絡(luò)出現(xiàn)擁塞時(shí),如何對(duì)報(bào)文進(jìn)行差異化調(diào)度管理。例如有兩種報(bào)文,其中一種報(bào)文有較高的優(yōu)先級(jí),另外一種優(yōu)先級(jí)則較低,而低優(yōu)先級(jí)的報(bào)文流量很大,導(dǎo)致將整個(gè)帶寬擠滿(mǎn),此時(shí)如果不做擁塞管理,則這兩種報(bào)文會(huì)無(wú)差別丟包,而擁塞管理技術(shù)則可以將高優(yōu)先級(jí)報(bào)文入隊(duì)到單獨(dú)的隊(duì)列,低優(yōu)先級(jí)報(bào)文則入另外一個(gè)隊(duì)列,通過(guò)優(yōu)先調(diào)度高優(yōu)先級(jí)隊(duì)列中的報(bào)文,保證高優(yōu)先級(jí)報(bào)文及時(shí)轉(zhuǎn)發(fā)出去。常見(jiàn)的優(yōu)先級(jí)調(diào)度算法有:嚴(yán)格優(yōu)先級(jí)調(diào)度、加權(quán)輪詢(xún)調(diào)度、加權(quán)公平調(diào)度和基于類(lèi)的調(diào)度。
2.4.1 嚴(yán)格優(yōu)先級(jí)調(diào)度
一般網(wǎng)絡(luò)設(shè)備或芯片的每個(gè)端口又8 個(gè)隊(duì)列,他們的優(yōu)先級(jí)從到到底一次降低。當(dāng)這些隊(duì)列設(shè)置為嚴(yán)格優(yōu)先級(jí)調(diào)度時(shí),則系統(tǒng)設(shè)備或芯片則會(huì)優(yōu)先調(diào)度優(yōu)先級(jí)最高的隊(duì)列中的報(bào)文,當(dāng)最高優(yōu)先級(jí)隊(duì)列中沒(méi)有報(bào)文時(shí),再調(diào)用次高優(yōu)先級(jí)隊(duì)列中的報(bào)文,一直到最低優(yōu)先級(jí)隊(duì)列。
優(yōu)點(diǎn):可以保證高優(yōu)先級(jí)的報(bào)文及時(shí)得到調(diào)度。
缺點(diǎn):如果高優(yōu)先級(jí)隊(duì)列中一直有報(bào)文時(shí),低優(yōu)先級(jí)隊(duì)列中的報(bào)文則一直無(wú)法得到調(diào)度。
2.4.2 加權(quán)輪詢(xún)調(diào)度
加權(quán)輪詢(xún)調(diào)度是指各個(gè)隊(duì)列之間按照一定權(quán)重進(jìn)行調(diào)度。例如網(wǎng)絡(luò)設(shè)備或芯片的每個(gè)端口8 個(gè)隊(duì)列,可以將這8個(gè)隊(duì)列按照一定的比例權(quán)重進(jìn)行配置,如隊(duì)列7~隊(duì)列0,權(quán)重配置為30:15:10:5:3:2:1:1,則該網(wǎng)絡(luò)設(shè)備或芯片則按照此比例對(duì)各個(gè)隊(duì)列中的報(bào)文進(jìn)行加權(quán)調(diào)度。
加權(quán)輪詢(xún)調(diào)度相對(duì)于嚴(yán)格優(yōu)先級(jí)調(diào)度的好處在于,即使高優(yōu)先級(jí)中仍然有報(bào)文,低優(yōu)先級(jí)隊(duì)列中的報(bào)文仍然有機(jī)會(huì)得到調(diào)度。
2.4.3 加權(quán)公平調(diào)度
加權(quán)公平調(diào)度和加權(quán)輪詢(xún)調(diào)度法類(lèi)似,在權(quán)重算法上都支持 byte-count 和 weight,也支持SP 分組,可以相互替換。
兩者的不同之處在于:加權(quán)輪詢(xún)調(diào)度支持最大時(shí)延,可以保證所配置隊(duì)列中的報(bào)文從進(jìn)入隊(duì)列到離開(kāi)隊(duì)列的最大時(shí)間不超過(guò)所設(shè)定的最大時(shí)延;加權(quán)公平調(diào)度支持帶寬保證,可以保證端口流量擁塞時(shí)能夠獲得的最小隊(duì)列帶寬。
2.4.4 基于類(lèi)的調(diào)度
基于類(lèi)的調(diào)度是指使用者可以根據(jù)報(bào)文的特征進(jìn)行歸類(lèi),并為每個(gè)類(lèi)分配一個(gè)獨(dú)立的隊(duì)列,當(dāng)網(wǎng)絡(luò)發(fā)生擁塞時(shí),可以根據(jù)用戶(hù)定義的規(guī)則進(jìn)行匹配調(diào)度。
擁塞避免是指網(wǎng)絡(luò)設(shè)備或芯片通過(guò)監(jiān)控其內(nèi)部的隊(duì)列使用情況,當(dāng)隊(duì)列中的報(bào)文超出其預(yù)先設(shè)置的門(mén)限時(shí),主動(dòng)丟棄報(bào)文,進(jìn)而調(diào)整網(wǎng)絡(luò)中的流量帶寬。
圖1為一個(gè)典型的電信設(shè)備內(nèi)部板卡組合,圖中有3 塊線卡通過(guò)交換板與主控進(jìn)行通信,主要分為協(xié)議報(bào)文和控制報(bào)文,典型的協(xié)議報(bào)文如lacp 報(bào)文(以太類(lèi)型為0x8809)、IP 報(bào)文(以太類(lèi)型為0x0800)。其中協(xié)議報(bào)文優(yōu)先級(jí)高于控制報(bào)文,而控制報(bào)文的優(yōu)先級(jí)則由其自身攜帶的vlan 優(yōu)先級(jí)決定。當(dāng)報(bào)文從各個(gè)線卡發(fā)送到主控時(shí),有可能導(dǎo)致流量擁塞而導(dǎo)致報(bào)文無(wú)差別丟包。特別是當(dāng)控制報(bào)文很多的時(shí)候,會(huì)沾滿(mǎn)整個(gè)鏈路帶寬,此時(shí)協(xié)議報(bào)文將會(huì)被擠掉。為了使的高優(yōu)先級(jí)的報(bào)文優(yōu)先被調(diào)度,因此需要在交換板與主控板互聯(lián)的端口上做QOS。
圖1
交換板主要使用以太網(wǎng)交換芯片進(jìn)行報(bào)文轉(zhuǎn)發(fā),因此本實(shí)踐的QOS 主要配置在內(nèi)部的以太網(wǎng)交換芯片中。
如圖2所示,以太網(wǎng)交換芯片每個(gè)端口有8 個(gè)隊(duì)列,隊(duì)列0 到隊(duì)列7,隊(duì)列優(yōu)先級(jí)依次升高,其中隊(duì)列5、6、7 三個(gè)隊(duì)列,優(yōu)先級(jí)配置為嚴(yán)格優(yōu)先級(jí),隊(duì)列0、1、2、3、4 配置為WFQ 加權(quán)輪轉(zhuǎn)調(diào)度優(yōu)先級(jí),權(quán)重為 1:2:3:10:15。
圖2
802.1 p 類(lèi)型的報(bào)文vlan 字段攜帶報(bào)文優(yōu)先級(jí),一共8 個(gè)優(yōu)先級(jí)。具體映射如下:
LACP 類(lèi)型的報(bào)文映射到芯片端口的隊(duì)列7 中,IP 類(lèi)型的報(bào)文映射到芯片端口的隊(duì)列6 中,
將報(bào)文優(yōu)先級(jí)0 映射到芯片端口的隊(duì)列5 中,將報(bào)文優(yōu)先級(jí)1 映射到芯片端口的隊(duì)列4 中,將報(bào)文優(yōu)先級(jí)2 映射到芯片端口的隊(duì)列3 中,將報(bào)文優(yōu)先級(jí)3 映射到芯片端口的隊(duì)列2 中,將報(bào)文優(yōu)先級(jí)4 映射到芯片端口的隊(duì)列1 中,將報(bào)文優(yōu)先級(jí)5、6、7 映射到芯片端口的隊(duì)列0 中。
主要從如下幾個(gè)方面考慮:
(1)普通以太報(bào)文是否按照我們配置的隊(duì)列映射進(jìn)行入隊(duì)?
(2)特定ethtype 類(lèi)型是否正確入隊(duì)?
(3)芯片的sp+wrr 功能是否正常,此處需要驗(yàn)證兩種情況:
1.當(dāng)報(bào)文流量大于端口帶寬時(shí),隊(duì)列6(SP)和隊(duì)列3(WRR)都有報(bào)文時(shí),是否優(yōu)先處理隊(duì)列6 中的報(bào)文?
2.當(dāng)報(bào)文流量大于端口帶寬時(shí),隊(duì)列3(WRR,權(quán)重10)和隊(duì)列1(WRR,權(quán)重2)都有報(bào)文時(shí),處理的報(bào)文比例是否是 5:1。
3.3.1 普通以太報(bào)文入隊(duì)驗(yàn)證
測(cè)試儀發(fā)送報(bào)文優(yōu)先級(jí)為3,按照上述隊(duì)則應(yīng)該入隊(duì)2。如表1所示。
表1
MC_PERQ_PKT(2).xe2 和 MC_PERQ_BYTE(2).xe2 表示該報(bào)文進(jìn)入了端口xe2 的2 隊(duì)列,符合預(yù)期。
結(jié)論:普通以太報(bào)文入隊(duì)符合預(yù)期
3.3.2 特定ethtype 的報(bào)文入隊(duì)驗(yàn)證
查看芯片的ethtype 配置,lacp(0x8809)和IP(0x0800)的報(bào)文分別入隊(duì)7 隊(duì)列和6 隊(duì)列。
接下來(lái)我們看下實(shí)際的報(bào)文入隊(duì)情況:分兩種情況:
3.3.2.1 未知單播的0806 報(bào)文
如表2所示。
表2
MC_PERQ_PKT(6).xe2 和MC_PERQ_BYTE(6).xe2 表示未知單播報(bào)文進(jìn)入xe2 口的6 隊(duì)列,符合預(yù)期。
3.3.2.2 已知的0806 報(bào)文
接下來(lái)我們?cè)谛酒信渲靡粭l二層轉(zhuǎn)發(fā)表,使上面的報(bào)文變成已知單播報(bào)文(如表3所示)
表3
UC_PERQ_PKT(6).xe2 和UC_PERQ_BYTE(6).xe2 表示單播報(bào)文入隊(duì)xe2 的6 隊(duì)列,符合預(yù)期。
結(jié)論:特定ethtype 報(bào)文入隊(duì)符合預(yù)期
3.3.3 芯片sp+wrr 功能的驗(yàn)證
上面幾條可以看出我們的所有報(bào)文都可以正常入隊(duì),現(xiàn)在需要驗(yàn)證的是,在帶寬受限的情況下,芯片如何調(diào)度各個(gè)隊(duì)列中的報(bào)文。
3.3.3.1 帶寬受限情況下,sp 和wrr 的調(diào)度情況
此處我們同時(shí)發(fā)2 種報(bào)文,一種是0806 的報(bào)文,讓其進(jìn)入6 隊(duì)列,另一種發(fā)優(yōu)先級(jí)為2 的普通以太報(bào)文,讓其進(jìn)入3 隊(duì)列。如表4所示。
表4
查看上述兩種報(bào)文的入隊(duì)情況,如表5所示。
表5
可以看出上面兩種報(bào)文分別入6 隊(duì)列和3 隊(duì)列,然后對(duì)xe2 端口進(jìn)行限速,并加大上述兩種報(bào)文的流量發(fā)送,使得發(fā)送的報(bào)文流量大于xe2 的帶寬。
查看端口統(tǒng)計(jì),如表6所示。
表6
MC_PERQ_PKT(6).xe2 和MC_PERQ_BYTE(6).xe2 表示6 隊(duì)列的報(bào)文正常轉(zhuǎn)發(fā)
MCQ_DROP_PKT(3).xe2 和MCQ_DROP_BYTE(3).xe2表示3 隊(duì)列的報(bào)文丟棄
可以看到所有的隊(duì)列3 都丟,所有的隊(duì)列6 都沒(méi)有丟。
結(jié)論:sp 隊(duì)列中的報(bào)文優(yōu)先處理,當(dāng)sp 中的報(bào)文處理完之后,才會(huì)處理WRR 中的報(bào)文
3.3.3.2 帶寬受限情況下,wrr 隊(duì)列3 和隊(duì)列1 調(diào)度情況
我們發(fā)兩種報(bào)文,使其分別入3 隊(duì)列和1 隊(duì)列,如表7所示。
表7
對(duì)xe2 限速,并查看端口統(tǒng)計(jì),如表8所示。
表8
上面的統(tǒng)計(jì)顯示,在一段時(shí)間內(nèi)隊(duì)列1 轉(zhuǎn)發(fā)報(bào)文3,411,262 BYTE,隊(duì)列3 轉(zhuǎn)發(fā)報(bào)文15,898,080,兩者近似1:5的比例,符合預(yù)期。
結(jié)論:兩個(gè)WRR 隊(duì)列中的報(bào)文處理與實(shí)際配置的比重一致
通過(guò)上述QOS 的配置及驗(yàn)證,很好的解決了因網(wǎng)絡(luò)擁塞而導(dǎo)致的報(bào)文無(wú)差別丟包,實(shí)現(xiàn)了特定類(lèi)型報(bào)文優(yōu)先調(diào)度的目的。