Como resolvi o erro "RTP read too short" no FreePBX
Sintoma
- Chamadas outbound feitas via softphone (como MicroSIP, Zoiper etc.).
- A chamada ficava apenas “discando”, sem áudio.
- Após 30 segundos, a chamada era encerrada automaticamente.
- Nas logs do console do Asterisk aparecia a mensagem:
Esse comportamento indica que o servidor não está recebendo pacotes RTP corretamente — geralmente relacionado a problemas de rede, NAT ou IPv6.
Diagnóstico com tcpdump
No terminal da VM Debian (rodando FreePBX no Proxmox), utilizei o seguinte comando para capturar pacotes RTP:
Durante uma chamada, foi possível observar que o tráfego RTP estava chegando via IPv6, como no exemplo abaixo:
O Asterisk, por padrão, não lidava corretamente com esse tráfego RTP vindo por IPv6, o que resultava no erro RTP read too short e na queda da chamada após 30 segundos (timeout por falta de áudio).
Solução
A solução foi desativar o IPv6 diretamente no Mikrotik, que estava distribuindo endereços IPv6 para a rede interna.
Resultado
Após desabilitar o IPv6 no Mikrotik:
- O softphone passou a completar chamadas normalmente.
- O áudio funcionou em ambas as direções.
- A chamada não caiu após 30 segundos.
- O erro
RTP read too shortdesapareceu dos logs do Asterisk.
Dica
Mesmo que o FreePBX esteja configurado para funcionar apenas com IPv4, os softphones podem usar IPv6 automaticamente se estiver disponível na rede. Isso pode causar problemas quando o Asterisk não trata bem tráfego misto.
Se você não precisa de IPv6 na sua rede, o mais simples é desativá-lo no roteador (Mikrotik) para evitar problemas semelhantes.