Страница 1 из 1

Передача медиапотока посредством tcp

Добавлено: 01 май 2014, 20:38
abutorin
Всем хорошего настроения!

Имеется схема:
Сервер Asterisk 12.2.0
Клиент 1: мобильный телефон на Android со встроенным SIP/VOIP клиентом, за натом
Клиент 2: мобильный телефон на Android со встроенным SIP/VOIP клиентом, за натом.

У клиента 1 зверский, входящие UDP пакеты блокирует полностью.
Клиент 2 за более щадящим натом, там UDP пропускается.

Звонок с Клиента 1 на Клиент 2 проходит, голос первого второй слышит, в обратном порядке нет.
Звонок с Клиента 2 на клиент 1 не проходил, сразу обрывался с сообщением невозможности прокладки маршрута.

Часть проблем решилась с установкой параметра
sip.conf
tcpenable=yes
transport=tcp

после этого звонок с клиента 2 до клиента 1 проходит (можно взять трубку) но звук всеравно есть только в одном направлении.

Из всего получившего сделал вывод что проблема в непроходимости входящих udp пакетов у клиента 1.

Внимание вопрос. как можно медиапоток завернуть через tcp? Понимаю что появятся серьезные задержки в связи, но я на это согласен.

Re: Передача медиапотока посредством tcp

Добавлено: 01 май 2014, 22:58
ded
Не факт, что выводы правильные. Изучали?
Изображение
Изображение

Re: Передача медиапотока посредством tcp

Добавлено: 01 май 2014, 23:15
abutorin
ded писал(а):Не факт, что выводы правильные. Изучали?
Изучал.

Для проверки гипотезы брал клиента №3 у которого нат пропускает входящие udp пакеты. Все работает во всех направлениях.
Нигде в документации не нашел возможности пусть медиапоток через tcp поэтому и обратился. С sip все было проще, про транспорт внятно написано в демо примере, а с этим проблемы оказались.

Re: Передача медиапотока посредством tcp

Добавлено: 01 май 2014, 23:33
ded
Изучайте INVITE, делайте tcpdump, если сигналка по TCP проходит, то проблема только в преодолении НАТа, это разрешимо.

Re: Передача медиапотока посредством tcp

Добавлено: 01 май 2014, 23:49
abutorin
Проблему я уже определил. Привел пример в какм случае все работает. Задал конкретный вопрос который указан в теме ветки. Меня конкретно интересует как заставить медиапоток идти через tcp если это возможно.

Re: Передача медиапотока посредством tcp

Добавлено: 02 май 2014, 12:39
ded
Это возможно. На теоретическом уровне. У Вас - практический конкретный уровень, и конкретику (назначенные ИП адреса, порты) можно увидеть через tcpdump, в пакетах INVITE и ответах на них. Проблема в том, что медиа протокол RTP, который используется в H.323 & SIP - это UDP. Я в таком случае ничкакого выхода кроме как тунеллирование - не вижу.
Вы написали про свой ТСР опыт:
звонок с клиента 2 до клиента 1 проходит (можно взять трубку) но звук всеравно есть только в одном направлении.
А в каком направлении? Исходящий от 1=> 2? Если понимать что НАТ
У клиента 1 зверский, входящие UDP пакеты блокирует полностью.
В общем, не забывайте, что форум предназначен, чтобы Вы сами решили свою проблему и опубликовали её решение. Как указано при регистрации.

Re: Передача медиапотока посредством tcp

Добавлено: 02 май 2014, 12:57
abutorin
ded писал(а):А в каком направлении? Исходящий от 1=> 2?
Звонок инициирует клиент 2, звук идет 1=>2 от 2=>1 звука нет.
Меня интересовала практическая возможность передачи медиапотока через tcp путем изменения настроек asterisk. Спасибо за ответ, я понял что его средствами это не решить про туннели я думал, похоже прийдется так и поступить. Если получится отпишусь про решение в данной теме.