موجه حدود الخيط - الخيط 1.2 الإرسال المتعدد

1 المقدمة

608c4c35050eb280.png

ما هو الموضوع؟

Thread هو بروتوكول شبكة لاسلكية منخفض الطاقة قائم على بروتوكول الإنترنت يتيح إجراء اتصالات آمنة من جهاز إلى جهاز ومن جهاز إلى شبكة سحابية. يمكن لشبكات مؤشر الترابط التكيف مع تغييرات الهيكل لتجنب حالات الفشل أحادية النقطة.

ما هو OpenThread؟

OpenThread التي أطلقتها جوجل هو تنفيذ المصدر المفتوح من Thread®.

ما هو موجه OpenThread Border؟

OpenThread الحدود راوتر (OTBR) التي أطلقتها جوجل هو تنفيذ المصدر المفتوح من الموضوع راوتر الحدود.

الموضوع 1.2 الإرسال المتعدد

يحدد Thread 1.2 سلسلة من الميزات لدعم الإرسال المتعدد عبر شبكة غير متجانسة (قطاعات شبكة Wi-Fi / Ethernet) لعناوين الإرسال المتعدد ذات النطاق الأكبر من النطاق المحلي.

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

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

بالنسبة للأجهزة الطرفية ذات الحد الأدنى من مؤشر ترابط 1.2 ، فقد يعتمدون على والدهم لتجميع عنوان الإرسال المتعدد والقيام بـ MLR نيابة عنهم ، أو تسجيل أنفسهم إذا كان والدهم من Thread 1.1.

لمزيد من التفاصيل، يرجى الرجوع إلى الموضوع 1.2 مواصفات القسم 5.24 المتعدد الشحن للحصول على أكبر نطاق من-عالم المحلي.

ماذا ستبني

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

ماذا ستتعلم

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

ما سوف تحتاجه

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

2. إعداد OTBR

اتبع الموضوع راوتر الحدود - ثنائي الاتجاه الإصدار IPv6 الربط وDNS المستندة إلى اكتشاف خدمة codelab لانشاء الموضوع راوتر الحدود على التوت بي.

عند الانتهاء ، يجب أن يكون 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

قم ببناء تطبيق 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 .

فلاش nRF52840 DK البرامج الثابتة

فلاش البرامج الثابتة على nRF52840 DK باستخدام nrfjprog ، التي هي جزء من أدوات جبهة الخلاص الوطني سطر الأوامر .

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

4. إرفاق أجهزة الموضوع إلى شبكة الموضوع

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

احصل على مجموعة البيانات النشطة الأولية من 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 الأخرى بشبكة الموضوع.

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

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

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

يمكننا استخدام raspi بين التكوين لإعداد واي فاي SSID وعبارة المرور على التوت بي OTBR.

يظهر الشكل النهائي للشبكة أدناه:

5d0f36fd69ebcc9a.png

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

اشترك في ff05 :: abcd على nRF52840 End Device 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 على الكمبيوتر المحمول:

نحن بحاجة إلى بيثون السيناريو subscribe6.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 على واجهة الشبكة واي فاي (على سبيل المثال 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 والكمبيوتر المحمول في شبكة Wi-Fi ، سنقوم بالتحقق من إمكانية الوصول إلى البث المتعدد IPv6 ثنائي الاتجاه في الأقسام التالية.

7. تحقق من الإرسال المتعدد IPv6 الوارد

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

Ping 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 يمكن تلقي ردين ping من كل من جهاز nRF52840 النهاية (1) وأجهزة الكمبيوتر المحمول لأن كلا منهما قد اكتتبت إلى ff05::abcd . يوضح هذا أن OTBR يمكنه إعادة توجيه حزم البث المتعدد IPv6 Ping Request من شبكة Wi-Fi إلى شبكة Thread.

8. تحقق من الإرسال المتعدد IPv6 الصادر

Ping ff05 :: abcd on 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 Device 2 تلقي ردود ping من كل من nRF52840 End Device 1 والكمبيوتر المحمول. يوضح هذا أن OTBR يمكنه إعادة توجيه حزم البث المتعدد IPv6 Ping Reply من شبكة Thread إلى شبكة Wi-Fi.

9. مبروك

تهانينا ، لقد نجحت في إعداد موجه حدود الموضوع والتحقق من البث المتعدد IPv6 ثنائي الاتجاه!

لمعرفة المزيد عن OpenThread، زيارة openthread.io .

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