Protocollo SIP spiegato: cos'è e come funziona

Rene, Kabir Goel 
Protocollo SIP spiegato: cos'è e come funziona

SIP, il Session Initiation Protocol, è il modo in cui le chiamate telefoniche vengono aperte su internet. Quando un dispositivo vuole chiamarne un altro, SIP trasporta la negoziazione: chi chiama, dove è raggiungibile l’altra parte, quali codec audio supportano entrambi e quando qualcuno riaggancia. La voce non viaggia mai su SIP. Una volta che le due parti si sono accordate, l’audio scorre come un flusso separato, quasi sempre RTP.

Questa separazione è l’unica cosa da portarsi via da questa guida: SIP è la conversazione sulla chiamata, non la chiamata. Tutto il resto, i metodi, i codici di risposta, le porte, segue da lì. La guida spiega come funziona una chiamata SIP messaggio per messaggio, cosa significa il vocabolario e dove compare SIP quando a rispondere alle tue chiamate è un agente vocale IA.

Cos’è SIP e cosa non è

SIP è un protocollo di segnalazione a livello applicazione definito dall’IETF. È apparso la prima volta come RFC 2543 nel 1999 ed è stato revisionato come RFC 3261 nel 2002, che resta lo standard implementato da ogni telefono SIP, PBX e operatore. I suoi progettisti hanno preso in prestito il modello richiesta-risposta e la sintassi testuale di HTTP, quindi un messaggio SIP si legge in una cattura di pacchetti senza strumenti speciali.

Tre cose che SIP non è:

  • Non è l’audio. SIP negozia la sessione e poi si fa da parte. Voce e video viaggiano in pacchetti RTP, descritti più sotto.
  • Non è un servizio. Nessuno ti vende “SIP”. Quello che gli operatori vendono è il trunk SIP: un servizio che usa il protocollo SIP per collegare il tuo sistema telefonico alla rete telefonica pubblica.
  • Non è l’unico modo di segnalare una chiamata. H.323 è più vecchio, WebRTC gestisce le chiamate dentro i browser e i protocolli proprietari girano dentro app chiuse. SIP ha vinto nel mondo della telefonia aziendale perché è aperto, basato su testo e abbastanza semplice da implementare per qualsiasi fornitore.

Come funziona una chiamata SIP

Una chiamata SIP è un breve scambio di richieste testuali e risposte numerate. Ecco una tipica chiamata in entrata, dallo squillo al riaggancio:

  1. INVITE. Il lato di chi chiama invia un INVITE all’indirizzo del chiamato. Il suo corpo contiene un blocco SDP (Session Description Protocol) con l’IP del chiamante, la porta dove vuole l’audio e i codec che supporta.
  2. 100 Trying. I proxy lungo il percorso confermano la ricezione, così chi chiama smette di ritrasmettere.
  3. 180 Ringing. Il dispositivo chiamato sta avvisando il suo utente. È il momento in cui chi chiama sente il tono di squillo.
  4. 200 OK. Il chiamato risponde. La risposta contiene il suo blocco SDP, completando la negoziazione dei codec.
  5. ACK. Chi chiama conferma la risposta finale. La sessione ora è stabilita e l’audio RTP inizia a fluire in entrambe le direzioni.
  6. BYE. Chi riaggancia invia un BYE. L’altra parte risponde 200 OK e la sessione si chiude.

A metà chiamata, ciascuna delle due parti può inviare un nuovo INVITE, chiamato re-INVITE, per modificare la sessione: metterla in attesa, aggiungere il video o cambiare codec. Una richiesta REFER chiede all’altra parte di chiamare un’altra destinazione, ed è così che funzionano i trasferimenti.

Ecco com’è fatto un INVITE sul filo, leggermente accorciato:

INVITE sip:+14155550132@sip.example.com SIP/2.0
Via: SIP/2.0/TLS client.example.com:5061;branch=z9hG4bK74bf9
Max-Forwards: 70
From: "Alice" <sip:alice@example.com>;tag=9fxced76sl
To: <sip:+14155550132@sip.example.com>
Call-ID: 3848276298220188511@client.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.example.com;transport=tls>
Content-Type: application/sdp
Content-Length: 213

v=0
o=alice 2890844526 2890844526 IN IP4 client.example.com
s=-
c=IN IP4 client.example.com
t=0 0
m=audio 40000 RTP/AVP 0 8 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000

Le ultime tre righe dell’offerta SDP sono i codec sul tavolo: il payload 0 è G.711 μ-law, il payload 8 è G.711 A-law e il payload 101 è telephone-event, la via fuori banda per inviare i tasti DTMF dentro il flusso audio. Una chiamata sulla rete pubblica si assesta quasi sempre su una delle due varianti di G.711, ed è per questo che l’audio telefonico suona come suona.

I metodi SIP da conoscere

Le richieste SIP si chiamano metodi. Questi sono quelli che incontrerai in una cattura:

MetodoCosa fa
INVITEAvvia una sessione, o la modifica a metà chiamata (re-INVITE)
ACKConferma la risposta finale a un INVITE
BYEChiude la sessione
CANCELAbbandona un INVITE a cui non è ancora stata data risposta
REGISTERDice a un registrar “sono raggiungibile a questo indirizzo”
OPTIONSChiede a un dispositivo cosa sa fare, senza chiamarlo
REFERChiede all’altra parte di chiamare un terzo: la base dei trasferimenti
INFOTrasporta informazioni a metà chiamata, uno dei modi in cui possono viaggiare le cifre DTMF

Ogni richiesta riceve risposte con codici a tre cifre, raggruppati per la prima cifra:

ClasseSignificatoEsempi
1xxProvvisoria100 Trying, 180 Ringing, 183 Session Progress
2xxSuccesso200 OK, 202 Accepted
3xxReindirizzamento301 Moved Permanently, 302 Moved Temporarily
4xxErrore del client401 Unauthorized, 403 Forbidden, 404 Not Found, 486 Busy Here
5xxErrore del server500 Server Internal Error, 503 Service Unavailable
6xxFallimento globale603 Decline, 604 Does Not Exist Anywhere

Due di questi si rendono utili durante l’apertura. Un 401 o un 407 non è un fallimento; è una richiesta di autenticazione, e il mittente deve riprovare con le credenziali digest. Un 488 Not Acceptable Here significa che le due parti non condividono nessun codec, il modo gentile in cui una chiamata dice che non vi siete mai messi d’accordo su come codificare l’audio.

Indirizzi, registrazione e gli apparati in mezzo

Gli indirizzi SIP assomigliano agli indirizzi email: sip:alice@example.com, eventualmente con una porta o un trasporto, come in sip:alice@example.com:5061;transport=tls. Un numero di telefono diventa un URI SIP aggiungendo il dominio dell’operatore, ed è per questo che sip:+14155550132@sip.example.com è un indirizzo completo che si può chiamare.

Siccome i dispositivi si spostano e stanno dietro il NAT, un telefono SIP comunica alla rete dove si trova: invia un REGISTER al suo registrar, che annota “alice@example.com al momento è a questo IP”. Quando arriva un INVITE per Alice, un server proxy cerca quel record e inoltra la richiesta a dove Alice si trova davvero. Davanti alla maggior parte dei deployment reali c’è un session border controller (SBC), un buttafuori per il traffico SIP che termina la segnalazione, nasconde la rete interna, applica le policy di sicurezza e normalizza le stranezze degli stack SIP dei vari fornitori.

SIP vs RTP vs SDP

Tre protocolli si dividono il lavoro di ogni chiamata SIP:

ProtocolloRuolo
SIPSegnalazione: trova il chiamato, negozia la sessione, la chiude
SDPDescrizione: il payload nei messaggi SIP che elenca codec, IP e porte
RTPMedia: trasporta l’audio o il video veri, marcati con numeri di sequenza e timestamp

Ecco perché una chiamata può squillare benissimo e consegnare solo silenzio. La metà SIP ha funzionato, quindi entrambi i telefoni concordano che una chiamata esiste, ma la metà RTP è rotta, di solito da un firewall o da un NAT che lascia passare la segnalazione e scarta i media. Quando fai il debug di una chiamata senza audio, guarda il percorso dei media, non la segnalazione. La stessa separazione è ciò che rende il jitter un problema di RTP: i campi di sequenza e timestamp di ogni pacchetto RTP, definiti dalla RFC 3550, sono esattamente ciò che un ricevitore misura per calcolarlo.

SIP vs VoIP vs trunk SIP

I tre termini vengono usati in modo intercambiabile, e non sono la stessa cosa:

TermineCos’è
VoIPL’idea generale: la voce trasportata su reti IP
SIPUn protocollo di segnalazione usato per aprire chiamate VoIP
Trunk SIPUn servizio dell’operatore che usa SIP per collegare il tuo sistema telefonico alla PSTN

Se il VoIP è l’idea di chiamare via internet, SIP è la grammatica che parlano i due capi, e un trunk SIP è l’abbonamento che porta la tua chiamata sulla rete telefonica pubblica. La guida ai trunk SIP copre il lato del servizio: fornitori, canali e configurazione.

Trasporti, porte e crittografia

La segnalazione SIP viaggia su UDP o TCP sulla porta 5060, oppure su TLS sulla porta 5061. UDP è il default tradizionale ed evita il blocco head-of-line, ma i messaggi grandi si frammentano, quindi TCP è comune per qualsiasi cosa di dimensioni consistenti. TLS crittografa la segnalazione e autentica l’altro capo, ed è ciò che gli operatori si aspettano per qualsiasi cosa in produzione.

Il SIP in chiaro non crittografa nulla: chiunque sul percorso può leggere la segnalazione, e i media viaggiano su RTP non crittografato. La soluzione standard è TLS per la segnalazione più SRTP, definito dalla RFC 3711, per i media. I due capi devono mettersi d’accordo, perché attivare la crittografia da una parte sola è un modo affidabile di produrre chiamate che si connettono e non portano audio.

