Protocolo de enrutamiento

Algoritmos de enrutamiento MeshCore

Cada mensaje que recorre la red RegionMesh toma decisiones de enrutamiento autonomas. Entender estos algoritmos te ayuda a desplegar nodos mas efectivos y solucionar brechas de cobertura.

Como encuentra su camino un mensaje a traves de la red en malla?

Las redes tradicionales dependen de routers con rutas preconfiguradas. Una red en malla no tiene ese lujo. Cuando un senderista en Rocky Mountain National Park envia un mensaje, no existe una autoridad central para dirigirlo hacia Denver.

En su lugar, MeshCore usa un modelo hibrido: flood de descubrimiento cuando hace falta y luego reenvio mas dirigido por rutas aprendidas.

Esta guia explica con precision como funciona el enrutamiento de MeshCore, que optimizaciones ahorran tiempo de aire y bateria, y como puedes ajustar el comportamiento de enrutamiento para tu despliegue especifico a traves de America.

Mecanismos basicos del protocolo de enrutamiento

Cuatro mecanismos fundamentales sustentan el enrutamiento de MeshCore:

Flood de descubrimiento + rutas aprendidas

La primera entrega puede usar flood de descubrimiento por repetidores. Tras reportes de entrega, MeshCore puede usar una ruta conocida para mensajes siguientes.

Broadcast -> All neighbors -> Re-broadcast -> Target

Deteccion de duplicados

Cada mensaje lleva un identificador unico. Los nodos mantienen una cache de IDs vistos recientemente, descartando duplicados que llegan por rutas alternativas.

Message ID: 0x4A3F2B -> Already seen -> Drop

Limitacion por conteo de saltos

El control de saltos evita propagacion sin limite. MeshCore soporta techos altos a nivel de protocolo (hasta 64), mientras que en campo se ajusta la propagacion en repetidores (por ejemplo con flood.max).

Reenvio por rol de repetidor

El reenvio es funcion de repetidores/relays, no de todos los clientes. Esto mantiene el trafico mas predecible y reduce carga de aire innecesaria.

Como funciona el flood de descubrimiento en MeshCore

El flood de descubrimiento se usa cuando aun no hay ruta conocida. Luego MeshCore puede pasar a reenvio dirigido:

Paso 1: Se envia el mensaje

Un usuario en Boulder envia un mensaje a un destino sin ruta conocida. El paquete se prepara y se emite por LoRa.

Paso 2: Repetidores cercanos reenvian

Los repetidores en alcance procesan el mensaje y aplican deduplicacion. Los clientes pueden recibir, pero no son la capa general de reenvio.

Paso 3: La ruta se aprende con la entrega

Cuando la entrega tiene exito, MeshCore puede aprender el camino de repetidores para trafico unicast posterior.

Paso 4: Trafico siguiente mas dirigido

Los siguientes mensajes pueden usar la ruta aprendida, reduciendo propagacion global y consumo de tiempo de aire.

Control de trafico en practica

MeshCore mantiene discovery y forwarding eficientes con controles practicos:

  • Deduplicacion de mensajes: Mensajes identicos que llegan por rutas diferentes solo se reenvian una vez, evitando un crecimiento exponencial del trafico.
  • Aprendizaje de ruta: Una entrega correcta puede generar informacion de camino para reenvio directo posterior.
  • Limites de flood en repetidores: Se puede ajustar la propagacion (por ejemplo con flood.max) para cuidar el tiempo de aire.
  • Separacion de roles: Los clientes se centran en mensajeria de usuario y los repetidores en forwarding de red.

Mecanismo de limitacion de saltos

64

Techo de saltos del protocolo

La documentacion de MeshCore indica un maximo interno de 64 saltos a nivel de protocolo.

flood.max

Ajuste operativo

La propagacion real se ajusta sobre todo en repetidores (por ejemplo con flood.max) segun densidad de nodos y presupuesto de aire.

~3km

Alcance segun despliegue

La distancia por salto depende de terreno, antena, ruido RF y ubicacion de repetidores. Es mejor planificar con mediciones reales que con un numero fijo de saltos.

Como funciona el conteo de saltos

