Configurazione ATA Cisco SPA 112 con VoIP WindTre

By ldsandon, 2 September, 2020

Mi è capitato di dover configurare recentemente un ATA Cisco SPA 112 (uscito di produzione pochi mesi fa) per funzionare con il VoIP di WindTre. Poiché WindTre è molto parca di informazioni quando si chiedono le configurazioni VoIP per utilizzare un modem non WindTre, riporto la configurazione fatta che è funzionante, dovrebbe essere applicabile anche ai più rencenti Cisco ATA 191 e 192, e può essere utile anche per chi deve configurare ATA diversi.

NB: questa configurazione funziona per questa specifica installazione. Usatela a vostro "rischio e pericolo". Non sono responsabile di qualsiasi problema o danno possa causare alla vostra installazione e al vostro utilizzo.

Configurazione per funzionamento con NAT

Innanzi tutto, se l'ATA è posizionato dietro un router con NAT e IP dinamico, e non ha un suo indirizzo pubblico, è necessario configurare alcuni parametri in Voice > SIP > Nat Support parameters:

  • Abilitare "Substitute VIA Addr" ("yes") così che l'IP:porta pubblici del NAT sostituiscano nel campo VIA di SIP quelli privati.
  • Abilitare "STUN Enable" ("yes")
  • Impostare "STUN Server" con un server STUN adeguato
  • Impostare "NAT Keep Alive Intvl" ad un valore che tenga conto della durata del mapping NAT del router in uso. Impostare un valore un poco minore, così che la sessione NAT sia rinnovata prima che scada.

L'utilizzo di STUN permette all'ATA di rilevare l'IP:porta usato dal NAT, ed il tipo di NAT. Il mapping NAT non funziona con NAT simmetrico.

Con IP pubblico statico è possibile impostare direttamente la voce "EXT IP", ed evitare di usare STUN.

Quindi in Voice > Line1 > Nat Settings:

  • Abilitare "NAT Mapping Enable" ("yes"), così da utilizzare gli IP:porta del NAT nei messaggi SIP
  • Abilitare "NAT Keep Alive Enable" ("yes"), per tenere aperta la sessione NAT anche quando non c'è traffico

È possibile eliminare i keep alive e la risoluzione STUN impostando un port forwarding sul router o utilizzando ALG per SIP (se presente e se funziona senza problemi).

Un problema del port forwading è che la porta SIP è aperta a tutti. In questo caso provare ad abilitare "Restrict Source IP" in Voice > Line1 > SIP Settings che restringe l'accesso solo agli IP risolti per Proxy o Outbound Proxy. Altrimenti sono consigliabili delle regole di firewall che limitino l'accesso solo ai server WindTre, se sono noti.

ALG è purtroppo noto per creare spesso più problemi di quelli che risolve, tutto dipende da quanto è buona l'implementazioen del router utilizzato.

Ovviamente, fate attenzione che l'interfaccia di amministrazione non sia raggiungibile direttamente dall'esterno. Chiunque entri in possesso dei parametri di configurazione può poi usarli per fare chiamate, e la responsabilità di qualsiasi utilizzo è vostra.

Nota: se non avete un IP statico, quando l'indirizzo IP cambia l'ATA potrebbe non funzionare finché non si ri-registra. Possibili soluzioni sono:

  • Riavviare l'ATA:
    • invocando l'URL (anche utilizzando le funzioni usare per i DDNS)
      http://<ip_o_host>/reboot&xuser=<username>&xpassword=<password>
      dove <ip_o_host> è l'indirizzo dell'host, e <username> e <password> sono le password dell'utente. Deve essere l'utente di livello "Admin", nonostante il comando Reboot sia disponibile anche all'utente di livello user. Se usate questo metodo, fate molta attenzione alla sicurezza della password, perché dovete metterla in chiaro da qualche parte, e dà accesso alle credenziali SIP.
    • Inviare un messaggio SIP NOTIFY con Event: restart_now
  • Provare ad usare $REGISTER invece di $NOTIFY in Voice > Line1 > NAT Settings

C'è una utility Windows e una libreria Python per automatizzare il riavvio (non li ho mai usati, li riporto come riferimento, vale la nota all'inizio dell'articolo).

Configurazione dell'accesso al server VoIP

Le informazioni fornite dal supporto tecnico WindTre possono non essere sufficienti. A me è stato fornito solo dominio, utente e password, ma la configurazione richiede anche l'outbound proxy.

In Voice > Line1 > Proxy and Registration:

  • Impostare "Proxy" a "windtre.it"
  • Impostare "Outbound Proxy" a "voip.windtre.it"
  • Abilitare "Use Outbound Proxy" ("yes")

In Voice > Line1 > Subscriber Information:

  • Impostare "Display Name" con quello che si vuole appaia come "CallerID"
  • Impostare "User ID" con l'utente fornito da WindTre
  • Impostare "Password" con la password fornita da WindTre

Se non si autentica:

  • Impostare "Auth ID" con l'utente fornito da WindTre
  • Abilitare "Use Auth ID" ("yes")

Attenzione: l'indirizzo dell'outbound proxy voip.windtre.it è risolto solo se si usano i DNS di WindTre. Se i DNS in uso sono altri (Google, Cloudflare, ecc.) l'indirizzo non verrà risolto e la registrazione non funzionerà. La soluzione più semplice è quella di impostare i DNS WindTre manualmente sull'ATA in Network Setup > Basic Setup > Internet Settings. In alternativa se si usa un proprio DNS è possibile impostare un forwarding condizionale.

