Bridge tra DMR, YSF, D-STAR e NXDN: cosa succede realmente all’audio?

Nel mondo radioamatoriale digitale sentiamo continuamente parlare di:

DMR2YSF, YSF2DMR, DMR2NXDN, cross-mode, bridge, transcoder e gateway.

A prima vista tutto sembra semplice.

Un radioamatore parla in DMR.

Un altro lo ascolta in System Fusion.

Un terzo entra da NXDN.

Un quarto magari utilizza un client software.

E sembra quasi che il server faccia semplicemente:

DMR → YSF → NXDN

In realtà dietro una comunicazione cross-mode può esserci una catena estremamente più complessa.

Bisogna infatti distinguere almeno quattro operazioni differenti:

trasporto dei pacchetti;

conversione del protocollo;

conversione della segnalazione;

transcoding della voce.

Sono concetti differenti e comprenderli permette di capire anche perché alcuni bridge producono audio eccellente mentre altri introducono ritardo, artefatti o addirittura rendono impossibile la comunicazione.

MMDVM è un ottimo esempio della varietà dei sistemi coinvolti: il firmware supporta D-STAR, DMR, System Fusion, P25 e NXDN, mentre MMDVMHost utilizza gateway separati per connettere i diversi modi alle rispettive infrastrutture di rete.


Partiamo dall’inizio: la voce non viaggia come audio normale

Quando premiamo il PTT di una radio digitale, la nostra voce viene prima acquisita dal microfono e successivamente codificata da un vocoder.

Possiamo rappresentare il processo così:

VOCE
  ↓
MICROFONO
  ↓
ADC / DSP
  ↓
VOCODER
  ↓
DATI VOCALI COMPRESSI

Questi dati vengono inseriti nei frame del protocollo utilizzato dalla radio.

Per esempio:

DMR

oppure:

YSF

oppure:

D-STAR

oppure:

NXDN

Quindi sulla rete non viaggia semplicemente:

audio.wav

ma qualcosa concettualmente simile a:

HEADER
IDENTIFICATIVO
DESTINAZIONE
SEQUENZA
CONTROLLO
PAYLOAD VOCALE

Il payload contiene la rappresentazione compressa della voce.


Primo concetto fondamentale: protocollo e codec non sono la stessa cosa

Questo è probabilmente il punto più importante di tutto l’articolo.

Un protocollo digital voice descrive aspetti quali:

  • struttura dei frame;
  • identificazione delle stazioni;
  • indirizzamento;
  • sincronizzazione;
  • gestione della chiamata;
  • dati;
  • modalità di accesso;
  • trasporto del payload vocale.

Il codec/vocoder, invece, descrive come viene rappresentata la voce.

Possiamo quindi pensare:

PROTOCOLLO
    │
    ├── signalling
    ├── addressing
    ├── framing
    └── VOICE PAYLOAD
             │
             └── vocoder

Questa distinzione spiega perché “tradurre DMR in YSF” non significa necessariamente “convertire anche l’audio”.


MMDVM non significa automaticamente cross-mode

Il modem MMDVM può gestire differenti modi digitali RF, ma ciò non implica automaticamente che una trasmissione ricevuta in DMR venga trasformata in NXDN o System Fusion.

MMDVMHost opera infatti con componenti di rete specifici: D-Star Gateway sul lato D-STAR, DMR Gateway per DMR, YSF/DG-ID Gateway per System Fusion, P25 Gateway e NXDN Gateway per i rispettivi sistemi.

La situazione normale è quindi:

           ┌→ DMR NETWORK
           │
MMDVMHost ─┼→ YSF NETWORK
           │
           ├→ NXDN NETWORK
           │
           └→ D-STAR NETWORK

I vari modi possono coesistere.

Ma questo non significa ancora che parlino tra loro.


Che cos’è allora un bridge?

Un bridge collega due ecosistemi differenti.

Supponiamo:

DMR TG 22215

e vogliamo collegarlo a:

YSF ROOM XYZ

Il bridge deve ricevere informazioni provenienti dal primo sistema e produrre informazioni comprensibili dal secondo.

Conceptualmente:

DMR NETWORK
     │
     ▼
   BRIDGE
     │
     ▼
YSF NETWORK

Il problema è che i due sistemi non utilizzano necessariamente:

  • la stessa struttura di frame;
  • lo stesso sistema di indirizzamento;
  • gli stessi metadati;
  • la stessa gestione PTT;
  • lo stesso payload vocale.

