ProHoster > Blog > башкаруу > Тармактык кызматтарды автоматташтыруу же OpenDaylight, Postman жана Vrnetlab аркылуу виртуалдык лабораторияны кантип куруу керек
Тармактык кызматтарды автоматташтыруу же OpenDaylight, Postman жана Vrnetlab аркылуу виртуалдык лабораторияны кантип куруу керек
Бул макалада мен кантип орнотууну айтып берем OpenDaylight тармактык жабдуулар менен иштөө үчүн, ошондой эле кантип колдонууну көрсөтөт почтальон жана жөнөкөй RESTCONF суроо-талаптар, бул жабдууларды көзөмөлдөөгө болот. Биз аппараттык каражаттар менен иштебейбиз, анын ордуна бир роутер менен чакан виртуалдык лабораторияларды орнотобуз Vrnetlab бүттү Ubuntu 20.04 LTS.
Мен адегенде роутердин мисалында деталдуу орнотууну көрсөтөм Juniper vMX 20.1R1.11, анан биз аны жөндөө менен салыштырабыз Cisco xRV9000 7.0.2.
ыраазы
Керектүү билим
бөлүгү 1: кыскача талкуулоо OpenDaylight (мындан ары деп аталат ODL), почтальон и Vrnetlab жана алар бизге эмне үчүн керек
бөлүгү 2: виртуалдык лабораториянын сүрөттөлүшү
бөлүгү 3: конфигурациялоо OpenDaylight
бөлүгү 4: конфигурациялоо Vrnetlab
бөлүгү 5: жардамы менен почтальон виртуалдык роутерди туташтыруу (Juniper vMX) Үчүн ODL
бөлүгү 6: колдонуп роутердин конфигурациясын алуу жана өзгөртүү почтальон и ODL
бөлүгү 7: Cisco xRV9000 кошуу
жыйынтыктоо
PS
Библиография
Керектүү билим
Макала баракка айланып кетпеши үчүн, мен кээ бир техникалык деталдарды (алар жөнүндө окуй турган адабияттарга шилтемелер менен) өткөрүп жибердим.
Ушуга байланыштуу, мен сизге окуудан мурун билүү үчүн жакшы (бирок дээрлик зарыл эмес) темаларды сунуштайм:
тарабынан колдоого алынган тармактардын бардык түрлөрүн башкаруу жана автоматташтыруу үчүн ачык SDN платформасы Linux Foundation
Java ичинде
Моделге негизделген кызматтын абстракция деңгээлине (MD-SAL) негизделген
Тармак түзмөктөрү үчүн RESTCONF APIди автоматтык түрдө түзүү үчүн YANG моделдерин колдонот
Тармакты башкаруунун негизги модулу. Ал аркылуу биз туташкан түзмөктөр менен байланышабыз. Өз API аркылуу башкарылат.
OpenDaylight жөнүндө көбүрөөк окуй аласыз бул жерде.
API тестирлөө куралы
Жөнөкөй жана колдонууга оңой интерфейс
Биздин учурда, биз аны OpenDaylight API'ге REST суроо-талаптарын жөнөтүү каражаты катары кызыкдарбыз. Сиз, албетте, суроо-талаптарды кол менен жөнөтө аласыз, бирок Почтачыда бардыгы абдан ачык көрүнөт жана биздин максаттарыбыз үчүн эң сонун.
Аны изилдегиси келгендер үчүн: ага көптөгөн окуу материалдары жазылган (Мисалы,).
Dockerде виртуалдык роутерлерди жайгаштыруу үчүн курал
Колдоо: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR, ж.б.
Ачык булак
Абдан кызыктуу, бирок аз белгилүү аспап. Биздин учурда, анын жардамы менен биз кадимки Ubuntu 9000 LTSде Juniper vMX жана Cisco xRV20.04ну иштетебиз.
Ал тууралуу кененирээк бул жерден окуй аласыз долбоор барагы.
2-бөлүк: лабораториялык иш
Бул окуу куралында биз төмөнкү системаны орнотобуз:
Бул кандай иштейт
Juniper vMX чейин көтөрүлөт ютуб контейнер (каражат менен Vrnetlab) жана эң кеңири таралган виртуалдык роутер катары иштейт.
ODL роутерге туташып, аны башкарууга мүмкүндүк берет.
почтальон өзүнчө машинада ишке киргизилет жана ал аркылуу биз буйруктарды жөнөтөбүз ODL: роутерди туташтыруу/чыгаруу, конфигурацияны өзгөртүү, ж.б.у.с.
Системанын дизайны боюнча комментарий
Juniper vMX и ODL алардын туруктуу иштеши үчүн абдан көп ресурстарды талап кылат. Бир гана vMX 6 ГБ оперативдик эстутум жана 4 ядрону талап кылат. Ошондуктан, бардык "оор салмактагыларды" өзүнчө машинага көчүрүү чечими кабыл алынды (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). Маршрутизатор, албетте, ага "учпайт", бирок кичинекей эксперименттер үчүн жетиштүү өндүрүмдүүлүк бар.
3-бөлүк: OpenDaylight орнотуу
жазуу учурунда ODL учурдагы версия Магний SR1 болуп саналат
1) Орнотуу Java OpenJDK 11 (деталдуу орнотуу үчүн бул жерде)
ubuntu:~$ sudo apt install default-jdk
2) Эң акыркы версиясын таап, жүктөп алыңыз ODLбул жерде
3) Жүктөлгөн архивди ачыңыз
4) Натыйжадагы каталогго өтүңүз
5) Ишке киргизүү ./bin/karaf
Бул кадамда ODL баштоо керек жана консолдо өзүбүздү табабыз (Тышкы кирүү үчүн 8181 порт колдонулат, биз аны кийинчерээк колдонобуз).
Кийинки биз орнотобуз ODL өзгөчөлүктөрү, протоколдор менен иштөө үчүн иштелип чыккан NETCONF и RESTCONF. Муну консолдо жасоо үчүн ODL кыл:
Колдоого алынган ар бир роутер Vrnetlab, өзүнүн уникалдуу орнотуу процедурасы бар. Качан Juniper vMX Болгону .tgz архивин роутер менен жүктөшүбүз керек (бул жерден жүктөп алсаңыз болот расмий сайты) vmx каталогуна кирип, буйрукту аткарыңыз make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Имидж түзүү vMX болжол менен 10-20 мүнөт талап кылынат. Кофе жасоого убакыт келди!
"Анткени VCP (Control Plane) биринчи жолу ишке киргенде, ал vMXде VRR VCP катары иштей тургандыгын аныктаган конфигурация файлын окуйт. Буга чейин бул ишке киргизүү Dockerди ишке киргизүү учурунда ишке ашырылчу, бирок бул VCP ар дайым бир жолу өчүрүлүп күйгүзүлүп турганын билдирген. виртуалдык роутер жеткиликтүү болгонго чейин, натыйжада жүктөө узакка созулду (болжол менен 5 мүнөт) Эми биринчи VCP иштетүү Docker сүрөтүн куруу учурунда аткарылат жана Docker түзүмүн --privileged опциясы менен иштетүү мүмкүн эмес болгондуктан, бул 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 роутерде колдонуучуну түзөт 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 суроо:
Суроо сап:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
Бул ички аттар мейкиндиктери XML (XML аталыш мейкиндиги) үчүн ODL ага ылайык ал түйүн түзөт.
Андан ары, ошого жараша, роутердин аты node-id, роутер дареги - кожоюн жана башкалар.
Эң кызыктуу сап акыркысы. Схема-кэш-каталог бардык файлдар жүктөлгөн каталогду түзөт YANG схемасы туташкан роутер. Сиз аларды таба аласыз $ODL_ROOT/cache/jun01_cache.
Роутер байланышы текшерилүүдө
түзөлү ТААНЫШ суроо:
Суроо сап:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
Авторизация өтмөгүндө сиз параметрди коюшуңуз керек Basic Auth жана логин/пароль: админ/админ.
Биз жибердик. "200 OK" статусун жана бардык колдоого алынган түзмөктөрдүн тизмесин алышы керек YANG схемасы:
түшүндүрмө: Акыркысын көрүү үчүн, менин учурда ал аткарылгандан кийин болжол менен 10 мүнөт күтүү керек болчу PUTАзырынча баары ушул YANG схемасы боюнча түшүрүлөт ODL. Ушул учурга чейин, муну аткарып жатканда ТААНЫШ суроо төмөнкүнү көрсөтөт:
Авторизация өтмөгүндө сиз параметрди коюшуңуз керек 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 OK" статусун жана роутердин конфигурациясын алуу керек:
Конфигурация түзүү
Мисал катары, төмөнкү конфигурацияны түзүп, аны өзгөртөлү:
protocols {
bgp {
disable;
shutdown;
}
}
түзөлү POST суроо:
Суроо сап:
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 жана логин/пароль: админ/админ.
Башкылар өтмөгүндө сиз эки аталышты кошушуңуз керек:
Тиркеме/xml кабыл алуу
Content-Type колдонмо/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 жана логин/пароль: админ/админ.
Өтүнүчтү аткаргандан кийин, биз төмөнкүлөрдү көрөбүз:
Конфигурацияны өзгөртүү
BGP протоколу жөнүндө маалыматты өзгөртөлү. Биздин иш-аракеттерибизден кийин мындай болот:
protocols {
bgp {
disable;
}
}
түзөлү PUT суроо:
Суроо сап:
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-бөлүк: Cisco xRV9000 кошуу
Биз баарыбыз Арча жөнүндө эмнебиз, ооба Арча жөнүндө? Cisco жөнүндө сүйлөшөлү!
Мен xRV9000 7.0.2 версиясын таптым (8 Гб 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ге толугу менен окшош жол менен ишке ашат. Сиз жөн гана ысымдарды өзгөртүү керек. PUT суроо:
Бир аздан кийин чалабыз ТААНЫШ баары байланыштуу экенин текшерүү үчүн өтүнүч:
Конфигурацияны өзгөртүү
Төмөнкү конфигурацияны орнотобуз:
!
router ospf LAB
mpls ldp auto-config
!
түзөлү POST суроо:
Суроо сап:
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 жана логин/пароль: админ/админ.
Башкылар өтмөгүндө сиз эки аталышты кошушуңуз керек:
Application/json кабыл алыңыз
Content-Type колдонмо/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 жана логин/пароль: админ/админ.
Аткаруудан кийин сиз төмөнкүлөрдү көрүшүңүз керек:
Авторизация өтмөгүндө сиз параметрди коюшуңуз керек Basic Auth жана логин/пароль: админ/админ.
жыйынтыктоо
Жалпысынан, сиз байкагандай, Cisco жана Juniperди OpenDaylightга туташтыруу процедуралары эч кандай айырмаланбайт - бул чыгармачылык үчүн кеңири мейкиндикти ачат. Тармактын бардык компоненттеринин конфигурацияларын башкаруудан баштап, өзүңүздүн тармак саясатыңызды түзүүгө чейин.
Бул окуу куралында мен OpenDaylight аркылуу тармактык жабдыктар менен кантип өз ара аракеттенүүгө болорун жөнөкөй мисалдарды келтирдим. Албетте, жогорудагы мисалдардагы суроо-талаптарды бир топ татаалдаштырса болот жана бардык кызматтарды чычканды бир чыкылдатуу менен конфигурациялоого болот - бардыгы сиздин фантазияңыз менен гана чектелет*
Уландысы бар…
PS
Эгер сиз күтүлбөгөн жерден мунун баарын билсеңиз же, тескерисинче, андан өтүп, ODL сиздин жан дүйнөңүзгө батып кетсе, анда мен ODL контроллериндеги тиркемелерди иштеп чыгууну сунуштайм. Баштай аласыз бул жерде.