BroadNet
Protocolli Intermedio

SIP e voce per i team di messaggistica

Il protocollo di segnalazione alla base della voce programmabile: nozioni e metodi SIP, supporti SDP / RTP / SRTP, flusso di chiamata end-to-end, trunking SIP e SBC, e il ruolo VoLTE.

5 lezioni6 min di letturaBasato su standard · a ritmo personalizzato
Lezione 01

SIP basics

SIP (Session Initiation Protocol, RFC 3261) è il protocollo di segnalazione a livello applicativo che crea, modifica e termina sessioni multimediali in tempo reale su IP, più comunemente per voce e video. È fondamentale sottolineare che SIP non trasporta direttamente i contenuti multimediali: negozia e controlla la sessione, e l'audio o il video fluiscono poi separatamente tramite RTP.

Il suo design è volutamente simile a HTTP: messaggi di testo leggibili dall'uomo, metodi di richiesta, codici di risposta a tre cifre e indirizzamento URI (sip:alice@example.com), il che lo rende accessibile ai team che già hanno familiarità con i protocolli web. Ecco perché la voce si integra naturalmente con la messaggistica in una CPaaS: è un altro canale basato su API con una struttura di richiesta/risposta familiare.

Gli attori principali sono gli User Agent (un UAC che invia le richieste e un UAS che risponde), oltre all'infrastruttura: i registrar registrano dove un utente è raggiungibile e i proxy instradano le richieste verso di esso. Per un team di messaggistica, la voce è spesso il canale di fallback OTP e il canale per gli avvisi urgenti, quindi comprendere SIP significa comprendere come tale canale si connette effettivamente.

Lezione 02

Metodi e codici di risposta

SIP definisce un piccolo insieme di metodi di richiesta. INVITE avvia o modifica una sessione, ACK conferma una risposta finale a un INVITE e BYE termina una chiamata stabilita. REGISTER indica a un registrar dove è possibile raggiungere un utente, CANCEL annulla una richiesta in sospeso e OPTIONS interroga le funzionalità. Successivamente, gli RFC hanno aggiunto metodi come INFO, MESSAGE, SUBSCRIBE/NOTIFY e UPDATE.

Le risposte rispecchiano lo schema a tre cifre di HTTP in sei classi. 1xx sono provvisorie (100 Trying, 180 Ringing); 2xx hanno esito positivo (200 OK); 3xx reindirizzano; 4xx indicano errori del client (404 Not Found, 486 Busy Here, 407 Proxy Authentication Required); 5xx indicano errori del server; e 6xx indicano errori globali (603 Decline). Leggere prima la classe e poi il codice è il modo più rapido per diagnosticare una chiamata non riuscita.

La classica particolarità da interiorizzare è la procedura di handshake a tre vie per l'instaurazione di una chiamata: INVITE, poi un 200 OK, e infine un ACK separato. A differenza della maggior parte dei protocolli di richiesta/risposta, l'ACK per un INVITE costituisce una transazione a sé stante. Gestire in modo errato questo ACK è una delle cause più comuni di chiamate che squillano ma non si connettono mai.

Lezione 03

SDP, RTP e SRTP

Poiché SIP solo segnali, i parametri multimediali effettivi sono descritti da SDP (Session Description Protocol, RFC 4566), contenuto all'interno del corpo dei messaggi SIP. SDP è il mezzo in cui ciascuna parte pubblicizza i codec supportati, l'indirizzo IP e la porta su cui riceverà i dati multimediali e altri attributi relativi ai media.

SIP utilizza un modello offerta/risposta (RFC 3264): l' INVITE del chiamante contiene un'offerta SDP che elenca le sue capacità, e la risposta del chiamato contiene una risposta SDP che seleziona il sottoinsieme comune. Questa negoziazione è ciò che permette a due endpoint di concordare un codec e un percorso multimediale prima che venga trasmesso l'audio.

