是否提高服務(wù)質(zhì)量(QoS)就可以處理擁塞鏈路?還是必須提高網(wǎng)絡(luò)帶寬才可以解決鏈路擁塞問題呢……
每個網(wǎng)絡(luò)都有一些鏈路定期會超載。我們通??梢允褂镁W(wǎng)絡(luò)管理系統(tǒng)的報(bào)告或使用命令行界面(CLI)收集接口信息的腳本來鑒定這些鏈路,查看輸出丟包率高的鏈路。注意:輸入丟包是罕見的,通常意味著設(shè)備中的分組處理路徑以某種方式受到影響。任何輸入丟包都應(yīng)該進(jìn)行檢查。還要注意的是簡單網(wǎng)絡(luò)管理協(xié)議也使用術(shù)語丟包(discards),于是命令行界面(CLI)經(jīng)常使用屬于丟包(drops).CLI的輸出一般是這樣的語句:
Gigabit Ethernet 1/10 is up, line protocol is up (connected)
Hardware is C 6k 1000Mb 802.3, address is 0008.6a2f.18a5
Input queue: 0/2000/0/0 (size/max/drops/flushes);
Total output drops: 116123
5 minute input rate 62675000 bits/sec, 6824 packets/sec
5 minute output rate 14618000 bits/sec, 4944 packets/sec
相對于接口輸出包的總數(shù),計(jì)算丟包的百分比。任何接口呈現(xiàn)的丟包率大于0.0001%都應(yīng)該注意,因?yàn)檫@個丟包率表示使用TCP協(xié)議會受到影響。另一種方法是,跟蹤丟包數(shù)超過某個閾值的接口,這個閾值可以是1萬個丟包數(shù)/天。
一旦擁塞接口確定,那么就可以通過提高服務(wù)質(zhì)量(QoS)或提高接口速度來解決問題。首先我們來看一下QoS解決方案,然后再看看有哪些因素決定了鏈路擁塞可以得到解決,以及鏈路速度是否必須升級。
QoS及其在解決鏈路擁塞問題中的作用
QoS可以實(shí)現(xiàn)多種功能:
優(yōu)先級:相對于不太重要的網(wǎng)絡(luò)流量,先轉(zhuǎn)發(fā)更重要的網(wǎng)絡(luò)流量。使用優(yōu)先級來處理像語音或視頻這樣的時間敏感數(shù)據(jù)包,推遲時間不敏感的數(shù)據(jù)包發(fā)送。小延遲是幾毫秒量級的,并應(yīng)該足夠短,以防止分組丟失或由上層協(xié)議重傳。
圖1. 優(yōu)先處理大數(shù)據(jù)語音包
管制:通過丟棄超過一定水平大小的數(shù)據(jù)包,限制特定類型網(wǎng)絡(luò)流量的大小。使用管制來防止指定類型的流量霸占網(wǎng)絡(luò)。
圖2. 管制超額流量
整形:緩存短脈沖,當(dāng)有足夠可用資源時,這些緩沖的分組再傳輸,使接口上真實(shí)輸出的流量變得平滑。使用整形來管理像電子郵件或文件傳輸這樣可以容忍短暫延遲的流量,而不影響整體的吞吐量。
圖3. 整形緩存過大的流量,直到帶寬可用
如果鏈路擁塞不是很嚴(yán)重,或者流量類型可以被監(jiān)管(丟棄)的情況下,QoS是非常有效的。在一個咨詢案例中,我們的客戶有一個擁塞T3鏈路,白天一直處于擁塞狀態(tài)。我們確定該鏈路一半的流量來自視頻下載和音樂流媒體服務(wù)。配置QoS,讓業(yè)務(wù)流量優(yōu)先于多媒體數(shù)據(jù)是非常簡單的,同時,管制視頻和語音流量到一個合適的容量。我們還可以為業(yè)務(wù)流量增大緩沖,因?yàn)樗l(fā)出許多小數(shù)據(jù)包,導(dǎo)致超過了高優(yōu)先級隊(duì)列的緩沖池。
限制任意緩沖在一個最小數(shù)量來讓應(yīng)用程序運(yùn)行更穩(wěn)定是一個很好的方法。過多的緩沖會形成一個臃腫緩沖區(qū),導(dǎo)致TCP窗口算法變得混亂,從而吞吐量會比正常低很多。
理想的情況下,企業(yè)應(yīng)該部署QoS.如果覺得比較麻煩,也可以使用在具有嚴(yán)重問題的鏈路上,如上述T3鏈路狀況。
什么時候必須進(jìn)行鏈路升級?
有時候,鏈路會飽和,那么QoS就不是一個好的處理方法了。大多數(shù)網(wǎng)絡(luò)流量都是重要的,已經(jīng)不能使用優(yōu)先級來刪除不重要的流量。在高利用率接口上整形也不再生效了,因?yàn)闆]有延遲分組可以發(fā)送的時間間隙存在。
下面舉一個需要增加帶寬來減少鏈路擁塞的例子。兩個站點(diǎn)通過一條1G bps,2-ms往返時間的鏈路連接。這兩個網(wǎng)站都包含數(shù)據(jù)中心和龐大的用戶群體。通過該鏈路,大量的文件進(jìn)行分享,而且文件通常都非常大。當(dāng)擁塞發(fā)生時,沒有流量可以被放置在低優(yōu)先級隊(duì)列,沒有流量可以被管制(丟棄)??蛻艨吹芥溌反嬖诟邅G包的情況,所以增加緩沖數(shù)量來整形流量。不幸的是,如此大的緩沖數(shù)量導(dǎo)致14ms延遲。結(jié)果?臃腫緩沖區(qū)降低了吞吐量,擁塞仍舊存在。
鏈路擁塞會造成另一種現(xiàn)象:在客戶端和服務(wù)器端,出現(xiàn)非常高數(shù)字的TCP重發(fā),執(zhí)行命令netstat –s –p tcp(適用于Windows, Unix和Linux操作系統(tǒng))可以查看。會出現(xiàn)大量的TCP重傳,可能1萬到5萬次/天。正確的TCP操作也可能導(dǎo)致少量重發(fā),因?yàn)樗l(fā)現(xiàn)該路徑變得擁塞。
幸運(yùn)的是,該客戶正計(jì)劃升級鏈路。除此之外,還有其他的方法可以使現(xiàn)有的帶寬更有效,如減少遠(yuǎn)程安裝的磁盤驅(qū)動器數(shù)量,或在網(wǎng)絡(luò)使用率最小的夜間進(jìn)行數(shù)據(jù)復(fù)制。
當(dāng)一個鏈路擁塞時,QoS可以處理短脈沖串,還可以識別并丟棄低優(yōu)先級網(wǎng)絡(luò)流量。然而,當(dāng)大部分流量是相同優(yōu)先級,而鏈路又嚴(yán)重?fù)砣麜r,唯一的辦法就是增加帶寬。意識到增加帶寬的時間點(diǎn)是非常重要的,最好是在還有時間來訂購鏈路升級時就發(fā)現(xiàn)這一點(diǎn)。