Маршрутизатор bbr служит для чего

Пограничный маршрутизатор потоков — Многоадресная рассылка потоков 1.2

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

1. Введение

608c4c35050eb280.png

Что такое нить?

Thread — это основанный на IP протокол маломощной беспроводной ячеистой сети, который обеспечивает безопасную связь между устройствами и между устройствами и облаком. Сети потоков могут адаптироваться к изменениям топологии, чтобы избежать единичных сбоев.

Погрузитесь глубже: для получения дополнительной информации см. Thread Primer .

Что такое OpenThread?

OpenThread, выпущенный Google, представляет собой реализацию Thread® с открытым исходным кодом.

Что такое пограничный маршрутизатор OpenThread?

OpenThread Border Router (OTBR), выпущенный Google, представляет собой реализацию Thread Border Router с открытым исходным кодом.

Тема 1.2 Многоадресная рассылка

Thread 1.2 определяет ряд функций для поддержки многоадресной рассылки в гетерогенной сети (сегменты Thread и Wi-Fi/Ethernet Network) для многоадресных адресов с областью действия, превышающей локальную область.

Пограничный маршрутизатор потока 1.2 регистрирует свой набор данных магистрального маршрутизатора (BBR), а выбранная служба BBR является основным магистральным маршрутизатором (PBBR), который отвечает за многоадресную входящую/исходящую переадресацию.

Устройство потока 1.2 отправляет сообщение CoAP для регистрации адреса многоадресной рассылки в PBBR (регистрация прослушивателя многоадресной рассылки, сокращенно MLR), если адрес больше, чем локальный в области. PBBR использует MLDv2 на своем внешнем интерфейсе для связи с более широкой сетью IPv6 LAN/WAN о группах многоадресной рассылки IPv6, которые ему необходимо прослушивать, от имени своей локальной сети потоков. И PBBR перенаправляет многоадресный трафик в сеть потоков только в том случае, если пункт назначения подписан хотя бы одним устройством потока.

Для минимальных конечных устройств с потоком 1.2 они могут зависеть от своего родителя, чтобы агрегировать многоадресный адрес и выполнять MLR от их имени, или зарегистрироваться, если их родитель относится к потоку 1.1.

Дополнительные сведения см. в разделе 5.24 «Многоадресная переадресация» спецификации Thread 1.2 для областей, превышающих локальную область .

Что вы будете строить

В этой лаборатории кода вы собираетесь настроить маршрутизатор Thread Border Router и два устройства Thread, а затем включить и проверить функции многоадресной рассылки на устройствах Thread и устройствах Wi-Fi.

Читайте также:  Роутер сам сменил пароль

Чему вы научитесь

  • Как собрать прошивку nRF52840 с функциями многоадресной рассылки Thread 1.2.
  • Как подписаться на многоадресные IPv6-адреса на устройствах Thread.

Что тебе понадобится

  • Устройство Raspberry Pi 3/4 и SD-карта емкостью не менее 8 ГБ.
  • 3 платы Nordic Semiconductor nRF52840 DK .
  • Точка доступа Wi-Fi без включенного на маршрутизаторе IPv6 Router Advertisement Guard .
  • Ноутбук Linux/macOS (также работает Raspberry Pi) с установленным Python3.

2. Настройка ОТБР

Следуйте лабораторной программе Thread Border Router — двунаправленное подключение IPv6 и обнаружение сервисов на основе DNS, чтобы настроить Thread Border Router на Raspberry Pi.

По завершении Raspberry Pi должен был создать рабочую сеть Thread и подключиться к сети 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

Набор данных BBR показывает, что OTBR стал основным магистральным маршрутизатором (PBBR):

  • server16 — это RLOC16 PBBR.
  • seqno — случайно сгенерированный порядковый номер BBR. PBBR может изменить seqno, чтобы вызвать перерегистрацию.
  • delay — это значение задержки регистрации, на которое устройства Thread должны задержаться перед повторной регистрацией.
  • timeout — это продолжительность по умолчанию в секундах, в течение которой регистрация прослушивателя многоадресной рассылки (MLR) остается действительной. Потоковые устройства будут автоматически обновлять свои регистрации MLR до истечения срока действия, если они все еще подписаны на многоадресный адрес.

Дополнительные сведения о настройке набора данных BBR см. в справочнике по интерфейсу командной строки OpenThread .

3. Сборка и прошивка устройств Thread

Создайте приложение CLI Thread 1.2 с многоадресной рассылкой и прошейте две платы 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 , который является частью инструментов командной строки nRF .

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

СОВЕТ. Дополнительные сведения см. в примере OpenThread на nRF52840 .

4. Подключите устройства Thread к сети Thread

OTBR создал сеть потоков на предыдущих шагах. Теперь мы можем добавить DK nRF52840 в сеть Thread:

Читайте также:  4g wifi роутер аккумуляторный

Получите необработанный активный набор данных из OTBR:

