SCROLL
Среднее время на прочтение: 3 мин.

Организация ограничения скорости передачи данных по 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 * 

В конце указали действие которое будет совершаться над оставшимися пакетами которые, не попали в полосу пропускания, они либо идут в корзину, либо ставятся в очередь. В нашем случае пакеты выходящие за рамки обозначенной полосы пропускания, будут отбрасываться.

Осталось назначить созданные политики police-map на интерфейс, смотрящий в локальную сеть:

interface GigabitEthernet0/1
service-policy input UPLOAD_SPEED
service-policy output DOWNLOAD_SPEED

В итоге IP-адреса который будут обозначены в групповых объектах, будут ограничены в скорости доступа согласно описанным правилам, при превышении допустимого порога пакеты будут отбрасываться.

 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ

Обсуждение

4 комментариев
  • Здравствуйте! Применил данную схему, все работает отрабатывает, но проблема в том что это все применяется и на локальную сеть как сделать чтобы это правильно не касалось локальной сети? Думал думал что-то ни чего в голову ни приходит( Заранее спасибо!

  • class DOWNLOAD_UNLIM_ROUTE
    class DOWNLOAD_UPLOAD_UNLIM_ROUTE
    Ошибки?

    Вроде так должно быть?
    class DOWNLOAD_UNLIM
    class UPLOAD_UNLIM

  • Здравствуйте. Подскажите, если в object-group указывается сеть, к примеру /24, и отдается 20 Мбит, то данная полоса будет делиться между всеми клиентами поровну.
    А если стоит задача отдать каждому клиенту в сети /24 20 Мбит. Это в принципе реализуемо?
    Знаю что на оборудовании mikrotik это делается с помощью очередей pcq