Как Android 2.3 SIP API обрабатывает NAT? - PullRequest
3 голосов
/ 02 мая 2011

Некоторое время я играл с SipDemo в Android 2.3. SDK.

Документация на странице разработчика Android хорошо написана, но она не много. Это ничего не объясняет о IP, портах, NAT и STUN. Я знаю, как этот материал должен работать, но там не сказано, как Android SIP API справляется с этим. Или вообще обрабатывает NAT ...

Здесь кто-то упомянул, что API делает некоторые тесты для публичного IP и порт, но я впервые это читаю: http://code.google.com/p/android/issues/detail?id=14043&can=1&q=sip%20ip&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars Так что я не уверен, что это правда. По крайней мере, для меня это не сработало.

Но теперь к моей проблеме: При развертывании SipDemo как-либо на моем устройстве, подключенном к WiFi или эмулятору, предоставьте мои учетные данные (я знаю, что они работают с SipDroid и другие SIP-приложения) SipDemo отображает «регистрацию» не удалось". Я немного понюхал и обнаружил пакеты, отправленные на SipServer все включают устройства или эмуляторы локальных IP, а не общедоступные мои NAT один. Что-то вроде Via: SIP / 2.0 / UDP 192.168.0.106:53230 Сервер правильно отвечает, что IP-адреса RFC1918 недопустимы.

Я добавил STUN-тест в SipDemo и успешно получил свой публичный IP и порт. Но я не могу найти способ передать это моему создал SipProfile или SipManager.

Мой вопрос: Кто-нибудь когда-либо делал приложение, работающее с SIP API, за NAT? Как API обрабатывает NAT? Как я могу передать полученную информацию из моего собственного клиента STUN в SIP API?

Я знаю SipDroid и множество других реализаций SIP, но они все не используют встроенный API.

1 Ответ

0 голосов
/ 13 октября 2011

Я добавил STUN-тест в SipDemo и успешно получил свой публичный IP и порт. Но я не могу найти способ передать это моему создал SipProfile или SipManager.

Если вы находитесь за симметричным NAT, это не имеет значения, поскольку для исходящего SIP-соединения будет создана новая привязка NAT, поэтому информация, которую вы собрали с помощью STUN, на самом деле не пригодна для использования.

Вы не должны беспокоиться о NAT из SIP API, сервер должен реализовать для вас методы обхода NAT.

В некоторых случаях вы действительно можете что-то сделать с клиента: когда ICE используется, и вы выбираете свой собственный сервер TURN, но я не думаю, что Android пока реализует поддержку ICE и TRUN. Даже если бы это было так, вам все равно нужно развернуть сервер TRUN ...

В бесплатных сервисах реализована техника обхода NAT, вы можете попробовать http://sip2sip.info, например.

...