LINUX.ORG.RU
ФорумAdmin

TC, HTB, ESFQ: вопрос по приоритетам


0

0

Добрый день. Мой вопрос как сделать, чтобы высокоприоритетному трафику были наименьшие задержки и наибольшая скорость. Вот мой конфиг шейпера:

/sbin/tc qdisc add dev eth1 root handle 1: htb default 555
/sbin/tc class add dev eth1 parent 1: classid 1:2 htb rate 12Mbit

######################## LOCAL #####################################################

/sbin/tc class add dev eth1 parent 1:2 classid 1:100 htb rate 2Mbit ceil 10Mbit prio 0
/sbin/tc qdisc add dev eth1 parent 1:100 esfq perturb 5 hash fwmark

#---Admin+DNS+Games+Short---#
/sbin/tc class add dev eth1 parent 1:100  classid 1:110 htb rate 1000Kbit ceil 10000Kbit prio 1
/sbin/tc qdisc add dev eth1 parent 1:110 esfq perturb 5 hash dst
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 1   fw flowid 1:110
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 2   fw flowid 1:110
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 4   fw flowid 1:110
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 19  fw flowid 1:110


#---MAIL+HTTP---#
/sbin/tc class add dev eth1 parent 1:100  classid 1:120 htb rate 700Kbit ceil 2000Kbit prio 2
/sbin/tc qdisc add dev eth1 parent 1:120 esfq perturb 5 hash dst
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 8  fw flowid 1:120
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 14 fw flowid 1:120

#---FTP+Other---#
/sbin/tc class add dev eth1 parent 1:100  classid 1:130 htb rate 300Kbit ceil 2000Kbit prio 3
/sbin/tc qdisc add dev eth1 parent 1:130 esfq perturb 5 hash dst
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 11  fw flowid 1:130
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 17  fw flowid 1:130


##############################        Ukraine       ####################################

/sbin/tc class add dev eth1 parent 1:2  classid 1:200 htb rate 1000Kbit ceil 1300Kbit prio 0
/sbin/tc qdisc add dev eth1 parent 1:200 esfq perturb 5 hash fwmark

#---Games+Short---#
/sbin/tc class add dev eth1 parent 1:200  classid 1:210 htb rate 500Kbit ceil 1000Kbit prio 1
/sbin/tc qdisc add dev eth1 parent 1:210 esfq perturb 5 hash dst
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 3  fw flowid 1:210

#---MAIL+HTTP---#
/sbin/tc class add dev eth1 parent 1:200  classid 1:220 htb rate 350Kbit ceil 1000Kbit prio 2
/sbin/tc qdisc add dev eth1 parent 1:220 esfq perturb 5 hash dst
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 7   fw flowid 1:220
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 13  fw flowid 1:220

#---FTP+Other---#
/sbin/tc class add dev eth1 parent 1:200  classid 1:230 htb rate 250Kbit ceil 1000Kbit prio 3
/sbin/tc qdisc add dev eth1 parent 1:230 esfq perturb 5 hash dst
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 10  fw flowid 1:230
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 16  fw flowid 1:230

###############################         World        ###################################

/sbin/tc class add dev eth1 parent 1:2 classid 1:300 htb rate 128Kbit ceil 140Kbit prio 0
/sbin/tc qdisc add dev eth1 parent 1:300 esfq perturb 5 hash fwmark

#---Games+Short+ICQ---#
/sbin/tc class add dev eth1 parent 1:300  classid 1:310 htb rate 64Kbit ceil 128Kbit prio 1
/sbin/tc qdisc add dev eth1 parent 1:310 esfq perturb 5 hash dst
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 5  fw flowid 1:310
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 6  fw flowid 1:310


#---MAIL+HTTP---#
/sbin/tc class add dev eth1 parent 1:300  classid 1:320 htb rate 45Kbit ceil 128Kbit prio 2
/sbin/tc qdisc add dev eth1 parent 1:320 esfq perturb 5 hash dst
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 9   fw flowid 1:320
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 15  fw flowid 1:320

#---FTP+Other+128K---#
/sbin/tc class add dev eth1 parent 1:300  classid 1:330 htb rate 19Kbit ceil 128Kbit prio 3
/sbin/tc qdisc add dev eth1 parent 1:330 esfq perturb 5 hash dst
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 12  fw flowid 1:330
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 18  fw flowid 1:330
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 20  fw flowid 1:330

################### Default #################################################

/sbin/tc class add dev eth1 parent 1:2 classid 1:555 htb rate 560Kbit prio 1
/sbin/tc qdisc add dev eth1 parent 1:555 handle 555 esfq perturb 5 hash dst

  При этом смотрю по игре (Counter-Strike class 1:210 prio 1). Когда никто не качает пинг 16-20, когда начинается скачка с ФТП (class 1:230 prio 3) пинг возрастает до 300-400.
  Пакеты маркируются в mangle POSTROUTING правильно.
  eth1 - сетевая карта, смотрит на LAN.
Подскажите, как исправить?

Re: TC, HTB, ESFQ: вопрос по приоритетам

Так это нормально, со стороны провайдера в твою сторону приориетеы не ставит. А товй конфиг гаранитрует что приоритетеные пакеты первыми уйдут с твоего внешнего интерфейса.

Bloody ()
Ответ на: Re: TC, HTB, ESFQ: вопрос по приоритетам от Bloody

Re: TC, HTB, ESFQ: вопрос по приоритетам

Что-то я не понял. eth1 - это внутренний интерфейс, смотрит на локальную сеть, которой раздается интернет. Низкоприоритетный траф задержуется, высокоприоритетный обрабатывается в первую очередь. Т.о. я распределяю трафик исходящий на локальную сеть. Вообще это все теория. При написании использовал статьи разных умных людей типа http://www.opennet.ru/base/net/adv_route_qos.txt.html http://gazette.linux.ru.net/rus/articles/adsl_bandwidth_management-howto.html http://remizov.pp.ru/ru/trn/doc/manuals/htb-manual http://www.dzti.edu.lv/isp-serv/index.php?l=3 , так что идея говорит, что все должно работать. Вопрос в правильности конфигов. Если нужно для дела, могу еще скрипт iptables показать.

Rykun ()
Ответ на: Re: TC, HTB, ESFQ: вопрос по приоритетам от Rykun

Re: TC, HTB, ESFQ: вопрос по приоритетам

Первый вариант - забивается буфер у провайдера. Попробуй поставить меньшую скорость в classid 1: и соотвественно для подклассов и затем посмотреть пинг.

Если первое не поможет то используй prio вместо root htb qdisc, а уже на prio навешать htb qdisc-и.

anonymous ()
Ответ на: Re: TC, HTB, ESFQ: вопрос по приоритетам от anonymous

Re: TC, HTB, ESFQ: вопрос по приоритетам

И во вторых - что эта надпись означает /sbin/tc qdisc add dev eth1 parent 1:200 esfq perturb 5 hash fwmark

Опять же 350+500+250 !=1000, (1000+1000+128) != 2Mbit - классы будут конкурировать друг с другом.

anonymous ()
Ответ на: Re: TC, HTB, ESFQ: вопрос по приоритетам от anonymous

Re: TC, HTB, ESFQ: вопрос по приоритетам

> /sbin/tc qdisc add dev eth1 parent 1:200 esfq perturb 5 hash fwmark

Дисциплина очереди для "Украины". hash fwmark из readme esfq:
=============HASH TYPES==============

classic
   This is original SFQ hash. Traffic is separated by flow (TCP connection, UDP
   stream, etc.).

src, dst, fwmark
   Hash by the packet's source IP, destination IP, or iptables mark,
   respectively. The hashing algorithm is well suited for a large range of
   diverse input values. Collisions will happen occasionally; see the "perturb"
   parameter. If the range of values to be hashed is less than 2^14 (16384),
   consider using the direct hash methods listed below. 
...

>Опять же 350+500+250 !=1000, 
Спасибо. Арифметика подвела.

>(1000+1000+128) != 2Mbit
Тут, наверное, Вы ошиблись. Это потомки 12-Мбитного класса, а не 2-мбитного. 
Попробую понизить скорости, как Вы советуете.

Rykun ()
Ответ на: Re: TC, HTB, ESFQ: вопрос по приоритетам от Rykun

Re: TC, HTB, ESFQ: вопрос по приоритетам

> /sbin/tc qdisc add dev eth1 parent 1:200 esfq perturb 5 hash fwmark

> Дисциплина очереди для "Украины". hash fwmark из readme esfq: > =============HASH TYPES============== Это я знаю. Еще раз подробно

/sbin/tc class add dev eth1 parent 1:2 classid 1:200 htb rate 1000Kbit ceil 1300Kbit prio 0 >>>> /sbin/tc qdisc add dev eth1 parent 1:200 esfq perturb 5 hash fwmark

Это зачем?

#---Games+Short---# /sbin/tc class add dev eth1 parent 1:200 classid 1:210 htb rate 500Kbit ceil 1000Kbit prio 1 /sbin/tc qdisc add dev eth1 parent 1:210 esfq perturb 5 hash dst /sbin/tc filter add dev eth1 parent 1: protocol ip prio 1 handle 3 fw flowid 1:210

Или наоборот это зачем?

+ Ещё есть вариант увеличть r2q - но тут он не поможет - только если переписать по другому.

Идея в том что пучть есть два подкласса класса 1000bit/s - 200kbit/s prio 0 800kbit/s prio 1. htb шлет кусками (quantum) = rate/r2q. r2q по умолчанию 10, т. е. Htb сначала пошлет 800/10 = 80 kbit из низкоприоритетного, затем 200/10 из высокопприоритетного - т. е. задержка на htb для высокоприоритетного - 80-100ms.

Т. е. можно увеличить r2q - но quantum должен быть > mtu, а в правилах есть rate=16kbit - т. е. наоборот надо уменшать r2q до 1 - чтобы это правило нормально работало (чтобы было ровно 16).

И второй вариант как я сказал - использовать prio - там высокоприоритетный сразу шлётся.

anonymous ()
Ответ на: Re: TC, HTB, ESFQ: вопрос по приоритетам от anonymous

Re: TC, HTB, ESFQ: вопрос по приоритетам

> Htb сначала пошлет 800/10 = 80 kbit из низкоприоритетного, затем 200/10 из высокопприоритетного - т. е. задержка на htb для высокоприоритетного - 80-100ms.
Не совсем понял. Почему htb сначала пошлет низкоприоритетный, а только потом высокоприоритетный, ведь смысл приоритета тогда в чем?

Вобщем, остановился на таком варианте:
hash=dst

/sbin/tc qdisc add dev eth1 root handle 1: htb

/sbin/tc class add dev eth1 parent 1: classid 1:2 htb rate 3128Kbit

######################## LOCAL #####################################################

/sbin/tc class add dev eth1 parent 1:2 classid 1:100 htb rate 2Mbit ceil 2Mbit prio 0

#---Admin+DNS+Games+Short---#
/sbin/tc class add dev eth1 parent 1:100  classid 1:110 htb rate 1000Kbit ceil 10000Kbit prio 1
/sbin/tc qdisc add dev eth1 parent 1:110 esfq perturb 5 hash $hash
#/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 1   fw flowid 1:110
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 2   fw flowid 1:110
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 4   fw flowid 1:110
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 19  fw flowid 1:110


#---MAIL+HTTP---#
/sbin/tc class add dev eth1 parent 1:100  classid 1:120 htb rate 700Kbit ceil 2000Kbit prio 2
/sbin/tc qdisc add dev eth1 parent 1:120 esfq perturb 5 hash $hash
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 8  fw flowid 1:120
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 14 fw flowid 1:120

#---FTP+Other---#
/sbin/tc class add dev eth1 parent 1:100  classid 1:130 htb rate 300Kbit ceil 2000Kbit prio 3
/sbin/tc qdisc add dev eth1 parent 1:130 esfq perturb 5 hash $hash
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 11  fw flowid 1:130
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 17  fw flowid 1:130


##############################        Ukraine       ####################################

/sbin/tc class add dev eth1 parent 1:2  classid 1:200 htb rate 1000Kbit ceil 1000Kbit prio 0

#---Games+Short---#
/sbin/tc class add dev eth1 parent 1:200  classid 1:210 htb rate 500Kbit ceil 1000Kbit prio 1
/sbin/tc qdisc add dev eth1 parent 1:210 esfq perturb 5 hash $hash
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 3  fw flowid 1:210