Il bridge deve quindi stabilire una corrispondenza.


Traduzione dei metadati

Immaginiamo che arrivi una comunicazione DMR:

SOURCE ID = 2221234
TG = 22215
TS = 1
CC = 1

Sul lato YSF alcuni di questi concetti semplicemente non esistono nello stesso modo.

Il bridge deve quindi trasformare:

DMR ID

in qualcosa che possa essere presentato all’altro sistema, magari associandolo a:

CALLSIGN

oppure utilizzando un identificativo configurato nel gateway.

Analogamente:

TG 22215

potrebbe essere associato a:

YSF Room XYZ

Questa associazione è una decisione di configurazione del bridge, non una proprietà intrinseca dei due protocolli.


Talkgroup e Room non sono la stessa cosa

Se configuriamo:

DMR TG 22215
      ↕
YSF ROOM D2ALP

l’esperienza per l’utilizzatore può sembrare identica:

tutti quelli collegati alla stessa risorsa ascoltano la conversazione.

Ma internamente sono entità differenti.

Il bridge crea una relazione:

ENTITÀ A
   ↕
ENTITÀ B

e si occupa di mantenere quella relazione durante la comunicazione.


E arriviamo al problema più interessante: il codec

Supponiamo che i due sistemi trasportino dati vocali compatibili.

Potremmo avere:

VOICE DATA
    ↓
conversione protocollo
    ↓
VOICE DATA

senza necessariamente ricostruire l’audio analogico.

Questo è il caso ideale.

La voce rimane nel dominio compresso e il server deve principalmente trasformare framing e signalling.

La qualità non subisce quindi un ulteriore ciclo completo:

decode
encode

Quando invece serve il transcoding

Supponiamo ora che:

SISTEMA A

utilizzi una rappresentazione vocale incompatibile con:

SISTEMA B

Il bridge non può semplicemente copiare il payload.

Deve fare:

VOICE CODEC A
      ↓
DECODER
      ↓
PCM AUDIO
      ↓
ENCODER
      ↓
VOICE CODEC B

Questo è transcoding.

Il progetto MMDVM-CrossMode di G4KLX è costruito proprio attorno a questo concetto e punta al transcoding fra D-STAR, DMR, System Fusion, P25, NXDN e FM; la sua implementazione corrente dichiara già il supporto iniziale a D-STAR, DMR, YSF DN e FM.


Perché il PCM viene usato come lingua comune?

Immaginiamo due lingue.

ITALIANO

e

GIAPPONESE

Possiamo creare un traduttore diretto.

Oppure passare attraverso una lingua intermedia.

Nei sistemi audio la lingua intermedia può essere:

PCM AUDIO

Quindi:

AMBE
 ↓
PCM
 ↓
Codec B

oppure:

Codec B
 ↓
PCM
 ↓
AMBE

Il componente che esegue questa funzione deve avere accesso ai decoder e encoder necessari.


DVSwitch: un esempio molto interessante

La suite DVSwitch utilizza componenti distinti per svolgere ruoli differenti.

MMDVM_Bridge viene descritto dal progetto come software destinato a fare bridge tra reti basate su MMDVM.

Analog_Bridge, invece, si occupa del passaggio tra audio PCM e formati vocali digitali compressi; la documentazione del progetto lo descrive esplicitamente come bridge tra AMBE/IMBE e PCM.

Concettualmente possiamo quindi avere:

RETE DIGITALE
      │
      ▼
MMDVM_Bridge
      │
      ▼
Analog_Bridge
      │
      ▼
PCM

e poi dall’altro lato:

PCM
 ↓
Analog_Bridge
 ↓
MMDVM_Bridge
 ↓
ALTRA RETE DIGITALE

TLV, PCM e audio digitale

Nell’architettura DVSwitch possiamo vedere chiaramente la separazione.

Una parte della configurazione tratta l’audio digitale compresso.

Un’altra utilizza un’interfaccia PCM.

Le configurazioni di Analog_Bridge descrivono infatti una sezione AMBE_AUDIO, destinata all’audio compresso, e una sezione USRP, che utilizza PCM. In modalità transcoding due istanze possono essere collegate in modo che il flusso attraversi la conversione audio intermedia.

Una struttura semplificata può quindi diventare:

TLV CODEC A
    ↓
Analog_Bridge
    ↓
PCM
    ↓
Analog_Bridge
    ↓
