Quando si parla di VoIP (Voice over IP), molti pensano subito al protocollo SIP come “il protocollo del VoIP”. In realtà una chiamata VoIP è il risultato del lavoro congiunto di più protocolli: SIP per la segnalazione, SDP (Session Description Protocol) per descrivere la sessione multimediale e RTP/RTCP per il trasporto e il controllo del flusso audio/video. Guide tecniche come l’articolo di 3CX su cos’è il Session Description Protocol chiariscono proprio questo ruolo di SDP come “lingua comune” con cui gli endpoint si dichiarano le proprie capacità media.
In questa guida vediamo cos’è il protocollo SDP, come si inserisce nei messaggi SIP, come funziona il modello di offer/answer, quali informazioni contiene (IP, porte, codec, direzione del flusso) e perché è cruciale quando si fa troubleshooting di problemi audio nel VoIP. Se vuoi un’introduzione più ampia al lessico della telefonia IP, puoi partire da contenuti dedicati al VoIP aziendale e agli acronimi fondamentali del VoIP.
In una tipica chiamata VoIP SIP entrano in gioco quattro protocolli:
Un buon modo per ricordarlo è: SIP prepara la “telefonata”, SDP negozia come deve avvenire, RTP trasporta la voce e RTCP controlla che la qualità resti accettabile.
Una chiamata tipica segue una sequenza simile a quella descritta nella guida Understanding the SIP Protocol:
Capire cosa c’è negli SDP di offer e answer è fondamentale per capire quali codec verranno usati, su quali IP e porte avverrà il traffico e perché, a volte, l’audio manca o è monodirezionale.
Secondo la RFC 4566 dell’IETF, SDP è un formato testuale per descrivere sessioni multimediali (audio, video, dati) ai fini di annuncio, invito e partecipazione. Non è un protocollo di trasporto: è un formato che può viaggiare su vari protocolli, tra cui SIP, SAP, RTSP, email e HTTP.
In pratica, SDP è un blocco di testo strutturato che indica:
È importante sottolineare che SDP non trasporta i media: è solo un contenitore di metadati che descrive i media. Il trasporto vero e proprio viene poi effettuato da RTP (per la voce e il video) e da protocolli complementari come RTCP.
Nel contesto SIP VoIP, l’SDP è di solito inserito nel body dei messaggi SIP, con content-type application/sdp. In particolare:
Il modello offer/answer, formalizzato nella RFC 3264 e ampiamente usato in SIP e WebRTC, prevede che:
Questo permette ai due endpoint (User Agent) di negoziare dinamicamente come scambiare audio e video, pur partendo da capacità diverse.
L’offer SDP può elencare codec come G.711 (PCMU/PCMA), G.729, Opus, GSM, ciascuno identificato da un payload type. La answer SDP indicherà solo i codec accettati: se non esiste un codec comune, la sessione non può essere stabilita e la chiamata va in errore.
Per chi fa troubleshooting, controllare i campi m= e a=rtpmap nell’SDP è il modo più rapido per capire perché due sistemi non riescono a parlarsi (ad esempio, un IP‑PBX che supporta solo G.711 e un trunk che accetta solo G.729).
Una volta stabilita una SIP session, è possibile cambiare parametri media (ad esempio mettere in hold, aggiungere video, cambiare codec) tramite un nuovo SDP scambiato in re‑INVITE o UPDATE. Anche in questo caso si utilizza il modello offer/answer per negoziare i cambiamenti.
Un messaggio SDP si divide in tre macro‑sezioni:
Tra i campi più importanti a livello di sessione troviamo:
v= versione del protocollo SDP;o= origin (identifica chi ha creato la sessione, id e versione);s= session name;c= connection info (IP di riferimento, se non ridefinito sui media);b= bandwidth;a= attribute (attributi generali di sessione).La sezione temporale usa campi come t= (start/stop time) e r= (ripetizioni), ma nel VoIP spesso si usa un valore “sempre attivo”. La sezione media descrive invece ciascun flusso con:
m= (es. m=audio 4000 RTP/AVP 0 8 18): tipo media, porta, protocollo (RTP/AVP, RTP/SAVP, ecc.) e payload type;a= a livello media: a=rtpmap, a=fmtp, a=sendrecv, a=ptime, a=rtcp, ecc.Il campo m=audio definisce porta e lista di payload type; a=rtpmap mappa ogni payload type a un codec (es. 0 → PCMU, 8 → PCMA, 96 → Opus), mentre a=fmtp specifica parametri come bitrate, modalità e profili. Articoli divulgativi come quello di 3CX su SDP in ambito SIP mostrano esempi di queste righe in contesti reali.
Gli attributi di direzione:
a=sendrecv (default): endpoint invia e riceve media;a=sendonly: invia soltanto;a=recvonly: riceve soltanto;a=inactive: flusso sospeso da entrambe le parti.Questi flag sono essenziali per capire perché, ad esempio, una parte sente ma non viene sentita o perché una conferenza risulta muta da un lato.
Altri attributi comuni:
a=ptime: tempo di packetizzazione (es. 20 ms, 30 ms);a=rtcp: porta RTCP se diversa da quella RTP+1;a=rtcp-mux: indica che RTP e RTCP condividono la stessa porta (multiplexing).Uno dei problemi più comuni nel VoIP è vedere, nel campo c= dell’SDP, un indirizzo IP privato (es. 192.168.x.x) che non è raggiungibile dall’altro endpoint perché si trova dietro NAT o firewall. In questa situazione, anche se SIP funziona, i pacchetti RTP non raggiungono la destinazione corretta.
Per correggere questi problemi si usano meccanismi come:
a=ice-ufrag, a=ice-pwd, a=candidate, a=end-of-candidates, molto usati in WebRTC e in soluzioni VoIP moderne.La RFC 8839 (offer/answer per ICE) spiega nel dettaglio come SDP venga esteso per includere credenziali e candidate ICE necessari a far funzionare i media dietro NAT complessi.
In fase di troubleshooting, le prime domande sono:
c= e la porta nel m=audio sono raggiungibili dall’altro lato?Per proteggere la voce si usa spesso SRTP (Secure RTP), che cifra il flusso audio/video. In SDP questo viene indicato usando profili come RTP/SAVP o RTP/SAVPF nel campo m=, e attributi come a=crypto (modelli più vecchi) o a=setup, a=connection per DTLS‑SRTP.
Storicamente SDP prevedeva il campo k= per indicare chiavi di cifratura, ma oggi è considerato obsoleto e insicuro. Le implementazioni moderne preferiscono negoziare le chiavi tramite protocolli sicuri come DTLS (nel caso di DTLS‑SRTP) o altre procedure out‑of‑band.
Usare SIP su TLS protegge l’intero messaggio SIP, incluso il body SDP, durante il transito tra client e server o tra server. Questo rende più difficile l’intercettazione delle informazioni su IP, porte e codec, anche se la vera protezione della voce richiede comunque SRTP per cifrare il flusso media.
Un tipico flusso semplificato, come illustrato in guide operative sul SIP, è:
Analizzando l’INVITE e il 200 OK con strumenti come Wireshark si può vedere esattamente quali codec sono stati offerti/accettati, quali IP e porte sono stati scelti e se SRTP è stato negoziato correttamente.
Quando si fa troubleshooting su sip sdp rtp, una checklist utile è:
c= e le porte in m= hanno senso da entrambe le parti?a=sendrecv/sendonly/recvonly sono coerenti con l’effetto desiderato?a=crypto o DTLS‑SRTP sono presenti e corretti?Una buona comprensione del Session Description Protocol è quindi essenziale non solo per chi sviluppa soluzioni VoIP o WebRTC, ma anche per chi gestisce centralini IP, trunk SIP e infrastrutture di telefonia IP aziendale. Approfondire termini e protocolli legati a SIP, SDP e RTP ti aiuterà a sfruttare meglio tutte le potenzialità del VoIP aziendale.
Affidati a Epiclink, 3CX Partner esperto. Integriamo VoIP, Data Center e connettività per la tua…
Cerchi un Data Center a Milano? Scopri le soluzioni Epiclink: connettività carrier-neutral, sicurezza ISO e…
Nel mondo VoIP e SIP la qualità delle chiamate non dipende solo da banda e…
Linea ISDN vs VoIP: differenze, vantaggi, costi e come gestire il passaggio Per anni la…
Negli ultimi anni il catalogo Microsoft si è popolato di nomi molto simili: Office 365,…
Smartphone, tablet e laptop sono diventati endpoint aziendali a tutti gli effetti: contengono email, documenti,…