The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Равномерное распределение канала"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"Равномерное распределение канала"  +/
Сообщение от TrueHead (ok) on 22-Июн-09, 14:47 
Возникла необходимость равномерно распределять канал на пользователей, а точнее на IP адреса.
К примеру есть канал 2 МБита и нужно динамически делить его поровну между активными пользователями(IP адресами).
Пробовал использовать дисциплину SFQ шейпера tc, но столкнулся с тем, что SFQ оперирует сессиями и распределение канала зависит от количества сессий с одного IP. Например торрент качалки забирают большую часть канала, мешая другим нормально пользоваться Интернетом.
Нашёл описание дисциплины ESFQ, похоже решает эту задачу, но требует наложения патчей на ядро, но в системе стоит ядро гораздо новее, чем последний патч.

Какие ещё варианты решения данной задачи? На данный момент рассматриваются любые решения, но хотелось бы решение на линухе.

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Равномерное распределение канала"  +/
Сообщение от www2 email(??) on 23-Июн-09, 07:30 
Попробуйте дисциплину HTB.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Равномерное распределение канала"  +/
Сообщение от TrueHead (ok) on 23-Июн-09, 08:45 
>Попробуйте дисциплину HTB.

Я и так её использую:

/sbin/tc qdisc add dev eth1 root handle 1 htb default 0 r2q 20
/sbin/tc class add dev eth1 parent 1: classid 1:1 htb rate 1536Kbit ceil 1536Kbit burst 32k prio 0
/sbin/tc qdisc add dev eth1 parent 1:1 handle 1 sfq perturb 10
/sbin/tc class add dev eth1 parent 1:1 classid 1:11 htb rate 8Kbit ceil 1536Kbit burst 32k prio 0
/sbin/tc qdisc add dev eth1 parent 1:11 handle 1 sfq perturb 10
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 200 handle 1 fw classid 1:11

Пакеты маркируются правилом:
iptables -t mangle -A FORWARD -d 192.168.0.1 -j MARK --set-mark 1

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Равномерное распределение канала"  +/
Сообщение от Z0termaNN (ok) on 24-Июн-09, 12:03 
>[оверквотинг удален]
>
>К примеру есть канал 2 МБита и нужно динамически делить его поровну
>между активными пользователями(IP адресами).
>Пробовал использовать дисциплину SFQ шейпера tc, но столкнулся с тем, что SFQ
>оперирует сессиями и распределение канала зависит от количества сессий с одного
>IP. Например торрент качалки забирают большую часть канала, мешая другим нормально
>пользоваться Интернетом.
>Нашёл описание дисциплины ESFQ, похоже решает эту задачу, но требует наложения патчей
>на ядро, но в системе стоит ядро гораздо новее, чем последний
>патч.

ну вообще-то патч на ядро необязательно накладывать, можно просто собрать esfq как модуль,
например используя dkms (конечно tc все равно придется патчить).
не помню, начиная с какого ядра (кажется c 2.6.25 ) для этих целей возможно использовать
flow classifier.
по умолчанию потоки в sfq разбиваются так:
tc filter add .... flow hash \
         keys src,dst,proto,proto-src,proto-dst divisor 1024

нужно переделать на :

tc filter add dev eth0 protocol ip pref 1 parent x: handle y \
         flow hash keys dst divisor 1024

есть или нет в ядре flow classifier  - можно поглядеть в исходниках в районе pkt_cls.h или
посмотреть параметр NET_CLS_FLOW в конфигурации ядра.

>Какие ещё варианты решения данной задачи? На данный момент рассматриваются любые решения,
>но хотелось бы решение на линухе.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру