0x88a8

Netwrk упрлс
На Пикабу
180 рейтинг 23 подписчика 33 подписки 7 постов 0 в горячем
Награды:
5 лет на Пикабу
4

Сто дней лабораторных работ vol.6

Шестой день


EVE-NG


Продолжая тему QoS и простых очередей.


Сегодня добавлю скрипт в DHCP-Server который будет при подключении устройства выдавать ему динамическую очередь. По истечению аренды, если устройство отключилось, эту очередь очищать.


Есть родитель, его емкость Tx/Rx 1Mb/s; 

Есть три устройства - vPC;

Каждому нужно выдать Tx/Rx 20кb/s  Нагружать буду ping'ом с разным размером пакета: 1500, 1000 и 4000 байт - такая вот упоротая эмуляция рабочей нагрузки.

Собственно сам скрипт привязывается к родителю по его имени:/queue simple

add dst=ether1 max-limit=1M/1M name=parrent target=""


Окно dhcp-server - строка  сервера -  вкладка Script: 


:local queueName "Client $leaseActMAC";

:if ($leaseBound = "1") do={

/queue simple add name=$queueName parent=parrent target=($leaseActIP . "/32") max-limit=20k/20k comment=[/ip dhcp-server lease get [find where active-mac-address=$leaseActMAC && active-address=$leaseActIP] host-name];

} else={

/queue simple remove $queueName

}

На этом месте сегодня хотел закончить с RouterOS, но чот как-то совсем мало получилось.


Удаляю ether2,3,4 из бриджа. Делаю три подсети (192.168.10.0/24, 192.168.11.0/24) 192.168.12.0/24) на каждый интерфейс цепляю свой DHCP-Server. Все они будут принадлежать одному родителю:

Понятное дело, что в локальной сети скорость ограничиваться не будет -  родитель отслеживает только интерфейс который в "мир" смотрит.

Если оставить Target 0.0.0.0/0 и не указать dst перестанет правильно считаться upload и резаться будет и в мир и между подсетями:

Сегодня использовал алгоритм pfifo (first in — first out, первый пришел - первый ушел). Ёмкость буфера - 10 пакетов.

В следующей раз соберу лабу с использованием алгоритма PCQ (per-connection queuing — распределение очередей по соединениям) и разными параметрами "target".


На сегодня всё. К C++ и питону даже не прикасался.


Всем правильно настроенных очередей :)

Показать полностью 5
3

Сто дней лабораторных работ vol.5

Пятый день

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


Сегодня в программе:

EVE-NG, ROS и QoS;

С++  - делим на ноль;

Python  - иду по книге.


EVE-NG и простые очереди "Simple Queue" в RouterOS:

Есть три типа QoS -  Best Effort, IntServ, DiffServ

Пикачу DiffServ, я выбираю тебя!


Сегодня будет ГУЙ.

Лицензия CHR у меня уровня Free - поэтому ограничение скорости 1Mb/s на порт. Суммарная емкость локальной сети  Traf_Gen1+Traf_Gen2+Traf_Gen3 = 3Mb/s

Выход в мир (Traf_Client)  -  1Mb/s  - жадный, жадный арендодатель.


Про HTB, CIR, MIR  и в где в Packetflow Diagram находится QoS в следующих частях попробую остановиться подробнее.


Действующие лица:

Router_lan - корневой маршрутизатор в сети арендодателя. Через него проходят в мир все соединения из локальной сети. Firewall, Conntrack, NAT, DHCP-Server, QoS  вот это вот все.

Traf_gen1..3 - Представляют собой граничные маршрутизаторы, допустим, арендаторов.

Traf_Client - пусть будет весь интернет.

Сначала запускаю без очередей Bandwidth test:

1 устройство - ожидаемо съело весь канал

Три устройства ожидаемо делят канал +/-  поровну:

Но Traf_Gen1 денег платит больше за интернет, занес админу пиво. Поэтому даем ему гарантированно 600 kb/s, а Traf_Gen2 получит 200 kb/s по договору, а Traf_Gen3 админа в лес послал, поэтому получает в нос 100kb/s.

Включаю родителя очередей. И гвоздиком прибиваю потребителей трафика к скоростям:


Как и ожидалось все устройства получили выход в "мир" согласно купленным билетам:

