SIP e VoIP
SIP svolge alcune funzioni necessarie per la gestione di una trasmissione VoIP:
-localizza l'utente, associando lo username di un utente con l'indirizzo IP usato in quel momento.
-definisce i mezzi che ha a disposizione un utente e quali codec supporta
-informa la rete dello stato in cui si trova l'utente
-stabilisce i parametri della comunicazione
-gestisce i servizi supplementari, come l'aggiunta di più utenti ad una conversazione, il trasferimento delle chiamate, … .
Protocolli usati da SIP
La gestione di una chiamata avviene con la creazione di un flusso audio/video accanto ad un flusso di controllo, come l'RTCP. Per rendere più semplice il protocollo di comunicazione si utilizzano altri protocolli:
-RTSP (usa IP) serve per controllare (avanti/indietro…) le trasmissioni in streaming. Non è detto che sia utile.
-SDP è contenuto dei messaggi SIP.
-SIP usa TCP/UDP e Definisce i parametri della connessione.
-T.120 serve per mandare dati.
SDP (Session Description Protocol)
SDP ha il compito di definire i parametri delle sessioni multimediali SIP. Grazie a SDP i partecipanti alla conversazione SIP capiscono quali siano:
-il numero dei flussi dati/controllo.
-il tipo dei dati.
-codec di comunicazione.
-il protocollo di trasporto.
-la banda da utilizzare.
-gli indirizzi e le porte coinvolte.
-il tempo di inizio e di fine del flusso (per lo streaming).
-informazioni sulla sorgente.
SDP esisteva già prima dell'introduzione di SIP e quindi alcune sue parti non sono più utilizzate da SIP. I messaggi SDP sono in formato testuale e possono essere inclusi in pacchetti SIP, mentre le informazioni di controllo viaggiano a parte.
Alcuni attributi di SDP sono:
-v, versione.
-o, chi ha creato la sessione.
-s, il nome della sessione.
-u, URI della sessione.
-m, numero del media e indirizzo di trasporto.
Componenti SIP
Per gestire SIP sono necessari alcuni server accessori:
-User Agent (Client-Server). La parte client serve per inviare una richiesta di chiamata, al contrario il server serve per rispondere ad una richiesta. Questa parte può essere svolta da un software oppure da un terminale utente con l'aspetto di telefono.
-Registrar Server serve a raccogliere tutte le informazione sugli utenti connessi. Associa ad un cliente un indirizzo IP. Serve inoltre a gestire dei meccanismi di autenticazione, consultando un AAA Server.
-AAA Server contiene le informazione di autorizzazione, accounting e autenticazione necessarie alla gestione della rete. Questo server è normalmente già presente sulla rete per altri scopi.
-Location Server serve per cercare e localizzare un utente, siccome gli user possono cambiare IP.
-Proxy Server (Outbound/inbound) serve per connettersi verso domini esterni, in quanto SIP è basato su domini. Risolve anche problemi di NAT, in quanto può svolgere funzioni di relay (un client può chiamare il proxy server al posto che un altro client direttamente).
-Redirect Server serve per redirigere il traffico a seconda di alcune condizioni (tenta, ad esempio, di "inseguire" l'utente in base ad indirizzi IP noti).
-Media Server serve per contenere le caselle vocali (segreterie telefoniche), in modo da essere raggiungibili in ogni momento, anche quando il client è spento. Può contenere anche dei messaggi preregistrati per svolgere funzioni.
-Media Proxy serve per filtrare il traffico A/V o effettuare transcodifiche. Viene usato per semplificare i client.
-MCU serve per svolgere funzioni di mixer (per trasmissioni multicast). Viene usato per semplificare i client (il client non deve gestire chi entra/esce dalle conversazioni).
-Gateway serve per gestire i collegamenti con la rete telefonica.
Molto spesso i server sono raccolti su un'unica macchina (registrar, SIP proxy e Redirect, Media Proxy vanno a formare il SIP server).
Caratteristiche SIP
Gli indirizzi hanno la stessa forma della posta elettronica (nome@dominio). Anche il meccanismo di traduzione di alias->IP avviene in modo simile alla posta elettronica. La differenza è che nel DNS server non è presente l'indirizzo IP del destinatario, ma l'indirizzo IP del dominio del SIP server. In questo modo si consulta poi il Registrar server (che può essere collocato nel SIP server stesso), che associa l'indirizzo IP corretto. Nella fase di connessione (login) è necessario che il client si vada a registrare dal proprio SIP server.
L'indirizzamento tra domini segue la filosofia standard internet:
-
Questo indirizzo e-mail è protetto dallo spam bot. Abilita Javascript per vederlo.
-num_telefono@gateway, in cui il numero di telefono è un numero di rete telefonica.
E' possibile personalizzare il protocollo di trasporto, l'indirizzo multicast e il time to live.
Per la gestione dei domini SIP vengono usati due record DNS:
-record SRV da le informazioni sul server e sulle priorità. Il formato è _servizio._protocollo.nomedominio TTL Classe(IN per reti ip, …) tipo(SRV) Priorità(per gestire più server in un determinato ordine, priorità più alta associata a numeri più bassi) peso(per gestire il bilanciamento del carico, ad esempio si può dare ad un server il doppio del traffico rispetto ad un altro) porta (associata al protocollo) target.
-record NAPTR da le informazioni su un servizioIl formato è dominio-name classe NAPTR order (definisce le precedenze) preference (bilancia le richieste) flag service regexp (permette di definire gruppi di utenti) target (nome del servizio).
Conversione dei numeri di telefono
I numeri di telefono classici seguono lo standard E.164, mentre gli indirizzi SIP utilizzano un altro formato.
Per effettuare le chiamate da un terminale classico alla rete SIP è necessario avere dei meccanismi di conversione per rendere i numeri SIP compatibili.
In un certo senso, anche i numeri E.164, per mezzo dei prefissi, usano criteri gerarchici.
Al momento non ci sono standard, che permettano le chiamate da SIP verso la rete telefonica, mentre ENUM risolve il problema contrario.
Standard ENUM
Occorre disporre di un'applicazione (ENUM) con lo scopo di tradurre un numero in un dominio ed effettuare la richiesta al DNS. La procedura è riassumibile nei seguenti passi:
-si eliminano i caratteri che non sono cifre all'interno del numero di telefono (ad esempio il "+").
-si inverte il numero di telefono.
-si mettono dei punti tra una cifra e l'altra.
-il risultato è un nome DNS a cui si aggiunge e164.arpa.
-il DNS risponde con una lista di NAPTR, che contiene una regexp, che indica l'operazione da fare.
I casi possibili sono:
-chiamata da gateway VoIP verso SIP, il gateway traduce l'indirizzo e fa una richiesta al DNS. Il DNS restituisce l'IP del SIP server. A questo punto viene contattato il server SIP, che inoltra la chiamata all'utente (poiché il client potrebbe essere sotto NAT).
-chiamata da SIP a SIP, il DNS restituisce l'indirizzo del SIP server, che inoltra la chiamata.
Per realizzare una struttura SIP completamente funzionante è necessaria un'infrastruttura di scala mondiale. Al momento questa infrastruttura è difficile da realizzare, in quanto gli stati hanno visioni differenti sull'ente a cui affidare il controllo. In Germania, ad esempio, il controllo è stato affidato ad un'organizzazione neutra, in Cina e in Francia, invece, l'assegnazione del dominio è affidata all'ITU (dell'ONU).
Il problema si è risolto, facendo in modo che ogni nazione gestisca a modo proprio i numeri con il proprio prefisso nazionale.
I meccanismi di ENUM possono essere usati all'interno di reti più piccole. In questo caso si utilizzano numerazioni distinte a seconda se si vuole contattare un numero interno all'infrastruttura oppure un esterno.
Messaggi SIP
Essi sono composti da stringhe ASCII con il seguente formato:
-tipo del messaggio
-una serie di header SIP
-una linea vuota (CRLF)
-il Payload (SDP), che è opzionale.
I messaggi tipici sono:
-REGISTER serve per registrare un indirizzo SIP all'interno di un server. Il server è ricavato dal dominio. Le richieste di registrazione possono essere fatte a più server contemporaneamente.
-INVITE è la richiesta di comunicazione. Il messaggio viene mandato verso un server e può essere inviato anche durante una conversazione. Esso contiene una descrizione SDP, che indica i parametri di comunicazione.
-ACK indica una conclusione positiva alla richiesta di chiamata (viene generato dal chiamante) e viene inviata per iniziare la comunicazione vera e propria. Può contenere una descrizione SDP, che descrive i parametri di comunicazione (opzioni, protocolli, …).
-BYE indica la chiusura A/V.
-CANCEL cancella una richiesta di connessione ancora pendente. Può anche essere usato per chiudere le fork(), nel caso in cui uno stesso utente abbia registrazioni multiple su indirizzi IP diversi, nel momento in cui la chiamata abbia esisto positivo su uno degli indirizzi.
-OPTIONS dichiara le capacità dello user agent.
-SUBSCRIBE segnala la richiesta di voler conoscere lo stato di uno user agent.
-NOTIFY informa dello stato di un UA
-MESSAGE inoltra un messaggio (testo/XML) usato per l'istant messaging.
Le intestazioni degli header più importanti sono:
-From identifica il chiamante (in ogni fase della comunicazione)
-To indica il chiamato.
-Contact è l'indirizzo IP del chiamato.
-Via traccia i server SIP attraversati da un messaggio.
-Record Routing impone che tutti i pacchetti debbano attraversare i proxy server, al posto che raggiungere direttamente il destinatario (necessario in caso di NAT).
-Call-ID identifica la chiamata.
-Cseq indica la sequenza dei messaggi, in quanto è possibile il trasporto UDP, il quale non garantisce l'arrivo in ordine dei messaggi.
-Subject è il soggetto della chiamata.
-Content-type indica il tipo e il sottotipo del contenuto del pacchetto SIP (MIME).
-Content lenght indica la lunghezza del payload.
-Content encoding indica le elaborazioni sui messaggi (UTF-8, aschi, 7bit, …).
Le risposte possono sono composti da codici numerici. I principali sono:
-1xx indica risposte provvisorie:
--100 indica che si sta cercando il destinatario.
--180 indica che il destinatario è stato trovato e che il suo telefono SIP sta suonando.
--182 indica che la propria richiesta è in coda.
-2xx indica le risposte positive:
--200 OK.
-3xx indica la redirezione.
-4xx indica errori nel client (errore di sintassi o richiesta non eseguibile):
--404 indica che il destinatario non è stato trovato.
--407 indica un errore di autenticazione nel proxy.
-5xx indica errori nel server.
-6xx indica errori generici:
--600 indica che il destinatario è risultato occupato ovunque su tutti gli indirizzi.
--603 indica che la chiamata è stata rifiutata.
Nello standard le comunicazioni vengono distinte in:
-transazione sono i messaggi tra una richiesta e una risposta. In questa fase rimangono invariati From, to, call-ID e Cseq.
-dialogo è una relazione tra User Agent che inizia quando viene ricevuta una risposta positiva. Il destinatario è all'interno del campo contact.
Risoluzione di un indirizzo SIP
La risoluzione di un indirizzo SIP in un indirizzo IP è una fase necessaria, sia
per cercare un determinato utente per un messaggio INVITE, sia per effettuare una REGISTER. La procedura è:
-contattare un server DNS per una query NAPTR (si scoprono i nomi dei servizi)
-contattare il server DNS per una query SRV (si scoprono i server che svolgono quei servizi).
-contattare il server A/AAAA per gestire l'autenticazione.
Nel caso in cui ci siano risposte da parte del DNS alle richieste NAPTR e SRV (magari perché filtrate da un firewall), si usano nomi standard. In questo caso viene fatta direttamente la richiesta A/AAAA.
Solitamente le risposte del server DNS ad una richiesta NAPTR includono anche tutte le risposte SRV possibili.
Sicurezza e SIP
La sicurezza in SIP si ottiene nei seguenti modi:
-autenticando ogni utente, mediante l'AAA Server.
-cifrando il corpo dei messaggi SIP (non della telefonata) e dell'elenco dei nodi intermedi su cui è transitato il messaggio (è possibile che si creino dei loop).
-gestendo dei meccanismi per risolvere i problemi di spam e di Denial of Service.
| < Prec. | Succ. > |
|---|






