Шейпинг трафика – ограничение пропускной способности канала по определенным критериям. Возможно так же использование 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! Видео выкладываются весьма регулярно и будет здорово увидеть что-то одним из первых!
Наглядно, коротко и ясно. Спасибо! А сама лаба в GNS?
Да, это GNS3 новой версии. Выкладывать схему не стал, она простая.
Кстати. это идейное развитие темы ACL. А я, как помню, не до конца их прошёл.