1- المقدمة
تُعدّ 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 الأساسي. بالنسبة إلى هذا التمارين، سنحاكي العُقد داخل الدائرة الخضراء: قائد سلسلة المحادثات وجهاز توجيه سلسلة المحادثات مع وصلة واحدة بينهما.
إشعار العقدة
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; الواقع: البرنامج المحدّد"؛ 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 الجديدة، والمُفوِّض لتقديم بيانات اعتماد الشبكة المطلوبة للأجهزة للانضمام إلى الشبكة.
في هذا التمرين، سنستخدم الهيكل نفسه الذي يمتدّ إلى عقدتَين. للمصادقة، سيعمل "قائد سلسلة المحادثات" كمُفوض، أي "جهاز توجيه سلسلة المحادثات" كرابط.
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.
استخدام البرنامج الخفي
ستستخدم هذه التمارين ثلاث نوافذ طرفية وفقًا لما يلي:
- مثيل CLI لجهاز محاكاة سلسلة المحادثات (العقدة 1)
- عملية
ot-daemon
- مثيل واجهة سطر أوامر
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'؛ لحظر الانضمام إلى انضمام محدد:
> 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
لمزيد من المعلومات، اطّلِع على هذه المراجع: