小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

TC HTB流量控制

 惠所勇 2010-06-13
TC HTB流量控制               
.背景簡介
最近幾個(gè)月在參與一個(gè)軟路由器的開發(fā).該路由器的流量控制功能由TCHTB實(shí)現(xiàn)。下面寫點(diǎn)總結(jié)性的文字,因水平有限,不對(duì)之處敬請各位及時(shí)指出。
   TCTrafficControl的縮寫,HTB顧名思義是一個(gè)層次式的過濾框架,我們可以通過配置TC HTB規(guī)則來實(shí)現(xiàn)流量控制.
.基本概念
   TC規(guī)則涉及到隊(duì)列(queue),分類器(class)和過濾器(filter)三個(gè)概念.
   隊(duì)列用來實(shí)現(xiàn)控制網(wǎng)絡(luò)的收發(fā)速度.通過隊(duì)列,linux可以將網(wǎng)絡(luò)數(shù)據(jù)包緩存起來,然后根據(jù)用戶的設(shè)置,在盡量不中斷連接(TCP)的前提下來平滑網(wǎng)絡(luò)流量.需要注意的是,linux對(duì)接收隊(duì)列的控制不夠好,所以我們一般只用發(fā)送隊(duì)列,即控發(fā)不控收”,。
  class用來表示控制策略.很顯然,很多時(shí)候,我們很可能要對(duì)不同的IP實(shí)行不同的流量控制策略,這時(shí)候我們就得用不同的class來表示不同的控制策略了.
  filter用來將用戶劃入到具體的控制策略中(即不同的class).正如前述,我們要對(duì)A,B兩個(gè)IP實(shí)行不同的控制策略(C,D),這時(shí),我們可 filterA劃入到控制策略C,將B劃入到控制策略D,filter劃分的標(biāo)志位可用u32打標(biāo)功能或IPtablesset-mark功能來實(shí) 現(xiàn)。
三、應(yīng)用過程
我們要實(shí)現(xiàn)這樣的功能。局域網(wǎng)中的用戶分為兩類:特權(quán)用戶和普通用戶,對(duì)特權(quán)用戶和普通用戶的各應(yīng)用的上行/下載實(shí)現(xiàn)獨(dú)立的控制。設(shè)eth0為內(nèi)網(wǎng)網(wǎng)絡(luò)接口,eth1位外網(wǎng)網(wǎng)絡(luò)接口。
   i)首先在eth0eth1分別建立qdiscA qdiscB。qdiscA控制外網(wǎng)數(shù)據(jù)注入內(nèi)網(wǎng)的速度,因此是用來控制下行速度的;qdiscB控制內(nèi)網(wǎng)數(shù)據(jù)灌入外網(wǎng)的速度,因此是用來控制上行速度的。示例指令如下。
   tc qdisc add dev eth0 root handle 1:htb default 91
   解釋如下:無論是隊(duì)列,還是classfilter都有ID之類的標(biāo)志符,一般都有parent,注意ID具有接口本地性,不同的網(wǎng)絡(luò)接口可以有相同的ID。對(duì)于這里因?yàn)?/font>qdisc在頂部,所以parent無,用'root'字樣來標(biāo)識(shí),ID1:來標(biāo)志,'default 91'表示當(dāng)某個(gè)ip流不滿足任何已設(shè)定的filter規(guī)則時(shí),將自動(dòng)歸入class 91.更詳細(xì)的指令規(guī)則說明請參考手冊.
  ii)然后在qdisc下建立兩個(gè)root class,分別用來控制普通用戶和特權(quán)用戶的帶寬(對(duì)于eth0是用來控制下行帶寬,對(duì)于eth1是用來控制上行帶寬的).示例指令如下.
  tc class add dev eth0 parent 1:0 classid1:30 htb rate 2mbit ceil 4mbit prio 2
   解釋如下:rate是指在帶寬緊張的情況下的最大網(wǎng)絡(luò)速度,當(dāng)帶寬空閑時(shí),class可通過向其兄弟借用帶寬而達(dá)到ceil大的網(wǎng)絡(luò)速度,注意,借用表兄弟之間也可借用帶框.prio用來指示借用帶寬時(shí)的競爭力,prio越小,優(yōu)先級(jí)越高,競爭力越強(qiáng).
iii)接著針對(duì)不同的應(yīng)用在各rootclass下設(shè)置不同的類,.示例如下.
tc class add dev eth0 parent 1:30 classid 1:31 htbrate 0.5mbit ceil 2mbit prio 3
指令意義同ii).
同時(shí)為了不使一個(gè)會(huì)話永占帶寬,在葉子結(jié)點(diǎn)(即本文的各應(yīng)用結(jié)點(diǎn))添加隨即公平隊(duì)列sfq.
tc qdisc add dev eth0 parent 1:31 handle 31:sfq perturb  10
iv)接著添加過濾器.
tc filter add dev eth0 parent 1: protocol ipprio 31 handle 31 fw flowid 1:31
v)iptable打標(biāo)
   iptables -t mangle -I FORWARD -i eth1-p tcp --sport %80 -d $IPaddr--j MARK --set-mark 31
   iptables -t mangle -I FORWARD 2 -i eth1 -d $IPaddr--j RETURN

注意下行速率在eth0處控制,但打標(biāo)應(yīng)在進(jìn)入eth0前進(jìn)行,所以規(guī)則中出現(xiàn)了'-i eth1'字樣.下行達(dá)標(biāo)規(guī)則可類推之.
.遺留問題.
有很多細(xì)節(jié)需要考慮,如上行控制與下行控制應(yīng)比較獨(dú)立,即上行控制時(shí),對(duì)下行中局域網(wǎng)內(nèi)用戶上行的ack之類的包應(yīng)不予限制,這個(gè)顯然應(yīng)在iptable之類的打標(biāo)上做文章,但我實(shí)在沒想出什么具體的打標(biāo)策略.有哪位比較清楚,煩請告訴我.
.附圖.
整個(gè)應(yīng)用中的規(guī)則示意圖如下.

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多