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

1. المقدمة

26b7f4f6b3ea0700.png

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

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

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

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

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

المتطلبات

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

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

Git

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

بعد اكتمال التثبيت، اتّبِع التعليمات الخاصة بنظام التشغيل المحدّد لتنزيل هذا الإصدار وتثبيته.

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

يجب استخدام XCode لتثبيت OpenThread وإنشاءه على نظام التشغيل Mac OS X.

بعد تثبيت XCode، عليك تثبيت أدوات سطر أوامر XCode:

$ xcode-select --install

إصدار يعمل على نظام التشغيل Linux / Mac OS X

تم اختبار تعليمات التثبيت هذه على Ubuntu Server 14.04 LTS وMac OS X Sierra 10.12.6.

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

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

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

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

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

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

$ cd ~/src/openthread
$ make -f examples/Makefile-simulation

الآن، أنشئ Openسلسلة خفية:

$ cd ~/src/openthread
$ make -f src/posix/Makefile-posix DAEMON=1

4. محاكاة شبكة سلاسل محادثات

يوضّح مثال التطبيق الذي ستستخدمه في هذا الدرس التطبيقي الحد الأدنى من تطبيق OpenThread الذي يكشف عن ضبط واجهات برمجة التطبيقات والإدارة في Openسلسلة من خلال واجهة سطر الأوامر (CLI) الأساسية.

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

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

6e3aa07675f902dc.png

فحص الاتصال

1. بداية العقدة 1

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

$ cd ~/src/openthread
$ ./output/simulation/bin/ot-cli-ftd 1

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

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

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

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

إنشاء مجموعة بيانات تشغيلية جديدة واستخدامها كمجموعة نشطة. مجموعة البيانات التشغيلية هي إعداد شبكة سلاسل المحادثات التي تنشئها.

> 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 start
Done

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

> state
leader
Done

اعرض عناوين IPv6 التي تم تخصيصها إلى واجهة سلاسل المحادثات للعقدة 1 (ستكون المخرجات مختلفة):

> 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 = متداخلة
  • يبدأ بـ 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
$ ./output/simulation/bin/ot-cli-ftd 2

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

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

> dataset networkkey e4344ca17d1dca2a33f064992f31f786
Done
> dataset panid 0xc169
Done

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

> dataset commit active
Done

عرض واجهة IPv6:

> ifconfig up
Done

بدء عملية بروتوكول سلسلة المحادثات:

> thread start
Done

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

> state
child
Done

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

> state
router
Done

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

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

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

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

> rloc16
5800
Done

في العقدة 1، تحقق من جدول جهاز التوجيه في RLOC16 للعقدة 2. تأكد من تبديل العقدة 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 للعقدة 0xa800 في الجدول، مما يؤكد أنه متصل بالشبكة المتداخلة.

2- عقدة Ping 1 من العقدة 2

تحقَّق من الاتصال بين جهازَي سلسلة محاكاة. في العقدة 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

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

> thread stop
Done
> factoryreset
>
> exit

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

> factoryreset
>
> exit

الاطّلاع علىمرجع سطر الأوامر OpenThread للاطّلاع على جميع أوامر سطر الأوامر المتاحة.

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

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

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

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

d6a67e8a0d0b5dcb.png

1. إنشاء شبكة

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

في العقدة 1، شغِّل عملية سطر الأوامر:

$ cd ~/src/openthread
$ ./output/simulation/bin/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 start
Done

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

> state
leader
Done

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

أثناء وجودك في العقدة 1، ابدأ دور المفوض:

> commissioner start
Done

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

> commissioner joiner add * J01NME
Done

3. بدء دور المشارك

في نافذة الوحدة الطرفية الثانية، أنشئ عملية CLI جديدة. هذه عُقدة 2.

$ cd ~/src/openthread
$ ./output/simulation/bin/ot-cli-ftd 2

في العقدة 2، فعِّل دور المشارك باستخدام بيانات اعتماد المشارك J01NME.

> ifconfig up
Done
> joiner start J01NME
Done

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

Join success

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

الآن بعد مصادقة العقدة 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 Daemon

في هذا التمرين، سنحاكي محاكاة واجهة سطر الأوامر (CLI) (جهاز واحد على سلسلة منظومة على رقاقة (SoC)) ومثيل واحد من معالجات الراديو (RCP).

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

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

استخدام برنامج ot-daemon

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

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

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

1. بداية العقدة 1

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

$ cd ~/src/openthread
$ ./output/simulation/bin/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 start
Done

عرض عناوين IPv6 التي تم تخصيصها إلى واجهة سلسلة محادثات 1:

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

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

حدِّد رقم EID المحدّد من مخرجات ipaddr التي سيتم استخدامها للتواصل مع العقدة.

2- بدء تشغيل ot-daemon

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

$ cd ~/src/openthread
$ ./output/posix/bin/ot-daemon -v \
    'spinel+hdlc+forkpty://output/simulation/bin/ot-rcp?forkpty-arg=2'

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

ot-daemon[228024]: Running OPENTHREAD/20191113-00831-gfb399104; POSIX; Jun 7 2020 18:05:15
ot-daemon[228024]: Thread version: 2
ot-daemon[228024]: RCP version: OPENTHREAD/20191113-00831-gfb399104; SIMULATION; Jun 7 2020 18:06:08

اترك هذه الوحدة الطرفية مفتوحةً قيد التشغيل في الخلفية. ولن يتم إدخال أي أوامر أخرى فيه.

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

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

في نافذة طرفية واحدة، ابدأ ot-ctl:

$ ./output/posix/bin/ot-ctl
>

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

> state
disabled
Done

احصل على eui64 للعقدة 2 لتقييد الانضمام إلى المشارك المحدد:

> 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) وتلقّت بيانات اعتماد "سلسلة المحادثات".

الآن، انضم إلى العقدة 2 بشبكة سلسلة المحادثات:

> thread start
Done

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

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

> state
child
Done
...
> state
router
Done

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

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

$ 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
  • محاكاة شبكة سلاسل محادثات
  • مصادقة عُقد سلسلة المحادثات
  • إدارة شبكة سلاسل محادثات باستخدام Openthread Daemon

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