Bert Hubert - Linux Advanced Routing & Traffic Control HOWTO

Тут можно читать онлайн Bert Hubert - Linux Advanced Routing & Traffic Control HOWTO - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-osnet. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Linux Advanced Routing & Traffic Control HOWTO
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4.5/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

Bert Hubert - Linux Advanced Routing & Traffic Control HOWTO краткое содержание

Linux Advanced Routing & Traffic Control HOWTO - описание и краткое содержание, автор Bert Hubert, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Оригинальную версию документа вы найдете по адресу http://lartc.org/.

Практическое руководство по применению iproute2 (и в меньшей степени netfilter) для управления трафиком.

Linux Advanced Routing & Traffic Control HOWTO - читать онлайн бесплатно полную версию (весь текст целиком)

Linux Advanced Routing & Traffic Control HOWTO - читать книгу онлайн бесплатно, автор Bert Hubert
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Не дайте ввести себя в заблуждение! Вы не должны полагать, что ядро находится на вершине диаграммы, а сеть под ней! Пакеты ставятся в очередь и извлекаются из очереди корневой дисциплиной, она единственная, с которой работает ядро.

Порядок классификации некоторого пакета может быть представлен в виде цепочки, например:

1: → 1:1 → 1:12 → 12: → 12:2

Таким образом, пакет помещается в очередь, которая управляется дисциплиной, присоединенной к классу 12:2. В данном примере, к каждому узлу дерева присоединен фильтр, который принимает решение — по какой ветви продолжить классификацию пакета. Но возможен и другой вариант:

1: → 12:2

В этом случае, фильтр, присоединенный к корню, сразу же классифицировал пакет, как принадлежащий классу 12:2.

9.5.2.2. Как выполняется извлечение пакетов из очереди.

Когда ядро решает, что пора извлечь очередной пакет из очереди и передать его сетевому интерфейсу, оно посылает запрос на извлечение корневой дисциплине. Далее этот запрос передается по цепочке классу 1:1, а от него всем элементам одного уровня — 10:, 11:, и 12:. В данном случае запрос полностью обходит все дерево, поскольку только класс 12:2 имеет пакет.

Проще говоря, вложенные классы "общаются" ТОЛЬКО со своими "родительскими" дисциплинами и никогда не работают напрямую с интерфейсом. Только корневая дисциплина получает запрос на извлечение пакета из очереди напрямую от ядра!

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

9.5.3. Дисциплина PRIO.

Дисциплина PRIO фактически никак не ограничивает трафик, она лишь выполняет его классификацию на основе присоединенных к ней фильтров. Вы можете рассматривать дисциплину PRIO как более мощную версию pfifo_fast, в которой каждая из полос является отдельным классом, а не простой очередью FIFO.

Постановка пакета в очередь выполняется дисциплиной PRIO на основе фильтров, заданных вами. По-умолчанию создаются три класса. Эти классы по-умолчанию содержат обычные дисциплины FIFO, но они могут быть заменены дисциплинами любого типа, какие вам только доступны.

Когда необходимо извлечь пакет из очереди, то первым проверяется класс :1. Каждый последующий класс проверяется только в том случае, если в предыдущем нет ни одного пакета.

Эта дисциплина может с успехом применяться в тех случаях, когда необходимо "раскидать" трафик по приоритетам, основываясь не только на флагах TOS. Вы можете так же добавить другие дисциплины к предопределенным классам, что повысит возможности управления трафиком, по сравнению с pfifo_fast.

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

Формально, дисциплина PRIO относится к разряду планировщиков типа Work-Conserving.

9.5.3.1. Параметры и порядок использования дисциплины PRIO.

Применительно к данной дисциплине, утилита tcдопускает следующие параметры:

bands

Число создаваемых полос. Каждая полоса фактически является классом. Если вы изменяете это число, то вы должны так же изменить и следующий параметр.

priomap

Если ваша конфигурация не предусматривает наличие фильтров, выполняющих классификацию трафика, то дисциплина PRIO присваивает приоритеты по-умолчанию.

Все это работает точно так же, как и в случае с pfifo_fast.

