Le specifiche del protocollo SIP prevedono 4 metodi per implementare le segnalazioni dei toni DTMF tra UAS (User Agent Server) e UAC (User Agenti Client). La gestione di questi ultimi, in ambito VoIP SIP, è disciplinata dalla nuova RFC 4733 del 2006 che ha reso obsoleta la precedente RFC 2833 del 2000.
In questo articolo cercherò di spiegarvi cosa sono i toni DTMF e come la loro implementazione si sia modificata nel corso del tempo. Vedremo insieme quali siano le possibili modalità di trasporto nell’ambito del protocollo VoIP SIP. Cercherò infine di fornirvi qualche utile consiglio per risolvere le problematiche più comuni legate al mancato o errato riconoscimento dei toni DTMF.
Cosa sono i toni DTMF ?
DMTF è acronimo di Dual Tone Multi Frequency. Si tratta di un sistema di codifica usato in telefonia per trasmettere numeri sotto forma di segnali in banda audio.
Lo scopo di questo sistema di codifica è molteplice. Nell’ambito della telefonia analogica lo scopo primario è quello di procedere ad una rapida composizione del numero di telefono, superando le limitazione del precedente metodo di composizione ad impulsi.
Le altre funzionalità chiave, legate a questo metodo, riguardano anche l’interazione con i risponditori vocali interattivi (IVR), l’invio di comandi per il telecontrollo, i pagamenti elettronici automatizzati e la generale interazione tra telefono e telefono e computer. Prima dell’avvento della selezione DTMF, la composizione del numero di telefono avveniva con la selezione ad impulsi (decadica).
Il telefono a disco effettuava una serie di micro interruzioni di linea, corrispondenti ad ogni singola cifra appartenente al numero telefonico da inviare. Alla fine degli anni ’50 i laboratori Bell introdussero la selezione DTMF che fu impiegata a partire dagli anni ’60. Nel corso dei decenni successivi il telefono a tastiera prenderà gradualmente il posto di quello a disco. La selezione ad impulsi (DC) verrà gradualmente abbandonata e sostituita con quella DTMF (MF). In Italia questa transizione è avvenuta tra la fine degli anni ’80 e l’inizio degli anni ’90.
La tastiera e i toni DTMF
La tastiera telefonica odierna è frutto di una serie di scelte operate nel passato quando le tastiere delle macchine calcolatrici, corrispondente a quella degli odierni PC, non era ancora ampiamente diffusa tra il grande pubblico. Questa scelta ha fatto in modo che oggi la tastiera telefonica differisca, per formato, dal tastierino numerico impiegato sui comuni personal computer.
La tastiera DTMF, nella sua implementazione completa, è costituita da una matrice 4×4 che comprende complessivamente le cifre da 0 a 9, i simboli * e # e le prime 4 lettere dell’alfabeto. queste ultime molto utilizzate nell’ambito di applicazioni militari.
Ogni riga rappresenta una frequenza bassa, mentre ogni colonna rappresenta una frequenza alta. Alla pressione di un singolo tasto viene riprodotto un suono che è il risultato della somma contemporanea di due precise frequenze. Per questa ragione si parla di “multifrequenza con doppio tono” (Dual Tone Multi Frequency).
In ambito VoIP SIP i codici evento DTMF sono descritti dalla RFC 4733, nella sezione 3.2. che elenca gli eventi DTMF:
- Eventi 0-9 –> Codici 0-9
- Evento * –> Codice 10
- Evento # –> Codice 11
- Evento A-D –> Codici 12 – 15
I Toni DTMF oggi, nell’ambito del Protocollo VoIP SIP
Il protocollo SIP e le specifica RFC 4733 prevedono 3 standard per l’invio dei toni DTMF nell’ambito di una chiamata VoIP. Questi metodi sono rispettivamente chiamati: RFC2833, Inband, SIP INFO. I primi due standard prevedono l’invio dei toni nell’ambito del flusso RTP di una chiamata; il terzo metodo prevede l’invio dei toni direttamente all’interno del flusso SIP.
Per chiarire il concetto, nell’immagine sotto stante sono rappresentati i tre “flussi di dati” che in genere compongono una chiamata con il protocollo VoIP SIP.
Il principale strumento con il quale eseguire l’analisi del protocollo SIP per evidenziare eventuali problematiche nella trasmissione dei toni DTMF è costituito dall’analizzatore di Protocolli Wireshark.
1) La modalità DTMF RTP Out of Band (RFC2833)
La RFC2833, oggi sostituita dalle RFC4733, introduceva una modalità di invio toni come messaggi testuali, all’interno del flusso RTP. I codici corrispondenti ai toni DTMF vengono trasmessi all’interno del flusso RTP sotto forma di messaggi di tipo “telephone-event“. La possibilità di trasmettere i DTMF via RTP deve essere preventivamente prevista nell’offerta SDP associata in genere all’INVITE e alla successiva risposta di 200 OK.
E’ curioso notare come, nonostante La RFC2833 sia ormai obsoleta e sostituita dalla RFC 4733, la maggior parte dei device VoIP SIP continua, per tradizione, ad indicare con il termine di RFC2833 la trasmissione dei toni RTP al di fuori della banda audio nell’ambito del protocollo VoIP SIP.
All’interno degli attributi audio SDP relativi ai codec, sono presenti anche le specifiche di utilizzo dei toni DTMF:
- rtpmap:101 telephone-event/8000: questa stringa indica il fatto che i toni dtmf sono trasmessi all’interno del flusso RTP come eventi con payload 101
- fmtp:101 0-15: indica che saranno disponibili i codici DMTF da 0 a 15 ossia i numeri da 0 a 9, i simboli * e #, oltre alle lettere “a,b,c”. l’eventuale indicazione 0-16 indica anche l’impiego della lettera “d”.
I Toni RFC 2833 nell’analisi Wireshark
I toni DMTF RTP Out fo band sono facilmente identificabili attraverso l’analisi del flusso SIP elaborata da Wireshark. Gli eventi DTMF sono evidenziati con la seguente dicitura: RTP (telephone-event) DTMF [numero] [cifra]. Ad esempio “RTP (telephone-event) DTMF Five 5” indica la trasmissione dell’evento corrispondente alla pressione del tasto “5”.
Cliccando sulla riga corrispondente all’evento, è anche possibile ispezionare il relativo pacchetto RTP
I Vantaggi e gli svantaggi dei Toni DTMF Out of Band RFC 2833
- L’utilizzo dei toni RTP Out of Band, costituisce il metodo preferibile e consigliato per l’invio dei toni DTMF durante una chiamata SIP.
- Si tratta di un metodo molto affidabile e indipendente dalla qualità del flusso audio e dal livello di compressione del codec audio impiegato.
- Il tono viaggia al di fuori della banda audio, come messaggio “testuale”.
- Il tono DTMF viaggia in modalità sincrona
2) La modalità DTMF RTP Inband (In Banda)
La modalità Inband costituisce ancora oggi il metodo più utilizzato per la trasmissione dei toni DTMF. I toni, in questo caso vengono trasmessi con gli stessi criteri della telefonia analogica, Essi vengono miscelati con il flusso della chiamata audio, all’interno della banda audio RTP.
in questo caso i toni viaggiano quindi in perfetta sincronia con il messaggio vocale ma la loro comprensibilità è fortemente legata alla qualità complessiva dell’audio trasmesso.
La qualità dell’audio, in particolare, è fortemente dipendente non solo dalla connettività impiegata ma anche dal codec utilizzato. E’ infatti indispensabile utilizzare un codec a bassa compressione come il G711. Il consiglio di VoipVoice è quello di impiegare la modalità Inband escusivamente con i codec G711A e G711U.
I Toni Inband nell’analisi Wireshark
I toni DTMF trasmessi con la codifica Inband sono identificabili (ascoltabili) attraverso la funzionalità “riproduci flussi” di wireshark. Normalmente è possibile identificare i toni visivamente all’interno del grafico in quanto corrispondono a dei picchi audio con una specifica forma d’onda. In caso di dubbi è anche possibile riprodurre il contenuto audio. Per identificare esattamente il tono DTMF digitato è però indispensabile provvedere ad esportare il campione audio per analizzarlo con un tool in grado di indentificare il tono DTMF.
I Vantaggi e gli svantaggi dei Toni Inband
- L’utilizzo dei toni RTP Inband, costituisce un metodo comune per l’invio dei toni DTMF durante una chiamata SIP.
- Si tratta di un metodo abbastanza affidabile ma fortemente dipendente dalla qualità audio della chiamata e dalla compressione del codec audio utilizzato.
- E’ utilizzabile solo con i codec a bassa compressione come il G711A e il G711U.
- Il tono viaggia all’interno della banda audio, miscelato alla conversazione.
- Il tono DTMF viaggia in modalità sincrona
- Si tratta di una metodologia fortemente legata ai metodi della vecchia telefonia analogica.
- In assenza di particolari vincoli, è sempre preferibile utilizzare la modalità RTP Out of Band indicata al punto 1.
3) La modalità DTMF SIP con metodo INFO (SIP INFO)
L’ultimo metodo per l’invio toni DTMF che prendiamo in considerazione, è quello che prevede l’utilizzo del flusso dati SIP. A differenza dei due metodi precedenti che impiegano il flusso dati RTP per inviare le segnalazioni, quest’ultimo impiega il metodo (richiesta) SIP di tipo “INFO”.
La “INFO” è una specifica richiesta prevista nell’ambito del protocollo SIP dalla RFC2976.
I toni, in questo caso sono ovviamente trasmessi al di fuori della banda audio RTP sotto forma di messaggi testuali. Come tali, essi non sono dipendenti dalla qualità audio o dal codec impiegato nella chiamata audio. Anche se questa modalità trova ancora qualche impiego, si tratta però di un metodo sconsigliato in quanto non sincronizzato con la trasmissione audio.
I Toni SIP INFO nell’analisi Wireshark
I toni trasmessi con il metodo SIP di tipo INFO sono facilmente identificabili all’interno della “sequenza del flusso” proposta dall’analizzatore Wireshark. Selezionando il metodo “INFO” è possibile evidenziare, nel “message Body” del metodo INFO, il codice trasmesso.
I Vantaggi e gli svantaggi dei SIP INFO
- L’utilizzo dei toni SIP INFO, costituisce un metodo sconsigliato per l’invio dei toni DTMF durante una chiamata SIP.
- Si tratta di un metodo poco affidabile per l’invio dei toni DTMF in quanto asincrono rispetto all’invio dell’audio.
- E’ utilizzabile con tutti i codec e non dipende dalla qualità audio della chiamata
- Il tono viaggia fuori dalla banda audio, nel flusso dati SIP.
- In assenza di particolari vincoli, è sempre preferibile utilizzare la modalità RTP Out of Band indicata al punto 1.
Consigli Pratici per l’utilizzo dei DTMF con il VoIP SIP
Dopo aver spiegato cosa sono i toni DTMF e analizzato tutte le metodologie previste dal protocollo VoIP SIP per la loro trasmissione è d’obbligo fornire dei consigli pratici per tutti gli installatori ed appassionati di tecnologia VoIP SIP.
Risulta chiaro che l’esigenza pratica di continuare ad utilizzare i toni DTMF nell’ambito delle trasmissioni telefoniche di tipo digitali è legata a motivi di compatibilità con le pratiche della telefonia analogica. Il metodo oggi più consigliabile per trasmettere oggi i toni DTMF con il VoIP SIP è quello che prevede l’invio dei toni in modalità “out of band” ossia al di fuori della banda audio della chiamata telefonica. Con questo metodo i toni vengono trasmessi e trasportati come messaggi testuali per poi essere riconvertiti nella fase terminale di interfacciamento con le linee PSTN. Questo metodo è generalmente indicato con il termine di “RFC 2833”. Solo pochi altri produttori di device SIP lo identificano con il termine di “RFC 4733”.
Anche la modalità Inband, per l’invio dei Toni DTMF, è ancora largamente impiegata nell’ambito della telefonia VoIP SIP nonostante le limitazioni legate alla qualità audio e all’impiego quasi esclusivo del codec G711. L’utilizzo della modalità DTMF tramite SIP INFO è infine sconsigliata per problemi legati all’asincronia con il flusso audio RTP e ai problemi che ne potrebbero derivare.
A livello pratico è infine sempre sconsigliabile l’impiego simultaneo di uno u più di questi metodi. Nella maggior parte dei casi si produrrebbero errori di riconoscimento del messaggio trasmesso, duplicazione dei toni inviati (es. viene riconosciuto “22” invece di “2”) oppure completo fallimento del messaggio inviato.
In tutti i casi di anomalia, lo strumento principe per analizzare, diagnosticare e risolvere qualunque problema legato alla gestione dei toni DTMF, è costituito dall’analizzatore di protocollo Wireshark.