У нас есть два варианта: 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, один маршрутизатор и две виртуальные машины.
Топология простейшая, чтобы просто показать как это работает.
Ограничим весь трафик из сети 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, чтоб ограничивать скорость по каким-то сервисам, портам и пр.
Проверим скорость в сети до ограничений.
Сейчас скорость закачки около 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Кбайт/сек. Проверяем. Скорость стала 64 Кбит/с. Все работает.
Примечание! rate-limit нельзя повесить на логический интерфейс, только на физический.