Jump to content

Recommended Posts

Posted

Есть следующая конфигурация:

Аплинк 25 мбит.

ОС CentOS 6.4

Через сервер сидит 30 клиентов со скоростью от 1 до 10 мбит.

 

Конфигурация шейпера:

#!/bin/bash

tc qdisc del dev eth1 root

tc qdisc add dev eth1 root handle 1: htb default 100
tc class add dev eth1 parent 1: classid 1:1 htb rate 1024mbit burst 15k

tc class add dev eth1 parent 1:1 classid 1:10 htb rate 1mbit ceil 1024mbit burst 15k
#tc class add dev eth1 parent 1:1 classid 1:20 htb rate 41943040 burst 15k
tc class add dev eth1 parent 1:1 classid 1:20 htb rate 26214400 burst 15k
tc qdisc add dev eth1 parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev eth1 parent 1:20 handle 20: sfq perturb 10

tc filter add dev eth1 protocol ip parent 1: prio 3 u32 match ip src 10.0.0.1 flowid 1:10
tc filter add dev eth1 protocol ip parent 1: prio 3 u32 match ip dst 10.0.0.1 flowid 1:10

tc class add dev eth1 parent 1:20 classid 1:100 htb rate 1mbit ceil 2621440 burst 15k

dir=/usr/scripts/billing/tc-rules/tc-rules

/usr/scripts/billing/tc-rules/10.0.10.10.sh
/usr/scripts/billing/tc-rules/10.0.10.2.sh
/usr/scripts/billing/tc-rules/10.0.11.43.sh
/usr/scripts/billing/tc-rules/10.0.15.2.sh
...

 

В файлах конфигурация для клиентов:

tc class add dev eth1 parent 1:20 classid 1:101 htb rate 1kbit ceil 15360000 burst 15k
tc qdisc add dev eth1 parent 1:101 handle 10: sfq perturb 10
tc class add dev eth1 parent 1:101 classid 1:102 htb rate 1kbit ceil 15360000 prio 1
tc class add dev eth1 parent 1:101 classid 1:103 htb rate 1kbit ceil 15360000 prio 2
tc class add dev eth1 parent 1:101 classid 1:104 htb rate 1kbit ceil 15360000 prio 3
tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 10.0.10.2/32 match ip protocol 1 0xff flowid 1:102
tc filter add dev eth1 parent 1:0 protocol ip prio 3 u32 match ip dst 10.0.10.2/32 match ip sport 53 0xffff flowid 1:102
tc filter add dev eth1 parent 1:0 protocol ip prio 3 u32 match ip dst 10.0.10.2/32 match ip sport 5190 0xffff flowid 1:102
tc filter add dev eth1 parent 1:0 protocol ip prio 3 u32 match ip dst 10.0.10.2/32 match ip sport 5222 0xffff flowid 1:102
tc filter add dev eth1 parent 1:0 protocol ip prio 3 u32 match ip dst 10.0.10.2/32 match ip sport 5433 0xffff flowid 1:102
tc filter add dev eth1 parent 1:0 protocol ip prio 3 u32 match ip dst 10.0.10.2/32 match ip sport 28723 0xffff flowid 1:102
tc filter add dev eth1 parent 1:0 protocol ip prio 3 u32 match ip dst 10.0.10.2/32 match ip sport 80 0xffff flowid 1:103
tc filter add dev eth1 parent 1:0 protocol ip prio 3 u32 match ip dst 10.0.10.2/32 match ip sport 443 0xffff flowid 1:103
tc filter add dev eth1 parent 1:0 protocol ip prio 4 u32 match ip dst 10.0.10.2/32 flowid 1:104

 

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

  • 3 weeks later...
Posted (edited)

Раньше для fair queuing по IP люди пользовались патчем ESFQ, но его так и не взяли в ядро. Сейчас там появилась дисциплина drr, которая в связке с фильтром flow может делать то же самое, что и ESFQ. См. man tc-drr и исходники. Другой документации нет.

 

В dummynet из FreeBSD fair queuing по IP тоже реализован (ipfw queue X config mask FLOW_MASK). Там правила намного проще.

Edited by photon
Posted

Раньше для fair queuing по IP люди пользовались патчем ESFQ, но его так и не взяли в ядро. Сейчас там появилась дисциплина drr, которая в связке с фильтром flow может делать то же самое, что и ESFQ. См. man tc-drr и исходники. Другой документации нет.

 

В dummynet из FreeBSD fair queuing по IP тоже реализован (ipfw queue X config mask FLOW_MASK). Там правила намного проще.

esfq для новых ядер нет ?

Posted (edited)

Вроде нет. На http://fatooh.org/esfq-2.6/ последнее обновление сделано для 2.6.24. Есть ссылка на cls_flow. С другой стороны, при большом желании такой патч можно сделать и самому, в сетевой подсистеме со времен Кузнецова мало что менялось.

Edited by photon
Posted

после NiTr0 и мы выпилили esfq из своего ядра. До этого поддерживали патч в актуальном состоянии. Если сильно надо, посмотрю для какого ядра есть последняя версия.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.