GuideNetworking.it

Approfondimenti, tutorial ed esperienze sulle reti informatiche

Il protocollo SIP: il cuore del VoIP. Terza parte del corso Asterisk

Il protocollo SIP: il cuore del VoIP. Terza parte del corso Asterisk

Siamo giunti alla terza lezione del corso su Asterisk: il protocollo SIP. Il file di configurazione sip.conf contiene i dati per la configurazione di questo protocollo.

Gli elementi base di un sistema di comunicazione telefonica sono 3:

  • linee telefoniche voip (ci permettono di inoltrare e ricevere chiamate)
  • interni telefonici (i nostri apparecchi telefonici sulla scrivania)
  • centralino telefonico voip.

Queste tre cose devono essere collegate fra di loro ed integrarsi perchè il sistema funzioni correttamente. I telefoni devono poter “parlare” con il centralino. In realtà anche le “linee telefoniche VoIP” non sono altro che degli account sul server del provider, dunque il nostro centralino in qualche modo deve “parlare” anche con il server del provider per poter sfruttare queste linee.

Ma, come specificato nella nostra guida di base al networking, due dispositivi per comunicare fra di loro devono conoscere entrambi un “protocollo di comunicazione”. Bene, in questo caso il protocollo di comunicazione usato dal server, dal centralino telefonico e dai telefoni è il protocollo SIP.

Prima di proseguire facciamo una breve introduzione del protocollo SIP.

La tecnologia VoIP, infatti, basa il suo funzionamento su due protocolli fondamentali: uno utilizzato per la segnalazione, protocollo SIP, ed un’altro incaricato del trasporto dati, protocollo RTP, entrambi del livello applicativo della pila ISO/OSI.

protocollo SIP

Il protocollo SIP, stabilisce sessioni audio, video, e dati basandosi su messaggi di request responce (molto simili al protocollo HTTP).

I componenti di base protagonisti del protocollo SIP sono tre:

  • SIP User Agent (UA). E’ il dispositivo (end-point) che accetta o richiede una comunicazione (dunque funziona da client e/o server in maniera dinamica). Quando funge da client, dà inizio alla transazione originando richieste. Quando funge da server, ascolta le richieste e le soddisfa, se possibile.
  • Registrar Server: è un server dedicato o collocato in un proxy. Quando un utente è iscritto ad un dominio, invia un messaggio di registrazione del suo attuale punto di ancoraggio alla rete ad un Registrar Server.
  • Proxy Server: è un server intermedio; può rispondere direttamente alle richieste oppure inoltrarle ad un client, ad un server o ad un ulteriore proxy. Un proxy server analizza i parametri di instradamento dei messaggi e “nasconde” la reale posizione del destinatario del messaggio – essendo quest’ultimo indirizzabile con un nome convenzionale del dominio di appartenenza.

messaggi di SIP per il controllo delle chiamate sono in formato testo, molto simili a quelli usati da HTTP per lo scambio di pagine web. I messaggi sono di richiesta e di risposta. Gli UAC inviano messaggi di richiesta. Questi vengono instradati fino a giungere agli UAS di destinazione i quali spediranno le risposte.

messaggi di richiesta SIP Sono:

  • INVITE: invita uno o più utenti a partecipare ad una sessione e negoziazione dei parametri di chiamata
  • ACK: conferma che l’UAC ha ricevuto una risposta finale ad una richiesta
  • BYE: indica l’abbandono della sessione da parte di un utente
  • CANCEL: annulla una richiesta
  • OPTIONS: Richiede informazioni sullo stato di un server, sui tipi di flussi di dati che può accettare e generare, sui metodi supportati
  • REGISTER: Registra l’indirizzo di uno User Agent all’interno di un server.

Le risposte, analogamente a HTTP, sono rappresentate da un codice di stato di tre cifre di cui la prima identifica la tipologia di risposta

  • (1XX) Provisional: la richiesta è stata ricevuta, ma il server la sta ancora processando
    • 100 Trying. Informa l’UA che la richiesta stata ricevuta correttamente e che la si sta
      processando.
    • 180 Ringing. Informa l’UA che la richiesta INVITE e stata ricevuta correttamente e che
      si sta allertando l’utente.
  • (2XX) Success: la richiesta ha avuto successo.
    • 200 OK. Indica che l’operazione e stata eseguita senza errori.
    • 202 Accepted. Indica che l’UA ha ricevuto e compreso la richiesta, ma che ancora non è stata eseguita per un qualche motivo.
  • (3XX) Redirection: la richiesta deve essere smistata ad un nuovo indirizzo
  • (4XX) Request Failure: la richiesta non è andata a buon fine a causa di un errore da parte del client
    • 400 Bad Request. Indica che la richiesta è sbagliata.
    • 401 Unauthorized. Indica che l’utente non è autorizzato.
    • 403 Forbidden. Indica che la richiesta è vietata.
    • 404 Not Found. Indica che la richiesta non trova riscontri.
  • (5XX) Server Failure: il server non riesce a processare la richiesta
  • (6XX) Global Failure: nessun server può elaborare la richiesta
