Я понимаю многие тонкости перфорации отверстий NAT, вызовов ICE и SIP VOIP. Я ответил на несколько вопросов по SO по этим темам. Теперь у меня есть вопрос.
Я пытаюсь понять необходимость сообщения RE-INVITE, которое задокументировано для SIP+ICE после того, как вызов уже установлен.
Предположим топологию устройств VOIP, которые передают сигналы через SIP и используют ICE (с STUN/TURN) для установления медиа-соединения. После выполнения проверок подключения ICE обе конечные точки должны определить наилучшие пары возможных адресов (IP, порт) и должны быть готовы к потоковой передаче мультимедиа в обоих направлениях.
Но мой опыт работы с SIP и большое количество документации показывают, что после того, как вызываемый абонент отправляет сообщение 200 OK, чтобы указать, что он находится в состоянии ответа, вызывающий абонент должен отправить RE-INVITE с SDP, содержащим конкретный адрес-кандидат, выбранный проверками подключения. .
Вот некоторые ссылки, описывающие ПОВТОРНОЕ ПРИГЛАШЕНИЕ с помощью ICE: здесь и здесь (шаг 8). В руководстве Розенберга (стр. 30) обсуждается, что RE-INVITE "гарантирует, что промежуточные блоки имеют правильный медиа-адрес». Я не уверен, почему это важно.
Ожидается ли, что после получения RE-INVITE вызываемый абонент переконфигурирует свой стек ICE для переключения сокетов или адресов на основе полученного нового SDP? Или RE-INVITE — это просто протокольная формальность для официального подтверждения того, что вызов был установлен? Если шаг RE-INVITE был пропущен и обе стороны начали потоковую передачу мультимедиа, что может пойти не так?
Причина, по которой я спрашиваю, заключается в том, что я изучаю использование ICE поверх службы сигнализации, которая не является SIP. Я пытаюсь выяснить, нужно ли эмулировать RE-INVITE.