ProHoster > блог > Администрација > Автоматизација на мрежни услуги или како да се изгради виртуелна лабораторија користејќи OpenDaylight, Postman и Vrnetlab
Автоматизација на мрежни услуги или како да се изгради виртуелна лабораторија користејќи OpenDaylight, Postman и Vrnetlab
Во оваа статија, ќе ви покажам како да поставите отворено светло да работи со мрежна опрема, а исто така да покаже како да се користи Поштарот и едноставно RESTCONF барања, оваа опрема може да се контролира. Нема да работиме со хардвер, туку наместо тоа ќе распоредиме мали виртуелни лаборатории со единствен рутер Врнетлаб преку врвот Убунту LTS 20.04.
Прво ќе ги прикажам деталните поставки користејќи го примерот на рутер Juniper vMX 20.1R1.11, а потоа го споредуваме со поставката Cisco xRV9000 7.0.2.
содржина
Потребно знаење
Часть 1: дискутирајте накратко OpenDaylight (во натамошниот текст ОДЛ), Поштарот и Врнетлаб и зошто ни се потребни
Часть 2: опис на виртуелната лабораторија
Часть 3: приспособете отворено светло
Часть 4: приспособете Врнетлаб
Часть 5: со користење на Поштарот поврзете виртуелен рутер (Џунипер vMX) До ОДЛ
Часть 6: земете и променете ја конфигурацијата на рутерот користејќи Поштарот и ОДЛ
Часть 7: додадете Cisco xRV9000
Заклучок
PS
Библиографија
Потребно знаење
За да не се претвори статијата во лист, испуштив некои технички детали (со линкови до литература каде што можете да прочитате за нив).
Во врска со ова, ви нудам теми кои би било добро (но речиси и не е потребно) да ги знаете пред да ги прочитате:
Во нашиот случај, ние сме заинтересирани за тоа како средство за испраќање барања за REST до OpenDaylight API. Можете, се разбира, да испраќате барања рачно, но во Поштар сè изгледа многу јасно и совршено одговара на нашите цели.
За оние кои сакаат да копаат: на него се напишани многу материјали за обука (на пример).
Алатка за распоредување виртуелни рутери во Docker
Поддржува: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR, итн.
Софтвер со отворен код
Многу интересен, но малку познат инструмент. Во нашиот случај, ќе го користиме за да работиме Juniper vMX и Cisco xRV9000 на обичен Ubuntu 20.04 LTS.
Џунипер vMX се крева внатре пристанишен работник контејнер (со средства Врнетлаб) и функционира како најчест виртуелен рутер.
ОДЛ поврзан со рутерот и ви овозможува да го контролирате.
Поштарот лансирана на посебна машина и преку неа испраќаме команди ОДЛ: за поврзување / отстранување на рутерот, промена на конфигурацијата итн.
Коментар на уредот на системот
Џунипер vMX и ОДЛ бараат доста ресурси за нивно стабилно функционирање. Само еден vMX бара 6 GB RAM и 4 јадра. Затоа, беше одлучено да се преместат сите „тешки тегови“ во посебна машина (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). Рутерот, се разбира, не „лета“ на него, но перформансите се доволни за мали експерименти.
Дел 3: Поставете OpenDaylight
Тековната верзија на ODL во времето на ова пишување е Магнезиум SR1
1) Инсталирајте Јава отворена JDK 11 (за подетална инсталација тука)
ubuntu:~$ sudo apt install default-jdk
2) Најдете и преземете ја најновата верзија ОДЛоттука
3) Отпакувајте ја преземената архива
4) Одете во директориумот што се добива
5) Стартување ./bin/karaf
На овој чекор ОДЛ треба да започне и ќе се најдеме во конзолата (портата 8181 се користи за пристап однадвор, која ќе ја користиме подоцна).
Следно, инсталирајте Карактеристики на ODLдизајниран да работи со протоколи NETCONF и RESTCONF. За да го направите ова во конзолата ОДЛ извршуваме:
Секој рутер што е поддржан Врнетлаб, има своја единствена процедура за поставување. Кога Џунипер vMX само треба да ја подигнеме архивата .tgz со рутерот (можете да ја преземете од официјална страница) во директориумот vmx и извршете ја командата make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Градење слика vMX ќе трае околу 10-20 минути. Време е да одиме на кафе!
„Ова е затоа што првиот пат кога се стартува VCP (Control Plane), тој чита конфигурациска датотека што одредува дали ќе работи како VRR VCP во vMX. Претходно, ова стартување беше направено за време на стартувањето на Docker, но тоа значеше дека VCP секогаш се рестартираше еднаш пред да стане достапен виртуелниот рутер, што резултираше со долго време за подигање (околу 5 минути) Сега првото вклучување на VCP е направено за време на изградбата на сликата на Docker, и бидејќи изградбата на Docker не може да се изврши со - -привилегирана опција, тоа значи дека qemu работи без забрзување на хардверот на KVM и на тој начин изградбата трае многу долго. За време на овој процес излегуваат многу логови, така што барем можете да видите што се случува. Мислам дека долгото градење не е толку страшно затоа што создаваме слика еднаш, но лансираме многу“.
Откако ќе ја видите сликата на нашиот рутер внатре пристанишен работник:
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
Стартувајте го контејнерот vr-vmx
Започнуваме со командата:
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
Поврзување со рутерот
IP адресата на мрежниот интерфејс на рутерот може да се добие со следнава команда:
Стандардно, Врнетлаб создава корисник на рутерот vrnetlab/VR-netlab9.
Поврзување со 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
Ова го комплетира поставувањето на рутерот.
Препораките за инсталација за рутери на различни продавачи може да се најдат на github проект во соодветните директориуми.
Дел 5: Поштар - поврзете го рутерот со OpenDaylight
Инсталација на поштарот
За да инсталирате, само преземете ја апликацијата оттука.
Поврзување рутер со ODL
Ајде да создадеме Стави барање:
Низа за барање:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
Ова се внатрешни имиња XML (XML именски простор) за ОДЛ според кој создава јазол.
Понатаму, соодветно, името на рутерот е јазол-ид, адреса на рутер - домаќин и така натаму.
Најинтересната линија е последната. Шема-кеш-директориум создава директориум каде што се преземаат сите датотеки YANG Шема поврзан рутер. Можете да ги најдете во $ODL_ROOT/cache/jun01_cache.
Проверка на поврзувањето на рутерот
Ајде да создадеме ГЕТ барање:
Низа за барање:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
На табулаторот Овластување, мора да го поставите параметарот Basic Auth и најава/лозинка: admin/admin.
Испраќаме. Треба да добие статус „200 OK“ и листа на сите поддржани од уредот YANG Шема:
Коментар: За да го видам второто, во мојот случај беше неопходно да се чека околу 10 минути по извршувањето Ставидо сите YANG шема истовар на ОДЛ. До овој момент, кога се изведува ова ГЕТ барањето ќе го прикаже следново:
На табулаторот Овластување, мора да го поставите параметарот Basic Auth и најава/лозинка: admin/admin.
Дел 6: Променете ја конфигурацијата на рутерот
Добивање на конфигурацијата
Ајде да создадеме ГЕТ барање:
Низа за барање:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
На табулаторот Овластување, мора да го поставите параметарот Basic Auth и најава/лозинка: admin/admin.
Испраќаме. Треба да го добие статусот „200 OK“ и конфигурацијата на рутерот:
Направете конфигурација
Како пример, да ја создадеме следнава конфигурација и да ја измениме:
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 и најава/лозинка: admin/admin.
На табулаторот Headers, треба да додадете две заглавија:
Прифатете ја апликацијата/xml
Апликација за тип на содржина/xml
По испраќањето, тие треба да добијат статус „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 и најава/лозинка: admin/admin.
По извршувањето на барањето, ќе го видиме следново:
Променете ја конфигурацијата
Ајде да ги смениме информациите за протоколот BGP. По нашите постапки, ќе изгледа вака:
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
Не заборавајте да ги промените заглавијата на табулаторот Заглавија на:
Прифатете ја апликацијата/json
Апликација за тип на содржина/json
По испраќањето, ќе го добиеме следниов резултат (Го гледаме одговорот користејќи ГЕТ барање):
Дел 7: Додавање на Cisco xRV9000
Што сме ние за Џунипер, да Џунипер? Ајде да зборуваме за Cisco!
Најдов xRV9000 верзија 7.0.2 (ѕвер на кој му треба 8Gb RAM и 4 јадра. Не е слободно достапен, затоа контактирајте Cisco) - ајде да го извршиме.
Водење контејнер
Процесот на создавање на контејнер Docker практично не се разликува од Juniper. Слично на тоа, ја испуштаме датотеката .qcow2 со рутерот во директориумот што одговара на неговото име (во овој случај, xrv9k) и ја извршуваме командата 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
Поврзете се преку ssh:
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
Поврзување на рутерот со OpenDaylight
Додавањето се случува на сосема сличен начин со vMX. Треба само да ги смениме имињата. Стави барање:
Јавете се по некое време ГЕТ побарајте да проверите дали сè е поврзано:
Променете ја конфигурацијата
Ајде да ја поставиме следнава конфигурација:
!
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 и најава/лозинка: admin/admin.
На табулаторот Headers, треба да додадете две заглавија:
Прифатете ја апликацијата/json
Апликација за тип на содржина/json
По неговото извршување, тие треба да добијат статус „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 и најава/лозинка: admin/admin.
По извршувањето, треба да го видите следново:
За отстранување на конфигурацијата користете DELETE:
На табулаторот Овластување, мора да го поставите параметарот Basic Auth и најава/лозинка: admin/admin.
Заклучок
Севкупно, како што можеби забележавте, процедурите за поврзување на Cisco и Juniper со OpenDaylight не се разликуваат - ова отвора прилично широк простор за креативност. Почнувајќи од управувањето со конфигурацијата на сите мрежни компоненти и завршувајќи со креирање на сопствени мрежни политики.
Во ова упатство, ги дадов наједноставните примери за тоа како можете да комуницирате со мрежна опрема користејќи OpenDaylight. Без сомнение, прашањата од горенаведените примери може да се направат многу посложени и да се постават цели услуги со еден клик на глувчето - сè е ограничено само од вашата имагинација *
Да се продолжи ...
PS
Ако одеднаш веќе го знаете сето ова или, напротив, сте поминале и потонале во душата на ODL, тогаш препорачувам да погледнете кон развивање апликации на контролерот ODL. Можете да започнете оттука.