Improving protocol standards at IETF 105
The initial goal of our work on improving protocol standards is to make it easier to automatically generate packet parsers from IETF RFCs. We've submitted an internet draft describing a machine-readable way to specify packet formats, while being only a minimal change compared to existing authoring methods. Stephen McQuistin and I will be at the IETF meeting in Montreal this week (20-27 July 2019) to discuss this with the IETF community.
In IETF protocol specifications, ASCII packet header diagrams are the de-facto standard for describing the syntax of binary protocols. They provide an effective way to visualise packet formats that helps when designing and implementing parsers for the protocols they specify. The combination of ease-of-use and ubiquity makes such header diagrams a natural base on which to build tooling to support the automatic generation of parser code from protocol standards documents.
Two issues must be addressed to ensure consistent machine-readability for these header diagrams. First, their format, while sufficiently consistent for human readability, contains enough variation to make machine parsing difficult: different documents tend to use subtly different formats and conventions. Secondly, the packet header diagrams alone do not fully capture the parsing process for protocols, requiring supplementary text. To support machine parsing, this supplementary text must be consistently structured.
The draft we submitted describes such a consistent ASCII packet header format, and accompanying structured text constructs, that allow for the parsing process of protocol headers to be fully specified. That is, it describes a consistent subset of the existing header diagrams that can be parsed and checked by automatic tooling. This could be integrated with the IETF draft 'nits' checker, to ensure new drafts contain header diagrams that can be parsed, or with tools to derive packet parsing code from the header diagrams.
Stephen and I will be at the 105th IETF meeting to discuss the draft. The submitted draft is an early version, and there remain a number of details to resolve, but we're keen to hear feedback and comments.