Была Циска, а именно 2901. Была задача обеспечить 2000 человек (1500 из которых — WiFi-клиенты) интернетом на одном из форумов через интернет-канал шириной в 200 Мбит. Для этого было необходимо поднять на Cisco: dhcp сервер, nat, шейпинг канала без приоритезации Qos. Причины отказа от Qos: даже без него возникает высокая нагрузка на CPU роутера во время тестов, при скоростях, приближающихся к 200 Мбит. Я бы сказал следующее: nat+ шейпинг на основе police = 200 Мбит в максимуме (нагрузка CPU 90-100%). Соответственно, не имея возможности применять QoS, я применял две политики ограничения скорости: одну для http(s)-трафика, вторую для всего остального. Подробности под катом…

Для начала, очень кратко структурируем задачи, технические средства, рассмотрим применяемые решения и результаты примененного решения.

Постановка задачи:

  1. Устройства в кол-ве до 2000 штук. Из них до 1500 — WiFi-клиенты. Точки доступа WiFi неизвестны, обеспечивает другое лицо.
  2. Обеспечить круглосуточный доступ в интернет в течении нескольких дней прохождения форума.
  3. Более подробные условия использования интернета этими устройствами не поддаются никакому прогнозированию, как и требования к скоростям каналов. Однако был сделан вывод выделения суммарно 200 Мбит для нужд 2000 абонентов. Итого 12 Кбайт\с на устройство в самом худшем случае, т.е. диалап ). Напоминаю, что на форумах и мероприятиях такого рода трафик качают достаточно равномерно и не одновременно, соответственно канала должно хватить даже с запасом.

Технические средства:

  1. Cisco 2901. Несколько б\у, но еще не пыльная.
  2. Интернет-канал со скоростью более 400 Мбит, из которого необходимо использовать не более 200 Мбит для поставленных выше задач.
  3. Целый парк рабочих станций и несколько 1U-серверов начального уровня, на которых можно поднять шлюз, фаервол, прокси.
  4. Гугл.

Выбор решения технического задания:

Понятно, что технических реализаций много: мы имеем возможность применить Unix, начиная с ipfw, заканчивая squid-ом; рассмотреть вариант использования чего-либо на Windows, и конечно Циска. Сразу хочу объяснить свою простую логику выбранного мной решения, т.к. остальные даже рассматривать более не будем:

  1. Если со всем справится Cisco 2901 — оставлю ее как единственный роутер, dhcp-сервер, nat и шейпер. Т.е. одно устройство обслуживает всю необходимую сетевую канитель (DNS-серверов своих не будет).
  2. Если Киска не справится с нагрузкой — рассмотрю вариант проксирования трафика на unix + squid + какой-нибудь простенький шейпер http-трафика на той же железке.
  3. Если и с этим не справится циска — перенести из нее нат, оставить тупо роутинг.

Сразу скажу, что я остановился на первом пункте с маленькими оговорками: Cisco 2901 справилась с нагрузкой, судя по нагрузочным тестам. Однако 200 Мбит интернета она раздавала с высокой утилизацией при простом шейпинге трафика ресурсо-экономным police-методом. Соответственно, использовать shape-метод, а тем более супер-пупер QoS уже нельзя.

В постанове задачи как можно увидеть, много пробелов, и настроить дельный QoS, не имея даже примерных требований к сети, не представляется возможным. Можно только наугад тыкать пальцем в облака. Соответственно, мне это только и оставалось сделать. Я продумал реализовать dhcp и nat на циске (там ничего сложного нет, пара строк в конфиге) и поделить простым ресурсо-экономным шейпингом «без выеживаний» канал в 200 Мбит на 2 части:

  1. http(s), почтовый (pop3, imap, smtp), dhs — трафик — в одной группе, ограниченной по скорости на 150 Мбитах\с;
  2. все остальное — а это торренты, фтп, скайпы, sip-трафик и все-все остальное — в другой группе, ограниченной скоростью на 50 Мбитах\с;
  3. в каждой из этих двух групп QoS не применяется, и соответственно, трафик делится между несколькими ip-устройствами внутренней сети абсолютно неконтролируемо. В теории, все интернет-потребители должны равномерно делить трафик между собой, на практике — все не всегда так радужно.

Настройка Cisco: ограничение скорости, nat, dhcp-server

Я думаю, можно сразу опубликовать весь конфиг Циски и отписать пару комментариев по нему.

Результаты и итоги:

  1. Решение способно переварить 200 Мбит интернет-канала без использования полноценных QoS. Я считаю, что для такого класса оборудования этот результат вполне себе «ничотак».
  2. Шейпится трафик просто: весь трафик, идущий по определенным вами портам (ip access-list extended PORTS01), имеет бОльший кусок интернет-канала, все остальное — меньшую скорость.
  3. Одно оборудование, одна точка отказа, простота монтажа, идеал для временного решения аля «дайте интернетки на пару дней».
  4. Использование для шейпинга police в сочетании с применением этого police на интерфейсах в направлении input (service-policy input CHANNEL01-POLICE), дает надежду в меньшей нагрузке на роутер при DDos-атаках, т.к. применение шейп-правила на интерфейсах в направлении output более ресурсоемко (потому что пакеты «входят» в роутер и обрабатываются, кешируются, «задерживаются»… И кстати, только в направлении интерфейса output работает shape-метод и QoS),  и по сравнению с shape-методом ограничения скорости (где пакеты не отбрасываются, а «придерживаются» на роутере, но все же отправляются получателю), police-метод (все «лишние» пакеты, при превышении разрешенной скорости не запоминаются для отложенной отправки, а просто сразу отбрасываются) также производительнее.