TLV CODEC B

Un esempio: DMR → altro modo digitale

Prendiamo una comunicazione proveniente dal DMR.

RADIO DMR
   ↓
RF
   ↓
MMDVM
   ↓
MMDVMHost
   ↓
DMR NETWORK

Il bridge riceve il flusso.

Supponiamo che sia necessario effettuare transcoding:

DMR VOICE
   ↓
DECODER
   ↓
PCM
   ↓
ENCODER DESTINAZIONE

Successivamente vengono creati i frame necessari alla nuova rete:

PCM
 ↓
NUOVO VOCODER
 ↓
NUOVO PROTOCOLLO
 ↓
DESTINATION NETWORK

Perché l’audio cambia?

Qui troviamo una conseguenza inevitabile.

Ogni vocoder speech a basso bitrate è normalmente lossy.

Significa che non conserva tutta l’informazione del segnale originale.

Prendiamo:

VOCE ORIGINALE

La prima radio esegue:

VOCE
 ↓
VOCODER A

Al bridge:

VOCODER A
 ↓
PCM RICOSTRUITO

Poi:

PCM RICOSTRUITO
 ↓
VOCODER B

Il secondo vocoder non riceve più il microfono originale.

Riceve la ricostruzione prodotta dal primo vocoder.


È come comprimere più volte una fotografia JPEG

L’analogia non è perfetta ma rende bene l’idea.

Prendiamo una fotografia.

ORIGINALE
 ↓ JPEG
immagine A
 ↓ ricodifica JPEG
immagine B
 ↓ ricodifica JPEG
immagine C

Ogni passaggio può introdurre nuovi artefatti.

Con la voce succede qualcosa di simile.

Il risultato può diventare:

  • più metallico;
  • meno naturale;
  • meno intelligibile sulle consonanti;
  • più sensibile al rumore;
  • caratterizzato da strani artefatti vocali.

Perché alcune conversioni suonano invece molto bene?

Perché non tutte le catene richiedono la stessa quantità di transcoding.

Possiamo avere:

CODEC A
 ↓
stesso CODEC A

con sola conversione di protocollo.

Oppure:

CODEC A
 ↓
PCM
 ↓
CODEC B

con transcoding completo.

La prima situazione tende a preservare meglio il payload vocale.


System Fusion: attenzione alle modalità

System Fusion introduce un’ulteriore complessità perché può utilizzare modalità vocali differenti.

MMDVM-CrossMode distingue infatti esplicitamente System Fusion DN e VW tra le modalità considerate dal progetto.

Quindi anche dire semplicemente:

“YSF”

non descrive sempre tutta la situazione.

Il bridge deve sapere quale tipo di payload sta ricevendo e quale deve produrre.


Non dimentichiamo D-STAR

MMDVMHost tratta D-STAR attraverso il relativo gateway dedicato, così come utilizza gateway distinti per gli altri protocolli.

Se vogliamo collegare:

D-STAR

a:

DMR

il bridge deve gestire differenze profonde non soltanto nella voce, ma anche nell’identificazione delle stazioni.

In DMR siamo abituati ai numeri ID.

In D-STAR l’identità radioamatoriale è fortemente legata ai callsign.

Il bridge deve quindi creare una traduzione anche a quel livello.


NXDN introduce ancora un’altra logica

MMDVMHost utilizza NXDNGateway per collegarsi alle infrastrutture NXDN e NXCore.

Immaginiamo:

DMR TG 22215

collegato a:

NXDN TG 22215

Il fatto che il numero sia identico non significa che i due Talkgroup siano tecnicamente lo stesso oggetto.

Il bridge decide:

DMR 22215
 ↕
NXDN 22215

e trasferisce chiamate e metadata secondo le proprie regole.


Cross-mode RF e cross-mode network non sono la stessa cosa

Altro concetto importante.

Possiamo realizzare una conversione:

RF DMR
 ↓
SERVER
 ↓
RF YSF

oppure:

NETWORK DMR
 ↓
SERVER
 ↓
NETWORK YSF

Nel primo caso abbiamo anche modem e interfacce RF.

Nel secondo lavoriamo soltanto nel dominio IP.

La catena diventa molto più corta:

DMR NETWORK
    ↓
BRIDGE
    ↓
YSF NETWORK

La latenza aumenta a ogni passaggio

Immaginiamo una catena semplice:

Radio
 ↓
Hotspot
 ↓
Internet
 ↓
