Categories
Networking

Configurazione ATA Cisco SPA 112 con VoIP WindTre

This post is in Italian because moslty useful for Italian readers only.

Mi è capitato di dover configurare recentemente un ATA Cisco SPA 112 (uscito di produzione pochi mesi fa) per funzionare con il VoIP di WindTre. WindTre è molto parca di informazioni quando si richiedono le configurazioni VoIP per utilizzare un modem non WindTre, e lo SPA 112 ha in più un notevole numero di impostazioni per adattarlo agli standard di diversi paesi, ma che di default sono quelle USA e non ci sono “profili” selezionabili che permettono una rapida riconfigurazione.

Riporto la configurazione fatta che è funzionante, dovrebbe essere applicabile anche ai più recenti 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’implementazione 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. Nel caso, possibili soluzioni sono:

  • Riavviare l’ATA:
    • invocando l’URL (anche utilizzando le funzioni usate 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

I toni di default che l’ATA emette per le varie fasi di una chiamata sono quelli standard per gli USA. Per avere quelli Italiani, modificare i toni in Voice > Regional > Call Progress Tones, usando le impostazioni di questa pagina.

È particolarmente necessario se avete apparati che si basano sui toni per verificare 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

I Dial Plan permettono all’ATA di riconoscere le sequenze di numeri telefonici, ammettere solo quelle riconosciute, e iniziare una chiamata quando riconosce che un numero è completo. Di nuovo, il valore di default è adatto agli USA.

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 )

Identificazione del chiamante

Aggiornamento 2022-10-12. Testato con In Vista attivo, e funziona con le impostazioni seguenti.

Per ricavare il numero chiamante dal messaggio SIP, sotto Voice > SIP > SIP parameters:

  • “Caller ID Header” impostato a “PAID-RPID-FROM”, che significa verificare la presenza del numero di telefono nei campi “P-ASSERTEDIDENTITIY”, “REMOTE-PARTY-ID” e “FROM”, in quest’ordine. Altre impostazioni potrebbero funzionare, dipende da che campo del messaggio SIP Wind usa effettivamente per la trasmissione.

Per la trasmissione dall’ATA al telefono, sotto Voice > Regional > Miscellanous

  • “Caller ID Method” impostato a “ETSI FSK”
  • “Caller ID FSK Standard” impostato a “v.23”

Queste impostazioni sono lo standard nella maggior parte dei paesi Europei, e dovrebbero essere supportate da telefoni omologati per l’Italia. Sui miei cordless DECT Panasonic funziona correttamente. Su alcuni telefoni economici importati direttamente dalla Cina potrebbero funzionare meglio con le impostazioni USA (Bell), usate anche in Cina.

Nota: i numeri di telefono Italiani sono trasmessi senza alcun prefisso internazionale, tenetene conto per il matching con numeri nella rubrica dei telefoni.

Altre ottimizzazioni

Impostazione dei codec preferito

WindTre al momento supporta solo i codec 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.

Modificare la dimensione del pacchetto RTP

In SIP > RTP Parameters modificare “RTP Packet Size” in 0.020 (dimensione del pacchetto di 20ms), come da link sopra.

Impostare modalità di trasmissione DTMF

WindTre richiede 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.

Modificare le impostazioni per l’avviso di chiamata e gestire due chiamate

Il VoIP di Wind permette di gestire due chiamate in entrata/uscita. Il tasto per mettere in attesa una chiamata e riceverne/effettuarne un’altra è il tasto R presente su molti telefoni. Questo tasto esegue un “flash” del circuito, e deve essere riconosciuto come tale dall’ATA. Le impostazioni di default dello SPA 112 potrebbero richiedere una lunga pressione del tasto. Per rendere l’operazione più comoda, impostare i seguenti parametri in Voice > Regional > Control Timer Values:

  • “Hook Flash Timer Min” a 0.05 (sembra che l’help sia sbagliato e che questo valore sia in “minuti”, non “secondi”).
  • “CPC Duration” a 0.1 (controlla dopo quanto tempo si torna al tono di libero dopo che il chiamante ha riattaccato).

Alcuni telefoni permettono di modificare la durata di un evento flash (consultate il manuale), ma la durata potrebbe comunque essere troppo breve con le impostazioni di default.
In Voice > Line 1 > Audio Configuration impostare “Hook Flash Tx Method” a “AVT”, l’evento flash viene inviato come codice specifico via RTP (RFC 2833).

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”. In questo modo non è possibile ri-configurare l’ATA da remoto.

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  #.

Modificare l’impedenza della porta FXS

In Voice > Regional > Miscellanous, impostare “FXS Port Impedance” a “270+750||150nF” che è il valore di riferimento ETSI, e usato anche nella documentazione TIM per la telefonia tradizionale analogica in Italia.

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.

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.

Problemi noti

  • Se attivate il blocco del Caller ID tramite i Vertical Service Activation Codes dello SPA 112 (es. *67 o *81), le telefonate in uscita non funzioneranno più (quelle in entrata continueranno a funzionare). La ragione è che nell’header del messaggio INVITE il campo From è impostato a Anonymous <sip:anonymous@localhost>. Questo non piace al proxy VoIP di Wind che risponde con 407 Proxy Authentication Required (e con un campo Warning: 399 <host>.nokia.com "IP association no match, user not registered"), anche se altri campi contengono correttamente l’identità del chiamante (Remote-Party-ID, Contact). La soluzione è disattivare il blocco (codici *68 e *82 rispettivamente).