Есть 2 источника трафика
Первому из них ничто не должно мешать, он должен иметь возможность привлекать столько доступного трафика, сколько захочет.
Второй, с другой стороны, должен быть ограничен таким образом, чтобы они оба вместе не могли превышать определенный предел. То есть они могут его превысить, но это не должно быть «ошибкой» второго источника - в этом случае весь трафик отводится первым.
Можно ли это сделать с помощью tc
?
Прямо сейчас есть решение, ограничивающее трафик для обоих:
tc qdisc add dev eth0 root handle 1: htb default 101
tc qdisc add dev eth1 root handle 1: htb default 101
tc class add dev eth0 parent 1: classid 1:1 htb rate 50000kbit
tc class add dev eth1 parent 1: classid 1:1 htb rate 50000kbit
tc class add dev eth0 parent 1:1 classid 1:101 htb rate 49500kbit ceil 50000kbit prio 0 quantum 16000
tc qdisc add dev eth0 parent 1:101 handle 101: sfq perturb 10
tc filter add dev eth0 parent 1:0 protocol ip prio 0 handle 1 fw classid 1:101
tc class add dev eth1 parent 1:1 classid 1:101 htb rate 49500kbit ceil 50000kbit prio 0 quantum 16000
tc qdisc add dev eth1 parent 1:101 handle 101: sfq perturb 10
tc filter add dev eth1 parent 1:0 protocol ip prio 0 handle 1 fw classid 1:101
tc class add dev eth0 parent 1:1 classid 1:102 htb rate 500kbit ceil 50000kbit prio 1 quantum 16000
tc qdisc add dev eth0 parent 1:102 handle 102: sfq perturb 10
tc filter add dev eth0 parent 1:0 protocol ip prio 1 handle 2 fw classid 1:102
tc class add dev eth1 parent 1:1 classid 1:102 htb rate 500kbit ceil 50000kbit prio 1 quantum 16000
tc qdisc add dev eth1 parent 1:102 handle 102: sfq perturb 10
tc filter add dev eth1 parent 1:0 protocol ip prio 1 handle 2 fw classid 1:102
Удаление ceil
параметр первого класса должен помочь. Без него не будет жесткого ограничения для вашего первого источника трафика.