Home > Approfondimenti, VoIP > Il protocollo SIP

Il protocollo SIP

sip1.jpgUna comunicazione VoIP (Voice Over Internet Protocol) funziona come qualsiasi altra comunicazione basata su IP(Internet Protocolo): il dato viene suddiviso in pacchetti ed inviato attraverso la rete, che sia essa una rete locale o internet.

Nel caso specifico i pacchetti sono la nostra voce, trasformati in dati da un ADC (un convertitore analogico-digitale), come ad esempio un softphone, e suddivisi in pacchetti dal protocollo di comunicazione.
Dalla parte opposta il protocollo di comunicazione ricostruirà i pacchetti in ordine cronologico ed il DAC (convertitore digitale-analogico), ancora il nostro softphone, ritrasformerà questi dati digitali nella nostra voce.

Nel Voice Over Internet Protocol esistono diversi protocolli di comunicazione, alcuni seguono standard aperti, altri sono esclusiva proprietà di aziende, come nel caso di Skype.

Tra i protocolli standard il più utilizzato nelle comunicazione voce su IP è SIP.

Il SIP (Session Initial Portocol) è un protocollo di segnalazione standard definito dalla IETF(Internet Engineering Task Force) nel Marzo 1999, poi aggiornato dalla RFC 3261 del Giugno 2002.
Lo scopo principale per cui è stato realizzato del SIP è quello di stabilire chiamate e conferenze real-time su reti basate sull’IP (Internet Protocol).

Il protocollo usato nel trasporto dei messaggi di segnalazione è l’UDP (User Datagram Protocol), scelto per poter ridurre i tempi di Call Set Up ed eliminare la componente del ritardo dovuta ai tempi necessari all’instaurazione della connessione TCP (Transmission Control Protocol).

Per garantire affidabilità nella trasmissione dei messaggi il SIP utilizza un meccanismo di time out coadiuvato da un meccanismo di richiesta-risposta.
In pratica se il chiamante non riceve una risposta entro un tempo prestabilito il meccanismo di time out considera la richiesta come persa e la ritrasmette.
Nel caso di successo il chiamato riceve un ACK (Acknowledge) dal chiamante che conferma l’arrivo della risposta.

