LINUX.ORG.RU
ФорумAdmin

HTB , пинг , игры - есть проблема :(


0

0

И так , в кратце ситуация :

Синхронный канал в 1 мбит .
Клиенты бегают через шлюз на линуксе РХ7.0 с ядром 2.4.22 . собирал сам ;)

Скорость режу при помощи скрипта HTB.init .

Две сетевые карты .
Eth0 - интернет к провайдеру
ETh1 - пользователи

На сервере нет NAT , только простой форвард .
Это внутренняя сеть.

Всем клиентам режу скорость в 16 кб .
Вот конфиг htb:

файл: eth1

DEFAULT=30
R2Q=1


файл: eth1-5001.all

RATE=128Kbit
BURST=1Kb
PRIO=5
RULE=192.168.0.1

аналогично выглядат файлы eth1-5002.all

RATE=128Kbit
BURST=1Kb
PRIO=5
RULE=192.168.0.2

И так далее , для всех 64 фейковых ип адресов . Для каждого свое правило .

Аналогично и исх скорость . Только стоит не 128 а 80 кбит , т.е. исх режется на eth0 , в 10 кб каждому индивидуально .

В принципе все ок , все работает так как задумывалось . Но народ качает , все подряд , канала в 1 мбит чуток не хватает , и возрастают пинги - пинг в играх , т.е. играть становиться не возможно , не смотря на то что качать можно и скорость для клиента будет держаться 14-16 кб .

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

Т.е. как можно сделать , сохранив текущую конфигурацию htb.init скриптов , либо чтото подправить , так , что бы 10 клиентов допустим качая все по максимуму и забив канал , оставили возможность клиенту который ничего не качает иметь нормальный пинг и возможность играть в игры . А то в этом случае у него пинг 600 мс , если бы у него держался бы пинг в играх на уровне 60 мс , максимум , это было бы супер . Т.е. надо както организовать приоритезацию трафика . Как я понимаю в основном надо разрулить icmp - это что бы было видно что все работает как надо , и UDP трафик - ведь игры это в основном UDP , а простой TCP никак не трогать , пусть он и ограничивается как ограничивался ;)

Вот такая проблема .
Как посоветуете поступить ? Очень нужно решить эту задачу наименьшими средствами , и как можно быстрее ....Причем желательно не перекраивая все существующие настройки HTB .





anonymous

>Вот конфиг htb

не HTB, а htb.init :)

>если я так понимаю эту проблему можно решить красиво както порезав трафик с приоритетами .

проблему можно скрыть, но не решить, имхо :)

>Как я понимаю в основном надо разрулить icmp - это что бы было видно что все работает как надо

но особого толку от "разруливания" самого icmp вообще-то быть не должно :)

>а простой TCP никак не трогать , пусть он и ограничивается как ограничивался ;)

htb.init не работает с UDP, ICMP и все остальным, кроме TCP. Маркируй нужные пакеты и заводи в отдельный класс.

Если все сделать правильно, игры тормозить перестанут независимо от загрузки канала.

fagot ★★★★★
()
Ответ на: комментарий от fagot

>Если все сделать правильно, игры тормозить перестанут независимо от загрузки канала.



вот , в этом и есть поставленая задача ... только как ее решить ?

можно примером ?

если например 10.0.0.1 внешний ип
и 192.168.0.1 внутренний

и задача в том что бы для сети 192.168.0.0/24 проблем с играми не стало

anonymous
()
Ответ на: комментарий от anonymous

да , не заметил , htb.init работает с ICMP , это 100% , т.к. для клиента у которого забивается канал в 16 кб , пинг возрастает до 6000-8000 , значит htb.init ограничивает и icmp , а так же при забивании канала клиентом пинг в играх у него так же взлетает до 1000 и выше в мс .

Вывод очевиден . Правильно ?
Я не утверждаю , я сопоставляю факты , и у меня на ваше утверждение такой вопрос - откуда такая информация что htb.init режет только TCP ?

Я не знаю конкретно алгоритм как он работает , как работает htb.init , т.е. как и что там режет трафик , можно ожидать от вас очевидного ответа откуда и почему ?

anonymous
()
Ответ на: комментарий от anonymous

>Я не знаю конкретно алгоритм как он работает , как работает htb.init ,

вот и посмотри. В скрипт :)

>да , не заметил , htb.init работает с ICMP , это 100% , т.к. для клиента у которого забивается канал в 16 кб , пинг возрастает до 6000-8000 , значит

... icmp попадает в класс по умолчанию. Назвать это "работой" несколько многовато :) Ну сам подумай, какими из правил RULE ты заворачиваешь ICMP в какой-либо класс, а?

fagot ★★★★★
()
Ответ на: комментарий от anonymous

>задача в том что бы для сети 192.168.0.0/24 проблем с играми не стало

я вижу лишь одно решение - самому разобраться путем чтения документации. И начать с lartc.org

fagot ★★★★★
()
Ответ на: комментарий от fagot

