Вопрос интерпретации RTP RFC (3550)

Я делаю реализацию Java для RFC 3550 (RTP), и я столкнулся с небольшой проблемой:

В параграфе 2 главы 11 говорится, что:

(...) Участник НЕ ДОЛЖЕН предполагать, что исходный порт входящего пакета RTP или RTCP может использоваться в качестве порта назначения для исходящих пакетов RTP или RTCP. Когда пакеты данных RTP отправляются в обоих направлениях, пакеты RTCP SR каждого участника ДОЛЖНЫ быть отправлены на порт, указанный другим участником для приема RTCP. (...)

RTP не имеет никакого механизма для информирования об этих адресах и портах (это зависит от SDP или какого-либо другого установочного протокола), что привело бы меня к пониманию этого абзаца как «если вы получаете данные из неизвестного источника, просто отбросьте их» .

Но в раздел 6.3.3 в основном говорится, что когда RTP или получен пакет RTCP без BYE с неизвестным SSRC, в таблицу следует добавить нового участника.

Итак, подведем итог:

  1. Вы должны добавить нового участника, когда получен неизвестный SSRC;
  2. Вы не можете использовать исходный IP/порт пакета в качестве пункта назначения пакетов для этого участника;
  3. SDP не определяет SSRC, который будет использоваться каждым из участников RTP;
  4. Вы можете вручную добавить участников RTP (обнаруженных другими способами), НО вы понятия не имеете, какими будут SSRC.

Итак, вопрос на миллион долларов: как следует обрабатывать неожиданные SSRC?


person biasedbit    schedule 13.09.2010    source источник


Ответы (2)


  1. Вы должны добавить нового участника при получении неизвестного SSRC --> Только после его проверки в соответствии с разделом 6.2.1.
  2. Вы не можете использовать исходный IP-адрес/порт пакета в качестве пункта назначения пакетов для этого участника -> Это говорит о том, что вы не можете ожидать, что пара RTP/RTCP конечной точки A будет такой же, как пара конечной точки B (если не указано иное). (В разделе 11 RFC не говорится об IP-адресе.)
  3. SDP не определяет SSRC, который будет использоваться каждым из участников RTP --> Да, поскольку SSRC можно изменить на лету.
  4. Вы можете вручную добавить участников RTP (обнаруженных другими способами), НО вы понятия не имеете, какими будут SSRC. ???

Так что вопрос на миллион долларов по-прежнему стоит миллион долларов. Будет исследовать и обновлять вас. Тем временем, если вы найдете ответы, пожалуйста, сообщите нам также.

person Alam    schedule 15.09.2010

Из моей интерпретации RFC ответ на ваш вопрос находится в разделе 6.3.3:

6.3.3 Получение RTP-пакета или RTCP-пакета без BYE

Когда пакет RTP или RTCP получен от участника, SSRC которого отсутствует в таблице участников, SSRC добавляется в таблицу, и значение для участников обновляется после проверки участника, как описано в разделе 6.2.1.

Относительно того, какую запись следует считать действительной:

(...) Новые записи МОГУТ считаться недействительными до тех пор, пока не будет получено несколько пакетов, содержащих новый SSRC (см. Приложение A.1), или пока не будет получен пакет SDES RTCP, содержащий CNAME для этого SSRC.(... )

Может я что-то упускаю? ;)

person Nuno Costa    schedule 14.09.2010
comment
Большой вопрос заключается в том, как мне определить комбинацию IP/порта этого нового участника - после его проверки - поскольку в параграфе 2 раздела 11 говорится, что исходный IP/порт НЕ ДОЛЖЕН использоваться и (...) пакеты ДОЛЖНЫ быть отправлены на порт, который другой участник указал для приема (...). Если это новый, неожиданный участник (имеется в виду, не объявленный через SDP, возможно, кто-то подключается), как указывается комбинация IP/порта приема? - person biasedbit; 14.09.2010