Я хочу использовать Ice-Lite в Android webrtc.
Я хочу знать

  1. Ice-Lite - это серверный компонент или клиентская сторона?
  2. Как Ice-Lite реализован на Android?
  3. Если используется Ice-Lite, нужен ли нам STUN-сервер?
  4. Как ледяной кандидат встраивается в SDP, когда Ice-Lite используется для Android?

Я попытался вставить a=ice-lite в SDP после c=IN IP4 0.0.0.0 и передать RTCConfig только сервер STUN, но это, похоже, не работает! Кроме того, я отправил предложение и ответ только после завершения IceGathering.

Что мне нужно сделать, чтобы внедрить Ice-Lite для Android?

Благодарность!

0
Neernay 18 Фев 2016 в 20:21

3 ответа

Лучший ответ
  1. Ice-Lite - это серверный компонент или клиентская сторона?

    Ни то, ни другое. ICE не зависит от «стороны», поскольку он создан для p2p, в спецификации все называется «клиентом». Однако, учитывая, что он используется только для клиентов, которые имеют постоянный статический общедоступный IP-адрес (что крайне редко для того, что вы называете клиентом вызова в соединении клиент-сервер, которое работает через общедоступный Интернет), де-факто применяется только к шлюз и серверы.

  2. Как Ice-Lite реализован на Android?

    Нет. Однако некоторые библиотеки реализуют спецификации (lib nice, ....).

  3. Если используется Ice-Lite, нужен ли нам STUN-сервер?

    Да и нет. Вам не нужен STUN-сервер для получения рефлексивных кандидатов на клиенте, который находится на общедоступном IP-адресе (да!). Однако, если другой клиент находится за NAT, этому другому клиенту понадобится STUN, возможно, TURN , сервер для установления соединения с клиентом ice-life.

  4. Как ледяной кандидат встраивается в SDP, когда Ice-Lite используется для Android?

    Так же, как и любой другой клиент. Прочтите спецификации. Вам нужно больше, чем просто добавить флаг в SDP, чтобы в любом случае включить ice-lite. Намного больше.

2
Dr. Alex Gouaillard 23 Фев 2016 в 00:32

Вам следует прочитать RFC 5245, который описывает ICE-lite в очень удобочитаемой форме.

Ожидается, что ICE-lite станет только ступенькой к полной реализации ICE. Если конечная точка имеет полную реализацию, она, вероятно, не будет поддерживать работу ICE-lite.

Для использования ICE в вызове оба агента должны его поддерживать. Однако некоторые агенты всегда будут подключены к общедоступному Интернету и будут иметь общедоступный IP-адрес, по которому они могут получать пакеты от любого корреспондента. Чтобы облегчить для этих устройств поддержку ICE, ICE определяет специальный тип реализации, называемый LITE (в отличие от обычной реализации FULL). Облегченная реализация не собирает кандидатов; он включает только кандидатов на хост для любого медиа-потока. Облегченные агенты не генерируют проверки подключения и не запускают конечные автоматы, хотя они должны иметь возможность отвечать на проверки подключения. Когда облегченная реализация соединяется с полной реализацией, полный агент берет на себя роль управляющего агента, а облегченный агент берет на себя управляемую роль. При соединении двух облегченных реализаций проверки не отправляются.

Чтобы узнать, когда подходит облегченная реализация, см. Обсуждение в Приложении A.

Важно отметить, что облегченная реализация была добавлена в эту спецификацию, чтобы обеспечить ступеньку к полной реализации. Даже для устройств, которые всегда подключены к общедоступному Интернету, полная реализация предпочтительнее, если это возможно.

ICE-lite - это то, что вы запускаете на сервере. Вы можете обойтись без STUN, если ваш сервер использует ICE-lite и вы можете настроить сервер на отправку доступного адреса.

Я не думаю, что в Android есть реализация ICE-lite. Ожидается, что устройства Android будут иметь изменяющиеся адреса, а в Android уже есть полная версия ICE, поэтому вряд ли имеет смысл иметь ICE-lite для Android.

1
mattm 22 Фев 2016 в 21:52

Извините, я испортил номинацию Aggressive и ICE-Lite от ICE. Следующие ответы относятся к агрессивной процедуре номинации ICE. Считайте это дополнительной информацией. Агрессивное выдвижение - это процедура, которая определяет, как вызывающий должен финализировать выбранного кандидата, отправив USE-CANDIDATE.

Правильный ответ на это сообщение: В процедуре ICE lite клиент собирает не всех кандидатов, а только кандидата на локальный хост. Это в основном предназначено для конечной точки, которая находится за общедоступным IP-адресом, когда клиент находится за общедоступным IP-адресом, где нет NAT, он может подключаться к любому другому кандидату, даже если этот другой конец находится за симметричным NAT. ICE-Lite не требует сервера STUN / TURN. Вы не можете добиться этого, используя линию SDP, поскольку процедура ICE-Lite выполняется раньше, чем вы получите кандидатов. Поэтому, если вы не установите сервер STUN / TURN, он будет работать как ICE-Lite (хотя это не формальный способ использования ICE-lite, клиент ICE должен иметь определенный способ установки ICE-Full или ICE-Lite), как сейчас он просто соберет принимающих кандидатов. Но если ваша конечная точка находится за NAT, а другая конечная точка находится вне сети, это не сработает. Так что лучше, если бы вы могли определить, находится ли клиент за публичным IP-адресом или нет.

0
Palash Borhan Uddin 22 Фев 2016 в 21:10