Протоколы H.323

Протокол H.323 обеспечивает основу для передачи данных, видео- и аудиоинформации через IP-сети, включая Internet. H.323 рекомендуется Международным телекоммуникационным союзом (International Telecommunication Union – ITU) в качестве набора стандартов передачи мультимедиа-информации через локальные сети, не поддерживающие гарантированного качества сервиса (QoS). Большинство современных сетей относится именно к такому типу – примерами могут служить сети на базе протоколов TCP/IP и IPX в средах Ethernet, Fast Ethernet и Token Ring. Следовательно, протоколы H.323 являются важной частью построения ЛВС с поддержкой приложений мультимедиа. Такие приложения будут включать H.225.0-RAS, Q.931-H.245, RTP/RTCP и кодеки (кодер-декодер) аудио/видео/данных (аудио-кодеки G.711, G.723.1, G.728 и т. п., видео-кодеки H.261, H.263 с компрессией и декомпрессией, а также кодеки данных T.120).

Мультимедиа-потоки передаются на базе протоколов RTP/RTCP. RTP обеспечивает передачу собственно потоков мультимедиа, а RTCP поддерживает передачу данных для управления и контроля. Сигнализация (исключая RAS) передается с помощью протокола TCP. С сигнализацией имеют дело перечисленные ниже протоколы:

  • RAS управляет регистрацией, доступом и состоянием;
  • Q.931 обеспечивает организацию и разрыв соединений;
  • H.245 отвечает за согласование возможностей и использование каналов.

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

  • H.235 обеспечивает средства безопасности и аутентификацию;

  • H.450.x – дополнительные услуги.

Расположение протоколов H.323 в модели OSI показано на рисунке.

gfi_15

Положение стека протоколов H.323 в эталонной модели OSI

RTP

RFC 1889 http://www.cis.ohio-state.edu/htbin/rfc/rfc1889.html

Протокол RTP (Real-time Transport – передача в реальном масштабе времени) обеспечивает транспортные функции для приложений, передающих данные в реальном масштабе времени (таких, как голос или видео) с использованием индивидуальных или групповых адресов. RTP не резервирует ресурсы и не гарантирует качества обслуживания QoS для сервиса в реальном масштабе времени. Протокол управления передачей RTCP позволяет осуществлять мониторинг доставки данных (в том числе и для больших сетей с групповой адресацией) и обеспечивает минимальный набор функций управления и идентификации. Протоколы RTP и RTCP разработаны таким образом, что функционирует независимо от нижележащих транспортных и сетевых протоколов. Протокол RTCP поддерживает использование трансляторов и миксеров уровня RTP.

Формат заголовка RTP с фиксированной структурой показан на рисунке.

Биты

Октет

0

1

2

3

4

5

6

7

V

P

X

Счетчик CSRC

1

M

Тип содержимого (Payload type)

2

Порядковый номер

3

Временная метка

4

SSRC

5

CSRC

6

Структура RTP

V

Версия протокола RTP.

P

Флаг заполнения. P=1 говорит о том, что в конце пакета содержится один или несколько октетов выравнивания, не являющихся частью полезной информации.

X

Бит расширения. При X=1 после заголовка с фиксированной структурой следует дополнительный заголовок определенного формата.

Счетчик CSRC

Показывает число идентификаторов CSRC, следующих за заголовком.

M

Маркер, интерпретация которого определяется профилем. Маркеры позволяют отмечать важные события (например, границы кадра в потоке пакетов).

Тип содержимого

Идентификатор типа содержимого задает формат информационной части пакета RTP и определяет интерпретацию пакета приложениями. Используемое по умолчанию статическое отображение кодов типа содержимого в форматы данных задается профилем. Дополнительные коды типов данных могут динамически задаваться иными средствами (не относящимися к RTP).

Порядковый номер

Данное поле увеличивается на единицу для каждого следующего посылаемого пакета RTP. Номер может использоваться получателем для обнаружения потери пакетов и восстановления корректной последовательности пакетов.

Временная метка

Отражает момент выборки первого октета в пакете данных RTP. Значение времени выборки должно браться из переменной (часов), которая увеличивается во времени непрерывно и линейно. Это значение используется для синхронизации и обнаружения флуктуаций времени доставки (jitter). Уровень разрешения часов должен быть достаточным для обеспечения желаемой точности синхронизации и соответствующей точности определения флуктуация времени доставки (как правило одного изменения показаний часов на видео-кадр недостаточно).

SSRC

Указывает источник синхронизации (идентификатор выбирается случайным образом с учетом того, что два источника синхронизации в одной сессии RTP не должны иметь одинаковых идентификаторов SSRC).

