Протокол Pro-MPEG / RTP+FEC (COP3 / SMPTE 2022-1/2)

Это доставка MPEG-TS поверх RTP с упреждающей коррекцией ошибок (FEC, Forward Error Correction). Один и тот же протокол встречается в литературе и оборудовании под разными именами:

  • Pro-MPEG / Pro-MPEG COP3 — Code of Practice #3 форума Pro-MPEG, описан в стандарте IEEE (https://ieeexplore.ieee.org/document/6738329);

  • RTP + FEC — функциональное название (RTP-поток плюс FEC-каналы);

  • SMPTE 2022-1 — Column FEC (та же схема, опубликованная как стандарт SMPTE);

  • SMPTE 2022-2 — Row + Column FEC (двумерная матрица, реализована в PSS).

Достоинство — низкая задержка. Недостаток — высокий дополнительный трафик (overhead), и он плохо работает при больших потерях пакетов (более 0,2 %).

Этот протокол основан на RTP с добавлением двух каналов для FEC (кода коррекции ошибок). Два канала FEC используют порты port+2 и port+4, что надо учитывать при добавлении нескольких потоков на один хост или мультикаст-группу.

На отправителе поток RTP-пакетов группируется в матрицу с Cols колонок и Rows строк. Пример для cols=8 и rows=4 (по умолчанию):

RTP01

RTP02

RTP03

RTP04

RTP05

RTP06

RTP07

RTP08

R1

RTP11

RTP12

RTP13

RTP14

RTP15

RTP16

RTP17

RTP18

R2

RTP21

RTP22

RTP23

RTP24

RTP25

RTP26

RTP27

RTP28

R3

RTP31

RTP32

RTP33

RTP34

RTP35

RTP36

RTP37

RTP38

R4

C1

C2

C3

C4

C5

C6

C7

C8

Пакеты Rx и Cx формируют данные для FEC по строкам и колонкам. Чем меньше размер матрицы, тем лучше способность исправлять потери, но больше дополнительный трафик. В данном примере на 32 RTP-пакета потока приходится 12 FEC-пакетов.

Доступно шифрование потоков (Crypto protection), используется AES-128, но это не включено в стандарт, поэтому не гарантируется совместимость со сторонним ПО или оборудованием.

Имеются нестандартные расширения протокола:

Multiplexing — мультиплексирование RTP-каналов через один UDP-порт. Может упростить настройку сети.