#---MAIL+HTTP---#
/sbin/tc class add dev eth1 parent 1:200  classid 1:220 htb rate 350Kbit ceil 1000Kbit prio 2
/sbin/tc qdisc add dev eth1 parent 1:220 esfq perturb 5 hash $hash
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 7   fw flowid 1:220
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 13  fw flowid 1:220

#---FTP+Other---#
/sbin/tc class add dev eth1 parent 1:200  classid 1:230 htb rate 150Kbit ceil 1000Kbit prio 3
/sbin/tc qdisc add dev eth1 parent 1:230 esfq perturb 5 hash $hash
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 10  fw flowid 1:230
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 16  fw flowid 1:230



###############################         World        ###################################

/sbin/tc class add dev eth1 parent 1:2 classid 1:300 htb rate 128Kbit ceil 128Kbit prio 0

#---Games+Short+ICQ---#
/sbin/tc class add dev eth1 parent 1:300  classid 1:310 htb rate 64Kbit ceil 128Kbit prio 1
/sbin/tc qdisc add dev eth1 parent 1:310 esfq perturb 5 hash $hash
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 5  fw flowid 1:310
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 6  fw flowid 1:310


#---MAIL+HTTP---#
/sbin/tc class add dev eth1 parent 1:300  classid 1:320 htb rate 45Kbit ceil 128Kbit prio 2
/sbin/tc qdisc add dev eth1 parent 1:320 esfq perturb 5 hash $hash
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 9   fw flowid 1:320
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 15  fw flowid 1:320

#---FTP+Other+128K---#
/sbin/tc class add dev eth1 parent 1:300  classid 1:330 htb rate 19Kbit ceil 128Kbit prio 3
/sbin/tc qdisc add dev eth1 parent 1:330 esfq perturb 5 hash $hash
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 12  fw flowid 1:330
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 18  fw flowid 1:330
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 20  fw flowid 1:330

Заметил такую следующую штуку. Все приоритеты работают (в играх пинг нормальный), скорости режутся по плану только тогда, когда не идет скачка с FTP. Не смотря на то, что это самый низкоприоритетный класс он заберает на себя почти всю полосу. Например, если идет закачка с HTTP сервера и с FTP сервера, то наблюдаем вот такую картину:

class htb 1:200 parent 1:2 rate 1000Kbit ceil 1000Kbit burst 2100b cburst 2100b
 Sent 1867342240 bytes 1261660 pkt (dropped 0, overlimits 0 requeues 0)
 rate 986520bit 81pps backlog 0b 0p requeues 0
 lended: 892283 borrowed: 0 giants: 0
 tokens: 1739 ctokens: 1739

class htb 1:220 parent 1:200 leaf 8005: prio 2 rate 350000bit ceil 1000Kbit burst 1774b cburst 2100b
 Sent 321847981 bytes 234101 pkt (dropped 10, overlimits 0 requeues 0)
 rate 87264bit 7pps backlog 0b 0p requeues 0
 lended: 176136 borrowed: 57965 giants: 0
 tokens: 6377 ctokens: 4832

class htb 1:230 parent 1:200 leaf 8006: prio 3 rate 150000bit ceil 1000Kbit burst 1674b cburst 2100b
 Sent 1545494259 bytes 1027559 pkt (dropped 34, overlimits 0 requeues 0)
 rate 900120bit 74pps backlog 0b 0p requeues 0
 lended: 193241 borrowed: 834318 giants: 0

и это не смотря ни на rate, ни на приоритет. Я не знаю, как такое может быть. (как только скачку с фтп остановить - хттп на мебит выходит легко). 

Насчет очереди PRIO - честно говоря, я просто не знаю как это делается. Подкиньте, пожалуйста, доку, чтоб можно было разобраться.

Rykun ()
Ответ на: Re: TC, HTB, ESFQ: вопрос по приоритетам от Rykun

Re: TC, HTB, ESFQ: вопрос по приоритетам

> Не совсем понял. Почему htb сначала пошлет низкоприоритетный, а только потом высокоприоритетный

Ну считай по-другому - сначала высокоприоритетный, потом низкоприоритетный, потом снова высокоприоритетный, и т. д. - все равно задержка 80-100мс.

> ведь смысл приоритета тогда в чем?

В том как распределяется избыток канала. В вышеприоритетном примере 1000bit/s - 200kbit/s prio 0 800kbit/s prio 1 значения prio не играют абсолютно никакой роли.

anonymous ()
Ответ на: Re: TC, HTB, ESFQ: вопрос по приоритетам от anonymous

Re: TC, HTB, ESFQ: вопрос по приоритетам

>Ну считай по-другому - сначала высокоприоритетный, потом низкоприоритетный, потом снова высокоприоритетный, и т. д. - все равно задержка 80-100мс.

Понял. Т.е. если уменьшим quantum, то уменьшится и задержка за счет дробления этих сессий. В таком случае в чем мы проиграем, если quantum всегда выставлять = mtu (т.е. минимум)?

Rykun ()
Ответ на: Re: TC, HTB, ESFQ: вопрос по приоритетам от Rykun

Re: TC, HTB, ESFQ: вопрос по приоритетам

> Понял. Т.е. если уменьшим quantum, то уменьшится и задержка за счет дробления
> этих сессий. В таком случае в чем мы проиграем, если quantum
> всегда выставлять = mtu (т.е. минимум)?

В принципе так автор htb и рекомендует изредка так делать. Но по-моему (хотя не уверен),
если мы выставим одинаковый quantum для классов с разными rate, то
скорости распределятся пропроционально quantum - т. е. будут одинаковыми.

Лучше в данном случае по-моему использовать несколько qdisc-ов и выставить
локально r2q - что-то типа:

# r2q = 128000/(1500*8) = 10
tc qdisc add dev eth1 root handle 1: htb r2q 10
tc class add dev eth1 parent 1:0 classid 1:2 htb rate 3128kbit
tc class add dev eth1 parent 1:2 classid 1:100 htb rate 2000kbit
tc class add dev eth1 parent 1:2 classid 1:200 htb rate 1000Kbit
tc class add dev eth1 parent 1:2 classid 1:300 htb rate 128Kbit