CSRC

Список идентификаторов источников информации, содержащий указатели на источники включенной в пакет полезной информации.

RTCP

RFC 1889 http://www.cis.ohio-state.edu/htbin/rfc/rfc1889.html

Протокол управления RTP (RTP control protocol) основывается на периодической передаче управляющих пакетов всем участникам сессии с использованием того же механизма, который служит для передачи пакетов данных. Нижележащий протокол уровня должен поддерживать мультиплексирование пакетов данных и управляющих пакетов (например, за счет использования разных номер портов в UDP).

Формат заголовка показан на рисунке.

Биты

Октет

0

1

2

3

4

5

6

7

Версия

P

Счетчик принятых отчетов

1

Тип пакета

2

Длина

3-4

Структура RTCP

Версия

Номер версии RTP, совпадающий для пакетов RTCP и пакетов данных RTP. В настоящее время используется версия 2.

P

Флаг заполнения. P=1 говорит о том, что в конце пакета содержится один или несколько октетов выравнивания, не являющихся частью полезной информации. Последний октет поля заполнения содержит число октетов заполнения, которые следует игнорировать. Заполнение может требоваться при использовании некоторых алгоритмов шифрования с фиксированным размером блоков. В составном пакете RTCP заполнение может потребоваться только для последнего из отдельных пакетов, поскольку составной пакет шифруется как единое целое.

Счетчик принятых отчетов

Количество блоков отчета, содержащихся в пакете. Допустимо нулевое значение поля.

Тип пакета

Поле типа пакета содержит константу 200, указывающую, что данный пакет относится к RTCP SR.

Длина

Поле длины задает размер пакета RTCP в 32-битовых словах минус 1 (с учетом заголовка и заполнения). Уменьшение реального размера пакета делает 0 корректным значением длины и позволяет избежать зацикливания при сканировании составного пакета RTCP, а подсчет в 32-битовых словах позволяет избежать проверки кратности размера (в октетах) числу 4.

RAS

H.225: http://www.itu.int/itudoc/itu-t/rec/h/h225-0.html

Канал RAS (Registration, Admission and Status – регистрация, доступ, состояние) служит для сообщений, используемых в процессах обнаружения шлюзов и регистрации конечных точек. Последний процесс используются для установки соответствия адресов конечных точек и транспортных адресов сигнальных транспортных каналов. Поскольку канал RAS не обеспечивает гарантированной доставки, H.225.0 рекомендует использовать для различных сообщений таймаут и счетчики повторов. Конечная точка или шлюз, которым не удается ответить на запрос в течение заданного времени (таймаут), могут использовать сообщения RIP (Request in Progress – запрос обрабатывается) для индикации того, что запрос до сих пор не обработан. Конечная точка или шлюз, получающие RIP, сбрасывают таймер и счетчик повторов.

Сообщения RAS используют синтаксис ASN.1.

H.225

H.225: http://www.itu.int/itudoc/itu-t/rec/h/h225-0.html

H.225 представляет собой стандарт узкополосных видеотелефонных услуг, определенных в рекомендациях H.200/AV.120. Стандарт имеет дело с ситуациями, когда маршрут передачи включает, по крайней мере, одну сеть передачи пакетов, которая настроена на предоставление негарантируемого качества обслуживания QoS (такие сети также не поддерживают механизмов защиты и восстановления сверх заданных рекомендациями H.320 для терминалов). H.225.0 описывает организацию потоков голоса, видео, данных и управляющей информации в сетях передачи пакетов для обеспечения диалогового сервиса с помощью оборудования H.323.

Структура пакетов H.225 соответствует стандарту Q.931 и показана на рисунке.

Биты

Октет

8

7

6

5

4

3

2

1

Дискриминатор протокола

1

0

0

0

0

Размер ссылки (Length of call ref)

2

Ссылка на вызов

3 (-4)

0

Тип сообщения

Информационные элементы

Структура H.225

Дискриминатор протокола

Используется для того, чтобы отличать сообщения, управляющие вызовами пользователь-сеть, от других сообщений.

Размер ссылки

Длина поля call reference value (ссылка на вызов).

Ссылка на вызов

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

Тип сообщения

Поле типа определяет функцию переданного сообщения. Используются следующие типы сообщений:

000 xxxxx Сообщение при организации соединений
00001 ALERTING (предупреждение)
00010 CALL PROCEEDING (обработка вызова)
00111 CONNECT (соединение)
01111 CONNECT KNOWLEDGE (подтверждение соединения)
00011 PROGRESS Работа
00101 SETUP (установка)
01101 SETUP ACKNOWLEDGE (подтверждение установки)
001 xxxxx Сообщения при передаче информации
00110 RESUME (возобновить)
01110 RESUME ACKNOWLODGE (подтверждение возобновления)
00010 RESUME REJECT (отказ от возобновления)
00101 SUSPEND (временная остановка)
01101 SUSPEND ACKNOWLODGE (подтверждение временной остановки)
00001 SUSPEND REJECT (отказ от временной остановки)
00000 USER INFORMATION (пользовательская информация)
010 xxxxx Сообщения при разрыве соединений
00101 DISCONNECT (отключение)
01101 RELEASE (разъединение)
11010 RELEASE COMPLETE (разъединение завершено)
00110 RESTART (рестарт)
01110 RESTART ACKNOWLEDGE (подтверждение рестарта)
011 xxxxx Другие сообщения
00000 SEGMENT (сегмент)
11001 CONGESTION CONTROL (контроль насыщения)
11011 INFORMATION (информация)
01110 NOTIFY (уведомление)
11101 STATUS (состояние)
10101 STATUS ENQUIRY (запрос состояния)
Информационные элементы (IE)

Протокол определяет две категории информационных элементов – размером в один октет и переменной длины. Форматы информационных элементов показаны на рисунке.

Биты

Октет

8

7

6

5

4

3

2

1

1

Идентификатор EI

Содержимое IE

1

Формат информационного элемента из одного октета (тип 1)

Биты

Октет

8

7

6

5

4

3

2

1

1

Идентификатор IE

1

Формат информационного элемента из одного октета (тип 2)

Биты

Октет

8

7

6

5

4

3

2

1

1

Идентификатор IE

1

Длина содержимого IE

2

Содержимое IE

3-n

Формат информационного элемента переменной длины

H.245

H.245: http://www.itu.int/itudoc/itu-t/rec/h/h245.html

H.245 определяет линию передачи для нетелефонных сигналов. Протокол включает характеристики передачи и приема, а также предпочтительный режим для приемной стороны, сигнализацию логического канала, контроль и индикацию. Для обеспечения надежной доставки данных, аудио- и видеосигналов определены процедуры подтверждения на уровне сигнализации.

Сообщения H.225 соответствуют синтаксису ASN.1.

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

  • Master Slave Determination (определение ведущего и ведомого).
  • Terminal Capability (возможности терминала).
  • Logical Channel Signaling (сигнализация логического канала).
  • Multiplex Table signaling (сигнализация таблицы мультиплексирования).
  • Request Multiplex Table signaling (запрос сигнализации таблицы мультиплексирования).
  • Request Mode (режим запроса).
  • Round Trip Delay (задержка прохождения сигнала в обоих направлениях).
  • Maintenance Loop (цикл обслуживания).
  • Communication Mode (коммуникационный режим).
  • Conference Request and Response (запрос и отклик для конференции).
  • Terminal ID (идентификатор терминала).
  • Commands and Indications (команды и индикаторы).

H.261

H.261: http://www.cis.ohio-state.edu/htbin/rfc/rfc2032.html

Протокол H.261 описывает видео-потоки для передачи с помощью транспортного протокола в реальном масштабе времени (RTP). На более низком уровне могут использоваться любые протоколы, способные поддерживать трафик RTP.

Формат заголовка показан на рисунке.

Биты

Октет

0

1

2

3

4

5

6

7

SBIT

EBIT

I

V

1

GOBN

MBAP

2

MBAP

QUANT

HMVD

3

HMVD

VMVD

4

Структура заголовка H.261

SBIT

Стартовый бит. Количество старших битов, которые должны игнорироваться в первом октете данных.

EBIT

Завершающий бит. Количество младших битов, которые должны быть проигнорированы в последнем октете данных.

I

Флаг кодирования данных INTRA-кадра. Если данный бит имеет значение 1, поток содержит только блоки, кодированные как INTRA-кадры. Нулевое значение флага говорит, что данный поток может содержать или не содержать блоки, кодированные как INTRA-кадр. Значение этого бита не может изменяться в течение всей RTP-сессии.

V

Флаг вектора перемещения (Motion Vector). Нулевое значение устанавливается в том случае, когда векторы перемещения не используются в данном потоке. Единичное значение флага говорит о возможности присутствия векторов перемещения. Значение этого бита не может изменяться в течение всей RTP-сессии.

GOBN

Номер GOB, задающий начало пакета. Значение этого поля равно 0, если пакет начинается с заголовка GOB.

MBAP