Reflector
 ↓
Internet
 ↓
Hotspot
 ↓
Radio

Ora aggiungiamo:

Bridge
+
Transcoder

La comunicazione diventa:

Radio
 ↓
Hotspot
 ↓
Server A
 ↓
Bridge
 ↓
Decoder
 ↓
PCM buffer
 ↓
Encoder
 ↓
Server B
 ↓
Hotspot
 ↓
Radio

Ogni passaggio può aggiungere:

  • buffering;
  • elaborazione;
  • packetizzazione;
  • trasporto;
  • jitter buffer.

Di conseguenza il ritardo end-to-end cresce.


Ecco perché serve lasciare spazio tra i passaggi

In analogico possiamo quasi immediatamente:

rilasciare PTT
 ↓
altro operatore preme PTT

Su una grande rete cross-mode è meglio evitare risposte istantanee.

Il flusso precedente deve:

terminare
↓
raggiungere bridge
↓
chiudere stream
↓
raggiungere rete remota
↓
rilasciare gli endpoint

Una breve pausa migliora enormemente la convivenza tra sistemi diversi.


Il problema del clipping

Il transcoding introduce anche un problema che non riguarda solo il codec.

Quando passiamo attraverso PCM possiamo avere differenti livelli audio.

Se il livello è troppo basso:

audio debole

Se è troppo alto:

clipping

Analog_Bridge include infatti parametri dedicati a gain, AGC e gestione audio proprio perché la conversione fra dominio digitale compresso e PCM richiede corretta gestione dei livelli.

Questo spiega perché due bridge apparentemente identici possano avere qualità audio molto differente.


AGC: utile ma non miracoloso

Possiamo utilizzare un Automatic Gain Control per compensare variazioni.

Ma un AGC troppo aggressivo può:

  • amplificare il rumore;
  • modificare la dinamica;
  • produrre pumping;
  • peggiorare alcune voci.

L’obiettivo dovrebbe sempre essere fornire al vocoder un audio già correttamente dimensionato.


Il rumore viene “tradotto” anche lui

Immaginiamo una radio con microfono rumoroso.

VOCE + RUMORE
      ↓
VOCODER A
      ↓
ricostruzione
      ↓
VOCODER B

Il secondo codec cerca di interpretare un segnale che contiene già artefatti del primo.

Questo può produrre il classico effetto:

voce subacquea, robotica o gorgogliante.

Nei bridge la qualità della sorgente diventa quindi ancora più importante.


Hardware vocoder e software vocoder

Per alcune conversioni possiamo utilizzare software.

In altri casi può essere necessario o conveniente un vocoder hardware.

DVSwitch supporta, ad esempio, configurazioni che possono dialogare con dispositivi AMBE dedicati attraverso AMBEServer, mentre alcune configurazioni prevedono anche decoder software alternativi.

L’architettura può quindi essere:

BRIDGE
 ↓
AMBEServer
 ↓
USB VOCODER

oppure, quando supportato:

BRIDGE
 ↓
SOFTWARE VOCODER

Il transcoder può essere il collo di bottiglia

Un semplice reflector può spesso replicare i pacchetti molto rapidamente.

Il transcoder deve invece:

  1. decodificare;
  2. ricostruire PCM;
  3. ricodificare;
  4. mantenere la temporizzazione.

Se arrivano molte comunicazioni simultanee, il numero di conversioni aumenta.

Per questo nelle grandi architetture è utile separare:

REFLECTOR

da:

TRANSCODER

Un bridge multiprotocollo completo

Possiamo immaginare:

             ┌── DMR
             │
             ├── YSF
             │
BRIDGE HUB ──┼── NXDN
             │
             ├── D-STAR
             │
             └── P25

Ma attenzione.

“Supportare cinque protocolli” non significa necessariamente:

tutti parlano con tutti contemporaneamente e senza transcoding.

Bisogna conoscere la compatibilità del payload vocale e le capacità del software utilizzato.


Come progettare bene un bridge

Prima di collegare due reti bisogna rispondere ad almeno sei domande.

1. Quali protocolli?

DMR ↔ YSF?
DMR ↔ NXDN?
D-STAR ↔ DMR?

2. Quali codec?

Dobbiamo stabilire se è necessario transcoding.

3. Come traduciamo le destinazioni?

TG
ROOM
REFLECTOR
MODULE

4. Come traduciamo gli identificativi?

DMR ID
CALLSIGN
NXDN ID

