Benvenuto caro Lettore!

UF è un blog di ingegneria informatica pieno di articoli più o menoo tecnici. Iscriviti per rimanere aggiornato all'uscità dei prossimi articoli.

Ad Ad ads ads

Ricerca

11 gen 2012

Tutto quello che vuoi sapere su SIP



Nell’artico riguardante il VoIP, ho introdotto SIP (Session Initiation Protocol) come un protocollo di controllo che si occupa di segnalazione durante una comunicazione VoIP.
E’ un protocollo della IETF del livello applicazione descritto nella RFC 3261 che si occupa della creazione, gestione e chiusura di una comunicazione VoIP  (o di altre sessioni multimediali o testuali).
In quest’articolo, vedremmo gli elementi principali di SIP, analizzeremmo i suoi messaggi e il suo funzionamento.

Elementi


Gli elementi principali di SIP sono:

SIP User Agent:  sono gli attori della comunicazione. Possono essere usati sia in modalità server (rispondere alle richieste) sia client (inviare delle richieste).
Registrar Server: E’ un server che riceve da parte degli user agent iscritti a un dominio il loro attuale indirizzo IP che servirà poi per localizzarli. Inoltre usa i servizi di un server AAA per l’autenticazione.
Proxy Server: è un server intermedio serve a spedire i messaggi a domini esterni.
Può essere Outbound (Riceve tutte le chiamate uscenti di un User Agent vicino) o Inbound (Instrada le chiamate entranti in un dominio destinato a un User Agent vicino.)
Redirect Server: Usato per re instradare le richieste SIP verso destinazioni alternative (per esempio in assenza del destinatario).
Location Server:  è un database contenente informazioni sull'utente, come il profilo, l'indirizzo IP, l'URL.

In generale tutti questi server sono riuniti in un unico server chiamato SIP server.
Fin cui possiamo intuire che gli user agent comunicano fra loro mandandosi dei messaggi e usano dei server per la localizzazione e l’instradamento di questi messaggi.  Come sono fatti questi messaggi? 

Messaggi

I messaggi di SIP sono testuali e simili a quelli usati da HTTP per lo scambio di pagine web.
Ecco il formato dei messaggi SIP:


L’intestazione contiene informazioni sull’user agent sorgente e l’user agent destinatario del messaggio.
La linea vuota indica la fine dell’intestazione.
Il payload usa il protocollo SDP (Session description protocol) e descrive i parametri della sessione nel caso fosse multimediale (opzionale nel messaggio).
Ora vediamo i tipi di messaggi.

Tipi di messaggi SIP

INVITE: invitare un utente a partecipare a una comunicazione.
ACK: Notificare la ricezione di una risposta.
BYE: Terminare una comunicazione.
CANCEL: Anulare una richiesta (INVITE) prima ancora di averne ricevuta la risposta.
OPTIONS: Chiedere informazioni sulle capacità di un user agent.
REGISTER: Registrare l’attuale indirizzo di un user agent
      SUBSCRIBE: Richiedere lo stato di un user agent.
      NOTIFY: informare dello stato di un UA
      MESSAGE: mandare un messaggio (testo/XML) usato per l'istant messaging.

Ora vediamo i tipi di risposte.

Tipi di risposte 

Le risposte sono classificate con un codice di tre cifre, dove la prima indica la categoria. Le categorie principali sono:

1xx Risposte provvisorie:

100 Ricerca del destinatario in corso.
180 Il Telefono SIP del destinatario sta suonando.
182 Richiesta in coda.

2xx Risposte positive:

200 OK.

3xx Re direzione:

300 Scelta multipla
305 Uso del Proxy

4xx Errori nel client:

404 destinatario non trovato.
407 errore di autenticazione nel Proxy.

5xx Errori nel server:

503 Servizio non disponibile
505 Versione di SIP non supportata

6xx Errori generici:

  600 destinatario occupato su tutti gli indirizzi.
  603 chiamata rifiutata.

Ora che sappiamo un po’ di più sui messaggi scambiati, come funziona il SIP.

Funzionamento

La comunicazione in SIP è un insieme di dialoghi e transazioni. Per transazione intendiamo l’insieme dei messaggi scambiati fra la prima richiesta e la risposta finale  mentre il dialogo è un flusso di messaggi richiesta-risposta fra  due user agent.
Per l’inizio di una comunicazione SIP usa una transazione trapezoidale simile a un handshake a tre vie.

 

SIP usa i sia TCP sia UDP per il trasporto dei messaggi. In modalità TCP, si può anche aggiunge la cifratura usando TLS.
SIP deve poter localizzare un user agent associando il suo nome utente al suo indirizzo.
Come si svolge il Name Mapping?
Per associare un nome utente a un indirizzo come fa SIP? Prendiamo un esempio pratico.
Un nome utente è della forma  utente@dominio.ext
Dove dominio può essere il nome del server, l’indirizzo IP …
Per risolvere il problema SIP fa l’uso di tre servizi del server DNS (NAPTR, SRV, A/AAAA.)
NAPTR
È un record del server DNS che definisce quale protocollo di trasporto, deve essere usato per un certo servizio. Per il nostro caso il servizio è SIP e i protocolli di trasporto possibili sono:
TLS/TCP, TCP, UDP
Esempio
foo.com 43200 IN NAPTR 60 50 "s" "SIP+D2U" "" _sip._udp.foo.com

SRV
È un record del server DNS che definisce i parametri con quali accedere a un servizio. I parametri sono il server e la priorità.
Esempio
_sip._udp.foo.com 43200 IN SRV 10 10 5060 sipserver.foo.com.

A/AAAA
Questo è il record che si guarda per ultimo. Il record in questione ci da l’indirizzo per accedere ad un server.
Esempio
ns.foo.com. 43200 IN A 10.0.0.20

Per fare il name mapping SIP consulta questi tre record se sono presenti in quest’ordine NAPTR, SRV, A/AAAA.

Possiamo finire l’artico dicendo che SIP è protocollo di segnalazione semplice e leggero e fra l’altro è usato nel software Google Talk.
Segnaliamo anche che SIP usa lo standard Enum E.164 per permettere a telefoni tradizionali (PSTN) o IP di comunicare con un utente SIP ma questa è un’altra storia.
Se hai qualche dubbio aspetto le tue domande o chiarimenti.

Riferimenti e approfondimenti:
http://it.wikipedia.org/wiki/Session_Initiation_Protocol
http://www.voip-info.org/wiki/view/SIP
http://voip.html.it/articolo06.aspx
http://www.siptutorial.net/SIP/index.html
http://www.alma-web.net/index.php/faq/23-linux/27-il-protocollo-sip.html


Ti è piaciuto l'articolo..?

Ricevi gli aggiornamenti via mail:

Seguici!

0 commentaires:

Posta un commento

Ti è piaciuto l'articolo? Lascia un commento,fammi una domanda se hai dubbi o ambiguità.
Grazie!

Siamo su Facebook

Google+