RTP RFC (3550) интерпретационный вопрос - PullRequest
3 голосов
/ 13 сентября 2010

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

В глава 11, пункт 2, в нем говорится, что:

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

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

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

Итак, чтобы подвести итог:

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

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

Ответы [ 2 ]

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

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

0 голосов
/ 14 сентября 2010

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

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

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

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

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

Могу я что-то упустить? ;)

...