Материал просмотрен 3,145 раз(а)

Шейпинг трафика – ограничение пропускной способности канала по определенным критериям. Возможно так же использование QoS (приоритезация). Типичная ситуация. Есть канал от провайдера и несколько абонентов. Нужно разделить его согласно “купленным билетам”. Метод простой, “деревянный”, но действенный.

Взглянем на топологию.

Топология сегмента

Топология сегмента

Как видно из скрина, мы имеем три виртуальные машины (для простоты я загрузил Linux Microcore), а так же роутер R1. В целях распределения (“вилка”) добавил коммутатор SW1, который играет роль… да просто разделяет один поток на два узла.

Так, с запада у нас якобы сервер 10.0.0.2/24 (на роутере соответственно 10.0.0.1/24). С востока 192.168.0.1/24 на роутере и узлы, админский 192.168.0.10/24 и пользовательский 192.168.0.2/24. С маской я не парился, не до этого.

Настройка серверной части.

Настройка интерфейса

Настройка интерфейса

Клиентские настраиваются аналогично с соответствующими адресами.

Теперь пришла пора роутера.
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#int fa0/0
R1(config-if)#ip addr 10.0.0.1 255.255.255.0
R1(config-if)#no shut
R1(config-if)#
*Mar 1 00:08:50.355: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
*Mar 1 00:08:51.355: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, ch
R1(config-if)#exit
R1(config)#int fa0/1
R1(config-if)#ip addr 192.168.0.1 255.255.255.0
R1(config-if)#no shut
R1(config-if)#
*Mar 1 00:10:01.975: %LINK-3-UPDOWN: Interface FastEthernet0/1, changed state to up
*Mar 1 00:10:02.975: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, ch
R1(config-if)#exit

Вот как-то так. Это пока предварительно, чтобы узлы пинговались все. Легко проверить.

Теперь создаём ACL-ы. Это описывалось в соответствующей статье. По ACL-ам будем разделять пользователей, поэтому я просто сделаю через IP адреса.

R1(config)#access-list 102 permit ip 10.0.0.0 0.0.0.255 192.168.0.10 0.0.0.0
R1(config)#access-list 101 permit ip 10.0.0.0 0.0.0.255 192.168.0.2 0.0.0.0
R1(config)#class-map LitlAdmin
R1(config-cmap)#match access-group 102
R1(config-cmap)#exit
R1(config)#class-map LitlUser
R1(config-cmap)#match access-group 101
R1(config-cmap)#exit
R1(config)#

Здесь мы создали два класса LitlAdmin для админов (совпадение с ACL 102) и LitlUser для пользователя (совпадение с ACL 101).

R1(config)#policy-map MyPolicy
R1(config-pmap)#class LitlAdmin
R1(config-pmap-c)#shape average 512000
R1(config-pmap-c)#exit
R1(config-pmap)#class LitlUser
R1(config-pmap-c)#shape average 256000
R1(config-pmap-c)#exit

Следующий шаг – создание политики. Политика – это как бы набор действий. В ней мы перечисляем нужные классы и указываем что с ними делать. То есть есть политика MyPolicy, в которой сказано, что для класса LitlAdmin нужно шейпить трафик до 512 КБит/сек, а для класса LitlUser – до 256 КБит/сек

Так как классы привязываются непосредственно к ACL-ам, то будет понятно для какого IP какая скорость будет.

Ну чтоже, осталось повесить политику на выходной интерфейс и можно замерять скорость:

R1(config)#int fa0/1
R1(config-if)#service-policy output MyPolicy

Замеры скорости

Для этого воспользуемся утилиткой iperf.

Замерим пока “голую” скорость между админом и юзером (не через роутер):

Чистая скорость

Чистая скорость

Чистыми получаем почти 60 Мбит/с. Пора пускать трафик через роутер.

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

# iperf -s

А на сервере – клиентскую

# iperf -c 192.168.0.2

Пользовательская машина

Пользовательская машина

На сервере

На сервере

Почему именно так? Таким образом мы будем замерять трафик, который пойдёт НА клиентскую машину, чтобы попасть под правила ACL.

А вот результаты с админским узлом:

Админский узел

Админский узел

Примерно так и режется скорость, согласно нашим планам. Здесь всё дело в ACL, если что-то не работает – копать туда. Смотреть, попадают ли пакеты под ACL так:

R1# show access-list

Друзья! Вступайте в нашу группу Вконтакте, чтобы не пропустить новые статьи! Хотите сказать спасибо? Ставьте Like, делайте репост! Это лучшая награда для меня от вас! Так я узнаю о том, что статьи подобного рода вам интересны и пишу чаще и с большим энтузиазмом!

Также, подписывайтесь на наш канал в YouTube! Видео выкладываются весьма регулярно и будет здорово увидеть что-то одним из первых!