TC实现带宽分配

1:为网卡分配队列
2:在该队列上建立分类
3:根据需要建立子队列和子分类
4:为每个分类建立过滤器

创建队列:#tc qdisc add dev eth0 root handle 1: htd default 11
dev eth0:要操作的网卡为eth0
root:为网卡eth0添加的是一个根队列
handle 1: :队列的句柄为1:
htb:添加的队列为HTB队列
default 11:htb特有的队列参数,意思是所以未分类的流量都将分配给类别1:11

为根队列创建相应的类别:
#tc class add dev eth0 parent 1: classid 1:11 htb rate 40mbit ceil 40mbit
#tc class add dev eth0 parent 1: classid 1:12 htb rate 40mbit ceil 40mbit
#tc class add dev eth0 parent 1: classid 1:13 htb rate 20mbit ceil 20mbit
classid1:11:创建一个标识为1:11的类别
rate 40mbit:系统将为该类别确保带宽40mbit
cell 40mbit:该类别最高可占用带宽为40mbit

为类别设置过滤器:
#tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 80 0xfff flowid 1:11
#tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 25 0xfff flowid 1:12
#tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 23 0xfff flowid 1:13
protocol ip:该过滤器应该检查报文分组的协议字段
prio 1:对报文的处理优先级相同(不同优先级的过滤器,系统将按照从小到大的
优先级顺序来执行;相同优先级的过滤器,系统将按照命令的先后顺序执行)
使用u32选择器,判断的是dport字段,如果该字段与0xfff进行与操作的结果为某数值,
则将该数据流分配到固定类别中

以上方法固定了带宽的分配,并不能最大化利用带宽,可通过以下操作实现灵活的带宽共享和独占模式
#tc qdisc add dev eth0 root handle 1: htd default 21
#tc class add dev eth0 parent 1: classid 1:1 htb rate 20mbit ceil 20mbit
#tc class add dev eth0 parent 1: classid 1:2 htb rate 80mbit ceil 80mbit
#tc class add dev eth0 parent 1:2 classid 1:21 htb rate 40mbit ceil 80mbit
#tc class add dev eth0 parent 1:2 classid 1:22 htb rate 40mbit ceil 80mbit
#tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 80 0xfff flowid 1:21
#tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 25 0xfff flowid 1:22
#tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 23 0xfff flowid 1:1

猜你喜欢

转载自blog.csdn.net/weixin_43664746/article/details/94736511
tc