Поле MBAP (Macroblock Address Predictor – предсказание адреса макроблока) кодирует предсказание адреса макроблока (т. е. последнее значение MBA, содержащееся в предыдущем пакете). Значение поля находится в диапазоне 0-32 (для предсказания допустимых значений MBA – 1-33), но, поскольку битовый поток не может быть фрагментирован между заголовком GOB и MB 1, предсказатель в начале пакета не может быть равен 0. Таким образом, остается диапазон 1-32, который смещается на –1 для того, чтобы было достаточно 5-битового поля. Если пакет начинается с заголовка GOB, поле MBAP=0.

QUANT

Поле QUANT показывает значение MQUANT или GQUANT до начала пакета. Если пакет начинается с заголовка GOB, для поля QUANT устанавливается нулевое значение.

HMVD

Поле HMVD (Horizontal Motion Vector Data – вектор горизонтального перемещения) представляет собой ссылку на горизонтальный вектор перемещения данных (Motion Vector Data – MVD). HMVD=0, если флаг V равен 0, пакет начинается с заголовка GOB или для последнего MB, помещенного в предыдущий пакет, значение MTYPE не равно MC. Значение HMVD должно находиться в диапазоне от –15 до +15.

VMVD

Поле VMVD (Vertical Motion Vector Data – вектор вертикального перемещения) представляет собой ссылку на вертикальный вектор перемещения данных MVD. Значение VMVD=0, если флаг V равен 0, пакет начинается с заголовка GOB или для последнего MB, помещенного в предыдущий пакет, значение MTYPE не равно MC. Значение VMVD должно находиться в диапазоне от –15 до +15.

H.263

RFC 2190 (RTP): http://www.cis.ohio-state.edu/htbin/rfc/rfc2032.html

H.263:http://www.itu.int/itudoc/itu-t/rec/h/h263.html

Протокол H.263 определяет формат инкапсуляции битового потока H.263 в пакеты протокола RTP (Real-time Transport Protocol – протокол транспортировки в реальном масштабе времени). Для заголовка потока (payload) H.263 определены три режима. Пакет RTP может использовать один из трех режимов видео-потока H.263 в зависимости от желаемого размера сетевого пакета и опций кодирования H.263. Самый короткий заголовок H.263 (режим A) поддерживает фрагментацию GOB (Group of Block – группа блока). Длинные заголовки H.263 (режимы B и C) поддерживают разбиение потока на макроблоки (MB).

Для каждого пакета RTP после заголовка RTP фиксированной длины следует заголовок содержимого H.263, а за ним – сжатый битовый поток стандарта H.263. Размер заголовка содержимого H.263 зависит от используемого режима. Схема видео-пакета RTP H.263 показана на рисунке.

4 байта

Заголовок RTP

Заголовок потока H.263

Битовый поток H.263

Видео-пакет RTP H.263

В режиме A заголовок H.263 содержит 4 байта. Данный режим поддерживает фрагментацию RTP. В режиме B используется 8-байтовый заголовок H.263 и каждый пакет начинается на границе MB без опции PB. 12-байтовый заголовок H.263 определяет режим C, поддерживающий фрагментацию на границах MB для кадров с опцией PB.

Режим каждого заголовка потока H.263 указывается значениями полей F и P. Пакеты различных режимов могут перемешиваться. Формат заголовка для режима A показан на следующем рисунке.

Биты

Октет

1

2

3

4

5

6

7

8

F

P

SBIT

EBIT

1

SRC

I

U

S

A

R

2

R (продолжение)

DBQ

TRB

3

TR

4

Структура заголовка H.263 для режима A.

F

Флаг, показывающий режим заголовка потока H.263.

P

Флаг необязательного режима PB, определенного в стандарте H.263.

  1. Обычный кадр типа I или P.

1 Кадр PB.

Если F=1, поле P показывает режим:

Обычный кадр типа I или P.

0 Режим B.

1 Режим C.

SBIT

Стартовый бит. Количество старших битов, которые должны игнорироваться в первом байте данных.

EBIT

Завершающий бит. Количество младших битов, которые должны быть проигнорированы в последнем байте данных.

SRC

Исходный формат (биты 6, 7 и 8 поля TYPE, определяемые H.263), задающий разрешение текущего изображения.

I

Тип кодирования изображения (бит 9 в PTYPE, определяемый H.263):

0 Intra-кодирование (внутреннее).

1 Inter-кодирование.

U

Поле U имеет значение 1, если в текущем заголовке изображения была установлена (1) опция неограниченного вектора перемещения (Unrestricted Motion Vector), задаваемая битом 10 в поле PTYPE в соответствии с определением H.263.

