亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

使用linux下的TC進行服務器流量控制

添加時間:2011-2-21  添加: admin 

    TC介紹

    在linux中,TC有二種控制方法CBQ和HTB.HTB是設計用來替換CBQ的。它是一個層次式的過濾框架。

    TC包括三個基本的構成塊: 隊列規定qdisc(queueing discipline )、類(class)和分類器(Classifiers)

    隊列(queueing discipline):用來實現控制網絡的收發速度。通過隊列,linux可以將網絡數據包緩存起來,然后根據用戶的設置,在盡量不中斷連接(如 TCP)的前提下來平滑網絡流量。需要注意的是,linux對接收隊列的控制不夠好,所以我們一般只用發送隊列,即“控發不控收”。它封裝了其他兩個主要 TC組件(類和分類器)。內核如果需要通過某個網絡接口發送數據包,它都需要按照為這個接口配置的qdisc(排隊規則)把數據包加入隊列。然后,內核會盡可能多地從qdisc里面取出數據包,把它們交給網絡適配器驅動模塊。

    最簡單的QDisc是pfifo它不對進入的數據包做任何的處理,數據包采用先入先出的方式通過隊列。不過,它會保存網絡接口一時無法處理的數據包。

    隊列規則包括FIFO(先進先出),RED(隨機早期探測),SFQ(隨機公平隊列)和令牌桶(Token Bucket),類基隊列(CBQ),CBQ 是一種超級隊列,即它能夠包含其它隊列(甚至其它CBQ)。

    class用來表示控制策略。很顯然,很多時候,我們很可能要對不同的IP實行不同的流量控制策略,這時候我們就得用不同的class來表示不同的控制策略了。

    filter用來將用戶劃入到具體的控制策略中(即不同的class中)。比如,現在,我們想對xxa,xxb兩個IP實行不同的控制策略(A,B),這時,我們可用filter將xxa劃入到控制策略A,將xxb劃入到控制策略B,filter劃分的標志位可用u32打標功能或IPtables的 set-mark(大多使用iptables來做標記)功能來實現。

    目前,TC可以使用的過濾器有:fwmark分類器,u32分類器,基于路由的分類器和RSVP分類器(分別用于IPV6、IPV4)等;其中,fwmark分類器允許我們使用 Linux netfilter 代碼選擇流量,而u32分類器允許我們選擇基于 ANY 頭的流量 .需要注意的是,filter(過濾器)是在QDisc內部,它們不能作為主體。

    數據包->iptables(在通過iptables時,iptables根據不同的ip來設置不同的mark)->TC(class)->TC(queue)

    應用

    假設eth0位是服務器的外網網絡接口。

    1)首先在eth0的qdiscA,qdiscA控制通過本機到外網的速度,因此是用來控制服務器流出速度的

    #tc qdisc add       dev eth1     root      handle               1:htb   default 1

    添加      設置接口     最上層     句柄(做標記用)     標記    默認使用1的class

    解釋如下:無論是隊列,還是class和filter都有ID之類的標志符,一般都有parent(父,上層的),注意ID具有接口本地性,不同的網絡接口可以有相同的ID.對于這里因為qdisc在頂部,所以parent無,用‘root’字樣來標識,ID用1:來標志

    ‘default 91′表示當某個ip流不滿足任何已設定的filter規則時,將自動歸入class 1中。更詳細的指令規則說明請參考手冊。

    2)然后在qdisc下建立兩個class,來指定eth0控制通過本機到外網的速度

    #tc class add dev eth0 parent 1:0 classid1:30 htb rate 2mbit ceil 4mbit prio 2

    注:以上就是我們控制輸出服務器的速度,為2M,最大可以到4M

    rate: 是一個類保證得到的帶寬值。如果有不只一個類,請保證所有子類總和是小于或等于父類。

    prio:用來指示借用帶寬時的競爭力,prio越小,優先級越高,競爭力越強。

    ceil: ceil是一個類最大能得到的帶寬值。

    3)接著針對不同的應用在各root class下設置不同的類,。示例如下。(如果只有一個類,這個就沒有必要了)

    #tc class add dev eth0 parent 1:30 classid 1:31 htbrate 0.5mbit ceil 2mbit prio 3

    同時為了不使一個會話永占帶寬,在節點(即本文的各應用結點)添加隨即公平隊列sfq.(多IP)

    #tc qdisc add dev eth0 parent 1:31 handle 31:sfq perturb   10

    4)接著添加過濾器。

    #tc filter add dev eth0 parent 1: protocol ipprio 31 handle 31 fw flowid 1:31

    4)用iptable打標,也可以使用u32之類

    #iptables -t mangle -I FORWARD -i !eth1 -p tcp –sport 80 -s xxx.xxx.xxx.xxx  –j MARK –set-mark 31

    TC對最對高速度的控制

    Rate ceiling 速率限度

    參數ceil指定了一個類可以用的最大帶寬, 用來限制類可以借用多少帶寬。缺省的ceil是和速率一樣

    這個特性對于ISP是很有用的, 因為他們一般限制被服務的用戶的總量即使其他用戶沒有請求服務。(ISPS 很想用戶付更多的錢得到更好的服務) ,注根類是不允許被借用的, 所以沒有指定ceil

    注: ceil的數值應該至少和它所在的類的速率一樣高, 也就是說ceil應該至少和它的任何一個子類一樣高

    Burst 突發

    網絡硬件只能在一個時間發送一個包這僅僅取決于一個硬件的速率。 鏈路共享軟件可以利用這個能力動態產生多個連接運行在不同的速度。 所以速率和ceil不是一個即時度量只是一個在一個時間里發送包的平均值。 實際的情況是怎樣使一個流量很小的類在某個時間類以最大的速率提供給其他類。 burst 和cburst 參數控制多少數據可以以硬件最大的速度不費力的發送給需要的其他類。

    如果cburst 小于一個理論上的數據包他形成的突發不會超過ceil 速率, 同樣的方法TBF的最高速率也是這樣。

    你可能會問, 為什么需要bursts . 因為它可以很容易的提高向應速度在一個很擁擠的鏈路上。 比如WWW 流量是突發的。 你訪問主頁。 突發的獲得并閱讀。 在空閑的時間burst將再"charge"一次。

    注: burst 和cburst至少要和其子類的值一樣大。

    TC命令格式:

    加入

    tc qdisc [ add | change | replace | link ] dev DEV [ parent qdisc-id | root ] [ handle qdisc-id ] qdisc [ qdisc specific parameters ]

    tc class [ add | change | replace ] dev DEV parent qdisc-id [ classid class-id ] qdisc [ qdisc specific parameters ]

    tc filter [ add | change | replace ] dev DEV [ parent qdisc-id | root ] protocol protocol prio priority filtertype [ filtertype specific parameters ] flowid flow-id

    顯示

    tc [-s | -d ] qdisc show [ dev DEV ]

    tc [-s | -d ] class show dev DEV tc filter show dev DEV

    查看TC的狀態

    tc -s -d qdisc show dev eth0

    tc -s -d class show dev eth0

    刪除tc規則

    tc qdisc del dev eth0 root

    實例

    一、下載

    下載限制單個IP

    tc qdisc add dev eth0 root handle 1: htb r2q 1

    tc class add dev eth0 parent 1: classid 1:1 htb rate 30mbit ceil 60mbit

    tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 192.168.1.2  flowid 1:1

    就可以限制192.168.1.2的下載速度為30Mbit最高可以60Mbit

    r2q,是指沒有default的root,使整個網絡的帶寬沒有限制

    下載整段IP

    tc qdisc add dev eth0 root handle 1: htb r2q 1

    tc class add dev eth0 parent 1: classid 1:1 htb rate 50mbit ceil 1000mbit

    tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 192.168.111.0/24 flowid 1:1

    就可以限制192.168.111.0 到255 的帶寬為3000k了,實際下載速度為200k左右。

    這種情況下,這個網段所有機器共享這200k的帶寬。

    還可以加入一個sfq(隨機公平隊列)

    tc qdisc add dev eth0 root handle 1: htb r2q 1

    tc class add dev eth0 parent 1: classid 1:1 htb rate 3000kbit burst 10k

    tc qdisc add dev eth0 parent 1:1 handle 10: sfq perturb 10

    tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 192.168.111.168 flowid 1:1

    sfq,他可以防止一個段內的一個ip占用整個帶寬。

    關鍵字:TC、服務器、流量

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站