SIP: дождитесь пакета ACK на сайте Callee, чтобы начать сеанс RTP - PullRequest
3 голосов
/ 05 октября 2011

Ситуация:

У меня есть вопрос, касающийся сообщения ACK (желтый), которое отправляется от Asterisk к Callee (Tel B) после того, как Callee отправил свое сообщение 200 OK + SDP (пурпурный). Поток вызовов Asterisk, о котором я говорю, выглядит следующим образом:

Моя сеть для тестирования свиней:

ноутбук + программный телефон ---- звездочка ---- ноутбук + программный телефон

Вопрос:

Все мои протестированные программные телефоны Linux (Twinkle, SFLPhone, Ekiga-Softon, Linphone и QuteCom) не ждут, пока ACK начнет сеанс RTP. Я отфильтровал сообщение ACK с iptables на сервере Asterisk, и сессия RTP все равно началась. Однако из-за намерения моего проекта я хотел бы дождаться сообщения ACK и затем начать сеанс RTP. Есть ли способ, переключатель, команда или предпочтение, чтобы программный телефон ожидал с потоком RTP до получения сообщения ACK?

Дополнительно:

Я много гуглил и нашел какое-то устройство, например Фирменный VoIP-маршрутизатор Belkin , который имеет опцию: Запускать сеанс RTP до получения ACK [по умолчанию: выключено] Таким образом, я предполагаю, что должен быть способ позволить сеансу RTP начать после ACK получен.

Также я обнаружил, что лучше всего начинать сеанс сразу после отправки 200 OK + SDP. Однако, как уже упоминалось, этого недостаточно для моего проекта.


Источник рисунка:

http://www.panoramisk.com/101/asterisk-and-voice-transport/en/

1 Ответ

4 голосов
/ 05 октября 2011

Краткий ответ - нет; не будет широко поддерживаемой настройки, которая позволяет принудительно запускать RTP после ACK. В лучшем случае вы найдете некоторые устройства / программные телефоны, такие как упомянутое вами, которые имеют настройку, которая позволяет это. Я уже видел этот запрос в списке рассылки разработчиков SIP, и если я правильно помню, RFC на самом деле не является окончательным в отношении того, должен ли RTP запускаться после ответа 2xx или ACK, но обычно исключение заключается в том, что это ответ 2xx .

Еще один аспект, который вы можете исследовать, - это поиск настроек или, может быть, даже хитрость с правилами брандмауэра для отправки начального INVITE без SDP. ПРИГЛАШЕНИЯ без SDP поддерживаются RFC 3261, и когда они получены, это указывает, что ответ 2xx должен содержать начальное предложение SDP, и последующее подтверждение будет иметь ответ SDP. С этим механизмом RTP некуда идти до тех пор, пока не будет отправлен ACK.

...