# Добавляем следующий qdisc
# r2q = 300000/(1500*8) = 25
tc qdisc add dev eth1 parent 1:100 handle 2: htb r2q 25
tc class add dev eth1 parent 2:0 classid 2:2 htb rate 2000kbit
tc class add dev eth1 parent 2:2 classid 2:110 htb rate 1000Kbit ceil 2000Kbit prio 0
tc class add dev eth1 parent 2:2 classid 2:120 htb rate 700Kbit ceil 2000Kbit prio 1
tc class add dev eth1 parent 2:2 classid 2:130 htb rate 300Kbit ceil 2000Kbit prio 2

# Аналогично r2q = 150000/(1500*8) = 12
tc qdisc add dev eth1 parent 1:200 handle 3: htb r2q 12
tc class add dev eth1 parent 3:0 classid 3:2 htb rate 1000kbit
tc class add dev eth1 parent 3:2 classid 3:210 htb rate 500Kbit ceil 1000Kbit prio 0
tc class add dev eth1 parent 3:2 classid 3:220 htb rate 350Kbit ceil 1000Kbit prio 1
tc class add dev eth1 parent 3:2 classid 3:230 htb rate 150Kbit ceil 1000Kbit prio 2

# Аналогично r2q = 19000/(1500*8) = 1
tc qdisc add dev eth1 parent 1:300 handle 4: htb r2q 1
tc class add dev eth1 parent 4:0 classid 4:2 htb rate 128kbit
tc class add dev eth1 parent 4:2 classid 4:310 htb rate 64Kbit ceil 128Kbit prio 0
tc class add dev eth1 parent 4:2 classid 4:320 htb rate 45Kbit ceil 128Kbit prio 1
tc class add dev eth1 parent 4:2 classid 4:330 htb rate 19Kbit ceil 128Kbit prio 2

Хотя тоже будет задержка - из-за классов 1:100, 1:200, 1:300, но зато уменьшится
задержка при обработке классов присединенных к 2:2, 3:2, 4:2.
Визможно ещё можно попробовать поменять burst, cburst -
смотри http://luxik.cdi.cz/~devik/qos/htb/manual/userg.htm - там всё подробно расписано.

По-поводу prio - см. tc-prio(8). Примеры - http://www.google.com/search?q=prio+tbf+qdisc+voip

tungus ()
Ответ на: Re: TC, HTB, ESFQ: вопрос по приоритетам от tungus

Re: TC, HTB, ESFQ: вопрос по приоритетам

Спасибо, сделал, как Вы сказали. Правда, esfq qdisc'и оставил, чтобы полоса в leaf-классах делилась равномерно по ip (или не стоило?).

hash=dst

# r2q = 128000 / (1500*8) = 10
/sbin/tc qdisc add dev eth1 root handle 1: htb r2q 10

/sbin/tc class add dev eth1 parent 1: classid 1:2 htb rate 3128Kbit

######################## LOCAL #####################################################
/sbin/tc class add dev eth1 parent 1:2 classid 1:100 htb rate 2Mbit

# r2q = 300000 / (1500*8) = 25
/sbin/tc qdisc add dev eth1 parent 1:100 handle 2: htb r2q 25

/sbin/tc class add dev eth1 parent 2:0 classid 2:2 htb rate 2Mbit

#---Admin+DNS+Games+Short---#
/sbin/tc class add dev eth1 parent 2:2  classid 2:110 htb rate 1000Kbit ceil 2000Kbit prio 0
/sbin/tc qdisc add dev eth1 parent 2:110 esfq perturb 5 hash $hash
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 2   fw flowid 2:110
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 4   fw flowid 2:110
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 19  fw flowid 2:110


#---MAIL+HTTP---#
/sbin/tc class add dev eth1 parent 2:2  classid 2:120 htb rate 700Kbit ceil 2000Kbit prio 1
/sbin/tc qdisc add dev eth1 parent 2:120 esfq perturb 5 hash $hash
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 8  fw flowid 2:120
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 14 fw flowid 2:120

#---FTP+Other---#
/sbin/tc class add dev eth1 parent 2:2  classid 2:130 htb rate 300Kbit ceil 2000Kbit prio 2
/sbin/tc qdisc add dev eth1 parent 2:130 esfq perturb 5 hash $hash
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 11  fw flowid 2:130
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 17  fw flowid 2:130


##############################        Ukraine       ####################################

/sbin/tc class add dev eth1 parent 1:2  classid 1:200 htb rate 1Mbit

# r2q = 150000 / (1500*8) = 12
/sbin/tc qdisc add dev eth1 parent 1:200 handle 3: htb r2q 12

/sbin/tc class add dev eth1 parent 3:0 classid 3:2 htb rate 1Mbit

#---Games+Short---#
/sbin/tc class add dev eth1 parent 3:2  classid 3:210 htb rate 500Kbit ceil 1000Kbit prio 0
/sbin/tc qdisc add dev eth1 parent 3:210 esfq perturb 5 hash $hash
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 3  fw flowid 3:210

#---MAIL+HTTP---#
/sbin/tc class add dev eth1 parent 3:2  classid 3:220 htb rate 350Kbit ceil 1000Kbit prio 1
/sbin/tc qdisc add dev eth1 parent 3:220 esfq perturb 5 hash $hash
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 7   fw flowid 3:220
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 13  fw flowid 3:220

#---FTP+Other---#
/sbin/tc class add dev eth1 parent 3:2  classid 3:230 htb rate 150Kbit ceil 1000Kbit prio 2
/sbin/tc qdisc add dev eth1 parent 3:230 esfq perturb 5 hash $hash
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 10  fw flowid 3:230
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 16  fw flowid 3:230



###############################         World        ###################################

/sbin/tc class add dev eth1 parent 1:2 classid 1:300 htb rate 128Kbit

# r2q = 19000 / (1500*8) = 1
/sbin/tc qdisc add dev eth1 parent 1:300 handle 4: htb r2q 1

/sbin/tc class add dev eth1 parent 4:0 classid 4:2 htb rate 128Kbit

#---Games+Short+ICQ---#
/sbin/tc class add dev eth1 parent 4:2  classid 4:310 htb rate 64Kbit ceil 128Kbit prio 0
/sbin/tc qdisc add dev eth1 parent 4:310 esfq perturb 5 hash $hash
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 5  fw flowid 4:310
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 6  fw flowid 4:310


