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

1. المقدمة

5abd22afa2f2ee9a.png

ما المقصود بسلسلة المحادثات وOTNS؟

إنّ سلسلة المحادثات عبارة عن بروتوكول شبكات لاسلكية لاسلكية منخفض الطاقة مستند إلى عنوان IP، ويتيح اتصالات آمنة بين الجهازين وبين الجهاز وبين السحابة الإلكترونية. يمكن أن تتكيّف شبكات سلاسل المحادثات مع التغييرات في علم المخطط لتجنُّب أي نقطة من نقاط الإخفاق.

تم إصدار Openthread من Google كتنفيذ مفتوح المصدر لسلسلة المحادثات. على الرغم من صغر حجم الرمز وتأثيره في الذاكرة، تتوافق OpenOpen مع جميع الميزات المحددة في مواصفات سلسلة المحادثات 1.1.1.

يمكن استخدام OpenString Network محاكي (OTNS) لمحاكاة شبكات سلاسل المحادثات من خلال تشغيل عُقد Openthread على الأنظمة الأساسية لـ posix. توفِّر خدمة OTNS واجهة ويب سهلة الاستخدام (OTNS-Web) لعرض شبكات سلاسل المحادثات والتي يتم محاكاتها.

ما ستتعرَّف عليه

  • تثبيت خدمة OTNS والتبعيات
  • إصدار Openthread for OTNS
  • كيفية إضافة/نقل/حذف العُقد في OTNS-Web
  • استخدام ميزات OTNS-Web الأخرى المفيدة لتشغيل محاكاة الشبكة
  • التحقُّق من عدم احتواء Openسلسلة على نقطة واحدة

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

المتطلبات

2- تركيب

تثبيت 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.

تثبيت أجهزة otd

تثبيت 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 for OTNS

الحصول على رمز OpenThread من GitHub

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

إنشاء Openسلسلة محادثات مع OTNS=1

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

يمكنك العثور على ملفات Open هوية القابلة للتنفيذ في الدليل output:

نظام التشغيل Linux

$ 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 للحصول على قائمة كاملة بالأوامر. لا داعي للقلق، ستستخدم فقط بعض هذه الأوامر في هذا الدرس التطبيقي حول الترميز.

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. تشغيل/إيقاف الراديو

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

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

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 وانقر على الزر 7ff6afd565f4efh.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>، ما يشير إلى سياق العُقدة الحالية. يمكنك كتابة أوامر CLI من Openthread لتنفيذ العُقدة كما لو كنت تتفاعل مع العُقدة مباشرةً.

تنفيذ الأوامر في سياق العُقدة

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.

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

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

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