LINUX.ORG.RU
ФорумAdmin

ESFQ 'нечестно' делит канал


0

0

Поставил ESFQ с надеждой на то, что он реализует основное свое достоинство - будет делить канал независимо от кол-ва потоков в программах-закачках (а-ля FlashGet) поровну между всеми клиентами. Однако ожидаемого эффекта не наблюдаю. Например, канал 1 Мбит используют юзер А (700 Кбит) и юзер Б (300 Кбит). (что, кстати, уже ненормально, как по мне - ведь хочется 500 на 500). Так вот юзер Б, оказывается, качает файл меньшим кол-вом потоков. Юзер Б добавляет еще один поток и соотношение становится 600 на 400. Меня такая ситуация совсем не устраивает.
Итак, конфигурация (7 юзеров, канал на Украину 1 Мбит):

US=143Kbit

/sbin/tc qdisc del dev eth1 root
/sbin/tc qdisc add dev eth1 root handle 1 htb default 0 r2q 10

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

/sbin/tc class add dev eth1 parent 1:20 classid 1:21 htb rate $US ceil 1Mbit prio 1
/sbin/tc qdisc add dev eth1 parent 1:21 handle 21 esfq perturb 5 hash dst
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 200 handle 210 fw classid 1:21

/sbin/tc class add dev eth1 parent 1:20 classid 1:22 htb rate $US ceil 1Mbit prio 1
/sbin/tc qdisc add dev eth1 parent 1:22 handle 22 esfq perturb 5 hash dst
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 200 handle 211 fw classid 1:22

/sbin/tc class add dev eth1 parent 1:20 classid 1:23 htb rate $US ceil 1Mbit prio 1
/sbin/tc qdisc add dev eth1 parent 1:23 handle 23 esfq perturb 5 hash dst
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 200 handle 212 fw classid 1:23

/sbin/tc class add dev eth1 parent 1:20 classid 1:24 htb rate $US ceil 1Mbit prio 1
/sbin/tc qdisc add dev eth1 parent 1:24 handle 24 esfq perturb 5 hash dst
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 200 handle 213 fw classid 1:24

/sbin/tc class add dev eth1 parent 1:20 classid 1:25 htb rate $US ceil 1Mbit prio 1
/sbin/tc qdisc add dev eth1 parent 1:25 handle 25 esfq perturb 5 hash dst
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 200 handle 218 fw classid 1:25

/sbin/tc class add dev eth1 parent 1:20 classid 1:26 htb rate $US ceil 1Mbit prio 1
/sbin/tc qdisc add dev eth1 parent 1:26 handle 26 esfq perturb 5 hash dst
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 200 handle 220 fw classid 1:26

/sbin/tc class add dev eth1 parent 1:20 classid 1:27 htb rate $US ceil 1Mbit prio 1
/sbin/tc qdisc add dev eth1 parent 1:27 handle 27 esfq perturb 5 hash dst
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 200 handle 224 fw classid 1:27

Т.е. траффик классифицируется по меткам.
Помечается украинский траффик вот так:

iptables -t mangle -N UAIX2

iptables -t mangle -A POSTROUTING -o eth1 -m geoip --src-cc UA -j UAIX2
iptables -t mangle -A POSTROUTING -p tcp -o eth1 -s 192.168.12.33 --sport 3130 -j UAIX2

iptables -t mangle -A UAIX2 -d 192.168.12.10 -j MARK --set-mark 210
iptables -t mangle -A UAIX2 -d 192.168.12.12 -j MARK --set-mark 212
iptables -t mangle -A UAIX2 -d 192.168.12.13 -j MARK --set-mark 213
iptables -t mangle -A UAIX2 -d 192.168.12.16 -j MARK --set-mark 211
iptables -t mangle -A UAIX2 -d 192.168.12.18 -j MARK --set-mark 218
iptables -t mangle -A UAIX2 -d 192.168.12.20 -j MARK --set-mark 220
iptables -t mangle -A UAIX2 -d 192.168.12.24 -j MARK --set-mark 224
iptables -t mangle -A UAIX2 -j ACCEPT

Прим.: с порта 3130 идет траффик специально запущенной версии СКВИДА, через который идет весь HTTP украинский траффик.
192,168,12,10-192,168,12,24 - клиенты
192,168,12,33 - сервер


Итак, прошу помощи, господа. Правильно ли настроен весь этот механизм или ESFQ так и должен себя вести. Спасибо. 

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