Есть два типа трафика - обычный и низкоприоритетный. И есть ряд одинаковых клиентов - пусть для определённости будет пять - A, B, C, D, E соответсвенно (хотя на самом деле их больше).
Нужно чтобы канал делился поровну между клиентами, но скорость низкоприоритетого трафика была в два раза меньше чем обычного.
Т. е. к примеру пусть клиент A и B ничего не качают, а C качает только обычный трафик. 1. Если D качает только обычный трафик, а E - только низкоприоритетный, то C и D должны получить 2/5 канала, E - 1/5. 2. Если D и E качают только низкоприоритетный трафик, то C должен получить 1/2, D и E - 1/4 канала. 3. Если D качает только обычный трафик, а E - обычный и низкоприоритетный, то клиенты C, D, E должны получить по 1/3 канала.
Если сделать TC="tc class add dev eth0 parent" tc qdisc add dev imq0 handle 1:0 root htb $TC 1:0 classid 1:1 htb rate $[RATE]kbit for num in `seq 1 5` ; do $TC 1:1 classid 1:2${num} htb rate $[(2*RATE)/15]kbit ceil $[RATE]kbit $TC 1:1 classid 1:3${num} htb rate $[RATE/15]kbit ceil $[RATE]kbit done то будет выполняться условия 1, 2. Но в случае 3 кленты C и D получат по 2/7, E - 3/7 канала.
Если сделать for num in `seq 1 5` ; do $TC 1:1 classid 1:1${num} htb rate $[RATE/5]kbit ceil $[RATE]kbit $TC 1:1${num} classid 1:2${num} htb rate $[(2*RATE)/15]kbit ceil $[RATE]kbit $TC 1:1${num} classid 1:3${num} htb rate $[RATE/15]kbit ceil $[RATE]kbit done то во всех случаях клиенты C, D, E получат по 1/3 канала.
Если же сделать for num in `seq 1 5` ; do $TC 1:1 classid 1:1${num} htb rate $[RATE/5]kbit ceil $[RATE]kbit $TC 1:1${num} classid 1:2${num} htb rate $[(2*RATE)/15]kbit ceil $[RATE]kbit prio 0 $TC 1:1${num} classid 1:3${num} htb rate $[RATE/15]kbit ceil $[RATE]kbit prio 1 done то будут выполняться условия 1 и 3. В случае 2 клиенты D и E получат по 1/5, C - 3/5 канала.