محاكاة شبكة Thread باستخدام OpenThread

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

1- المقدمة

26b7f4f6b3ea0700.png

تُعدّ OpenThread التي أطلقتها Google طريقة تنفيذ مفتوحة المصدر لبروتوكول شبكات سلسلة المحادثات. أصدرت Google Nest سلسلة محادثات مفتوحة من أجل إتاحة التكنولوجيا المستخدمة في منتجات Nest على نطاق واسع للمطورين لتسريع تطوير المنتجات إلى المنزل المتصل.

تحدّد مواصفات سلاسل المحادثات بروتوكول الاتصال اللاسلكي الموثوق به والآمن والمنخفضة الطاقة المستند إلى بروتوكول IPv6 للتطبيقات المنزلية. ينفِّذ OpenThread جميع طبقات شبكات Thread، بما في ذلك IPv6 و6LoWPAN وIEEE 802.15.4 مع أمان MAC ومؤسسة Mesh Link وRouting Mesh.

يرشدك هذا الدرس التطبيقي حول الترميز في عملية محاكاة لشبكة Thread على أجهزة تمت محاكاتها.

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

  • كيفية إعداد سلسلة أدوات إصدار OpenThread
  • كيفية محاكاة شبكة Thread
  • كيفية مصادقة عُقد سلاسل المحادثات
  • كيفية إدارة شبكة Thread باستخدام بروتوكول OpenThread الخفي

المتطلبات

  • جيت
  • المعرفة الأساسية بنظام التشغيل Linux وتوجيه الشبكة

2. إعداد نظام الإصدار

Git

يجب استخدام Git لإكمال هذا الدرس التطبيقي حول الترميز. يُرجى تنزيله وتثبيته قبل المتابعة.

بعد التثبيت، اتّبِع التعليمات لنظام التشغيل المحدّد لتنزيل OpenThread وتصميمه.

XCode لنظام التشغيل Mac OS X

يجب استخدام XCode لتثبيت OpenThread وتصميمه على Mac OS X.

بعد تثبيت XCode، يمكنك تثبيت XCode Command Line Tools:

$ xcode-select --install

بناء على نظام التشغيل Linux / Mac OS X

تم اختبار تعليمات التثبيت هذه على الإصدار 14.04 من نظام التشغيل Ubuntu Server و10.12.6 لنظام التشغيل Mac OS X Sierra.

ثبِّت OpenThread. تضمن أوامر bootstrap تثبيت سلسلة الأدوات وضبط البيئة بشكل صحيح:

$ mkdir -p ~/src
$ cd ~/src
$ git clone --recursive https://github.com/openthread/openthread.git
$ cd openthread
$ ./script/bootstrap
$ ./bootstrap

استخدام نظام التشغيل Windows

إذا كنت تفضّل استخدام نظام التشغيل Windows، ننصحك بتجربة إصدار الإرساء من هذا الدرس التطبيقي حول الترميز.

3- إنشاء تطبيقات OpenThread

بعد اكتمال التثبيت، يمكنك إنشاء مثال لتطبيق OpenThread. في هذا الدرس التطبيقي حول الترميز، نستخدم مثال المحاكاة.

$ cd ~/src/openthread
$ ./script/cmake-build simulation

يمكنك الآن إنشاء البرنامج الخفي لـ OpenThread:

$ ./script/cmake-build posix -DOT_DAEMON=ON

4. محاكاة شبكة Thread

يوضّح مثال التطبيق الذي ستستخدمه لهذا الدرس التطبيقي المُطبَّق الدرس التطبيقي على الأقل لـ OpenThread الذي يعرِض إعدادات OpenThread وواجهات الإدارة من خلال واجهة سطر الأوامر الأساسية (CLI).

ينقلك هذا التمارين إلى الحد الأدنى من الخطوات المطلوبة لفحص جهاز واحد من سلاسل المحادثات التي تتم محاكاتها باستخدام جهاز سلسلة محادثات آخر.

يوضح الشكل أدناه مخطط طوبولوجيا شبكة Thread الأساسي. بالنسبة إلى هذا التمارين، سنحاكي العُقد داخل الدائرة الخضراء: قائد سلسلة المحادثات وجهاز توجيه سلسلة المحادثات مع وصلة واحدة بينهما.

6e3aa07675f902dc.png

إشعار العقدة

1- بدء العقدة 1

