Session Initiation Protocol

Versione del 2 ago 2005 alle 19:07 di MoriBot~itwiki (discussione | contributi) (robot Aggiunta: en, pl, fi, ja, nl, fr, de, pt)

Il protocollo SIP (Session Initiation Protocol) instaura, modifica e rilascia una sessione. Esso trova applicazione non solo nella telefonia su IP e nei servizi telefonici supplementari, ma anche nella video-comunicazione, nei giochi interattivi, nella messaggistica instantanea. Il protocollo è stato sviluppato a partire dal 1999 (Request for Comment 2543 e 3261) per iniziativa di IETF e fa parte della Internet Multimedia Conferencing Suite.

Il protocollo SIP ha fondamentalmente le seguenti funzioni:

  • Invitare gli utenti a partecipare ad una sessione:
    • localizzare gli utenti
    • acquisire le preferenze degli utenti
    • negoziare le capabilities
    • trasportare una descrizione della sessione
  • Instaurare le connessioni di sessione
  • Gestire eventuali modifiche dei parametri di sessione
  • Rilasciare le parti
  • Cancellare la sessione in qualunque momento si desideri.

SIP è un protocollo text-based, orientato al Web, simile ad HTTP, con una struttura client-server. Per instaurare una sessione, avviene un three-way handshaking (concettualmente simile a quello che avviene con il protocollo TCP). Alcune delle caratteristiche importanti del protocollo SIP:

  • è impiegabile sia in contesti client-server sia in contesti peer to peer.
  • è facilmente estendibile e programmabile
  • lavora sia con server stateless sia con server stateful.
  • e' indipendente dal protocollo di trasporto.

Un messaggio SIP è una richiesta o una risposta; una sequenza di una richiesta e una o più risposte è detta transazione: una transazione è identificabile da un transaction-ID, un identificativo che ne specifica la sorgente, la destinazione e il numero di sequenza.

Il protocollo SIP supporta la mobilità ed è dialog-oriented: un dialogo è una relazione persistente tra entità paritetiche che si scambiano richieste e risposte in un contesto comune.

Esempio di un messaggio SIP

Gli utenti SIP sono risorse identificabili o localizzabili mediante URI o URL che contengano informazioni sul dominio, sul nome-utente, sull'host o il numero col quale l'utente partecipa alla sessione. Gli indirizzi sono stile e-mail. Esempi fittizzi possono ad esempio essere:

Un messaggio SIP è costituito da un'intestazione e da un corpo (rispettivamente detti header e body). A titolo esemplificativo, consideriamo il seguente messaggio di Invite, in cui header e body sono separati da una riga vuota:

                   
    INVITE sip:utente@___domain.com SIP/2.0 
    Via: SIP/2.0/UDP 134.102.18.1
    From: <sip:zioMauro@dominio.com>; tag = 4711 ''//identifica l'originatore della richiesta ''
    To: Michele <sip:utente@___domain.com> ''//identifica la destinazione logica di una richiesta''
    Call-Id: 12345678@134.102.18.1 ''//è un valore costante che identifica l'invito''
    Cseq: 49 Invite ''//ordina le transazioni (..la prossima richiesta avrà Cseq=50)''
    Content-Length: 117 ''//il body consiste in 117 byte '' 
    Content-Type: application /sdp ''//tipo di media descritto secondo il protocollo [[SDP]]''
    Subject: felicitazioni! ''//l'oggetto del messaggio'' 
    Contact: sip:zioMauro@134.102.18.1:4050 ''//l'indirizzo al quale si desidera ricevere richieste''
    transport = udp ''//specifica il protocollo di trasporto, nell'esempio [[UDP]]''
                                
    v = 0 ''//indica la versione in uso''
    o = jack 7564657 9823872 IN IP4 134.102.18.1 ''//l'owner della risorsa con un ID di sessione''
    c = IN IP4 134.102.18.1 ''//tipo di rete, la versione del protocollo IP e l'IP stesso ''
    t = 0 0 ''//tempo di start e di stop''
    m = audio 4754 RTP/AVP 0 ''//tipo di media, num. di porto, protocollo di trasporto e formato ''
    a = rtpmap: 0 PCMU/8000 ''//attributi audio\video.. se ce ne fossero ''
    s = festa ''//subject della sessione''

Cenni ai messaggi SIP più frequenti

Altri messaggi SIP frequenti sono:

  • Register: messaggi inviato da uno User Agent quando vuole registrare presso un Registrar Server il proprio punto di ancoraggio alla rete.
  • Bye: utilizzato per porre fine ad un dialogo SIP
  • Cancel: per terminare un dialogo se la sessione non ha ancora avuto inizio.
  • Invite: già discusso in precedenza, serve ad invitare un utente a partecipare ad una sessione.
  • Ack: è un messaggio di riscontro
  • Trying e Ringing: messaggi provvisori;mantengono i parametri della richiesta a cui rispondono.
  • Subscribe e Notify: utilizzati in contesti peer to peer.

Architettura di una rete SIP

Le entità essenziali di una rete SIP sono:

  • SIP User Agent: è un end-point e può fungere da client o da server; i due ruoli sono dinamici, nel senso che nel corso di una sessione un client può fungere da server e viceversa. Quando funge da client, dà inizio alla transazione originando richieste. Quando funge da server, ascolta le richieste e le soddisfa, se possibile. Uno User Agent è in sostanza una macchina a stati, che evolve in dipendenza di messaggi SIP, e registra informazioni rilevanti del dialogo. Il dialogo ha inizio quando si risponde positivamente al messaggio di Invite e termina con un messaggio di Bye
  • 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 "ruotarle" 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.

I proxy possono essere stateless o stateful. Quando uno User Agent invia sistematicamente le proprie richieste ad un proxy "vicino" (di default) allora il proxy viene detto Outbound-Proxy. Viceversa, un Inbound-Proxy è un proxy che instrada le chiamate entranti in un dominio. Infine un Forking-Proxy può instradare una stessa richiesta in parallelo o in sequenza a più destinazioni.

  • Redirect Server: reinstrada le richieste SIP consentendo al chiamante di contattare un set alternativo di URIs.
  • Location Server: è un database contentente informazioni sull'utente, come il profilo, l'indirizzo IP, l'URL.

Collegamenti esterni