I campi header più importanti sono:
  • Via. Mostra il protocollo di trasporto utilizzato e la richiesta di percorso (ogni proxy aggiunge una linea in questo campo).
  • From. Mostra l’indirizzo del chiamante.
  • To. Mostra l’indirizzo dell’utente chiamato.
  • Call-Id. Identificatore univoco per ogni chiamata, contiene l’indirizzo host. Esso deve esserelo stesso per tutti i messaggi all’interno di una transazione.
  • Cseq. Inizia con un numero casuale ed identifica in modo sequenziale ciascun messaggio.
  • Contact. Mostra uno o più indirizzi presso i quali pu essere contattato l’utente.
  • User Agent. Il nome dell’utente che avvia la comunicazione.
  • Subject. Indica il soggetto della sessione.
  • Max-Forwards. Indica il numero massimo di proxy e gateway attraverso i quali può essere inoltrato il messaggio.
  • Content-Type. Indica il tipo di contenuto del corpo del messaggio.
  • Content-Length. Indica la dimensione in byte del corpo del messaggio

Dopo aver introdotto il protocollo SIP vediamo cosa centra con il nostro file di configurazione sip.conf.

Ripartiamo dall’esempio fatto nella prima lezione:

[6001]
type=friend
context=from-internal
host=dynamic
secret=unsecurepassword
disallow=all
allow=ulaw

Abbiamo usato il codice qui sopra per definire un interno telefonico. Infatti questi dati li abbiamo usati per collegare al nostro centralino il softphone Zoiper.

All’interno del file sip.conf definiamo i parametri per la configurazione di tutti gli “apparati” che devono collegarsi al centralino telefonico Asterisk tramite il protocollo SIP: telefoni e provider.

Possiamo pensare un file sip.conf diviso in tre sezioni:

  • la prima parte per le configurazioni generali del protocollo.
  • la seconda parte per la definizione dei collegamenti ai Provider SIP
  • l’ultima parte dedicata alla definizione degli interni.

Per ora tralasciamo le prime due e ci concentriamo sull’ultima in cui dobbiamo aver inserito la configurazione scritta sopra. Vediamo un pò meglio cosa significano questi parametri.

Innanzitutto la definizione della sezione fra parentesi quadre che è il numero dell’interno.

La seconda riga è

type=friend

L’opziomne type può avere tre valori:

  • user: un interno che si autentica a Asterisk utilizzando il campo From (una linea del messaggio SIP) per le chiamate uscenti.
  • peer: un interno che si autentica per le chiamate entranti utilizzando l’indirizzo IP e la porta.
  • friend: è un dispositivo che è sia  un user che un peer allo stesso tempo.

La riga:

context=from-internal

l’abbiamo già commentata nella precedente lezione. Specifica il contesto all’interno del dialplan nel quale avrà accesso l’interno.

Il parametro host:

host=dynamic

Se l’interno si connette remotamente con un indirizzo IP dinamico si inserisce dynamic. In caso contrario si inserisce direttamente l’indirizzo IP.

Poi specifichiamo la password da utilizzare per la registrazione sul centralino

secret=unsecurepassword

Infine disattiviamo tutti i codec audio e video:

disallow=all

Ed attiviamo solo quelli che vogliamo usare:

allow=ulaw

In realtà le opzioni utilizzabili per la configurazione di un interno SIP sono tantissime. Per conservare un orientamento pratico di queste pagine non elenchiamo qui tutti i parametri possibili ma li vedremo nel corso della nostra trattazione per fare in modo di “vederle in azione”.

All’interno del file sip.conf  non configuriamo solo gli interni di un centralino telefonico VoIP ma anche le linee di collegamento con il mondo esterno, in pratica le linee telefoniche.

Come specificato nell’articolo sull’introduzione ai centralini voip il nostro centralino basato su Asterisk è in grado di gestire diverse linee telefoniche:

  • RTG o PSTN sono le linee telefoniche analogiche tradizionali
  • ISDN sono le linee digitali più diffuse negli uffici fino a qualche anno fa
  • Linee telefoniche mobili – sim telefoniche
  • Linee telefoniche Voip.

Per poter gestire le prime tre tipologie di linee dobbiamo usare degli “adattatori” che si collegano da una parte con le linee da gestire e dall’altra con il centralino telefonico VoIP. In pratica non fanno altro che “trasformare” il segnale da gestire (PSTN, ISDN, GSM) in un segnale “VoIP”.

Fatta questa considerazione, per ora vediamo come funzionano le linee VoIP.

Per prima cosa è necessario acquistare una linea VoIP da un provider telefonico.  Esistono fondamentalmente due tipologie di linee telefoniche VoIP:

  1. Linea telefonica VoIP utilizzata esclusivamente per effettuare chiamate. In questo caso non ci viene assegnato alcun numero telefonico con prefisso nazionale e non possiamo ricevere chiamate in ingresso. L’acquisto di questa tipologia di linee è molto semplice non essendoci numeri associati. Se sei interessato ad effettuare qualche test puoi contattarmi ti forniremo una linea di questo tipo senza costi di canoni mensili.
  2. Linea telefonica con numerazione nazionale associata. Questa è una vera e propria linea telefonica che può essere usata sia in ingresso che in uscita.

Dopo aver acquistato la linea telefonica da un provider ci saranno forniti:

  • un nome utente (user)
  • una password (pwd)
  • un server voip (sip.provider.it)

Con queste informazioni siamo pronti a configurare una linea telefonica VoIP sul centralino Asterisk.

La configurazione deve essere fatta all’interno del file sip.conf. Configurare una linea telefonica VoIP in Asterisk significa configurare un trunk.

Qui non posso essere preciso perchè la configurazione può cambiare in base alle specifiche del provider.

Per la continuazione del lavoro consideriamo che abbiate acquistato la linea telefonica da noi. La configurazione di un trunk all’interno del file sip.conf la vedremo più avanti.

Per ora ti saluto e spero tu sia soddisfatto/a di questo lavoro, alla prossima!

 

 

 

Lascia un commento

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.