SIP (Session Initiation Protocol) Lelio Spadoni
Argomenti trattati Repro SIP Proxy Introduzione al protocollo SIP Analisi di alcuni messaggi (SIP) come: register, invite, ecc Cenni sui protocolli SDP, RTP/RTCP Analisi sessioni voce, video (H.263) e dati (Instant Message).se rimane tempo Asterisk (PBX che utilizza il protocollo SIP) Per l analisi dei protocolli si fa uso dell analizzatore di protocollo Whireshark del quale vengono dati brevi cenni di funzionamento.
SIP Architettura di riferimento
RePro Introduzione Repro è un open-source free Server SIP rilasciato sotto licenza http://opensource.org/licenses/vovidapl.php; la versione (per Windows Xp) utilizzata in queste lezioni non è più disponibile in rete, ma ne esiste una versione aggiornata scaricabile. Si compone di: proxy, registrar, redirect e identity server. Può essere utilizzato per fornire servizi di telefonia, videochiamata e trasmissione dati su Internet. La sua installazione è semplice e fornisce una interfaccia di gestione friendly web based.
RePro Amministrazione e configurazione Il sistema di amministrazione di Repro può essere richiamato dall indirizzo http://127.0.0.1:5080; come si intuisce dalla lettura dell indirizzo URL, il Server è in ascolto sulla porta 5080. Dopo aver dato l invio compare la pagina di Login per entare nel sitema di gestione (Utente = admin, Password = admin).
RePro Configurazione minima Per configurare il funzionamento minimo del Proxy, si inzia inserendo un nuovo dominio. Dal menu CONFIGURE cliccare su DOMAINS e inserire nel campo New Domain il nome del dominio scelto, ad esempio: laboratorio.edu; premere il tasto Add per confermare.
RePro Configurazione minima Continua la configurazione inserendo due utenti. Dal menu USERS si clicca su ADD USER e si compilano I campi con I dati relativi ad un nuovo utente.
X-Lite 3 Introduzione X-Lite 3 (ma esiste anche la versione 4) è un softphone (telefono software) free, cioè lo strumento con il quale si può comunicare in modalità audio, video e dati attraverso la rete Internet (o una intranet). Lo stesso softphone ha una funzione per l invio di messaggistica tra utenti. Utilizza il protocollo SIP per la gestione delle sessioni di comunicazioni, il protocollo SDP per la descrizione della sessione e il protocollo RTP per il trasferimento dei dati mutltimediali
X-Lite 3 Configurazione utente Configuriamo ora X-Lite 3 in entrambi gli host. Nell host 192.168.1.100 mettiamo l utente pluto, mentre nell host 192.168.1.101 mettiamo l utente pippo.
X-Lite 3 Configurazione utente Utente dell host: 192.168.1.101 Utente dell host: 192.168.1.100
RePro Utenti registrati Una volta che I due utenti si sono registrati collegandosi attraverso l interfaccia web al ReproSipServer e cliccando su REGISTRATIONS è possibile vedere il loro AOR (Address of record), Contact e tempo di vita della registrazione (Expires).
SIP Proxy, Registrar, Location e Redirect server Il proxy server è un internediario tra il terminale chiamante ed il chiamato. Quando il proxy riceve una richiesta di inizio sessione la consegna direttamente al destinatario, se conosce il terminale dove si trova, oppure la passa ad un altro proxy e così via, fino a raggiungere la destinazione voluta. Il registrar server consente agli utenti SIP di registrarsi memorizzando nel location server la loro posizione attuale (indirizzo IP + porto). Il location server contiene un database dove sono inseriti tutti I dati degli utenti registrati; la risposta ad una query di ricerca fornisce l indirizzo dell utente cercato oppure l indirizzo del prossimo proxy da contattare per continuare la ricerca. Il redirect server invece di far arrivare una chiamata al destinatario restituisce il suo indirizzo al mittente; quest ultimo potrà inviare di nuovo la richiesta di chiamata all indirizzo fornitogli dal redirect server.
SIP Introduzione Il SIP è un protocollo che permette di gestire una comunicazione multimediale tra end-user. Sip gestisce una sessione di comunicazione, accordandosi sulle caratteristiche con l ausilio del protocollo SDP (Session Description Protocol); utilizza inoltre i protocolli RTP (Real Time Protocol) e RTCP (Real Time Control Protocol) per lo scambio e il controllo dei contenuti multimediali. Una rete basata su SIP si compone di diversi elementi: proxy, redirect, location, registrar server e da user agent.
SIP Messaggi Il protocollo SIP utilizza messaggi testuali in chiaro per la gestione di una sessione di comunicazione. I messaggi si compongono di: - una start line per identificare il tipo di messaggio (richiesta o risposta); - un campo header dove vengono specificate informazioni fondamentali relative alla sessione di comunicazione; - un campo boby che contiene il paylod del messaggio e se codificato rispettando il protocollo SDP consente la negoziazione dei parametri della sessione. I messaggi sono di due tipi: - richiesta; - risposta;
SIP Messaggio Register Questo tipo di messaggio è utilizzato dall User Agent (UA) per chiedere la registrazione presso un Registrar server; quest ultimo estrae dal messaggio I dati relativi alla posizione attuale dell utente e li registra nel Location server.
SIP Sequenza del messaggio Register Nel seguente diagramma delle sequenze è indicata la procedura di registrazione con la richiesta delle credenziali di accesso.
SIP Dettaglio del messaggio Register
SIP Autenticazione Nella cattura del messaggio Register abbiamo notato una fase di autenticazione; il server richiede al client di autenticarsi secondo lo schema Digest Authentication, che utilizza il paradigma challenge-response con il segreto condiviso (la password). Il server richiede l autenticazione al client inviandogli il nonce e altri dati; per essere autenticato, il client deve fornire al server la seguente risposta (response): MD5(HA1:nonce:nc:cnonce:qop:HA2) HA1=MD5(username:real:password) HA2=MD5(method:uri) - MD5 è l algoritmo che permette di ottenere un codice di lunghezza fissata a partire da dei dati di ingresso di lunghezza arbitraria; - nonce (number once) è il challenge generato dal server; - nc è il contatore degli once ed è generato dal client; - qop (quality of protection) livello di protezione richiesto dal server; - realm è il dominio di riferimento.
SIP Dettaglio della procedura di Autenticazione
SIP Messaggio Invite Questo tipo di messaggio è utilizzato dall User Agent per richiedere l apertura di una sessione, ad esempio audio, come nella figura seguente.
SIP Sequenza del messaggio Invite Nel seguente diagramma delle sequenze è indicata la procedura di instaurazione di un dialogo tra due client.
SIP Dettaglio del messaggio Invite
SIP Sequenza del messaggio Bye Nel seguente diagramma delle sequenze è indicata la procedura di chiusura di un dialogo precedentemente aperto tra due client.
SIP Dettaglio del messaggio Bye
SDP Introduzione - Cenni Il protocollo SDP (Session Description Protocol) è utilizzato dagli user agent per accordarsi sulle caratteristiche della sessione multimediale come ad esempio: il codec preferito, protocollo di trasporto da utilizzare, indirizzi IP e porte per il flusso dati, ecc Il formato dell informazione è il seguente: <type> = <value> type è l identificativo di un parametro della sessione; value è il valore del parametro Il modello per negoziare le potenzialità della sessione è quello della offerta/risposta; il chiamante inserisce le capabilities nel messaggio INVITE e il chiamato inserisce le proprie capabilities desiderate nel massaggio di OK.
SDP Elenco dei parametri
SDP Alcuni parametri o=<username> <session id> <version> <network type> <address type><address> username=identificativo user session id= identificativo univoco della sessione verison=numero di versione della sessione, utile in caso di update della sessione network type= tipo del network. IN indica internet address type=tipo di indirizzo. Opzioni possibili IPv4 e IPv6 address=indirizzo IP dell originator se unico o domain-name del dominio di appartenenza dell originator c=<network type> <address type> <connection address> network type= tipo del network. IN indica internet address type=tipo di indirizzo. Opzioni possibili IPv4 e IPv6 connection address= IP al quale si vogliono ricevere I dati se unico o domain-name del dominio di appartenenza
SDP Alcuni parametri m=<media> <port> <transport> <fmt list> media=descrive il tipo di media quali audio, video, data.. port=descrive la porta di ricezione del media transport=descrive il protocollo di trasporto usato per i dati (RTP/AVP indica il trasporto RTP con Audio, Video Profilo) fmt list= lista di formati media supportati ( 0 corrispondente a u-law PCM a 8kHz) altri
RTP/RTCP Real Time Protocol / Real Time Control Protocol - Cenni Definiremo Real-Time quell'insieme di entità tra le quali intercorrono relazioni la cui temporalità è un parametro imprescindibile. RTP e l'acronimo per Realtime Transport Protocol (protocollo di trasporto in tempo reale) e assolve a tutti i compiti necessari per instaurare una comunicazione real time. RTP si appoggia principalmente sul protocollo UDP (User Datagram Protocol)
RTP/RTCP Real Time Protocol / Real Time Control Protocol - Cenni RTCP e l'acronimo di Realtime Transport Control Procol ed e un protocollo di controllo che lavora parallelamente ad RTP e fornisce periodicamente informazioni sulla QoS (Quality of Service) e altre variabili della sessione, come ad esempio: - numero di pacchetti persi tra due host; - jitter medio rilevato; - informazioni sugli utenti attivi nella conferenza; - desiderio di uno o piu utenti di lasciare la sessione; RTP non necessita di RTCP per funzionare ma e consigliato utilizzare il protocollo di controllo per poter offrire un'esperienza migliore agli utilizzatori del nostro software e interfacciarsi con altri software che lo utilizzano.
SIP Comunicazione voce Con Whireshark è possibile la cattura di una comunicazione voce, che può anche essere riascoltata, oppure è possibile analizzare il flusso dei messaggi scambiati tra I vari users. Telephony >> VoIP Calls >> Player Telephony >> VoIP Calls >> Flow
SIP Comunicazione con Instant Message Il client X-Lite (entrambe le versioni 3 e 4) permette di scambiare messaggi tra gli utenti collegati. Nel file indicato in alto a destra della slide è possibile analizzare con Wireshark uno scambio di messaggi tra I due utenti pippo e pluto.
SIP Videochiamata H.263
Asterisk Introduzione Asterisk è un software che viene installato su di un server di rete ed ha la capacità di gestire contemporaneamente ogni tipo di comunicazione, sia questa video, audio o dati. Asterisk è open source ed è sviluppato dalla Digium (www.digium.com) in ambiente Linux (ma che può essere fatto girare anche sotto Windows con opportuni software di emulazione di un sistema Linux) che permette di realizzare a basso costo una soluzione completa di PBX (Private Branch exchange) voice over ip, ossia una vera e propria centralina telefonica per uso privato. Asterisk supporta tre protocolli VoIP: IAX (sviluppato specificatamente per Asterisk stesso), SIP e H.323.
Asterisk Architettura di riferimento
Asterisk Installazione Scaricare dalla rete il file indicato nella figura seguente che è la versione per Windows del noto centralino open source PBX Asterisk. Per l installazione, che non richiede particolari attenzioni, cliccare sul file appena scaricato e seguire le istruzioni a video.
Asterisk Configurazione A questo punto per fare delle prove si procede registrando due utenti. Per aggiungere Il primo utente pippo modificare il file sip.conf come segue: [pippo] nuovo utente type=friend l utente può fare o ricevere chiamate host=dynamic specifica il tipo di IP dinamico dtmfmode= rfc2833 dual-tone multi-frequency context=laboratorio definisce il contesto di riferimento username=pippo nome utente secret=pippo password canreinvite=no; evita la ripetizione dei messaggi invite disallow=all; disabilita tutti I codecs allow=ulaw; abilita il codec ulaw allow=alaw; abilita il codec alaw allow=speex; abilita il codec speex allow=gsm; abilita il codec gsm allow=h261; abilita il codec h261 allow=h263; abilita il codec h263 allow=h263p; abilita il codec h263p
Asterisk Configurazione Per aggiungere Il secondo utente pluto modificare il file sip.conf come segue: [pluto] nuovo utente type=friend l utente può fare o ricevere chiamate host=dynamic specifica il tipo di IP dinamico dtmfmode= rfc2833 dual-tone multi-frequency context=laboratorio definisce il contesto di riferimento username= pluto nome utente secret= pluto password canreinvite=no; evita la ripetizione dei messaggi invite disallow=all; disabilita tutti I codecs allow=ulaw; abilita il codec ulaw allow=alaw; abilita il codec alaw allow=speex; abilita il codec speex allow=gsm; abilita il codec gsm allow=h261; abilita il codec h261 allow=h263; abilita il codec h263 allow=h263p; abilita il codec h263p
Asterisk Configurazione Per aggiungere un contesto modificare il file extension.conf come segue: [laboratorio] specifica il contesto exten => 151, 1, Dial(SIP/pippo) impostiamo 151 come numero dell utente pippo exten => pippo, 2, goto(151, 1) in alternativa al numero è possibile digitare pippo exten => 152, 1, Dial(SIP/pluto) impostiamo 151 come numero dell utente pluto exten => pluto, 2, goto(152, 1) in alternativa al numero è possibile digitare pluto include => demo
Asterisk Configurazione Con la configurazione fatta fino ad ora I due utenti pippo e pluto possono comunicare tra loro come in una normale telefonata; per attivare anche la componente video si deve aggiungere nel file sip.conf l istruzione videosupport=yes, aggiungendola al contesto general : [general] context = demo ; videosupport=yes; contesto di defaul per le chiamate in ingresso
Asterisk Configurazione X-Lite 3 Utente dell host: 192.168.1.100 Utente dell host: 192.168.1.101
Asterisk Avvio PBX Una volta effettuata l installazione e la configurazione dei due utenti, lanciare l applicazione; per attivare il centralino PBX selezionare nell interfaccia grafica Tools >> PBX Start.
Asterisk Cattura con Wireshark Giunti a questo punto per iniziare la comunicazione è sufficiente che uno dei due utenti digiti sul suo softphone il numero dell altro e attenda in linea la risposta. Nei due file seguenti sono disponibili le catture fatte con Wireshark di una comunicazione voce e una videochiamata; nei due file sono visibili I messaggi SIP e gli altri protocolli SDP, RTP e RTCP.