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

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


咨詢
建站咨詢
