Кратко об основах SIP-протокола

10.01.2019 - vvuri - Reading time ~4 Minutes

SIP (Session Initiation Protocol)- протоколом обмена сигналами IP-телефонии, используемый для установки телефонных вызовов.

Основы протокола SDP

Протокол SDP (Session Description Protocol)

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

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

Протокол SDP можно разделить на три части. Первая часть, дает описания деталям сессии и называется «Session description» (Описание сессии), вторая часть называется «Time description» (Описание времени) и описывает временные параметры сессии. Третья часть называется «Media description» (Описание медиа параметров), описывает медиа данные, которые будут использоваться в будущем соединении. Ниже представлен синтаксис протокола SDP.

Session Description- Описание сессии
v= (protocol version) – информация о версии протокола
o= (owner/creator and session identification) – информация о создателе сессии и её ID
s= (session name) – название сессии
i= (session information)* – информация о сессии
u= (URI of description)* – URL адрес описания
e= (email address – contact detail)* – контактный email
p= (phone number – contact detail)* – контактный телефон
c= (connection information)* – информация о подключении, не обязательна если включена в media description
b= (session bandwidth information)* – информация о полосе пропускания
z= (time zone adjustments)* – корректировка часового пояса
k= (encryption key)* – ключ шифрования
a= (zero or more session attribute lines)* – дополнительные поля
Time description- Описание времени
t= (time the session is active) – время активности сессии
r= (repeat times)* – число повторений
Media description- Описание медиа параметров
m= (media description/ transport address) – описание медиа сессии и транспортный адрес
i= (media title)* – медиа заголовок
c= (connection information)* – информация о подключении, не обязательна если включена в session description
b= (bandwidth information)* – информация о пропускной способности
k= (encryption key)* – ключ шифрования
a= (zero or more media attribute lines)* – дополнительные поля

Поля отмеченные * – необязательные

Описание каждого поля:

Session Description

  • v= – указывает версию Session Description Protocol. В RFC 4566 указана пока только одна версия 0.
  • o= Информация об организаторе сессии и её ID
    • Имя пользователя. Поле должно не содержать пробелов
    • Числовая строка – уникальный идентификатор сессии
    • Числовая строка – номер версии
    • Текстовая строка – тип сетевого соединения. IN – интернет
    • Текстовая строка – адрес организатора сессии. IP4 или IP6
    • Адрес, устройства, организатора сессии. Может быть доменным именем или IP адресом
  • s= Имя сессии, должно быть уникальным в рамках одной сессии. Данное поле должно быть заполнено
  • i= Может быть указано только одно описание сессии, с уровнем “i”. Поле “i” может быть указано в разделе Session Description или Media Description.

Поле предназначено для маркировки медиа потоков

  • u= URI (Uniform Resource Identifier) указывается в поле “u”, дополнительные данные для описания сессии
  • e= Поле определяет контактную информацию для лица, ответственного за конференцию
  • p= Поле определяет контактную информацию для лица, ответственного за конференцию
  • c= Информация о соединении, может быть описана в Session description или Media Description
    • Текстовая строка, описывающая тип сетевого соединения. IN – интернет
    • Текстовая строка, указывающая на тип IP адреса, указанного как адреса подключения. IP4 или IP6.
    • Мультикастовый адрес с TTL. 224.2.36.42127
  • b=: Ширина полосы пропускания может быть указана для всей сессии. Так может указываться для отдельной медиа сессии
    • Два типа: CT – полоса пропускания для конференции; AS – полоса пропускания приложения
    • указывает полосу пропускания в Кбит/с
  • z= в этом поле указывается смещение времени
  • k=: Если канал зашифрованный и доверительный, то SDP может переносить ключи шифрования. Ключ может быть указан для всей сессии или для каждой медиа сессии отдельно
    • В этом поле указывается метод шифрования или механизм получения ключей из внешних источников
    • Ключ шифрования
  • a=: Атрибуты сессии могут быть указаны как для уровня сессии, так и для уровня медиа данных. Атрибуты, указанные для уровня сессии, применяются, например, для создания конференции

Time Description

  • t=: Данное поле указывает начальное и конечное время для сессии.Specifies the start and stop times for a session
  • r= Если сессию необходимо повторить через некоторое время, то используется поле “r”. По умолчанию, значение для данного поля указывается в секундах, но для компактности записи можно использовать такие параметры, как день, час, минута, например, r=6d 2h 14m

Media Description

  • m= / Это поле используется для описания медиа данных, таких как: поток данных, порт для передачи данных, протокол для потоковой передачи или кодек.
    • Данное поле определяет медиа поток: аудио, видео, текст и т.д.
    • Данное поле определяет порт, на который будет передаваться медиа поток. Может быть указано несколько портов
    • Данное поле определяет протокол передачи медиа данных, например, RTP (real time protocol)
    • Данное поле определяет формат медиа данных, в каком кодеке будут передаваться данные, например, PCMU, GSM и т.д.