Google is committed to advancing racial equity for Black communities. See how.
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

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

608c4c35050eb280.png

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

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

ما هو OpenThread؟

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

ما هو موجه OpenThread Border؟

OpenThread Border Router (OTBR) الذي أصدرته Google هو تطبيق مفتوح المصدر لـ Thread Border Router.

الموضوع 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 .
  • تم تمكين Wi-Fi AP بدون حماية إعلان IPv6 Router على جهاز التوجيه.
  • Linux / macOS Laptop (يعمل Raspberry Pi أيضًا) مع تثبيت Python3.

اتبع موجه حدود الخيط - اتصال IPv6 ثنائي الاتجاه ومعمل كود اكتشاف الخدمة المستندة إلى DNS لإعداد موجه حدود الموضوع على 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

قم ببناء تطبيق 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 UART_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 ، وهو جزء من أدوات سطر أوامر nRF .

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

قامت 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.

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

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

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

5d0f36fd69ebcc9a.png

اشترك في 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 ثنائي الاتجاه في الأقسام التالية.

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

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.

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

لمزيد من المعلومات حول OpenThread ، قم بزيارة openthread.io .

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