جهاز توجيه حد سلسلة المحادثات - سلسلة رسائل 1.2 متعددة البث

1- مقدمة

608c4c35050eb280.png

ما المقصود بسلسلة المحادثات؟

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

ما المقصود بـ OpenThread؟

الإصدار المفتوح من Google هو تنفيذ لبرنامج مفتوح المصدر لـ thread®.

ما هو جهاز توجيه حدود سلاسل OpenOpen؟

جهاز توجيه حدود سلسلة OpenOpen (OTBR) الذي تم إصداره من قِبل Google هو تطبيق مفتوح المصدر لجهاز توجيه سلاسل المحادثات.

سلسلة المحادثات 1.2 متعددة البث

تحدّد سلسلة المحادثات 1.2 سلسلة من الميزات التي تتيح استخدام ميزة البث المتعدد على جميع الشبكات غير المتكلّفة (سلاسل سلاسل Wi-Fi وشبكة Wi-Fi) لعناوين البث المتعدد التي يزيد نطاقها عن النطاق المحلي.

يسجّل جهاز توجيه الحدود 1.2 جهاز توجيه الحدود (BBR) ، بينما تكون خدمة BBR المحددة هي جهاز التوجيه الأساسي لـ BBR (PBBR)، وهو مسؤول عن البريد الوارد/الصادر الصادر في آن واحد.

يُرسل جهاز سلسلة محادثات 1.2 رسالة CoAP لتسجيل عنوان البث المتعدد إلى PBBR (تسجيل المستمع المتعدد، قصير (MLR)) إذا كان العنوان أكبر من النطاق المحلي. تستخدم شبكة PBBR بروتوكول MLDv2 على الواجهة الخارجية للاتصال ببروتوكول IPv6 المحلي/شبكة WAN الواسعة النطاق بخصوص مجموعات البث المتعددة لبروتوكول IPv6 التي تحتاج إلى الاستماع إليها، وذلك نيابة عن شبكة سلاسل المحادثات المحلية. ويعيد PBBR توجيه زيارات البث المتعدد إلى شبكة سلاسل المحادثات إذا كان الوجهة مشتركًا في جهاز سلسلة محادثات واحد على الأقل.

وبالنسبة إلى الأجهزة ذات سلسلة النهاية 1.2 كحد أدنى، يمكن أن يعتمدوا على الشركة الرئيسية لتجميع عنوان البث المتعدد وتنفيذ عملية MLR نيابةً عنهم، أو تسجيل أنفسهم إذا كانت أصلهم من سلسلة المحادثات 1.1.

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

ما تنشئه

في هذا الدرس التطبيقي، ستُجري عملية إعداد جهاز توجيه حد للسلسلة وجهازين من سلاسل المحادثات، ثم تفعيل ميزات الإرسال المتعدد والتحقق منها على أجهزة سلسلة المحادثات وأجهزة Wi-Fi.

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

  • كيفية إنشاء برامج ثابتة nRF52840 باستخدام ميزات البث متعدد سلاسل المحادثات 1.2.
  • كيفية الاشتراك في عناوين البث المتعدد لبروتوكول IPv6 على أجهزة سلسلة المحادثات

المتطلبات

  • جهاز Raspberry Pi 3/4 وبطاقة SD بسعة 8 غيغابايت على الأقل.
  • 3 لوحات الشمال شبه موصلة nRF52840 DK
  • تم تفعيل نقطة وصول Wi-Fi بدون IPv6 Router Advertisingment Guard على جهاز التوجيه.
  • كمبيوتر محمول Linux/macOS (يعمل Raspberry Pi أيضًا) مع تثبيت Python3

2- إعداد OTBR

اتّبعجهاز توجيه حد سلسلة المحادثات - اتصال IPv6 ثنائي الاتجاه واكتشاف الخدمة المستندة إلى نظام أسماء النطاقات درس تطبيقي حول الترميز لإعداد جهاز توجيه حدّ سلاسل المحادثات على Raspberry Pi

بعد الانتهاء، من المفترض أن يكون Raspberry Pi قد أنشأ شبكة سلسلة محادثات نشطة، وأن يكون متصلاً بشبكة Wi-Fi.

من المفترض أن يصبح OTBR هو جهاز التوجيه الأساسي في العمود الفقري خلال ثوانٍ.

$ sudo ot-ctl bbr state
Primary
Done
$ sudo ot-ctl bbr
BBR Primary:
server16: 0xD800
seqno:    23
delay:    1200 secs
timeout:  3600 secs
Done

3. أجهزة إصدار Flash وسلاسل المحادثات

يمكنك إنشاء تطبيق Thread 1.2 CLI باستخدام Multicast وفلاش لوحتَي nRF52840 DK.

إنشاء البرامج الثابتة nRF52840 DK