El control de saltos evita circulacion sin limite, mientras que las politicas de repetidor definen el forwarding practico:

Intento inicial:      flood de descubrimiento por repetidores
Entrega exitosa:      se aprende informacion de ruta
Siguientes unicast:   forwarding por ruta aprendida
Control de flood:     ajuste en repetidores (ej. flood.max)

Este mecanismo evita que los mensajes circulen indefinidamente, conservando bateria valiosa y dejando tiempo de aire disponible para nuevas comunicaciones.

Ventajas del enrutamiento MeshCore

🔄

Auto-organizado

Ningun administrador de red configura tablas de enrutamiento. Los nodos se descubren automaticamente, adaptandose a altas y fallos sin intervencion.

Eficiente en energia

Las optimizaciones aseguran que solo ocurran transmisiones necesarias. Los nodos a bateria pueden funcionar por dias mientras aun contribuyen a la cobertura de red.

🛡️

Robusto ante fallos

Si un repetidor falla en las Rockies, los mensajes se enrutan automaticamente por rutas alternativas. La red se recupera sin que nadie lo note.

📡

Alcance escalable

Agregar nodos extiende la cobertura proporcionalmente. Un repetidor en una montana podria unir condados enteros sin cambios de configuracion.

🔧

Protocolo simple

El modelo hibrido de descubrimiento + rutas aprendidas evita tablas pesadas y a la vez reduce propagacion innecesaria en redes activas.

🌐

Sin punto unico de falla

Sin router central, ningun componente unico puede tumbar la red. Incluso perdiendo la mitad de los nodos, los dispositivos restantes siguen comunicandose.

Ejemplos de configuracion de enrutamiento

Ajusta el comportamiento de enrutamiento con la CLI de MeshCore o la API de Python:

CLI: Ajustar flood en repetidor

Ajusta el alcance de propagacion en nodos repetidores segun tu topologia:

set flood.max 6
set repeat on
save

API de Python: configuracion de enrutamiento

Automatiza la configuracion del despliegue en multiples nodos:

import MeshCore

interface = MeshCore.SerialInterface()
node = interface.getNode("^local")

# Example: apply forwarding policy on repeater profile
node.config["flood.max"] = 6
node.config["repeat"] = "on"
node.writeConfig()

Avanzado: limitar alcance de discovery

En areas densas, limita discovery para reducir presion de tiempo de aire:

set flood.max 4
save
# Sube el valor solo si falla la entrega en tu zona

Preguntas frecuentes sobre enrutamiento

MeshCore usa solo flooding?

No. Puede usar flood de descubrimiento al inicio, pero despues puede reenviar unicast por rutas aprendidas de repetidores.

Que pasa si dos nodos reenvian un mensaje simultaneamente?

Los retrasos de backoff aleatorio hacen improbable la transmision simultanea. Cuando ocurren colisiones, otros nodos de la red normalmente reciben al menos una copia con exito, manteniendo la entrega del mensaje.

Puedo establecer diferentes limites de saltos por tipo de mensaje?

Normalmente se ajusta por rol de nodo y politica de repetidor. Mantiene trafico rutinario mas contenido y reserva mayor propagacion para casos prioritarios.

Como evita MeshCore los bucles de ruta?

La deteccion de duplicados combinada con el conteo de saltos elimina bucles. Un mensaje no puede volver a visitar un nodo (deteccion de duplicados) y eventualmente expira (limite de saltos) sin importar la topologia de la red.

Que latencia debo esperar?

La latencia depende de condiciones RF, spreading factor, carga de cola y politicas de repetidor. La referencia correcta es medir en campo en tu despliegue.

Puedo deshabilitar el enrutamiento en mi nodo?

Si. Establecer rebroadcast_mode en "NONE" crea un nodo hoja que recibe mensajes pero nunca reenvia. Util para dispositivos portatiles criticos de bateria.

Empieza con el desarrollo de enrutamiento MeshCore

El protocolo de enrutamiento de MeshCore permite comunicacion resistente y auto-reparable a traves de America sin depender de infraestructura de internet. Entender estos mecanismos te ayuda a desplegar redes mas efectivas.