Redes MESH: The Serval project

Antes (el siglo pasado) se hablaba de "red de computadores y ordenadores en red" ahora se habla de "dispositivos conectados a la red". Parece un matiz mínimo pero es importante: no es lo mismo ser parte de una red (parte integrante y usuario a la vez de la misma) que ser un cliente de una red de uno o varios proveedores.

Las redes tipo MESH (redundantemente traducido como "red en malla") son redes donde los elementos conectados a la misma se comunican entre sí y, además, actúan como intermediarios para las comunicaciones de los demás elementos. Cada usuario de una red MESH ayuda a que funcione la red, además de usar la red para beneficio propio. Si la red son los usuarios no hace falta que exista un "proveedor de red" que preste servicios de comunicaciones.

He recordado todo esto por dos referencias recientes: Marcos Eguilor (@marcoseguillor) comentó en twitter el proyecto Serval y su colaboración con la Cruz Roja de Nueva Zelanda; y unos días después, todavía en mis vacaciones, Marta Peirano (@minipetite) publicó un artículo titulado "Operación: resetear la Red" donde comentaba el concepto de redes MESH y el proyecto Serval (http://www.servalproject.org/), otra vez.

Serval Project se presenta como una solución de comunicación para situaciones de emergencia donde las redes móviles han dejado de funcionar (desastres naturales) o no han funcionado nunca (zonas sin cobertura donde se instala un campo de refugiados, por ejemplo). Muy cuidadosamente, los creadores evitan mencionar otras situaciones donde también sería de utilidad: grupos de personas que no quieren usar las redes comerciales para evitar pagar por el servicio o para esquivar "supuestos" intentos de espionaje o censura.

Así que instalé la app de Serval Project en varios móviles que tenía por casa y la he probado de forma somera este fin de semana.

Resumen "resumido"
La app es gratuita, está en Google Play como "The Serval Mesh". Sólo hay versión para Android. Su estado actual es el de prueba de concepto, muy interesante pero poco utilizable en la práctica.
Funcionalmente, esta aplicación es casi perfecta. Permite hacer llamadas de voz entre los móviles de la red, mandar mensajes, transferir archivos, localizar los móviles conectados a la red, utilizar los números de móvil originales como identificador, ... incluso permite instalar la app desde los móviles que la tienen a otros que no (por ejemplo, usando bluetooth).
La instalación, puesta en marcha y configuración inicial es tan sencilla como cualquier app. Yo lo he instalado en todo lo que tenía a mano y sin problemas: Sony Xperia Arc, Sony Xperia Neo V, Sony Xperia L (sí, mi marca de smarthpones preferida es Sony), Samsung Galaxy Ace GS-S5830, Asus Fonepad. Sólo uno de los móviles estaba rooteado, lo cual es necesario para establecer conexiones ad-hoc. Si no es así, hay que habilitar hotspots en algunos de los terminales para que el sistema funcione.
La usabilidad es adecuada con notificaciones para mensajes, acceso a la agenda propia, buena calidad de voz, etc.
Pero la utilización en la práctica es inviable. En un entorno urbano con 30 redes WIFI en nuestro rango, el alcance se limita a 100 metros con mucho optimismo y visión directa. Dentro de casa la comunicación se mantiene hasta 20 o 30 metros si tienes dos paredes por el medio como máximo. Además, si el teléfono no está "rooteado" se configura un hotspot móvil sin seguridad lo que convertiría el móvil en un punto de acceso gratuito a Internet sin control.
El único uso práctico real que se me ocurre de la versión actual es en concentraciones donde los usuarios no tienen tarifa móvil de datos ni acceso a Internet por WIFI y quieren chatear e intercambiar mensajes (colegios, conciertos, fiestas, etc.).

Prueba de Serval Project
El objetivo de la prueba era simple: instalar Serval Project en tres móviles y hacer que se comunicaran entre sí sin usar la red móvil.
Bueno, pues prueba conseguida. Aquí se ven como los tres móviles conectados a la red Serval y como cada uno de ellos ha detectado a sus dos "vecinos". Como curiosidad, uno de ellos ni siquiera tiene SIM.



Una vez instalada la app, hay que configurar el móvil. Esto básicamente consiste en definir el número de móvil (el MSISDN) y un alias que se asocian al identificador interno (que llaman sid). Se puede configurar cualquier número pero es práctico usar el número propio porque así los otros miembros que nos tengan en su agenda del móvil podrán usar el mismo número para localizarnos en la red Serval.



Una vez configurado llegamos a la app donde tenemos las opciones principales: llamar, mandar mensajes, consultar contactos en la red, etc.
La opción "maps" (que no he probado) sirve para localizar la ubicación de los otros usuarios de la red usando la información y mapas almacenados entre todos los usuarios de la red MESH (se supone que no hay acceso a Internet ni servidores donde apoyarse).


La opción "Connect" sirve para añadir el dispositivo a la red (y de paso hacer crecer la red con un nodo más). Sin entrar en detalle, podemos arrancar nuestro hotspot, unirnos a un hotspot ya existente ("ap.servalproject.org" se propone por defecto) o usar una red MESH mediante conexiones ad-hoc (esto requiere que el terminal este rooteado o un parche no estándar de Android). Además, aquí se informa del número de dispositivos localizados actualmente en la red ("peers").


Y aquí otras capturas de pantalla que son auto explicativas:





Las redes ad-hoc vs hotspot
Como ya comentaba @minipetite en su artículo, el famoso bug 82 de Android (no soporte de conexiones Wi-Fi ad-hoc) que no es realmente un defecto pone de manifiesto que los terminales Android no están preparados por defecto para implementar redes MESH fácilmente. Para unos es una reivindicación y para los responsables de la plataforma parece una decisión estratégica (no se sabe con qué intenciones).
El resultado de no disponer de conexiones ad-hoc es que Serval Project utiliza paradójicamente configuración HotSpot para implementar redes MESH. Es decir, es necesario que el terminal "levante" un HotSpot para que los demás usuarios se conecten.

Conseguir más cobertura (más distancia entre nodos)
Los smartphones no tienen un gran alcance WIFI (están más "preocupados" por conservar la batería, parece). En mis pruebas he conseguido unos 100 metros de alcance con visión directa en el centro de Madrid. Imagino que en un escenario sin tantas interferencias y sin obstáculos se alcanzan los 170 metros que mencionan los responsables del proyecto (con móviles estándar, frecuencias legales y, por supuesto, versión de Android sin manipular).
Para mejorar la situación hay varias opciones: utilizar frecuencias libres de interferencias, "hackear" los móviles para que transmitan con más potencia o usar "repetidores" como el Mesh Extender (un dispositivo hardware desarrollado dentro del Serval Project que actúa como un nodo de la red MESH con más alcance que los móviles. Es un punto de acceso WIFI con un Arduino y lo han conseguido hacer funcionar a 2 km de distancia en entorno urbano.

Apuntes personales / comentarios

  1. En un trabajo anterior (relacionado con la innovación) propuse un proyecto similar para el mercado corporativo. Descubrí entonces que la idea no gustaba ni a los proveedores de tecnología telco (vendors), ni a los operadores, ni siquiera a los fabricantes de terminales. 
  2. No creo que la idea tenga mucho apoyo de reguladores, por ejemplo a la hora de bloquear bandas de frecuencias para este tipo de servicios. Seguro que a nuestra CMT tampoco le apasiona esta idea.
  3. Una cuestión filosófica: ¿por qué para mandar un simple "Hola, ¿qué haces esta tarde?" desde un móvil a otro dentro de una misma aula hay que pasar por 100 elementos de red, de 8 empresas en 2 continentes diferentes? 
  4. Antes nos decían que los terminales telefónicos eran "tontos" y que los equipos de red eran complejos, caros y costosos (otra redundancia) y que los operadores eran los únicos capaces de albergar "la inteligencia de la comunicación" y hacerla funcionar. Ahora ya sabemos que una red móvil montada con un Raspberry PI y una antena puede soportar GSM, 3G y LTE (35$ de hardware)

Mucho ánimo a la gente del Serval Project, gran proyecto.



</ Redes MESH. The Serval project>