draft-mcquistin-augmented-ascii-diagrams-10.txt   draft-mcquistin-augmented-ascii-diagrams-11.txt 
Network Working Group S. McQuistin Network Working Group S. McQuistin
Internet-Draft V. Band Internet-Draft V. Band
Intended status: Experimental D. Jacob Intended status: Experimental D. Jacob
Expires: 7 September 2022 C. S. Perkins Expires: 10 March 2023 C. S. Perkins
University of Glasgow University of Glasgow
6 March 2022 6 September 2022
Describing Protocol Data Units with Augmented Packet Header Diagrams Describing Protocol Data Units with Augmented Packet Header Diagrams
draft-mcquistin-augmented-ascii-diagrams-10 draft-mcquistin-augmented-ascii-diagrams-11
Abstract Abstract
This document describes a machine-readable format for specifying the This document describes a machine-readable format for specifying the
syntax of protocol data units within a protocol specification. This syntax of protocol data units within a protocol specification. This
format is comprised of a consistently formatted packet header format is comprised of a consistently formatted packet header
diagram, followed by structured explanatory text. It is designed to diagram, followed by structured explanatory text. It is designed to
maintain human readability while enabling support for automated maintain human readability while enabling support for automated
parser generation from the specification document. This document is parser generation from the specification document. This document is
itself an example of how the format can be used. itself an example of how the format can be used.
skipping to change at page 1, line 38 skipping to change at page 1, line 38
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on 7 September 2022. This Internet-Draft will expire on 10 March 2023.
Copyright Notice Copyright Notice
Copyright (c) 2022 IETF Trust and the persons identified as the Copyright (c) 2022 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/ Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document. license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights Please review these documents carefully, as they describe your rights
skipping to change at page 2, line 21 skipping to change at page 2, line 21
2. Background . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Background . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1. Limitations of Current Packet Format Diagrams . . . . . . 4 2.1. Limitations of Current Packet Format Diagrams . . . . . . 4
2.2. Formal languages in standards documents . . . . . . . . . 7 2.2. Formal languages in standards documents . . . . . . . . . 7
3. Design Principles . . . . . . . . . . . . . . . . . . . . . . 7 3. Design Principles . . . . . . . . . . . . . . . . . . . . . . 7
4. Augmented Packet Header Diagrams . . . . . . . . . . . . . . 10 4. Augmented Packet Header Diagrams . . . . . . . . . . . . . . 10
4.1. PDUs with Fixed and Variable-Width Fields . . . . . . . . 10 4.1. PDUs with Fixed and Variable-Width Fields . . . . . . . . 10
4.2. PDUs That Cross-Reference Previously Defined Fields . . . 13 4.2. PDUs That Cross-Reference Previously Defined Fields . . . 13
4.3. PDUs with Non-Contiguous Fields . . . . . . . . . . . . . 16 4.3. PDUs with Non-Contiguous Fields . . . . . . . . . . . . . 16
4.4. PDUs with Constraints on Field Values . . . . . . . . . . 17 4.4. PDUs with Constraints on Field Values . . . . . . . . . . 17
4.5. PDUs with Constraints on Field Sizes . . . . . . . . . . 18 4.5. PDUs with Constraints on Field Sizes . . . . . . . . . . 18
4.6. PDUs That Extend Sub-Structures . . . . . . . . . . . . . 20 4.6. PDUs That Extend Sub-Structures . . . . . . . . . . . . . 21
4.7. Storing Data for Parsing . . . . . . . . . . . . . . . . 22 4.7. Storing Data for Parsing . . . . . . . . . . . . . . . . 22
4.8. Connecting Structures with Functions . . . . . . . . . . 22 4.8. Connecting Structures with Functions . . . . . . . . . . 23
4.9. Specifying Enumerated Types . . . . . . . . . . . . . . . 23 4.9. Specifying Enumerated Types . . . . . . . . . . . . . . . 24
4.10. Specifying Protocol Data Units . . . . . . . . . . . . . 25 4.10. Specifying Protocol Data Units . . . . . . . . . . . . . 25
4.11. Importing PDU Definitions from Other Documents . . . . . 25 4.11. Importing PDU Definitions from Other Documents . . . . . 26
5. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 25 5. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 26
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26
7. Security Considerations . . . . . . . . . . . . . . . . . . . 26 7. Security Considerations . . . . . . . . . . . . . . . . . . . 26
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 26 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 27
9. Informative References . . . . . . . . . . . . . . . . . . . 26 9. Informative References . . . . . . . . . . . . . . . . . . . 27
Appendix A. ABNF specification . . . . . . . . . . . . . . . . . 29 Appendix A. ABNF specification . . . . . . . . . . . . . . . . . 29
A.1. Constraint Expressions . . . . . . . . . . . . . . . . . 29 A.1. Constraint Expressions . . . . . . . . . . . . . . . . . 29
A.2. Augmented packet diagrams . . . . . . . . . . . . . . . . 29 A.2. Augmented packet diagrams . . . . . . . . . . . . . . . . 29
Appendix B. Tooling & source code . . . . . . . . . . . . . . . 29 Appendix B. Tooling & source code . . . . . . . . . . . . . . . 29
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 30 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 30
1. Introduction 1. Introduction
Packet header diagrams have become a widely used format for Packet header diagrams have become a widely used format for
describing the syntax of binary protocols. In otherwise largely describing the syntax of binary protocols. In otherwise largely
skipping to change at page 4, line 16 skipping to change at page 4, line 16
with the packet header diagrams and structured text format described with the packet header diagrams and structured text format described
by example. Examples that do not form part of the protocol by example. Examples that do not form part of the protocol
description language are marked by a colon at the beginning of each description language are marked by a colon at the beginning of each
line; this prevents them from being parsed by the accompanying line; this prevents them from being parsed by the accompanying
tooling. tooling.
This draft describes early work. As consensus builds around the This draft describes early work. As consensus builds around the
particular syntax of the format described, a formal ABNF particular syntax of the format described, a formal ABNF
specification (Appendix A) will be provided. specification (Appendix A) will be provided.
Example specifications of a number of IETF protocols described using Code that parses documents written using this format, and that
the Augmented Packet Header Diagram format are available. These automatically generates parser code for the described protocols, is
documents describe UDP [draft-mcquistin-augmented-udp-example], TCP described in Appendix B.
[draft-mcquistin-augmented-tcp-example], and QUIC
[draft-mcquistin-quic-augmented-diagrams]. Code that parses those
documents and automatically generates parser code for the described
protocols is described in Appendix B.
2. Background 2. Background
This section begins by considering how packet header diagrams are This section begins by considering how packet header diagrams are
used in existing documents. This exposes the limitations that the used in existing documents. This exposes the limitations that the
current usage has in terms of machine-readability, guiding the design current usage has in terms of machine-readability, guiding the design
of the format that this document proposes. of the format that this document proposes.
While this document focuses on the machine-readability of packet While this document focuses on the machine-readability of packet
format diagrams, this section also discusses the use of other format diagrams, this section also discusses the use of other
skipping to change at page 11, line 20 skipping to change at page 11, line 20
begins with the text "where:". begins with the text "where:".
PDU names must be unique, both within a document, and across all PDU names must be unique, both within a document, and across all
documents that are linked together (i.e., using the structured documents that are linked together (i.e., using the structured
language defined in Section 4.11). language defined in Section 4.11).
Each field is defined by a structured text definition and a prose Each field is defined by a structured text definition and a prose
description. The structured text definition comprises the field name description. The structured text definition comprises the field name
and an optional short name in parenthesis. These are followed by a and an optional short name in parenthesis. These are followed by a
colon, the field length, an optional presence expression (described colon, the field length, an optional presence expression (described
in Section 4.2), and a terminating period. Text following the in Section 4.2), and, optionally, a terminating period. Text
terminating period is not parsed, and this space can be used for following the terminating period is not parsed, and this space can be
optional notes or comments. Field names cannot be the same as a used for optional notes or comments. Field names cannot be the same
previously defined PDU name, and must be unique within a given as a previously defined PDU name, and must be unique within a given
structure definition. The structured text definition is given either structure definition. The structured text definition is given either
in a <dt> tag (if using a <dl>) or as the "hangText" (if using a in a <dt> tag (if using a <dl>) or as the "hangText" (if using a
hanging <list>) of a <t> element. The field's prose description is hanging <list>) of a <t> element. The field's prose description is
given in the following <dd> element or within the same <t> element. given in the following <dd> element or within the same <t> element.
Prose descriptions may include structured text (e.g., as defined in Prose descriptions may include structured text (e.g., as defined in
Section 4.7). Section 4.7).
For example, this can be illustrated using the IPv4 Header Format For example, this can be illustrated using the IPv4 Header Format
[RFC791]. An IPv4 Header is formatted as follows: [RFC791]. An IPv4 Header is formatted as follows:
skipping to change at page 18, line 40 skipping to change at page 18, line 40
A PDU may contain fields that have a size that is specified in terms A PDU may contain fields that have a size that is specified in terms
of the value of another field. So far, our constraint syntax can be of the value of another field. So far, our constraint syntax can be
used to specify the length of fields in known units (of bits, bytes, used to specify the length of fields in known units (of bits, bytes,
or other structures). If the units are of variable-width, then it or other structures). If the units are of variable-width, then it
may not be possible to specify the length of the sequence. However, may not be possible to specify the length of the sequence. However,
it is still necessary to be able to constraint the overall width of it is still necessary to be able to constraint the overall width of
the field. To support this, our constraint syntax includes a "size" the field. To support this, our constraint syntax includes a "size"
function that evaluates to the width, in bits, of the given named function that evaluates to the width, in bits, of the given named
field. field.
This syntax is illustrated using the TCP Header format This syntax is illustrated using the TCP Header format [RFC9293]. A
[draft-ietf-tcpm-rfc793bis]. A TCP Header is formatted as follows: TCP Header is formatted as follows:
0 1 2 3 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port | | Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number | | Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgment Number | | Acknowledgment Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
skipping to change at page 19, line 47 skipping to change at page 19, line 47
Acknowledgment Number: 32 bits. This is a fixed-width field as Acknowledgment Number: 32 bits. This is a fixed-width field as
previously described. previously described.
Data Offset (DOffset): 4 bits; DOffset >= 5. This is a fixed-width Data Offset (DOffset): 4 bits; DOffset >= 5. This is a fixed-width
field, with a value constraint, as previously described. field, with a value constraint, as previously described.
Reserved (Rsrvd): 4 bits; Rsrvd == 0. This is a fixed-width field, Reserved (Rsrvd): 4 bits; Rsrvd == 0. This is a fixed-width field,
with a value constraint, as previously described. with a value constraint, as previously described.
CWR: 1 bit. This is a fixed-width field as previously described. Control bits: Optionally, field description lists can be nested. If
the XML element (either a <dd> or a <t>) containing the
description of a field contains an XML list (either <dl> or
hanging <list>) as its last element, then this nested list will be
parsed for fields, and the outer description will be ignored. In
this example, "Control bits" describes the group of 8 single bit
fields that are described in the list that follows; it is these
single bit fields that will form part of the structure.
ECE: 1 bit. This is a fixed-width field as previously described. CWR: 1 bit. This is a fixed-width field as previously described.
URG: 1 bit. This is a fixed-width field as previously described. ECE: 1 bit. This is a fixed-width field as previously described.
ACK: 1 bit. This is a fixed-width field as previously described. URG: 1 bit. This is a fixed-width field as previously described.
PSH: 1 bit. This is a fixed-width field as previously described. ACK: 1 bit. This is a fixed-width field as previously described.
RST: 1 bit. This is a fixed-width field as previously described. PSH: 1 bit. This is a fixed-width field as previously described.
SYN: 1 bit. This is a fixed-width field, with a value constraint, as RST: 1 bit. This is a fixed-width field as previously described.
previously described.
FIN: 1 bit; (FIN == 0) || (SYN == 0). This is a fixed-width field, SYN: 1 bit. This is a fixed-width field, with a value constraint,
with a value constraint, as previously described. as previously described.
FIN: 1 bit; (FIN == 0) || (SYN == 0). This is a fixed-width
field, with a value constraint, as previously described.
Window Size: 16 bits. This is a fixed-width field as previously Window Size: 16 bits. This is a fixed-width field as previously
described. described.
Checksum: 16 bits. This is a fixed-width field as previously Checksum: 16 bits. This is a fixed-width field as previously
described. described.
Urgent Pointer: 16 bits. This is a fixed-width field as previously Urgent Pointer: 16 bits. This is a fixed-width field as previously
described. described.
skipping to change at page 24, line 6 skipping to change at page 24, line 24
The alternative structures that comprise an enumerated type are The alternative structures that comprise an enumerated type are
identified using the exact phrase "The <enumerated type name> is one identified using the exact phrase "The <enumerated type name> is one
of: <list of structure names>" where the list of structure names is a of: <list of structure names>" where the list of structure names is a
comma separated list (with the last element, if there is more than comma separated list (with the last element, if there is more than
one element, preceded by 'or'), each optionally preceded by "a" or one element, preceded by 'or'), each optionally preceded by "a" or
"an". The structure names must be defined within the document or a "an". The structure names must be defined within the document or a
linked document. Optionally, this phrase can include a note or linked document. Optionally, this phrase can include a note or
comment, delimited by commas, immediately following the enumerated comment, delimited by commas, immediately following the enumerated
type name. That is, "The <enumerated type name>, with an optional type name. That is, "The <enumerated type name>, with an optional
comment, is one of: <list of structure names>" can be used to define comment, is one of: <list of structure names>" can be used to define
an enumerated type. an enumerated type. In both cases, the colon is optional; for
example, "The <enumerated type name> is one of <list of structure
names>" is valid.
Where an enumerated type has only two variants, an alternative phrase Where an enumerated type has only two variants, an alternative phrase
can be used: "The <enumerated type name> is either a <variant 1 name> can be used: "The <enumerated type name> is either a <variant 1 name>
or <variant 2 name>". The names of the variants must be defined or <variant 2 name>". The names of the variants must be defined
within the document or a linked document. An optional note or within the document or a linked document. An optional note or
comment can be included with this alternative phrasing: "The comment can be included with this alternative phrasing: "The
<enumerated type name>, with an optional comment, is either a <enumerated type name>, with an optional comment, is either a
<variant 1 name> or <variant 2 name>" can be used. <variant 1 name> or <variant 2 name>" can be used.
An EOL Option is formatted as follows: An EOL Option is formatted as follows:
skipping to change at page 25, line 18 skipping to change at page 25, line 37
own, protocol data units. To capture the parsing or serialisation of own, protocol data units. To capture the parsing or serialisation of
a protocol, it is necessary to be able to identify or construct those a protocol, it is necessary to be able to identify or construct those
packets that are valid PDUs. As a result, it is necessary for the packets that are valid PDUs. As a result, it is necessary for the
document to identify those structures that are PDUs. document to identify those structures that are PDUs.
The PDUs that comprise a protocol are identified using the exact The PDUs that comprise a protocol are identified using the exact
phrase "This document describes the <protocol name> protocol. The phrase "This document describes the <protocol name> protocol. The
<protocol name> protocol uses <list of PDU names>" where the list of <protocol name> protocol uses <list of PDU names>" where the list of
PDU names is a comma separated list (with the last element, if there PDU names is a comma separated list (with the last element, if there
is more than one element, preceded by 'and'), each optionally is more than one element, preceded by 'and'), each optionally
preceded by "a" or "an". The PDU names must be structure names preceded by "a" or "an". As a short-form, the variation "This
defined in the document or a linked document. The PDU names are document describes the <protocol name>, which uses <list of PDU
pluralised in the list. A document must contain exactly one instance names>" can be used as an alternative. The PDU names must be
of this phrase. structure names defined in the document or a linked document. The
PDU names are pluralised in the list. A document must contain
exactly one instance of this phrase.
This document describes the Example protocol. The Example protocol This document describes the Example protocol. The Example protocol
uses Long Headers, STUN Message Types, IPv4 Headers, RTP Data uses Long Headers, STUN Message Types, IPv4 Headers, RTP Data
Packets, and TCP Headers. Packets, and TCP Headers.
4.11. Importing PDU Definitions from Other Documents 4.11. Importing PDU Definitions from Other Documents
Protocols are often specified across multiple documents, either Protocols are often specified across multiple documents, either
because the specification of a protocol's data units has changed over because the specification of a protocol's data units has changed over
time, or because of explicit extension points contained in the time, or because of explicit extension points contained in the
skipping to change at page 26, line 41 skipping to change at page 27, line 21
design; the principles developed in that community should guide the design; the principles developed in that community should guide the
development of protocol description languages. development of protocol description languages.
8. Acknowledgements 8. Acknowledgements
The authors would like to thank Marc Petit-Huguenin for extensive The authors would like to thank Marc Petit-Huguenin for extensive
feedback on the draft, including work on formalising the constraint feedback on the draft, including work on formalising the constraint
syntax as given in Appendix A.1. syntax as given in Appendix A.1.
Wesley Eddy provided valuable feedback on the description format Wesley Eddy provided valuable feedback on the description format
through adopting it in [draft-ietf-tcpm-rfc793bis]. through adopting it in [RFC9293].
The authors would like to thank David Southgate for preparing a The authors would like to thank David Southgate for preparing a
prototype implementation of some of the ideas described here. prototype implementation of some of the ideas described here.
This work has received funding from the UK Engineering and Physical This work has received funding from the UK Engineering and Physical
Sciences Research Council under grant EP/R04144X/1. Sciences Research Council under grant EP/R04144X/1.
9. Informative References 9. Informative References
[RFC8357] Deering, S. and R. Hinden, "Generalized UDP Source Port [RFC8357] Deering, S. and R. Hinden, "Generalized UDP Source Port
skipping to change at page 28, line 25 skipping to change at page 29, line 5
[LANGSEC] LANGSEC, "LANGSEC: Language-theoretic Security", [LANGSEC] LANGSEC, "LANGSEC: Language-theoretic Security",
<http://langsec.org>. <http://langsec.org>.
[SASSAMAN] Sassaman, L., Patterson, M. L., Bratus, S., and A. [SASSAMAN] Sassaman, L., Patterson, M. L., Bratus, S., and A.
Shubina, "The Halting Problems of Network Stack Shubina, "The Halting Problems of Network Stack
Insecurity", ;login: -- December 2011, Volume 36, Number Insecurity", ;login: -- December 2011, Volume 36, Number
6, <https://www.usenix.org/publications/login/december- 6, <https://www.usenix.org/publications/login/december-
2011-volume-36-number-6/halting-problems-network-stack- 2011-volume-36-number-6/halting-problems-network-stack-
insecurity>. insecurity>.
[draft-mcquistin-augmented-udp-example] [RFC9293] Eddy, W., "Transmission Control Protocol", RFC 9293,
McQuistin, S., Band, V., Jacob, D., and C. S. Perkins, August 2022, <https://www.rfc-editor.org/info/rfc9293>.
"Describing UDP with Augmented Packet Header Diagrams",
Work in Progress, Internet-Draft, draft-mcquistin-
augmented-udp-example-02, 25 October 2021,
<http://www.ietf.org/internet-drafts/draft-mcquistin-
augmented-udp-02.txt>.
[draft-mcquistin-augmented-tcp-example]
McQuistin, S., Band, V., Jacob, D., and C. S. Perkins,
"Describing TCP with Augmented Packet Header Diagrams",
Work in Progress, Internet-Draft, draft-mcquistin-
augmented-tcp-example-02, 25 October 2021,
<http://www.ietf.org/internet-drafts/draft-mcquistin-
augmented-tcp-example-02.txt>.
[draft-mcquistin-quic-augmented-diagrams]
McQuistin, S., Band, V., Jacob, D., and C. S. Perkins,
"Describing QUIC's Protocol Data Units with Augmented
Packet Header Diagrams", Work in Progress, Internet-Draft,
draft-mcquistin-quic-augmented-diagrams-04, 25 October
2021, <http://www.ietf.org/internet-drafts/draft-
mcquistin-quic-augmented-diagrams-05.txt>.
[draft-ietf-tcpm-rfc793bis]
Eddy, W., "Transmission Control Protocol (TCP)
Specification", Work in Progress, Internet-Draft, draft-
ietf-tcpm-rfc793bis-27, 22 February 2022,
<http://www.ietf.org/internet-drafts/draft-ietf-tcpm-
rfc793bis-27.txt>.
Appendix A. ABNF specification Appendix A. ABNF specification
A.1. Constraint Expressions A.1. Constraint Expressions
constant = %x31-39 *(%x30-39) ; natural numbers without leading 0s constant = %x31-39 *(%x30-39) ; natural numbers without leading 0s
short-name = ALPHA *(ALPHA / DIGIT / "-" / "_") short-name = ALPHA *(ALPHA / DIGIT / "-" / "_")
name = short-name *(" " short-name) name = short-name *(" " short-name)
sp = [" "] ; optional space in expression sp = [" "] ; optional space in expression
bool-expr = "(" sp bool-expr sp ")" / bool-expr = "(" sp bool-expr sp ")" /
skipping to change at page 30, line 4 skipping to change at page 30, line 10
Appendix B. Tooling & source code Appendix B. Tooling & source code
The source for this draft is available from https://github.com/ The source for this draft is available from https://github.com/
glasgow-ipl/draft-mcquistin-augmented-ascii-diagrams. glasgow-ipl/draft-mcquistin-augmented-ascii-diagrams.
The source code for tooling that can be used to parse this document The source code for tooling that can be used to parse this document
is available from https://github.com/glasgow-ipl/ips-protodesc-code. is available from https://github.com/glasgow-ipl/ips-protodesc-code.
This tooling supports the automatic generation of Rust parser code This tooling supports the automatic generation of Rust parser code
from protocol descriptions written in the Augmented Packet Header from protocol descriptions written in the Augmented Packet Header
Diagram format. It also provides test harnesses that demonstrate Diagram format. It also provides test harnesses that demonstrate
that example descriptions of UDP that the description of TCP [RFC9293] written in this format can be
[draft-mcquistin-augmented-udp-example] and TCP used to generate parser code.
[draft-mcquistin-augmented-udp-example] function as expected.
Authors' Addresses Authors' Addresses
Stephen McQuistin Stephen McQuistin
University of Glasgow University of Glasgow
School of Computing Science School of Computing Science
Glasgow Glasgow
G12 8QQ G12 8QQ
United Kingdom United Kingdom
Email: sm@smcquistin.uk Email: sm@smcquistin.uk
 End of changes. 24 change blocks. 
73 lines changed or deleted 53 lines changed or added

This html diff was produced by rfcdiff 1.46. The latest version is available from http://tools.ietf.org/tools/rfcdiff/