Рассмотрим как организовать ограничение скорости передачи данных по IP адресам пользователей на маршрутизаторе CISCO.
Имеется интернет канал шириной в 30 Mb/s, необходимо добавить возможность разбивать его на различную пропускную способность Download/Upload (Входящей/Исходящей) (прим. 20M, 10M, 5M, 1M), для определенных сегментов локальной сети.
Создаем групповые объекты (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):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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), в которых укажем какая скорость доступна для созданных классификаций трафика:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | policy-map DOWNLOAD_SPEED class DOWNLOAD_UNLIM_ROUTE 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_ROUTE 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), по-умолчанию значение указывается битах, но можно и указать 20m, значение будет пониматься как мегабит, так же можно использовать k — килобит (прим. 512k), 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-адреса который будут обозначены в групповых объектах, будут ограничены в скорости доступа согласно описанным правилам, при превышении допустимого порога пакеты будут отбрасываться.