Пакеты 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;