انتقِل إلى الدليل openthread وأدرِج عملية سطر الأوامر (CLI) لجهاز محاكاة لسلسلة محادثات باستخدام ot-cli-ftd.

$ cd ~/src/openthread
$ ./build/simulation/examples/apps/cli/ot-cli-ftd 1

ملاحظة: إذا لم تظهر لك رسالة المطالبة > بعد تشغيل هذا الأمر، اضغط على enter.

ينفِّذ هذا البرنامج الثنائي جهاز OpenThread يحاكي الجهاز POSIX. يتم تنفيذ برنامج تشغيل الراديو IEEE 802.15.4 فوق بروتوكول UDP (يتم تمرير إطارات IEEE 802.15.4 داخل أحمال UDP).

وسيطة 1 هي واصِف ملف يمثّل وحدات البت الأقل أهمية من "quot; الواقع: البرنامج المحدّد&quot؛ IEEE الاتحاد الأوروبي-64 للجهاز الذي تمت محاكاهه. وتُستخدم هذه القيمة أيضًا عند الربط بمنفذ UDP لمحاكاة الراديو 802.15.4 (المنفذ = 9000 + وصف الملف). سيستخدِم كل مثيل من جهاز سلاسل محادثات الذي تمت محاكاهه في هذا الدرس التطبيقي وصفًا مختلفًا للملف.

ملاحظة: استخدِم فقط كلمات وصفية لملف 1 أو أكثر كما هو موضّح في هذا الدرس التطبيقي حول الترميز عند بدء تشغيل الجهاز الذي تمت محاكاهه. هناك وصف لملف 0 محجوز للاستخدام الآخر.

أنشِئ مجموعة بيانات تشغيلية جديدة والتزم بها كمجموعة نشطة. مجموعة بيانات التشغيل هي إعدادات شبكة Thread التي تنشئها.

> dataset init new
Done
> dataset
Active Timestamp: 1
Channel: 20
Channel Mask: 07fff800
Ext PAN ID: d6263b6d857647da
Mesh Local Prefix: fd61:2344:9a52:ede0/64
Network Key: e4344ca17d1dca2a33f064992f31f786
Network Name: OpenThread-c169
PAN ID: 0xc169
PSKc: ebb4f2f8a68026fc55bcf3d7be3e6fe4
Security Policy: 0, onrcb
Done

التزم بمجموعة البيانات هذه كمجموعة نشطة:

> dataset commit active
Done

اعرض واجهة IPv6:

> ifconfig up
Done

بدء عملية بروتوكول Thread:

> thread start
Done

انتظِر بضع ثوانٍ وتحقّق من أن الجهاز أصبح قائد سلسلة المحادثات. القائد هو الجهاز المسؤول عن إدارة تخصيص معرّف جهاز التوجيه.

> state
leader
Done

الاطّلاع على عناوين IPv6 المخصّصة لواجهة سلسلة محادثات العقدة 1&39; (ستختلف المخرجات):

> ipaddr
fd61:2344:9a52:ede0:0:ff:fe00:fc00
fd61:2344:9a52:ede0:0:ff:fe00:5000
fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6
fe80:0:0:0:94da:92ea:1353:4f3b
Done

لاحظ أنواع عناوين IPv6 المحدّدة:

  • يبدأ بـ fd = Mesh-local
  • يبدأ بـ fe80 = link-local

يتم تصنيف أنواع العناوين المحلية المتداخلة:

  • تحتوي على ff:fe00 = جهاز توجيه جهاز التوجيه (RLOC)
  • لا يحتوي على ff:fe00 = معرّف نقطة النهاية (EID)

حدِّد المعرّف EID في الإخراج في وحدة التحكّم وسجِّله في قائمة لاستخدامه لاحقًا. في نموذج الناتج أعلاه، EID هو:

fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6

2. بدء العقدة 2

افتح نافذة طرفية جديدة وانتقِل إلى الدليل openthread وابدأ عملية واجهة سطر الأوامر. هذا هو الجهاز الثاني من محاكات سلاسل المحادثات:

$ cd ~/src/openthread
$ ./build/simulation/examples/apps/cli/ot-cli-ftd 2

ملاحظة: إذا لم تظهر لك رسالة المطالبة > بعد تشغيل هذا الأمر، اضغط على enter.

اضبط مفتاح شبكة سلسلة المحادثات ورقم تعريف رقم PAN، باستخدام القيم نفسها كمجموعة البيانات التشغيلية للعقدة 1':

