ProHoster > Օրագիր > Վարչակազմը > Ցանցային ծառայությունների ավտոմատացում կամ ինչպես կառուցել վիրտուալ լաբորատորիա OpenDaylight, Postman և Vrnetlab-ի միջոցով
Ցանցային ծառայությունների ավտոմատացում կամ ինչպես կառուցել վիրտուալ լաբորատորիա OpenDaylight, Postman և Vrnetlab-ի միջոցով
Այս հոդվածում ես ձեզ ցույց կտամ, թե ինչպես կարգավորել բաց ցերեկային լույս աշխատել ցանցային սարքավորումների հետ, ինչպես նաև ցույց տալ, թե ինչպես օգտագործել Փոստատար և պարզ RESTCONF հարցումները, այս սարքավորումը կարող է վերահսկվել: Մենք չենք աշխատի ապարատային տեխնիկայի հետ, փոխարենը կտեղակայենք փոքր վիրտուալ լաբորատորիաներ՝ մեկ երթուղիչով Վրնետլաբ վերևում Ubuntu LTS 20.04.
Ես նախ ցույց կտամ մանրամասն կարգավորումները՝ օգտագործելով երթուղիչի օրինակը Juniper vMX 20.1R1.11, և այնուհետև մենք այն համեմատում ենք պարամետրի հետ Cisco xRV9000 7.0.2.
Պարունակություն
Պահանջվող գիտելիքներ
1- ի մի մասը: համառոտ քննարկել OpenDaylight (այսուհետ ODL), Փոստատար и Վրնետլաբ և ինչու են մեզ դրանք պետք
2- ի մի մասըվիրտուալ լաբորատորիայի նկարագրությունը
3- ի մի մասը: կարգավորել բաց ցերեկային լույս
4- ի մի մասը: կարգավորել Վրնետլաբ
5- ի մի մասը: օգտագործելով Փոստատար միացնել վիրտուալ երթուղիչը (Juniper vMX) Դեպի ODL
6- ի մի մասըՍտացեք և փոխեք երթուղիչի կոնֆիգուրացիան՝ օգտագործելով Փոստատար и ODL
7- ի մի մասըԱվելացնել Cisco xRV9000
Ամփոփում
PS
Մատենագիտություն
Պահանջվող գիտելիքներ
Որպեսզի հոդվածը չվերածվի թերթիկի, ես բաց եմ թողել որոշ տեխնիկական մանրամասներ (գրականության հղումներով, որտեղ կարող եք կարդալ դրանց մասին):
Այս կապակցությամբ առաջարկում եմ ձեզ թեմաներ, որոնք լավ կլիներ (բայց համարյա ոչ պարտադիր) կարդալուց առաջ իմանալ.
Բաց SDN հարթակ բոլոր տեսակի ցանցերի կառավարման և ավտոմատացման համար, որն աջակցում է Linux հիմնադրամ
Java ներսում
Հիմնվելով մոդելի վրա հիմնված ծառայության վերացական մակարդակի վրա (MD-SAL)
Օգտագործում է YANG մոդելները ցանցային սարքերի համար RESTCONF API-ների ավտոմատ ստեղծման համար
Ցանցի կառավարման հիմնական մոդուլը: Հենց դրա միջոցով մենք շփվելու ենք միացված սարքերի հետ։ Կառավարվում է իր սեփական API-ի միջոցով:
Դուք կարող եք կարդալ ավելին OpenDaylight-ի մասին այստեղ.
API փորձարկման գործիք
Պարզ և հեշտ օգտագործվող ինտերֆեյս
Մեր դեպքում դա մեզ հետաքրքրում է որպես REST հարցումներ OpenDaylight API-ին ուղարկելու միջոց։ Դուք, իհարկե, կարող եք հարցումներ ուղարկել ձեռքով, բայց Postman-ում ամեն ինչ շատ պարզ է թվում և կատարելապես համապատասխանում է մեր նպատակներին:
Նրանց համար, ովքեր ցանկանում են փորել. դրա վրա գրված են բազմաթիվ ուսումնական նյութեր (օրինակ).
Աջակցում է՝ Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR և այլն:
Open Source
Շատ հետաքրքիր, բայց քիչ հայտնի գործիք: Մեր դեպքում, մենք այն կօգտագործենք Juniper vMX-ը և Cisco xRV9000-ը սովորական Ubuntu 20.04 LTS-ի վրա գործարկելու համար:
Դուք կարող եք ավելին կարդալ դրա մասին այստեղ նախագծի էջ.
Մաս 2. Լաբորատորիա
Այս ձեռնարկում մենք կստեղծենք հետևյալ համակարգը.
Ինչպես է այն աշխատում
Juniper vMX ներս է բարձրանում դոկեր կոնտեյներ (միջոցով Վրնետլաբ) և գործում է որպես ամենատարածված վիրտուալ երթուղիչ:
ODL միացված է երթուղիչին և թույլ է տալիս կառավարել այն:
Փոստատար գործարկվում է առանձին մեքենայի վրա և դրա միջոցով մենք հրամաններ ենք ուղարկում ODLերթուղիչը միացնելու / հեռացնելու, կոնֆիգուրացիան փոխելու և այլն:
Համակարգի սարքի մեկնաբանություն
Juniper vMX и ODL պահանջում են բավականին մեծ ռեսուրսներ դրանց կայուն գործունեության համար: Միայն մեկ vMX խնդրում է 6 Գբ օպերատիվ հիշողություն և 4 միջուկ: Ուստի որոշվեց բոլոր «ծանր քաշայինները» տեղափոխել առանձին մեքենա (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS) Երթուղիչը, իհարկե, չի «թռչում» դրա վրա, բայց կատարումը բավական է փոքր փորձերի համար։
Մաս 3. Ստեղծեք OpenDaylight
Այս գրելու պահին ODL-ի ներկայիս տարբերակը Magnesium SR1 է
1) Տեղադրեք Java Open JDK 11 (ավելի մանրամասն տեղադրման համար այստեղ)
ubuntu:~$ sudo apt install default-jdk
2) Գտեք և ներբեռնեք վերջին կառուցումը ODLուստի
3) Բացեք ներբեռնված արխիվը
4) Գնացեք ստացված գրացուցակ
5) Գործարկում ./bin/karaf
Այս քայլին ODL պետք է սկսվի, և մենք կհայտնվենք վահանակում (Պորտ 8181-ն օգտագործվում է դրսից մուտք գործելու համար, որը մենք կօգտագործենք ավելի ուշ):
Հաջորդը, տեղադրեք ODL-ի առանձնահատկություններընախատեսված է արձանագրությունների հետ աշխատելու համար NETCONF и RESTCONF. Դա անելու համար վահանակում ODL մենք իրականացնում ենք.
Տեղադրման համար Վրնետլաբ կլոնավորեք համապատասխան պահեստը github-ից.
ubuntu:~$ cd ~
ubuntu:~$ git clone https://github.com/plajjan/vrnetlab.git
Գնացեք գրացուցակ vrnetlab:
ubuntu:~$ cd ~/vrnetlab
Այստեղ դուք կարող եք տեսնել բոլոր սկրիպտները, որոնք անհրաժեշտ են գործարկման համար: Խնդրում ենք նկատի ունենալ, որ երթուղիչի յուրաքանչյուր տեսակի համար կազմվել է համապատասխան գրացուցակ.
Յուրաքանչյուր երթուղիչ, որն ապահովված է Վրնետլաբ, ունի իր յուրահատուկ տեղադրման ընթացակարգը: Երբ Juniper 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 build-ը չի կարող գործարկվել. -արտոնյալ տարբերակ, սա նշանակում է, որ 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 հարցում:
Հարցման տող.
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
Սրանք ներքին անունների տարածքներ են XML (XML անվանատարածք) Համար ODL ըստ որի ստեղծում է հանգույց։
Հետագայում, համապատասխանաբար, երթուղիչի անվանումն է հանգույց-id, երթուղիչի հասցեն - հյուրընկալող եւ այլն:
Ամենահետաքրքիրը վերջին տողն է. Schema-cache-directory ստեղծում է գրացուցակ, որտեղ ներբեռնվում են բոլոր ֆայլերը Յանգի սխեման միացված երթուղիչ: Դուք կարող եք գտնել դրանք $ODL_ROOT/cache/jun01_cache.
Երթուղիչի միացման ստուգում
Եկեք ստեղծենք GET հարցում:
Հարցման տող.
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
Թույլտվություն ներդիրում դուք պետք է սահմանեք պարամետրը Basic Auth և մուտք/գաղտնաբառ՝ admin/admin:
Մենք ուղարկում ենք. Պետք է ստանա «200 OK» կարգավիճակ և սարքի կողմից աջակցվող բոլորի ցանկը Յանգի սխեման:
ՄեկնաբանությունՎերջինիս տեսնելու համար իմ դեպքում պետք էր մահապատժից մոտ 10 րոպե սպասել PUTմինչև բոլորը Յանգի սխեման բեռնաթափել վրա ODL. Մինչև այս կետը սա կատարելիս GET հարցումը կցուցադրի հետևյալը.
Թույլտվություն ներդիրում դուք պետք է սահմանեք պարամետրը Basic Auth և մուտք/գաղտնաբառ՝ admin/admin:
Մաս 6. Փոխեք երթուղիչի կոնֆիգուրացիան
Ստանալով կոնֆիգուրացիա
Եկեք ստեղծենք GET հարցում:
Հարցման տող.
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 հարցում:
Հարցման տող.
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:
Վերնագրերի ներդիրում դուք պետք է ավելացնեք երկու վերնագիր.
Ընդունել դիմում/xml
Content-Type հավելված/xml
Ուղարկելուց հետո նրանք պետք է ստանան «204 No Content» կարգավիճակը
Ստուգելու համար, որ կոնֆիգուրացիան փոխվել է, կարող եք օգտագործել նախորդ հարցումը: Բայց օրինակ, մենք կստեղծենք ևս մեկը, որը կցուցադրի տեղեկատվություն միայն երթուղիչի վրա կազմաձևված արձանագրությունների մասին:
Եկեք ստեղծենք GET հարցում:
Հարցման տող.
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 հարցում:
Հարցման տող.
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
Content-Type հավելված/json
Ուղարկելուց հետո մենք կստանանք հետևյալ արդյունքը (Պատասխանը նայում ենք՝ օգտագործելով GET հարցում):
Մաս 7. Cisco xRV9000-ի ավելացում
Ինչ ենք մենք բոլորս Juniper, այո Juniper. Եկեք խոսենք Cisco-ի մասին:
Ես գտա xRV9000 տարբերակը 7.0.2 (գազան, որին անհրաժեշտ է 8 Գբ օպերատիվ հիշողություն և 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 հարցում:
Որոշ ժամանակ անց զանգահարեք GET հարցում՝ ստուգելու համար, որ ամեն ինչ միացված է.
Փոխեք կոնֆիգուրացիան
Եկեք կարգավորենք հետևյալ կոնֆիգուրացիան.
!
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 և մուտք/գաղտնաբառ՝ admin/admin:
Վերնագրերի ներդիրում դուք պետք է ավելացնեք երկու վերնագիր.
Ընդունել դիմումը/json
Content-Type հավելված/json
Դրա կատարումից հետո նրանք պետք է ստանան «204 No Content» կարգավիճակը։
Եկեք ստուգենք, թե ինչ ենք ստացել:
Դա անելու համար մենք կստեղծենք GET հարցում:
Հարցման տող.
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:
Թույլտվություն ներդիրում դուք պետք է սահմանեք պարամետրը Basic Auth և մուտք/գաղտնաբառ՝ admin/admin:
Ամփոփում
Ընդհանուր առմամբ, ինչպես նկատեցիք, Cisco-ն և Juniper-ը OpenDaylight-ին միացնելու ընթացակարգերը չեն տարբերվում. սա ստեղծագործության բավականին լայն շրջանակ է բացում: Սկսած ցանցի բոլոր բաղադրիչների կազմաձևման կառավարումից և վերջացրած ձեր սեփական ցանցային քաղաքականության ստեղծմամբ:
Այս ձեռնարկում ես տվել եմ ամենապարզ օրինակները, թե ինչպես կարող եք համագործակցել ցանցային սարքավորումների հետ՝ օգտագործելով OpenDaylight: Անկասկած, վերը նշված օրինակներից հարցումները կարող են շատ ավելի բարդ լինել և մկնիկի մեկ սեղմումով կարգավորել ամբողջ ծառայությունները. ամեն ինչ սահմանափակվում է միայն ձեր երևակայությամբ *
Շարունակելի…
PS
Եթե դուք հանկարծ արդեն գիտեք այս ամենը կամ, ընդհակառակը, անցել եք և խորտակվել ODL-ի հոգու մեջ, ապա խորհուրդ եմ տալիս նայել դեպի ODL կարգավորիչի վրա հավելվածներ մշակելը: Դուք կարող եք սկսել ուստի.