Linux Advanced Routing & Traffic Control HOWTO
Шрифт:
Для входящего трафика 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.
Но пока что у нас есть только устройства и нам нужно настроить маршрутизацию. Один из способов сделать это – назначить сеть /31 каждому соединению, в том числе и устройствам teql0:
На маршрутизаторе A:
На маршрутизаторе B:
Теперь маршрутизатор A должен "пинговать" адреса 10.0.0.1, 10.0.0.3 и 10.0.0.5 по двум реальным каналом и одному компенсаторному устройству. Аналогично, маршрутизатор B должен пинговать 10.0.0.0, 10.0.0.2 и 10.0.0.4.
Если все работает, на маршрутизаторе A маршрут к сети 2 должен проходить через 10.0.0.5, а маршрутизатор B должен иметь адрес 10.0.0.4 в качестве маршрута к сети 1. Для отдельного случая, когда сеть 1 это ваша домашняя сеть, а сеть 2 — Internet, маршрутизатор A должен иметь шлюз по умолчанию 10.0.0.5.
10.1. Предостережение.
Не все так просто как кажется. На интерфейсах eth1 и eth2, маршрутизаторов A и B , необходимо отключить фильтрацию по адресу возврата (return path filtering), иначе будут фильтроваться пакеты, предназначеные для другого интерфейса:
Следующая проблема — это порядок пакетов. Допустим нужно передать 6 пакетов от A к B. По интерфейсу eth1 могут пройти пакеты 1, 3 и 5. Соответственно по eth2 пройдут 2, 4 и 6. В идеальном мире, маршрутизатор B получил бы эти пакеты в порядке 1, 2, 3, 4, 5, 6. Но в нашем мире вероятность того, что порядок изменится, очень велика. Например, порядок может быть таким: 2, 1, 4, 3, 6, 5. И это может запутать стек TCP/IP. Хотя эта проблема не так важна, для каналов с большим количеством разных сеансов TCP/IP, тем не менее вы не сможете ощутить значительный прирост скорости при передаче одного файла по ftp, разве только отправляющая или получающая ОС — не Linux, которую весьма не просто шокировать простым изменением порядка пакетов.
Однако, для многих приложений балансировка нагрузки является хорошим решением.
10.2. Другие возможности.
Уильям Стирнс (William Stearns) использовал сложную конфигурацию тоннелей для достижения эффективного использования нескольких несвязанных подключений к сети Internet. Информацию об этом можно найти здесь.
В дальнейшем данный документ, вероятно, будет содержать больше информации по этому вопросу.
Глава 11. netfilter и iproute – маркировка пакетов.
До сих пор мы детально разбирались с работой iproute и лишь вскользь упомянули netfilter. Теперь настало самое время поговорить о нем. Для начала рекомендую вам прочитать Remarkably Unreliable Guides.
Netfilter позволяет выполнять фильтрацию трафика и вносить изменения в заголовки пакетов. Одна из замечательных особенностей netfilter — это возможность устанавливать числовые метки на пакеты.
Например, следующее правило пометит все пакеты, отправляемые на порт 25:
Допустим, что у нас имеется два подключения к Интернет — одно быстрое, но дорогое, другое медленное, зато дешевое. Естественно, что мы предпочтем отправлять почту по дешевому маршруту. Командой выше, мы уже пометили все пакеты исходящей почты числовой меткой — 1, теперь попробуем направить эти пакеты по дешевому маршруту:
Кодекс Охотника. Книга XVII
17. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Глэрд VIII: Базис 2
8. Глэрд
Фантастика:
фэнтези
боевая фантастика
попаданцы
рейтинг книги
Хроники Тириса. Книга 1
1. Хроники Тириса
Фантастика:
боевая фантастика
космическая фантастика
фантастика: прочее
рейтинг книги
Инженер Петра Великого 2
2. Инженер Петра Великого
Фантастика:
попаданцы
альтернативная история
фэнтези
рейтинг книги
Купеческая дочь замуж не желает
Фантастика:
фэнтези
рейтинг книги
Меняя маски
1. Унесенный ветром
Фантастика:
боевая фантастика
попаданцы
рейтинг книги