Нарезаем трафик ломтиками

Andrey Matveev

Хакер, номер #087, стр. 087-130-1

(andrushock@real.xakep.ru)

Выжми все из своего интернет-канала!

Ограничение пропускной способности канала, классификация очередей входящего/исходящего трафика и приоритезация сетевых пакетов - вот три ключевых компонента, которые позволят нам заложить отличный фундамент для качественного и количественного доступа в Сеть. На первый взгляд такое суждение выглядит весьма спорным: как за счет различных ограничений можно достигнуть оптимальной скорости передачи данных, выделенной провайдером? Оказывается, очень даже возможно, особенно при одновременном download/upload, и сегодня мы покажем как.

[введение в проблему]

Каждый из нас стремится использовать доступный канал на все 100%. Виндузятники один за одним качают крэкеры из Интернета и "умные" менеджеры закачек, не забывая при этом бороздить минное поле под названием реестр. Юниксоиды поступают несколько иначе. Перекомпиляция ядра с различными сетевыми настройками и твикинг значений переменных стека TCP/IP - вот лишь неполный перечень мероприятий, после проведения которых подавляющее большинство мнит себя классными специалистами по сетевой подсистеме *nix и с гордостью наслаждается фиктивным увеличением скорости передачи данных. Но стоит признать, победная эйфория быстро проходит, когда во время заливки двухгигабайтной avi'шки тюнинговая ось сваливается в ddb с сообщением keel panic...

Приведу еще один пример: ты преспокойно админишь удаленную тачку по ssh, вдруг без видимой причины ssh-сессия начинает лагать, команды вводятся с задержкой, вплоть до разрыва соединения. После долгих выяснений дело оказывается не в ядре и не в операционке, а в соседе с третьего этажа, который по ftp начал качать новый фильм с участием Елены Берковой, заняв весь канал. Напрашивается вопрос: как в таком случае гарантировать себе и другим пользователям нормальную работу по определенным протоколам, скажем, ssh или icq/irc?

Единственный правильный и действительно эффективный способ - организовать трафик-шейпинг.

[уточняем диспозицию]

Рассмотрим вариант с ADSL-соединением. Предполагается, что к данному моменту Etheet-порт ADSL-модема с помощью кроссоверного кабеля уже подключен к сетевой карте (VIA VT6103, интерфейс vr0). Также будем считать, что на компьютере, выполняющем функции шлюза, установлена карточка беспроводного доступа (Gigabyte GN-WPKG, интерфейс ral0). Для наглядности сценарий можно представить следующим образом:

[ ADSL Modem ]----(vr0)

[ GATEWAY ]-(pppoe0)-------[ ISP ]--

/

[ LAPTOP ] - - - (ral0)

Весь изложенный материал можно применять не только для ADSL-соединений, совсем необязательно держать для таких задач выделенный сервер, и в качестве используемой операционной системы может выступать любая из *BSD.

[бескомпромиссная дуэль: in-keel vs userland]

В OpenBSD (как, впрочем, и в NetBSD) присутствует сразу две реализации PPPoE. Первая представляет собой утилиту pppoe(8) из пространства пользователя, которая, помимо всего прочего, способна детально журналировать события и производить тонкое конфигурирование соединений.

Содержание  Вперед на стр. 087-130-2
ttfb: 4.8229694366455 ms