tc流量控制
項目背景
- vintage3.0接口lookupforupdage增加一個策略,當帶寬流量tx或rx超過40%,75%隨機返回304;超過60%,此接口均返回304
- 為了對測試機器進行流量控制,使用了tc:設置網絡傳輸速率;傳輸大文件:產生網絡流量
生成大文件
dd if=/dev/zero of=test bs=1M count=10000會生成一個10000M的test文件,文件內容為全0
文件比較大,同機房直接傳輸也需要幾分鐘
注意:文件傳輸需要在同機房,可以打滿帶寬;如果跨機房的話,無法打滿帶寬,也就十幾兆左右。
tc簡介
流量控制目標機器
- 假設eth0是服務器的外網網絡接口(可以用ifconfig查一下目標機器使用的外網網絡接口)。tc隊列添加設備接口root為最上層句柄,標記類型默認使用1的class
tc qdisc add dev eth0 root handle 1: htb default 1解釋:無論是隊列還是class,filter,都有ID之類的標誌符,一般都有parent(父,上層的),因為qdisc在頂部,所有parent無,用root字樣標識,ID用1: 來標誌;default 1表示當某個ip流不滿足任何已設定的filter規則時,將自動歸入class 1 中 - 在qdisc下建立一個class,來制定eth0控制通過本機到外網的速度
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 1000mbit解釋:為eth0下的root隊列1:0添加分類並命名為1:1,類型為htb,速度為100mbit,最大可以到1000mbit。
特別説明:網卡計量用的bit,和我們通常計量的byte換算關係是8:1,所以100mbit的速率是12M,如果想設置流量為25M,rate為200mbit,如下
tc class add dev eth0 parent 1: classid 1:1 htb rate 200mbit ceil 1000mbit此處控制的流量是send(發送)即tx,如果想控制rx(接收)流量,需要設置發送流量的機器;比如想設置接收流量25M,那麼需要設置發送流量機器tc rate 200mbit
實踐
- 基於vintage項目背景,將vintage-server部署在10.13.1.135,啓動vintage-server服務
- 模擬tx(send)流量超過40%,如48M
- 對10.13.1.135進行流量控制
tc qdisc add dev eth0 root handle 1: htb default 1
tc class add dev eth0 parent 1: classid 1:1 htb rate 400mbit ceil 1000mbit
- 10.13.1.135創建一個大文件 dd if=/dev/zero of=test bs=1M count=10000
- 在10.13.1.134接收大文件test,
nc -l 1234 >test - 在10.13.1.135發送大文件test,
nc 10.13.1.134 1234
- 大文件傳輸期間就可以進行自己的測試任務
- 模擬rx(receive)流量超過60%,如72M
- 對10.13.1.134進行流量控制
tc qdisc add dev eth0 root handle 1: htb default 1
* 10.13.1.134發送大文件
tc class add dev eth0 parent 1: classid 1:1 htb rate 400mbit ceil 1000mbit
* 10.13.1.135接收大文件
自動化工具
待續