اتبع التعليمات لإنشاء نسخة طبق الأصل من المشروع وإنشاء البرامج الثابتة nRF52840.

$ mkdir -p ~/src
$ cd ~/src
$ git clone --recurse-submodules --depth 1 https://github.com/openthread/ot-nrf528xx.git
$ cd ot-nrf528xx/
$ script/build nrf52840 USB_trans -DOT_MLR=ON -DOT_THREAD_VERSION=1.2
$ arm-none-eabi-objcopy -O ihex build/bin/ot-cli-ftd ot-cli-ftd.hex

يمكنك العثور على البرامج الثابتة HEX التي تم إنشاؤها بنجاح على ot-cli-ftd.hex.

Flash nRF52840 DK البرامج الثابتة

ضَع البرامج الثابتة على nRF52840 DK باستخدام nrfjprog، علمًا بأنّ هذه الأداة جزء من أدوات سطر الأوامر nRF.

$ nrfjprog -f nrf52 --chiperase --program ot-cli-ftd.hex --reset

4. إرفاق أجهزة سلسلة محادثات بشبكة سلسلة المحادثات

أنشأ OTBR شبكة سلاسل محادثات في الخطوات السابقة. يمكننا الآن إضافة nRF52840 DKs إلى شبكة سلاسل المحادثات:

الحصول على مجموعة بيانات نشطة من شركة OTBR:

$ sudo ot-ctl dataset active -x
0e080000000000000000000300000b35060004001fffc00208dead00beef00cafe0708fddead00beef00000510e50d3d0931b3430a59c261c684585a07030a4f70656e54687265616401022715041021cf5e5f1d80d2258d5cfd43416525e90c0302a0ff

الاتصال بلوحة nRF52840 DK:

$ screen /dev/ttyACM0 115200

اضبط مجموعة البيانات النشطة لـ nRF52840 DK:

> dataset set active 0e080000000000000000000300000b35060004001fffc00208dead00beef00cafe0708fddead00beef00000510e50d3d0931b3430a59c261c684585a07030a4f70656e54687265616401022715041021cf5e5f1d80d2258d5cfd43416525e90c0302a0ff
Done

شغّل حزمة سلاسل المحادثات وانتظر بضع ثوانٍ وتحقق من إرفاق الجهاز بنجاح:

> ifconfig up
Done
> thread start
Done
> state
child

كرِّر الخطوات السابقة لإرفاق لوحة nRF52840 DK الأخرى بشبكة سلسلة المحادثات.

لقد تم إعداد شبكة سلسلة المحادثات بنجاح باستخدام 3 أجهزة سلاسل: OTBR واثنان من لوحات nRF52840 DK.

5. إعداد شبكة Wi-Fi

يجب إعداد شبكة Wi-Fi على OTBR والكمبيوتر المحمول حتى تكون متصلة بشبكة Wi-Fi نفسها.

يمكننا استخدام raspi-config لإعداد معرّف SSID لشبكة Wi-Fi وعبارة المرور على Raspberry Pi OTBR.

في ما يلي عرض مخطط الشبكة النهائي:

5d0f36fd69ebcc9a.png

6. الاشتراك في عنوان البث المتعدد لبروتوكول IPv6

الاشتراك في ff05::abcd على nRF52840 الجهاز النهائي 1:

> ipmaddr add ff05::abcd
Done

تحقَّق من الاشتراك في ff05::abcd بنجاح:

> ipmaddr
ff33:40:fdde:ad00:beef:0:0:1
ff32:40:fdde:ad00:beef:0:0:1
ff05:0:0:0:0:0:0:abcd            <--- ff05::abcd subscribed
ff02:0:0:0:0:0:0:2
ff03:0:0:0:0:0:0:2
ff02:0:0:0:0:0:0:1
ff03:0:0:0:0:0:0:1
ff03:0:0:0:0:0:0:fc
Done

الاشتراك في ff05::abcd على الكمبيوتر المحمول:

نحتاج إلى نص برمجي في Pythonsubscribe6.py للاشتراك في عنوان بث متعدد على الكمبيوتر المحمول.

انسخ الرمز أدناه واحفظه باسم subscribe6.py:

import ctypes
import ctypes.util
import socket
import struct
import sys

libc = ctypes.CDLL(ctypes.util.find_library('c'))
ifname, group = sys.argv[1:]
addrinfo = socket.getaddrinfo(group, None)[0]
assert addrinfo[0] == socket.AF_INET6
s = socket.socket(addrinfo[0], socket.SOCK_DGRAM)
group_bin = socket.inet_pton(addrinfo[0], addrinfo[4][0])
interface_index = libc.if_nametoindex(ifname.encode('ascii'))
mreq = group_bin + struct.pack('@I', interface_index)
s.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_JOIN_GROUP, mreq)
print("Subscribed %s on interface %s." % (group, ifname))
input('Press ENTER to quit.')

