Linux流量控制工具TC
tc是用來提供流量控制的強大工具,自己在進行DDoS攻擊模擬、網路負載測試中一直使用!本文是簡單的使用介紹, 流量控制工具TC詳細說明有詳細的介紹
概要
- 簡介
- netem是linux核心版本提供的一個網路模擬功能模組
- tc 是 Linux 系統中的一個工具,全名為traffic control(流量控制)。tc 可以用來控制 netem 的工作模式
- 如果想使用 netem ,需要至少兩個條件,一個是核心中的 netem 功能被包含,另一個是要有 tc 。
- 原理
- TC用於Linux核心的流量控制,主要是通過在輸出埠處建立一個佇列來實現流量控制。
- 一般只能限制網路卡傳送的資料包,不能限制網路卡接收的資料包,所以可以通過改變傳送次序來控制傳輸速率。Linux流量控制主要是在輸出介面排列時進行處理和實現的
簡單使用
以下功能一般是基於無類佇列,可完成如下功能如下(故障模擬)
1. 模擬延遲傳輸
以使用netem(Token Bucket Filter)為例
tc qdisc add dev ens33 root netem delay 100ms
- 該命令將 ens33 網路卡的傳輸設定為延遲100毫秒傳送
tc qdisc del dev ens33 root netem delay 100ms
- 刪除
tc qdisc add dev ens33 root netem delay 100ms 10ms
- 該命令將 ens33 網路卡的傳輸設定為延遲 100ms ± 10ms (90 ~ 110 ms 之間的任意值)傳送
- 更真實的情況下,延遲值不會這麼精確,會有一定的波動,可以用該命令來模擬出帶有波動性的延遲值
tc qdisc add dev ens33 root netem delay 100ms 10ms 30%
- 該命令將 ens33 網路卡的傳輸設定為 100ms ,同時,大約有 30% 的包會延遲 ± 10ms 傳送。
- 進一步加強這種波動的隨機性
2. 模擬網路丟包
以netem為例
tc qdisc add dev ens33 root netem loss 1%
- 該命令將 ens33 網路卡的傳輸設定為隨機丟掉 1% 的資料包。
tc qdisc add dev ens33 root netem loss 1% 30%
- 設定丟包的成功率
- 該命令將 ens33 網路卡的傳輸設定為隨機丟掉 1% 的資料包,成功率為 30% 。
3. 模擬包重複
tc qdisc add dev ens33 root netem duplicate 1%
- 該命令將 ens33 網路卡的傳輸設定為隨機產生 1% 的重複資料包 。
4. 模擬包損壞
tc qdisc add dev ens33 root netem corrupt 0.2%
- 該命令將 ens33 網路卡的傳輸設定為隨機產生 0.2% 的損壞的資料包 。 (核心版本需在2.6.16以上)
5. 模擬包亂序
tc qdisc change dev ens33 root netem delay 10ms reorder 25% 50%
- 該命令將 ens33 網路卡的傳輸設定為:有 25% 的資料包(50%相關)會被立即傳送,其他的延遲 10 秒。
tc qdisc add dev ens33 root netem delay 100ms 10ms
- 該命令會在一定程度上打亂髮包的次序
流量控制模擬
以tbf(Token Bucket Filter)為例,詳細內容見流量控制工具TC詳細說明,tbf更適合用來控制速率。百度百科介紹
簡介
令牌桶過濾器(TBF)是一個簡單的佇列規定:只允許以不超過事先設定的速率到來的資料包通過,但可能允許短暫突發流量朝過設定值。- TBF很精確,對於網路和處理器的影響都很小。所以如果您想對一個網路卡限速,它應該成為您的第一選擇!
- TBF的實現在於一個緩衝器(桶),不斷地被一些叫做“令牌”的虛擬資料以特定速率填充著。 (token rate)。桶最重要的引數就是它的大小,也就是它能夠儲存令牌的數量。
- 每個到來的令牌從資料佇列中收集一個資料包,然後從桶中被刪除。這個演算法關聯到兩個流上——令牌流和資料流,有三種情形:
1) 資料流以等於令牌流的速率到達TBF。這種情況下,每個到來的資料包都能對應一個令牌,然後無延遲地通過佇列。
2) 資料流以小於令牌流的速度到達TBF。通過佇列的資料包只消耗了一部分令牌,剩下的令牌會在桶裡積累下來,直到桶被裝滿。剩下的令牌可以在需要以高於令牌流速率傳送資料流的時候消耗掉,這種情況下會發生突發傳輸。
3) 資料流以大於令牌流的速率到達TBF。這意味著桶裡的令牌很快就會被耗盡。導致TBF中斷一段時間,稱為“越限”。如果資料包持續到來,將發生丟包。 - 令牌的積累可以導致越限的資料進行短時間的突發傳輸而不必丟包,但是持續越限的話會導致傳輸延遲直至丟包。
示例
tc qdisc add dev ens33 root tbf rate 100mbit latency 50ms burst 1000
tc qdisc change dev ens33 root tbf rate 200mbit latency 50ms burst 1000
tc qdisc change dev ens33 root tbf rate 300mbit latency 50ms burst 1000
tc qdisc del dev ens33 root tbf rate 300mbit latency 50ms burst 1000
測試情況(依賴具體的硬體)
TC進階
相關文章
- 流量控制--3.Linux流量控制的元件Linux元件
- Linux 流量監控工具 iftopLinux
- 流量控制--4.軟體和工具
- 使用併發工具實現 RPC 呼叫流量控制RPC
- 控制 Egress 流量
- Java流量控制Java
- TCP流量控制TCP
- 聊聊流量控制
- TCP流量控制、擁塞控制TCP
- Linux下監控流量常用的三大工具!Linux
- Linux流量監控工具 - iftop (最全面的iftop教程)Linux
- 在Windows作業系統上,有一些流量控制工具可以幫助使用者監視、管理和控制網路流量。以下是一些常見的Windows網路流量控制工具:Windows作業系統
- TCP流量控制和擁塞控制TCP
- 流量控制--概覽
- TCP的流量控制TCP
- TCP之 流量控制與擁塞控制TCP
- tc_qos
- TC - front end
- Linux檢視網路卡流量方法的工具和命令彙總Linux
- Percona XtraDB Cluster之流量控制
- Dapr 交通流量控制示例
- Ocelot中文文件-流量控制
- 淺談TCP(2):流量控制與擁塞控制TCP
- 流量特徵提取工具NFStream特徵NFS
- 如何在 Linux 下使用 TC 優雅的實現網路限流Linux
- TCP 重傳、滑動窗⼝、流量控制、擁塞控制TCP
- TCP 流量控制-滑動視窗TCP
- 分散式流量控制框架sentinel初探分散式框架
- Linux下監控流量用什麼工具好?這幾個必不可少!Linux
- Linux程式控制Linux
- sentine 流量控制與服務容錯
- 流量控制--5.Classless Queuing Disciplines (qdiscs)UI
- 流量控制--6.Classful Queuing Disciplines (qdiscs)UI
- TC275---VADC筆記筆記
- TCP協議的秘密武器:流量控制與擁塞控制TCP協議
- TCPCopy 線上流量複製工具TCP
- 手機流量檢測工具GlassWire
- Linux網路流量安全審計Linux
- [Linux]程序控制Linux