Вход:  Пароль:  
FreeSource: НачатыеПроекты/ЗаготовкиСтатей/УправлениеТрафиком ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |

Управление скоростью и приоритетом трафика с помощью iproute2


Оглавление документа

Введение

Данная статья по большому счету является вольным изложением ссылок, приведенных в конце этого документа. Однако она отличается более простым (я надеюсь) изложением материала и направлена прежде всего на практическое применение изложенных в ней истин. В этой статье не будет длинного объяснения теории и всех возможных способов применения утилиты tc. В ней будет краткое описание происходящего процесса и несколько примеров, которые можно сразу использовать в работе.


Любые изменения, дополнения и исправления ошибок в настоящей статье приветствуются. Только большая просьба — поменьше теории и больше практики :) Лично я считаю правильной ту документацию, которую можно сразу применить, а уж потом разбираться, как оно работает. Именно это и сподвигло меня на написание данного документа.

Что нам понадобится

Схема маршрутизатора

Наиболее типичной схемой Linux маршрутизатора является машина с двумя интерфейсами, смотрящими в интернет (определим его как eth0/192.168.1.1) и во внутреннюю сеть (eth1/192.168.2.1). В качестве интернет-интерфейса используется aсинхронный DSL, что опзволит нам более детально показать принципы управления трафиком в боевых условиях. Ну и потому, что имеется наиболее толковая инструкция :)


| Internet | <-500 Kbit/s – 1.5 Mbit/s -> | aDSL-модем (eth0) | <– 10 Mbit/s -> | маршрутизатор | <– 100 Mbit/s -> | ЛВС |

Приступая к делу

Нашей задачей является контроль над трафиком в обеих направлениях. И если мы можем спокойно управлять очередью исходящих пакетов, поскольку те формируются (либо проходят) на нашем маршрутизаторе, то управлять очередью входящих пакетов мы можем лишь косвенно, например отбрасывая заведомо корректные tcp-пакеты. Устройство TCP таково, что при пересылке данных протокол шлет пакеты, пока они не начнут теряться. Этот момент определяется и тогда уменьшается окно протокола TCP — такое поведение длится на протяжении всей передачи данных, чтобы максимально использовать доступную полосу пропускания.
Вообще насчет контроля входящей полосы пропускания у меня есть некоторые сомнения, будет ли способ работать достаточно хорошо для нужд интерактивных сервисов.


Также можно манипулировать извещениями о размере окна: при передаче по протоколу TCP получатель шлет отправителю поток пакетов-подтверждений (ACK). В такой ACK-пакет включается информация о размере окна, то есть о максимальном разрешенном количестве неподтвержденных пакетов. Управляя этим значением мы можем принудительно понизить скорость передачи источника. На данный момент не существует (свободной) Linux-реализации управления потоком такого типа.1 непотвержденная информация

Контроль исходящего трафика

Реализация==

Создание корневой обработки очереди

Здесь и далее подразумеваются консольные команды. Для более простой настройки целесообразно создать скрипт, который выполнит все действия за раз.
Итак, выполним команду вида:

Комментарии:
qdisc – собственно обработка;
add – команда создания. Также можно использовать del, show, change, replace и другие команды. Думаю, подробного описания не требуется;
dev eth0 – указание, на каком устройстве мы будем использовать очередь;
root – означает, что это корневая дисциплина обработки. Можно использовать и дочерние, но это выходим за рамки «простого» руководства;
handle 1:0 – идентификатор обработки. Его младший номер всегда должен равняться нулю, поскольку это «ветка» в дереве классов и обработок, которая «растет» прямо от родительского ствола.
htb – тип обработки. Их существует немало, но на описание их всех у меня просто не хватит образованности. Да, для обработки типа HTB могут существовать только HTB классы.
default 11 – означает, что весь трафик, не попадающий ни под один фильтр, будет направлять в класс с указанным идентификатором. Как создавать классы и фильтры, будет рассмотрено ниже.

Создание классов для разделения трафика

продолжение следует

Ссылки по теме

1 http://gazette.linux.ru.net/rus/articles/adsl_bandwidth_management-howto.html
2 http://www.nixp.ru/cgi-bin/go.pl?q=articles;a=iproute2
3 http://www.opennet.ru/base/net/adv_route_qos.txt.html
4 http://www.netup.ru/articles_pdf/1.pdf (PDF)
5 http://lartc.org/
6 http://gazette.linux.ru.net/rus/articles/index-lartc.html


Ссылок на эту страницу нет


 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]