Nell’ambito delle comunicazioni VoIP il SIP viene affiancato da altri protocolli:

  • RTP (Real-time transport protocol): si occupa del trasporto dei dati riguardanti la conversazione audio o video
  • SDP (Session Description Protocol): viene utilizzato per stabilire le caratteristiche della connessione, come ad esempio i codec da utilizzare.
  • Architettura del SIP
    Il SIP è un protocollo di tipo client-server ed i suoi principali componenti sono l’User Agent, il Proxy Server, il Redirect server ed il Registrar.

    User Agent: o SIP endpoint, è un software, sia esso un softphone o un apparato hardware, che interagisce direttamente con l’utente. Due User Agent possono comunicare tra di loro direttamente o tramite un server intermedio.

    Proxy Server: inoltra le richieste dall’User Agent al successivo server SIP o ad un altro User Agent interno alla rete.

    Redirect server: allieva la mole di lavoro del Proxy Server, ha il compito di rispondere alle richieste del Client e di aggiornalo sull’indirizzo del SIP server successivo in modo che il Client possa inoltrare la richiesta successiva all’indirizzo corretto.

    Registrar: è un server che accetta richieste di registrazione e provvede a memorizzare le informazioni relative agli User Agent.

    Il protocollo SIP, essendo basato sul modello client-server si integra alla perfezione con la filosofia di Internet.
    La sintassi, sia delle richieste che delle risposte segue, infatti, le specifiche dei messaggi HTTP.
    I messaggi sono caratterizzati da una Start-Line, da uno o più campi d’intestazione, da una linea vuota, che serve per indicare la fine dei campi d’intestazione, ed infine da un corpo messaggi opzionale.

    Protocollo SIP

    Qui di seguito mostriamo un esempio di quanto illustrato:
    INVITE sip:s@x.x.x.x SIP/2.0
    Via: SIP/2.0/UDP x.x.x.x:5060;branch=z9hG4bK6­ 000fdf9;rport
    From: “111111? ;ta­ g=as7dbeb552
    To:

    Contact:
    ­
    Call-ID: 5ca61ee45965daa628b57a3b29a97889@blogvoip.it
    CSeq: 102 INVITE
    User-Agent: Asterisk PBX
    Date: Wed, 03 Aug 2005 19:03:33 GMT
    Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER
    Content-Type: application/sdp
    Content-Length: 315

    Analisi dei metodi SIP
    Entrando più nel dettaglio possiamo dire che le richieste, o metodi, implementate nel protocollo sono le seguenti:
    INVITE: Inizia una chiamata invitando un utente a partecipare ad una sessione
    ACK: Conferma che l’Uuser Agent ha ricevuto una risposta finale ad una richiesta
    BYE: Indica il termine di una chiamata
    CANCEL: Cancella una richiesta pendente
    OPTIONS: Richiede le capacità disponibili ad un server
    REGISTER: Registra l’User Agent

    Le risposte invece sono caratterizzate da uno Status-Code, cioè da un intero di tre cifre che indica il risultato del tentativo di capire e soddisfare la richiesta.
    La prima cifra definisce la classe della risposta, le altre non hanno un ruolo preciso.

    Sotto vengono illustrate le possibili classi di risposta:
    1XX: Provisional ; indica che una richiesta è stata ricevuta, ma che il server contattato non ha ancora una risposta definitiva e sta continuando a processare la richiesta
    2XX: Success; indica che la richiesta ha avuto successo.
    3XX: Redirection; indica che si hanno nuove locazioni dell’utente e quindi sono necessarie altre azioni per poter completare la richiesta.
    4XX: Request Failure; indica che la richiesta contiene una sintassi errata o non può essere completata da questo server.
    5XX: Server Failure; indica che il server non riesce a completare una richiesta apparentemente valida
    6XX: Global Failure; indica che la richiesta non può essere completata da alcun server.

    Nei singoli messaggi di richiesta o di risposta sono inseriti diversi campi intestazione:
    Call-ID: è l’unico identificatore globale della chiamata o delle registrazioni di un particolare Client.
    TO: contiene l’indirizzo logico del chiamato, può non essere quello definitivo visto che il chiamato può spostarsi nella rete.
    FROM: indica chi ha iniziato la richiesta e deve essere presente sia nelle richieste che nelle risposte.
    Contact: contiene una lista di indirizzi dove un utente può essere trovato per le richieste future o per ulteriori comunicazioni.
    Cseq: è un campo presente nelle richieste, contiene un numero intero decimale, scelto dal Client ed unico all’interno di un singolo valore di Call-Id. Contiene anche il metodo della richiesta.
    VIA: Indica il percorso fatto dalla richiesta. In questo modo le risposte possono seguire lo stesso percorso delle richieste.
    Content-type: Indica il protocollo usato nel corpo del messaggio. Di solito si utilizza il protocollo SDP (Session Description Protocol).
    Exipres: indica il tempo di validità di una registrazione.

    Per stabilire e terminare sessioni multimediali il protocollo SIP implementa cinque servizi:
    User Location: Determina il terminale da utilizzare per la comunicazione
    User capabilities: Determina i media e i parametri dei media da utilizzare.
    User availability: Determina la disponibilità del chiamato a iniziare una comunicazione.
    Session Setup: “ringing”, instaurazione dei parametri di sessione entrambe le chiamante e chiamato.
    Session Menagement: include il trasferimento e la terminazione di una sessione, la modifica dei parametri e la richiesta di determinati servizi.

    La procedura per instaurare una sessione inizia con l’invio da parte del chiamante di una richiesta INVITE, per notificare al chiamato la sua volontà di aprire la sessione, il chiamato può accettare la richiesta con un messaggio di risposta positivo (2xx), la conferma della ricezione viene comunicata tramite un messaggio ACK. Lo scambio di questi messaggi può avvenire in due modalità:
    Proxy server: in questo caso è lo stesso Proxy a provvedere ad inoltrare le richieste direttamente al chiamato o al proxy successivo.
    Redirect server: in questo caso il redirect fornisce al chiamante le informazioni necessarie perché sia lui stesso ad inviare le richieste al chiamato.

    Fonti:
    Università di Pisa
    VoipForo
    Wikipedia
    3cx

    1. Nessun commento ancora...
    1. 16 Settembre 2007 a 11:20 | #1
    2. 18 Settembre 2007 a 13:41 | #2
    3. 22 Settembre 2007 a 20:56 | #3

    I contenuti di questo sito non hanno carattere di periodicità e non rappresentano "prodotto editoriale" ex L.62/2001.
    Testi, immagini, loghi e marchi in questo sito sono di proprietà dei rispettivi proprietari.


    Web Statistics