探討Qos頻寬管理器-解決塞車,搶頻寬,取代IP分享器





頁 : 1 2 3 4 5 6 7 8 [9] 10 11 12 13 14 15 16 17 18 19 20 21 22

linux_xp
2005-08-06, 03:44 AM
如果不設fifo的話~那要怎麼設才好呢....

FIFO 是網卡的預設「佇列規則」
封包"先進先出"的意思,就是完全沒有 QoS

在 Linux 下,每個網卡介面都有「佇列規則」
可以想像成是類似高速公路閘道管制的東西

閘道管制一般時候,是不會啟用的
但如果假日,高速公路塞車
閘道管制就會開始亮燈,管制車流量,以避免全塞住不能動
網路的 QoS 管頻寬制,原理就類似高速公路

Linux 下的 QoS
主要有三大項目 「佇列規則」「類別」「過濾器」
像警車在高速公路上,可以暢行無阻,這是因為有高優先權

佇列規則(高速公路):區分警用車輛,一般車輛,兩個類別
類別(警用車輛):最高優先權,可使用所有頻寬
過濾器(識別方法):車上閃燈喔喔叫的,就是警用車輛

佇列規則(網路):區分 web,e-mail,dns,p2p....等等類別
類別(服務種類):優先權等級,最高可使用/保證最少 多少頻寬
過濾器(服務種類):依照 port,依照 uid,依照 layer-7

這是舉例啦,原理就類似這樣子....
----------------------------------------------------------------

Coyote Linux 就我所知,它的 QoS 並不容易設定
老實說我也看不懂那要怎麼設定

Coyote 的 QoS ,預設是沒有開啟的
需要使用者自行寫入規則,才能運作

我是使用 Linux (Fedora) 做 NAT + QoS 的
要用 tc 和 iptables 兩個指令
tc 負責定義「佇列規則」「類別」
iptables 負責給封包貼標籤,再交給 fw「過濾器」去歸類

整個 shell script ,看起來就像這樣子:
#!/bin/sh

# 清除 eth0 所有佇列規則
tc qdisc del dev eth0 root 2>/dev/null

# 定義最頂層的佇列規則
tc qdisc add dev eth0 root handle 10: htb default 700

# 定義根部的 "10:1" 類別
tc class add dev eth0 parent 10: classid 10:1 htb rate 64kbps ceil 64kbps

# 定義第二層類別
tc class add dev eth0 parent 10:1 classid 10:10 htb rate 48kbps ceil 48kbps
tc class add dev eth0 parent 10:1 classid 10:20 htb rate 16kbps ceil 32kbps

# 定義葉類別 (葉類別具有 prio 優先權等級,數字愈低優先權愈高)
tc class add dev eth0 parent 10:10 classid 10:100 htb rate 16kbps ceil 48kbps prio 3
tc class add dev eth0 parent 10:10 classid 10:200 htb rate 8kbps ceil 32kbps prio 1
tc class add dev eth0 parent 10:10 classid 10:300 htb rate 2kbps ceil 8kbps prio 3
tc class add dev eth0 parent 10:10 classid 10:400 htb rate 2kbps ceil 8kbps prio 3
tc class add dev eth0 parent 10:10 classid 10:500 htb rate 2kbps ceil 32kbps prio 0

tc class add dev eth0 parent 10:20 classid 10:600 htb rate 8kbps ceil 32kbps prio 0
tc class add dev eth0 parent 10:20 classid 10:700 htb rate 8kbps ceil 16kbps prio 2

# 定義各葉類別佇列規則
tc qdisc add dev eth0 parent 10:100 handle 101: pfifo
tc qdisc add dev eth0 parent 10:200 handle 102: pfifo
tc qdisc add dev eth0 parent 10:300 handle 103: pfifo
tc qdisc add dev eth0 parent 10:400 handle 104: pfifo
tc qdisc add dev eth0 parent 10:500 handle 105: pfifo
tc qdisc add dev eth0 parent 10:600 handle 106: pfifo
tc qdisc add dev eth0 parent 10:700 handle 107: pfifo

# 設定過濾器
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 100 fw classid 10:100
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 200 fw classid 10:200
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 300 fw classid 10:300
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 400 fw classid 10:400
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 500 fw classid 10:500
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 600 fw classid 10:600
# tc filter add dev eth0 parent 10: protocol ip prio 100 handle 700 fw classid 10:700


# 給封包貼標籤,以使用於 QoS

# 本機服務封包
iptables -t mangle -A OUTPUT -m owner --uid-owner apache -j MARK --set-mark 100
iptables -t mangle -A OUTPUT -m owner --uid-owner squid -j MARK --set-mark 200
iptables -t mangle -A OUTPUT -m owner --uid-owner mail -j MARK --set-mark 300
iptables -t mangle -A OUTPUT -m owner --uid-owner named -j MARK --set-mark 400
iptables -t mangle -A OUTPUT -m owner --uid-owner sshd -j MARK --set-mark 500

# 來自區網,會過 NAT 的封包
iptables -t mangle -A PREROUTING -i bond0 -s 192.168.1.1 -j MARK --set-mark 600

這些指令要解釋起來,需花很多時間
所以這邊就不多做解釋了
市面上有講解 Linux QoS 的中文書籍,若有興趣可以參考


其實 Linux QoS 設定上,指令並不會說非常難,難的是那個 QoS 觀念

Coyote Linux 可以從額外寫入防火牆規則,進行設定
先把 Coyoe 內建的 QoS 腳本完全關閉
用自定義規則,來實現 QoS
:)




cheerx
2005-08-06, 10:05 AM
attack-max兄的經驗很有意思,把ICMP優先權調高,的確是降低用戶抱怨的好方式.

其實需要較快的反應速度的,大致就只有

1.DNS
2.網路電話或是是訊
3.線上遊戲

其他的應用只要分配合理的優先權,其實沒有太多細節的頻寬管理一樣可以達到管控頻寬,避免抱怨的目的.

acion
2005-08-06, 01:54 PM
attack-max兄的經驗很有意思,把ICMP優先權調高,的確是降低用戶抱怨的好方式.

其實需要較快的反應速度的,大致就只有

1.DNS
2.網路電話或是是訊
3.線上遊戲

其他的應用只要分配合理的優先權,其實沒有太多細節的頻寬管理一樣可以達到管控頻寬,避免抱怨的目的.
呵優先權喔 一直都沒人討論阿

needmaster
2005-08-13, 03:38 PM
我們實際談QOS頻寬管理器基本應用篇(五):優先權[1]

我願將我的實際經驗+百棟社區+企業+私人+15年軟體設計+電子係+9年網路經驗.給大家參考.省去摸索時間.

在頻寬管理器中還有一項管理就是頻寬使用優先權:

1.優先權有分高中低等級,或用數字百分比,或數字等級來區分使用比例等級。
 您可以將常用的服務如語音,瀏覽網站,收發信 均屬最常用的功能時,就可以
 把它的優先權設成高,其他服務設為中。如此當大家都在上網用語音,瀏覽網
 站,收發信等功能時,因為設備會優先處理這些服務而把其他服務慢一點處
 理。因此常用服務發生塞車比率會比較低

 至於比例的分配設定須依環境的實際情形而定才能準確。
 還有您要了解很多如什麼遊戲是用哪port...問題是遊戲很多port喔
 你要真的全部了解才有辦法去設定優先權?

2.市面上很多簡易或低階的QOS設備中有配置這項頻寬優先權的功能,
 而並無真正的所謂的針對每個IP或服務PORT控制上下載頻寬的功能。
 
 希望買設備的人能夠先看清楚產品的手冊規格,免得買了才發覺不是你
 所要的真正頻寬管理器。

3.一台好的頻寬管理器同時會有每個IP或服務PORT及頻寬優先權的管理功能。
 優先權的應用通常在企業上的使用比例會比較多,因為控管比較多。
 而一般的社區、網咖、宿舍的每個使用者都可以使用任何功能,所以較難
 控管(可因環境的重要性加入設定此功能)。


有優先權的設備但欠缺每個IP或服務PORT上下載頻寬設定的功能時,
您會無法真正做到為每個IP做頻寬分配及控管功能。

attack-max
2005-08-13, 04:26 PM
QoS 一詞真的被濫用, 阿狗阿貓牌都掛, 真是呼嚨消費者

我們先了解 QoS 定義:
Quality of Service (QoS)乃是提供穩定、可預測的資料傳送服務, 來滿足使用程式的需求。
QoS 並不能產生新的頻寬, 而是依據應用程式的需求以及網路管理的設定來有效的管理網路頻寬使用率。

一般所謂的頻寬管理器能夠增高網路的使用效能, 但卻不能保證重要網路應用的
穩定運作及反應速度(Consistent response time)。
QoS 機制則能夠將既有的頻寬資源作最佳化的調整, 相關機制的完整應用
對網路上的封包流量做到真正完全的控管。




1.市面上很多簡易或低階的QOS設備中只配置有這項頻寬優先權的功能,
 而並無真正的所謂的針對每個IP或服務PORT控制上下載頻寬的功能。

中低價所謂的頻寬管理器, 一定有頻寬管理功能, 卻不會有完整 QoS 優先權機制, 恕小弟糾正此項。
有良心的廠商會針對一系列頻寬管理產品列出差異性, 可以從表列中看出無 QoS 到有完整 QoS 機制之機種價差
因產品層面不同, 設計難易度更不同, 含 QoS 機制不僅考驗撰寫 Firmware 者的功力
更考驗產品耐用度與穩定性。



