查看單個文章
舊 2006-09-13, 06:42 AM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 使用Bandwidth Controller來實現帶寬控制

How to :使用Bandwidth Controller來實現帶寬控制
 
內容概要:由於ISA Server 2000帶寬控制功能的不足及配置的複雜,在ISA Server 2004中取消了這一功能,如果你要限制用戶使用的帶寬,只能通過限制線程來實現。不過,通過Bandwidth Controller或者SoftPerfect Bandwidth Manager,你可以輕鬆的控制用戶可以使用的實時帶寬。在這篇文章中,我給大家介紹如何使用Bandwidth Controller來實現帶寬控制。
 
在ISA Server 2000中,帶寬管理功能是通過設置優先級來實現,但是管理員更多的是希望限制用戶可以使用的實時帶寬,並且ISA Server 2000中的帶寬管理功能難以理解和部署,所以在ISA Server 2004中,微軟取消了帶寬管理功能,如果你要限制用戶使用的帶寬,只能通過限制線程來實現。目前ISA Server的插件中,還沒有可以限制用戶實時帶寬的。不過,已經有其他軟件能夠實現這一點:Bandwidth Controller和SoftPerfect Bandwidth Manager。SoftPerfect Bandwidth Manager在How to :使用SoftPerfect Bandwidth Manager來實現帶寬控制一文中已經進行了介紹,在這篇文章中我給大家介紹Bandwidth Controller,在此文撰寫時它的最新版本為0.31b,你可以在http://www.isacn.org/info/info.php?sessid=&infoid=236下載30天的試用版。
和KNM(Kerio Network Monitor)一樣,Bandwidth Controller是通過在所有網路適配器上載入專用驅動來實現對帶寬的控制,不過它的驅動也沒有通過微軟的認證,在安裝過程中會出現未通過Windows徽標測試的警告,忽略即可。在我們的實際使用過程中,Bandwidth Controller還是比較穩定的;不過在高可靠性要求的環境,我還是建議你使用限制線程來限制用戶的帶寬,畢竟越少的服務意味著越高的穩定性。
Bandwidth Controller必須安裝在網路閘道器上,否則不能實現其功能。它的配置和ISA是完全獨立的,你必須在ISA中部署防火牆策略允許內部用戶訪問外部網路,然後再在Bandwidth Controller中部署過濾規則來限制用戶的實時帶寬。
下圖是我們的試驗網路拓樸結構,ISA防火牆作為邊緣防火牆,連接內部網路和Internet;Istanbul(61.139.0.8/24)為Internet上的一台Web/FTP服務器。

http://www.isacn.org/pic/BandwidthController/bandwidthcontroller.jpg

在這個實驗中我將使用Bandwidth Controller來限制ISA防火牆的下行和上行帶寬,已在ISA防火牆的防火牆策略中允許了本機主機到外部網路的所有協議;各電腦的TCP/IP設置如下,此試驗中不涉及DNS解析,DNS服務器均設置為空:
ISA防火牆外部接頭:
IP:61.139.0.1/24
DG:61.139.0.8
Istanbul:
IP:61.139.0.8/24
DG:None
在這篇文章中我們將按照以下步驟進行試驗:
安裝和初始化Bandwidth Controller;
建立第一條過濾規則:限制ISA防火牆下行速率為50KB/s
建立第二條過濾規則:限制ISA防火牆上行速率為200KB/s
測試



安裝和初始化Bandwidth Controller
在安裝Bandwidth Controller之前,你必須對你所擁有的帶寬進行正確的量化。可能很多朋友會說,我的帶寬是10Mb/s或者100Mb/s,這些都只是網路接頭的理論數值而已,並不是你真正擁有的實際帶寬。我建議你通過閒時(例如凌晨4點~6點)使用FTP連接到你的ISP的服務器(最好是和你外部接頭同子網的服務器,或者離你外部接頭跳數較近的服務器,但是對方一定要有足夠的帶寬)進行上傳下載來量化你的帶寬,當然有條件時使用其他測試工具如NetIQ Chariot等,測試出更為精確的數值更好。
下圖是我分別使用HTTP下載和FTP下載、上傳得出的我的外部連接的上行下行帶寬數值。我的HTTP下載速率為2.12MB/s,Ftp下載速率為3036.85KB/s,上傳速率為5060.66KB/s。HTTP下載速率更慢,忽略不計。

http://www.isacn.org/pic/BandwidthController/bandwidthctrl01.jpg

現在就需要將這個KB/s折算Kb/s了,本來1Byte等於8bit,但是在網路傳輸過程中,由於校驗碼及其他傳輸開銷,我建議你使用倍數10來進行折算,再適當擴大一點,折算後,我所擁有的下行帶寬大約是31,000Kb/s,上行帶寬大約是51,000Kb/s。
注意:在這個試驗中,我只是簡單的通過ftp命令來進行測試。但是你在商業環境中使用時,請使用專業的FTP客戶端,另外請多測試幾次,並使用其中最大的數值。
現在我們可以安裝Bandwidth Controller了,雙擊下載的BandwidthControllerSetup.exe進行安裝,安裝過程比較簡單,在此我就不多說了。只是在安裝網路核心驅動時,在彈出的未通過Windows徽標測試的警告交談視窗上點擊仍然繼續

http://www.isacn.org/pic/BandwidthController/bandwidthctrl02.jpg

在安裝好後,Bandwidth Controller會要求你對所擁有的帶寬進行設定,在彈出的要求配置帶寬交談視窗上點擊確定

http://www.isacn.org/pic/BandwidthController/bandwidthctrl03.jpg

帶寬控制選項交談視窗,首先你必須設定接頭的速率。這個地方需要注意的是,對於你的外部和內部接頭,上行(發送)帶寬和下行(接收)帶寬剛好是相反的,請你一定記住這一點。Bandwidth Controller是控制連接到Internet的帶寬的,你定義的接頭速率是指的此接頭通往Internet的速率,而不管此接頭是否直接連接到Internet。外部接頭是直連到Internet的,它的上下行速率是我們在上面計算出的速率。但是對於其他沒有直連到Internet的接頭(如內部網路接頭)呢,這個數值又是怎麼計算的呢?它的上下行速率是和直連到Internet的接頭(外部接頭)的上下行速率剛好相反的,Why?因為對於內部網路和Internet之間的通信而言,內部網路發送給Internet的資料是ISA防火牆從內部接頭(非直連到Internet的接頭)接收,然後從外部接頭(直連到Internet的接頭)發送的,而從Internet發送給內部網路的資料是ISA防火牆從外部接頭接收的,然後從內部接頭發送的。
根據上面我們的計算,對於外部接頭,我們上行帶寬為51,000 kbps,下行帶寬為31,000 kbps。點擊外部接頭,然後在右邊的發送帶寬文本框中填入51,000,在下面的接收帶寬文本框中填入31,000。

http://www.isacn.org/pic/BandwidthController/bandwidthctrl04.jpg

而對於內部接頭,填入相反的數值。

http://www.isacn.org/pic/BandwidthController/bandwidthctrl05.jpg

預定情況下Bandwidth Controller會過濾通往所有網路的資料。我們沒有必要讓它對內部網路中的資料進行過濾,所以勾選不要過濾本機通信,然後在IP位址範圍中輸入內部網路的位址10.2.1.010.2.1.255。下面的Manager框定義了管理視窗的一些選項,根據你的喜好進行選擇,然後點擊確定
最後在Bandwidth Controller關於在任務欄工作列區執行的提示上點擊確定

http://www.isacn.org/pic/BandwidthController/bandwidthctrl06.jpg

我們對它的安裝和初始化就完成了。

建立第一條過濾規則:限制ISA防火牆下行速率為50KB/s
執行Bandwidth Controller,在管理視窗中點擊新增過濾

http://www.isacn.org/pic/BandwidthController/bandwidthctrl07.jpg

在彈出的歡迎使用過濾新增嚮導頁,點擊下一步

http://www.isacn.org/pic/BandwidthController/bandwidthctrl08.jpg

然後在名字和適配器頁,在上面的名字欄我輸入過濾規則名字為Limit Localhost Download rate to 50KB/s。下面的選擇網路適配器欄你一定要注意,你必須選擇過濾規則所針對的主機到達Internet的路徑上(無論是作為源還是目的)離Bandwidth Controller的最近的一個適配器。例如,如果我想限制內部網路中的主機的下載速率,內部網路中的主機到達Internet的路徑是內部網路->ISA防火牆內部接頭->ISA防火牆外部接頭->Internet,它離Bandwidth Controller最近的接頭是內部接頭,所以此時就應該選擇內部接頭。由於我是想對本機主機進行限制,本機主機到達Internet的路徑是ISA防火牆外部接頭->Internet,所以我們該選擇外部接頭。選擇外部接頭,然後點擊下一步

http://www.isacn.org/pic/BandwidthController/bandwidthctrl09.jpg

最小和最大速率頁,輸入此過濾規則設置的最小速率和最大速率,單位都是Byte/s。最小速率是Bandwidth Controller為此過濾規則保留的帶寬,無論當前連接線路是否擁擠,Bandwidth Controller會保證此規則擁有此最小帶寬,所以此最小速率必須小於你的網路到達Internet的對應流向的實際帶寬,而不管哪個接頭;此條過濾規則是我限制本機主機從Internet下載,因此對應流向的實際帶寬是外部接頭的下行速率31,000kbps,折算為3100KB/s。如果是想限制內部網路中的主機進行下載,資料流向為 Internet->ISA防火牆外部接頭->ISA防火牆內部接頭->內部網路主機,那麼對應的網路連接是內部接頭的上行(發送)速率,也是31,000kbps。而最大速率是Bandwidth Controller允許此過濾規則使用的最大帶寬,當連接線路空閒時,Bandwidth Controller允許此規則使用比最小速率更高的帶寬,直至最大速率。為了便於測試,我全部填入50000,即大約50KB/s。點擊下一步
注意:為什麼我說是大約50KB/s呢,因為1K=1024,50000/102448.83K,所以用戶的實際速率大概是48.8KB/s。

http://www.isacn.org/pic/BandwidthController/bandwidthctrl10.jpg

優先級和重要性頁,選擇優先級和輸入重要性。Bandwidth Controller中的優先級為9級,最高為9;當網路連接擁塞時,Bandwidth Controller會優先考慮優先級高的資料,而優先級低的資料只有在具有空閒帶寬時才會進行傳輸,這點對VoIP資料非常有用。而重要性是用於決定空餘帶寬的使用的,Bandwidth Controller將此過濾規則的重要性除以所有過濾規則的重要性的總和,然後將空餘帶寬按比例分配給對應的過濾規則。例如,我有兩條過濾規則,一條的重要性是5,另外一條的重要性是3,那麼前者可以獲得5/(5+3)=5/8的空閒帶寬,而後者可以或者3/8的空閒帶寬。我選擇優先級為9,輸入重要性為5後點擊下一步繼續;

http://www.isacn.org/pic/BandwidthController/bandwidthctrl11.jpg

協議和方向頁,協議我建議大家選擇IP協議,不過你也可以選擇TCP/UDP,然後定義連接阜,這樣過濾規則就只會應用到對應的服務。下部的方向非常重要,如果是限制內部網路中的主機下載,那麼在前面網路適配器選擇內部接頭後,在此你應該選擇發送,因為資料是從內部接頭發送出去的;在此因為我是限制本機主機下載,它是從外部接頭獲取資料的,所以我在前面選擇外部接頭,然後在此選擇接收。點擊下一步

http://www.isacn.org/pic/BandwidthController/bandwidthctrl13.jpg

源位址頁定義規則應用到的源位址,這個必須根據你的要求小心的進行設置。由於我們是限制本機主機下載,而不管它從哪兒下載(對於限制內部網路中主機下載同理);所以我選擇忽略源位址,然後點擊下一步

http://www.isacn.org/pic/BandwidthController/bandwidthctrl14.jpg

目的位址頁,這個地方就應該輸入本機主機的位址了,由於Internet是發送到本機主機的外部接頭61.139.0.1,所以我選擇IP位址,然後輸入此IP位址(限制內部網路中的主機下載同理)。點擊下一步

http://www.isacn.org/pic/BandwidthController/bandwidthctrl15.jpg

在最後的正在完成新增過濾規則嚮導頁,點擊完成,此時,我們第一條過濾規則就建立好了。

http://www.isacn.org/pic/BandwidthController/bandwidthctrl16.jpg


建立第二條過濾規則:限制ISA防火牆上行速率為200KB/s
現在我們來建立第二條規則,限制ISA防火牆的上行速率為200KB/S,再次點擊新增過濾按鍵,在彈出的歡迎使用過濾新增嚮導頁,點擊下一步
然後在名字和適配器頁,在名字欄輸入過濾規則名字為Limit Localhost upload rate to 200KB/s。接頭選擇原理同第一條規則,選擇外部接頭(如果是限制內部網路中的主機上傳則選擇內部接頭)後點擊下一步

http://www.isacn.org/pic/BandwidthController/bandwidthctrl17.jpg

最小和最大速率頁,輸入此過濾規則設置的最小速率和最大速率,原理同第一條規則。我均輸入200000(大約為200KB/S),然後點擊下一步

http://www.isacn.org/pic/BandwidthController/bandwidthctrl18.jpg

優先級和重要性頁,選擇優先級和輸入重要性,接受預定設置,點擊下一步繼續;

http://www.isacn.org/pic/BandwidthController/bandwidthctrl19.jpg

協議和方向頁,選擇IP協議。下部的方向就需要仔細考慮了,對於本機主機來說,限制上傳就是限制它發送資料,但是對於內部網路中的主機來說,卻是接收,Why?因為Bandwidth Controller是從內部網卡上接收到內部網路中的主機發送到Internet的資料的。在此我是限制本機主機發送資料,所以選擇發送,點擊下一步

http://www.isacn.org/pic/BandwidthController/bandwidthctrl20.jpg

源位址頁定義規則應用到的源位址,由於我們是限制本機主機發送資料,所以源位址為本機主機連接Internet的外部接頭(對於限制內部網路中主機上傳同理);所以我選擇IP位址,然後輸入外部接頭的IP位址61.139.0.1,然後點擊下一步

http://www.isacn.org/pic/BandwidthController/bandwidthctrl21.jpg

目的位址頁定義規則應用到的目的位址,由於我們是限制本機主機上傳,而不管它上傳到哪兒(對於限制內部網路中主機上傳同理);所以我選擇忽略目的位址,然後點擊下一步

http://www.isacn.org/pic/BandwidthController/bandwidthctrl22.jpg

在最後的正在完成新增過濾規則嚮導頁,點擊完成,此時,我們第二條過濾規則就建立好了。

http://www.isacn.org/pic/BandwidthController/bandwidthctrl23.jpg

此時,我們的兩條規則都建立好了,如下圖所示。Bandwidth Controller的過濾規則是即時生效的,並且是從上到下執行第一條匹配的過濾規則。你可以右擊過濾規則選擇上移下移來調整過濾規則的順序。

http://www.isacn.org/pic/BandwidthController/bandwidthctrl24.jpg

測試
現在我們可以進行測試了。先測試HTTP下載,下面兩張圖分別是正在下載和下載完成時IE和Bandwidth Controller中的過濾規則的狀態訊息;

http://www.isacn.org/pic/BandwidthController/bandwidthctrl25.jpg


http://www.isacn.org/pic/BandwidthController/bandwidthctrl26.jpg

可以看出,Bandwidth Controller成功的把帶寬控制在50000B/s(48.8KB/s)左右。
然後我們再測試一下FTP上傳,下面兩張圖分別是正在上傳和上傳完成時Ftp和Bandwidth Controller中的過濾規則的狀態訊息;

http://www.isacn.org/pic/BandwidthController/bandwidthctrl27.jpg


http://www.isacn.org/pic/BandwidthController/bandwidthctrl28.jpg

可以看出,Bandwidth Controller也成功的把帶寬控制在200000B/s(196KB/s)左右。
至此,我們的試驗就成功結束了。Bandwidth Controller是ISA防火牆帶寬控制能力不足的一個很好的補充,不過,Bandwidth Controller也不僅僅限制ISA環境,在任何需要帶寬限制的環境,Bandwidth Controller都可以大顯身手。
另外在使用的過程中,發現了BC的一個問題:由於BC所有規則的資料包緩衝區為500個資料包,當出現資料包緩衝區被佔滿時(例如你限制用戶的速率為一個很低的值,而此客戶又不斷的大量發送資料包,那麼這500個資料包緩衝區會很快被佔滿),BC會丟棄所有接收到的資料包,這樣會導致其他客戶也不能正常的訪問。對於這種情況,請提高BC限制的速率,或者不在BC中做限制。
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次