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

1. المقدمة

5abd22afa2f2ee9a.png

ما المقصود بسلسلة المحادثات وبروتوكول 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 البرمجية.

المتطلبات

2- تثبيت

تثبيت Go

تتطلّب خدمة OTNS إصدار Go 1.13 أو إصدار أحدث.

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

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):

a0e05178d66929b1.png

إذا ظهرت لك صفحة فارغة فقط لشبكة OTNS-Web، من المحتمل أنّ WebGL غير مفعّل في المتصفّح. يُرجى الرجوع إلىhttps://superuser.com/a/836833 حول كيفية تفعيل WebGL.

في الأقسام التالية، ستتعرّف على كيفية إدارة عمليات محاكاة OTNS من خلال OTNS-CLI وOTNS-Web.

5. التعرّف على OTNS-CLI &amp؛ 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 المختلفة:

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 في شريط الإجراءات لإنشاء أنواع أخرى من العُقد. اسحبها إلى مواضع بالقرب من العُقد الحالية لإرفاقها بشبكة Thread هذه:

fe15d6f9726a099e.png

لقد أنشأت الآن شبكة 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

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

ابحث عن أزرار التحكّم في السرعة 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. تشغيل/إيقاف الراديو

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

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

8c6a2e191cdae0c7.png

إيقاف اللاسلكي

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

a3bf58d9d125f95f.png

ولن يتمكن القائد من إرسال الرسائل أو تلقيها أثناء إيقاف الراديو.

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

e3d32f85c4a1b990.png

تتعافي شبكة Thread عن حالات التعذُّر على القائد تلقائيًا من خلال تشكيل قسم جديد باستخدام قائد جديد. ويكون للقسم الجديد أيضًا لون قسم جديد.

تفعيل اللاسلكي

اختَر القائد الذي تم إيقاف الراديو عليه. انقر على الزر 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.

ما الخطوات التالية؟

يمكنك الاطّلاع على بعض هذه الدروس التطبيقية حول الترميز...

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