新聞中心
在網(wǎng)絡(luò)通信中,流量整形控制是一項(xiàng)非常重要的技術(shù)。它可以控制網(wǎng)絡(luò)帶寬,使不同應(yīng)用程序間的帶寬使用平衡,并避免高帶寬消耗對(duì)其他應(yīng)用程序造成影響。在Linux中,可以使用一些工具來(lái)實(shí)現(xiàn)流量整形控制,本文將介紹如何在Linux中實(shí)現(xiàn)流量整形控制。

為拱墅等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及拱墅網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、拱墅網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
1. TC
TC是Linux內(nèi)核默認(rèn)的一個(gè)網(wǎng)絡(luò)控制工具,可用于實(shí)現(xiàn)流量整形控制、延遲控制和帶寬管理等功能。TC以網(wǎng)絡(luò)隊(duì)列規(guī)則為核心,使用一組過(guò)濾和處理規(guī)則,可以定義網(wǎng)絡(luò)流量的限制、分類和調(diào)度。TC的命令行方式使用較為復(fù)雜,但是可以通過(guò)一些腳本進(jìn)行封裝,使其使用更加簡(jiǎn)單。
2. Wondershaper
Wondershaper是一款基于TC的網(wǎng)絡(luò)帶寬管理工具,它可以快速地對(duì)網(wǎng)絡(luò)帶寬進(jìn)行限制和分配,適用于家庭網(wǎng)絡(luò)和小型辦公網(wǎng)絡(luò)。Wondershaper使用起來(lái)非常簡(jiǎn)單,只需要在命令行中執(zhí)行相應(yīng)的命令即可。比如,如果想要將網(wǎng)絡(luò)帶寬限制在1Mbps,可以使用以下命令:
sudo wondershaper eth0 1024 256
其中,eth0是網(wǎng)絡(luò)接口名,1024是限制,單位是Kbps,256是上傳速度限制,單位是Kbps。
3. Trickle
Trickle是一款基于用戶的網(wǎng)絡(luò)控制工具,它可以為每個(gè)用戶限制和分配網(wǎng)絡(luò)帶寬。Trickle使用起來(lái)非常簡(jiǎn)單,只需要通過(guò)命令行指定帶寬限制即可。
比如,如果想要限制某個(gè)應(yīng)用程序的為200KB/s,可以使用以下命令:
trickle -u 200 -d 200 firefox
其中,-u參數(shù)表示上傳速度限制,-d參數(shù)表示限制,firefox表示需要限制的應(yīng)用程序。
4. Nfq
Nfq是一款基于Linux內(nèi)核Netfilter框架的網(wǎng)絡(luò)隊(duì)列管理軟件,在使用前需要做一定的配置。Nfq可以通過(guò)配置網(wǎng)絡(luò)規(guī)則來(lái)實(shí)現(xiàn)流量整形控制和包過(guò)濾等功能,具有較高的靈活性和可定制性。Nfq的命令行使用較為復(fù)雜,需要有一定的Linux系統(tǒng)和網(wǎng)絡(luò)知識(shí)。
:
流量整形控制是保證網(wǎng)絡(luò)帶寬平衡和網(wǎng)絡(luò)性能的重要手段之一。Linux中有多種工具可以實(shí)現(xiàn)流量整形控制,每個(gè)工具都有其自身的特點(diǎn)和使用方法。根據(jù)實(shí)際需要,可以選擇合適的工具來(lái)實(shí)現(xiàn)流量整形控制,以滿足網(wǎng)絡(luò)帶寬限制和優(yōu)化的要求。
相關(guān)問(wèn)題拓展閱讀:
- Tc流控介紹
- linux tc 流量控制,求助的相關(guān)推薦
- 流量控制 流量整形有什么區(qū)別
Tc流控介紹
1.1 SHAPING(限制):控制流量在某個(gè)值以下。限制值可以大大小于有效帶寬,這樣可以平滑突發(fā)數(shù)據(jù)流量,使網(wǎng)絡(luò)更為穩(wěn)定。shaping(限制)只適用于向外的流量。
1.2 SCHEDULING(調(diào)度):通過(guò)調(diào)度數(shù)據(jù)包的傳輸,可以在帶寬范圍內(nèi),按照優(yōu)先級(jí)分配帶寬。SCHEDULING(調(diào)度)也只適于向外的流量。和虧
1.3 POLICING(策略):SHAPING用于處理向外的流量,而POLICIING(策略)用于處理接收到的數(shù)據(jù)。
1.4 DROPPING(丟棄):如果流量超過(guò)某個(gè)設(shè)定的帶寬,就丟棄數(shù)據(jù)包,不管是向內(nèi)還是向外。
2.1隊(duì)列控制 :即 QOS,TOS 瓶頸處的發(fā)送隊(duì)列的規(guī)則控制,常見(jiàn)的有 SFQ、 PRIO。
2.2流量控制 即帶寬控制 , 隊(duì)列的排隊(duì)整形, 一般為 TBF、 HTB。
3.1無(wú)類算法 用于樹(shù)葉級(jí)無(wú)分支的隊(duì)列,例如:SFQ
3.2分類算法 用于多分支的隊(duì)列,例如:PRIO 、TB、F HTB
Tc對(duì)象列表
結(jié)構(gòu)圖
我們可以使用以下三種方式為數(shù)據(jù)包歸類,不過(guò)不是所有的QDisc都能夠使用這三種方式。
FILTER
QDisc、類和過(guò)濾器都有ID。ID可以手工設(shè)置,也可以有內(nèi)核自動(dòng)分配。ID由一個(gè)主序列號(hào)和一個(gè)從序列號(hào)組成,兩個(gè)數(shù)字用一個(gè)冒號(hào)分開(kāi)。
Linux流量控制主要分為建立隊(duì)列、建立分類和建立過(guò)濾器三個(gè)方面。
基本實(shí)現(xiàn)步驟為:
(1) 針對(duì)網(wǎng)絡(luò)物理設(shè)備(如以太網(wǎng)卡eth0)綁定一個(gè)隊(duì)列QDisc;
(2) 在該隊(duì)列上建立分類class;
(3) 為每一分類建立一個(gè)基于路由的過(guò)濾器filter;
(4) 最后與過(guò)濾器相配合,建立特定的路由表。
令牌桶過(guò)濾器 (TBF) 是一個(gè)簡(jiǎn)單的隊(duì)列規(guī)定 : 只允許以不超過(guò)事先設(shè)定的速率到來(lái)的數(shù)據(jù)包通過(guò) , 但可能允許短暫突發(fā)流量朝過(guò)設(shè)定值 .TBF 很精確 , 對(duì)于網(wǎng)絡(luò)和處理器的影響都很小 , 實(shí)現(xiàn)是針對(duì)數(shù)據(jù)的字節(jié)數(shù)進(jìn)行的 , 而不是針對(duì)數(shù)據(jù)包進(jìn)行 , 常用于網(wǎng)關(guān)限速 .
TBF 的實(shí)現(xiàn)在梁螞于一個(gè)緩沖器 ( 桶 ), 不斷地被一些叫做”令牌”的虛擬數(shù)據(jù)以特定速率填充著 . (token rate). 桶最重要的參數(shù)就是它的大小 , 也就是它能夠存儲(chǔ)令牌的數(shù)量 . 每個(gè)到來(lái)的令牌從數(shù)據(jù)隊(duì)列中收集一個(gè)數(shù)據(jù)包 , 然后從桶中被刪除 . 這個(gè)算法關(guān)聯(lián)到兩個(gè)流上——令牌流和數(shù)據(jù)流 , 于是我們得到 3 種情景 :
測(cè)試機(jī)器 192.168.5.52 與 192.168.8.51
在192.168.8.52 上設(shè)置qdisc 進(jìn)行流量控制。
對(duì)192.168.8.52,進(jìn)行tbf設(shè)定:
由于tbf 屬于不可分類qdisc,配置步驟只有一步:
tc qdisc add dev enohandle 1: root tbf rate 10Mbit burst 10kbit limit 20Mbit
handle 設(shè)定qdisc 句柄號(hào) ,省略則隨機(jī)給定
rate 設(shè)定更大的發(fā)包速率,單位默認(rèn)喚渣神字節(jié)
burst 設(shè)定令牌通大小,單位默認(rèn)字節(jié) 注:在 Intel 體系上 ,10 兆 bit/s 的reate需要至少 10k 字節(jié)的burst。
limit 帶寬大小,控制總帶寬,另外一個(gè)作用是,對(duì)沒(méi)有獲取到tokent 排隊(duì)中包進(jìn)行限制,達(dá)到limit 限定則丟棄。
prio qdisc 屬于可分類qdisc,不可動(dòng)態(tài)添加類的算法。
分類算法:主要作用是可以對(duì)多種數(shù)據(jù)流區(qū)別對(duì)待 . 一旦數(shù)據(jù)包進(jìn)入一個(gè)分類的隊(duì)列規(guī)定 , 它就得被送到某一個(gè)類中分類 ,
對(duì)數(shù)據(jù)包進(jìn)行分類的工具是過(guò)濾器 . 過(guò)濾器會(huì)返回一個(gè)決定 , 隊(duì)列規(guī)定就根據(jù)這個(gè)決定把數(shù)據(jù)包送入相應(yīng)的類進(jìn)行排隊(duì) .
每個(gè)子類都可以再次使用它們的過(guò)濾器進(jìn)行進(jìn)一步的分類 . 直到不需要進(jìn)一步分類時(shí) , 數(shù)據(jù)包才進(jìn)入該類包含的隊(duì)列規(guī)定排隊(duì) . 除了能夠包含其它隊(duì)列規(guī)定之外 , 絕大多數(shù)分類的隊(duì)列規(guī)定能夠流量整形。
PRIO 分類優(yōu)先算法 ( 從左至右優(yōu)先發(fā)包 ): 隊(duì)列規(guī)定并不進(jìn)行整形 , 它僅僅根據(jù)你配置的過(guò)濾器把流量進(jìn)一步細(xì)分 .
你可以認(rèn)為 PRIO 隊(duì)列規(guī)定是 pfifo_fast 的一種衍生物 , 區(qū)別在每個(gè)頻道都是一個(gè)單獨(dú)的類 , 而非簡(jiǎn)單的 FIFO.
當(dāng)數(shù)據(jù)包進(jìn)入 PRIO 隊(duì)列規(guī)定后 , 將根據(jù)你給定的過(guò)濾器設(shè)置選擇一個(gè)類 . 缺省情況下有三個(gè)類 , 這些類僅包含純 FIFO 隊(duì)列規(guī)定而沒(méi)有更多的內(nèi)部結(jié)構(gòu) .
你可以把它們替換成你需要的任何隊(duì)列規(guī)定 . 每當(dāng)有一個(gè)數(shù)據(jù)包需要出隊(duì)時(shí) , 首先處理 :1 類 . 只有當(dāng)標(biāo)號(hào)更小的類中沒(méi)有需要處理的包時(shí) , 才會(huì)標(biāo)號(hào)大的類 .
測(cè)試機(jī)器 192.168.5.52 與 192.168.8.51
在192.168.8.52 上設(shè)置qdisc 進(jìn)行流量控制。
通過(guò)iperf –S 選項(xiàng)設(shè)定 TOS包頭字段使流量分類
1.tc qdisc add dev enoroot handle 1: prio priomap 1 1
2.tc qdisc add dev enoparent 1:1 handle 10: pfifo
tc qdisc add dev enoparent 1:2 handle 20: tbf rate 10mb buffer 10kb limit 15mb
tc qdisc add dev enoparent 1:3 handle 30: tbf rate 20kbit buffer 1600 limit 3000
之一步:給網(wǎng)卡定義一個(gè)根qdisc 使用prio算法。注:priomap 選項(xiàng)所設(shè)定的16個(gè)tos標(biāo)識(shí)符與3個(gè)bond的
關(guān)系,可省略,這里為解析選項(xiàng),使用的也是默認(rèn)結(jié)構(gòu)關(guān)系。
第二步:給三個(gè)band即三個(gè)缺省的class 配置子qdisc ,為了測(cè)試效果,這里給class10設(shè)定pfifo算法,避免測(cè)試時(shí)
ssh本身被限制掛起,給class20 、class30 使用tbf算法,限定不同的速率,以體現(xiàn)prio的分類特性,由于
條件限制,可能無(wú)法體現(xiàn)出 三個(gè)class的優(yōu)先級(jí)特性。
第三步:由于prio 協(xié)議使用TOS 字段進(jìn)行分類,在本案例中直接使用iperf 工具 直接定義流量包的tos 包頭,
本例將省略 FILTERS 的配置。(可以配置filter有iptables-mangle表、cgroup)
該 prio算法可以實(shí)現(xiàn)流量分類效果,適用在多業(yè)務(wù)并存的場(chǎng)景。
CBQ qdisc 屬于可分類qdisc,可動(dòng)態(tài)添加類的算法
CBQ 的工作機(jī)制是確認(rèn)鏈路的閑置時(shí)間足夠長(zhǎng) , 以達(dá)到降低鏈路實(shí)際帶寬的目的 . 為此 , 它要計(jì)算兩個(gè)數(shù)據(jù)包的平均發(fā)送間隔 . 操作期間 , 有效閑置時(shí)間的測(cè)量使用EWMA(exponential weighted moving average, 指數(shù)加權(quán)移動(dòng)均值 ) 算法 , 也就是說(shuō)最近處理的數(shù)據(jù)包的權(quán)值比以前的數(shù)據(jù)包按指數(shù)增加 . 計(jì)算出來(lái)的平均時(shí)間值減去 EWMA 測(cè)量值 , 得出的結(jié)果叫做”avgidle”. 更佳的鏈路負(fù)載情況下 , 這個(gè)值應(yīng)當(dāng)是 0.
數(shù)據(jù)包嚴(yán)格按照計(jì)算出來(lái)的時(shí)間間隔到來(lái) . 在一個(gè)過(guò)載的鏈路上 ,avgidle 值應(yīng)當(dāng)是負(fù)的 . 如果這個(gè)負(fù)值太嚴(yán)重 ,CBQ 就會(huì)暫時(shí)禁止發(fā)包 , 稱為”overlimit”( 越限 ).
相反地 , 一個(gè)閑置的鏈路應(yīng)該有很大 avgidle 值 , 這樣閑置幾個(gè)小時(shí)后 , 會(huì)造成鏈路允許非常大的帶寬通過(guò) . 為了避免這種局面 , 我們用 maxidle 來(lái)限 avgidle的值不能太大 .
理論上講 , 如果發(fā)生越限 ,CBQ 就會(huì)禁止發(fā)包一段時(shí)間 ( 長(zhǎng)度就是事先計(jì)算出來(lái)的傳輸數(shù)據(jù)包之間的時(shí)間間隔 ), 然后通過(guò)一個(gè)數(shù)據(jù)包后再次禁止發(fā)包 。
模擬的場(chǎng)景
假如有三種類型的流量需要控制:
配置子qdisc與class,及class 的子qdisc
注: 此處的子qdisc 是歸屬于class的,在定義class直接定義。這些qdisc使用 tc qdisc ls 命令查不到。與prio算法不一樣。prio在創(chuàng)建qdisc 是class已創(chuàng)建,class的子dqisc 無(wú)法通過(guò)一般方式修改,故使用創(chuàng)建qdisc的方式。
建立分類器
6.tc filter add dev enoparent 1:0 protocol ip prio 100 route
7.tc filter add dev enoparent 1:0 protocol ip prio 100 route to 2 flowid 1:2
8.tc filter add dev enoparent 1:0 protocol ip prio 100 route to 3 flowid 1:3
9.tc filter add dev enoparent 1:0 protocol ip prio 100 route to 4 flowid 1:4
修改路由
10.ip route add 192.168.8.51 dev enorealm 2
11.ip route add 192.168.8.53 dev enorealm 3
12.ip route add 192.168.8.0/24 dev enorealm 4
去除分類器來(lái)講,該算法本身適用的場(chǎng)景,流量整形,調(diào)度,合理分配帶寬
注:一般對(duì)于流量控制器所直接連接的網(wǎng)段建議使用IP主機(jī)地址流量控制限制,不要使用子網(wǎng)流量控制限制。如一定需要對(duì)直連子網(wǎng)使用子網(wǎng)流量控制限制,則在建立該子網(wǎng)的路由映射前,需將原先由系統(tǒng)建立的路由刪除,才可完成相應(yīng)步驟。
該算法參考tbf算法,這里注重演示u32分類器。
環(huán)境與要求同上述 CBQ 的例子
添加過(guò)濾器 , 直接把流量導(dǎo)向相應(yīng)的類 :
U32 是常用的分類器,分類器是對(duì)數(shù)據(jù)包進(jìn)行分類工具 , 分類器用與把數(shù)據(jù)包分類并放入相應(yīng)的子隊(duì)列 ,
這些分類器在分類的隊(duì)列規(guī)定內(nèi)部被調(diào)用 . 為了決定用哪個(gè)類處理數(shù)據(jù)包 , 必須調(diào)用所謂的”分類器鏈” 進(jìn)行選擇 . 這個(gè)鏈中包含了這個(gè)分類隊(duì)列規(guī)定所需的所有分類器 .
如圖(結(jié)構(gòu)圖)所示分類器工作在擁有子類的class上,即樹(shù)狀的分支處。
當(dāng)一個(gè)數(shù)據(jù)包入隊(duì)的時(shí)候 , 每一個(gè)分支處都會(huì)咨詢過(guò)濾器鏈如何進(jìn)行下一步 .
你可以把后一個(gè)過(guò)濾器同時(shí)放在 1:1 處, 而得到效率的提高 .
另外使用 HTB 的時(shí)候應(yīng)該把所有的規(guī)則放到根上。
注 : 數(shù)據(jù)包只能向”下”進(jìn)行入隊(duì)操作 ! 只有出隊(duì)的時(shí)候才會(huì)上到網(wǎng)卡所在的位置來(lái) . 他們不會(huì)落到樹(shù)的更底層后送到網(wǎng)卡
linux tc 流量控制,求助的相關(guān)推薦
TC的安裝
TC是Linux自帶的模塊,一般情況下不需要另行安裝,可以用 man tc 查看tc 相關(guān)命令細(xì)節(jié),tc 要求內(nèi)核 2.4.18 以上
view plain copy
##注意:64位機(jī)器上,先執(zhí)行下面命令
ln -s /usr/lib64/tc /usr/lib/tc
TC原理介紹
Linux 操作系統(tǒng)中的流量控制器 TC(Traffic Control) 用于Linux內(nèi)核的流量控制,它利用隊(duì)列規(guī)定建立處理數(shù)據(jù)包的隊(duì)列,并定義隊(duì)列中的數(shù)據(jù)包被發(fā)送的方式,從而實(shí)現(xiàn)對(duì)流量的控制。TC 模塊實(shí)現(xiàn)流量控制功能使用的隊(duì)列規(guī)定分為兩類,一類是無(wú)類隊(duì)列規(guī)定,另一類是分類隊(duì)列規(guī)定。無(wú)類隊(duì)列規(guī)定相對(duì)簡(jiǎn)單,而分類隊(duì)列規(guī)定則引出了分類和過(guò)濾器等概念,使其流量控制功能增強(qiáng)。
無(wú)類隊(duì)列鉛祥規(guī)定是對(duì)進(jìn)入網(wǎng)絡(luò)設(shè)備(網(wǎng)卡)的數(shù)據(jù)流不加區(qū)分統(tǒng)一對(duì)待的隊(duì)列規(guī)定。使用無(wú)類隊(duì)列規(guī)定形成的隊(duì)列能夠接收數(shù)據(jù)包以及重新編排、延遲或丟棄數(shù)據(jù)包。這類隊(duì)列規(guī)定形成的隊(duì)列可以對(duì)整個(gè)網(wǎng)絡(luò)設(shè)備(網(wǎng)卡)的流量進(jìn)行整形,但不能細(xì)分各種情況。常用的無(wú)類隊(duì)列規(guī)定主要有 pfifo_fast(先進(jìn)先出滲戚)、TBF(令牌桶過(guò)濾器)、SFQ(隨機(jī)公平隊(duì)列)、ID(前向隨機(jī)丟包)等等。這類隊(duì)列規(guī)定使用的流量整形手段主要是排序、限速和丟包。
流量控制 流量整形有什么區(qū)別
流量控制(笑洞游滑動(dòng)窗口協(xié)議)是數(shù)據(jù)鏈路層為避免擁塞而采取的措施碰銷(xiāo),顫棚為了提高發(fā)送數(shù)據(jù)的吞吐率,又對(duì)流量進(jìn)行了控制。
而流量整形是調(diào)節(jié)數(shù)據(jù)的平均速率和突發(fā)性;是網(wǎng)絡(luò)層為了避免擁塞而采取的措施的;是由路由器來(lái)進(jìn)行相應(yīng)操作的。
沒(méi)區(qū)別,叫法不一樣罷了。都是基于linux的tc做的流控。
關(guān)于linux流量整形的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開(kāi)通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過(guò)10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
網(wǎng)站標(biāo)題:如何在Linux中實(shí)現(xiàn)流量整形控制?(linux流量整形)
網(wǎng)頁(yè)網(wǎng)址:http://www.5511xx.com/article/dhjphjd.html


咨詢
建站咨詢