#---MAIL+HTTP---#
/sbin/tc class add dev eth1 parent 4:2  classid 4:320 htb rate 45Kbit ceil 128Kbit prio 1
/sbin/tc qdisc add dev eth1 parent 4:320 esfq perturb 5 hash $hash
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 9   fw flowid 4:320
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 15  fw flowid 4:320

#---FTP+Other+128K---#
/sbin/tc class add dev eth1 parent 4:2  classid 4:330 htb rate 19Kbit ceil 128Kbit prio 2
/sbin/tc qdisc add dev eth1 parent 4:330 esfq perturb 5 hash $hash
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 12  fw flowid 4:330
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 18  fw flowid 4:330
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 20  fw flowid 4:330

Посмотрим как будет работать. Спасибо за помощь.


Rykun ()
Ответ на: Re: TC, HTB, ESFQ: вопрос по приоритетам от Rykun

Re: TC, HTB, ESFQ: вопрос по приоритетам

Попробовал сделать кое-что с qdisc PRIO:

hash=dst

/sbin/tc qdisc add dev eth1 root handle 1: htb

/sbin/tc class add dev eth1 parent 1: classid 1:2 htb rate 3128Kbit

######################## LOCAL #####################################################

/sbin/tc class add dev eth1 parent 1:2 classid 1:100 htb rate 2Mbit

/sbin/tc qdisc add dev eth1 parent 1:100 handle 2: prio

#---Admin+DNS+Games+Short---#
/sbin/tc qdisc add dev eth1 parent 2:1 handle 110: htb
/sbin/tc class add dev eth1 parent 110:  classid 110:1 htb rate 1000Kbit ceil 2000Kbit prio 0
/sbin/tc qdisc add dev eth1 parent 110:1 esfq perturb 5 hash $hash
#/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 1   fw flowid 110:1
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 2   fw flowid 110:1
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 4   fw flowid 110:1
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 19  fw flowid 110:1


#---MAIL+HTTP---#
/sbin/tc qdisc add dev eth1 parent 2:2 handle 120: htb
/sbin/tc class add dev eth1 parent 120:  classid 120:2 htb rate 700Kbit ceil 2000Kbit prio 1
/sbin/tc qdisc add dev eth1 parent 120:2 esfq perturb 5 hash $hash
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 8  fw flowid 120:2
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 14 fw flowid 120:2

#---FTP+Other---#
/sbin/tc qdisc add dev eth1 parent 2:3 handle 130: htb
/sbin/tc class add dev eth1 parent 130:  classid 130:3 htb rate 300Kbit ceil 2000Kbit prio 3
/sbin/tc qdisc add dev eth1 parent 130:3 esfq perturb 5 hash $hash
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 11  fw flowid 130:3
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 17  fw flowid 130:3


##############################        Ukraine       ####################################

/sbin/tc class add dev eth1 parent 1:2  classid 1:200 htb rate 1000Kbit

/sbin/tc qdisc add dev eth1 parent 1:200 handle 3: prio

#---Games+Short---#
/sbin/tc qdisc add dev eth1 parent 3:1 handle 210: htb
/sbin/tc class add dev eth1 parent 210:  classid 210:1 htb rate 500Kbit ceil 1000Kbit prio 0
/sbin/tc qdisc add dev eth1 parent 210:1 esfq perturb 5 hash $hash
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 3  fw flowid 210:1

#---MAIL+HTTP---#
/sbin/tc qdisc add dev eth1 parent 3:2 handle 220: htb
/sbin/tc class add dev eth1 parent 220:  classid 220:2 htb rate 350Kbit ceil 1000Kbit prio 1
/sbin/tc qdisc add dev eth1 parent 220:2 esfq perturb 5 hash $hash
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 7   fw flowid 220:2
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 13  fw flowid 220:2

#---FTP+Other---#
/sbin/tc qdisc add dev eth1 parent 3:3 handle 230: htb
/sbin/tc class add dev eth1 parent 230:  classid 230:3 htb rate 150Kbit ceil 1000Kbit prio 3
/sbin/tc qdisc add dev eth1 parent 230:3 esfq perturb 5 hash $hash
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 10  fw flowid 230:3
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 16  fw flowid 230:3



###############################         World        ###################################

/sbin/tc class add dev eth1 parent 1:2 classid 1:300 htb rate 128Kbit

/sbin/tc qdisc add dev eth1 parent 1:300 handle 4: prio

#---Games+Short+ICQ---#
/sbin/tc qdisc add dev eth1 parent 4:1 handle 310: htb
/sbin/tc class add dev eth1 parent 310:  classid 310:1 htb rate 64Kbit ceil 128Kbit prio 0
/sbin/tc qdisc add dev eth1 parent 310:1 esfq perturb 5 hash $hash
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 5  fw flowid 310:1
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 6  fw flowid 310:1

#---MAIL+HTTP---#
/sbin/tc qdisc add dev eth1 parent 4:2 handle 320: htb
/sbin/tc class add dev eth1 parent 320:  classid 320:2 htb rate 45Kbit ceil 128Kbit prio 1
/sbin/tc qdisc add dev eth1 parent 320:2 esfq perturb 5 hash $hash
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 9   fw flowid 320:2
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 15  fw flowid 320:2

#---FTP+Other+128K---#
/sbin/tc qdisc add dev eth1 parent 4:3 handle 330: htb
/sbin/tc class add dev eth1 parent 330:  classid 330:3 htb rate 19Kbit ceil 128Kbit prio 3
/sbin/tc qdisc add dev eth1 parent 330:3 esfq perturb 5 hash $hash
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 12  fw flowid 330:3
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 18  fw flowid 330:3
/sbin/tc filter add dev eth1 parent 1:  protocol ip prio 1 handle 20  fw flowid 330:3

К сожалению, трафик, как и в вашем варианте, не идет ни в один из классов. 

Rykun ()
Ответ на: Re: TC, HTB, ESFQ: вопрос по приоритетам от Rykun

Re: TC, HTB, ESFQ: вопрос по приоритетам

