ProHoster > وبلاگ > اداره > اتوماسیون خدمات شبکه یا نحوه ساخت آزمایشگاه مجازی با استفاده از OpenDaylight، Postman و Vrnetlab
اتوماسیون خدمات شبکه یا نحوه ساخت آزمایشگاه مجازی با استفاده از OpenDaylight، Postman و Vrnetlab
در این مقاله نحوه راه اندازی را به شما خواهم گفت OpenDaylight برای کار با تجهیزات شبکه، و همچنین نحوه استفاده را نشان خواهد داد پستچی و ساده RESTCONF درخواست، این تجهیزات را می توان کنترل کرد. ما با سخت افزار کار نخواهیم کرد، اما در عوض آزمایشگاه های مجازی کوچکی را با استفاده از یک روتر مستقر خواهیم کرد Vrnetlab بالای سر اوبونتو LTS 20.04.
من ابتدا تنظیمات دقیق را با استفاده از مثال روتر نشان خواهم داد 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: سیسکو xRV9000 را اضافه کنید
نتیجه
PS
کتابشناسی - فهرست کتب
دانش مورد نیاز
برای جلوگیری از تبدیل مقاله به صفحه، برخی از جزئیات فنی را حذف کردم (با پیوندهایی به ادبیات که می توانید در مورد آنها مطالعه کنید).
در این راستا، من به شما موضوعاتی را پیشنهاد می کنم که قبل از خواندن، دانستن آنها خوب است (اما تقریباً ضروری نیست):
یک پلت فرم SDN باز برای مدیریت و خودکارسازی انواع شبکه ها، پشتیبانی شده توسط بنیاد لینوکس
جاوا داخل
بر اساس سطح انتزاع خدمات مبتنی بر مدل (MD-SAL)
از مدل های YANG برای ایجاد خودکار RESTCONF API برای دستگاه های شبکه استفاده می کند
ماژول اصلی مدیریت شبکه از طریق آن است که ما با دستگاه های متصل ارتباط برقرار خواهیم کرد. از طریق API خود مدیریت می شود.
میتوانید درباره OpenDaylight بیشتر بخوانید اینجا.
ابزار تست API
رابط کاربری ساده و آسان
در مورد ما، ما به آن به عنوان وسیله ای برای ارسال درخواست های REST به OpenDaylight API علاقه مندیم. البته می توانید درخواست ها را به صورت دستی ارسال کنید، اما در Postman همه چیز بسیار واضح به نظر می رسد و برای اهداف ما عالی است.
برای کسانی که می خواهند در آن تحقیق کنند: مطالب آموزشی زیادی روی آن نوشته شده است (مثلا).
ابزاری برای استقرار روترهای مجازی در داکر
پشتیبانی از: Cisco XRv، Juniper vMX، Arista vEOS، Nokia VSR و غیره.
متن باز
ساز بسیار جالب، اما کمتر شناخته شده است. در مورد ما، با کمک آن، Juniper vMX و Cisco xRV9000 را بر روی Ubuntu 20.04 LTS معمولی اجرا خواهیم کرد.
Juniper vMX بالا می رود به کارگر بارانداز ظرف (به وسیله Vrnetlab) و به عنوان رایج ترین روتر مجازی عمل می کند.
ODL به روتر متصل می شود و به شما امکان کنترل آن را می دهد.
پستچی روی یک ماشین جداگانه راه اندازی می شود و از طریق آن دستورات را ارسال می کنیم ODL: برای اتصال/حذف روتر، تغییر پیکربندی و غیره.
توضیحاتی در مورد طراحی سیستم
Juniper vMX и ODL برای عملکرد پایدار آنها به منابع بسیار زیادی نیاز دارند. فقط یکی vMX 6 گیگابایت رم و 4 هسته درخواست می کند. بنابراین، تصمیم گرفته شد که تمام "سنگین وزن" را به یک ماشین جداگانه منتقل کنیم (Heulett Packard Enterprise MicroServer ProLiant Gen8، اوبونتو 20.04 LTS). روتر، البته، روی آن "پرواز" نمی کند، اما عملکرد کافی برای آزمایش های کوچک وجود دارد.
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) برای اولین بار شروع می شود، یک فایل پیکربندی را می خواند که تعیین می کند آیا به عنوان VCP VCP در vMX اجرا می شود یا خیر. قبلاً این راه اندازی در حین راه اندازی 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 http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
این فضاهای نام داخلی هستند XML (فضای نام XML) برای ODL بر اساس آن گره ایجاد می کند.
علاوه بر این، بر این اساس، نام روتر است شناسه گره، آدرس روتر - میزبان و غیره
جالب ترین خط آخری است. Schema-cache-directory دایرکتوری ایجاد می کند که تمام فایل ها در آن دانلود می شوند طرحواره یانگ روتر متصل شما میتونید اونها رو در ... پیدا کنید $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" و لیستی از تمام دستگاه های پشتیبانی شده را دریافت کند طرحواره یانگ:
توضیح: برای دیدن دومی، در مورد من باید حدود 10 دقیقه بعد از اعدام صبر می کرد قرار دادناین همه در حال حاضر طرح واره یانگ در تخلیه خواهد شد ODL. تا این مرحله، هنگام انجام این شو پرس و جو موارد زیر را نمایش می دهد:
در تب مجوز، باید پارامتر را تنظیم کنید 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
پس از ارسال، نتیجه زیر را دریافت می کنیم (با استفاده از پاسخ به آن نگاه می کنیم شو درخواست):
قسمت 7: Cisco xRV9000 را اضافه کنید
همه ما در مورد Juniper چیست، بله در مورد Juniper؟ بیایید در مورد سیسکو صحبت کنیم!
من xRV9000 نسخه 7.0.2 را پیدا کردم (جانوری که به 8 گیگابایت رم و 4 هسته نیاز دارد. رایگان در دسترس نیست، بنابراین تماس بگیرید سیسکو) - بیایید آن را راه اندازی کنیم.
اجرای یک کانتینر
فرآیند ایجاد کانتینر 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
Content-Type application/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.
در تب مجوز، باید پارامتر را تنظیم کنید Basic Auth و لاگین/رمز عبور: admin/admin.
نتیجه
در مجموع، همانطور که ممکن است متوجه شده باشید، روشهای اتصال Cisco و Juniper به OpenDaylight هیچ تفاوتی ندارند - این دامنه وسیعی را برای خلاقیت باز میکند. از مدیریت تنظیمات همه اجزای شبکه شروع کنید و با ایجاد خط مشی های شبکه خود پایان دهید.
در این آموزش مثال های ساده ای از نحوه تعامل با تجهیزات شبکه با استفاده از OpenDaylight ارائه کردم. بدون شک، درخواستهای مثالهای بالا را میتوان بسیار پیچیدهتر کرد و کل سرویسها را میتوان با یک کلیک ماوس پیکربندی کرد - همه چیز فقط با تخیل شما محدود میشود*
ادامه ...
PS
اگر به طور ناگهانی همه اینها را می دانید یا برعکس، از آن عبور کرده اید و ODL در روح شما فرو رفته است، توصیه می کنم به دنبال توسعه برنامه های کاربردی بر روی یک کنترلر ODL باشید. می توانید شروع کنید از این رو.