前言
QoS(Quality of Service) 的用途為流量管理,,功能在於確保特定服務(wù),、特定主機(jī)可以根據(jù)管理者設(shè)定的規(guī)則,讓頻寬可以得到保證,,相對(duì)也可以更穩(wěn)定的提供服務(wù),,當(dāng)然也可以用來杜絕相當(dāng)耗損頻寬的軟體。(例如:eMule,、BT …. 等等)
扮演流量管理的主機(jī),,必須位於兩個(gè)不同的網(wǎng)路區(qū)段之間(可以是同網(wǎng)段,只是實(shí)體是隔開的),,因此通常提供 QoS 功能的都 Router(連結(jié)不同網(wǎng)段) 或是 Bridge(連結(jié)相同網(wǎng)段),,而在不同的網(wǎng)路區(qū)段中互相傳輸?shù)木W(wǎng)路封包,就會(huì)受到 QoS 中的規(guī)則所規(guī)範(fàn),。
設(shè)定時(shí)注意事項(xiàng)
在進(jìn)行 QoS 的設(shè)定時(shí),,首先必須要先瞭解 QoS 的設(shè)定限制,並不是很簡(jiǎn)單的直接設(shè)定上傳下載的限制即可(如果有,,就是有人提供了很方便的設(shè)定工具才有辦法達(dá)成),。
QoS 的設(shè)定限制,在於「只能限制往外傳的流量,,無法限制接收到的流量」,。就像寄信一樣,你可以限制自己不要寄很多信,,但是卻無法阻止別人寄很多信給自己,。
瞭解 QoS 的限制後,在設(shè)定時(shí)就不會(huì)發(fā)生觀念錯(cuò)誤而導(dǎo)致設(shè)定後結(jié)果不如預(yù)期的情形產(chǎn)生,。
QoS 如何作到雙向流量管控
知道了 QoS 的管控限制後,,雙向流量管控的需求還是在,,但是要如何作呢? 以下先列出網(wǎng)路架構(gòu)圖:
假設(shè)以外部 client(Windows XP,10.1.16.200) 到內(nèi)部 server(Ubuntu,,192.168.100.20) 的流量為例,,假設(shè)內(nèi)部 server 提供了 FTP 的服務(wù),而若是要使用 QoS 來管控 client 的上傳與下載,,就必須從兩個(gè)方面著手:
- client 的下載
此時(shí)網(wǎng)路流量是由內(nèi)部 server 傳到外部,,若以 QoS 僅能管控外傳流量的限制為前提下,就必須從 ETH00(10.1.16.222) 網(wǎng)路介面來著手,,藉由管控從 ETH00 網(wǎng)路介面流出的網(wǎng)路流量,,來達(dá)到管控 client 下載流量的目的。 - client 的上傳
反之若要管控 client 的上傳流量,,就必須改從 ETH01(192.168.100.254) 介面來著手,,藉由管控從 ETH01 網(wǎng)路介面的外傳流量,來達(dá)到管控 client 上傳流量的目的,。
因此從上面的案例說明就可以瞭解,,若要達(dá)到同時(shí)控管上下傳的流量,就必須要從不同的網(wǎng)路介面卡上著手,。
ZeroShell 的 QoS 設(shè)定
ZeroShell 提供了 QoS 的功能,,甚至還可以跟 Layer 7 的協(xié)定搭配使用,功能可說是相當(dāng)強(qiáng)大,,以下是我們的設(shè)定案例:
Client:Windows XP (10.1.16.200)
Server:Ubuntu (DMZ:10.1.16.224 –> 192.168.100.20)
其中 Server 提供了 FTP 服務(wù),,我們要使用 QoS 作到限制 client 上傳流量為 2048 Kbits/s,下載流量為 512 Kbits/s,。
,,但在設(shè)定上稍嫌複雜,因?yàn)?ZeroShell 並沒有簡(jiǎn)化原有 QoS 的相關(guān)設(shè)定,,還是必須分成以下四個(gè)部份進(jìn)行設(shè)定:
1,、QoS 功能的啟用
首先必須要啟用 QoS 的功能:
選擇「NETWORK –> QoS –> Interface Manager」,進(jìn)入網(wǎng)路介面的設(shè)定,,將要管控流量的網(wǎng)路介面勾選啟用,,並按下「Activate last Changes」儲(chǔ)存設(shè)定。
此外,,還可以按下「Global Bandwidth」設(shè)定該網(wǎng)路介面的最大頻寬與保證頻寬,。
2、設(shè)定 QoS 類別
接著要設(shè)定 Qos 類別,,主要是要設(shè)定類別的相關(guān)描述以及頻寬上限的設(shè)定,選擇「Class Manager」:
接著會(huì)出現(xiàn)以下設(shè)定畫面:
下方可以看到一個(gè)內(nèi)建的預(yù)設(shè)類別,,按「New」可以新增一個(gè)類別,。
首先要先輸入類別名稱:(首先要設(shè)定 FTP 上傳的類別,,因此輸入「FTP_UP」)
接著要輸入類別的詳細(xì)資訊:
畫面中所要輸入的包含 Description(類別描述)、Priority(封包優(yōu)先權(quán)),、Maximum(最大使用頻寬),、Guaranteed(保證頻寬) … 等等,根據(jù)我們的模擬測(cè)試,,要將優(yōu)先權(quán)設(shè)定為中,,最大使用頻寬設(shè)定為 2048 Kbits/s,設(shè)定完畢後要記得按「Save」儲(chǔ)存設(shè)定,。
接著要加入 FTP 下載的類別(FTP_DOWN),,相關(guān)設(shè)定畫面如下:
3、設(shè)定 QoS 類別與規(guī)則的對(duì)應(yīng)
QoS 類別設(shè)定完後,,就必須要設(shè)定封包檢查規(guī)則,,並與 QoS 類別對(duì)應(yīng),選擇「Classifier」:
按下「Add」新增封包檢查規(guī)則,,就會(huì)出現(xiàn)以下畫面:
針對(duì)以上有使用到的設(shè)定僅行仔細(xì)說明:
- Apply to:Routed and Bridged Packets
這個(gè)設(shè)定表示無論 ZeroShell 扮演的是 router 或是 bridge,,只要有網(wǎng)路封包流經(jīng)都必須由 QoS 管控。 - Input & Output
這個(gè)部份就要特別注意了,,因?yàn)椤?font color=#ff0000>QoS 僅能管控外傳的網(wǎng)路流量」的緣故,,途中設(shè)定 Output 為 ETH01,表示要管制從 ETH01 外傳的網(wǎng)路流量,,亦即 client 的上傳流量,。 - Layer 7 Filter:FTP – File Transfer Protocol – RFC 959
設(shè)定與 L7-Filter 搭配,用來判斷是否 FTP 的流量,。(使用 TCP port 21 未必就真的是 FTP 的流量) - TARGET CLASS:FTP_UP
選擇要繫結(jié)的 QoS 類別,。(由於此處設(shè)定的判斷規(guī)則為 client 的 FTP 上傳流量,因此選擇 FTP_UP) - LOG:5 Minute
是否啟用 log 功能,,此處選擇每 5 分鐘 log 一次,。
最後記得要按「Confirm」儲(chǔ)存 QoS 的規(guī)則設(shè)定。
了解設(shè)定方式後,,設(shè)定檢查 FTP 下載的規(guī)則就容易多了:
4,、將 QoS 類別與網(wǎng)路介面繫結(jié)
當(dāng)規(guī)則繫結(jié)到 QoS 類別後,最後就要將 QoS 類別與網(wǎng)路介面進(jìn)行繫結(jié),,選擇「Interface Manager」:
找到所要繫結(jié)的網(wǎng)路介面,,並按下右邊的「Add Class」新增繫結(jié):
這裡需要注意兩點(diǎn):
- client FTP 下載是管控 ETH00 的對(duì)外流量,因此將 FTP_DOWN 繫結(jié)到 ETH00 上
- client FTP 上傳是管控 ETH01 的對(duì)外流量,,因此將 FTP_UP 繫結(jié)到 ETH01 上
最後確定 QoS 服務(wù)有啟用,,按下「Activate last Changes」就完成設(shè)定了。
Qos 使用成效檢驗(yàn)
到底設(shè)定 Qos 效果如何,以下有截下幾張圖來說明,,首先為尚未開啟 QoS 功能時(shí),,client 的上傳與下載大概都有 8~9 MBytes/s 的速度:
上面設(shè)定將上傳限定為 2048 Kbits(256 KBytes)/s,開啟 QoS 後的實(shí)際速度為:
下載限制的部份為 512Kbits(64 KBytes)/s,,開啟 Qos 後的實(shí)際速度為:
因此看得出來,,QoS 也不是相當(dāng)?shù)木_,實(shí)際上在傳輸時(shí),,速度還是會(huì)上上下下一個(gè)範(fàn)圍在傳輸(大約 10%),,但最大是肯定沒有超過上面設(shè)定所設(shè)定的最大頻寬,可見 QoS 的設(shè)定是有成功的,。