1- المقدمة
ما المقصود بسلسلة المحادثات وOTNS
إنّ سلسلة المحادثات هي بروتوكول شبكة لاسلكية منخفضة الطاقة ومستندة إلى عنوان IP، وتوفّر اتصالات آمنة من جهاز لجهاز إلى جهاز آخر. يمكن أن تتكيّف شبكات المحادثات مع التغييرات في المخططات الهيكلية لتجنُّب نقطة واحدة من التعذُّر.
إنّ OpenThread التي أصدرتها Google عبارة عن تنفيذ مفتوح المصدر لسلسلة المحادثات. على الرغم من صغر حجم الرمز وبصمة الذاكرة، يتوافق OpenThread مع جميع الميزات المحدّدة في مواصفات سلسلة المحادثات.
يمكن استخدام محاكي شبكة OpenThread (OTNS) لمحاكاة شبكات Thread من خلال تشغيل عُقد OpenThread الافتراضية على منصات posix. توفّر OTNS واجهة ويب سهلة الاستخدام (OTNS-Web) لعرض شبكات Thread المضمَّنة وتشغيلها.
ما ستتعرَّف عليه
- تثبيت خدمة OTNS وملحقاتها
- إنشاء سلسلة محادثات مفتوحة من أجل OOTNS
- كيفية إضافة/نقل/حذف العُقد في OTNS-Web
- استخدام الميزات الأخرى المفيدة في شبكة OTNS-Web لتشغيل محاكاة الشبكة
- التحقق من عدم نجاح نقطة الانطلاق
يركّز هذا الدرس التطبيقي حول الترميز على بروتوكولَي OTNS-CLI وOTNS-Web. ولا يتم تناول الميزات الأخرى لنظام التشغيل OTNS، مثل النصوص البرمجية في Python.
المتطلبات
- Linux x86_64 أو Mac OS
- معلومة
- الإصدار 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
على $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. إنشاء سلسلة محادثات مفتوحة من أجل OOTNS
الحصول على رمز 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 بنجاح، ستدخل وحدة تحكّم واجهة سطر الأوامر (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
. يمكنك الرجوع إلى مرجع COTNS للاطّلاع على قائمة كاملة بالأوامر. لا داعي للقلق، ستستخدم فقط بعض هذه الأوامر في هذا الدرس التطبيقي حول الترميز.
شبكة OTNS-Web
OTNS-Web
هو أداة للتمثيل البصري للشبكة وإدارتها من خلال OTNS. ويوفّر هذا التقرير تمثيلاً مرئيًا للعُقد والرسائل والروابط لشبكة محاكاة سلسلة المحادثات. يُرجى ملاحظة عناصر 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 ضمن قسم واحد يتضمّن العديد من العُقد. في القسم التالي، سنعدّل سرعة المحاكاة لتسريع عملية المحاكاة.
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>
، ما يشير إلى سياق العُقدة الحالي. يمكنك إدخال أوامر OpenLI 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.
ما هي الخطوات التالية؟
اطّلِع على بعض هذه الدروس التطبيقية حول الترميز...
- محاكاة شبكة سلسلة محادثات باستخدام OpenThread
- محاكاة شبكة Thread باستخدام OpenThread في شريط الإرساء
- إنشاء شبكة محادثات باستخدام لوحات nRF52840 وOpenThread