LINUX.ORG.RU
ФорумAdmin

Помогите составить правила для htb.init


0

0

Здравствуйте!

Пытаюсь составить правила для шейпера htb.init. Читал мануалы, но так до конца и не вкурил.
Везде говорится, что оно иерархическое, но вот с этой самой иерархией я и запутался.

Задач в общем то у меня две: для домашней сетки, и для организации.

1. для дома: нужно поровну поделить один инет-канал на четверых пользователей: всего 1 мбит, каждому минимум по 256к соответственно. Плюс приоритезация: торрентам меньше, скайпу и радио - больше. Причем у каждого юзера должна быть гарантированная скорость его инета не меньше 256к, а приоретизировать трафик нужно уже "внутри" его канала: если он, например, одновременно слушает радио и качает торренты, то чтобы радио не икало. Но то, какой он вид трафика тянет в данный момент, не должно влиять на работу других. Думаю, задача ясна.

2. для работы: тут наоборот: инет делим поровну на всех юзеров (коих с десяток), тем, кто качают торренты - наименьший приоритет, а тем, кто броузят хтмл-страницы и юзают скайп - больше.

Читал, что для справедливого деления по ip-адресам, а не по сессиям нужно юзать модуль ядра esfq и соответственно пропатченный htb.init (http://inhate.livejournal.com/333557.html). И то, и другое у меня уже есть, затруднения вызывают только написание правил.

Уважаемые, если не затруднит, можно пару простых примеров файлов конфигурации?

Забыл сказать, делить трафик по видам планирую через l7-filter, оно у меня уже вкомпилено в ядро.

InfectedM
() автор топика

Что конкретно непонятно-то? Как создавать классы? Как они работают? Как классифицировать пакеты? Просто всё это описано в офф доке на том же сайте, спрашивай, что именно не получается.

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

Непонятно то, каким образом делать эту самую иерархию.
Пример на основе моего первого примера в первом посте:
Нужно делить 1мбит канал на двоих (для упрощения), каждому не меньше 512к, а уже внутри канала каждого из пользователей делать приоретизацию.
Правильно ли я пишу конфигурацию:

-- eth1 --
DEFAULT=20
R2Q=1

-- eth1-2.root --
RATE=100Mbit

-- eth1-2:10.local --
RATE=100Mbit
RULE=10.255.255.0/24,

-- eth1-2:20.internet
RATE=1Mbit
CEIL=1Mbit

-- eth1-2:20:30.users --
RATE=920Kbit
CEIL=920Kbit
LEAF=esfq
HASH=dst

-- eth1-2:20:30:40.user1 --
RATE=460Kbit
CEIL=920Kbit
RULE=192.168.0.1

-- eth1-2:20:30:40:41.user1-torrent --
RATE=64Kbit
CEIL=460Kbit
MARK=10
PRIO=10

-- eth1-2:20:30:40:42.user1-radio --
RATE=160Kbit
CEIL=460Kbit
RULE=*:1755,
PRIO=1

-- eth1-2:20:30:50.user2 --
RATE=460Kbit
CEIL=920Kbit
RULE=192.168.0.1

-- eth1-2:20:30:50:51.user2-torrent --
RATE=64Kbit
CEIL=460Kbit
MARK=10
PRIO=10

-- eth1-2:20:30:50:52.user2-radio --
RATE=160Kbit
CEIL=460Kbit
RULE=*:1755,
PRIO=1

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

Смысл такой: делаешь общий класс со скоростью чуть меньше, чем 1 мегабит (950 к примеру). В нём делаешь два дочерних класса со скоростью 425 мбвс, устанавливаешь для них ceil в 950 мегабит. Настраиваешь фильтры: пакеты одного юзера в первый дочерний класс, второго — во второй. Собственно всё. В iptables ставишь нужный ToS на нужные пакеты.

Что получаем: каждый пользователь имеет 425 мбвс минимум, при незанятом канале больше, вплоть до 950. Для класса стоит дефолтная дисциплина pfifo_fast, которая отправляет пакеты в зависимости от ToS, который ставится через iptables.

Ну и не стоит забывать, что всё это делается на исходящем интерфейсе, т.е. на том, с которого этот трафик пойдёт пользователям.

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

Это все понятно, мне же нужно еще и приоретизацию организовать для каждого юзера, ToS - это оно и есть? Где можно про это почитать?

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