Google is committed to advancing racial equity for Black communities. See how.
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

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

5abd22afa2f2ee9a.png

ما هو Thread & OTNS

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

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

يمكن استخدام OpenThread Network Simulator (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 هذا.

تثبيت Go

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

  1. قم بتثبيت Go من 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.

احصل على كود OpenThread من GitHub

$ 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 ...

تشغيل 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-CLI خلال 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

أضف العقد من خلال 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

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

في الوقت الحالي ، يجب تشغيل المحاكاة بسرعة 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

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

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

8c6a2e191cdae0c7.png

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

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

a3bf58d9d125f95f.png

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

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

e3d32f85c4a1b990.png

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

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

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

7370a7841861aa3a.png

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

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

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

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

> move 5 600 300
Done

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

c06b4d0a4f183299.png

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

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

9ba305c4c5a5f892.png

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

حذف العقدة 8:

> del 8
Done

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

18156770d9f8bf83.png

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

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

d4079cceea0105f0.png

يجب أن تصبح Node 1 Leader ويجب فصل Node 7 نظرًا لأنه لا يمكن الوصول إلى أي جهاز توجيه.

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

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

انقر 89618191721e79a0.png زر على Action Bar. ستختفي جميع العقد مرة واحدة.

قبل المتابعة...

أضف بعض العقد إلى المحاكاة بنفسك حتى تتمكن من الاستمرار في هذا البرنامج التعليمي.

يوفر 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
>

تهانينا ، لقد نجحت في تنفيذ أول محاكاة لـ OTNS!

لقد تعلمت كيفية تثبيت OTNS وتوابعها. لقد قمت ببناء OpenThread لـ OTNS وبدأت محاكاة OTNS باستخدام مثيلات محاكاة OpenThread. لقد تعلمت كيفية التعامل مع المحاكاة بطرق مختلفة من خلال كل من OTNS-CLI و OTNS-Web .

أنت تعرف الآن ما هو OTNS وكيف يمكنك استخدام OTNS لمحاكاة شبكات OpenThread.

ماذا بعد؟

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

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