Сейчас все очень просто. Мало потребителей, руками прибитые лимиты.  Вообще не интересно.

В следующей лабе настрою динамические "Simple Queue" по DHCP Lease - подключился, получил адрес, получил свою очередь. Можно поиграть с типами очередей. Потом можно попробовать приоритезацию по типу трафика: sip, http(s) итд. Потом дерево очередей там не обойтись без mangle.


С++


Делить на 0 нельзя, так сказал калькулятор

Читаю про "точка останова" и условия

Далее много текста про отладку и выполнение кода построчно.

Вроде работает:

Последняя строчка ломает программу:

В шестой части планирую это исправить.


Python.

IPython!

Установил, знакомлюсь:

Знакомлюсь...

По питону пока никакого вывода. Продолжу про него писать когда пойдут базовые скрипты и GNS3 с эмуляцией оборудования Cisco.


Всем не жадных арендодателей! :)

Показать полностью 13
8

Сто дней лабораторных работ vol.4

День четвертый.

Откладываю в сторону предыдущую топологию и собираю новую. Здесь у меня будут коммутаторы. RSTP, LAG, Port priority вот это вот все.

Типичная такая L2 офисная сеть малого предприятия. Где серпентарий бухгалтерия, менеджеры среднего звена и секретарь помощник руководителя с непосредственно руководителем.

IT отдела нет.

Есть когда-то кем-то собранное на tp-link'ах за 450р. это:

И все прекрасно работало, но очень не долго. Менеджеры спокойно качали торренты, бухгалтерия отлично ставило "классы" в одноклассниках, помощник руководителя инстаграмила фоточки с Бали, руководитель после Бали закидывал объявление о продаже своего  BMW X6 на местной платформе по продаже Б\У X6-х после Бали. Ровно до того момента пока не поставили сетевой дисковый массив он же NAS, а сервер 1С не переехал на виртуальный сервер в Германию... Так, кажется я забежал вперед. Это будет история про QoS.


Тут все проще. Однажды в студёную зимнюю пору уборщица шваброй задела SW16 и отключила бухгалтерию, сервер 1С и кабинет менеджеров.


Подумав не долго руководство приняло решение заняться сетевой инфраструктурой -

годовые налоговые отчеты (студёная зимняя пора) , менеджеры делают продажи, Новый Год на носу.


Купили на замену TP-LINK'ам  микротики и стали думать что с ними делать дальше. Думали-думали и наконец придумали.

- "Хотим  резервирование линков и удвоенную пропускную способность".

И так, что делаю:

Собираю бридж на всех коммутаторах, раздаю bridge priority;

Создаю агрегацию портов (LAG) 2 линка в сторону одного коммутатора, 2 линка в строну другого;

Добавляю все порты к бриджу в том числе и LAG;

На коммутаторе SW13 настраиваю port priority для LAG который смотрит в сторону SW12;

Раздаю IP виртуальным ПК запускаю ping от VPC22 к VPC23  и от VPC19 к VPC22;

Имитирую  уборщицу (просто выключаю SW11);

Смотрю результат - 2 пакета потерялось пока перестраивался RSTP:

эмитирую уборщицу для SW12:

Ну и для финала эмитирую обрыв линков в составе LAG на двух коммутаторах:

SW12 по прежнему в коме;

На SW10 выключаю ether3 (LAG - 1 линк) - он смотрит в сторону SW11;

На SW11 выключаю ether4  (LAG - 1 линк) - он смотрит в сторону SW13.

Итог: При выпадении одно коммутатора из четырех без связи остаются только те кто физически подключены к этому коммутатору.

При обрыве одного из линков в составе LAG получаем деградацию канала на  количество упавших линков. А их может быть значительно больше двух. Три например :)  При этом остается работоспособной вся сеть.


C++

Пробую сделать что-то калькулятороподобное.

Читаю про #include, using namespace std, count и прочее.

Далее нужно добавить класс

Судя по документации это вообще не все.

- Где кнопка "сделать хорошо" ?

- Хочешь хорошо - сделай это сам.

Не хочу перепечатывать сюда весь учебник. Текст будет тяжелым.

Поэтому результат:

Работает хреновина. 

Еще нужна защита от не правильно введённых символов.

Но это все на понедельник - сегодня уже перебрал лимит по времени.


Питон сегодня в пролете.


Следующий пост в понедельник.


