Linux Advanced Routing & Traffic Control HOWTO
Шрифт:
Исходящий порт: match ip sport 80 0xffff, порт назначения: match ip dport 80 0xffff.
Номера протоколов вы найдете у себя, в файле /etc/protocols . Например, отбор ICMP-пакетов (номер протокола icmp – 1) можно выполнить командой match ip protocol 1 0xff.
Пакеты могут маркироваться либо средствами ipchains, либо средствами iptables. Это бывает полезно, например, для наложения ограничений
Обратите внимание — этот фильтр не является селектором u32!
Установить метку можно следующим образом:
данном случае число 6 выбрано произвольным образом.
Если вы не хотите с головой погружаться в синтаксис tc, тогда просто пользуйтесь возможностями iptables и запомните принцип отбора по метке.
Отбор трафика с минимальной задержкой:
Дополнительные сведения о фильтрации трафика вы найдете в главе Расширенная фильтрация.
9.7. Intermediate queueing device.
Устройство IMQ не является дисциплиной обработки очереди, но тесно с ними связано. В Linux, дисциплины обработки очередей присоединяются к сетевым устройствам и все, что помещается в очередь устройства, попадает сначала в очередь дисциплины обработки очереди. Из-за этого подхода существуют два ограничения:
1. Ограничение пропускной способности полноценно работает только для исходящего трафика (дисциплина обработки входящего трафика существует, но ее возможности мизерны по сравнению с полноклассовыми дисциплинами).
2. Дисциплина обработки очереди обслуживает трафик только для одного интерфейса, нет никакой возможности задать глобальные ограничения.
Устройство IMQ пытается решить эти проблемы. С помощью подсистемы фильтрации ОС Linux можно определенные пакеты направлять через этот псевдо-интерфейс, к которому подключаются различные дисциплины обработки очередей. Таким образом, можно управлять полосой пропускания, как входящего, так и общего трафика.
9.7.1. Пример конфигурирования.
Первое, что может прийти на ум – попытаться сформировать входящий трафик так, чтобы дать себе наивысший приоритет ;) Конфигурация IMQ очень похожа на конфигурацию любого другого интерфейса:
В
этом примере для классификации пакетов используется селектор u32, однако, при работе с imq, могут использоваться и другие селекторы.Отбираемый трафик маркируется средствами iptables:
Действие IMQ в iptables
допускается использовать только в цепочках PREROUTING и POSTROUTING, таблицы mangle. Его синтаксис:
где n – это номер устройства imq.
Это действие существует и в ip6tables.
Обратите внимание: трафик попадает на интерфейс не в тот момент, когда переходит к цели IMQ, а после обработки соответствующей цепочки. Точное место входа на устройство imq зависит от типа трафика (входящий/исходящий).
Для входящего трафика imq регистрируется с приоритетом NF_IP_PRI_MANGLE + 1. Это означает, что пакеты попадают на устройство сразу после прохождения цепочки PREROUTING. Для исходящего трафика, imq использует приоритет NF_IP_PRI_LAST, который гарантирует, что пакеты, уничтоженные пакетным фильтром не будут занимать полосу пропускания устройства.
Дополнительные сведения и "заплаты" вы найдете на сайте http://luxik.cdi.cz/~patrick/imq/
Глава 10. Распределение нагрузки по нескольким интерфейсам.
Существует несколько способов реализации такой схемы. Простейший и непосредственный способ представляет 'TEQL'. Это простейший компенсатор (True/Trivial link Equalizer). Как и большая часть того, что связано с очередями, балансировка нагрузки работает в обе стороны. Для полного эффекта обе стороны соединения должны работать совместно.
Представим ситуацию:
A и B это маршрутизаторы, и пока мы будем предполагать, что оба работают под управлением Linux. Для передачи данных из сети 1 в сеть 2, маршрутизатору A необходимо распределить пакеты по обоим каналам. Маршрутизатор B должен быть настроен соответствующим образом, чтобы поддерживать это. Тоже самое относится и к передаче данных из сети 2 в сеть 1. Маршрутизатор B должен передавать данные по двум интерфейсам — eth1 и eth2.
Распределение выполняется устройством 'TEQL'. Вот необходимые команды (куда уж проще):
Не забудьте команду ip link set up!
Приведенные команды должны быть выполнены на каждом из маршрутизаторов. Устройство teql0 представляет собой циклический распределитель пакетов по интерфейсам eth1 и eth2. На устройство teql никогда не приходят данные, их получают интерфейсы eth1 и eth2.