Учебники

SIP — Модель предложения / ответа

Использование SDP с SIP дано в ответе предложения SDP RFC 3264. Тип тела сообщения по умолчанию в SIP — это application / sdp .

  • Вызывающая сторона перечисляет мультимедийные возможности, которые они готовы получить в SDP, обычно в сообщении INVITE или ACK.

  • Вызываемая сторона перечисляет свои мультимедийные возможности в ответе 200 OK на сообщение INVITE.

Вызывающая сторона перечисляет мультимедийные возможности, которые они готовы получить в SDP, обычно в сообщении INVITE или ACK.

Вызываемая сторона перечисляет свои мультимедийные возможности в ответе 200 OK на сообщение INVITE.

Типичное использование SDP протокола SIP включает в себя следующие поля: версия, источник, тема, время, соединение и один или несколько носителей и атрибутов.

  • Поле субъекта и время не используются SIP, но включены для совместимости.

  • В стандарте SDP поле субъекта является обязательным полем и должно содержать хотя бы один символ, предположительно s = — если субъекта нет.

  • Поле времени обычно устанавливается равным t = 00. SIP использует поля подключения, мультимедиа и атрибута для настройки сеансов между UA.

  • Поле происхождения имеет ограниченное использование с SIP.

  • Идентификатор сеанса обычно поддерживается постоянным в течение сеанса SIP.

  • Версия увеличивается каждый раз, когда изменяется SDP. Если отправляемый SDP не изменился по сравнению с отправленным ранее, версия остается прежней.

  • Поскольку тип мультимедийного сеанса и используемый кодек являются частью согласования соединения, SIP может использовать SDP для указания нескольких альтернативных типов мультимедиа и для выборочного принятия или отклонения этих типов мультимедиа.

Поле субъекта и время не используются SIP, но включены для совместимости.

В стандарте SDP поле субъекта является обязательным полем и должно содержать хотя бы один символ, предположительно s = — если субъекта нет.

Поле времени обычно устанавливается равным t = 00. SIP использует поля подключения, мультимедиа и атрибута для настройки сеансов между UA.

Поле происхождения имеет ограниченное использование с SIP.

Идентификатор сеанса обычно поддерживается постоянным в течение сеанса SIP.

Версия увеличивается каждый раз, когда изменяется SDP. Если отправляемый SDP не изменился по сравнению с отправленным ранее, версия остается прежней.

Поскольку тип мультимедийного сеанса и используемый кодек являются частью согласования соединения, SIP может использовать SDP для указания нескольких альтернативных типов мультимедиа и для выборочного принятия или отклонения этих типов мультимедиа.

Спецификация предложения / ответа, RFC 3264, рекомендует использовать атрибут, содержащий = rtpmap: для каждого поля мультимедиа. Поток мультимедиа отклоняется путем установки нуля номера порта для соответствующего поля мультимедиа в ответе SDP.

пример

В следующем примере вызывающая сторона Tesla хочет установить аудио- и видеовызов с двумя возможными аудиокодеками и видеокодеком в SDP, передаваемым в начальном INVITE —

v = 0 
o = John 0844526 2890844526 IN IP4 172.22.1.102  
s = - 
c = IN IP4 172.22.1.102 
t = 0 0 
m = audio 6000 RTP/AVP 97 98 
a = rtpmap:97 AMR/16000/1 
a = rtpmap:98 AMR-WB/8000/1 
m = video 49172 RTP/AVP 32 
a = rtpmap:32 MPV/90000 

На кодеки ссылаются номера профилей RTP / AVP 97, 98.

Вызываемая сторона Marry отвечает на вызов, выбирает второй кодек для первого мультимедийного поля и отклоняет второе мультимедийное поле, желая только сеанса AMR.

v = 0 
o = Marry 2890844526 2890844526 IN IP4 172.22.1.110 
s = - 
c = IN IP4 200.201.202.203 
t = 0 0 
m = audio 60000 RTP/AVP 8 
a = rtpmap:97 AMR/16000 
m = video 0 RTP/AVP 32 

Если этот аудиозвонок неприемлем, Том отправит ACK, а затем BYE, чтобы отменить звонок. В противном случае аудио сеанс будет установлен и RTP-пакеты будут обмениваться.

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

Правила предложения / ответа кратко изложены в следующих разделах.

Правила генерации предложения

Предложение SDP должно включать все обязательные поля SDP (это включает v =, o =, s =, c = и t =). Это обязательные поля в SDP.

Обычно включает в себя поле мультимедиа ( m = ), но это не обязательно. Строки мультимедиа содержат все кодеки, перечисленные в порядке предпочтения. Единственное исключение из этого — если конечная точка поддерживает огромное количество кодеков, должны быть перечислены наиболее вероятные или наиболее предпочтительные. Различные типы медиа включают аудио, видео, текст, MSRP, BFCP и так далее.

Правила генерации ответа

Ответ SDP на предложение должен быть составлен в соответствии со следующими правилами:

  • Ответ должен иметь такое же количество m = строк в том же порядке, что и ответ.

  • Отдельные медиапотоки можно отклонить, установив номер порта в 0.

  • Потоки принимаются отправкой ненулевого номера порта.

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

  • Для динамических полезных нагрузок один и тот же номер динамической полезной нагрузки не требуется использовать в каждом направлении. Обычно выбирается только одна полезная нагрузка.

Ответ должен иметь такое же количество m = строк в том же порядке, что и ответ.

Отдельные медиапотоки можно отклонить, установив номер порта в 0.

Потоки принимаются отправкой ненулевого номера порта.

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

Для динамических полезных нагрузок один и тот же номер динамической полезной нагрузки не требуется использовать в каждом направлении. Обычно выбирается только одна полезная нагрузка.

Правила изменения сеанса

Любая из сторон может инициировать другой обмен предложением / ответом для изменения сеанса. При изменении сеанса необходимо соблюдать следующие правила:

  • Номер версии линии источника ( o = ) должен быть таким же, как и последний отправленный, что указывает на то, что этот SDP идентичен предыдущему обмену, или может быть увеличен на единицу, что указывает на новый SDP, который должен быть проанализирован.

  • Предложение должно включать в себя все существующие линии средств массовой информации, и они должны быть отправлены в том же порядке.

  • Дополнительные медиа потоки могут быть добавлены в конец списка m = line.

  • Существующий медиапоток можно удалить, установив номер порта равным 0. Эта медийная линия должна оставаться в SDP и всех будущих обменах предложением / ответом для этого сеанса.

Номер версии линии источника ( o = ) должен быть таким же, как и последний отправленный, что указывает на то, что этот SDP идентичен предыдущему обмену, или может быть увеличен на единицу, что указывает на новый SDP, который должен быть проанализирован.

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

Дополнительные медиа потоки могут быть добавлены в конец списка m = line.

Существующий медиапоток можно удалить, установив номер порта равным 0. Эта медийная линия должна оставаться в SDP и всех будущих обменах предложением / ответом для этого сеанса.

Удержание вызова

Одна сторона в вызове может временно поставить другую на удержание. Это делается путем отправки сообщения INVITE с идентификатором SDP, идентичным исходному сообщению INVITE, но с присутствующим атрибутом = sendonly .

Вызов снова становится активным путем отправки другого сообщения INVITE с присутствующим атрибутом a = sendrecv . На следующем рисунке показан поток вызовов при удержании вызова.