2.一台好的頻寬管理器同時會有每個IP或服務PORT及頻寬優先權的管理功能。
 優先權的應用通常在企業上的使用比例會比較多,而一般的社區、網咖、宿
 舍的使用可有可無(可因環境的重要性加入設定此功能)。
小弟遇到的況完全不同, 商業環境之 user 可以容忍有稍微延遲等待時間(商業用途尤其對外服務, 應採用高階 QoS 頻寬管理器, 但不在此討論範圍內), 反倒宿網與網咖消費者, 是無法忍受絲毫一點封包延遲, 可能您的客戶都很不錯, 我所承接的業務要求很高, 在設備價格與網路品質間要取得平衡, 加上同業惡性銷價競爭, 說真的完全沒利潤, 所以退出這市場, 讓一些想玩的 SOHO 族來分大餅。



有優先權的設備但欠缺每個IP或服務PORT上下載頻寬設定的功能時,
您會無法真正做到為每個IP做頻寬分配及控管功能。
這兩著間是相輔相成, 先有頻寬管理機制, 再有 QoS 的頻寬/封包管理機制
架構出最佳化的頻寬控管功能, 能對網路流量做到真正完全的控管
根據使用者設定的策略做資料的分類, 即時的將資料傳送出去
來滿足對於網路頻寬管理的精確需求。

niceplay
2005-08-13, 04:35 PM
不好意思,請容小弟在此發問幾個有關BM-26的問題,不便之處還請站上大大見諒..^^
1.小弟公司目前規劃經理級以上才能使用msn,一般職員只能瀏覽網頁,但小弟在"內部網路群組"設定成<manager>及<employee>兩個群組,也分別將各成員網卡mac加入..但是只要把管制條例中employee的msn選項設成拒絕,employee的成員連上網都不能上網,是小弟哪裡設定錯誤..!?

2.在"服務表"中的服務群組新增之後,竟無法將剛剛新增的服務群組刪除,這是正常的嗎..!?
最後,小弟只是個新手,還望大大們不吝教導,感謝各位大大...^^

linux_xp
2005-08-14, 01:40 AM
不好意思,請容小弟在此發問幾個有關BM-26的問題,不便之處還請站上大大見諒..^^
1.小弟公司目前規劃經理級以上才能使用msn,一般職員只能瀏覽網頁,但小弟在"內部網路群組"設定成<manager>及<employee>兩個群組,也分別將各成員網卡mac加入..但是只要把管制條例中employee的msn選項設成拒絕,employee的成員連上網都不能上網,是小弟哪裡設定錯誤..!?

2.在"服務表"中的服務群組新增之後,竟無法將剛剛新增的服務群組刪除,這是正常的嗎..!?
最後,小弟只是個新手,還望大大們不吝教導,感謝各位大大...^^


1.
不是設完全拒絕,是要針對「某服務」使用的 port,去擋那個 port
例如我們知道
pop3 (mail) 是 port 110
http (www) 是 port 80
要禁止使用 outlook ,擋 110 即可 (ps.IMAP 也要擋)
要禁止瀏覽網頁,擋 80 即可

而 MSN 這個服務,也有它固定的 port
詳細請搜尋關鍵字 "MSN port"

2.
正常,這不是 bug,是那台機器的限制

頻寬管制表要清空,才能修改群組
在頻寬管制表中,如果有看到《使用中》這個字樣
套用該規則的群組就不能刪除
要先把該頻寬管制的規則刪除,然後才能刪除那個群組

這就好比 windows 下,使用中的檔案,windows 不給刪除
是一樣道理

:)

linux_xp
2005-08-14, 01:47 AM
這邊探討頻寬管理很不錯,不過頻寬管理若沒有機器都是空談
不好意思,借用一下版面,還請版大見諒

小弟有一台 BM-26 想賣,賣3,000 (市價要6千多)
台中市面交,有興趣的大大請 PM 給小弟
:)

BM-26 適用在 20人以下的環境
是純硬體式的 QoS 頻寬管理器
人性化全中文設定介面,相當不錯用
因為升級高階設備,用不到了,忍痛割愛
:circle:

niceplay
2005-08-14, 11:33 AM
感謝linux_xp大大回覆...^^

acion
2005-08-15, 12:05 PM
這邊探討頻寬管理很不錯,不過頻寬管理若沒有機器都是空談
不好意思,借用一下版面,還請版大見諒

小弟有一台 BM-26 想賣,賣3,000 (市價要6千多)
台中市面交,有興趣的大大請 PM 給小弟
:)

BM-26 適用在 20人以下的環境
是純硬體式的 QoS 頻寬管理器
人性化全中文設定介面,相當不錯用
因為升級高階設備,用不到了,忍痛割愛
:circle:
哈 我有好幾台友旺的BM-200早就出清了 現在開始要出清QNO的FQR-104跟SLR-9204