Была Циска, а именно 2901. Была задача обеспечить 2000 человек (1500 из которых — WiFi-клиенты) интернетом на одном из форумов через интернет-канал шириной в 200 Мбит. Для этого было необходимо поднять на Cisco: dhcp сервер, nat, шейпинг канала без приоритезации Qos. Причины отказа от Qos: даже без него возникает высокая нагрузка на CPU роутера во время тестов, при скоростях, приближающихся к 200 Мбит. Я бы сказал следующее: nat+ шейпинг на основе police = 200 Мбит в максимуме (нагрузка CPU 90-100%). Соответственно, не имея возможности применять QoS, я применял две политики ограничения скорости: одну для http(s)-трафика, вторую для всего остального. Подробности под катом…
Для начала, очень кратко структурируем задачи, технические средства, рассмотрим применяемые решения и результаты примененного решения.
Постановка задачи:
- Устройства в кол-ве до 2000 штук. Из них до 1500 — WiFi-клиенты. Точки доступа WiFi неизвестны, обеспечивает сторонний подрядчик.
- Обеспечить круглосуточный доступ в интернет в течение нескольких дней проведения форума.
- Более подробные условия использования интернета этими устройствами не поддаются никакому прогнозированию, как и требования к скоростям каналов. Однако был сделан вывод выделения суммарно 200 Мбит для нужд 2000 абонентов. Итого 12 Кбайт\с на устройство в самом худшем случае, т.е. диалап ). Напоминаю, что на форумах и мероприятиях такого рода трафик потребляют достаточно равномерно и не все клиенты одновременно в единицу времени, соответственно скорости канала в теории должно хватить.
Технические средства:
- Cisco 2901.
- Интернет-канал со скоростью более 400 Мбит, из которого необходимо использовать не более 200 Мбит для поставленных выше задач.
- Целый парк рабочих станций и несколько 1U-серверов начального уровня, на которых можно поднять шлюз, фаервол, прокси.
- Гугл.
Выбор решения:
Понятно, что технических реализаций много: мы имеем возможность применить Unix, начиная с ipfw, заканчивая squid-ом; рассмотреть вариант использования чего-либо на Windows, и конечно Циска. Сразу хочу объяснить свою простую логику выбранного мной решения, т.к. остальные даже рассматривать более не будем:
- Если со всем справится Cisco 2901 — оставлю ее как единственный роутер, dhcp-сервер, nat и шейпер. Т.е. одно устройство обслуживает всю необходимую сетевую часть (DNS-серверов своих не будет).
- Если Cisco не справится с нагрузкой — рассмотрю вариант проксирования трафика на unix + squid + какой-нибудь простенький шейпер http-трафика на том же оборудовании.
- Если и с этим не справится циска — перенести из нее нат, оставить только роутинг.
Сразу скажу, что я остановился на первом пункте с маленькими оговорками: Cisco 2901 справилась с нагрузкой, судя по нагрузочным тестам. Однако 200 Мбит интернета она раздавала с высокой утилизацией при простом шейпинге трафика ресурсо-экономным police-методом. Соответственно, использовать shape-метод, а тем более QoS уже нельзя.
В постановке задачи как можно увидеть, много пробелов, и настроить дельный QoS, не имея даже примерных требований к сети, не представляется возможным. Продумал реализовать dhcp и nat на циске (там ничего сложного нет, пара строк в конфиге) и поделить простым ресурсо-экономным шейпингом канал в 200 Мбит на 2 части:
- http(s), почтовый (pop3, imap, smtp), dhs — трафик — в одной группе, ограниченной по скорости на 150 Мбитах\с;
- все остальное — а это торренты, фтп, скайпы, sip-трафик и все-все остальное — в другой группе, ограниченной скоростью на 50 Мбитах\с;
- в каждой из этих двух групп QoS не применяется, и соответственно, трафик делится между несколькими ip-устройствами внутренней сети абсолютно неконтролируемо. В теории, все интернет-потребители должны равномерно делить трафик между собой, на практике — все не всегда так радужно, в этой части есть много нюансов, заострять внимание на этом в данной статье нет смысла.
Настройка Cisco: ограничение скорости, nat, dhcp-server
Я думаю, можно сразу опубликовать весь конфиг Циски:
router01#show config Using 5341 out of 262136 bytes ! version 15.1 service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption ! hostname router01 ! boot-start-marker boot-end-marker ! ! logging buffered 51200 warnings ! no aaa new-model ! ! no ipv6 cef ip source-route ip cef ! ! ! ip dhcp excluded-address 192.168.128.1 192.168.128.50 ! ip dhcp pool DHCP_POOL network 192.168.128.0 255.255.240.0 dns-server 8.8.8.8 8.8.4.4 default-router 192.168.128.1 ! ! ip domain name yourdomain.com ip name-server 8.8.8.8 ip name-server 8.8.4.4 ! multilink bundle-name authenticated ! ! crypto pki token default removal timeout 0 ! crypto pki trustpoint TP-self-signed-242367043 enrollment selfsigned subject-name cn=IOS-Self-Signed-Certificate-242367043 revocation-check none rsakeypair TP-self-signed-242367043 ! ! crypto pki certificate chain TP-self-signed-242367043 certificate self-signed 01 nvram:IOS-Self-Sig#1.cer license udi pid CISCO2901/K9 sn XXXXXXXXXXX ! ! username admin privilege 15 password 0 *** ! redundancy ! ! class-map match-any INET-PORTS01 match access-group name PORTS01 ! ! policy-map CHANNEL01-POLICE class INET-PORTS01 police cir 150000000 bc 28125000 be 56250000 conform-action transmit exceed-action drop class class-default police cir 50000000 bc 9375000 be 18750000 conform-action transmit exceed-action drop ! interface Embedded-Service-Engine0/0 no ip address shutdown ! interface GigabitEthernet0/0 description $ETH-LAN$ETH-SW-LAUNCH$INTF-INFO-GE 0/0$ ip address 123.45.67.34 255.255.255.240 ip nat outside ip virtual-reassembly in duplex auto speed auto service-policy input CHANNEL01-POLICE ! interface GigabitEthernet0/1 ip address 192.168.128.1 255.255.240.0 ip nat inside ip virtual-reassembly in duplex auto speed auto service-policy input CHANNEL01-POLICE ! no ip forward-protocol nd ! ip http server ip http access-class 23 ip http authentication local ip http secure-server ip http timeout-policy idle 60 life 86400 requests 10000 ! ip nat inside source list 1 interface GigabitEthernet0/0 overload ip route 0.0.0.0 0.0.0.0 123.45.67.33 ! ip access-list extended PORTS01 permit tcp any any eq www permit tcp any eq www any permit tcp any any eq 443 permit tcp any eq 443 any permit tcp any any eq pop3 permit tcp any eq pop3 any permit tcp any any eq 143 permit tcp any eq 143 any permit tcp any any eq 993 permit tcp any eq 993 any permit tcp any any eq 995 permit tcp any eq 995 any permit tcp any any eq domain permit tcp any eq domain any permit udp any any eq domain permit udp any eq domain any permit tcp any any eq 8080 permit tcp any eq 8080 any ! access-list 1 permit 192.168.128.0 0.0.15.255 ! ! control-plane ! ! line con 0 login local line aux 0 line 2 no activation-character no exec transport preferred none transport input all transport output pad telnet rlogin lapb-ta mop udptn v120 ssh stopbits 1 line vty 0 4 access-class 23 in privilege level 15 login local transport input telnet ssh line vty 5 15 access-class 23 in privilege level 15 login local transport input telnet ssh ! scheduler allocate 20000 1000 end
Результаты и итоги:
- Решение способно переварить 200 Мбит интернет-канала без использования полноценных QoS. Я считаю, что для такого класса оборудования этот результат вполне приемлемо.
- Шейпинг прост: весь трафик, идущий по определенным портам (ip access-list extended PORTS01), имеет бОльшую часть скорости интернет-канала, все остальное — меньшую скорость.
- Одно оборудование, одна точка отказа, простота монтажа.
- Использование для шейпинга police в сочетании с применением этого police на интерфейсах в направлении input (service-policy input CHANNEL01-POLICE), дает надежду в меньшей нагрузке на роутер при DDos-атаках, т.к. применение шейп-правила на интерфейсах в направлении output более ресурсоемко (потому что пакеты «входят» в роутер и обрабатываются, кешируются, «задерживаются»… И кстати, только в направлении интерфейса output работает shape-метод и QoS), и по сравнению с shape-методом ограничения скорости (где пакеты не отбрасываются, а «придерживаются» на роутере, но все же отправляются получателю), police-метод (все «лишние» пакеты, при превышении разрешенной скорости не запоминаются для отложенной отправки, а просто сразу отбрасываются) также производительнее.