Un avvertimento sopravvissuto a ogni decennio di SIP: non esporre un endpoint SIP aperto. Gli scanner perlustrano internet in cerca della porta 5060 pochi minuti dopo la sua comparsa, a caccia di trunk che facciano chiamate gratis. Autentica i mittenti con credenziali digest, autorizza gli IP di segnalazione del tuo operatore, o entrambe le cose.

Dove SIP incontra un agente vocale

Se metti un agente vocale IA sulla rete telefonica, SIP è il protocollo che lavora ai due estremi della chiamata: l’operatore consegna le chiamate in entrata alla piattaforma di agenti come INVITE SIP, e la piattaforma rimanda indietro chiamate in uscita e trasferimenti allo stesso modo. Alcuni dettagli del protocollo smettono di essere curiosità nel momento in cui quello stack è tuo:

  • I trasferimenti sono REFER. Quando l’agente passa un chiamante a una persona, la piattaforma invia un SIP REFER che chiede all’operatore di far squillare una nuova destinazione. Un REFER semplice è un trasferimento a freddo; renderlo a caldo, dove la persona sente prima il contesto, è compito dell’agente prima che il REFER parta.
  • I tasti premuti hanno tre trasporti. Le cifre DTMF possono viaggiare in banda come audio, fuori banda come eventi telephone-event RFC 4733 (il payload 101 nell’INVITE qui sopra) o dentro messaggi SIP INFO. Un disallineamento tra ciò che il telefono invia e ciò che l’agente ascolta è il motivo per cui i menu “premi 1” ingoiano cifre in silenzio.
  • I media sono a 8 kHz. Le chiamate telefoniche negoziano G.711, quindi il riconoscimento vocale dell’agente vede audio a banda stretta che gli piaccia o no. Fai i test su audio telefonico reale prima di regolare qualsiasi altra cosa; la guida al G.711 spiega cosa taglia il codec.
  • Le chiamate dal browser sono un altro mondo. WebRTC ha un modello proprio, agnostico rispetto alla segnalazione, crittografia obbligatoria e jitter buffer adattivi. La guida WebRTC vs WebSocket mappa le differenze per gli agenti vocali che vivono in un browser invece che sulla rete telefonica.

Su Cartesia, i Managed Agents accettano chiamate dal tuo trunk SIP via TCP o TLS, con la crittografia dei media SRTP impostata su disabled, allowed o required, e autenticano le chiamate in entrata con credenziali digest o un elenco di IP autorizzati. I trasferimenti partono come REFER SIP verso numeri di telefono o URI SIP. L’integrazione trunk SIP (Inglese) spiega come puntare un operatore verso l’endpoint SIP di Cartesia, e la guida ai trunk SIP copre la configurazione completa, inclusi i campi API e la tabella dei fallimenti.

Guide correlate

Domande frequenti

Cos'è il protocollo SIP?

SIP, il Session Initiation Protocol, è il protocollo di segnalazione standard per avviare, modificare e terminare sessioni in tempo reale su reti IP, quasi sempre chiamate vocali e video. SIP trasporta solo la conversazione sulla chiamata: chi chiama chi, quali codec usare e quando riagganciare. L'audio vero e proprio viaggia a parte, di solito su RTP.

Cosa significa SIP?

SIP significa Session Initiation Protocol. È uno standard IETF, pubblicato la prima volta come RFC 2543 nel 1999 e revisionato come RFC 3261 nel 2002, che resta il riferimento implementato da ogni telefono SIP, PBX e operatore.

SIP e VoIP sono la stessa cosa?

No. VoIP è il termine generale per la voce trasportata su reti IP, e SIP è un protocollo di segnalazione al suo interno. Quasi tutti i sistemi telefonici aziendali moderni usano SIP per la segnalazione, ma il VoIP può funzionare anche su protocolli più vecchi come H.323 o, nel browser, WebRTC.

Come funziona una chiamata SIP?

Chi chiama invia una richiesta INVITE, il telefono chiamato squilla e risponde con un 200 OK, chi chiama conferma con un ACK e l'audio inizia a fluire in pacchetti RTP. Una delle due parti chiude la chiamata con un BYE, che l'altra conferma con un 200 OK finale.

Quale porta usa SIP?

SIP è in ascolto sulla porta 5060 per la segnalazione UDP o TCP non crittografata, e sulla porta 5061 per SIP su TLS. L'audio della chiamata usa porte UDP separate e negoziate per RTP, scelte durante l'apertura della chiamata e diverse a ogni chiamata.

SIP è sicuro?

Può esserlo, ma nel SIP in chiaro niente è crittografato. I sistemi in produzione eseguono SIP su TLS sulla porta 5061, crittografano l'audio con SRTP e autenticano i mittenti con credenziali digest o elenchi di IP autorizzati. Un endpoint SIP aperto sulla internet pubblica viene trovato dagli scanner in pochi minuti.