IP 전화기가 NAT를 넘어 통신할 때 외부 미디어 스트림이 내부 네트워크를 통과하지 못해 통신이 실패할 수 있습니다. 이러한 상황은 이미 통신 중인 두 장치가 오랫동안 Hold 상태로 유지된 경우에도 발생할 수 있습니다. 외부 라우터에 저장된 NAT 매핑 정보가 시간 초과될 수 있기 때문에 Resume 이후에도 통신이 계속 실패할 수 있습니다.
NAT 환경에서 정상적인 통신을 보장하려면 RTP 스트림 통과가 매우 중요합니다.
RFC6263에 따르면 장치가 INACTIVE 및 RECVONLY 상태에서 동작할 때는 규격에서 권장하는 방식 중 하나를 사용하여 RTP 패킷을 주기적으로 전송해야 합니다. 규격에서는 RTCP를 RTP와 다중화하는 방식을 권장하지만, 많은 단말에서 이 방식이 구현되어 있지 않을 수 있으므로 호환성을 고려해 다른 방식을 채택합니다.
규격의 제4절을 참고하여 잘못된 Payload Type의 RTP 패킷을 주기적으로 전송함으로써 통신을 유지할 수 있습니다.
1.3.1 설정
위 그림의 설정을 활성화하면 RTP 스트림 통과 기능이 활성화됩니다. 다음 상황에서 RTP Keep Alive 패킷이 전송됩니다.
1 전화기의 통화가 연결된 후, 전화기는 NAT 채널을 열기 위해 RTP 패킷을 전송합니다. 이는 X6 영상 통화에 적용됩니다.
2 전화기 통화가 Hold 상태가 된 후, 전화기는 NAT 연결을 유지하기 위해 RTP 패킷을 주기적으로 전송합니다.
1.3.2 패킷 캡처
다음 그림은 전송된 RTP Keep Alive 패킷을 보여줍니다. Wireshark로 분석된 패킷을 보면 일반 통화의 코덱은 G.711 PCMU이며, 전송된 RTP Keep Alive 패킷의 코덱과 일치하지 않습니다.
다음 그림은 완전한 RTP Keep Alive 패킷을 보여줍니다.