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

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


咨詢
建站咨詢
