محاكاة شبكات الخيط باستخدام OTNS

1 المقدمة

5abd22afa2f2ee9a.png

ما هو Thread & OTNS

Thread هو بروتوكول شبكة لاسلكية منخفض الطاقة قائم على بروتوكول الإنترنت يتيح إجراء اتصالات آمنة من جهاز إلى جهاز ومن جهاز إلى شبكة سحابية. يمكن لشبكات الخيط أن تتكيف مع تغييرات الهيكل لتجنب نقطة واحدة من الفشل.

OpenThread التي أطلقتها جوجل هو تنفيذ المصدر المفتوح من الموضوع. وعلى الرغم من صغر حجم رمز وذاكرة وجودها، OpenThread يدعم جميع الميزات المحددة في الموضوع 1.1.1 مواصفات .

OpenThread شبكة محاكي (OTNS) يمكن استخدامها لشبكات الموضوع محاكاة عن طريق تشغيل محاكاة العقد OpenThread على POSIX المنصات. يوفر OTNS واجهة ويب سهلة الاستخدام (OTNS-Web) لتصور شبكات الترابط المحاكاة وتشغيلها.

ماذا ستتعلم

  • قم بتثبيت OTNS وتوابعها
  • بناء OpenThread لـ OTNS
  • كيفية إضافة / نقل / حذف العقد في OTNS-Web
  • استخدم ميزات OTNS-Web المفيدة الأخرى لتشغيل محاكاة الشبكة
  • تحقق من عدم وجود نقطة واحدة للفشل في OpenThread

يركز مختبر الأكواد هذا على OTNS-CLI و OTNS-Web. ميزات OTNS الأخرى ، مثل برمجة Python ، غير مغطاة.

ماذا ستحتاج

  • Linux x86_64 أو Mac OS.
  • بوابة .
  • الذهاب 1.11+ .
  • متصفح الإنترنت. يستخدم OTNS-Web مستعرض ويب لعرض عمليات المحاكاة.
  • كاتب الموضوع التمهيدي . ستحتاج إلى معرفة المفاهيم الأساسية لـ Thread لفهم ما يتم تدريسه في Codelab هذا.

2. التثبيت

تثبيت Go

تتطلب OTNS Go 1.11+ للبناء.

  1. تثبيت العودة من https://golang.org/dl/
  2. إضافة $(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 يتم تثبيت بشكل صحيح

  1. تشغيل which otns لمعرفة ما اذا كان otns للتنفيذ هو للبحث في $PATH.
  2. إذا كان otns لم يتم العثور على الأوامر، تحقق من التي قمت بإضافتها $(go env GOPATH)/bin ل $PATH.

3. بناء OpenThread لـ OTNS

احصل على كود OpenThread من جيثب

$ mkdir -p ~/src
$ git clone https://github.com/openthread/openthread ~/src/openthread

بناء OpenThread مع OTNS=1

$ cd ~/src/openthread
$ ./script/bootstrap
$ ./bootstrap
$ make -f examples/Makefile-simulation OTNS=1

يمكنك العثور على الملفات التنفيذية OpenThread في output الدليل:

لينكس

$ ls ~/src/openthread/output/simulation/bin
ot-cli-ftd        ot-cli-mtd        ot-ncp-ftd        ot-ncp-mtd        ot-rcp

macOS

$ ls ~/src/openthread/output/simulation/bin
ot-cli-ftd        ot-cli-mtd        ot-ncp-ftd        ot-ncp-mtd        ot-rcp

حان الوقت الآن لتشغيل OTNS ...

4. قم بتشغيل OTNS

تشغيل otns :

$ cd ~/src/openthread/output/simulation/bin
$ otns
> ← OTNS-CLI prompt

عندما بدأت بنجاح، سوف OTNS إدخال وحدة التحكم CLI ( OTNS-CLI ) وإطلاق متصفح ويب لرؤية الشبكة وإدارة ( OTNS-Web ):

a0e05178d66929b1.png

إذا كان بإمكانك فقط رؤية صفحة فارغة لـ 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/output/simulation/bin
$ otns
> ← OTNS-CLI prompt

يمكنك كتابة الأوامر من خلال OTNS-CLI . الرجوع إلى المرجعية OTNS CLI للحصول على قائمة كاملة من الأوامر. لا تقلق ، لن تستخدم سوى عددًا قليلاً من هذه الأوامر في Codelab هذا.

OTNS-Web

OTNS-Web هو في OTNS التصور الشبكة وأداة الإدارة. يوفر تمثيلًا مرئيًا للعقد والرسائل والروابط الخاصة بشبكة الخيوط المحاكاة. ملاحظة العناصر المختلفة من OTNS-Web :

4c5b43509a2ca0d0.png

6. إضافة العقد

أضف العقد من خلال OTNS-CLI

أضف جهاز توجيه في الموضع (300 ، 100)

> add router x 300 y 100
1
Done

يجب أن تشاهد العقدة التي تم إنشاؤها في OTNS-Web . تبدأ العقدة كموجه وتصبح رائدة في بضع ثوانٍ:

6ca8c2e63ed9818d.png

إضافة المزيد من العقد من خلال 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 :

3ee67903c01aa612.png

إضافة العقد التي كتبها OTNS-Web

يمكنك أيضا إضافة العقد من خلال OTNS-Web . انقر على New Router زر من Action Bar . يجب أن تشاهد عقدة يتم إنشاؤه الحق فوق New Router زر. اسحب العقدة ليكون بالقرب من زعيم قمت بإنشائه من خلال OTNS-CLI . يجب أن تندمج جميع العقد في نهاية المطاف في قسم واحد:

420258bb92561146.png

انقر أيضًا على الأزرار FED و MED و SED على شريط الإجراءات لإنشاء أنواع أخرى من العقد. اسحبهم إلى مواقع بالقرب من العقد الموجودة لإرفاقهم بشبكة الموضوع:

fe15d6f9726a099e.png

لقد قمت الآن بإنشاء شبكة مؤشر ترابط من قسم واحد يحتوي على العديد من العقد. في القسم التالي ، سنقوم بضبط سرعة المحاكاة لجعل المحاكاة تعمل بشكل أسرع.

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

أزرار التحكم في السرعة

ابحث عن أزرار التحكم في السرعة 9329157c1bd12672.png على Action Bar . تعرض الأزرار سرعة المحاكاة الحالية ويمكن استخدامها لضبط سرعة المحاكاة وإيقاف المحاكاة مؤقتًا / استئنافها.

تسريع المحاكاة

يمكنك تسريع المحاكاة بالنقر فوق 39b88331779277ad.png الزر حتى سرعة تصل إلى MAX : f5f460b2586d299b.png .

إبطاء المحاكاة

يمكنك إبطاء المحاكاة بالنقر فوق 31cca8d5b52fa900.png زر.

وقفة المحاكاة

انقر على 46cc2088c9aa7ab6.png زر لإيقاف المحاكاة عند تشغيلها. سيتم تغيير الزر إلى ce25eda3496ffcd4.png .

استئناف المحاكاة

انقر على ce25eda3496ffcd4.png زر لاستئناف المحاكاة عند توقفها مؤقتًا. سيتم تغيير الزر مرة أخرى إلى 46cc2088c9aa7ab6.png .

تعيين محاكاة سرعة 10X

لتوفير الوقت ، استخدم

OTNS-CLI لضبط سرعة محاكاة ل

10X حتى نتمكن من مراقبة التغيرات طوبولوجيا في الشبكة أسرع بكثير.

> speed 10
Done

8. تشغيل / إيقاف تشغيل الراديو

الآن ، يجب أن تحتوي المحاكاة على جهازي توجيه (شكل سداسي) والعديد من الأطفال ، وتعمل بسرعة 10x.

ابحث عن الزعيم الحالي (الحد الأحمر) للموجهين ، بنقرة واحدة لتحديده:

8c6a2e191cdae0c7.png

قم بإيقاف تشغيل الراديو

انقر على 7ca085f470491dd4.png زر في شريط الإجراءات لإيقاف راديو العقدة الرائدة:

a3bf58d9d125f95f.png

لن يتمكن القائد من إرسال أو استقبال الرسائل مع إيقاف تشغيل الراديو.

انتظر حوالي 12 ثانية (120 ثانية في وقت المحاكاة) حتى يصبح جهاز التوجيه الآخر هو القائد الجديد:

e3d32f85c4a1b990.png

تتعافى شبكة مؤشر الترابط من فشل الزعيم تلقائيًا عن طريق تشكيل قسم جديد بقائد جديد. يحتوي القسم الجديد أيضًا على لون قسم جديد.

قم بتشغيل الراديو

حدد القائد الذي تم إيقاف تشغيل الراديو الخاص به. انقر على 2d9cecb8612b42aa.png زر على Action Bar لاستعادة الاتصال الراديو:

7370a7841861aa3a.png

يجب على القائد إعادة الاتصال بالشبكة بعد استعادة الاتصال اللاسلكي.

9. نقل العقد

OTNS تمكن المستخدمين من الانتقال بسهولة من خلال العقد OTNS-CLI أو OTNS-Web .

نقل العقدة من خلال OTNS-CLI

انقل العقدة 5 إلى موقع جديد:

> move 5 600 300
Done

نظرًا لأن العقدة 5 الآن بعيدة كل البعد عن جهاز التوجيه الآخر ، يجب أن يفقدوا الاتصال ببعضهم البعض ، وبعد حوالي 12 ثانية (120 ثانية في وقت المحاكاة) يصبح كلاهما قادة في قسمهم الخاص:

c06b4d0a4f183299.png

انقل العقدة عبر OTNS-Web

انقل العقدة 5 مرة أخرى إلى الموقع الأصلي عن طريق السحب. يجب دمج القسمين مرة أخرى في قسم واحد:

9ba305c4c5a5f892.png

10. حذف العقد

العقد الحذف من خلال OTNS-CLI

حذف العقدة 8:

> del 8
Done

يجب أن تختفي العقدة 8 من المحاكاة:

18156770d9f8bf83.png

العقد الحذف من خلال OTNS-Web

حدد العقدة 5 وانقر فوق 7ff6afd565f4eafc.png زر على Action Bar إلى عقدة حذف 5:

d4079cceea0105f0.png

Node 1 ينبغي أن يصبح القائد و Node 7 يجب فصل لأنه لا يمكن التوصل إلى أي جهاز التوجيه.

مسح المحاكاة (حذف كافة العقد)

يمكنك مسح المحاكاة عن طريق حذف كافة العقد من خلال OTNS-Web .

انقر 89618191721e79a0.png زر على 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.

ماذا بعد؟

تحقق من بعض مختبرات الرموز هذه ...

مستندات مرجعية