How do I use a new mesh in Batman advanced?

Crea tu Red Mesh con Batman Advanced

24/03/2010

Valoración: 4.86 (2699 votos)

En el fascinante mundo de las redes, constantemente surgen nuevas tecnologías que buscan revolucionar la forma en que nos conectamos. Una de las más interesantes y potentes en el ámbito de las redes mesh es B.A.T.M.A.N. Advanced (Better Approach To Mobile Adhoc Networking). A diferencia de los sistemas de enrutamiento tradicionales que operan a nivel de IP, batman-adv trabaja en la Capa 2 del modelo OSI, actuando como un gigantesco switch de red virtual y distribuido. Esto lo convierte en una solución increíblemente versátil y eficiente para crear redes descentralizadas, robustas y auto-gestionadas. En esta guía completa, te llevaremos de la mano para que aprendas a configurar, administrar y solucionar problemas en tu propia red mesh con esta poderosa herramienta.

What interfaces can I use with batman-adv?
This can be either wifi devices like wlanX or athX but also common ethernet devices, usually ethX. batman-adv is not limited to a certain interface type, therefore you can use any interface you can find with ‘ip link’ (even pan0 for bluetooth if you like B.A.T.M.A.N. more than the normal, build-in ‘mesh-protocol’ of bluetooth 🙂 ).
Índice de Contenido

¿Qué es Exactamente B.A.T.M.A.N. Advanced?

Para entender su poder, debemos pensar más allá del enrutamiento IP tradicional. Imagina que en lugar de que cada dispositivo necesite una tabla de enrutamiento para saber cómo llegar a otro, todos los nodos de la red se comportan como si estuvieran conectados a un único switch Ethernet. Esto es lo que hace batman-adv. Opera exclusivamente en la capa 2 (la capa de enlace de datos), gestionando directamente las tramas Ethernet.

Esta aproximación tiene ventajas monumentales:

  • Transparencia Total: Al operar en una capa inferior, cualquier protocolo que funcione sobre Ethernet funcionará sobre batman-adv sin modificaciones. Esto incluye IPv4, IPv6, DHCP, e incluso protocolos más antiguos como IPX. Los dispositivos en la red se ven entre sí como si estuvieran en la misma red local, sin importar cuántos "saltos" inalámbricos haya entre ellos.
  • Eficiencia Máxima: Fue implementado como un driver del kernel de Linux. Esto significa que su ejecución es extremadamente rápida y consume muy pocos recursos, a diferencia de soluciones que corren como demonios en el espacio de usuario (como su predecesor, el `batman` original, que usaba paquetes UDP).
  • Flexibilidad de Interfaces: No está atado a una tecnología específica. Puedes construir tu red mesh usando interfaces Wi-Fi, cables Ethernet, conexiones VPN, o cualquier otra cosa que se presente al sistema como una interfaz de estilo Ethernet.

Primeros Pasos: Preparando el Entorno

Antes de sumergirnos en la configuración, asegúrate de que tu sistema Linux tiene el módulo del kernel `batman-adv`. En muchas distribuciones modernas, ya viene incluido. También necesitarás las herramientas de red `iproute2` (que proporciona el comando `ip`) y, muy recomendable, la utilidad `batctl` para una gestión más sencilla.

El primer paso es cargar el módulo en el kernel. Abre una terminal y ejecuta:

$ insmod batman-adv.ko

Si no recibes ningún error, el módulo está cargado y listo para ser configurado. En este punto, no está haciendo nada; simplemente está esperando instrucciones.

Creando tu Red Mesh: Guía Paso a Paso

Ahora viene la parte emocionante. Vamos a crear la red. El proceso se divide en configurar la interfaz virtual de la red mesh y luego agregarle las interfaces físicas que se encargarán de transmitir y recibir los datos.

Paso 1: Crear la Interfaz Virtual Mesh (bat0)

Toda nuestra red mesh será representada en el sistema por una única interfaz de red virtual. Por convención, se le llama bat0. Para crearla, usamos el siguiente comando:

$ ip link add name bat0 type batadv

