Mi nombre es Ariel Heredia, soy estudiante de la Carrera de ingeniería en Telecomunicaciones en la Universidad Técnica del Norte (Ibarra - Ecuador). Este proyecto forma parte de la consolidación de los conocimientos adquiridos en el curso de Internet de las Cosas (IoT) y busca brindar un aporte al público en general con respecto al uso de laboratorios de pruebas como FIT - IoT LAB, para establecer una topología IPv6 con dispositivos IoT (OpenMote B) que incluye router de borde. Se muestra el procedimiento necesario para llevar a cabo esta actividad y al final se presenta un vídeo demostrativo acerca de todo este tutorial.
CREAR NUEVO EXPERIMENTOPara realizar este proceso, se asume que ya se ha creado la cuenta en FIT IOT-LAB y se ha configurado el acceso al frontend SSH. En caso de no haberlo hecho, se recomienda seguir este tutorial.
En el panel principal de IoT-LAB, se debe seleccionar Nuevo Experimento
Luego se debe configurar el apartado del horario, en el que se establece el nombre del experimento, la duración requerida y si se desea un inicio inmediato o programado, en este caso se requiere que empiece de inmediato.
En el apartado de Nodos, se eligen en la localidad de Strasbourg tres nodos OpenMote B (1 será router de borde y los otros dos serán nodos convencionales), los cuales son compatibles con el sistema operativo RIOT OS. Se añaden al experimento.
Se valida que los nodos estén agregados. Es importante tener en cuenta que aún no se ha compilado el firmware para ninguna de las placas elegidas, por lo que al momento de querer iniciar el experimento se van a tener los nodos sin funcionar, razón por la cual se debe hacer previamente el proceso de compilación de los programas.
Primero se debe conectar al servidor SSH de IoT-LAB en la región de Strasbourg. Esto se lo hace desde el Linux donde se generó la clave que al momento está almacenada en las configuraciones de usuario de FIT IOT-LAB.
ssh <login>@strasbourg.iot-lab.info
Una vez dentro, se ingresa al directorio de ejemplos de RIOT, para esto se debe haber compilado previamente este sistema operativo.
$ git clone https://github.com/iot-lab/iot-lab.git
$ make
$ make setup-riot
$ cd iot-lab/parts/RIOT/examples
El ejemplo que se va a utilizar es el gnrc_border_router
$ cd gnrc_border_router
Se procede a cargar la versión requerida de GNU ARM embedded toolchain en el entorno actual. Este paso se debe realizar cada vez que se vaya a construir un firmware RIOT en el frontend SSH de IoT-LAB, dado que este OS requiere una versión de arm gcc 7 o posterior.
$ source /opt/riot.source
El nodo predefinido para el router de borde (y para los demás nodos) es el Openmote-B, este requiere de una velocidad de símbolo de 115200 baudios para establecer la comunicación serial. El testbed también sugiere que el canal sea especificado y que sea distinto al canal por defecto.
$ make ETHOS_BAUDRATE=115200 DEFAULT_SUBGHZ_CHANNEL=0 BOARD=openmote-b clean all
Una vez compilado, se ha generado un fichero con extensión .elf que deberá ser importado al almacenamiento local, con la finalidad de poder usar el archivo para cargarlo en el experimento posteriormente. Se puede usar el comando scp para lograrlo.
$ scp <login>@strasbourg.iot-lab.info:/senslab/users/<login>/iot-lab/parts/RIOT/examples/gnrc_border_router/bin/openmote-b/gnrc_border_router.elf /home/<local-user>/Descargas/openmoteb-border-router.elf
OBTENER Y COMPILAR FIRMWARE PARA EL RESTO DE NODOSPara los otros dos nodos de la red, se requiere compilar el ejemplo gnrc_networking. Se especifica el mismo canal que en el router de borde
$ cd iot-lab/parts/RIOT/examples/gnrc_networking
$ source /opt/riot.source
$ make DEFAULT_SUBGHZ_CHANNEL=0 BOARD=openmote-b clean all
El archivo .elf también debe ser descargado al almacenamiento local.
PONIENDO EN MARCHA EL EXPERIMENTOYa con los ficheros de firmware a disposición, se da inicio al experimento que quedó pendiente en el dashboard de FIT IOT-LAB
Se debe esperar a que el estado del experimento pase a Running y que los nodos hayan sido desplegados con éxito.
Se empieza configurando el router de borde, que en este caso es el openmote-16.strasbourg.iot-lab-info. Así que primero se flashea (desde el dashboard) el firmware para este dispositivo, se recomienda no abrir la consola desde FIT depués de este proceso.
A continuación, se regresa al frontend SSH y desde allí se ejecuta el script ethos_uhcpd.py, al cual hay que especificar el nodo, la interfaz y el prefijo de red IPv6 que va a propagar el router de borde. Puede consultar el rango de prefijos disponibles para cada localidad en este enlace.
$ # syntax: sudo ethos_uhcpd.py <node-id> tap<id> <ipv6-prefix>
$ sudo ethos_uhcpd.py openmoteb-16 tap0 2a07:2e40:fffe:00ff::/64
Luego de ejecutar el script, se tendrá una salida similar a la siguiente (se tiene ya la consola del openmote-16.strasbourg.iot-lab.info):
En caso de errores por recursos ocupados, puede cambiar el número de la interfaz tap o, a su vez, variar el prefijo de red dentro del rango permitido. Ahora es momento de flashear el firmware para los otros nodos (openmote-36.strasbourg.iot-lab.info y openmote-39.strasbourg.iot-lab.info).
Abriendo la consola de estos dos dispositivos desde el dashboard de FIT IOT-LAB se obtendrá:
main(): This is RIOT! (Version: 2022.01)
RIOT network stack example application
All up, running the shell now
>
Desde este momento ya se deben tener todos los dispositivos con dirección IPv6 global además de la link local. Para verificarlo se ejecuta el comando ifconfig en cada consola.
Para el nodo 1 se tiene el siguiente direccionamiento:
Para el nodo 2 las direcciones de red son las siguientes:
Ya una vez asignadas las direcciones IPv6 globales, es momento de verificar la conectividad entre los 3 nodos:
- Desde el nodo openmote36-strasbourg.iot-lab.info (nodo 1)
- Desde el nodo openmote39-strasbourg.iot-lab.info (nodo 2)
- Desde el nodo openmote16-strasbourg.iot-lab.info (router de borde)
Con esto ha finalizado el levntamiento de esta red. En algunos casos es posible acceder a otras direcciones IPv6 como las de los DNS de Google; sin embargo, esto se limita a que el ISP maneje este tipo de direcciones.
Comments
Please log in or sign up to comment.