Есть условно говоря 20 (известное число) клиентов. На шлюзе надо делить исходящий в сторону клиентов трафик поровну. Что будет лучше - создать root htb qdisc, к нему присоденить root htb class и под ним создать 20 htb класов, или создать root htb qdisc, к нему присоденить root htb class, а к нему esfq qdisc - например `tc qdisc add dev eth0 parent 1:1 handle 2: esfq hash dst_direct`.
Второй вопрос по поводу htb. Пусть у меня есть 3 клиента и для каждого клиента создан свой htb класс:
tc class add dev eth0 parent 1: classid 1:1 htb rate 512kbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate $[512/3]kbit ceil 512kbit
tc class add dev eth0 parent 1:1 classid 1:11 htb rate $[512/3]kbit ceil 512kbit
tc class add dev eth0 parent 1:1 classid 1:12 htb rate $[512/3]kbit ceil 512kbit
По идее канал между ними должен делиться поровну, но я заметил следующую проблемму: пусть например 1:10 ничего не качает, 1:11 качает что нибудь одним потоком (напрмер запущен wget), а 1:12 качает что-нибудь многопоточной качалкой - то 1:12 съедает большую часть канала по сравнению с 1:11. С этим можно как нибуть бороться?
И третьий вопрос по поводу приорететов. Например есть схема
tc class add dev eth0 parent 1: classid 1:1 htb rate 512kbit
tc class add dev eth0 parent 1:1 classid 1:2 htb rate $[512/2]kbit ceil 512kbit
tc class add dev eth0 parent 1:1 classid 1:3 htb rate $[512/2]kbit ceil 512kbit
tc class add dev eth0 parent 1:2 classid 1:21 htb prio 0 rate $[512/2]kbit ceil 512kbit
tc class add dev eth0 parent 1:2 classid 1:22 htb prio 1 rate $[512/2]kbit ceil 512kbit
tc class add dev eth0 parent 1:3 classid 1:31 htb prio 0 rate $[512/2]kbit ceil 512kbit
tc class add dev eth0 parent 1:3 classid 1:32 htb prio 1 rate $[512/2]kbit ceil 512kbit
Вопрос в том будет ли класс 1:21 иметь больший приоретет по сравнению с 1:32, и наоборот 1:31 больший приоритет по сравнеию с 1:22? Или приоритеты действуют только в рамках одного родительского класса?