1. المقدمة
ما المقصود بسلسلة المحادثات وبروتوكول OTNS؟
Thread هو بروتوكول شبكة لاسلكية لاسلكية يستند إلى عنوان IP ويمكّن الاتصالات الآمنة من جهاز إلى آخر وبين الأجهزة من خلال السحابة الإلكترونية. يمكن أن تتكيّف شبكات سلاسل المحادثات مع التغييرات في الطوبولوجيا لتجنّب نقطة واحدة من الإخفاقات.
تُعدّ OpenThread التي أطلقتها Google طريقة تنفيذ مفتوحة المصدر لسلسلة المحادثات. على الرغم من حجم الرمز الصغير وبصمة الذاكرة الصغيرة الخاصة به، يدعم OpenThread جميع الميزات المحدّدة في مواصفات سلسلة المحادثات.
يمكن استخدام محاكي شبكة OpenThread (OTNS) لمحاكاة شبكات Thread من خلال تشغيل عُقد OpenThread تحاكيها على منصّات posix. توفّر خدمة OTNS واجهة ويب سهلة الاستخدام (OTNS-Web) لعرض شبكات Thread الافتراضية وتشغيلها.
ما ستتعرَّف عليه
- تثبيت خدمة OTNS ومعارِفها
- إنشاء سلسلة محادثات مفتوحة من أجل OTNS
- كيفية إضافة/نقل/حذف عُقد في OTNS-Web
- استخدام ميزات أخرى مفيدة على الإنترنت والخارجية لتشغيل محاكاة الشبكة
- التحقق من أن OpenOpen's no-single-point-of-failil
يركّز هذا الدرس التطبيقي على الترميز على OTNS-CLI وOTNS-Web. ولا يتم توفير الميزات الأخرى في خدمة OTNS' ، مثل نصوص Python البرمجية.
المتطلبات
- Linux x86_64 أو نظام التشغيل Mac
- حث
- الإصدار 1.13 والإصدارات الأحدث.
- متصفّح الويب. تستخدم شبكة OTNS-Web متصفح ويب لعرض عمليات المحاكاة.
- عنصر تمهيدي لسلسلة المحادثات: ستحتاج إلى معرفة المفاهيم الأساسية لسلسلة المحادثات لفهم ما يتم تعلّمه في هذا الدرس التطبيقي حول الترميز.
2- تثبيت
تثبيت Go
تتطلّب خدمة OTNS إصدار Go 1.13 أو إصدار أحدث.
- تثبيت Go من https://golang.org/dl/
- أضف
$(go env GOPATH)/bin
(عادةً$HOME/go/bin
) إلى$PATH
:
$ export PATH=$PATH:$(go env GOPATH)/bin
الحصول على رمز OTNS
$ git clone https://github.com/openthread/ot-ns.git ./otns $ cd otns
تثبيت العناصر التابعة
$ ./script/install-deps grpcwebproxy installed: /usr/local/google/home/simonlin/go/bin/grpcwebproxy
قد يُطلب منك إدخال كلمة مرور لـ sudo
.
تثبيت otns
تثبيت otns
إلى $GOPATH/bin
:
$ ./script/install otns installed: /usr/local/google/home/simonlin/go/bin/otns
لنتحقّق مما إذا تم تثبيت otns
بشكل صحيح.
- يمكنك تشغيل
which otns
للتحقّق مما إذا كانotns
القابل للبحث قابلاً للبحث في$PATH.
. - في حال عدم العثور على الأمر
otns
، تأكّد من أنك أضفت$(go env GOPATH)/bin
إلى$PATH.
.
3- إنشاء سلسلة محادثات مفتوحة من أجل OTNS
الحصول على رمز OpenThread من GitHub
$ mkdir -p ~/src $ git clone https://github.com/openthread/openthread ~/src/openthread
إنشاء سلسلة محادثات باستخدام OTNS=1
$ cd ~/src/openthread $ ./script/cmake-build simulation -DOT_OTNS=ON -DOT_SIMULATION_VIRTUAL_TIME=ON -DOT_SIMULATION_VIRTUAL_TIME_UART=ON -DOT_SIMULATION_MAX_NETWORK_SIZE=999
يمكنك العثور على الملفات التنفيذية لـ OpenThread في الدليل build
:
$ ls ~/src/openthread/build/simulation/examples/apps/cli/ ot-cli-ftd ot-cli-mtd ot-cli-radio
حان الآن وقت تشغيل OTNS...
4. تشغيل OTNS
تشغيل otns
:
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
عند بدء الاستخدام بنجاح، ستُدخل خدمة OTNS وحدة تحكّم سطر الأوامر (CLI) (OTNS-CLI
) وتُشغّل متصفّح ويب لعرض مرئيات الشبكة وإدارتها (OTNS-Web
):
إذا ظهرت لك صفحة فارغة فقط لشبكة OTNS-Web، من المحتمل أنّ WebGL غير مفعّل في المتصفّح. يُرجى الرجوع إلىhttps://superuser.com/a/836833 حول كيفية تفعيل WebGL.
في الأقسام التالية، ستتعرّف على كيفية إدارة عمليات محاكاة OTNS من خلال OTNS-CLI
وOTNS-Web
.
5. التعرّف على OTNS-CLI &؛ OTNS-Web
خدمة OTNS-CLI
يوفر OTNS-CLI
واجهة سطر الأوامر (CLI) لإدارة محاكاة OTNS.
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
يمكنك كتابة الأوامر من خلال OTNS-CLI
. يمكنك الاطّلاع على مرجع واجهة برمجة التطبيقات (OTNS CLI) للحصول على قائمة كاملة بالأوامر. لا داعي للقلق، فلن تستخدم سوى عدد قليل من هذه الأوامر في هذا الدرس التطبيقي حول الترميز.
خدمة OTNS-Web
OTNS-Web
هو أداة تمثيل بصري للشبكة وإدارتها عبر شبكة Wi-Fi. وتوفّر هذه الوحدة تمثيلاً مرئيًا للعُقد والرسائل والروابط في سلسلة شبكة المحاكاة. يُرجى ملاحظة عناصر OTNS-Web
المختلفة:
6. إضافة عُقد
إضافة عُقد من خلال OTNS-CLI
إضافة جهاز توجيه في الموضع (300، 100)
> add router x 300 y 100 1 Done
من المفترض أن تظهر لك عقدة تم إنشاؤها في OTNS-Web
. تبدأ العقدة كموجِّه وتصبح قائدًا في بضع ثوانٍ:
إضافة المزيد من العُقد من خلال OTNS-CLI
> add fed x 200 y 100 2 Done > add med x 400 y 100 3 Done > add sed x 300 y 200 4 Done
انتظِر بضع ثوانٍ حتى يتم دمج العُقد في قسم واحد. من المفترض أن تظهر لك العُقد في OTNS-WEB
:
إضافة عُقد بحلول OTNS-Web
يمكنك أيضًا إضافة عُقد من خلال OTNS-Web
. انقر على زر New Router
في Action Bar
. من المفترض أن تظهر لك عقدة أعلى الزر New Router
مباشرةً. اسحب العقدة لتكون بالقرب من القائد الذي أنشأته من خلال OTNS-CLI
. من المفترض أن يتم دمج جميع العُقد في قسم واحد:
انقر أيضًا على الأزرار FED وMED وSED في شريط الإجراءات لإنشاء أنواع أخرى من العُقد. اسحبها إلى مواضع بالقرب من العُقد الحالية لإرفاقها بشبكة Thread هذه:
لقد أنشأت الآن شبكة Thread لقسم واحد تحتوي على العديد من العُقد. في القسم التالي، سنعمل على ضبط سرعة المحاكاة لزيادة سرعة المحاكاة.
7. ضبط السرعة
من المفترض أن تكون المحاكاة قيد التشغيل حاليًا بسرعة 1X
، ما يعني أنّ الوقت المستغرَق حتى الآن ليس في الوقت الفعلي منذ إنشاء العقدة الأولى.
ضبط السرعة خلال OTNS-CLI
ويمكنك ضبط سرعة المحاكاة من خلال OTNS-CLI
.
ضبط سرعة المحاكاة على 100X
> speed 100 Done
ومن المفترَض أن تظهر لك العُقد إرسال الرسائل بمعدل أكبر من ذي قبل.
ضبط سرعة المحاكاة على MAX
> speed max Done
الآن، تُجري خدمة OTNS تجربة على أفضل نحو في أسرع وقت ممكن، لذا من المفترض أن ترى العُقد التي ترسل عددًا كبيرًا من الرسائل.
إيقاف المحاكاة
> speed 0 Done
ويؤدي ضبط سرعة المحاكاة إلى 0
إلى إيقاف المحاكاة مؤقتًا.
استعادة المحاكاة بالسرعة العادية
> speed 1 Done
سيؤدي ضبط سرعة المحاكاة إلى قيمة أكبر من 0
إلى استئناف المحاكاة.
ضبط السرعة خلال OTNS-Web
أزرار التحكّم في السرعة
ابحث عن أزرار التحكّم في السرعة على
Action Bar
. تعرض الأزرار سرعة المحاكي الحالية ويمكن استخدامها لضبط سرعة المحاكاة وإيقاف المحاكاة مؤقتًا/استئنافها.
محاكاة تسريع الأداء
يمكنك تسريع المحاكاة من خلال النقر على الزر إلى أن تصل السرعة إلى
MAX
: .
محاكاة بشأن البطء
ويمكنك إبطاء المحاكاة من خلال النقر على الزر .
إيقاف المحاكاة
انقر على الزر لإيقاف المحاكاة مؤقتًا عندما تكون قيد التشغيل. سيتغير الزر إلى
.
استئناف المحاكاة
انقر على الزر لاستئناف المحاكاة عند إيقافها مؤقتًا. سيتغيّر الزر إلى
.
ضبط سرعة المحاكاة على 10X
لتوفير الوقت، استخدِم
OTNS-CLI
لضبط سرعة المحاكاة على
10X
لكي نلاحظ التغييرات في الطبولوجيا في الشبكة بشكل أسرع.
> speed 10 Done
8. تشغيل/إيقاف الراديو
والآن، يجب أن تحتوي المحاكاة على جهازَي توجيه (سداسي عشري) والعديد من الأطفال وتعمل بسرعة 10 أضعاف.
ابحث عن القائد الحالي (الحد الأحمر) لجهازَي التوجيه، وانقر عليه مرة واحدة لاختياره:
إيقاف اللاسلكي
انقر على الزر في شريط الإجراءات لإيقاف راديو عقدة القائد:
ولن يتمكن القائد من إرسال الرسائل أو تلقيها أثناء إيقاف الراديو.
انتظر لمدة 12 ثانية تقريبًا (120 ثانية في وقت المحاكاة) حتى يصبح جهاز التوجيه الآخر القائد الجديد:
تتعافي شبكة Thread عن حالات التعذُّر على القائد تلقائيًا من خلال تشكيل قسم جديد باستخدام قائد جديد. ويكون للقسم الجديد أيضًا لون قسم جديد.
تفعيل اللاسلكي
اختَر القائد الذي تم إيقاف الراديو عليه. انقر على الزر في
Action Bar
لاستعادة الاتصال اللاسلكي:
يجب أن يعيد المشرف الاتصال بالشبكة بعد استعادة الاتصال اللاسلكي.
9. نقل العُقد
تتيح ميزة OTNS للمستخدمين نقل العُقد بسهولة من خلال OTNS-CLI
أو OTNS-Web
.
نقل العقدة عبر OTNS-CLI
نقل العقدة 5 إلى موقع جديد:
> move 5 600 300 Done
نظرًا لأن العقدة 5 بعيدة عن جهاز التوجيه الآخر الآن، من المفترض أن يفقدوا الاتصال ببعضهم البعض، وبعد حوالي 12 ثانية (120 ثانية في وقت المحاكاة) يصبح كل من القادة في القسم الخاص بهم:
نقل العقدة عبر OTNS-Web
انقل العقدة 5 إلى الموقع الأصلي مرة أخرى من خلال السحب. يجب إعادة دمج القسمين في قسم واحد:
10. حذف العُقد
حذف العُقد من خلال OTNS-CLI
حذف العقدة 8:
> del 8 Done
يجب أن تختفي العقدة 8 من المحاكاة:
حذف العُقد من خلال OTNS-Web
اختَر العقدة 5 وانقر على الزر في
Action Bar
لحذف العقدة 5:
يجب أن يصبح Node 1
رائدًا ويجب أن يفصل Node 7
لأنه لا يمكنه الوصول إلى أي جهاز توجيه.
محو المحاكاة (حذف كل العُقد)
ويمكنك محو المحاكاة من خلال حذف جميع العُقد من خلال OTNS-Web
.
انقر على الزر في
Action Bar.
ستختفي جميع العُقد في آنٍ واحد.
قبل المتابعة...
أضِف بعض العُقد إلى المحاكاة بنفسك حتى تتمكّن من الاستمرار في هذا البرنامج التعليمي.
11- سياق عقدة OTNS-CLI
يوفّر OTNS-CLI
وضع سياق العقدة لتسهيل التفاعل مع العُقد لمساعدة مطوّري البرامج على تشخيص حالة العُقدة.
الدخول في وضع سياق العُقدة
أدخِل سياق العُقدة 1:
> node 1 Done node 1>
تم تغيير موجِّه سطر الأوامر (CLI) إلى node 1>
، للإشارة إلى سياق العُقدة الحالية. يمكنك كتابة أوامر OpenThread CLI ليتم تنفيذها على العُقدة كما لو كنت تتفاعل مع العُقدة مباشرةً.
تنفيذ الأوامر في سياق العُقدة
node 1> state leader Done node 1> channel 11 Done node 1> panid 0xface Done node 1> networkname OpenThread Done node 1> ipaddr fdde:ad00:beef:0:0:ff:fe00:fc00 fdde:ad00:beef:0:0:ff:fe00:d800 fdde:ad00:beef:0:2175:8a67:1000:6352 fe80:0:0:0:2075:82c2:e9e9:781d Done
التبديل إلى سياق آخر للعقدة
node 1> node 2 Done node 2>
الخروج من سياق العُقدة
node 1> exit Done >
12- تهانينا
تهانينا، لقد نفّذت محاكاة OTNS الأولى بنجاح.
لقد تعرّفت على كيفية تثبيت خدمة OTNS وملحقاتها. لقد أنشأت OpenThread لخدمة OTNS وبدأت محاكاة OTNS باستخدام مثيلات محاكاة OpenThread. لقد تعلّمت كيفية التلاعب بالمحاكاة بطرق مختلفة من خلال الترميزَين OTNS-CLI
وOTNS-Web
.
لقد تعرّفت الآن على المقصود بـ OTNS وكيفية استخدام OTNS لمحاكاة شبكات OpenThread.
ما الخطوات التالية؟
يمكنك الاطّلاع على بعض هذه الدروس التطبيقية حول الترميز...
- محاكاة شبكة Thread باستخدام OpenThread
- محاكاة شبكة Thread باستخدام OpenThread في أداة الإرساء
- إنشاء شبكة Thread باستخدام لوحات nRF52840 وOpenThread