Peer 2 Peer call с использованием PJSIP и PJSUA - PullRequest
1 голос
/ 03 января 2012

Я все еще изучаю SIP и все его протоколы, особенно пытаюсь интегрировать PJSIP в приложение для iPhone, чтобы совершать P2P-вызовы.У меня есть вопрос о одноранговом соединении с использованием PJSUA.Я могу совершать звонки другим клиентам в моей локальной сети, напрямую звоня по URI:

  • sip: 192. . . *: 5060

Мне любопытно, будет ли это работать для прямых вызовов на другие SIP URI, которые не находятся в локальной сети, без использования конфигурации сервера - если нет, то есть ли другой способ сделать p2p-вызовы без конфигурации сервера?

заранее спасибо,

Ответы [ 2 ]

1 голос
/ 24 октября 2012

Основная проблема заключается в том, чтобы решить проблему с получением транспортных портов в любом месте в Интернете для мультимедийного трафика. Многие компании / эксперты пытались решить эту ситуацию. Возможным выходом из ситуации является покупка домена и настройка базового регистратора с использованием YATE или Asterisk по адресу, доступному из Интернета, и настройка его на использование ICE по мере необходимости. Ваше приложение iphone на обоих концах может автоматически регистрироваться в нем при запуске. Затем сделайте P2P звонки.

1 голос
/ 03 января 2012

Вы можете совершать звонки без настройки сервера, как правило, но что-то требует настройки. Как указывает mattjgalloway в комментариях под вашим вопросом, самое надежное решение - это червяк, включающий ICE , который обеспечивает своего рода «зонтичный» протокол для таких вещей, как STUN.

В прошлый раз, когда я коснулся этой проблемы , у меня было требование, чтобы я не мог использовать интернет-SIP-серверы, чтобы помочь. Я придумал идею своего рода реестра: ваш клиент может определить группу «адресных пространств» с конкретными требованиями к маршрутизации. Для SIP URI в вашей локальной сети вы не определяете маршрутизацию; для URI в сети вашей компании с VPN-доступом вы определяете маршрут, проходящий через ваше VPN-соединение; для всего остального вы определяете маршрут через интернет-роутер.

Под «определением маршрута» я подразумеваю, что, когда вы размещаете вызов URI в каком-то конкретном адресном пространстве, вы сохраняете, какой IP будет входить в заголовок контакта, какие заголовки маршрутов вам могут понадобиться и т. 1011 *

Таким образом, процесс совершения звонка становится:

  1. Поиск совпадений в наборе адресных пространств.
  2. Запросить в этом адресном пространстве подходящие биты, необходимые для создания работоспособного ПРИГЛАШЕНИЯ (соответствующие данные заголовка контакта, заголовки маршрута и т. Д.)
  3. Создайте обычное ПРИГЛАШЕНИЕ, мутировав по мере необходимости для предыдущего шага.
  4. Отправьте ПРИГЛАШЕНИЕ как обычно.

Это, по сути, воспроизводит половину того, что ICE даст вам, в форме, управляемой вручную. «Половина», потому что это гарантирует, что один агент SIP может выполнять вызовы так, чтобы все SIP-маршрутизация работала. Недостающая половина - вам все еще нужен какой-то регистратор, и каждый агент в вашем списке контактов должен иметь необходимую настройку для приема входящих звонков. (Если агент находится за интернет-маршрутизатором NATting, маршрутизатору потребуется либо запустить прокси-сервер SIP, либо перенаправить порты 5060, 5061 на конкретный компьютер (который может быть агентом или прокси-сервером, обслуживающим агентов локальной сети).

Это действительно большая банка червей.

...