BroadNet
SIP / VoIPMédia

SDP: o Session Description Protocol

Atualizado em 4 min de leituraBaseado em padrões
Resposta direta

O SDP (Session Description Protocol, RFC 4566) é o formato de texto que o SIP transporta para descrever uma sessão de média — o endereço IP, as portas, os tipos de média e os codecs que cada lado oferece. Não é um transporte; é uma descrição. O SIP usa-o numa troca de oferta/resposta (RFC 3264) para negociar a média que os pontos terminais vão trocar sobre RTP.

§01

O que é o SDP

O SDP é um formato de texto pequeno, baseado em linhas, que descreve uma sessão multimédia: que média (áudio, vídeo), para onde a enviar (endereço de ligação e porta), que codecs são aceitáveis e em que direção pode fluir. O SIP não interpreta a média em si; transporta o SDP no corpo da mensagem (Content-Type: application/sdp) e deixa os pontos terminais acordar os parâmetros. O SDP é puramente descritivo — não transporta média nem negoceia nada por si só; a negociação vem de como o SIP troca dois corpos SDP.

§02

A estrutura de linhas

Um corpo SDP é uma sequência de linhas de tipo de uma só letra numa ordem fixa, dividida numa secção ao nível da sessão seguida de uma ou mais secções ao nível da média que começam cada uma por uma linha m=. As mais importantes são o o= (origem e id de sessão), o c= (endereço de ligação), o m= (tipo de média, porta, transporte e formatos) e as linhas de atributo a= que transportam os mapas de codec e a direção. As linhas são ordenadas e sensíveis a maiúsculas.

Tipos de linha do SDP
LinhaNomeTransporta
v=VersãoVersão SDP (0)
o=OrigemNome de utilizador, ID/versão da sessão, rede/endereço
s=Nome da sessãoUma etiqueta para a sessão
c=ConexãoTipo de rede, tipo de endereço e endereço IP do conteúdo multimédia
t=TemporizaçãoHora de início/término (0 0 para uma chamada ilimitada)
m=MultimédiaTipo multimédia, porta, transporte (RTP/AVP…) e formatos
a=Atributosrtpmap, fmtp, ptime, direção (sendrecv…) e mais
§03

O modelo de oferta/resposta

O SIP negoceia média com o modelo de oferta/resposta da RFC 3264. Um ponto terminal envia uma oferta SDP (tipicamente no INVITE) listando os fluxos de média e todos os codecs que está disposto a usar. O outro devolve uma resposta SDP (tipicamente no 200 OK) selecionando entre o que foi oferecido — mantendo apenas os codecs que também suporta, pela sua ordem preferida, e definindo a direção. O resultado é a interseção que ambos os lados acordaram. Uma incompatibilidade sem codec comum é o que produz um 488 Not Acceptable Here.

Uma oferta SDP para um único fluxo de áudiotext
v=0
o=alice 2890844526 2890844526 IN IP4 host.example.com
s=-
c=IN IP4 198.51.100.10
t=0 0
m=audio 49170 RTP/AVP 0 8 96
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:96 telephone-event/8000
a=fmtp:96 0-15
a=ptime:20
a=sendrecv
§04

Codecs e payload types

A linha m= lista números de payload type RTP, e cada a=rtpmap mapeia um número num codec e taxa de relógio. Os payload types 0–95 incluem atribuições estáticas (0 = PCMU/G.711 µ-law, 8 = PCMA/G.711 A-law, 9 = G722, 18 = G729), enquanto os 96–127 são dinâmicos e têm de ser definidos por um rtpmap. O a=fmtp transporta parâmetros específicos do codec, e o telephone-event (RFC 4733) é como o DTMF é negociado. Listar os codecs por ordem de preferência permite ao respondente escolher o melhor mutuamente suportado.

Payload types RTP de áudio comuns
PTCodecClockNota
0PCMU (G.711 µ-law)8000Estático; ~64 kbit/s, qualidade telefónica (toll quality)
8PCMA (G.711 A-law)8000Estático; ~64 kbit/s, qualidade telefónica (toll quality)
9G7228000Wideband (áudio de 16 kHz)
18G7298000Estático; ~8 kbit/s comprimido
96–127Dinâmico (Opus, telephone-event…)variaDefinido por a=rtpmap
§05

Atributos de direção de média

Um atributo de direção a= define como a média flui para um fluxo. sendrecv é a predefinição bidirecional normal. sendonly e recvonly restringem o fluxo a uma direção — usados para espera, anúncios e média num só sentido. inactive para a média totalmente mantendo a sessão de pé. Alternar estes (por exemplo sendonly ⇄ sendrecv num re-INVITE) é como se implementam a espera de chamada, a retoma e a música em espera sem largar o diálogo.

Atributos de direção do SDP
AtributoSignificado
a=sendrecvEnviar e receber conteúdo multimédia (padrão)
a=sendonlySomente enviar (ex.: anúncio, ou a parte em espera)
a=recvonlySomente receber (ex.: a parte colocada em espera)
a=inactiveSem multimédia em nenhuma direção; a sessão permanece ativa
Perguntas frequentes

Perguntas frequentes

Para que serve o SDP no SIP?

O SDP descreve a sessão de média — o endereço IP, as portas, os tipos de média e os codecs que cada ponto terminal oferece. O SIP transporta dois corpos SDP numa troca de oferta/resposta para negociar que áudio ou vídeo os pontos terminais vão trocar sobre RTP. O SDP em si não transporta média.

O que é o modelo de oferta/resposta do SIP?

Definido na RFC 3264, é como o SIP negoceia média: um lado envia uma oferta SDP (frequentemente no INVITE) listando a sua média e codecs, e o outro devolve uma resposta SDP (frequentemente no 200 OK) selecionando o subconjunto que também suporta. A interseção acordada é o que flui.

O que significa a linha m= no SDP?

A linha m= (média) declara um fluxo de média: o seu tipo (áudio/vídeo), a porta para onde enviar, o transporte (por exemplo RTP/AVP ou RTP/SAVP para SRTP) e a lista de números de payload type RTP oferecidos. Cada payload type é depois descrito por uma linha a=rtpmap.

Como são escolhidos os codecs numa chamada SIP?

O ofertante lista os codecs aceitáveis por ordem de preferência no SDP. O respondente mantém apenas os que também suporta e devolve-os, selecionando efetivamente o melhor codec mutuamente suportado. Se os conjuntos não se intersetarem, a negociação falha, tipicamente com um 488 Not Acceptable Here.

Como se faz a espera de chamada com SDP?

Alterando o atributo de direção de média num re-INVITE — por exemplo definindo a=sendonly (ou historicamente um endereço de ligação a zero) para colocar a parte remota em espera, e a=sendrecv para retomar. O diálogo mantém-se de pé; só a direção da média muda.

Referências

Especificações de origem

Os padrões publicados nos quais esta página se baseia. Abre num novo separador.

BNMantido pela equipa de engenharia BroadNet·Mensagens de nível de operadora desde 2003
Coloque-o no fio.

Construa com uma vinculação SMPP real e uma API REST.

Solicite acesso de teste com chaves de teste reais: envie primeiro para o seu próprio número verificado e, em seguida, passe para o ambiente de produção em mais de 200 países assim que a sua identidade de remetente e rotas forem aprovadas.