I dati multimediali negoziati viaggiano quindi tramite RTP (Real-time Transport Protocol), che trasporta i pacchetti audio/video con numeri di sequenza e timestamp, insieme a RTCP per il feedback sulla qualità. Quando i dati multimediali devono essere riservati, SRTP (Secure RTP) crittografa e autentica tali pacchetti. Il modello mentale da tenere a mente è il seguente: SIP + SDP stabiliscono la chiamata, RTP / SRTP la trasportano – due percorsi separati che possono anche seguire traiettorie diverse all'interno della rete.

Lezione 04

Un flusso di chiamate end-to-end

Seguiamo un semplice esempio di chiamata. L'UAC del chiamante invia INVITE (con un'offerta SDP) al chiamato, eventualmente tramite uno o più proxy. Il chiamato risponde con 100 Trying, poi con 180 Ringing mentre il telefono emette un avviso e infine con 200 OK contenente la risposta SDP una volta che il chiamato accetta.

Il chiamante risponde con ACK e in quel momento la sessione viene stabilita: i flussi multimediali RTP avvengono direttamente tra gli endpoint secondo l' SDP negoziato, indipendentemente dai proxy che hanno avviato la chiamata. Le modifiche apportate durante una chiamata, come mettere una chiamata in attesa, aggiungere video o cambiare codec, utilizzano un re- INVITE o un UPDATE che trasporta SDP aggiornato.

Entrambe le parti terminano la chiamata inviando BYE, a cui si risponde con 200 OK, che chiude la sessione e interrompe la trasmissione multimediale. Gli errori interrompono il flusso: un 486 Busy Here o un 408 Request Timeout invece di un 200 OK significa che la chiamata non raggiunge mai la fase ACK. È la possibilità di visualizzare l'intera sequenza che rende leggibili i log SIP quando una chiamata non funziona correttamente.

Lezione 05

SIP trunking, SBC e VoLTE

Un trunk SIP è una connessione basata su SIP tra un sistema telefonico privato (PBX) o un'applicazione e un operatore, che sostituisce i tradizionali trunk fisici e trasporta le chiamate da e verso la rete pubblica tramite IP. È il modo in cui la voce programmatica raggiunge la rete telefonica pubblica PSTN su larga scala.

Al confine si trova il Session Border Controller (SBC), l'elemento che protegge e controlla SIP ai margini della rete. Esso si occupa di nascondere la topologia, attraversare il NAT, gestire l'interoperabilità e la normalizzazione dei protocolli tra i diversi dialetti SIP, controllare gli accessi e limitare la velocità di trasmissione, e spesso anche di ancorare i media e transcodificare. L' SBC è per SIP all'incirca ciò che il firewall di segnalazione è per SS7 / Diameter: il punto di controllo controllato al confine della fiducia.

VoLTE (Voice over LTE) è un servizio vocale veicolato tramite IMS sulla rete dati LTE, e il controllo delle chiamate avviene SIP all'interno di IMS: si tratta dello stesso protocollo che avete appena appreso, inquadrato dalle interfacce Cx / HSS e di policy del core di rete mobile. Pertanto, il SIP utilizzato da un team di messaggistica per la voce programmabile e il SIP che controlla una chiamata VoLTE sono lo stesso protocollo, differendo per la rete circostante, non per la segnalazione in sé.

Punti chiave
  • SIP (RFC 3261) è un protocollo simile a HTTP che segnala le sessioni; stabilisce le chiamate ma non trasporta mai i dati multimediali.
  • I metodi principali sono INVITE /ACK/ BYE /REGISTER; le risposte vengono eseguite in classi in stile HTTP (da 1xx provvisorio a 6xx globale).
  • SDP negozia i media tramite un sistema di offerta/risposta; i media concordati vengono quindi trasmessi tramite RTP, crittografati come SRTP quando necessario.
  • I trunk SIP collegano le applicazioni agli operatori, l' SBC protegge il perimetro della rete e VoLTE è semplicemente il controllo delle chiamate SIP all'interno IMS.
Mettilo in pratica

Metti in pratica ciò che hai appena imparato.

Parla con un vero ingegnere del tuo caso d'uso, oppure apri la documentazione per sviluppatori e invia un messaggio attraverso i canali descritti in questo corso.

Perché imparare da BroadNet
  • Da2003
  • Paesi200+
  • Collegamenti dell'operatore1,000+