Всем стабильного интернета :)

Показать полностью 10
0

Сто дней лабораторных работ vol.3

Третий день.

Утро началось не с кофе, а cо звонка с работы - лёг интернет. ISP ночью проводил плановые работы, но что-то  пошло не так. В шесть утра позвонил дежурный инженер, сообщил радостную новость. Провайдер положил и основной канал и резервный. Ну, так бывает. Рабочие процессы в общем-то не пострадали, но шороху навели.

____________________________________

История про 6to4 tunnel. Так как территориально мы обложены санкциями со всех сторон, у нас  есть проблемы с различными гуглосервисами. Не только с ними, но тут конкретно PlayMarket у руководства не работал.


Кто сказал использовать бесплатный VPN? (недавние сливы трех крупных VPN сервисов все помнят?)


Не мой метод. К тому же я решил раздать счастье всем коллегам. Тут не большое лирическое отступление - сеть у меня разделена. Производство не имеет выхода в эти наши интернетики и никак не пересекается с WiFi сетью. Поэтому выпускать айфончики и андроиды в мир  можно.  Варианта было два.


Первый вариант предполагал использовать виртуальный сервер где-нибудь на материке и в туннель заворачивать весь трафик с WiFI бриджа. Но там нужно было денег, ага что-то около 200 р. в месяц. А денег нет, но мы держимся.


Второй вариант - use IPv6

Собственно второй вариант и был выбран.  /64 сеть в руки! 18 дохреналионов маршрутизируемых адресов в сети. Dual Stack всем и каждому. Хочешь ходи через IPv4, хочешь через IPv6.


/interface 6to4 add comment="Hurricane Electric IPv6 Tunnel Broker" disabled=no local-address=X.X.X.X mtu=1280 name=sit1 remote-address=Y.Y.Y.Y

/ipv6 route add comment="" disabled=no distance=1 dst-address=****::/3 gateway=aaaa:bbb:cc:ddd::1 scope=30 target-scope=10

/ipv6 address add address=aaaa:bbb:cc:ddd::2/64 advertise=no disabled=no eui-64=no interface=sit1


Почти два года работает и не кашляет.

Хрен с ним с IPv6. Что там сегодня с  C++?

Hello Pikabu у меня сегодня. Эммм, а где тут Form?  Так, что-то сложно,  помню в 2004 году в Delphi было два окна, с кодом и формой. А здесь это где?


В общем не так все я это себе представлял. Лезу в google.  Первые две ссылки по запросу "С++  окно с кнопками" ведет на ресурсы  майкрософта, там же нахожу пример как собрать приложение  windows:

В итоге, через полтора часа тщательного вникания в "Суть" и примеры copy-paste рождаетсо вот это вот:

В итоге цель достигнута. Но осадочек какой-то не приятный. С оконными приложениями пока все, нужно идти в самое начало. Калькулятор в консоли!


Python!

По змею нашел отличный материал. "Python для сетевых инженеров"

Прочитав по диагонали первые  три станицы понял -  это то что нужно.

Ну, попробую собрать по книжке что-нибудь.

Качаю подготовленную виртуалку:

Импортирую, назначаю ресурсы VM:

Здравствуй, Debian

Здравствуй, консоль

Разбираюсь c git.

Видимо с питоном на сегодня все. git съел все свободное время. Блин.

Так

План на завтра:

В Eve-ng продолжу начатое во второй день. Добавлю еще один линк между маршрутизаторами, настрою базовый RSTP и port priority;

В С++ - попробую собрать что-то похожее на калькулятор;

В питоне -  вероятно закончу git,  а  дальше что по книге будет.


Всем добра!

Показать полностью 10

Сто дней лабораторных работ

День второй.


Оказывается на работе нужно иногда работу работать .

Поэтому по быстрому составляю IP план для static routing и подсетей которые будут находится за роутерами.


В моей голове это выглядит вот так примерно:

Переименовываю маршрутизаторы для удобства:

Будут так они обзываться: R1, R2, R4, R5. 

"Н" - нейминг!


Держу в голове мантру L2 = BAD. Только маршрутизация, только хардкор.


Четыре маршрутизатора, четыре подсети, четыре хоста. Восемнадцать статических маршрутов.

Убираю с R1 и R4 ether2 из бриджа которые добавил вчера, эти порты понадобятся мне для связности 172.16.10.0/24 и 172.16.11.0/24

IP план следующий

R1: ether1 172.16.10.1/24

ether2 10.10.10.1/30

br1 192.168.1.0/24

R2: ether1 172.16.10.2/24

br1 192.168.2.0/24

R4: ether1 172.16.11.1/24  ether2 10.10.10.2/30

br1 192.168.4.0/24

R5: ether1 172.16.11.2/24

br1 192.168.5.0/24

Задача, собственно, достаточно тривиальная  - нужно ходить из одной подсети в другую подсеть. Без использования NAT.  Между всеми маршрутизаторами.

Так как времени сегодня очень мало было скринов настройки не сделал.  Покажу  только вывод /ip address

/ip route

+ ping из vPC в разные подсети:

Фиговая достаточно получилась картинка - 18 маршрутов руками писать это прям чот не очень хорошо.

Почему не хорошо? Потому что подсетей всего 4 сейчас. А если добавить еще подсеть для VoIP, видеонаблюдения и выделить в отдельный IP pool серверную группу? На всех четырех маршрутизаторах.

Придется писать еще маршруты. Много маршрутов.


Поэтому все это безобразие переведу через несколько дней на OSPF.  А потом снесу и построю все на iBGP. Такой вот план  на ближайшее время.


C++

- "Что мы говорим С++ ? Не Сегодня!" ©  Сирио Форель, первый меч Браавоса.


Python

Тоже самое,  не сегодня.


План на завтра - сделать с плюсами и питоном то что не получилось сегодня.

EVE-NG завтра не будет, но будет  не большая история про 6to4 Tunnel от Hurricane Electric.

Показать полностью 2
0

Сто дней лабораторных работ

День первый.


План минимум:

Собираю простую лабу в EVE-NG; 

Пишу пытаюсь написать  "hello world" в С++ и Python; 

ловлю минусы здесь.


EVE-NG - мой основной инструмент для тестов перед внедрением какой-либо фичи в боевую сеть.

Python - я не знаю от слова совсем. Хочу изучить. Слышал с помощью этого змея можно автоматизировать все и чуточку больше.

C++  - просто интересно.


План максимум отсутствует.


Цель всего этого - разобрать интересные задачки потому что могу, вот почему

Цель написания сюда - не забросить начатое через три дня.


Кто сказал иди отсюда в личный бложик?


Пааанеслась:


Скачиваю студию

Установка. Виртуальная машина начинает ахудивляться. Выделю ей потом еще пару ядер CPU и пару Gb RAM.

Пока идет установка студии создаю виртуальную лабораторию.

Собираю четыре ноды.

Назначаю IP адреса на интерфейсы ether1. Создаю бриджи и добавляю туда три порта ether2-ether4. Проверяю связность ping'ом. В течении ста дней туда добавятся Vlan'ы, протоколы R/MSTP, OSPF/iBGP/ISIS (запрещенный на территории РФ протокол маршрутизации), Что-то будет создано, что-то удалено. Добавятся другие ноды. Будет развернут M/VPLS, L2/L3VPN далее и везде.

Так, студия установился, чо дальше? Открываю, мрачно охреневаю - ничо не понятно, но очень интересно. А тыкнем-ка  вот сюда и посмотрю что с этим делать.

Очень страшна, выключай:

Лезу в гугол, нахожу бесплатное вводное занятие ян***с пра****ум (не реклама)

Ага, вот так надо:

Пытаюсь повторить:

Закомментировал строки по умолчанию. И два раза два раза проверил что быстрее. дефолтный visual код или с яндкса. Визуально отличий никаких.


Теперь питон:

План минимум выполнен. Теперь нужно как-то обозначить что будет дальше - 

разбиваю на блоки. По одному часу в день на питон, с++ и еву.  Если времени будет хватать и работа не сожрет с головой - может больше.


План минимум на завтра:

EVE-NG - соединяю четыре ноды между собой, прописываю маршруты, подключаю vPC к интерфейсам, проверяю IP связность

C++  - напишу оконное приложение выводящее "hello world Pikabu"

Python - пробегусь по литературе и создам(???) скрипт для создания vlan на cisco. Так как цисок нет пока - внедрю в eve, где-то были образы ios.


Всем добра! :)

Показать полностью 10
Отличная работа, все прочитано!