01 – RTP
RTP — Real-time Transport Protocol
Categoria: RTP / Mídia
Nível: 🟢 Básico
Tipo: Protocolo
Categoria: RTP / Mídia
Nível: 🟢 Básico
Tipo: Protocolo
O que é?
RTP é um protocolo utilizado para transportar dados de mídia em tempo real, principalmente áudio e vídeo, em redes IP.
Em uma chamada VoIP, o RTP normalmente transporta o conteúdo da conversa enquanto o SIP fica responsável pela sinalização da sessão.
O RTP foi especificado pelo IETF no RFC 3550. O protocolo foi projetado para aplicações de tempo real e é acompanhado pelo RTCP, utilizado para funções de controle e monitoramento.
Em uma chamada VoIP, o RTP normalmente transporta o conteúdo da conversa enquanto o SIP fica responsável pela sinalização da sessão.
O RTP foi especificado pelo IETF no RFC 3550. O protocolo foi projetado para aplicações de tempo real e é acompanhado pelo RTCP, utilizado para funções de controle e monitoramento.
Na prática
Quando uma chamada SIP é estabelecida, podemos ter:
O SIP pode indicar que a chamada foi atendida, mas isso não significa necessariamente que o RTP esteja funcionando.
Por isso uma chamada pode apresentar:
SIP funcionando + chamada estabelecida + nenhum áudio.
SIP INVITE ↓ SDP ↓ Negociação da mídia ↓ RTP ↓ ÁudioO SIP pode indicar que a chamada foi atendida, mas isso não significa necessariamente que o RTP esteja funcionando.
Por isso uma chamada pode apresentar:
SIP funcionando + chamada estabelecida + nenhum áudio.
Exemplo
Imagine:
Se os pacotes RTP não conseguirem chegar ao destino, a chamada pode ficar estabelecida sem áudio.
Em troubleshooting
Verifique:
IP de origem;
IP de destino;
porta UDP;
fluxo nos dois sentidos;
perda de pacotes;
codec;
NAT;
firewall;
SDP negociado.
Telefone A 10.10.10.10:4000 │ │ RTP ▼ 10.20.20.20:5000 Telefone BSe os pacotes RTP não conseguirem chegar ao destino, a chamada pode ficar estabelecida sem áudio.
Em troubleshooting
Verifique:
IP de origem;
IP de destino;
porta UDP;
fluxo nos dois sentidos;
perda de pacotes;
codec;
NAT;
firewall;
SDP negociado.
02 – RTCP
RRTCP — RTP Control Protocol
Categoria: RTP / Controle
Nível: 🟡 Intermediário
Tipo: Protocolo
Categoria: RTP / Controle
Nível: 🟡 Intermediário
Tipo: Protocolo
O que é?
RTCP é o protocolo de controle associado ao RTP.
Enquanto o RTP transporta a mídia, o RTCP fornece informações de controle e monitoramento relacionadas à entrega dessa mídia. O RFC 3550 define RTP e RTCP como componentes associados de uma arquitetura de transporte para aplicações de tempo real.
Enquanto o RTP transporta a mídia, o RTCP fornece informações de controle e monitoramento relacionadas à entrega dessa mídia. O RFC 3550 define RTP e RTCP como componentes associados de uma arquitetura de transporte para aplicações de tempo real.
Na prática
Simplificando:
O RTCP pode fornecer informações relacionadas a:
perda de pacotes;
jitter;
sequência;
sincronização;
identificação das fontes;
qualidade da recepção.
RTP → transporta áudio/vídeo RTCP → informa como está a entrega dessa mídiaO RTCP pode fornecer informações relacionadas a:
perda de pacotes;
jitter;
sequência;
sincronização;
identificação das fontes;
qualidade da recepção.
Exemplo
Durante uma chamada:
Dependendo da arquitetura, os fluxos podem utilizar portas diferentes ou podem ser multiplexados.
Atenção!!!
RTP e RTCP não são a mesma coisa.
Esse é um erro comum de quem está começando.
A ───────── RTP ─────────→ B A ←──────── RTCP ───────── BDependendo da arquitetura, os fluxos podem utilizar portas diferentes ou podem ser multiplexados.
Atenção!!!
RTP e RTCP não são a mesma coisa.
Esse é um erro comum de quem está começando.
03 – SDP
SDP — Session Description Protocol
Categoria: SDP / Sinalização de mídia
Nível: 🟢 Básico
Tipo: Protocolo/formato de descrição
Categoria: SDP / Sinalização de mídia
Nível: 🟢 Básico
Tipo: Protocolo/formato de descrição
O que é?
SDP é um formato utilizado para descrever uma sessão multimídia.
Ele informa aos participantes características importantes da sessão, como:
tipo de mídia;
endereço IP;
porta;
protocolo;
codecs;
parâmetros da mídia.
O RFC 8866 é a especificação atual do SDP e substituiu o RFC 4566.
Ele informa aos participantes características importantes da sessão, como:
tipo de mídia;
endereço IP;
porta;
protocolo;
codecs;
parâmetros da mídia.
O RFC 8866 é a especificação atual do SDP e substituiu o RFC 4566.
Na prática
Quando você olha um INVITE SIP, provavelmente encontrará algo como:
E dentro do corpo:
O SIP transportou o SDP.
O SDP descreveu a mídia.
O RTP posteriormente transportará a mídia.
Pense assim:
SIP: “Vamos fazer uma chamada.”
SDP: “Posso receber áudio nesse IP, nessa porta e usando estes codecs.”
RTP: “Aqui está o áudio.”
Content-Type: application/sdpE dentro do corpo:
v=0 o=... s=- c=IN IP4 192.168.1.10 t=0 0 m=audio 49170 RTP/AVP 0 8 101 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000O SIP transportou o SDP.
O SDP descreveu a mídia.
O RTP posteriormente transportará a mídia.
Pense assim:
SIP: “Vamos fazer uma chamada.”
SDP: “Posso receber áudio nesse IP, nessa porta e usando estes codecs.”
RTP: “Aqui está o áudio.”
04 – SDP Offer
Offer
Categoria: SDP
Nível: 🟡 Intermediário
Categoria: SDP
Nível: 🟡 Intermediário
O que é?
É a proposta de parâmetros de mídia apresentada por uma das partes de uma sessão.
Ela pode indicar:
mídias suportadas;
codecs;
IP;
portas;
protocolos;
atributos.
Ela pode indicar:
mídias suportadas;
codecs;
IP;
portas;
protocolos;
atributos.
Na prática
Um INVITE pode carregar um SDP Offer:
INVITE │ └── SDP Offer │ ├── IP ├── porta ├── áudio ├── codecs └── atributosExemplo
m=audio 40000 RTP/AVP 0 8 101Isso informa, entre outras coisas, a porta e os payload types propostos para a mídia.
05 – SDP Answer
Answer
Categoria: SDP
Nível: 🟡 Intermediário
Categoria: SDP
Nível: 🟡 Intermediário
O que é?
É a resposta à proposta SDP enviada pela outra parte.
Ela informa quais parâmetros foram aceitos, rejeitados ou modificados.
Ela informa quais parâmetros foram aceitos, rejeitados ou modificados.
Na prática
A
│
│ SDP Offer
▼
B
│
│ SDP Answer
▼
A
│
│ SDP Offer
▼
B
│
│ SDP Answer
▼
A
Exemplo
A oferece:
B pode responder aceitando apenas:
A mídia será estabelecida de acordo com a negociação resultante.
PCMU PCMA G729B pode responder aceitando apenas:
PCMAA mídia será estabelecida de acordo com a negociação resultante.
06 – Offer/Answer
Offer/Answer Model
Categoria: SDP / SIP
Nível: 🟡 Intermediário
Categoria: SDP / SIP
Nível: 🟡 Intermediário
O que é?
É o modelo utilizado para negociar parâmetros de uma sessão multimídia através de uma oferta e uma resposta.
Na prática
É extremamente importante durante análise de traces SIP.
Quando houver problema de áudio, compare:
SDP Offer × SDP Answer
e depois compare isso com:
RTP real observado no trace.
Quando houver problema de áudio, compare:
SDP Offer × SDP Answer
e depois compare isso com:
RTP real observado no trace.
Exemplo
Fluxo simplificado:
A B
│
│──── SDP OFFER ─────────>│
│
│<──── SDP ANSWER ────────│
│
│========= RTP ===========│
A B
│
│──── SDP OFFER ─────────>│
│
│<──── SDP ANSWER ────────│
│
│========= RTP ===========│
07 – Codec
Codec
Categoria: Áudio / RTP
Nível: 🟢 Básico
Categoria: Áudio / RTP
Nível: 🟢 Básico
O que é?
Codec é o mecanismo utilizado para codificar e decodificar o áudio ou vídeo.
O nome vem de:
COder + DECoder
O nome vem de:
COder + DECoder
Na prática
Alguns codecs comuns em voz:
PCMU / G.711 μ-law
PCMA / G.711 A-law
G.729
G.722
Opus
iLBC
PCMU / G.711 μ-law
PCMA / G.711 A-law
G.729
G.722
Opus
iLBC
Exemplo
Se um lado suporta:
e o outro:
um codec em comum precisa existir para que a mídia seja estabelecida usando aquela negociação.
PCMA PCMU G729e o outro:
PCMA G722um codec em comum precisa existir para que a mídia seja estabelecida usando aquela negociação.
08 – Payload Type
PT — Payload Type
Categoria: RTP
Nível: 🟡 Intermediário
Categoria: RTP
Nível: 🟡 Intermediário
O que é?
É um campo do cabeçalho RTP utilizado para identificar o formato do conteúdo transportado.
Na prática
Quando você está analisando um trace, pode encontrar:
e relacioná-lo ao codec correspondente.
Payload Type: 0e relacioná-lo ao codec correspondente.
Exemplo
m=audio 40000 RTP/AVP 0 8 101Aqui aparecem os payload types:
0 8 101Eles podem representar diferentes tipos de mídia ou sinalização, conforme o perfil e a negociação.
09 – RTPMAP
a=rtpmap
Categoria: SDP
Nível: 🟡 Intermediário
Categoria: SDP
Nível: 🟡 Intermediário
O que é?
É um atributo SDP utilizado para associar um payload type a informações como codec e clock rate.
Na prática
Durante troubleshooting, é importante comparar:
com:
para entender o que está sendo negociado.
m=audiocom:
a=rtpmappara entender o que está sendo negociado.
Exemplo
a=rtpmap:8 PCMA/8000Interpretando:
8 → Payload Type PCMA → Codec 8000 → Clock rate10 – m=audio
m=audio
Categoria: SDP
Nível: 🟢 Básico
Categoria: SDP
Nível: 🟢 Básico
O que é?
É uma linha SDP utilizada para descrever uma seção de mídia de áudio.
Na prática
Essa é uma das primeiras linhas que você deve procurar quando estiver investigando o SDP de uma chamada.
Exemplo
m=audio 40000 RTP/AVP 0 8 101Podemos interpretar:
audio ↓ tipo de mídia 40000 ↓ porta RTP/AVP ↓ protocolo/perfil 0 8 101 ↓ Payload Types11 – Connection Information
c= — Connection Information
Categoria: SDP
Nível: 🟢 Básico
Categoria: SDP
Nível: 🟢 Básico
O que é?
Linha SDP utilizada para informar informações de conexão, incluindo o endereço IP associado à mídia.
Na prática
Se o SDP indicar um IP incorreto, inexistente ou inacessível, isso pode contribuir para problemas de mídia.
Troubleshooting
Sempre compare:
IP informado no SDP
com:
IP real observado no RTP.
Troubleshooting
Sempre compare:
IP informado no SDP
com:
IP real observado no RTP.
Exemplo
c=IN IP4 10.10.10.20Significa, simplificadamente:
IN → Internet IP4 → IPv4 10.10.10.20 → endereço12 – Porta RTP
RTP Port
Categoria: RTP / UDP
Nível: 🟢 Básico
Categoria: RTP / UDP
Nível: 🟢 Básico
O que é?
É a porta UDP utilizada para transportar o fluxo RTP.
Na prática
Você pode encontrar:
Se o firewall bloquear uma dessas portas, o SIP pode funcionar enquanto a mídia falha.
10.10.10.1:40000 ↓ 10.10.10.2:50000Se o firewall bloquear uma dessas portas, o SIP pode funcionar enquanto a mídia falha.
Exemplo
SDP:
Nesse exemplo:
m=audio 40000 RTP/AVP 0Nesse exemplo:
porta RTP = 4000013 – SSRC
SSRC — Synchronization Source
Categoria: RTP
Nível: 🔴 Avançado
Categoria: RTP
Nível: 🔴 Avançado
O que é?
É um identificador utilizado dentro do RTP para identificar uma fonte de sincronização.
Na prática
Ao analisar uma captura, diferentes fluxos RTP podem ser diferenciados por seus SSRCs.
Exemplo
Esse valor ajuda ferramentas de análise a acompanhar determinado fluxo RTP.
Exemplo
SSRC: 0x4A83F921Esse valor ajuda ferramentas de análise a acompanhar determinado fluxo RTP.
14 – Sequence Number
Sequence Number
Categoria: RTP
Nível: 🟡 Intermediário
Categoria: RTP
Nível: 🟡 Intermediário
O que é?
É o número de sequência presente no cabeçalho RTP.
Ele permite identificar a ordem dos pacotes.
Ele permite identificar a ordem dos pacotes.
Na prática
Em uma captura Wireshark, a análise dos sequence numbers ajuda a identificar:
perda;
reordenação;
interrupções;
problemas de transporte.
perda;
reordenação;
interrupções;
problemas de transporte.
Exemplo
1001 1002 1003 1005O pacote:
1004aparentemente não chegou.
Isso pode ser um indicativo de packet loss.
15 – Timestamp
Timestamp RTP
Categoria: RTP
Nível: 🟡 Intermediário
Categoria: RTP
Nível: 🟡 Intermediário
O que é?
É uma informação temporal presente no cabeçalho RTP utilizada para relacionar os dados transportados à sua posição no tempo.
Na prática
É importante para que o receptor consiga processar corretamente mídia em tempo real.
Não confundir
Timestamp ≠ Sequence Number
Não confundir
Timestamp ≠ Sequence Number
Sequence Number → identifica ordem dos pacotes Timestamp → representa posição temporal da mídia16 – Jitter
Jitter
Categoria: RTP / QoS
Nível: 🟢 Básico
Categoria: RTP / QoS
Nível: 🟢 Básico
O que é?
É a variação no tempo de chegada dos pacotes.
Imagine:
A variação pode afetar a reprodução da mídia.
Imagine:
Pacote 1 → 20 ms Pacote 2 → 20 ms Pacote 3 → 21 ms Pacote 4 → 80 ms Pacote 5 → 20 msA variação pode afetar a reprodução da mídia.
Na prática
Jitter elevado pode contribuir para:
áudio entrecortado;
falhas;
atraso;
necessidade de buffering;
degradação da qualidade.
áudio entrecortado;
falhas;
atraso;
necessidade de buffering;
degradação da qualidade.
17 – Packet Loss
Packet Loss
Categoria: RTP / QoS
Nível: 🟢 Básico
Categoria: RTP / QoS
Nível: 🟢 Básico
O que é?
É a perda de pacotes durante o transporte.
Na prática
Pode provocar:
áudio cortado;
voz robótica;
falhas;
palavras incompletas;
degradação do MOS.
áudio cortado;
voz robótica;
falhas;
palavras incompletas;
degradação do MOS.
Exemplo
Enviado: 1 2 3 4 5 6 7 8 9 10 Recebido: 1 2 3 5 6 8 9 10Pacotes:
4 e 7foram perdidos.
18 – One-Way Audio
One-Way Audio
Categoria: Voz / RTP
Nível: 🟢 Básico
Categoria: Voz / RTP
Nível: 🟢 Básico
O que é?
É uma situação em que o áudio funciona em apenas uma direção.
Na prática
Causas possíveis:
firewall;
NAT;
ACL;
rota;
IP incorreto no SDP;
porta UDP bloqueada;
SBC;
media gateway;
assimetria de rede.
Procedimento
Compare:
firewall;
NAT;
ACL;
rota;
IP incorreto no SDP;
porta UDP bloqueada;
SBC;
media gateway;
assimetria de rede.
Procedimento
Compare:
SDP A ↓ IP/porta ↓ RTP real SDP B ↓ IP/porta ↓ RTP realExemplo
A ─────── RTP ───────> B A <────── X ────────── BA escuta B.
B não escuta A.
19 – No Audio
No Audio
Categoria: Voz / RTP
Nível: 🟢 Básico
Categoria: Voz / RTP
Nível: 🟢 Básico
O que é?
É a ausência de áudio durante uma chamada que aparentemente foi estabelecida.
Na prática
Primeiras verificações:
SDP;
IP;
porta;
codec;
RTP;
firewall;
NAT;
SBC.
SDP;
IP;
porta;
codec;
RTP;
firewall;
NAT;
SBC.
Exemplo
Fluxo típico
Aqui temos uma situação clássica:
Sinalização funcionando, mídia não funcionando.
INVITE ✓ 100 Trying ✓ 180 Ringing ✓ 200 OK ✓ ACK ✓ RTP ✗Aqui temos uma situação clássica:
Sinalização funcionando, mídia não funcionando.
20 – RTCP-MUX
RTCP-MUX
Categoria: RTP / RTCP / SDP
Nível: 🔴 Avançado
Categoria: RTP / RTCP / SDP
Nível: 🔴 Avançado
O que é?
É a multiplexação de RTP e RTCP na mesma porta UDP.
Tradicionalmente, RTP e RTCP poderiam utilizar portas separadas. O RFC 5761 especifica como RTP e RTCP podem compartilhar uma única porta e como isso pode ser sinalizado no SDP utilizando
Tradicionalmente, RTP e RTCP poderiam utilizar portas separadas. O RFC 5761 especifica como RTP e RTCP podem compartilhar uma única porta e como isso pode ser sinalizado no SDP utilizando
a=rtcp-mux. Na prática
Isso é muito importante em análise de traces modernos e em ambientes que precisam simplificar NAT traversal e regras de firewall.
Exemplo
Sem multiplexação:
Com
No SDP
RTP → UDP 40000 RTCP → UDP 40001Com
rtcp-mux:RTP ─┐ ├── UDP 40000 RTCP ─┘No SDP
a=rtcp-mux21 – SRTP
SRTP — Secure Real-time Transport Protocol
Categoria: Segurança / RTP
Nível: 🔴 Avançado
Categoria: Segurança / RTP
Nível: 🔴 Avançado
O que é?
É um perfil seguro do RTP que fornece mecanismos de proteção para o tráfego RTP e também para o RTCP.
Entre as propriedades previstas estão:
confidencialidade;
autenticação/integridade;
proteção contra replay.
Essas características estão especificadas no RFC 3711.
Entre as propriedades previstas estão:
confidencialidade;
autenticação/integridade;
proteção contra replay.
Essas características estão especificadas no RFC 3711.
Na prática
Em vez de:
temos:
RTP ↓ Áudiotemos:
SRTP ↓ Áudio protegido22 – RTCP SR
SR — Sender Report
Categoria: RTCP
Nível: 🔴 Avançado
Categoria: RTCP
Nível: 🔴 Avançado
O que é?
É um tipo de pacote RTCP utilizado por fontes que estão enviando mídia.
Ele transporta informações relacionadas à transmissão e sincronização da sessão.
Ele transporta informações relacionadas à transmissão e sincronização da sessão.
Na prática
É utilizado em conjunto com outros mecanismos RTCP para fornecer informações sobre o fluxo RTP.
23 – RTCP RR
RR — Receiver Report
Categoria: RTCP
Nível: 🔴 Avançado
Categoria: RTCP
Nível: 🔴 Avançado
O que é?
É um tipo de relatório RTCP enviado por receptores para fornecer informações sobre a recepção do fluxo RTP.
Pode ajudar a analisar:
perda;
jitter;
sequência;
qualidade da recepção.
Pode ajudar a analisar:
perda;
jitter;
sequência;
qualidade da recepção.
24 – Media Stream
Media Stream
Categoria: RTP
Nível: 🟢 Básico
Categoria: RTP
Nível: 🟢 Básico
O que é?
É o fluxo de mídia entre dois ou mais participantes de uma sessão.
Em uma chamada de voz:
Em uma chamada de voz:
Áudio A → RTP → B Áudio B → RTP → ANa prática
É comum termos dois fluxos RTP:
Por isso uma chamada pode apresentar áudio em uma direção e ausência na outra.
RTP A → B RTP B → APor isso uma chamada pode apresentar áudio em uma direção e ausência na outra.
25 – DTMF sobre RTP
DTMF Events
Categoria: RTP / Telefonia
Nível: 🟡 Intermediário
Categoria: RTP / Telefonia
Nível: 🟡 Intermediário
O que é?
É o transporte de eventos DTMF através do RTP.
Um método muito comum é o uso de eventos RTP associados ao payload type negociado no SDP.
Um método muito comum é o uso de eventos RTP associados ao payload type negociado no SDP.
Na prática
É utilizado quando o usuário pressiona:
durante uma chamada.
É muito importante em:
URA;
atendimento eletrônico;
call center;
serviços bancários;
consulta de saldo;
menus telefônicos.
1 2 3 # *durante uma chamada.
É muito importante em:
URA;
atendimento eletrônico;
call center;
serviços bancários;
consulta de saldo;
menus telefônicos.
Exemplo
a=rtpmap:101 telephone-event/8000Isso indica que o payload type 101 está associado a eventos
telephone-event.26 – Clock Rate
Clock Rate
Categoria: RTP / Codec
Nível: 🟡 Intermediário
Categoria: RTP / Codec
Nível: 🟡 Intermediário
O que é?
É a frequência de amostragem associada à mídia/codec, expressa em Hz.
Na prática
Você encontrará frequentemente:
dependendo do codec e da aplicação.
8000 Hz 16000 Hz 48000 Hzdependendo do codec e da aplicação.
Exemplo
PCMA/8000Temos:
PCMA ↓ codec 8000 ↓ clock rate27 – Media Type
Media Type
Categoria: SDP
Nível: 🟢 Básico
Categoria: SDP
Nível: 🟢 Básico
O que é?
É a identificação do tipo de mídia descrita no SDP.
Os exemplos mais comuns incluem:
Os exemplos mais comuns incluem:
audio video applicationExemplo
m=audioindica uma seção de áudio.
m=videoindica uma seção de vídeo.
28 – RTP Profile
RTP Profile
Categoria: RTP
Nível: 🔴 Avançado
Categoria: RTP
Nível: 🔴 Avançado
O que é?
É um conjunto de regras e convenções que define como o RTP será utilizado para determinada aplicação.
Um exemplo conhecido é:
Um exemplo conhecido é:
RTP/AVPNa prática
Você pode encontrar no SDP:
O perfil aparece como parte da descrição da mídia.
m=audio 40000 RTP/AVP 0 8 101O perfil aparece como parte da descrição da mídia.
29 – a=rtcp
a=rtcp
Categoria: SDP / RTCP
Nível: 🔴 Avançado
Categoria: SDP / RTCP
Nível: 🔴 Avançado
O que é?
É um atributo SDP utilizado para sinalizar informações relacionadas à porta utilizada para RTCP quando RTP e RTCP não estão multiplexados.
Exemplo
a=rtcp:40001Indica uma porta RTCP específica.
Atenção
Não confundir:
a=rtcpcom:
a=rtcp-muxO segundo indica a utilização da mesma porta para RTP e RTCP quando negociado conforme as regras aplicáveis.