I'm currently looking into some of the inner workings of DOCSIS and related. One thing I'm struggling a bit with is how cable modem config files are made.
From what I've gathered:
- CM configs are binary files based on a TLV format.
- These configs are deployed using a TFTP server, hinted via DHCP to the modem itself when it boots.
I'm interested in knowing how these config files are structured. I have next to no knowledge of TLV aside from what I've read these past days.
- Is TLV just a generic method of stringing data together? It seems like TLV is used in both binary forms and json-like strings of clear text.
- Is the T and/or L parts of TLV a set size (in bytes)? How do I know where they separate?
- I think I read somewhere that CM configs use a subset of TLV called TLV-BER. If I'm not mistaken, this adds support for TLV nesting. How does this work?
I've heard that DOCSIS is well documented over at CableLabs, but I haven't been able to find this information yet. Helpful links are appreciated.
I have a binary config file in my possession that I've been able to decode using online tools, but assume I want to make my own tool for this purpose, how would I go about it?
Edit: Here's an excerpt of the first 64 bytes of the binary file, for reference.
03010112 01021916 08040668 51E00601 07070104 01020065 09040000 17C8181D
08040203 A0000904 00001F40 0E021F40 01020001 0F010207 01040601 07270101