歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux下TC+HTB流量控制

Linux下TC+HTB流量控制

日期:2017/2/28 16:38:48   编辑:Linux教程

C規則涉及到 隊列(QUEUE) 分類器(CLASS) 過濾器(FILTER),filter劃分的標志位可用U32或iptables的set-mark來實現 ) 一般是"控發"不控收 linux下有兩塊網卡,一個eth1是外網,另一塊eth0是內網.在eth0上做HTB。(注 意:filter劃分標志位可用u32打標功能或iptables的set-mark功能,如果用iptables來打標記的話,下行速LV在eth0處 控制,但打標應在進入eth0之前進行,所以,“-i eth1";例子:

主要命令就下面三句:創建一個HTB的根

1.tc qdisc add dev eth0 root handle 1: htb default 20創建一個HTB的類,流量的限制就是在這裡限制的,並設置突發.
2.tc class add dev eth0 parent 1: classid 1:1 htb rate 200kbit(速率) ceil 200kbit burst 20k(突發流量)
創建一個過濾規則把要限制流量的數據過濾出來,並發給上面的類來限制速度3.tc filter add dev eth0 parent 1: prio 1(優先級) protocol ip u32 match ip sport 80 0xfff flowid 1:1
說明:讓交互數據包保持較低的延遲時間,並最先取得空閒帶寬,比如:
ssh telnet dns quake3 irc ftp控制 smtp命令和帶有SYN標記的數據包,都應屬於這一類。為了保證上行數據流不會傷害下行流,還要把ACK數據包排在隊列前面,因為下行數據的ACK必須同上行流進行竟爭。
TC+IPTABLES+HTB+SFQ
1 tcp/ip 協議規定,每個封包,都需要有ACKNOWLEDGE訊息的回傳,也就是說,傳輸的資料需要有一個收到資料的訊息回復,才能決定後面的傳輸速度,並決定是 否重新傳輸遺失的資料,上行的帶寬一部分就是用來傳輸這些ACK資料的.上行帶寬點用大的時候,就會影響ACK資料的傳送速度,並進而影響到下載速度,
2 試驗證明,當上傳滿載時,下載速度變為原來速度的40%,甚至更低,,因為上載文件(包括ftp上傳,發郵件SMTP),如果較大,一個的通訊量令帶寬超 向包和,那麼所有的數據包按照先進先出的原則進行排隊和等待,這就可以解釋為什麼網內其中有人用ftp上載文件或發送大郵件的時候,整個網速變得很慢的原 因.
解決速度之道:
1 為了解決這些速度問題,對經過線路的數據進行了有規則的分流.把本來在寬帶上的瓶頸轉移到我們的LINUX路由器上,可以把帶寬控制的比我們購買的帶寬小一點. 這樣,我們就可以方便的用tc技術對經過的數據進行分流與控制.

我們的想像就像馬路上的車道一樣,有高速道,還有小車道,大車道,需要高速的syn ack icmp ssh等走高速道,需要大量傳輸的ftp-data,smtp等走大車道,不能讓它堵塞整條馬路,各行其道.
linux下的TC(traffic control)就有這樣的作用,只要控制得當,一定會有明顯的效果.tc 和iptables結合是最好的簡單運用的結合方法.
我 們設置過濾器以便用iptables對數據包進行分類,因為iptables更靈活,而且還可以為每個規則設置計數器,iptables用mangle鏈 來mark數據包,告訴了內核,數據包會有一個特定的FWMARK標記值(handle x fw) 表明它應該送給那個類(classid x:x),而prio是優先值,表明那些重要數據應該優先通過那個通道,首先選擇隊列(選擇htb),

Copyright © Linux教程網 All Rights Reserved