> dataset networkkey e4344ca17d1dca2a33f064992f31f786
Done
> dataset panid 0xc169
Done

التزم بمجموعة البيانات هذه كمجموعة نشطة:

> dataset commit active
Done

اعرض واجهة IPv6:

> ifconfig up
Done

بدء عملية بروتوكول Thread:

> thread start
Done

سيتم إعداد الجهاز نفسه على أنّه وحدة فرعية. يعادل جهاز Child Thread جهازًا نهائيًا، وهو جهاز سلسلة محادثات يُرسِل زيارات واردة من خلال unicast ويستلمها فقط باستخدام جهاز رئيسي.

> state
child
Done

في غضون دقيقتين، من المفترض أن يظهر لك تبديل الحالة من child إلى router. يمكن لجهاز توجيه سلاسل المحادثات توجيه الزيارات بين أجهزة Thread. ويُشار إليها أيضًا باسم "الوالد".

> state
router
Done

التحقق من الشبكة

هناك طريقة سهلة للتحقق من الشبكة المتداخلة وهي من خلال الاطّلاع على جدول أجهزة التوجيه.

1- التحقّق من الاتصال بالإنترنت

في العقدة 2، احصل على RLOC16. RLOC16 هو آخر 16 بت من عنوان RLOC IPv6 على الجهاز.

> rloc16
5800
Done

في العقدة 1، تحقق من جدول جهاز التوجيه بحثًا عن العقدة 2's RLOC16. تأكد من تبديل العقدة 2 إلى حالة جهاز التوجيه أولاً.

> router table
| ID | RLOC16 | Next Hop | Path Cost | LQI In | LQI Out | Age | Extended MAC  |
+----+--------+----------+----------+-------+---------+-----+------------------+
| 20 | 0x5000 |       63 |         0 |     0 |      0 |   0 | 96da92ea13534f3b |
| 22 | 0x5800 |       63 |         0 |     3 |      3 |  23 | 5a4eb647eb6bc66c |

تم العثور على رقم RLOC للعقدة رقم 1&39;0xa800 في الجدول، مؤكدًا أنه متصل بالشبكة المتداخلة.

2. أداة فحص الاتصال بالعقدة 1 من العقدة 2

التحقّق من الاتصال بين جهازَي Thread المحاكيين في العقدة 2، ping تم تحديد EID للعقدة 1:

> ping fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6
> 16 bytes from fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6: icmp_seq=1
hlim=64 time=12ms

يمكنك الضغط على enter للعودة إلى إشعار واجهة سطر الأوامر (CLI) في >.

اختبار الشبكة

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

الرجوع إلى العقدة 1 وإيقاف سلسلة المحادثات:

> thread stop
Done

بدِّل إلى العقدة 2 وتحقّق من الحالة. خلال دقيقتين، تكتشف العقدة 2 أن القائد (العقدة 1) بلا اتصال بالإنترنت، ومن المفترض أن ترى انتقال العقدة 2 لتكون leader من الشبكة:

> state
router
Done
...
> state
leader
Done

بعد التأكيد، أوقِف سلسلة المحادثات وإعادة ضبط العقدة 2 على الإعدادات الأصلية قبل الخروج. تتم إعادة الضبط على الإعدادات الأصلية لضمان عدم نقل بيانات اعتماد شبكة Thread التي استخدمتها في هذه العملية إلى التمارين التالية.

> thread stop
Done
> factoryreset
>
> exit

إعادة الضبط على الإعدادات الأصلية والخروج من العقدة 1 أيضًا:

> factoryreset
>
> exit

يمكنك الاطّلاع على مرجع واجهة سطر الأوامر في OpenThread لاستكشاف جميع أوامر سطر الأوامر (CLI) المتاحة.

5. مصادقة العُقد باستخدام التفويض

في التمرين السابق، يمكنك إعداد شبكة Thread تتضمّن جهازين محاكيين واتصال تم التحقق منه. ومع ذلك، لا يسمح هذا إلا بحركة الزيارات المحلية التي تمت مصادقتها عبر بروتوكول IPv6 بين الأجهزة. لتوجيه زيارات IPv6 العامة بينها (والإنترنت عبر جهاز توجيه حدود سلسلة المحادثات)، يجب مصادقة العُقد.