شغِّل تطبيق subscribe6.py للاشتراك في ff05::abcd على واجهة شبكة Wi-Fi (مثل wlan0):

$ sudo python3 subscribe6.py wlan0 ff05::abcd
Subscribed ff05::abcd on interface wlan0.
Press ENTER to quit.

في ما يلي عرض مخطط الشبكة النهائي الذي يتضمن اشتراكات البث المتعدد:

b118448c98b2d583.png

الآن بعد الاشتراك في عنوان البث المتعدد IPv6 على كل من nRF52840 End Device 1 في شبكة Thread وLaptop في شبكة Wi-Fi، سنتحقّق من إمكانية الوصول المتعدد البث IPv6 ثنائي الاتجاه في الأقسام التالية.

7- التحقق من الإرسال المتعدد لبروتوكول IPv6 الوارد

من المفترض أن نتمكّن الآن من الوصول إلى كل من جهاز nRF52840 End Device 1 في شبكة سلسلة المحادثات والكمبيوتر المحمول باستخدام عنوان البث المتعدد IPv6 ff05::abcd من شبكة Wi-Fi.

فحص اتصال ff05::abcd على OTBR عبر واجهة Wi-Fi:

$ ping -6 -b -t 5 -I wlan0 ff05::abcd
PING ff05::abcd(ff05::abcd) from 2401:fa00:41:801:83c1:a67:ae22:5346 wlan0: 56 data bytes
64 bytes from fdb5:8d36:6af9:7669:e43b:8e1b:6f2a:b8fa: icmp_seq=1 ttl=64 time=57.4 ms
64 bytes from 2401:fa00:41:801:8c09:1765:4ba8:48e8: icmp_seq=1 ttl=64 time=84.9 ms (DUP!)
64 bytes from fdb5:8d36:6af9:7669:e43b:8e1b:6f2a:b8fa: icmp_seq=2 ttl=64 time=54.8 ms
64 bytes from 2401:fa00:41:801:8c09:1765:4ba8:48e8: icmp_seq=2 ttl=64 time=319 ms (DUP!)
64 bytes from fdb5:8d36:6af9:7669:e43b:8e1b:6f2a:b8fa: icmp_seq=3 ttl=64 time=57.5 ms
64 bytes from 2401:fa00:41:801:8c09:1765:4ba8:48e8: icmp_seq=3 ttl=64 time=239 ms (DUP!)

يمكننا ملاحظة أنّ OTBR يمكنه تلقّي ردّين من nRF52840 End Device 1 والكمبيوتر المحمول لأنّ كلاكما قد اشتركا في ff05::abcd. يوضّح ذلك أنّه يمكن لـ OTBR إعادة توجيه حِزم الإرسال المتعدد لبروتوكول IPv6 من شبكة Wi-Fi إلى شبكة سلسلة المحادثات.

8- التحقّق من إرسال بث IP6 الصادر

Ping ff05::abcd على nRF52840 End Device 2:

$ ping ff05::abcd 100 10 1
108 bytes from fdb5:8d36:6af9:7669:e43b:8e1b:6f2a:b8fa: icmp_seq=12 hlim=64 time=297ms
108 bytes from 2401:fa00:41:801:64cb:6305:7c3a:d704: icmp_seq=12 hlim=63 time=432ms
108 bytes from fdb5:8d36:6af9:7669:e43b:8e1b:6f2a:b8fa: icmp_seq=13 hlim=64 time=193ms
108 bytes from 2401:fa00:41:801:64cb:6305:7c3a:d704: icmp_seq=13 hlim=63 time=306ms
108 bytes from fdb5:8d36:6af9:7669:e43b:8e1b:6f2a:b8fa: icmp_seq=14 hlim=64 time=230ms
108 bytes from 2401:fa00:41:801:64cb:6305:7c3a:d704: icmp_seq=14 hlim=63 time=279ms

بإمكان جهاز nRF52840 End 2 استلام ردود أداة فحص الاتصال من كل من الجهاز nRF52840 End و1 للكمبيوتر المحمول. يوضّح ذلك أنّه يمكن لـ OTBR إعادة توجيه حِزم البث المتعدّد الاتصالات لبروتوكول IPv6 عبر الردّ التلقائي من شبكة سلاسل المحادثات إلى شبكة Wi-Fi.

9- تهانينا

تهانينا، لقد نجحت في إعداد جهاز توجيه حد سلسلة المحادثات والبث المتعدد الاتجاه IPv6 الذي تم التحقق منه.

لمعرفة المزيد عن سلسلة المحادثات، افتح openthread.io.

المستندات المرجعية: