Есть ли byte-stuffing (замена байтов) в протоколе DLMS/COSEM (СПОДЭС)

Спойлер: в протоколе DLMS/COSEM и его отечественном подмножестве — протоколе СПОДЭС, байт-стаффинг не используется.

Ниже мои рассуждения на эту тему, так как мне страсть как захотелось порассуждать.

Байт-стаффинг (byte-stuffing) — это замена специальных байтиков внутри фрейма  на другие байтики. Зачем? Проще объяснить на примере:

Вот, например, фрейм HDLC (который так часто используется в DLMS\COSEM):

7E A0 0A 00 02 44 01 61 93 A6 E5 7E

В глаза бросается байтик 0x7e, который находится в начале и конце фрейма. И действительно, байт 0x7e — это маркер начала и конца фрейма. Такие протоколы были придуманы, чтобы фреймы можно было передавать побайтно, а чтобы фрейм можно было легко вычленить из потока байтов, не анализируя внутреннюю структуру фрейма, решили в начало и конец фрейма вставлять специальный маркерный байт, например 0x7e.

Внимательный и опытный читать подумает: «если байт 0x7e может быть только в начале и в конце фрейма, то его не должно быть в середине фрейма. А если внутри  встретится этот маркерный байт, то всё сломается!». Чтобы этого не допустить придумали приём, называемый byte-stuffing. Он прост до безобразия и заключается в замене одного специального байта, на несколько других, например:
7e => 7d 5e
7d => 7d 5f

Главное, чтобы эта замена была однозначной, чтобы можно было выполнить обратное преобразование.

Я думал, что в протоколе DLMS/COSEM, который использует HDLC в качестве обёртки должно быть что-то подобное. Задал вопрос ИИ. ИИ меня обманул, сказав, что байт-стаффинг применяется и даже показал алгоритм. Я был готов ему поверить, но решил найти доказательства. Посмотрел в Зеленую книгу. Никаких упоминаний байт-стаффинга не нашёл.

Вспомнив, что практика критерий истины, я нашёл лог обмена с девайсом, работающим по протоколу DLMS/COSEM. В логе я обнаружил фрейм, внутри которого был байт 0x7e. Вот он:

7E A0 50 61 00 02 44 01 DA 5A 33 E6 E7 00 CC 3F 30 00 00 00
91 F9 A0 3A F5 0C F8 D9 28 D8 12 89 9D 06 84 90 EF 77 54 DD
3C 36 93 C7 AD 8B D1 FB 7A 31 48 20 08 5D 04 65 27 F6 0D 01
7D 32 39 EA 7E D4 10 0D CE EC 7E 6D B1 83 37 9A 1F E4 EE C9
E6 7E

Таким образом экспериментально установлено, что байт-стаффинг в DLMS/COSEM не используется, хотя протокол HDLC предполагает его использование.