ProHoster > بلوق > إدارة > أتمتة خدمات الشبكة أو كيفية إنشاء مختبر افتراضي باستخدام OpenDaylight و Postman و Vrnetlab
أتمتة خدمات الشبكة أو كيفية إنشاء مختبر افتراضي باستخدام OpenDaylight و Postman و Vrnetlab
في هذه المقالة ، سأوضح لك كيفية الإعداد OpenDaylight للعمل مع معدات الشبكة ، وكذلك لإظهار كيفية استخدامها ساعي البريد وبسيط ريستكونف الطلبات ، يمكن التحكم في هذه المعدات. لن نعمل مع الأجهزة ، ولكن بدلاً من ذلك سننشر مختبرات افتراضية صغيرة باستخدام جهاز توجيه واحد فرنتلاب خلال أوبونتو LTS 20.04.
سأعرض الإعدادات التفصيلية أولاً باستخدام مثال جهاز التوجيه جونيبر vMX 20.1R1.11، ثم نقارنها بالإعداد سيسكو xRV9000 7.0.2.
محتوى
المعرفة المطلوبة
Часть 1: ناقش بإيجاز OpenDaylight (يشار إليه فيما بعد ODL), ساعي البريد и فرنتلاب ولماذا نحتاجهم
Часть 2: وصف المختبر الافتراضي
Часть 3: تهيئة OpenDaylight
Часть 4: تهيئة فرنتلاب
Часть 5: باستخدام ساعي البريد توصيل جهاز التوجيه الظاهري (العرعر vMX) ل ODL
Часть 6: الحصول على وتغيير تكوين جهاز التوجيه باستخدام ساعي البريد и ODL
Часть 7: إضافة Cisco xRV9000
اختتام
PS
فهرس
المعرفة المطلوبة
لكي لا تتحول المقالة إلى ورقة ، فقد حذفت بعض التفاصيل الفنية (مع روابط للأدب حيث يمكنك أن تقرأ عنها).
في هذا الصدد ، أقدم لك موضوعات من الجيد (ولكن ليس من الضروري تقريبًا) معرفتها قبل القراءة:
في حالتنا ، نحن مهتمون بها كوسيلة لإرسال طلبات REST إلى OpenDaylight API. يمكنك بالطبع إرسال الطلبات يدويًا ، ولكن في Postman يبدو كل شيء واضحًا للغاية ويناسب أغراضنا تمامًا.
لأولئك الذين يريدون الحفر: تمت كتابة الكثير من المواد التدريبية عليه (مثلا).
أداة لنشر أجهزة التوجيه الافتراضية في Docker
يدعم: Cisco XRv و Juniper vMX و Arista vEOS و Nokia VSR وما إلى ذلك.
مفتوحة المصدر
أداة ممتعة للغاية ولكنها غير معروفة. في حالتنا ، سنستخدمها لتشغيل Juniper vMX و Cisco xRV9000 على نظام Ubuntu 20.04 LTS العادي.
في هذا البرنامج التعليمي ، سنقوم بإعداد النظام التالي:
كيف يعمل هذا؟
العرعر vMX يرتفع في عامل في حوض السفن حاوية (عن طريق فرنتلاب) ويعمل باعتباره جهاز التوجيه الظاهري الأكثر شيوعًا.
ODL متصل بجهاز التوجيه ويسمح لك بالتحكم فيه.
ساعي البريد تم إطلاقه على جهاز منفصل ومن خلاله نرسل الأوامر ODL: لتوصيل / إزالة جهاز التوجيه ، وتغيير التكوين ، وما إلى ذلك.
تعليق على جهاز النظام
العرعر vMX и ODL تتطلب الكثير من الموارد لتشغيلها المستقر. واحد فقط vMX يطلب 6 جيجابايت من ذاكرة الوصول العشوائي و 4 نوى. لذلك ، تقرر نقل جميع "الأوزان الثقيلة" إلى آلة منفصلة (Heulett Packard Enterprise MicroServer ProLiant Gen8 ، Ubuntu 20.04 LTS). جهاز التوجيه ، بالطبع ، لا "يطير" عليه ، لكن الأداء يكفي للتجارب الصغيرة.
الجزء 3: إعداد OpenDaylight
الإصدار الحالي من ODL في وقت كتابة هذه السطور هو Magnesium SR1
1) التثبيت جافا OpenJDK 11 (لتثبيت أكثر تفصيلا هنا)
ubuntu:~$ sudo apt install default-jdk
2) ابحث عن أحدث إصدار وقم بتنزيله ODLمن هنا
3) قم بفك ضغط الأرشيف الذي تم تنزيله
4) انتقل إلى الدليل الناتج
5) إطلاق ./bin/karaf
في هذه الخطوة ODL يجب أن نبدأ وسنجد أنفسنا في وحدة التحكم (يتم استخدام المنفذ 8181 للوصول من الخارج ، والذي سنستخدمه لاحقًا).
بعد ذلك نقوم بالتثبيت ميزات ODLمصممة للعمل مع البروتوكولات NETCONF и ريستكونف. للقيام بذلك في وحدة التحكم ODL ننفذ:
كل جهاز توجيه مدعوم فرنتلاب، لديه إجراء الإعداد الفريد الخاص به. متى العرعر vMX نحتاج فقط إلى تحميل أرشيف .tgz باستخدام جهاز التوجيه (يمكنك تنزيله من الموقع الرسمي) إلى دليل vmx وقم بتشغيل الأمر make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
بناء الصورة vMX سيستغرق حوالي 10-20 دقيقة. حان الوقت لتناول بعض القهوة!
"هذا لأنه في المرة الأولى التي يتم فيها تشغيل VCP (لوحة التحكم) ، يقرأ ملف التكوين الذي يحدد ما إذا كان سيتم تشغيله كـ 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
هذا يكمل إعداد الموجه.
يمكن العثور على توصيات التثبيت لأجهزة التوجيه الخاصة بمختلف البائعين على مشروع جيثب في الدلائل المعنية.
الجزء 5: ساعي البريد - قم بتوصيل جهاز التوجيه بـ OpenDaylight
هذه مساحات أسماء داخلية XML (مساحة اسم XML) ل ODL وفقًا لذلك يتم إنشاء العقدة.
علاوة على ذلك ، على التوالي ، اسم جهاز التوجيه هو معرّف العقدة، عنوان جهاز التوجيه - مضيف وهلم جرا.
الخط الأكثر إثارة للاهتمام هو الأخير. دليل مخطط ذاكرة التخزين المؤقت ينشئ دليلاً حيث يتم تنزيل جميع الملفات مخطط يانغ جهاز التوجيه المتصل. يمكنك أن تجدهم في $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 موافق" وقائمة بكل ما يدعمه الجهاز مخطط يانغ:
تعليق: لرؤية هذا الأخير ، في حالتي كان من الضروري الانتظار حوالي 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 موافق" وتكوين جهاز التوجيه:
قم بإنشاء تكوين
كمثال ، لنقم بإنشاء التكوين التالي وتعديله:
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.
في علامة التبويب "الرؤوس" ، تحتاج إلى إضافة رأسين:
قبول التطبيق / 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 (وحش يحتاج إلى ذاكرة وصول عشوائي (RAM) بسعة 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.
في علامة التبويب "الرؤوس" ، تحتاج إلى إضافة رأسين:
قبول الطلب / 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.
في علامة التبويب "التخويل" ، يجب عليك تعيين المعلمة Basic Auth وتسجيل الدخول / كلمة المرور: admin / admin.
اختتام
في المجموع ، كما لاحظت ، لا تختلف إجراءات توصيل Cisco و Juniper بـ OpenDaylight - وهذا يفتح مجالًا واسعًا للإبداع. بدءًا من إدارة التكوين لجميع مكونات الشبكة وانتهاءً بإنشاء سياسات الشبكة الخاصة بك.
في هذا البرنامج التعليمي ، قدمت أبسط الأمثلة لكيفية التفاعل مع معدات الشبكة باستخدام OpenDaylight. بدون شك ، يمكن جعل الاستفسارات الواردة في الأمثلة المذكورة أعلاه أكثر تعقيدًا وإنشاء خدمات كاملة بنقرة واحدة على الماوس - كل شيء محدود فقط بخيالك *
يتبع ...
PS
إذا كنت تعرف كل هذا فجأة بالفعل أو ، على العكس من ذلك ، مررت وغرقت في روح ODL ، فأنا أوصي بالبحث عن تطوير التطبيقات على وحدة تحكم ODL. يمكنك البدء من هنا.