Организация ограничения скорости передачи данных по IP-адресу на маршрутизаторах CISCO
Рассмотрим как организовать ограничение скорости передачи данных по IP адресам пользователей на маршрутизаторе CISCO.
Имеется интернет канал шириной в 30 Mb/s
, необходимо добавить возможность разбивать его на различную пропускную способность Download/Upload (Входящей/Исходящей) (прим. 20M
, 10M
, 5M
, 1M
), для определенных сегментов локальной сети.
Все действия будут производится на маршрутизаторе Cisco 2911/K9
версия прошивки 15.4(3)M9
(c2900-universalk9-mz.SPA.154-3.M9.bin)
Создаем групповые объекты object-group
, для определения принадлежности того или иного IP-адреса, либо подсети:
object-group network DOWNLOAD_UNLIM
object-group network DOWNLOAD_20M
object-group network DOWNLOAD_10M
object-group network DOWNLOAD_5M
object-group network DOWNLOAD_1M
object-group network UPLOAD_UNLIM
object-group network UPLOAD_20M
object-group network UPLOAD_10M
object-group network UPLOAD_5M
object-group network UPLOAD_1M
Создаем списки доступа access list
и связываем их с созданными групповыми объектами object-group
:
ip access-list extended DOWNLOAD_UNLIM
permit ip any object-group DOWNLOAD_UNLIM
ip access-list extended DOWNLOAD_20M
permit ip any object-group DOWNLOAD_20M
ip access-list extended DOWNLOAD_10M
permit ip any object-group DOWNLOAD_10M
ip access-list extended DOWNLOAD_5M
permit ip any object-group DOWNLOAD_5M
ip access-list extended DOWNLOAD_1M
permit ip any object-group DOWNLOAD_1M
ip access-list extended UPLOAD_UNLIM
permit ip object-group UPLOAD_UNLIM any
ip access-list extended UPLOAD_20M
permit ip object-group UPLOAD_20M any
ip access-list extended UPLOAD_10M
permit ip object-group UPLOAD_10M any
ip access-list extended UPLOAD_5M
permit ip object-group UPLOAD_5M any
ip access-list extended UPLOAD_1M
permit ip object-group UPLOAD_1M any
Классифицируем трафик class-map
на основе списков доступа access list
:
class-map match-all DOWNLOAD_UNLIM
match access-group name DOWNLOAD_UNLIM
class-map match-all DOWNLOAD_20M
match access-group name DOWNLOAD_20M
class-map match-all DOWNLOAD_10M
match access-group name DOWNLOAD_10M
class-map match-all DOWNLOAD_5M
match access-group name DOWNLOAD_5M
class-map match-all DOWNLOAD_1M
match access-group name DOWNLOAD_1M
class-map match-all UPLOAD_UNLIM
match access-group name UPLOAD_UNLIM
class-map match-all UPLOAD_20M
match access-group name UPLOAD_20M
class-map match-all UPLOAD_10M
match access-group name UPLOAD_10M
class-map match-all UPLOAD_5M
match access-group name UPLOAD_5M
class-map match-all UPLOAD_1M
match access-group name UPLOAD_1M
Теперь настроим политики policy-map
, в которых укажем какая скорость доступна для созданных классификаций трафика:
policy-map DOWNLOAD_SPEED
class DOWNLOAD_UNLIM
police cir percent 100
class DOWNLOAD_1M
police cir 1000000 bc 187500 be 375000
conform-action transmit
exceed-action drop
class DOWNLOAD_5M
police cir 5000000 bc 937500 be 1875000
conform-action transmit
exceed-action drop
class DOWNLOAD_10M
police cir 10000000 bc 1875000 be 3750000
conform-action transmit
exceed-action drop
class DOWNLOAD_20M
police cir 20000000
conform-action transmit
exceed-action drop
policy-map UPLOAD_SPEED
class DOWNLOAD_UPLOAD_UNLIM
police cir percent 100
class UPLOAD_1M
police cir 1000000 bc 187500 be 375000
conform-action transmit
exceed-action drop
class UPLOAD_5M
police cir 5000000 bc 937500 be 1875000
conform-action transmit
exceed-action drop
class UPLOAD_10M
police cir 10000000 bc 1875000 be 3750000
conform-action transmit
exceed-action drop
class UPLOAD_20M
police cir 20000000
conform-action transmit
exceed-action drop
Мы описали для каждого класса, гарантированную полосу пропуская (CIR — committed information rate), по-умолчанию значение указывается битах, но можно и указать:
k
— килобит (прим. 512k)m
— мегабит (прим. 20m)g
— гигабит (прим. 1g).
Указали максимальный и расширенный всплеск BC (committed burst)
, BE (extended burst)
, эти значения указываются в байтах.
Я рассчитываю BC, BE по следующей формуле:
Bc = Скорость(bit/s) / 8(bit/s) * 1,5сек
Be = 2 * Bс
В конце указали действие которое будет совершаться над оставшимися пакетами которые, не попали в полосу пропускания, они либо идут в корзину, либо ставятся в очередь. В нашем случае пакеты выходящие за рамки обозначенной полосы пропускания, будут отбрасываться.
Осталось назначить созданные политики police-map
на интерфейс, смотрящий в локальную сеть:
interface GigabitEthernet0/1
service-policy input UPLOAD_SPEED
service-policy output DOWNLOAD_SPEED
В итоге IP-адреса который будут обозначены в групповых объектах, будут ограничены в скорости доступа согласно описанным правилам, при превышении допустимого порога пакеты будут отбрасываться.
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Здравствуйте! Применил данную схему, все работает отрабатывает, но проблема в том что это все применяется и на локальную сеть как сделать чтобы это правильно не касалось локальной сети? Думал думал что-то ни чего в голову ни приходит( Заранее спасибо!
class DOWNLOAD_UNLIM_ROUTE
class DOWNLOAD_UPLOAD_UNLIM_ROUTE
Ошибки?
Вроде так должно быть?
class DOWNLOAD_UNLIM
class UPLOAD_UNLIM
Да моя синтаксическая ошибка, поправил. Спасибо!
Здравствуйте. Подскажите, если в object-group указывается сеть, к примеру /24, и отдается 20 Мбит, то данная полоса будет делиться между всеми клиентами поровну.
А если стоит задача отдать каждому клиенту в сети /24 20 Мбит. Это в принципе реализуемо?
Знаю что на оборудовании mikrotik это делается с помощью очередей pcq