ну раз ICMP попадает , то и UDP тоже туда сваливается ... хотя я например это могу обяснить только косвенными причинами ;)
Из соображений как поступить , я нашел вот это :
http://64.233.183.104/search?q=cache:Mt_qs5jnXSAJ:www.opennet.ru/base/net/adsl_bandwidth_management.txt.html+wondershaper&h...
Т.е. там описано я так понимаю какаято часть моей проблемы , и мне надо поступить так :
# Ограничение входящего потока (ограничивает пропускную способность до RATEDN)
# убедимся, что модуль imq загружен
modprobe imq numdevs=1
ip link set imq0 up
# добавляем дисциплину - низкоприоритетный класс по умолчанию 1:21
tc qdisc add dev imq0 handle 1: root htb default 21
# добавляем общее ограничение скорости по классу
tc class add dev imq0 parent 1: classid 1:1 htb rate ${RATEDN}kbit
# добавляем подклассы - TCP traffic in 21, non TCP traffic in 20
#
tc class add dev imq0 parent 1:1 classid 1:20 htb rate $[$RATEDN/2]kbit ceil ${RATEDN}kbit prio 0
tc class add dev imq0 parent 1:1 classid 1:21 htb rate $[$RATEDN/2]kbit ceil ${RATEDN}kbit prio 1
# подключаем дисциплины обработки очереди к подклассам - здесь мы используем SFQ для каждого класса.
# SFQ обеспечит почти честное деление полосы пропускания между соединениями
# внутри каждого класса.
tc qdisc add dev imq0 parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev imq0 parent 1:21 handle 21: red limit 1000000 min 5000 max 100000 avpkt 1000 burst 50
# направляем трафик в классы по fwmark - мы направляем трафик в классы, в соответствии со значением
# fwmark установленном на пакете (мы будем устанавливать это
# значение утилитой iptables позже). Обратите внимание, что
# выше мы установили класс по умолчанию 1:26, так что
# немаркированные пакеты (или с неизвестными значениями fwmark
# будут направлены в низкоприоритетный класс.
tc filter add dev imq0 parent 1:0 prio 0 protocol ip handle 20 fw flowid 1:20
tc filter add dev imq0 parent 1:0 prio 0 protocol ip handle 21 fw flowid 1:21
# добавить цепочку MYSHAPER-OUT в таблицу mangle - сейчас мы настроим таблицу,которую будем
#

anonymous
()
Ответ на: комментарий от anonymous

iptables -t mangle -N MYSHAPER-IN
iptables -t mangle -I PREROUTING -i $DEV -j MYSHAPER-IN
# маркируем пакеты с помощью fwmark - устанавливаем значения 20-26 в зависимости от
# нужного класса. Высший приоритет - 20.
iptables -t mangle -A MYSHAPER-IN -p ! tcp -j MARK --set-mark 20 # Маркировать не-tcp пакеты как высокоприоритетные
iptables -t mangle -A MYSHAPER-IN -p tcp -m length --length :64 -j MARK --set-mark 20 # маленькие TCP-пакеты - вероято ACK
iptables -t mangle -A MYSHAPER-IN -p tcp --dport ssh -j MARK --set-mark 20 # secure shell
iptables -t mangle -A MYSHAPER-IN -p tcp --sport ssh -j MARK --set-mark 20 # secure shell
iptables -t mangle -A MYSHAPER-IN -p tcp --dport telnet -j MARK --set-mark 20 # telnet (ew...)
iptables -t mangle -A MYSHAPER-IN -p tcp --sport telnet -j MARK --set-mark 20 # telnet (ew...)
iptables -t mangle -A MYSHAPER-IN -m mark --mark 0 -j MARK --set-mark 21 # избыточно - маркировать немаркированные
# пакеты как 26 (низкий приоритет)

# Наконец, пропустить все эти пакеты через imq0
iptables -t mangle -A MYSHAPER-IN -j IMQ
# Конец ограничения входящего потока
#
####################################################
echo "Inbound shaping added to $DEV. Rate: ${RATEDN}Kbit/sec."

Вот , при анализе htb.init и этого скрипта - я так понимаю что друг другу они мешать не будут , нужно только будет продумать корректное сбрасывание настроек . Либо совместить htb.init с этой частью скрипта .
Только вот у меня такая проблема - imq у меня нет.
Пока не могу разобраться что это .
Указаная в статье ссылка на imq патч не работает .
Ядро у меня 2.4.22 , можно собрать и из последней версии 2.4.* , для меня не проблема . Порблема с разбиранием imq .
Где его взять ? Что это такое - патч , или просто будет модуль . И надо после пересобирать iptables ?
Что скажете на счет этого варианта ?

anonymous
()
Ответ на: комментарий от anonymous

>от , при анализе htb.init и этого скрипта - я так понимаю что друг другу они мешать не будут ,

речь о командах iptables или tc? Если последнее - будут.

>Порблема с разбиранием imq . Где его взять ?

www.linuximq.net

>И надо после пересобирать iptables ?

да

>Что скажете на счет этого варианта ?

Что если я хоть что-то и понял, то что это полный бред и непонимание сути проблемы :) Без обид, возможно я не прав.

fagot ★★★★★
()
Ответ на: комментарий от fagot

фагот , я попробую собрать отдельную машинку , поэксперементировать , и поднять снова эту тему и сообщить о полученных результатах ;)

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