Найти RTP/RTCP после SIP/SDP

Я работаю над программой захвата пакетов для анализа трафика RTP/RTCP. Трафик находится в мобильной сети, например, VoLTE. Я понимаю, что мне нужно сначала выполнить поиск в пакетах SIP/SDP, чтобы получить фактические адреса и номера портов, используемые в RTP/RTCP. Вопрос в том, какую информацию я должен изучить. Например:

  • Источник / назначение и другая информация в пакетах SIP. Поскольку используется прокси-сервер SIP, адрес пакета SIP и информация в заголовке SIP, такие как "Через", "Кому" и "От" и т. Д., Не имеют ничего общего с адресами RTP, верно? (PS, какова на самом деле цель этих полей?)
  • В чем разница между o= line и c= line в SDP? Будет ли RTP использовать один из них?
  • Я должен найти общие кодеки и типы полезной нагрузки, поддерживаемые в SDP вызывающего и вызываемого, для определения портов RTCP. Если они поддерживают более одного кодека для типа носителя, возможно ли для двух концов использовать разные кодеки?
  • Если в этом участвуют STUN, TURN или ICE, на что еще мне обратить внимание?

Существует так много протоколов, и их трудно понять, чтобы получить нужную информацию. Благодарю.

1 ответ

Решение

Источник / назначение и другая информация в пакетах SIP. Поскольку используется прокси-сервер SIP, адрес пакета SIP и информация в заголовке SIP, такие как "Через", "Кому" и "От" и т. Д., Не имеют ничего общего с адресами RTP, верно? (PS, какова на самом деле цель этих полей?)

В действительности, эта информация не имеет ничего общего с вашей информацией RTP/RTCP, это просто информация о SIP-прокси и двух сторонах, связанных с информацией, относящейся к сеансу SIP.

В чем разница между o= line и c= line в SDP? Будет ли RTP использовать один из них?

O line - это также то, что вам не нужно знать, это информация о клиенте отправителя или его идентификатор. Строка C= содержит адрес по умолчанию для вашего сеанса, это может быть атрибут уровня сеанса или атрибут уровня носителя, если у вас есть несколько носителей, таких как RTP и RTCP. Если его атрибут уровня сеанса в SDP, то он появится перед строкой m=. Если это не сеанс ICE, тогда этот адрес будет использоваться для вашего носителя.

Я должен найти общие кодеки и типы полезной нагрузки, поддерживаемые в SDP вызывающего и вызываемого, для определения портов RTCP. Если они поддерживают более одного кодека для типа носителя, возможно ли для двух концов использовать разные кодеки?

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

Если в этом участвуют STUN, TURN или ICE, на что еще мне обратить внимание?

Вы найдете эту информацию в виде строки a=, все строки a= появляются после строки m= до тех пор, пока другая строка m= конца SDP не будет соответствовать этим атрибутам мультимедиа, скажем, для кандидата вы увидите что-то вроде строки кандидата = ICE Кандидаты, вы также можете увидеть a=ice-pwd, a=ice-ufrag и т. д. Допустим, если у вас есть аудио m= линия с компонентами RTP и RTCP, то вы также можете увидеть строку =rtcp со значением порта, которое является значением по умолчанию RTCP порт, в этом случае порт появляется в этой строке m= RTP порт по умолчанию. Для более подробной информации о SDP вы можете проверить SDP RFC. Также вы можете проверить ICE RFC для деталей связанных атрибутов ICE.

Другие вопросы по тегам