Al ejecutar `ip link show`, ahora deberías ver una nueva interfaz llamada `bat0`. Esta es la interfaz que usarás para todas las operaciones de red, como asignar una dirección IP.

Paso 2: Añadir Interfaces Físicas al Mesh

Ahora debemos decirle a batman-adv qué hardware debe usar para comunicarse con otros nodos de la red. Estas pueden ser tus tarjetas Wi-Fi (`wlan0`, `ath0`) o tus puertos Ethernet (`eth0`). Es crucial que estas interfaces estén activas (`up`), pero no deben tener una dirección IP asignada. Este es uno de los errores más comunes.

Para añadir una interfaz, por ejemplo `eth0`, al control de `bat0`, ejecuta:

$ ip link set dev eth0 master bat0

Puedes repetir este paso para todas las interfaces que quieras que participen en la red mesh. Si prefieres usar la herramienta `batctl` (lo cual es recomendable), los comandos equivalentes serían:

$ batctl -m bat0 interface add eth0

Para verificar que las interfaces se han añadido correctamente, puedes usar `batctl if`.

Paso 3: Activar y Configurar la Red

Con las interfaces físicas asignadas, es hora de levantar la interfaz `bat0` y darle una dirección IP. Esto se hace de la misma forma que con cualquier otra interfaz de red.

How do I use a new mesh in Batman advanced?
To make use of your newly created mesh, batman advanced provides a new interface "bat0" which you should use from this point on. All interfaces added to batman advanced are not relevant any longer because batman handles them for you.

En el Nodo A:

$ ip link set up dev bat0 $ ip addr add 192.168.10.1/24 dev bat0

En el Nodo B:

$ ip link set up dev bat0 $ ip addr add 192.168.10.2/24 dev bat0

¡Y eso es todo! Ahora, desde el Nodo B, deberías poder hacer ping al Nodo A sin problemas, como si estuvieran conectados por un cable:

$ ping 192.168.10.1

Batman-adv se encargará de forma transparente de encontrar la mejor ruta para que los paquetes lleguen a su destino a través de la red mesh.

Paso 4: Limpieza de Interfaces Físicas (¡Importante!)

Para evitar conflictos y comportamientos inesperados, es fundamental asegurarse de que las interfaces físicas (`eth0`, `wlan0`, etc.) que ahora son parte del mesh no tengan ninguna configuración de IP previa. Puedes limpiar una interfaz con el siguiente comando:

$ ip addr flush dev eth0

Recuerda: toda la configuración de red de Capa 3 (IP) se realiza ahora sobre la interfaz virtual `bat0`.

Administración y Optimización de tu Red

Una vez que la red está funcionando, `batctl` se convierte en tu mejor amigo para la gestión y el ajuste fino.

Gestionando Interfaces

Para quitar una interfaz del mesh, el proceso es el inverso. Usando `iproute2`:

$ ip link set dev eth0 nomaster

O con `batctl`:

$ batctl -m bat0 interface del eth0

Ajustando Parámetros Clave

Batman-adv tiene varios parámetros configurables. Uno de los más importantes es el `orig_interval`, que define cada cuántos milisegundos un nodo envía paquetes de anuncio para mantener la topología de la red actualizada. Puedes consultarlo así:

$ batctl -m bat0 orig_interval

Por defecto, suele ser de 1000 ms (1 segundo). En entornos muy móviles donde los nodos cambian de posición rápidamente, podrías querer reducir este valor para que la red se adapte más rápido, a costa de un mayor tráfico de control:

$ batctl -m bat0 orig_interval 500

Tabla Comparativa: `batman-adv` vs. Enrutamiento IP Tradicional

CaracterísticaB.A.T.M.A.N. AdvancedEnrutamiento IP Tradicional (OSPF, BGP)
Capa de OperaciónCapa 2 (Enlace de Datos)Capa 3 (Red)
Unidad de DatosTramas EthernetPaquetes IP
Configuración de NodosLos nodos se comportan como un switch. IP en interfaz virtual.Cada nodo es un router. IPs en interfaces físicas.
Transparencia de ProtocolosMuy alta (DHCP, ARP, IPv6 funcionan de forma nativa)Limitada, requiere configuraciones adicionales (helpers).
Herramienta Principalbatctlping, traceroute, ip route

