Запуск сети 6LoWPAN на практике

О ячеистых сетях и в частности 6LoWPAN, как открытой реализации технологии, последнее время говорят многие. Однако, на практике законченного алгоритма развёртывания такой сети практически представлено не было. В данной статье мы представим его.

Данная инструкция была создана на базе нескольких инструкций представленных в интернете, однако, они являются не полными и не точными на момент проведения эксперимента, поэтому был произведён ряд доработок и  в текущем виде данная инструкция представляет собой практически законченное решение.

Запуск будем производить на следующем оборудовании:

  • BeagleBone Black — шлюз между сетями 6LoWPAN и Ethernet,
  • CC1310DK — состоит из 2 плат, одна из которых будет является мостом UART-Radio (868 МГц), а вторая конечным узлом в сети 6LoWPAN. При желании количество таких плат можно увеличить, добавив тем самым дополнительные узлы в сеть. Алгоритм будет тем же самым.

Стоит отметить, что в настоящий момент TI предоставляет новый отладочный набор, который также может быть использован в данном эксперименте — LaunchPad на СС1310 LaunchXL-CC1310, т.к. эти отладочные комплекты значительно дешевле и компактнее, чем описываемые в данной статье. Однако, они пока не доступны для ввоза на территорию ЕС и РФ из-за процедуры прохождения .

Рассмотрим схему сети на которой будем проводить эксперимент. Кроме непосредственно самого граничного роутера, и конечных узлов нам понадобится также роутер с выходом в интернет и компьютер на котором будут проводиться операции по сборке, прошивке и конфигурации системы в целом.

6lbr-example1-a
Структурная схема сети

Первоначально необходимо подключить BeagleBone Black (в дальнейшем BBB) к сети и обновить его. BBB из коробки кроме адреса полученного от DHCP сервера в сети (зачастую работающего на роутере) отвечает и на адрес 192.168.7.2, поэтому будем работать через него. Для подключения используется стандартный SSH, в Unix системах он встроен, а под Windows можно использовать, например, PuTTY. Для конфигурации будем использовать суперпользователя, из коробки он идёт без пароля.

#connect to [BBB]
ssh 192.168.7.2
#user: root
#password: without password

Необходимо обновить BBB до актуального состояния, т.к. они зачастую они долго лежат на складах и успевают устареть. Отмечу, что ранее использовался другой дистрибутив Linux Angstrom, сейчас же по умолчанию идёт гораздо более распространённый Debian. Однако, до сих пор во многих описаниях указывается старый вариант. Что может вызвать некоторые проблемы у начинающих пользователей, или же тех, кто не имеет опыта работы с Linux. Перед обновлением необходимо проверить корректность даты в системе, т.к. это может вызвать проблемы при подключении и получении обновлений из репозитариев.

#check date
date
#update if required
sudo ntpdate pool.ntp.org

#update Debian style
apt-get update

После обновления системы можно устанавливать требуемые пакеты. На самом BBB будет крутиться только 6lbr. Указанные команды позволяют получить актуальные версии на момент проведения эксперимента. Однако, к моменту прочтения статьи вполне возможно, что выйдут и более новые сборки. Проверить их можно на github (в свете новых событий в РФ может быть актуальна статья по организации к Gitbub из РФ).

# Install bridge-utils (6lbr)
apt-get install bridge-utils

# download binaries for BBB
# check last release at https://github.com/cetic/6lbr/wiki/Releases
wget https://raw.github.com/wiki/cetic/6lbr/releases/bb/cetic-6lbr_1.3.3_armhf.deb

# install it
dpkg -i cetic-6lbr_1.3.3_armhf.deb

В дальнейшем необходимо подготовить прошивки для отладочных плат (радио-устройств). Исходные коды 6LoWPAN в настоящий момент входят в Contiki OS. Последняя по умолчанию имеет несколько необычный формат распространения — образ для виртуальной машины. Преимуществом такого подхода является законченная конфигурация готовая к работе практически из коробки. Необходимо скачать последнюю версию дистрибутива Contiki OS и саму виртуальную машину VMWare, для наших целей достаточно VMWare player. Следующие действия необходимо выполнять внутри Contiki OS запущенной на виртуальной машине.

Обновляем систему:

#Install the following prerequisites (assuming an Ubuntu 15.04 build machine):
# as I seen in log it’s not really needed because they are already present
sudo apt-get install gcc-arm-none-eabi
sudo apt-get install git

Собираем прошивку для SLIP:

#Build SLIP-radio.bin Firmware
#Next, obtain a copy of Contiki-OS
git clone —recursive https://github.com/contiki-os/contiki.git my-contiki

#build the slip-radio binary
cd my-contiki/examples/ipv6/slip-radio
make clean
make TARGET=srf06-cc26xx BOARD=srf06/cc13xx slip-radio.bin

Отмечу, что для доступа к github необходимо зарегистрировать через web-интерфейс.

Для случая запуска на других отладочных платах, в частности на Launchpad СС1310 описанных выше, необходимо будет скорректировать последнюю команду.

Аналогичным образом собирается прошивка для хостов в сети 6LoWPAN, необходимо использовать проект в папке examples/cc26xx/cc26xx-web-demo.

Следующим шагом необходимо прошить готовый скомпилированный файл в отладочную плату. Для этого необходимо скопировать slip-radio.bin из виртуальной машины в материнскую ОС (запущенную на компьютере). Благодаря расширениям виртуальной машины можно просто перетащить файлы из одной ОС в другую. Чтобы прошить отладочную плату можно использовать SmartRF Flash Programmer 2.

Альтернативным вариантом является установка, настройка CCS и отладчика под гостевой машиной, а также проброска USB внутрь (делается также через расширение виртуальной машины). Однако для наших целей этот путь избыточен и более длинен.

Если СнК не программируется, то возможно потребуется использовать функцию «CC26xx/CC13xx Forced Mass Erase» в SmartRF Flash Programmer 2 принудительно обнуляющую СС1310.

Подключаем отладочную плату с прошитым SLIP к BBB и продолжаем настройку 6lbr, действия необходимо проводить в консоли BBB.

#check configuration
vim /etc/6lbr/6lbr.conf

Содержимое должно быть примерно следующим (для режима роутера в зависимости от версии Contiki OS):

MODE=ROUTER
#MODE=SMART-BRIDGE
#MODE=RPL-RELAY
#MODE=FULL-TRANSPARENT-BRIDGE
#MODE=NDP-ROUTER
#MODE=6LR
#MODE=RPL-ROOT

RAW_ETH=1
BRIDGE=0
DEV_BRIDGE=br0
DEV_TAP=tap0
DEV_ETH=eth0
#RAW_ETH_FCS=1
RAW_ETH_FCS=0

#Check USB enumeration ACMx or USBx (by running lsusb in console)
DEV_RADIO=/dev/ttyACM0
#DEV_RADIO=/dev/ttyUSB1
BAUDRATE=115200

LOG_LEVEL=3
LOG_6LBR_OUT=/var/log/6lbr.log

После обновления конфигурации необходимо перезагрузить систему. После перезагрузки системы проверяем USB-устройства, если они сразу не были найдены:

#reset and scan USB devices (if it’s not found)
/usr/lib/6lbr/bb-scan-usb.sh

Скорее всего понадобится настроить правила для USB-устройств при их подключении к BBB. Для этого будем использовать стандартную заготовку от beagleboard, скорректировав (или скопировав) соответствующую строку в ней на соответствующий идентификатор отладочной платы. Было замечено в некоторых новых ревизиях PID заменён с a6d0 на  a6d1. Точное наименование VID и PID подключённых устройств в системе можно получить запустив команду lsusb в консоли.

#download rules for FTDI
wget http://beagleboard.org/static/Drivers/Linux/FTDI/mkudevrule.sh
# run script for make rules
sh ./mkudevrule.sh

#correct device id into correct number (get it by lsusb) a6d0 -> a6d1
vim /etc/udev/rules.d/73-beaglebone.rules

Проверяем что сервер работает. Первоначально в консоли:

#check current configuration into NVM
/usr/lib/6lbr/bin/nvm_tool —print /etc/6lbr/nvm.dat

Если что-то пойдёт не так, то ошибки можно отловить в логах

#Now server side must working!!!
#if not please check log and errors in style like this:

cat /var/log/6lbr.log
cat /var/log/6lbr.err

Теперь проверим, что система функционирует и можем получить доступ к устройству в сети 6LoWPAN с обычного ПК. Если в системе настроен IPv6, то можно  воспользоваться обычным ping’ом. Однако, мы пойдём дальше. В 6lbr по умолчанию встроен web-браузер доступный по ссылке http://[bbbb::100]. Из интересных особенностей можно отметить карту подключённых узлов (структуру сети) 6LoWPAN доступную на вкладке Sensors.

6lbr-web
Структура сети 6LoWPAN для случая 2 устройств

Для доступа к конечным узлам сети воспользуемся расширением Copper (Cu) для Firefox. Последний позволяет в удобном виде работать с устройствами интернета вещей по протоколу CoAP, в 6LoWPAN он включён по умолчанию. После установки плагина можно будет сразу получить доступ по ссылкам из таблицы. Т.к. 6LoWPAN сеть самоконфигурируемая, то достаточно прошить несколько плат прошивкой cc26xx-web-demo и расположить их в достаточной близости, чтобы устройства подключить к сети. Стандартной прошивке cc26xx-web-demo требуется только питание, управление осуществляется встроенным ядром СС1310, поэтому платы можно расположить где удобно используя батареи AA для чего на обратной стороне отладочных плат есть соответствующие разъёмы.

При подготовке данного материала и проведении были использованы следующие материалы:

Запуск сети 6LoWPAN на практике: Один комментарий

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s