hash=dst
/sbin/tc qdisc add dev eth1 root handle 1: htb
/sbin/tc class add dev eth1 parent 1: classid 1:2 htb rate 3128kbit ceil 4mbit
/sbin/tc class add dev eth1 parent 1:2 classid 1:100 htb rate 2mbit
/sbin/tc class add dev eth1 parent 1:2 classid 1:200 htb rate 1mbit
/sbin/tc class add dev eth1 parent 1:2 classid 1:300 htb rate 128kbit
/sbin/tc qdisc add dev eth1 parent 1:100 handle 2: prio bands 2 priomap 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1         #Local
/sbin/tc qdisc add dev eth1 parent 1:200 handle 3: prio bands 2 priomap 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1         #Ukraine
/sbin/tc qdisc add dev eth1 parent 1:300 handle 4: prio bands 2 priomap 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1         #World
# Local
/sbin/tc qdisc add dev eth1 parent 2:1 handle 100: pfifo        #high prio LOCAL
/sbin/tc qdisc add dev eth1 parent 2:2 handle 101: htb
/sbin/tc class add dev eth1 parent 101: classid 101:1 htb rate 2mbit # low prio LOCAL
/sbin/tc class add dev eth1 parent 101:1 classid 101:2 htb rate 1mbit ceil 2mbit prio 0         #http
/sbin/tc qdisc add dev eth1 parent 101:2 handle 1012 esfq perturb 10 hash dst                   #http esdq
/sbin/tc class add dev eth1 parent 101:1 classid 101:3 htb rate 1mbit ceil 2mbit prio 1         #ftp
/sbin/tc qdisc add dev eth1 parent 101:3 handle 1013 esfq perturb 10 hash dst                   #ftp esfq
# Ukraine
/sbin/tc qdisc add dev eth1 parent 3:1 handle 200: pfifo        #high prio UKRAINE
/sbin/tc qdisc add dev eth1 parent 3:2 handle 201: htb
/sbin/tc class add dev eth1 parent 201: classid 201:1 htb rate 1mbit # low prio UKRAINE
/sbin/tc class add dev eth1 parent 201:1 classid 201:2 htb rate 500kbit ceil 1mbit prio 0               #http
/sbin/tc qdisc add dev eth1 parent 201:2 handle 2012 esfq perturb 10 hash dst                           #http esdq
/sbin/tc class add dev eth1 parent 201:1 classid 201:3 htb rate 500kbit ceil 1mbit prio 1               #ftp
/sbin/tc qdisc add dev eth1 parent 201:3 handle 2013 esfq perturb 10 hash dst                           #ftp esfq
# World
/sbin/tc qdisc add dev eth1 parent 4:1 handle 300: pfifo         #high prio WORLD
/sbin/tc qdisc add dev eth1 parent 4:2 handle 301: htb
/sbin/tc class add dev eth1 parent 301: classid 301:1 htb rate 128kbit # low prio WORLD
/sbin/tc class add dev eth1 parent 301:1 classid 301:2 htb rate 64kbit ceil 128kbit prio 0              #http
/sbin/tc qdisc add dev eth1 parent 301:2 handle 3012 esfq perturb 10 hash dst                           #http esdq
/sbin/tc class add dev eth1 parent 301:1 classid 301:3 htb rate 64kbit ceil 128kbit prio 1              #ftp
/sbin/tc qdisc add dev eth1 parent 301:3 handle 3013 esfq perturb 10 hash dst                           #ftp esfq
#---------------------- F I L T E R S ---------------------------------------------------#
######################## LOCAL #####################################################
#/sbin/tc filter add dev eth1 parent 1: protocol ip prio 0 handle 1  fw flowid 1:100
/sbin/tc filter add dev eth1 parent 1: protocol ip prio 0 handle 2  fw flowid 1:100
/sbin/tc filter add dev eth1 parent 1: protocol ip prio 0 handle 4  fw flowid 1:100
/sbin/tc filter add dev eth1 parent 1: protocol ip prio 0 handle 19 fw flowid 1:100
/sbin/tc filter add dev eth1 parent 1: protocol ip prio 0 handle 8  fw flowid 1:100
/sbin/tc filter add dev eth1 parent 1: protocol ip prio 0 handle 14 fw flowid 1:100
/sbin/tc filter add dev eth1 parent 1: protocol ip prio 0 handle 11 fw flowid 1:100
/sbin/tc filter add dev eth1 parent 1: protocol ip prio 0 handle 17 fw flowid 1:100
# High prio
#/sbin/tc filter add dev eth1 parent 2: protocol ip prio 1 handle 1 fw flowid 2:1
/sbin/tc filter add dev eth1 parent 2: protocol ip prio 1 handle 2  fw flowid 2:1
/sbin/tc filter add dev eth1 parent 2: protocol ip prio 1 handle 4  fw flowid 2:1
/sbin/tc filter add dev eth1 parent 2: protocol ip prio 1 handle 19 fw flowid 2:1
# Low prio
/sbin/tc filter add dev eth1 parent 2: protocol ip prio 1 handle 8  fw flowid 2:2
/sbin/tc filter add dev eth1 parent 2: protocol ip prio 1 handle 14 fw flowid 2:2
/sbin/tc filter add dev eth1 parent 2: protocol ip prio 1 handle 11 fw flowid 2:2
/sbin/tc filter add dev eth1 parent 2: protocol ip prio 1 handle 17 fw flowid 2:2
#---MAIL+HTTP---#
/sbin/tc filter add dev eth1 parent 101:  protocol ip prio 2 handle 8  fw flowid 101:2
/sbin/tc filter add dev eth1 parent 101:  protocol ip prio 2 handle 14 fw flowid 101:2
#---FTP+Other---#
/sbin/tc filter add dev eth1 parent 101:  protocol ip prio 2 handle 11  fw flowid 101:3
/sbin/tc filter add dev eth1 parent 101:  protocol ip prio 2 handle 17  fw flowid 101:3
##############################        Ukraine       ####################################
/sbin/tc filter add dev eth1 parent 1: protocol ip prio 0 handle 3  fw flowid 1:200
/sbin/tc filter add dev eth1 parent 1: protocol ip prio 0 handle 7  fw flowid 1:200
/sbin/tc filter add dev eth1 parent 1: protocol ip prio 0 handle 13 fw flowid 1:200
/sbin/tc filter add dev eth1 parent 1: protocol ip prio 0 handle 10 fw flowid 1:200
/sbin/tc filter add dev eth1 parent 1: protocol ip prio 0 handle 16 fw flowid 1:200
# High prio
/sbin/tc filter add dev eth1 parent 3: protocol ip prio 1 handle 3  fw flowid 3:1
# Low prio
/sbin/tc filter add dev eth1 parent 3: protocol ip prio 1 handle 7  fw flowid 3:2
/sbin/tc filter add dev eth1 parent 3: protocol ip prio 1 handle 13 fw flowid 3:2
/sbin/tc filter add dev eth1 parent 3: protocol ip prio 1 handle 10 fw flowid 3:2
/sbin/tc filter add dev eth1 parent 3: protocol ip prio 1 handle 16 fw flowid 3:2
#---MAIL+HTTP---#
/sbin/tc filter add dev eth1 parent 201:  protocol ip prio 2 handle 7  fw flowid 201:2
/sbin/tc filter add dev eth1 parent 201:  protocol ip prio 2 handle 13 fw flowid 201:2
#---FTP+Other---#
/sbin/tc filter add dev eth1 parent 201:  protocol ip prio 2 handle 10  fw flowid 201:3
/sbin/tc filter add dev eth1 parent 201:  protocol ip prio 2 handle 16  fw flowid 201:3
###############################         World        ###################################
/sbin/tc filter add dev eth1 parent 1: protocol ip prio 0 handle 5  fw flowid 1:300
/sbin/tc filter add dev eth1 parent 1: protocol ip prio 0 handle 6  fw flowid 1:300
/sbin/tc filter add dev eth1 parent 1: protocol ip prio 0 handle 9  fw flowid 1:300
/sbin/tc filter add dev eth1 parent 1: protocol ip prio 0 handle 15 fw flowid 1:300
/sbin/tc filter add dev eth1 parent 1: protocol ip prio 0 handle 12 fw flowid 1:300
/sbin/tc filter add dev eth1 parent 1: protocol ip prio 0 handle 18 fw flowid 1:300
/sbin/tc filter add dev eth1 parent 1: protocol ip prio 0 handle 20 fw flowid 1:300
# High prio
/sbin/tc filter add dev eth1 parent 4: protocol ip prio 1 handle 5  fw flowid 4:1
/sbin/tc filter add dev eth1 parent 4: protocol ip prio 1 handle 6  fw flowid 4:1
# Low prio
/sbin/tc filter add dev eth1 parent 4: protocol ip prio 1 handle 9  fw flowid 4:2
/sbin/tc filter add dev eth1 parent 4: protocol ip prio 1 handle 15 fw flowid 4:2
/sbin/tc filter add dev eth1 parent 4: protocol ip prio 1 handle 12 fw flowid 4:2
/sbin/tc filter add dev eth1 parent 4: protocol ip prio 1 handle 18 fw flowid 4:2
/sbin/tc filter add dev eth1 parent 4: protocol ip prio 1 handle 20 fw flowid 4:2
#---MAIL+HTTP---#
/sbin/tc filter add dev eth1 parent 301:  protocol ip prio 2 handle 9  fw flowid 301:2
/sbin/tc filter add dev eth1 parent 301:  protocol ip prio 2 handle 15 fw flowid 301:2
#---FTP+Other+128K---#
/sbin/tc filter add dev eth1 parent 301:  protocol ip prio 2 handle 12  fw flowid 301:3
/sbin/tc filter add dev eth1 parent 301:  protocol ip prio 2 handle 18  fw flowid 301:3
/sbin/tc filter add dev eth1 parent 301:  protocol ip prio 2 handle 20  fw flowid 301:3

