VoIP e Asterisk/SIP
SIP
modificaStandard de-facto nelle trasmissioni VoIP, questo protocollo ha trovato nel VoIP terreno fertile per il suo sviluppo, anche se è stato studiato per un più ampio spettro di applicazioni.
Sviluppato nel 1999 e standardizzato con due RFC (2543 e 3261), questo protocollo viene usato con il suo protocollo gemello SDP (Session Description Protocol).
La sua architettura fa uso di elementi chiamati “proxy servers” per fare il routing della richiesta verso l'utente destinatario della sessione, per autenticare e autorizzare sessioni e per implementare delle policy sulle richieste di sessione. L'utente che volesse risultare reperibile attraverso un proxy server deve inviare a quest'ultimo una richiesta di registrazione, a meno che il suo IP non sia memorizzato direttamente nel database del proxy server.
Una sessione viene richiesta quando il richiedente vuole instaurare una connessione verso il destinatario ma non sa qual è il suo IP, per cui il fine ultimo della richiesta di sessione è ottenere una connessione verso l'altra parte. Un utente che vuole creare una sessione verso un altro utente contatta uno di questi proxy server e gli invia una richiesta di invito per quell'utente, il proxy server provvederà a localizzare l'utente (eventualmente anche su altri proxy server) e inoltrargli la richiesta di invito.
La richiesta di invito contiene in formato SDP le informazioni sulla connessione di sessione richiesta: l'IP del mittente, la porta utilizzata, il protocollo (per il VoIP questo campo è RTP), il formato dei dati trasmessi (codec), il subject della sessione, e anche altre informazioni.
Una volta trasmesso questo invito e inoltrato al destinatario dal proxy, dopo aver eventualmente negoziato alcuni parametri della connessione (esempio, i codec) tramite pacchetti SIP, i client del proxy possono stabilire tranquillamente la connessione con i parametri decisi nella fase antecedente.
SIP viene comunque usato anche durante la connessione end-to-end, per eventuali modifiche ai parametri della sessione, o per aprire altre connessioni. Alla fine della connessione si manda una richiesta di fine sessione al proxy server, permettendogli di rilasciare le risorse allocate.
Applicazione del SIP nell'ambito VOIP
modificaSe entriamo nell'ambito VoIP, il SIP viene utilizzato per aprire connessioni end-to-end con il protocollo RTP (Real Time Protocol). Questo protocollo, basato sull'UDP, è studiato per trasferire flussi multimediali in real-time. Le applicazioni pratiche sono la trasmissione della voce registrata dal microfono e codificata con un opportuno codec, negoziato dal SIP.
La parola “flusso multimediale” lascia spazio a molte interpretazioni. La natura di questo flusso dipende dal codec usato per codificare le informazioni. Se il codec è un codec audio il flusso trasmesso sarà solamente audio, come nella maggior parte delle connessioni VoIP, e come anche l'acronimo VoIP suggerisce. Molti codec audio sono utilizzabili per questi tipi di connessioni, per fare qualche esempio, u-law, a-law, GSM, G.721, fino a codec liberi di nuova concezione, come Speex.
Se invece il codec è un codec video, il flusso multimediale conterrà anche una traccia video. Il concetto di “videoconferenza” in ambito SIP è ancora relativamente giovane, non esistono codec progettati appositamente per questo ambito. I codec utilizzati sono presi dalla famiglia H.323 (vedi H.261, H.263), vi è anche qualche tentativo di portare i codec Theora (open-source, prodotti sempre dalla stessa fondazione di Speex).