A questo punto l'ATA dovrebbe essere in grado di registrarsi correttamente con il VoIP WindTre ed i telefoni collegati funzionare. È possibile però che l'ATA sia impostato di default con configurazioni telefoniche USA (es. i toni di libero, occupato, ecc.) ma è possibile modificarle, e ottimizzare altre impostazioni.

Modifica dei toni

Modificare i toni in Voice > Regional > Call Progress Tones, usando le impostazioni di questa pagina:

https://www.infovi.net/blog/regionalizzare-ata-ciscolinksys/

È particolarmente necessario se avete apparati che si basano sui toni per verifcare lo stato delle linea (telesoccorso, ecc.).

Modifica della suoneria

Per impostare il segnale elettrico che attiva la suoneria dei telefoni con i parametri utilizzati in Italia, in Voice > Regional > Ring and Call Waiting Tone Spec:

  • Impostare "Ring Waveform" a "Sinusoid"
  • Impostare "Ring Voltage" a "80"
  • Impostare "Ring Frequency" a "25"

Modifica del Dial Plan

Un Dial Plan (Voice > Line 1 > Dial Plan) basato sulle numerazioni Italiane può essere:

(*xx|00|11[2358]S0|0[1-9]xxxxxxxx.|3xxxxxxxxxS0|800xxxxxxS0|xxxxxxxxxxx.)

Questo Dial Plan offre queste specifiche funzionalità:

  • Supporto chiamate internazionali (00)
  • Chiamata immediata dei numeri di emergenza (sequenza 11[2358]S0 )
  • Supporto numeri telefoni fissi (sequenza 0[1-9]xxxxxxxx. )
  • Chiamata immediata dei numeri cellulari (sequenza 3xxxxxxxxxS0 )
  • Chiamata immediate numeri "800" (sequenza 800xxxxxxS0 )

Altre ottimizzazioni

Modificare la dimensione del pacchetto RTP

In SIP > RTP Parameters modificare "RTP Packet Size" in 0.020 (dimensione del pacchetto di 20ms).

Impostazione dei codec preferito

È probabile che WinTre supporti solo G.711 A-law (indicato come G.711a) e G.729. Poiché G.711a ha una migliore qualità audio, impostarlo come "Preferred Codec" in Voice > Line 1 > Audio Configuration. La versione μ-law (G.711u) è usata in Nord America e Giappone, mentre la A-law altrove.

G711 usa più banda di G.729, se avete una connessione con veramente poca banda, specialmente in upload, potete decidere di impostare G.729 come codec preferito.

Impostare modalità di trasmissione DTMF

WindTre sembrerebbe richiedere la modalità RFC 2833 / RFC 4733, che corrisponde alla modalità "AVT" dello SPA-112. L'impostazione di "DTMF Tx Method" su "Auto" in Voice > Line 1 > Audio Configuration dovrebbe funzionare nella maggior parte dei casi. Si possono provare alte impostazioni se si hanno difficoltà con alcuni IVR. Notare che con il codec G.729 la modalità "in-band" (toni trasmessi direttamente come suoni) potrebbe non funzionare.

Disabilitare il provisioning

Se non si lo si usa, disabilitare la funzione di "provisioning" che permette di configurare l'ATA da remoto. In Voice > Provisioning > Configuration Profile impostare "Provision Enable" a "no".

Abilitare Provisional Acknowledgement

In Voice > Line1 > SIP Settings impostare "SIP 100REL Enable" a "yes". Questa opzione permette di inviare messaggi di stato "provvisori" durante alcune fasi delle chiamate, per una migliore gestione delle stesse.

Diminuire l'attesa massima fra numeri digitati

Per abbreviare il tempo di riconoscimento di fine digitazione del numero, è possibile diminuire il tempo di "Interdigit Long Timer" in Voice > Regional > Control Timer Values (sec). Provare ad impostarlo a 4. È comunque sempre possibile indicare all'ATA la fine del numero digitando  #.

Abilitare modalità T.38 per i fax

Se avete necessità di usare ancora un fax e non funziona, provare ad abilitare "FAX Enable T38" in Voice > Line1 > Audio Configuration.

Identificazione del chiamante

Non ho la funzione attiva, quindi non ho potuto ancora verificare questa parte.

Risoluzione dei problemi

Per cercare la causa di eventuali problemi l'interfaccia web non è di molto aiuto. È possibile abilitare la modalità di debugging che però richiede un server Syslog per ricevere e visualizzare i messaggi.

Per attivare la modalità di debug, in Voice > System > Miscellaneus Settings:

  • Impostare in "Syslog server" l'indirizzo IP e la porta del server syslog (porta di default 514).
  • Impostare in "Debug server" l'indirizzo IP e la porta del server syslog (porta di default 514).
  • Impostare "Debug level" ad un valore maggiore di 0, maggiore è il valore maggiore è il dettaglio delle informazioni.
  • Per abilitare il logging dei messaggi SIP, è necessario impostare "SIP Debug Option" in Voice > Line1 > SIP settings ad un valore adeguato.

Se si abilita il log in Administration > Log > Log settings non si ottengono le informazioni relative alle sessioni SIP. L'analisi dei messaggi richiede inevitabilmente una certa dimestichezza con il funzionamento di SIP.