Ограничиваем скорость на маршрутизаторе Cisco. Технология rate-limit

в 14:04, , рубрики: Cisco, qos, rate-limit, Песочница, Сетевые технологии, метки: , ,

Всем привет. Хочу поделиться своим опытом по настройке ограничений скорости на маршрутизаторах Cisco.
Итак, для начала немного расскажу о том, зачем это понадобилось. Скажем, построили мы небольшую Hub-and-Spoke сеть. Каналы связи у нас небольшие, например, 2 Мбит/c каждый. Сеть небольшого предприятия, которое со временем начинает разрастаться и трафик в этих каналах тоже увеличивается.
Пример из жизни. Есть центральный офис и несколько филиалов. Основной трафик — это ERP-системы и обновления софта. Каналы 2 Мбит/c не нагружены, все работает, всех устраивает. Тут в филиале появляется сервер видеонаблюдения, с которого идут видеопотоки на центральный офис, когда там служба безопасности просматривает камеры. При этом канал загружается под 100% и начинаются проблемы. То есть, необходимо весь трафик, идущий к видео серверу урезать.
Как это сделать. Сразу же приходят на ум два варианта:

  • rate-limit
  • traffic-shape

Чем эти два способа отличаются?
Все просто: traffic-shape не умеет ставить пакеты в очередь. Вот все, что вышло за рамки указанное пропускной способности — он дропает. А вот rate-limit умеет ставить пакеты в очереди и может отправлять пакеты всплесками, когда появится свободная полоса.

Rate-limit команда вводится в режиме конфигурирования физического интерфейса и имеет следующий синтаксис:

rate-limit input|output [access-group [rate-limit] acl-index] [limit-bps] [nbc] [ebc] conform-action [action] exceed-action [action]

Разберем более детально:

  • access-group — указываем номер нашего ACL, в который ловим трафик, который будем ограничивать.

Далее идут три значения скорости limit bps, nbc, ebc

  • limit bps — скорость ограничения(в битах!)
  • nbc — допустимый предел трафика, все что свыше — будет попадать в очередь
  • ebc — максимальный предел трафика

Для расчета всех значений используем такую формулу:

nbc=limit(bit/s)/8(bit/s)*1,5sec

ebc=2nbc

Или же используем готовый калькулятор .
Далее по синтаксису:

  • conform-action — что делать с трафиком при соответствии ограничения
  • exceed-action action — что делать с трафиком при превышении ограничения.

И тут есть несколько действий:

  • drop — отбросить пакет
  • transmit — передать пакет
  • set-dscp-transmit — пометить пакет

Теперь давайте посмотрим на практике. Возьмем GNS3, один маршрутизатор и две виртуальные машины.
image

Топология простейшая, чтобы просто показать как это работает.

Ограничим весь трафик из сети 192.168.40.0/24 в сеть 192.168.78.0/24. Для этого на R1 создаем ACL.

  • R1(config)#access-list 101 permit ip 192.168.40.0 0.0.0.255 192.168.78.0 0.0.0.255
  • R1(config)#access-list 101 deny ip any any

Ограничиваем абсолютно весь трафик. Пример простой, могут быть более сложные ACL, чтоб ограничивать скорость по каким-то сервисам, портам и пр.

Проверим скорость в сети до ограничений.

На хосте C1 у нас работает FTP-сервер, С2 — будет ftp-клиентом. Скорость виртуальной сети у меня 1Мбит/c
image

Видим что скорость закачки около 1Мбит/c.

После этого вешаем на физический интерфейс rate-limit, который смотрит в сеть 192.168.40.0/24

  • R1(config)#int fa 0/0
  • R1(config-if)#rate-limit output access-group 101 64000 12000 24000 conform-action transmit exceed-action drop

Теперь мы ограничили скорость до 8Кбайт/сек. Проверяем.
image

Скорость стала 64 Кбит/с. Все работает.
Примечание: rate-limit нельзя повесить на логический интерфейс, только на физический.

Благодарю за внимание.

Автор: mikonoid

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js