локальный порт RTP недоступен при использовании mjsip/jmf

Я создаю сеанс sip с помощью mjsip для внешнего провайдера voip. Затем я передаю тестовый wav-файл по rtp провайдеру с помощью RtpManager.

Программа работает без ошибок, и я отвечаю на sip-звонок. Однако звук не передается. Когда я диагностирую сетевой трафик с помощью wireshark, я вижу кучу RTP-трафика от моего локального хоста (за каким-то nat) к провайдеру voip и ничего обратно.

Через некоторое время я получаю сообщение об ошибке ICMP «Пункт назначения недоступен (порт недоступен)» от провайдера на мой локальный хост.

Программный linphone работает с использованием того же локального хоста и провайдера voip, хотя использует другой стек sip.

Какие-либо предложения?

Спасибо


person brian_d    schedule 20.04.2010    source источник
comment
Привет, я действительно заинтересован в вашем проекте. Можешь рассказать как ты сделал звонок с mjsip? Как вы транслируете тестовый wav-файл?   -  person B770    schedule 07.07.2013


Ответы (2)


Вы уже ответили на свой вопрос, но да, вы правы: Callee/UAS через некоторое время будет считать соединение неустановленным, если он не получил ACK.

SIP RFC сообщает нам, что транзакция INVITE сервера UAS перейдет в состояние Completed. когда он отправляет 200 OK. Получение ACK переводит его в состояние Confirmed.

Однако, если UAS имеет транспортную ошибку при отправке 200 OK или не может своевременно получить ACK (срабатывает таймер H (64 * T1 = 64 * 500m = 32 секунды по умолчанию), UAS перейдет в состояние Terminated. .

person Frank Shearar    schedule 22.04.2010

D'oh!

Было обнаружено, что проблема заключается в том, что я не отправил ACK на сообщение SIP 200, когда мой вызов был принят в моем классе прослушивателя вызовов. Таким образом, клиент voip игнорировал соответствующие запросы rtp.

public void onCallAccepted(Call call, String sdp, Message resp){
    System.out.println("call accepted");
    call.ackWithAnswer(sdp); //this was the missing line I needed
    this.setupRtpSession(call);
}

Надеюсь, это поможет любому с подобной проблемой

person brian_d    schedule 20.04.2010