5. Chi controlla il PTT?

Serve evitare collisioni e stream simultanei.

6. Come evitiamo i loop?

Se la rete A è già collegata alla rete B attraverso un altro percorso, aggiungere un secondo bridge può produrre un disastro.


Il pericolo dei loop

Immaginiamo:

DMR
 ↓
YSF
 ↓
NXDN
 ↓
DMR

Una trasmissione può tornare al punto di partenza.

Possiamo ottenere:

  • audio duplicato;
  • eco;
  • PTT continuo;
  • stream che non terminano;
  • enorme traffico inutile.

Prima di creare bridge multipli bisogna quindi disegnare la topologia.


Meglio una topologia a stella

Una struttura ordinata può essere:

               DMR
                │
                │
YSF ─────── CROSSMODE HUB ───── NXDN
                │
                │
              D-STAR

Il nodo centrale stabilisce tutte le conversioni.

È molto più semplice capire:

  • chi entra;
  • chi esce;
  • quale codec viene usato;
  • dove si effettua transcoding.

Il debugging diventa molto più semplice

Se l’audio è brutto possiamo seguire:

SORGENTE
 ↓
INPUT BRIDGE
 ↓
DECODE
 ↓
PCM
 ↓
ENCODE
 ↓
OUTPUT BRIDGE
 ↓
DESTINAZIONE

e ascoltare eventualmente il PCM intermedio.

Se il PCM è già pessimo:

problema lato ingresso/decoder

Se PCM è ottimo ma l’uscita è cattiva:

problema lato encoder/output

Questa metodologia evita di modificare venti parametri contemporaneamente.


Registrare l’audio intermedio è utilissimo

Per un Sysop avanzato, salvare per pochi secondi il PCM del bridge può essere uno strumento diagnostico eccezionale.

Possiamo confrontare:

AUDIO SORGENTE

con:

PCM INTERMEDIO

e:

AUDIO DESTINAZIONE

e capire esattamente dove si introduce il degrado.


La regola d’oro: meno conversioni possibile

Se esistono due possibili percorsi:

A → B

e:

A → C → PCM → D → B

il primo è generalmente preferibile.

Ogni conversione aggiunge:

  • complessità;
  • latenza;
  • possibili errori;
  • possibile degrado vocale.

Quindi:

non effettuare transcoding se puoi semplicemente fare routing o protocol translation.


Esempio di una rete D2ALP cross-mode

Supponiamo di voler rendere disponibile una risorsa principale attraverso:

DMR
YSF
NXDN

Una possibile struttura concettuale potrebbe essere:

                 DMR TG
                   │
                   ▼
            CROSSMODE SERVER
             /             \
            /               \
       YSF ROOM          NXDN TG

Se la conversione vocale lo richiede:

                TRANSCODER

viene inserito nel percorso appropriato.

Monitoring e logging dovrebbero poi mostrare:

SOURCE
PROTOCOL IN
DESTINATION
PROTOCOL OUT
TRANSCODE YES/NO
LATENCY

A quel punto abbiamo finalmente una rete osservabile e non una scatola nera.


Conclusioni

Quando una radio DMR parla con una radio YSF o NXDN, la voce non attraversa magicamente i protocolli.

Il server deve effettuare una serie di traduzioni.

La catena può essere semplice:

FRAME A
 ↓
PROTOCOL TRANSLATION
 ↓
FRAME B

oppure molto più complessa:

FRAME A
 ↓
ESTRAZIONE PAYLOAD
 ↓
DECODER VOCODER A
 ↓
PCM
 ↓
ENCODER VOCODER B
 ↓
GENERAZIONE FRAME B
 ↓
RETE B

È proprio quest’ultima operazione che chiamiamo transcoding.

Capire questa differenza spiega quasi tutto:

  • perché alcuni bridge hanno audio migliore;
  • perché altri producono voce robotica;
  • perché aumenta la latenza;
  • perché servono vocoder hardware o software;
  • perché non tutti i protocolli possono essere collegati semplicemente copiando pacchetti;
  • perché i loop sono pericolosi.

Un bridge ben progettato quindi non deve semplicemente:

“far parlare più reti.”

Deve farlo utilizzando il minor numero possibile di conversioni, una corretta gestione dell’audio e una topologia di rete comprensibile e controllabile.

Ed è proprio in questo punto che un semplice collegamento cross-mode diventa una vera infrastruttura digital voice.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *