Протокол 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-порт. Может упростить настройку сети.