В настоящее время я изучаю некоторые внутренние механизмы DOCSIS и связанные с ними. Одна вещь, с которой я немного борюсь, - это то, как создаются файлы конфигурации кабельного модема.
Из того, что я собрал:
- Конфигурации CM представляют собой двоичные файлы, основанные на формате TLV.
- Эти конфиги развертываются с помощью TFTP-сервера, намекая через DHCP на сам модем при его загрузке.
Мне интересно узнать, как устроены эти файлы конфигурации. У меня почти нет знаний о TLV, кроме того, что я прочитал за последние дни.
- Является ли TLV просто общим методом объединения данных? Похоже, что TLV используется как в двоичных формах, так и в виде json-подобных строк открытого текста.
- Является ли часть T и/или L TLV установленным размером (в байтах)? Откуда мне знать, где они расходятся?
- Кажется, я где-то читал, что в конфигурациях CM используется подмножество TLV, называемое TLV-BER. Если я не ошибаюсь, это добавляет поддержку вложенности TLV. Как это работает?
Я слышал, что DOCSIS хорошо задокументирован на CableLabs, но мне не удалось найти эта информация еще. Полезные ссылки приветствуются.
У меня есть двоичный файл конфигурации, который я смог декодировать с помощью онлайн-инструментов, но предположим, что я хочу создать свой собственный инструмент для этой цели, как мне это сделать?
Изменить: вот отрывок из первых 64 байтов двоичного файла для справки.
03010112 01021916 08040668 51E00601 07070104 01020065 09040000 17C8181D
08040203 A0000904 00001F40 0E021F40 01020001 0F010207 01040601 07270101