Improving protocol standards at IETF 105
20 July 2019
/ protocol-standards
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.