$ sudo ot-ctl dataset active -x 0e080000000000000000000300000b35060004001fffc00208dead00beef00cafe0708fddead00beef00000510e50d3d0931b3430a59c261c684585a07030a4f70656e54687265616401022715041021cf5e5f1d80d2258d5cfd43416525e90c0302a0ff

Подключитесь к плате nRF52840 DK:

Настройте активный набор данных для nRF52840 DK:

> dataset set active 0e080000000000000000000300000b35060004001fffc00208dead00beef00cafe0708fddead00beef00000510e50d3d0931b3430a59c261c684585a07030a4f70656e54687265616401022715041021cf5e5f1d80d2258d5cfd43416525e90c0302a0ff Done

Запустите стек потоков и подождите несколько секунд, чтобы убедиться, что устройство успешно подключено:

> ifconfig up Done > thread start Done > state child

Повторите описанные выше шаги, чтобы подключить другую плату nRF52840 DK к сети Thread.

Теперь мы успешно настроили сеть Thread с тремя устройствами Thread: OTBR и двумя платами nRF52840 DK.

5. Настройте сеть Wi-Fi

Настройте сеть Wi-Fi на OTBR и ноутбуке, чтобы они были подключены к одной и той же точке доступа Wi-Fi.

Мы можем использовать raspi-config для настройки SSID и парольной фразы Wi-Fi на Raspberry Pi OTBR.

Окончательная топология сети показана ниже:

5d0f36fd69ebcc9a.png

ПРИМЕЧАНИЕ. Начиная с этого шага, два DK nRF52840 используются для разных целей. Одно из них мы называем конечным устройством 1 nRF52840, а другое — конечным устройством 2 nRF52840.

6. Подпишитесь на многоадресный адрес IPv6.

ПРИМЕЧАНИЕ. В этой лаборатории кода используется многоадресный IPv6-адрес ff05::abcd , но любой многоадресный IPv6-адрес с областью действия >= Admin-local scope (4) также будет работать.

Подпишитесь на ff05::abcd на конечном устройстве 1 nRF52840:

> 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 на ноутбуке:

Нам нужен скрипт Python 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 на сетевом интерфейсе Wi-Fi (например, wlan0):

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

ПРИМЕЧАНИЕ. Если вы нажмете ENTER, подписка закончится.

Окончательная топология сети с многоадресными подписками показана ниже:

b118448c98b2d583.png

Теперь, когда мы подписали адрес многоадресной рассылки IPv6 как на конечном устройстве nRF52840 1 в сети Thread, так и на ноутбуке в сети Wi-Fi, мы собираемся проверить доступность двунаправленной многоадресной рассылки IPv6 в следующих разделах.

7. Проверка входящей многоадресной рассылки IPv6

Теперь мы должны иметь возможность связаться как с конечным устройством 1 nRF52840 в сети Thread, так и с ноутбуком, используя многоадресный 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!) # If using MacOS, use this command. The interface is typically not "wlan0" for Mac. $ ping6 -h 5 -I wlan0 ff05::abcd

Мы видим, что OTBR может получить два ответа на эхо-запрос как от конечного устройства 1 nRF52840, так и от ноутбука, потому что они оба подписаны на ff05::abcd . Это показывает, что OTBR может пересылать многоадресные пакеты IPv6 Ping Request из сети Wi-Fi в сеть Thread.

ПРИМЕЧАНИЕ. Нам нужно использовать -t ttl чтобы установить время жизни IP, которое по умолчанию равно 1 в Linux, иначе многоадресный эхо-запрос не сможет достичь конечного устройства 1 nRF52840.

ПРИМЕЧАНИЕ: ip -6 mroute show table all — полезный инструмент для просмотра активных групп многоадресной рассылки на хосте Linux и их интерфейсов ввода/вывода.

8. Проверка исходящей многоадресной рассылки IPv6

Пинг ff05::abcd на конечном устройстве 2 nRF52840:

> 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

Конечное устройство 2 nRF52840 может получать ответы на эхо-запросы как от конечного устройства 1 nRF52840, так и от ноутбука. Это показывает, что OTBR может пересылать многоадресные пакеты IPv6 Ping Reply из сети Thread в сеть Wi-Fi.

ПРИМЕЧАНИЕ. Мы полагаемся на пограничную маршрутизацию OTBR для пересылки одноадресных ответов на эхо-запросы.

9. Поздравления

Поздравляем, вы успешно настроили пограничный маршрутизатор потоков и проверили двунаправленную многоадресную рассылку IPv6!

Чтобы узнать больше об OpenThread, посетите openthread.io .

Если не указано иное, контент на этой странице предоставляется по лицензии Creative Commons "С указанием авторства 4.0", а примеры кода – по лицензии Apache 2.0. Подробнее об этом написано в правилах сайта. Java – это зарегистрированный товарный знак корпорации Oracle и ее аффилированных лиц. Thread – это зарегистрированный товарный знак компании Thread Group, Inc.

Источник

Оцените статью
Adblock
detector