Pular para conteúdo

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:
RTP read too short

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:

tcpdump -n -i any udp portrange 40000-55000

Durante uma chamada, foi possível observar que o tráfego RTP estava chegando via IPv6, como no exemplo abaixo:

IP6 2001:db8::abcd.5060 > 2001:db8::1234.40002: UDP, length 20

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 short desapareceu 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.