للمصادقة، يجب أن يكون جهاز واحد مفوَّضًا. المفوّض هو خادم المصادقة المنتخَب حاليًا لأجهزة Thread الجديدة، والمُفوِّض لتقديم بيانات اعتماد الشبكة المطلوبة للأجهزة للانضمام إلى الشبكة.

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

d6a67e8a0d0b5dcb.png

1- إنشاء شبكة

إذا تابعت من التمرين السابق، يجب أن تكون لديك نافذتا طرفية مفتوحتان. إذا لم يكن الأمر كذلك، تأكّد من أن الملفَين مفتوحَين وجاهزان للاستخدام. ستكون إحدى العُقد بمثابة العقدة 1، والأخرى كعقدة 2.

في العقدة 1، ابدأ عملية واجهة سطر الأوامر (CLI):

$ cd ~/src/openthread
$ ./build/simulation/examples/apps/cli/ot-cli-ftd 1

ملاحظة: إذا لم تظهر لك رسالة المطالبة > بعد تشغيل هذا الأمر، اضغط على enter.

أنشِئ مجموعة بيانات تشغيلية جديدة والتزم بها كمجموعة نشطة وابدأ سلسلة المحادثات:

> dataset init new
Done
> dataset
Active Timestamp: 1
Channel: 12
Channel Mask: 07fff800
Ext PAN ID: e68d05794bf13052
Mesh Local Prefix: fd7d:ddf7:877b:8756/64
Network Key: a77fe1d03b0e8028a4e13213de38080e
Network Name: OpenThread-8f37
PAN ID: 0x8f37
PSKc: f9debbc1532487984b17f92cd55b21fc
Security Policy: 0, onrcb
Done

التزم بمجموعة البيانات هذه كمجموعة نشطة:

> dataset commit active
Done

اعرض واجهة IPv6:

> ifconfig up
Done

بدء عملية بروتوكول Thread:

> thread start
Done

انتظِر بضع ثوانٍ وتحقّق من أن الجهاز أصبح قائد سلسلة المحادثات:

> state
leader
Done

2. بدء دور المفوَّض

أثناء استخدام العقدة 1، ابدأ دور المفوّض:

> commissioner start
Done

السماح لأي انضمام (باستخدام حرف البدل *) باستخدام بيانات اعتماد المشترك J01NME بالعمولة على الشبكة. الانضمام هو جهاز تمت إضافته بواسطة مشرف بُني إلى شبكة Thread تم تفويضها.

> commissioner joiner add * J01NME
Done

3- بدء دور "المُنجِر"

في نافذة الوحدة الطرفية الثانية، ابدأ عملية واجهة سطر أوامر جديدة. هذه هي العقدة 2.

$ cd ~/src/openthread
$ ./build/simulation/examples/apps/cli/ot-cli-ftd 2

في العقدة 2، يُرجى تفعيل دور "الانضمام" باستخدام بيانات اعتماد المشترك J01NME.

> ifconfig up
Done
> joiner start J01NME
Done

... انتظر بضع ثوانٍ للتأكيد ...

Join success

بصفته انضمامًا، تمت بنجاح مصادقة الجهاز (العقدة الثانية) مع المفوّض (العقدة 1) وتلقّى بيانات اعتماد شبكة Thread.

الآن وبعد أن تمت مصادقة العقدة 2، يمكنك بدء سلسلة محادثات:

> thread start
Done

4. التحقّق من مصادقة الشبكة

تحقّق من state على العقدة 2 للتأكد من أنّه تم الانضمام إلى الشبكة الآن. في غضون دقيقتين، يتم نقل العقدة 2 من child إلى router:

> state
child
Done
...
> state
router
Done

5. إعادة ضبط الإعدادات

للتحضير للتمارين التالية، يمكنك إعادة ضبط الإعدادات. في كل عُقدة، أوقِف سلسلة المحادثات وأعِد ضبط الجهاز على الإعدادات الأصلية واخرج من الجهاز الذي تمت محاكاه سلسلة المحادثات التالية:

> thread stop
Done
> factoryreset
>
> exit

قد تضطر إلى الضغط على enter عدة مرات لإعادة رسالة المطالبة > بعد أمر factoryreset.

6. إدارة الشبكة باستخدام OpenThread الخفي

بالنسبة إلى هذه العملية، سنحاكي مثيل واجهة سطر الأوامر (CLI) واحدًا (جهاز SoC واحد مضمّن في جهاز واحد) ومثيل واحد لمعالج الراديو اللاسلكي (RCP).

