D2D complementa la red terrestre
GSMA define direct-to-device como conexión entre satélite y handset común que complementa cobertura y resiliencia. 3GPP Release 17 introdujo NTN estandarizado para NR e IoT, con mejoras en Release 18. También existen servicios propietarios con devices, espectro y capacidades distintos.
El backend no puede inferir capacidad por un icono. Debe descubrir emergencia, texto, datos, telemetría o voz y sus límites de payload, retraso, costo y ventana.
DisponibilidadCobertura terrestre/satélite, cielo, región, acuerdo, device, plan y batería.
Envelope de transportePayload, uplink/downlink, retraso, ventana, throughput, costo y entrega.
Policy de mensajePrioridad, expiración, sensibilidad, compresión, retries, ACK, dedupe y fallback.
Autonomía localQué puede leer, decidir, registrar, alertar y ejecutar el device sin servidor.
Modela estados, no solo online y offline
Estados útiles: terrestre sano, degradado, satélite disponible, satélite restringido, esperando ventana, solo local y solo emergencia. El estado depende de capacidad medida.
Usa señales del sistema/modem, callbacks, caché expirable y probes limitados. Cambiar ruta no debe duplicar efectos.
Fallback y flujo de entrega01 ClasificarDefine intenciónEmergencia, comando, alerta, posición, formulario, telemetría, adjunto o historial.
02 EmpaquetarCrea envelope durableID, origen, destino, schema, hora, expiración, prioridad, dependencias, hash y cifrado.
03 SeleccionarElige ruta elegibleWi-Fi, móvil terrestre, D2D, relay, transferencia tardía o modo local.
04 AdaptarAjusta el payloadComprime, separa adjuntos, envía resumen, reduce muestras o conserva campos críticos.
05 TransferirStore-and-forwardPersiste antes de enviar, usa retries limitados y conserva hasta ACK o expiración.
06 AceptarDeduplica y validaAutentica, verifica integridad/schema, bloquea replay y acepta idempotentemente.
07 ReconciliarAplica eventos tardíosComprueba versión, causalidad, validez, conflictos, autorización y compensación.
08 ObservarMuestra outcomeQueued, enviado, aceptado por red, servidor, aplicado, rechazado o expirado.
El envelope es la abstracción central
Cada operación necesita ID y hora de creación independientes del envío. Incluye expiración, prioridad, schema, device, actor, destino, secuencia, versión, hash, cifrado y dependencias.
La posición puede valer horas; una alerta sigue siendo útil tras demora; un comando de desbloqueo debe expirar rápido.
Prioriza valor y vida útil
| Mensaje | Prioridad | Payload | Backend | Diseño inseguro |
|---|
| Emergencia | Máxima con expiración. | Identidad/pseudónimo, ubicación, evento, hora e integridad. | Routing, dedupe, escalamiento, estado y owner. | Mostrar entregado al guardar localmente. |
| Comando | Alta y corta. | ID, objetivo, parámetros, precondiciones, expiración y auth. | Revalidar estado/auth y exigir resultado. | Ejecutar horas después sin comprobar seguridad. |
| Posición | Media y limitada. | Coordenadas, precisión, sample time, movimiento y batería. | Aceptar fuera de orden y mostrar event time. | Mostrar posición tardía como actual. |
| Telemetría | Por policy. | Agregados, thresholds, calidad y ventana. | Agregar local, dedupe y conservar anomalías. | Enviar todo hasta agotar recursos. |
| Formulario | Media y durable. | Campos y manifiesto; media después. | Aceptar formulario antes que adjuntos. | Bloquear todo por una foto. |
| Media/update | Baja; terrestre. | Solo manifiesto. | Esperar Wi-Fi/terrestre y chunks resumibles. | Consumir capacidad satelital crítica. |
At-least-once exige idempotencia
Links restringidos y ACK incierto hacen normales los duplicados. MQTT QoS 1 ofrece at-least-once. El servidor deduplica por operation ID y devuelve el resultado original.
Un timeout puede ocurrir tras commit. No generes ID nuevo porque no llegó la respuesta.
Eventos tardíos conservan tiempo e incertidumbre
Guarda event time, receive time, apply time, calidad de reloj, precisión y ruta. Procesa por event time e impide que telemetría vieja reabra incidentes.
Usa secuencia monotónica, epochs, calidad GNSS/red y plausibilidad. Muestra cuando el valor está retrasado.
Los comandos necesitan reglas más fuertes
Incluye emisor, objetivo, scope, precondiciones, creación, expiración, nonce, idempotencia, versión, aprobación y resultado. El receptor evalúa seguridad local actual.
Desconectado, el device sigue policy acotada. La intención antigua de cloud no supera una condición local nueva.
Usa modos degradados explícitos
Envía texto en vez de media, ubicación gruesa en vez de track, thresholds en vez de streams, drafts en vez de writes sensibles e instrucciones en caché en vez de IA online.
La interfaz muestra ruta, retraso, costo/batería y diferencia entre almacenado, transmitido, aceptado y aplicado.
La seguridad atraviesa colas largas
Cifra end-to-end, autentica envelopes, evita replay, rota claves para desconexión y separa expiración de auth. Protege la cola en reposo.
La revocación es eventual. Limita autoridad offline y exige chequeo actual para alto riesgo.
Prueba ventanas y reconnect storms
Prueba sin visibilidad, ventana corta, link asimétrico, latencia, bajo throughput, ACK duplicado, desorden, adjunto interrumpido, clock drift, storage lleno, batería, roaming y auth expirada.
Usa simulador con contacto, pérdida, delay, límites y costo. Tráfico crítico debe preemptar bulk.
Observa cada etapa
Mide cola y edad, bytes por ruta, ventana, retries, duplicados, expiración, compresión, batería, tiempos hasta red/servidor/aplicación, resultado y fallback.
Outcomes incluyen ACK de emergencia, check-in, telemetría recuperada, reportes, posición stale y rechazo de comando tardío.
Qué construiría
Construiría una abstracción con store durable, selector de ruta, transformer, scheduler, adapters, ingest idempotente, reconciliador, comandos seguros y API de delivery state.
Cada tipo declararía delay, payload tiers, rutas, costo, ACK, fallback, seguridad y conflicto.
El principio de diseño
D2D añade una ruta donde no existe red terrestre. El software resiliente no finge que es banda ancha: empaqueta intención, adapta payload, conserva autonomía, verifica efectos tardíos y comunica incertidumbre.