Diagnóstico y Solución de Problemas

Cuando algo no funciona, es vital saber dónde mirar. Dado que batman-adv es transparente, las herramientas estándar como `ping` solo te dicen si hay conectividad de extremo a extremo, pero no te informan sobre la salud de la mesh.

El Poder de `batctl`

La herramienta `batctl` fue creada precisamente para llenar este vacío. Ofrece equivalentes de capa 2 para las herramientas más comunes:

  • batctl p [MAC_destino]: Un ping a nivel de capa 2.
  • batctl tr [MAC_destino]: Un traceroute que te muestra los saltos de nodo a nodo dentro de la red mesh.
  • batctl o: Muestra una lista de todos los originadores (nodos) que tu dispositivo puede ver en la red.

Revisando los Logs del Kernel

Batman-adv registra todos sus mensajes importantes, advertencias y errores en el log del kernel. Puedes visualizarlos fácilmente con `dmesg`:

$ dmesg | grep batman-adv

Este es siempre el primer lugar donde debes buscar si una interfaz no se activa o si la red no se forma.

Estadísticas Avanzadas

Para obtener una visión detallada del tráfico que maneja el módulo, puedes usar `ethtool` sobre la interfaz `bat0`:

$ ethtool --statistics bat0

Esto te mostrará contadores de paquetes enviados, recibidos, reenviados, errores y mucho más, información invaluable para un diagnóstico profundo.

Preguntas Frecuentes (FAQ)

¿Qué tipo de interfaces puedo usar con batman-adv?
Prácticamente cualquiera que aparezca en la salida del comando `ip link`. Esto incluye adaptadores Wi-Fi (wlanX, athX), puertos Ethernet (ethX), e incluso interfaces más exóticas como las de Bluetooth (pan0) o túneles VPN.
¿Necesito asignar una dirección IP a mis tarjetas Wi-Fi o Ethernet (eth0/wlan0)?
No, y es muy importante que no lo hagas. Las interfaces físicas solo actúan como puentes para batman-adv. Toda la configuración de IP debe realizarse exclusivamente sobre la interfaz virtual `bat0`.
¿Cuál es la diferencia entre `batman-adv` y el antiguo `batmand`?
La diferencia principal es la capa en la que operan. `batman-adv` es un módulo del kernel de Capa 2 (más rápido y transparente), mientras que `batmand` era un demonio de espacio de usuario que operaba en Capa 3 (enrutamiento IP) usando paquetes UDP.
Mi red mesh no funciona, ¿qué debo revisar primero?
Sigue esta lista de verificación:

  1. ¿Está el módulo `batman-adv` cargado? (Verifica con `lsmod | grep batman-adv`).
  2. ¿Están las interfaces físicas añadidas al mesh y en estado `up`? (Verifica con `batctl if`).
  3. ¿Has asignado una IP única a la interfaz `bat0` en cada nodo y está en la misma subred?
  4. ¿Has eliminado cualquier configuración de IP de las interfaces físicas (`eth0`, `wlan0`, etc.)?
  5. ¿Hay algún cortafuegos bloqueando el tráfico en las interfaces?
  6. ¿Qué dicen los logs del kernel? (`dmesg | grep batman-adv`).

B.A.T.M.A.N. Advanced es una pieza de tecnología de red increíblemente potente y flexible. Aunque su configuración inicial puede parecer intimidante, su arquitectura de Capa 2 simplifica enormemente la gestión de redes complejas una vez que se comprenden los conceptos básicos. Ya sea para crear una red comunitaria, un sistema de comunicación robusto para eventos o simplemente para experimentar, dominar batman-adv te abrirá un nuevo mundo de posibilidades en la conectividad descentralizada.

Si quieres conocer otros artículos parecidos a Crea tu Red Mesh con Batman Advanced puedes visitar la categoría Juegos.

Subir