The OpenNET Project / Index page

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

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

"tc cbq"  +/
Сообщение от answer (ok) on 01-Апр-10, 20:19 
Есть вопрос по tc.
Изначальная сверхзадача следующая:
Для всех подключений равномерно распределять скорость (не касается медленных клиентов, у которых своя скорость мала – настроить, чтобы такие  клиенты не отваливались из-за специфичных сетевых настроек).
Для нового подключения выделять скорость 1 MBit/s, если канал свободен более чем на 30% увеличить скорость до максимальной к клиенту.
При падении общей скорости,  участников, менее 256Kbit/s блокировать новые подключения.

Написаны соответствующие правила для tc:
$TC qdisc add dev $IF root handle 1: cbq bandwidth 500Mbit avpkt 5000 cell 8 allot 1514

$TC class add dev $IF parent 1:0 classid 1:112 cbq bandwidth 150mbit rate 100mbit cell 8 allot 1514 sharing borrow prio 2
$TC class add dev $IF parent 1:0 classid 1:113 cbq bandwidth 500mbit rate 1mbit cell 8 allot 1514 sharing borrow prio 2
$TC class add dev $IF parent 1:0 classid 1:114 cbq bandwidth 500mbit cell 8 allot 1514 rate 256kbit sharing borrow prio 2
$TC qdisc add dev $IF parent 1:112 handle 20: esfq perturb 5 hash dst
$TC qdisc add dev $IF parent 1:113 handle 30: esfq perturb 5 hash dst
$TC qdisc add dev $IF parent 1:114 handle 40: esfq perturb 5 hash dst

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

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

Оглавление

  • tc cbq, John, 22:14 , 02-Апр-10, (1)  
    • tc cbq, John, 22:16 , 02-Апр-10, (2)  
      • tc cbq, answer, 23:17 , 02-Апр-10, (3)  
        • tc cbq, John, 09:56 , 03-Апр-10, (4)  

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


1. "tc cbq"  +/
Сообщение от John (??) on 02-Апр-10, 22:14 
>[оверквотинг удален]
>$TC qdisc add dev $IF parent 1:112 handle 20: esfq perturb 5
>hash dst
>$TC qdisc add dev $IF parent 1:113 handle 30: esfq perturb 5
>hash dst
>$TC qdisc add dev $IF parent 1:114 handle 40: esfq perturb 5
>hash dst
>
>Вроде бы работает, но почему-то трафик попадает только в самый широкий класс.
>В другие же при нагрузке он не попадает в принципе. Может
>быть кто-то подскажет, как правильнее реализовать задачку?

Вы создали классовую дисциплину. Теперь надо добавить фильтры к самой дисциплине и к внутренним классам, которые будут по каким-то критериям отправлять трафик в тот или иной внутренний класс. Смотрите tc filter.

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

2. "tc cbq"  +/
Сообщение от John (??) on 02-Апр-10, 22:16 
>[оверквотинг удален]
>>$TC qdisc add dev $IF parent 1:114 handle 40: esfq perturb 5
>>hash dst
>>
>>Вроде бы работает, но почему-то трафик попадает только в самый широкий класс.
>>В другие же при нагрузке он не попадает в принципе. Может
>>быть кто-то подскажет, как правильнее реализовать задачку?
>
>Вы создали классовую дисциплину. Теперь надо добавить фильтры к самой дисциплине и
>к внутренним классам, которые будут по каким-то критериям отправлять трафик в
>тот или иной внутренний класс. Смотрите tc filter.

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

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

3. "tc cbq"  +/
Сообщение от answer (ok) on 02-Апр-10, 23:17 
>[оверквотинг удален]
>>>Вроде бы работает, но почему-то трафик попадает только в самый широкий класс.
>>>В другие же при нагрузке он не попадает в принципе. Может
>>>быть кто-то подскажет, как правильнее реализовать задачку?
>>
>>Вы создали классовую дисциплину. Теперь надо добавить фильтры к самой дисциплине и
>>к внутренним классам, которые будут по каким-то критериям отправлять трафик в
>>тот или иной внутренний класс. Смотрите tc filter.
>
>Даже, немного не так: в Вашем случае необходимы фильтры только к самой
>дисциплине.

Трафик всегда исходящий и с двух сервисов - http и ftp. Как в этом случае их можно различать по уровням? Ведь те, кто запросил тот или иной файл всегда разные.
Можно ли какими-нибудь средствами iproute2 вычислять общую нагруженность полосы, если известна номинальная ширина?

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

4. "tc cbq"  +/
Сообщение от John (??) on 03-Апр-10, 09:56 
>[оверквотинг удален]
>>>тот или иной внутренний класс. Смотрите tc filter.
>>
>>Даже, немного не так: в Вашем случае необходимы фильтры только к самой
>>дисциплине.
>
>Трафик всегда исходящий и с двух сервисов - http и ftp. Как
>в этом случае их можно различать по уровням? Ведь те, кто
>запросил тот или иной файл всегда разные.
>Можно ли какими-нибудь средствами iproute2 вычислять общую нагруженность полосы, если известна номинальная
>ширина?

Прочтите это:
http://gazette.linux.ru.net/rus/articles/lartc/c1452.html

Если что-то будет непонятно, прочтите этот документ с самого начала - там расписано практически все.

Пример фильтра отбора по порту источника
tc filter add dev $IF protocol ip parent 1: prio 1 u32 match ip sport 80 0xffff flowid 1:113

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

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

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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