ПроХостер > блог > Администрација > Аутоматизација мрежних сервиса или како направити виртуелну лабораторију користећи ОпенДаилигхт, Постман и Врнетлаб
Аутоматизација мрежних сервиса или како направити виртуелну лабораторију користећи ОпенДаилигхт, Постман и Врнетлаб
У овом чланку ћу вам рећи како да поставите ОпенДаилигхт за рад са мрежном опремом, а такође ће показати како се користи Поштар и једноставно РЕСТЦОНФ захтевима, ова опрема се може контролисати. Нећемо радити са хардвером, већ ћемо уместо тога поставити мале виртуелне лабораторије са једним рутером Врнетлаб преко врха Убунту ЛТС КСНУМКС.
Прво ћу показати детаљно подешавање на примеру рутера Јунипер вМКС 20.1Р1.11, а затим га упоредимо са поставком Цисцо кРВ9000 7.0.2.
Садржина
Обавезно знање
Часть КСНУМКС: укратко дискутовати ОпенДаилигхт (у даљем тексту ОДЛ), Поштар и Врнетлаб и зашто су нам потребни
Часть КСНУМКС: опис виртуелне лабораторије
Часть КСНУМКС: конфигурисати ОпенДаилигхт
Часть КСНУМКС: конфигурисати Врнетлаб
Часть КСНУМКС: коришћењем Поштар повежите виртуелни рутер (Јунипер вМКС) До ОДЛ
Часть КСНУМКС: набавите и промените конфигурацију рутера помоћу Поштар и ОДЛ
Часть КСНУМКС: додати Цисцо кРВ9000
Закључак
ПС
Библиографија
Обавезно знање
Да се чланак не би претворио у лист, изоставио сам неке техничке детаље (са линковима ка литератури где можете прочитати о њима).
С тим у вези, предлажем вам теме које би било добро (али скоро да није неопходно) знати пре читања:
У нашем случају нас то занима као средство за слање РЕСТ захтева ОпенДаилигхт АПИ-ју. Можете, наравно, ручно слати захтеве, али у Постман-у све изгледа врло јасно и савршено је за наше потребе.
За оне који желе да се удубе у то: написано је много едукативних материјала (на пример).
Алат за примену виртуелних рутера у Доцкер-у
Подржава: Цисцо КСРв, Јунипер вМКС, Ариста вЕОС, Нокиа ВСР, итд.
open соурце
Веома занимљив, али мало познат инструмент. У нашем случају, уз његову помоћ ћемо покренути Јунипер вМКС и Цисцо кРВ9000 на обичном Убунту 20.04 ЛТС.
Јунипер вМКС диже се на лучки радник контејнер (помоћу Врнетлаб) и функционише као најчешћи виртуелни рутер.
ОДЛ повезан са рутером и омогућава вам да га контролишете.
Поштар покренут на посебној машини и преко ње шаљемо команде ОДЛ: за повезивање/уклањање рутера, промену конфигурације итд.
Коментар дизајна система
Јунипер вМКС и ОДЛ захтевају доста ресурса за њихов стабилан рад. Само један вМКС Захтева 6 ГБ РАМ-а и 4 језгра. Због тога је одлучено да се сви „тешкаши“ преместе у засебну машину (Хеулетт Пацкард Ентерприсе МицроСервер ПроЛиант Ген8, Убунту 20.04 ЛТС). Рутер, наравно, не "лети" на њему, али има довољно перформанси за мале експерименте.
Део 3: Подешавање ОпенДаилигхт-а
Тренутна верзија ОДЛ-а у време писања је Магнесиум СР1
1) Инсталирајте Јава ОпенЈДК 11 (за детаљнију инсталацију овде)
ubuntu:~$ sudo apt install default-jdk
2) Пронађите и преузмите најновију верзију ОДЛстога
3) Распакујте преузету архиву
4) Идите на резултирајући директоријум
5) Покрени ./bin/karaf
На овом кораку ОДЛ треба да почне и наћи ћемо се у конзоли (За спољни приступ користи се порт 8181, који ћемо користити касније).
Затим инсталирамо ОДЛ карактеристике, дизајниран за рад са протоколима НЕТЦОНФ и РЕСТЦОНФ. Да бисте то урадили у конзоли ОДЛ урадите:
Сваки рутер који је подржан Врнетлаб, има своју јединствену процедуру подешавања. Када Јунипер вМКС Све што треба да урадимо је да отпремимо .тгз архиву са рутером (можете је преузети са званични сајт) у директоријум вмк и извршите команду make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Изградња имиџа вМКС трајаће око 10-20 минута. Време је да направимо кафу!
"То је зато што када се ВЦП (Цонтрол Плане) први пут покрене, он чита конфигурациону датотеку која одређује да ли ће се покренути као ВРР ВЦП у вМКС-у. Раније је ово покретање обављено током покретања Доцкер-а, али то је значило да је ВЦП увек био поново покренут једном пре него што је виртуелни рутер постао доступан, што је резултирало дугим временом покретања (око 5 минута) Сада се прво покретање ВЦП-а обавља током изградње Доцкер слике, а пошто Доцкер буилд не може да се покрене са --привилегед опцијом, то значи да кему ради без КВМ хардверског убрзања и стога је потребно много времена за прављење. Много евиденција се излази током овог процеса, тако да барем можете да видите шта се дешава. Мислим да дуга градња није тако лоша јер креирамо слику једном , али покрените многе."
Након тога можете видети слику нашег рутера лучки радник:
ubuntu:~$ sudo docker image list
REPOSITORY TAG IMAGE ID CREATED SIZE
vrnetlab/vr-vmx 20.1R1.11 b1b2369b453c 3 weeks ago 4.43GB
debian stretch 614bb74b620e 7 weeks ago 101MB
Покретање вр-вмк контејнера
Покрећемо га командом:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
Затим можемо видети информације о активним контејнерима:
ubuntu:~$ sudo docker container list
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
120f882c8712 b1b2369b453c "/launch.py" 2 minutes ago Up 2 minutes (unhealthy) 22/tcp, 830/tcp, 5000/tcp, 10000-10099/tcp, 161/udp jun01
Повезивање са рутером
ИП адреса мрежног интерфејса рутера може се добити следећом командом:
Уобичајено, Врнетлаб креира корисника на рутеру врнетлаб/ВР-нетлаб9.
Повежите се помоћу ssh:
ubuntu:~$ ssh [email protected]
The authenticity of host '172.17.0.2 (172.17.0.2)' can't be established.
ECDSA key fingerprint is SHA256:g9Sfg/k5qGBTOX96WiCWyoJJO9FxjzXYspRoDPv+C0Y.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '172.17.0.2' (ECDSA) to the list of known hosts.
Password:
--- JUNOS 20.1R1.11 Kernel 64-bit JNPR-11.0-20200219.fb120e7_buil
vrnetlab> show version
Model: vmx
Junos: 20.1R1.11
Ово завршава подешавање рутера.
Препоруке за инсталацију рутера различитих произвођача могу се наћи на пројекат гитхуб у одговарајућим именицима.
Део 5: Поштар - повезивање рутера са ОпенДаилигхт-ом
Инсталирање поштара
Да бисте инсталирали, само преузмите апликацију стога.
Повезивање рутера на ОДЛ
Хајде да стварамо ПУТ захтев:
стринг упита:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
Ово су интерни простори имена КСМЛ (КСМЛ именски простор) за ОДЛ према коме ствара чвор.
Даље, сходно томе, име рутера је чвор-ид, адреса рутера - домаћин и тако даље.
Најзанимљивија линија је последња. Схема-цацхе-дирецтори креира директоријум у који се преузимају све датотеке ИАНГ Сцхема повезани рутер. Можете их наћи у $ODL_ROOT/cache/jun01_cache.
Провера везе рутера
Хајде да стварамо ГЕТ захтев:
стринг упита:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
На картици Ауторизација потребно је да подесите параметар Basic Auth и логин/лозинка: админ/админ.
Шаљемо. Требало би да добије статус "200 ОК" и листу свих подржаних уређаја ИАНГ Сцхема:
Коментар: Да бисте видели ово друго, у мом случају је било потребно сачекати око 10 минута након извршења ПУТто је све за сада ИАНГ шема биће истоварен на ОДЛ. До ове тачке, при извођењу овога ГЕТ упит ће приказати следеће:
На картици Ауторизација потребно је да подесите параметар Basic Auth и логин/лозинка: админ/админ.
Део 6: Промена конфигурације рутера
Добијање конфигурације
Хајде да стварамо ГЕТ захтев:
стринг упита:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
На картици Ауторизација потребно је да подесите параметар Basic Auth и логин/лозинка: админ/админ.
Шаљемо. Требало би да добије статус "200 ОК" и конфигурацију рутера:
Креирање конфигурације
Као пример, направимо следећу конфигурацију и променимо је:
protocols {
bgp {
disable;
shutdown;
}
}
Хајде да стварамо ПОСТ захтев:
стринг упита:
POST http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/junos-conf-root:configuration/junos-conf-protocols:protocols
На картици Ауторизација потребно је да подесите параметар Basic Auth и логин/лозинка: админ/админ.
На картици Заглавља морате додати два заглавља:
Прихвати апликацију/кмл
Цонтент-Типе апплицатион/кмл
Након слања требало би да добијете статус "204 без садржаја"
Можете користити претходни упит да проверите да ли се конфигурација променила. Али примера ради, направићемо још један који ће нам показати само информације о протоколима конфигурисаним на рутеру.
Хајде да стварамо ГЕТ захтев:
стринг упита:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/junos-conf-root:configuration/junos-conf-protocols:protocols
На картици Ауторизација потребно је да подесите параметар Basic Auth и логин/лозинка: админ/админ.
Након извршења захтева, видећемо следеће:
Промена конфигурације
Хајде да променимо информације о БГП протоколу. Након наших акција то ће изгледати овако:
protocols {
bgp {
disable;
}
}
Хајде да стварамо ПУТ захтев:
стринг упита:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/junos-conf-root:configuration/junos-conf-protocols:protocols
Не заборавите да промените заглавља на картици Заглавља у:
Прихватите апликацију/јсон
Апликација типа садржаја/јсон
Након слања добијамо следећи резултат (Одговор гледамо помоћу ГЕТ захтев):
Део 7: Додајте Цисцо кРВ9000
Шта смо ми сви о Јуниперу, да о Јуниперу? Хајде да причамо о Цисцо-у!
Нашао сам кРВ9000 верзију 7.0.2 (звер којој је потребно 8Гб РАМ-а и 4 језгра. Није слободно доступан, па контактирајте Cisco
) - хајде да га покренемо.
Покретање контејнера
Процес стварања Доцкер контејнера се практично не разликује од Јунипер-а. Слично томе, испуштамо .кцов2 датотеку са рутером у директоријум који одговара његовом имену (у овом случају крв9к) и извршавамо команду make docker-image.
После неколико минута видимо да је слика направљена:
ubuntu:~$ sudo docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
vrnetlab/vr-xrv9k 7.0.2 54debc7973fc 4 hours ago 1.7GB
vrnetlab/vr-vmx 20.1R1.11 b1b2369b453c 4 weeks ago 4.43GB
debian stretch 614bb74b620e 7 weeks ago 101MB
Хајде да покренемо контејнер:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
После неког времена видимо да је контејнер покренут:
ubuntu:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
058c5ecddae3 54debc7973fc "/launch.py" 4 hours ago Up 4 hours (healthy) 22/tcp, 830/tcp, 5000-5003/tcp, 10000-10099/tcp, 161/udp xrv01
Повежите се преко ссх-а:
ubuntu@ubuntu:~$ ssh [email protected]
Password:
RP/0/RP0/CPU0:ios#show version
Mon Jul 6 12:19:28.036 UTC
Cisco IOS XR Software, Version 7.0.2
Copyright (c) 2013-2020 by Cisco Systems, Inc.
Build Information:
Built By : ahoang
Built On : Fri Mar 13 22:27:54 PDT 2020
Built Host : iox-ucs-029
Workspace : /auto/srcarchive15/prod/7.0.2/xrv9k/ws
Version : 7.0.2
Location : /opt/cisco/XR/packages/
Label : 7.0.2
cisco IOS-XRv 9000 () processor
System uptime is 3 hours 22 minutes
Повезивање рутера на ОпенДаилигхт
Додавање се дешава на потпуно сличан начин као вМКС. Само треба да промените имена. ПУТ захтев:
После неког времена зовемо ГЕТ захтевајте да проверите да ли је све повезано:
Промена конфигурације
Хајде да подесимо следећу конфигурацију:
!
router ospf LAB
mpls ldp auto-config
!
Хајде да стварамо ПОСТ захтев:
стринг упита:
POST http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/xrv01/yang-ext:mount/Cisco-IOS-XR-ipv4-ospf-cfg:ospf
На картици Ауторизација потребно је да подесите параметар Basic Auth и логин/лозинка: админ/админ.
На картици Заглавља морате додати два заглавља:
Прихватите апликацију/јсон
Апликација типа садржаја/јсон
Након његовог извршења, требало би да добијете статус „204 Без садржаја“.
Хајде да проверимо шта имамо.
За ово ћемо створити ГЕТ захтев:
стринг упита:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/xrv01/yang-ext:mount/Cisco-IOS-XR-ipv4-ospf-cfg:ospf
На картици Ауторизација потребно је да подесите параметар Basic Auth и логин/лозинка: админ/админ.
На картици Ауторизација потребно је да подесите параметар Basic Auth и логин/лозинка: админ/админ.
Закључак
Укупно, као што сте можда приметили, процедуре за повезивање Цисцо-а и Јунипер-а са ОпенДаилигхт-ом се не разликују - ово отвара прилично широк простор за креативност. Почевши од управљања конфигурацијама свих компоненти мреже и завршавајући креирањем сопствених мрежних политика.
У овом туторијалу дао сам једноставне примере како можете да комуницирате са мрежном опремом користећи ОпенДаилигхт. Без сумње, захтеви из горњих примера могу бити много сложенији и читав сервис се може конфигурисати једним кликом миша - све је ограничено само вашом маштом*
Наставиће се ...
ПС
Ако одједном већ знате све ово или сте, напротив, прошли кроз то и ОДЛ вам је ушао у душу, онда препоручујем да се осврнете на развој апликација на ОДЛ контролеру. Можете почети стога.