Linux TC traffic control 对多个特定的ip施加不同的吞吐量throughput以及延迟delay限制

首先描述一下我的目标,在一个局域网上,进行delay和throughput的限制,一共有四台目标机器,ip地址分别为10.0.0.34、10.0.0.35、10.0.0.36、10.0.0.37。
总的来说,tc首先对网卡绑定一个主队列,然后其余的操作都在上面累加。难以理解的地方在于他们的handle名称。一般来说,主队列,也就是root的handle一般是1:,冒号后面不需要加,默认为0.
并非所有的队列都可以限制带宽,例如prio就不可以,我这里使用的是htb。
这个eno2是我的网卡名称,不过自己在用的时候应该用ifconfig看一下,我这台机器有两个网卡,一个是eno1、一个是eno2,我看别的教程都是eth0,我自己于是就直接用了eno1,结果不行。用ifconfig一块,eno1是ipv6的地址,eno2才是10.0.0.*的地址。

tc qdisc add dev eno2 root handle 1: htb 

tc class add dev eno2 parent 1: classid 1:1 htb rate 340Mbit
tc filter add dev eno2 parent 1: protocol ip prio 1 u32 flowid 1:1 match ip dst 10.0.0.34
tc qdisc add dev eno2 parent 1:1 handle 10: netem delay 49.5ms

tc class add dev eno2 parent 1: classid 1:2 htb rate 286Mbit
tc filter add dev eno2 parent 1: protocol ip prio 1 u32 flowid 1:2 match ip dst 10.0.0.35
tc qdisc add dev eno2 parent 1:2 handle 20: netem delay 50ms

tc class add dev eno2 parent 1: classid 1:3 htb rate 236Mbit
tc filter add dev eno2 parent 1: protocol ip prio 1 u32 flowid 1:3 match ip dst 10.0.0.36
tc qdisc add dev eno2 parent 1:3 handle 30: netem delay 36.3ms

tc class add dev eno2 parent 1: classid 1:4 htb rate 433Mbit
tc filter add dev eno2 parent 1: protocol ip prio 1 u32 flowid 1:4 match ip dst 10.0.0.37
tc qdisc add dev eno2 parent 1:4 handle 40: netem delay 51.45ms

flowid指定了一个目标class(或qdisc)句柄,filter所选择的数据包将发往这个句柄所指向的class(或qdisc)。
经过上面的语句,可以得到下面的图
在这里插入图片描述
其中圆形为qdisc、菱形为filter、矩形为class,对于filter中的ip标明了它所代表的destination,对于qdisc和class第二行数字代表了它的handle,第三行代表了一些限制信息。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值