Каждая полоса является классом и имеет свой дескриптор, начиная с <���старший_номер>:1 и заканчивая <���старший_номер>:3, по умолчанию. Таким образом, если дисциплине PRIO присвоен дескриптор 12: , то класс-полоса с наивысшим приоритетом получит дескриптор 12:1.

Повторюсь еще раз, полоса 0 получит младший номер дескриптора — 1! Полоса 1 — 2 и так далее.

9.5.3.2. Пример конфигурации.

В качестве примера создадим такое дерево:

1: корневая дисциплина

/ | \

/ | \

/ | \

1:1 1:2 1:3 классы

| | |

10: 20: 30: дисциплины

sfq tbf sfq

полоса 0 1 2

Объемный трафик будет обслуживаться дисциплиной 30: , интерактивный — 20: или 10:.

Конфигурирование:

# tc qdisc add dev eth0 root handle 1: prio

## Эта команда создаст классы 1:1, 1:2, 1:3

# tc qdisc add dev eth0 parent 1:1 handle 10: sfq

# tc qdisc add dev eth0 parent 1:2 handle 20: tbf rate 20kbit buffer 1600 limit 3000

# tc qdisc add dev eth0 parent 1:3 handle 30: sfq

Теперь посмотрим – что у нас получилось:

# tc –s

qdisc ls dev eth0 qdisc sfq 30: quantum 1514b

Sent 0 bytes 0 pkts (dropped 0, overlimits 0)

qdisc tbf 20: rate 20Kbit burst 1599b lat 667.6ms

Sent 0 bytes 0 pkts (dropped 0, overlimits 0)

qdisc sfq 10: quantum 1514b

Sent 132 bytes 2 pkts (dropped 0, overlimits 0)

qdisc prio 1: bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

Sent 174 bytes 3 pkts (dropped 0, overlimits 0)

Как видите, через полосу 0 уже "проскочил" какой-то трафик, пока отрабатывали наши команды!

Теперь выполним передачу достаточно большого объема данных неким инструментом, который корректным образом устанавливает флаги TOS и проверим еще раз:

# scp tc ahu@10.0.0.11:./

ahu@10.0.0.11's password:

tc 100% |*****************************| 353 KB 00:00

# tc –s qdisc ls dev eth0

qdisc sfq 30: quantum 1514b

Sent 384228 bytes 274 pkts (dropped 0, overlimits 0)

qdisc tbf 20: rate 20Kbit burst 1599b lat 667.6ms

Sent 2640 bytes 20 pkts (dropped 0, overlimits 0)

qdisc sfq 10: quantum 1514b

Sent 2230 bytes 31 pkts (dropped 0, overlimits 0)

qdisc prio 1: bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

Sent 389140 bytes 326 pkts (dropped 0, overlimits 0)

На этот раз видно, что весь трафик был отправлен через дисциплину 30:, которая в нашем случае имеет наименьший приоритет. Чтобы убедиться в том, что интерактивный трафик поступает в высокоприоритетные полосы, выполним следующую команду:

# tc –s qdisc ls dev eth0

qdisc sfq 30: quantum 1514b

Sent 384228 bytes 274 pkts (dropped 0, overlimits 0)

qdisc tbf 20: rate 20Kbit burst 1599b lat 667.6ms

Sent 2640 bytes 20 pkts (dropped 0, overlimits 0)

qdisc sfq 10: quantum 1514b

Sent 14926 bytes 193 pkts (dropped 0, overlimits 0)

qdisc prio 1: bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

Sent 401836 bytes 488 pkts (dropped 0, overlimits 0)

Как видите, все работает правильно, весь трафик был отправлен в 10: — через самую высокоприоритетную дисциплину.

9.5.4. Дисциплина CBQ.

Как уже упоминалось ранее, CBQ — одна из самых сложных дисциплин. Пожалуй я не погрешу против истины, если заявлю, что это самая объемная, самая непонятная и самая запутанная дисциплина организации очередей. Это не потому, что авторы алгоритма некомпетентны, а потому, что идеология этого алгоритма абсолютно не совпадает с идеологией Linux.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Bert Hubert читать все книги автора по порядку

Bert Hubert - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Linux Advanced Routing & Traffic Control HOWTO отзывы


Отзывы читателей о книге Linux Advanced Routing & Traffic Control HOWTO, автор: Bert Hubert. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x