4.6 KiB
OpenBridge (FreeBridge / DMRE)
DMRE y «OpenBridge v5»
En cable, OpenBridge extendido usa el opcode DMRE. El byte de versión de protocolo embebido dentro de la trama (ver disposición DMRE v5) selecciona el diseño: versión > 4 es el formato v5 de 89 bytes (saltos, campo repetidor fuente, MAC BLAKE2b). En documentación y conversaciones de operadores, «DMRE v5» y «OpenBridge v5» son lo mismo: tramas DMRE con versión embebida 5 (no el camino corto solo DMRD).
Recomendación (red ADN Systems): todos los enlaces inter-servidor que participen en la malla ADN Systems deberían usar DMRE v5 (PROTO_VER: 5 en YAML, que fija VER / versión embebida negociada) y ENHANCED_OBP: true para que BCSQ, BCKA y el control de bucle multipath se comporten igual. Los pares (otros servidores) deben configurarse igual. DMRD v1 (solo HMAC) permanece como modo de compatibilidad, pero no es el modo preferido para nuevos despliegues ADN.
Qué es OpenBridge
OpenBridge es un protocolo UDP entre servidores (y algunos gateways). Transporta voz DMR usando:
DMRDversión 1 — carga autenticada HMAC-SHA1 (modo de compatibilidad); oDMRE— trama extendida con MAC BLAKE2b, versión embebida, marcas de tiempo, saltos, IDs servidor/repetidor de origen, etc. (DMRE v5 = versión embebida 5, recomendada arriba).
Esta pila implementa el modo par OPENBRIDGE en udp_hbp.py y el enrutado de bridges en BridgeUseCases.
Ingreso (DMRE)
- Verificar BLAKE2b sobre el prefijo autenticado.
- Comprobar NETWORK_ID, socket TARGET /
RELAX_CHECKS, slot (TS1 para ingreso OBP). - Incrementar saltos; si > 10, descartar y opcionalmente enviar BCSQ.
- Reconstruir un pseudo-DMRD para el bridge y llamar
dmrd_receivedcon metadatos de salto.
Egreso (send_system)
- Construir DMRE o DMRD v1 según VER negociada y versión embebida.
- Preservar saltos, BER/RSSI, source_server / source_rptr según haga falta para interoperar.
Control de bucle (malla multipath)
Para voz de grupo en OpenBridge:
- Finalizado / timeout 180 s — descartar flujos obsoletos.
- Eco HBP — si un sistema no-OBP ya tiene este
stream_iden RX, esta pata OBP se trata como eco. - Varios OBP — entre patas OBP con el mismo
stream_idy TG, solo el1STmás temprano (min(perf_counter)) reenvía; las demás paran y pueden enviar BCSQ siENHANCED_OBPes true.
BCSQ (Bridge Control — Source Quench)
- Significado: «No reenvíes este
stream_iden esta TG hacia mi pata.» - Lo envía el OBP perdedor en control de bucle hacia su par (no es broadcast global).
- Se respeta al reenviar a otro OBP: si el
_bcsqdel destino coincide, omitirsend_system.
BCKA (keepalive)
- ENHANCED_OBP — si el keepalive del par está obsoleto, bloquear reenvío hasta que se refresque.
Reenvío de bridge (to_target)
Por fila de destino: deduplicar (SYSTEM, TS), comprobar BCSQ, BCKA, ACL, reescribir LC / TGID, forzar patrón de bit TS1 para OBP, llamar send_system.
Filtros de ingreso (TG de grupo)
Para tráfico de grupo (y vcsbk), OpenBridge aplica filtros TG antes de que el flujo llegue al router de bridges. Los flujos descartados pueden disparar BCSQ hacia el par. Las reglas exactas difieren entre DMRD v1 y DMRE en udp_hbp.py; en general rechazan tráfico tratado como solo local o servidor incorrecto para el destino, por ejemplo:
- TG bajas (p. ej. ≤ 79 en DMRE; DMRD v1 también combina 9990–9999, 92–199, 900999 en una comprobación).
- 9990–9999 y 900999 (rangos de servicio / servidor local en DMRE).
- 92–199 salvo que el ID de servidor de origen coincida con el ID principal de tu servidor (DMRE).
- 80–89 y 800–899 salvo que el prefijo MCC coincida (DMRE).
Las llamadas privadas (unitarias) no están sujetas al mismo bloqueo de filtro TG de grupo de la misma forma; configura ACL por separado.
Resumen orientado al operador: Números especiales — ingreso OpenBridge.
Eventos de monitor (adn-monitor)
- INGRESS — primera vista de depuración por pata.
- START — canónico después de ganar el bucle (estado del panel).
Ver también: disposición DMRE v5, Monitor.