Результат не идеальный. Но пинг все в той же Counter-Strike ниже в 2-2.5 раза, чем без ничего (впринципе контра по UDP идет, говорят, что он не очень хорошо управляется). Спасибо anonymous (возможно он же tungus, за советы и за PRIO qdisc вчастности). Если есть еще идеи, как сделать лучше - буду рад. Может кому-то еще поможет мой конфиг.

Rykun ()
Ответ на: Re: TC, HTB, ESFQ: вопрос по приоритетам от Rykun

Re: TC, HTB, ESFQ: вопрос по приоритетам

Опять по-моему будет задержка из-за классов 1:100, 1:200, 1:300.
Лучше сразу пускать на prio без подклассов htb.

Что-то типа:
/sbin/tc qdisc add dev eth1 root handle 1: htb
/sbin/tc class add dev eth1 parent 1: classid 1:2 htb rate 3128kbit 
/sbin/tc qdisc add dev eth1 parent 1:2 handle 2:0 prio bands 2 priomap 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Или даже:
/sbin/tc qdisc add dev eth1 root handle 1:0 tbf rate 3128kbit burst 1500 latency 2s
/sbin/tc qdisc add dev eth1 parent 1:0 handle 2:0 prio bands 2 priomap 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

И уже на prio навешать htb qdisc-и, class-ы.
И соответсвенно весь высокоприоритетный пустить через 2:1, norm и low - 2:2.

Но зато никак не сделаешь чтобы на например на украину всегда было не
больше 1mbit. Короче чем-то придётся жертвовать  - или пингом, или
точностью деления и заёмом классов друг у друга.

tungus ()
Ответ на: Re: TC, HTB, ESFQ: вопрос по приоритетам от tungus

Re: TC, HTB, ESFQ: вопрос по приоритетам

hash=dst

/sbin/tc qdisc add dev eth1 root handle 1: prio bands 2 priomap 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

/sbin/tc qdisc add dev eth1 parent 1:1 handle 100: pfifo        #high prio

/sbin/tc qdisc add dev eth1 parent 1:2 handle 2: htb
/sbin/tc class add dev eth1 parent 2: classid 2:1 htb rate 3128

/sbin/tc class add dev eth1 parent 2:1 classid 2:100 htb rate 2mbit
/sbin/tc class add dev eth1 parent 2:1 classid 2:200 htb rate 1mbit
/sbin/tc class add dev eth1 parent 2:1 classid 2:300 htb rate 128kbit

# Local

/sbin/tc class add dev eth1 parent 2:100 classid 2:101 htb rate 1mbit ceil 2mbit prio 0         #http
/sbin/tc qdisc add dev eth1 parent 2:101 handle 2101 esfq perturb 10 hash dst                   #http esdq
/sbin/tc class add dev eth1 parent 2:100 classid 2:102 htb rate 1mbit ceil 2mbit prio 1         #ftp
/sbin/tc qdisc add dev eth1 parent 2:102 handle 2102 esfq perturb 10 hash dst                   #ftp esfq

# Ukraine

