Quando um telefone IP se comunica através de NAT, os fluxos de mídia externos podem não conseguir atravessar a rede interna, causando falha na comunicação. Essa situação também pode ocorrer quando dois dispositivos já em comunicação permanecem em Hold por muito tempo. Como as informações de mapeamento NAT armazenadas pelo roteador externo podem expirar, a comunicação ainda pode falhar após Resume.
Para garantir a comunicação normal sob NAT, a travessia de fluxo RTP é especialmente importante.
De acordo com a RFC6263, quando um dispositivo opera nos modos INACTIVE e RECVONLY, deve usar um dos métodos recomendados pela especificação para enviar pacotes RTP periodicamente. A especificação recomenda multiplexar RTCP com RTP. No entanto, considerando questões de compatibilidade, pois muitos terminais podem não ter implementado esse método, adota-se outra abordagem.
Com referência à seção 4 da especificação, a comunicação pode ser mantida pelo envio periódico de pacotes RTP com Payload Type incorreto.
1.3.1 Configuração
Após habilitar a configuração mostrada acima, a travessia de fluxo RTP é ativada. Os pacotes RTP Keep Alive são enviados nas seguintes situações:
1 Depois que a chamada telefônica é conectada, o telefone envia pacotes RTP para abrir o canal NAT. Isso se aplica às videochamadas X6.
2 Depois que a chamada telefônica é colocada em Hold, o telefone envia pacotes RTP periodicamente para manter a conexão NAT.
1.3.2 Captura de pacotes
A imagem a seguir mostra o pacote RTP Keep Alive transmitido. No pacote analisado pelo Wireshark, é possível ver que o codec de uma chamada normal é G.711 PCMU, diferente do codec do pacote RTP Keep Alive enviado.
A imagem a seguir mostra um pacote RTP Keep Alive completo.