S

Поле S имеет значение 1, если для текущего заголовка изображения была установлена (1) опция синтаксического арифметического кодирования (Syntax-based Arithmetic Coding), задаваемая битом 11 в поле PTYPE в соответствии с определением H.263.

A

Поле A имеет значение 1, если для текущего заголовка изображения была установлена (1) опция расширенного предсказания (Advanced Prediction), задаваемая битом 12 в поле PTYPE в соответствии с определением H.263.

R

Поле зарезервировано и должно иметь нулевое значение.

DBQ

Параметр дифференциального квантования, используемый для расчета параметров квантования для B-кадра на основе параметра квантования для P-кадра при использовании опции PB-кадров. Значение этого поля должно быть равно DBQUANT (определено в H.263). Нулевое значение поля устанавливается в тех случаях, когда опция PB-кадров не используется.

TRB

Временная ссылка для B-кадра, определенная в H.263. Нулевое значение ссылки устанавливается в тех случаях, когда опция PB-кадров не используется.

TR

Временная ссылка для P-кадра, определенная в H.263. Нулевое значение ссылки устанавливается в тех случаях, когда опция PB-кадров не используется.

Формат заголовка для режима B показан на следующем рисунке.

Биты

Октет

1

2

3

4

5

6

7

8

F

P

SBIT

EBIT

1

SRC

QUANT

2

GOBN

MBA

3

MBA (продолжение)

R

4

I

U

S

A

HMV1

5

HMV1 (продолжение)

VMV1

6

VMV1 (продолжение)

HMV2

7

HMV2

VMV2

8

Структура заголовка H.263 для режима B.

Поля F, P, SBIT, EBIT, SRC, I, U, S и A определяются так же, как для режима A.

QUANT

Значение квантования для первого MB, кодированного в начале пакета. Если пакет начинается с заголовка GOB, поле QUANT=0.

GOBN

Номер GOB в начале пакета. Номер GOB задается по разному для различного разрешения.

MBA

Адрес внутри GOB первого MB в пакете (считается от нуля в порядке сканирования). Например, третий макроблок в любом GOB будет иметь MBA=2.

R

Поле зарезервировано и должно иметь нулевое значение.

HMV1, VMV1

Предсказание вертикального и горизонтального вектора перемещения для первого макроблока в данном пакете. Когда для текущего макроблока используются четыре вектора перемещения с опцией расширенного предсказания (advcanced prediction), эти векторы являются предсказателями вектора перемещения для блока номер 1 в макроблоке. Каждое 7-битовое поле кодирует предсказатель вектора перемещения в половинах разрешающей способности, используя дополнение до 2.

HMV2, VMV2

Предсказания вертикального и горизонтального векторов перемещения для блока номер 3 в первом макроблоке этого пакета, когда четыре вектора перемещения используются для с опцией расширенного предсказания (advcanced prediction). Это необходимо, поскольку для блока номер 3 в макроблоке требуются отличные от других макроблоков предсказания векторов перемещения. Описываемые поля не используются в тех случаях, когда MB имеет только один вектор перемещения. Каждое 7-битовое поле кодирует предсказатель вектора перемещения в половинах разрешающей способности, используя дополнение до 2.

Формат заголовка для режима С показан на рисунке.

Биты

Октет

1

2

3

4

5

6

7

8

F

P

SBIT

EBIT

1

SRC

QUANT

2

GOBN

MBA

3

MBA (продолжение)

R

4

I

U

S

A

HMV1

5

HMV1 (продолжение)

VMV1

6

VMV1 (продолжение)

HMV2

7

HMV2

VMV2

8

RR

9

RR (продолжение)

DBQ

TRB

10

TR

11

Структура заголовка H.263 для режима С.

Поля F, P, SBIT, EBIT, SRC, I, U, S, A, DBQ, TRB и TR определяются так же, как для режима A; поля QUANT, GOBN, MBA, HMV1, VMV1, HMV2, VMV2 – как для режима B.

RR

Поле зарезервировано и должно иметь нулевое значение.

H.235

H.235: http://www.itu.int/itudoc/itu-t/rec/h/h235.html

Протокол H.235 обеспечивает расширение рекомендаций серии H.3xx в части добавления услуг обеспечения безопасности, такие как аутентификация и конфиденциальность (Authentication and Privacy) (шифрование данных). H.235 должен работать с другими протоколами серии H, которые используют H.245 в качестве протокола управления.

Все сообщения H.235 шифруются так же, как в ASN.1.

Запись опубликована в рубрике Мир протоколов. Добавьте в закладки постоянную ссылку.