/sbin/tc class add dev eth1 parent 2:200 classid 2:201 htb rate 500kbit ceil 1mbit prio 0               #http
/sbin/tc qdisc add dev eth1 parent 2:201 handle 2201 esfq perturb 10 hash dst                           #http esdq
/sbin/tc class add dev eth1 parent 2:200 classid 2:202 htb rate 500kbit ceil 1mbit prio 1               #ftp
/sbin/tc qdisc add dev eth1 parent 2:202 handle 2202 esfq perturb 10 hash dst                           #ftp esfq

# World

/sbin/tc class add dev eth1 parent 2:300 classid 2:301 htb rate 64kbit ceil 128kbit prio 0              #http
/sbin/tc qdisc add dev eth1 parent 2:301 handle 2301 esfq perturb 10 hash dst                           #http esdq
/sbin/tc class add dev eth1 parent 2:300 classid 2:302 htb rate 64kbit ceil 128kbit prio 1              #ftp
/sbin/tc qdisc add dev eth1 parent 2:302 handle 2302 esfq perturb 10 hash dst                           #ftp esfq

Думаю, так еще меньше задержек. Только мне не нравится немного, что весь приоритет валится в один класс без контроля скорости. Хоть он и приоритет, но может возникнуть ситуация, когда туда пойдет значительная часть полосы и тогда классы 2:ххх будут некорректны мне кажется...

Rykun ()
Ответ на: Re: TC, HTB, ESFQ: вопрос по приоритетам от Rykun

Re: TC, HTB, ESFQ: вопрос по приоритетам

> Думаю, так еще меньше задержек. Только мне не нравится немного, что весь приоритет валится в один класс без контроля скорости. Хоть он и приоритет, но может возникнуть ситуация, когда туда пойдет значительная часть полосы и тогда классы 2:ххх будут некорректны мне кажется..

Так оно и есть.

Во первых так как везде используется esfq, то и для handle 100: лучше использовать esfq вместо prio.

Во-вторых может имеет смысл повесить на handle 100: htb или tbf (с условно говоря к примеру rate=200kbit). Только не ясно как на это среагирует prio. В принципе prio не шлёт через 1:2 когда что-то есть для 1:1.

Т. е. не ясно что произойдет если скорость через 1:1 превысит 200kbit - закупорится трафик через 1:2 или будет нормально слаться. В любом случае можно попробовать проверить.

tungus ()
Ответ на: Re: TC, HTB, ESFQ: вопрос по приоритетам от Rykun

Re: TC, HTB, ESFQ: вопрос по приоритетам

И во-вторых лучше не делать prio root-ом. А сделать root-ом tbf, а к нему подвесить prio - как написанно выше.

/sbin/tc qdisc add dev eth1 root handle 2:0 tbf rate 3128kbit burst 1500 latency 2s

/sbin/tc qdisc add dev eth1 parent 2:0 handle 1:0 prio bands 2 priomap 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

..............................

tungus ()
Ответ на: Re: TC, HTB, ESFQ: вопрос по приоритетам от tungus

Re: TC, HTB, ESFQ: вопрос по приоритетам

>Во первых так как везде используется esfq, то и для handle 100: лучше использовать esfq вместо prio.
Наверное, вы имеете ввиду pfifo. Просто esfq, насколько я понимаю, нужен, чтобы делить канал между потребителями по ip - это критично при скачке с ftp и http, а тут мне показалось, что быстрее будет просто pfifo (хотя я не знаю создает ли какие-то весомые задержки esfq).

>Т. е. не ясно что произойдет если скорость через 1:1 превысит 200kbit - закупорится трафик через 1:2 или будет нормально слаться. В любом случае можно попробовать проверить.
Учитывая то, что в 1:2 оно точно не пойдет (фильтры), то мне кажется, что все лишнее просто будет дропаться, чего не хотелось бы.

>И во-вторых лучше не делать prio root-ом. А сделать root-ом tbf, а к нему подвесить prio - как написанно выше.
Не совсем понимаю зачем. Кроме как ограничить интерфейс в скорости я преимуществ не вижу, подскажите.

Сейчас очень интересуют такие параметры на burst и cburst. В http://remizov.pp.ru/ru/trn/doc/manuals/htb-manual#uskorenija сказано, что с помощью этого можно улучшить такой трафик, как WEB. Вопрос в том сколько именно стоит ставить burst, чтобы выиграть в WEB и не проиграть в остальном?

Rykun ()
Ответ на: Re: TC, HTB, ESFQ: вопрос по приоритетам от Rykun

Re: TC, HTB, ESFQ: вопрос по приоритетам

>>И во-вторых лучше не делать prio root-ом. А сделать root-ом tbf, а к нему подвесить prio - как написанно выше.

>Не совсем понимаю зачем. Кроме как ограничить интерфейс в скорости я преимуществ не вижу, подскажите.

Чтобы освободить send buffer у провайдера. Может произойти ситуация когда 1:2 будет полностью забит и когда 1:1 будет слать - будет заполняться буфер у провайдера - пинг резко возрастёт.

Вообще скорость на tbf надо сделать меньше реальной на 5-15% - чем меньше будет скорость - чем меньше заполненен буфер у провайдера - тем лучше пинг.

tungus ()
Ответ на: Re: TC, HTB, ESFQ: вопрос по приоритетам от tungus

Re: TC, HTB, ESFQ: вопрос по приоритетам

Проблема в том, что сложно сказать какая скорость реальная. Для мира - это 128 кбит, для Украины 1 мбит, для локальной сети провайдера 2 мбит. Поэтому если я ограничу скорость на 3 мбит, то это не освободит, насколько я понимаю, send bufefer у провайдера, если допустим будет забит под завязку только "украинский" мегабитный канал. Выходит, что тут нужна не одна root очередь, а целых 3. Может есть такая возможность, а я не знаю?

После нескольких дней теста конфигурации выше я пришел к выводу, что prio в таких условиях мне не помогает обеспечить приоритет для интерактивного трафика. Все что помогает это просто грубо отрезать кусок, например, украинского трафика и зарезервировать его за интерактивным. По сути это можно было сделать и без prio.

Люди в соседнем форуме говорят, что для этих целей можно бы воспользоваться HFSC, который партирован из BSD и поддерживается моим ядром и iproute2, но разобраться в нем очень сложно.

Rykun ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.