Статус документа
Статус документа

ГОСТ Р 56451-2015 Телевидение вещательное цифровое. Общий протокол инкапсуляции потока. Основные параметры (Переиздание)

     4.3 Фрагментация PDU


Пакеты GSE с данными от PDU должны иметь одинаковый ID Frag и должны передаваться по порядку. Однако они не могут быть переданы последовательно, так как могут чередоваться с пакетами GSE, переносящими полные PDU или фрагменты с другими ID Frag. Собранные PDU будут поставлены на более высокие уровни после приема последнего фрагмента PDU.

При фрагментации применяются следующие правила:

- все пакеты GSE, переносящие данные одного и того же PDU, должны иметь одинаковые ID Frag;

- первый пакет GSE с конкретным ID Frag должен иметь бит S, равный "1", и бит E, равный "0";

- пакеты GSE, переносящие фрагменты PDU, которые не являются ни первым, ни последним фрагментом PDU, должны иметь бит S, равный "0", и бит E, равный "0";

- последний пакет GSE с конкретным ID Frag должен иметь бит S, равный "0", и бит E, равный "1";

- до тех пор, пока PDU не заполнен, его ID Frag не должен повторно использоваться на интервале 256 кадров основной полосы;

- все пакеты GSE с одинаковым ID Frag должны передаваться в порядке очередности;

- поле метка должно использоваться только в первом пакете GSE.

Всякий раз при фрагментации инкапсулятор GSE исполняет первые байты X1 PDU и следующие операции:

- формирует пакет GSE с установкой бита S, равного "1", и с установкой бита E, равного "0";

- устанавливает в поле длина GSE расчетное количество байтов, включая длину данных X1 PDU (см. рисунок 3), длины полей ID Frag, общей длины, тип протокола, уровень (если поле уровень существует) и любого заголовка расширения. Полезная нагрузка GSE переносится в первой части инкапсулированного PDU с длиной X1 байтов. Полученная длина GSE не должна превышать величину остающегося свободного пространства в текущем поле данных кадра основной полосы;

- устанавливает свободное значение ID Frag;

- устанавливает в поле общая длина расчетное количество байтов, включая длину нефрагментированного PDU, поля тип протокола, поля метка (при наличии) и любого заголовка расширения;

- добавляет поле тип протокола;

- добавляет поле метка (если применяется);

- выполняет вставки X1 (см. рисунок 3) байтов из данных PDU в полезную нагрузку GSE;

- помещает этот пакет GSE в текущем кадре первым пакетом GSE или после любого другого пакета GSE, уже присутствующего в кадре.

Когда PDU разделен на количество фрагментов более двух, инкапсулятор GSE принимает следующие X2 (см. рисунок 3) данные PDU и:

- формирует пакет GSE с установкой бита S в "0" и с установкой бита E в "0";

- устанавливает в поле общая длина в заголовке GSE расчетное количество байтов, включая длину данных X2 PDU и поля ID Frag. Полученная длина GSE не должна превышать величину остающегося свободного пространства в текущем поле данных кадра основной полосы;

- устанавливает то же значение ID Frag, что и в предыдущем фрагменте этого PDU;

- вставляет байты X2 (см. рисунок 3) из PDU в полезную нагрузку GSE и следующие операции;

- помещает этот пакет GSE в выбранный кадр (в зависимости от алгоритма планирования) как первый пакет GSE или после любого другого пакета GSE уже присутствующего в кадре. Такая же операция повторяется для всех фрагментов PDU за исключением последнего.

Инкапсулятор GSE обрабатывает остающиеся X3 данные PDU (см. рисунок 3) и следующие операции:

- формирует пакет GSE с установкой бита S в "0" и с установкой бита E в "1";

- устанавливает в поле длина GSE в заголовке GSE расчетное количество байтов, включая длину поля данные PDU X3, поля ID Frag и размера поля CRC-32. Полученная длина GSE не должна превышать остающееся свободное пространство в текущем поле данных кадра основной полосы;

- устанавливает в поле ID Frag ту же самую величину, что и в предыдущих фрагментах этого PDU;