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

1- المقدمة

26b7f4f6b3ea0700.png

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

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

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

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

  • كيفية إعداد سلسلة أدوات إصدار OpenThread
  • كيفية محاكاة شبكة Thread
  • كيفية مصادقة عُقد سلاسل المحادثات
  • كيفية إدارة شبكة Thread باستخدام منصّة 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

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

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

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

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

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

أنشئ الآن البرنامج الخفي OpenThread:

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

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

يوضح نموذج التطبيق الذي ستستخدمه لدرس الترميز هذا تطبيق OpenString بسيطًا الذي يعرِض ضبط 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 هي عبارة عن وصف للملف الذي يمثل وحدات البت الأقل أهمية من IEEE-64 "المُخصَّص له من قِبل المصنع" في الجهاز الافتراضي. وتُستخدم هذه القيمة أيضًا عند الربط بمنفذ UDP لمحاكاة IEEE 802.15.4 (المنفذ = 9000 + وصف الملف). سيستخدم كل نسخة افتراضية من جهاز Thread محاكاة في هذا الدرس التطبيقي حول الترميز ترميزًا مختلفًا للملف.

ملاحظة: لا تستخدم كلمات وصفية للملف إلا 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 start
Done

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

> state
leader
Done

الاطّلاع على عناوين IPv6 المخصّصة لواجهة Thread في العقدة 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 = mesh-local
  • يبدأ بـ fe80 = link-local

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

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

عليك تحديد معرّف بطاقة SIM المضمنة (EID) في مخرجات وحدة التحكم، مع تدوين هذا ملاحظات للاستخدام في وقت لاحق. في نموذج الناتج أعلاه، معرّف بطاقة SIM المضمنة (EID) هو:

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

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

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

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

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

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

> dataset networkkey e4344ca17d1dca2a33f064992f31f786
Done
> dataset panid 0xc169
Done

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

> dataset commit active
Done

عرض واجهة IPv6:

> ifconfig up
Done

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

> thread start
Done

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

> 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. فحص اتصال العقدة 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)، يجب مصادقة العُقد.

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

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

d6a67e8a0d0b5dcb.png

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

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

> state
leader
Done

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

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

> commissioner start
Done

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

> 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- إدارة الشبكة باستخدام Open يقبل البرنامج الخفي

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

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

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

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

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

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

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

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

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

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

عرض عناوين IPv6 المخصّصة لواجهة Thread في العقدة 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
>

كما هو موضّح في خطوة محاكاة شبكة Thread، يكون أحد العناوين هو الرابط المحلي (fe80) والرمز الثالث هو شبكة متشابكة محليًا (fd). معرّف EID هو العنوان المحلي المتداخلة الذي لا يحتوي على ff:fe00 في العنوان. في هذا الناتج، تكون معرّف بطاقة SIM المضمنة (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 (RCP ot-daemon) لأي شبكة سلسلة محادثات حتى الآن. هنا يأتي دور ot-ctl. يستخدم ot-ctl واجهة سطر الأوامر نفسها التي يستخدمها تطبيق OpenLI CLI. وبالتالي، يمكنك التحكّم في ot-daemon عُقد بالطريقة نفسها التي تستخدم بها أجهزة Thread الأخرى التي تمت محاكاتها.

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

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

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

ستستخدم 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 (العقدة الثانية) بنجاح باستخدام المفوَّض (العقدة 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، وعلى سطر الأوامر في جهازك المضيف، عن طريق فحص اتصال Node 1، باستخدام معرّف EID مع الأمر ping6. إذا تم دمج مثيل RCP ot-daemon بنجاح والاتصال بشبكة Thread، سينجح إشعار الاتصال:

$ 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

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