ot-daemon هو وضع في التطبيق OpenThread Posix يستخدم مقبس UNIX كإدخال وإخراج، حتى يمكن تشغيل OpenThread بشكل أساسي كخدمة. يمكن للعميل التواصل مع هذه الخدمة عن طريق الاتصال بالمقبس باستخدام واجهة سطر الأوامر (OpenCLI) كبروتوكول.

ot-ctl هو واجهة سطر الأوامر (CLI) مقدَّمة من ot-daemon لإدارة RCP وإعدادها. وباستخدام هذه الطريقة، سنربط RCP بالشبكة التي أنشأها جهاز Thread.

استخدام البرنامج الخفي

ستستخدم هذه التمارين ثلاث نوافذ طرفية وفقًا لما يلي:

  1. مثيل CLI لجهاز محاكاة سلسلة المحادثات (العقدة 1)
  2. عملية ot-daemon
  3. مثيل واجهة سطر أوامر ot-ctl

إذا تابعت من التمارين السابقة، من المفترض أن تكون قد فتحت نافذتَي طرفيتَين. افتح صفحة ثالثة للتأكّد من توفّر ثلاث نوافذ طرفية لهذا التمرين.

1- بدء العقدة 1

في النافذة الطرفية الأولى، ابدأ عملية واجهة سطر الأوامر (CLI) لجهاز محاكاة سلسلة المحادثات التي تمت محاكاتها:

$ cd ~/src/openthread
$ ./build/simulation/examples/apps/cli/ot-cli-ftd 1

ملاحظة: إذا لم تظهر لك رسالة المطالبة > بعد تشغيل هذا الأمر، اضغط على enter.

أنشِئ مجموعة بيانات تشغيلية جديدة والتزم بها كمجموعة نشطة وابدأ سلسلة المحادثات:

> dataset init new
Done
> dataset
Active Timestamp: 1
Channel: 13
Channel Mask: 07fff800
Ext PAN ID: 97d584bcd493b824
Mesh Local Prefix: fd55:cf34:dea5:7994/64
Network Key: ba6e886c7af50598df1115fa07658a83
Network Name: OpenThread-34e4
PAN ID: 0x34e4
PSKc: 38d6fd32c866927a4dfcc06d79ae1192
Security Policy: 0, onrcb
Done

التزم بمجموعة البيانات هذه كمجموعة نشطة:

> dataset commit active
Done

اعرض واجهة IPv6:

> ifconfig up
Done

بدء عملية بروتوكول Thread:

> thread start
Done

عرض عناوين IPv6 التي تم تعيينها لواجهة سلسلة محادثات العقدة 1&39; :

> ipaddr
fd55:cf34:dea5:7994:0:ff:fe00:fc00
fd55:cf34:dea5:7994:0:ff:fe00:d000
fd55:cf34:dea5:7994:460:872c:e807:c4ab
fe80:0:0:0:9cd8:aab6:482f:4cdc
Done
>

كما هو موضّح في خطوة محاكاة شبكة Thread، يكون العنوان الأول هو link-local (fe80) والثلاثة عناوين هي Mesh-local (fd). معرّف EID هو عنوان الشبكة المتداخلة الذي لا يحتوي على ff:fe00 في العنوان. في هذا الإخراج النموذجي، EID هو fd55:cf34:dea5:7994:460:872c:e807:c4ab.

حدِّد رقم تعريف EID المحدّد من مُخرج ipaddr، الذي سيتم استخدامه للاتصال بالعقدة.

2. بدء البرنامج الخفي

في نافذة الوحدة الطرفية الثانية، انتقِل إلى الدليل openthread وابدأ ot-daemon في عقدة RCP، والتي سنطلقها على العقدة 2. استخدِم علامة النتائج التفصيلية -v للاطّلاع على مخرجات السجلّ والتأكّد من تشغيله، وتأكّد من استخدام sudo:

$ cd ~/src/openthread
$ sudo ./build/posix/src/posix/ot-daemon -v \
    'spinel+hdlc+forkpty:///build/simulation/examples/apps/ncp/ot-rcp?forkpty-arg=2'

عند النجاح في ذلك، يؤدي ot-daemon في وضع التشغيل المطوَّل إلى إنشاء نتائج مشابهة لما يلي:

ot-daemon[12463]: Running OPENTHREAD/thread-reference-20200818-1938-g0f10480ed; POSIX; Aug 30 2022 10:55:05
ot-daemon[12463]: Thread version: 4
ot-daemon[12463]: Thread interface: wpan0
ot-daemon[12463]: RCP version: OPENTHREAD/thread-reference-20200818-1938-g0f10480ed; SIMULATION; Aug 30 2022 10:54:10

اترك محطة الدفع هذه مفتوحة وتعمل في الخلفية. لن تُدخِل أي أوامر أخرى فيه.

3- يمكنك استخدام ot-ctl للانضمام إلى الشبكة

لم نتولى أي عُقدة رقم 2 (2 RCP) ot-daemon إلى أي شبكة Thread حتى الآن. هنا يأتي دور ot-ctl. يستخدم ot-ctl واجهة سطر الأوامر نفسها الموجودة في تطبيق OpenThread CLI. ولذلك، يمكنك التحكّم في عُقَد ot-daemon بالطريقة نفسها التي تتحكّم بها أجهزة سلاسل المحادثات الأخرى.

في نافذة محطة دفع ثالثة، ابدأ ot-ctl:

$ sudo ./build/posix/src/posix/ot-ctl
>

ملاحظة: إذا لم تظهر لك رسالة المطالبة > بعد تشغيل هذا الأمر، اضغط على enter.

يمكنك استخدام ot-ctl في نافذة الوحدة الطرفية الثالثة لإدارة العقدة 2 (عقدة RCP) التي بدأتها في نافذة الوحدة الطرفية الثانية باستخدام ot-daemon. يُرجى التحقّق من state الخاصة بالعقدة 2:

> state
disabled
Done

يمكنك الحصول على eui64 العُقدة 2&#39؛ لحظر الانضمام إلى انضمام محدد:

> eui64
18b4300000000001
Done

في العقدة 1 (النافذة الأولى)، ابدأ المفوَّض وحصر الانضمام على eui64 فقط:

> commissioner start
Done
> commissioner joiner add 18b4300000000001 J01NME
Done

في العقدة 2 (النافذة الخارجية)، اعرض واجهة الشبكة وانضم إلى الشبكة:

> ifconfig up
Done
> joiner start J01NME
Done

... انتظر بضع ثوانٍ للتأكيد ...

Join success

بصفتك انضمامًا، تمت بنجاح مصادقة RCP (العقدة 2) مع المفوَّض (العقدة 1) وتلقّى بيانات اعتماد شبكة Thread.

انضم الآن إلى العقدة 2 إلى شبكة Thread:

> thread start
Done

4. التحقّق من مصادقة الشبكة

تحقّق من state على العقدة 2 للتأكد من أنّه تم الانضمام إلى الشبكة الآن. في غضون دقيقتين، يتم نقل العقدة 2 من child إلى router:

> state
child
Done
...
> state
router
Done

5. التحقق من الاتصال

اخرج من ot-ctl باستخدام الأمرَين Ctrl+D أو exit، وعلى سطر الأوامر لآلة المضيف، على جهاز B في العقدة 1، باستخدام معرّف EID مع الأمر ping6. في حال انضمام مثيل ot-daemon RCP إلى شبكة Thread والاتصال بها بنجاح، يُنجح برنامج ping:

$ ping6 -c 4 fd55:cf34:dea5:7994:460:872c:e807:c4ab
PING fd55:cf34:dea5:7994:460:872c:e807:c4ab (fd55:cf34:dea5:7994:460:872c:e807:c4ab): 56 data bytes
64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=0 ttl=64 time=4.568 ms
64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=1 ttl=64 time=6.396 ms
64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=2 ttl=64 time=7.594 ms
64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=3 ttl=64 time=5.461 ms
--- fd55:cf34:dea5:7994:460:872c:e807:c4ab ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/stddev = 4.568/6.005/7.594/1.122 ms

7. تهانينا

لقد نجحت في محاكاة شبكة Thread الأولى بنجاح باستخدام OpenThread. رائع!

لقد تعلّمت في هذا الدرس التطبيقي كيفية:

  • إعداد سلسلة أدوات OpenThread
  • محاكاة شبكة Thread
  • مصادقة عُقد سلاسل المحادثات
  • إدارة شبكة Thread باستخدام البرنامج الخفي لـ OpenThread

لمزيد من المعلومات، اطّلِع على هذه المراجع: