Implement parser for the IOAM Template Option #1

Merged
ramon merged 6 commits from implement-template-option into master 2026-07-26 09:57:23 +00:00
Owner

I adjusted the dissector implementation to be capable of parsing the IOAM Template Option.
Currently the Aggregation template is the only supported template.

For details refer to:

I adjusted the dissector implementation to be capable of parsing the IOAM Template Option. Currently the Aggregation template is the only supported template. For details refer to: - [IOAM Template Option](https://www.ietf.org/archive/id/draft-mbci-ippm-ioam-template-option-01.html) - [Aggregation Trace Option for IOAM](https://www.ietf.org/archive/id/draft-cxx-ippm-ioamaggr-04.html) (Now used as template)
Replace IOAM Aggregation Trace Option with Template Option
Some checks are pending
Build Stratoshark macOS / Build (push) Waiting to run
Build MacOS / Build & Test (push) Waiting to run
Build MSYS2 / msys2-ucrt64 (push) Waiting to run
Build MSYS2 / install-nsis (push) Blocked by required conditions
CMake Options Test / Build (push) Waiting to run
Build Ubuntu / Build & Test (push) Waiting to run
Build Windows / Build & Test (push) Waiting to run
9b70d936cb
Add template parsing for the IOAM Aggregation Template
Some checks failed
Build Stratoshark macOS / Build (push) Has been cancelled
Build MacOS / Build & Test (push) Has been cancelled
Build MSYS2 / install-nsis (push) Has been cancelled
Build MSYS2 / msys2-ucrt64 (push) Has been cancelled
CMake Options Test / Build (push) Has been cancelled
Build Ubuntu / Build & Test (push) Has been cancelled
Build Windows / Build & Test (push) Has been cancelled
a88c85e813
Add stand-alone IOAM Aggregation Trace Option dissector
Some checks failed
CMake Options Test / Build (push) Has been cancelled
Build Ubuntu / Build & Test (push) Has been cancelled
Build Windows / Build & Test (push) Has been cancelled
Build Stratoshark macOS / Build (push) Has been cancelled
Build MacOS / Build & Test (push) Has been cancelled
Build MSYS2 / msys2-ucrt64 (push) Has been cancelled
Build MSYS2 / install-nsis (push) Has been cancelled
25e6435bdf
The IOAM Template Option and the IOAM Aggregation Trace Option
are for now considered complimentary. Therefore it makes sense
to have an independent dissector for the IOAM Template Option
including the Aggregation Template and another one for the
IOAM Aggregation Trace Option.
Adjust dissector of IOAM Template Option
Some checks failed
Build Stratoshark macOS / Build (push) Has been cancelled
Build MacOS / Build & Test (push) Has been cancelled
Build MSYS2 / msys2-ucrt64 (push) Has been cancelled
CMake Options Test / Build (push) Has been cancelled
Build Ubuntu / Build & Test (push) Has been cancelled
Build Windows / Build & Test (push) Has been cancelled
Build MSYS2 / install-nsis (push) Has been cancelled
0d90ddee40
The format of the IOAM Template Option Aggregation Template
has been adjusted in draft version 2.

The format now looks like this:

  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
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |        Namespace-ID           |  TBD_1        |   Length=3    |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |          IOAM Data Param      |  Aggregator   |     Flags     |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                           Aggregate                           |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                Auxil-data Node-Id             |  Hop Count    |
 +---------------------------------------------------------------+
Refactor IOAM Template Option dissector another time
Some checks failed
Build Stratoshark macOS / Build (push) Has been cancelled
Build MacOS / Build & Test (push) Has been cancelled
Build MSYS2 / msys2-ucrt64 (push) Has been cancelled
CMake Options Test / Build (push) Has been cancelled
Build Ubuntu / Build & Test (push) Has been cancelled
Build Windows / Build & Test (push) Has been cancelled
Build MSYS2 / install-nsis (push) Has been cancelled
709534a5cf
During the IETF hackathon we noticed that the length field in the
IOAM Template Option is actually implicitely clear based on the
Template ID value. Therefore it can be omitted. We then figured
out that without the length field the only field required to add
template functionality to the IOAM trace option is adding the
Template followed by the Template-Data. Luckily there is exactly
one byte of reserved space in the trace option header where we
can put the Template. To not mess around with existing implemen-
tations of the IOAM Trace Option we decided to create an addtional
option the IOAM Trace + Template Option which combines the two
for use cases where the template data and the path needs to be
traced simultaneously. The following header structures evolved:

IOAM Trace + Template Option

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Namespace-ID          | NodeLen | Flags | RemainingLen|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                IOAM-Trace-Type                |  Template-ID  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~       Template-Data depending on the Template-ID value        ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|                                                               |  |
|                        node data list [0]                     |  |
|                                                               |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  D
|                                                               |  a
|                        node data list [1]                     |  t
|                                                               |  a
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                             ........                          ~  S
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  p
|                                                               |  a
|                        node data list [n-1]                   |  c
|                                                               |  e
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
|                                                               |  |
|                        node data list [n]                     |  |
|                                                               |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+

IOAM Template Option

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Namespace-ID           |   Template ID |      FEP      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~       Template-Data depending on the Template-ID value        ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

The Aggregation Template has been defined as follows:

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          IOAM Data Param                      |  Aggr | Flags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Aggregate                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                Auxil-data Node-Id             |  Hop Count    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
ramon force-pushed implement-template-option from 709534a5cf
Some checks failed
Build Stratoshark macOS / Build (push) Has been cancelled
Build MacOS / Build & Test (push) Has been cancelled
Build MSYS2 / msys2-ucrt64 (push) Has been cancelled
CMake Options Test / Build (push) Has been cancelled
Build Ubuntu / Build & Test (push) Has been cancelled
Build Windows / Build & Test (push) Has been cancelled
Build MSYS2 / install-nsis (push) Has been cancelled
to 117350eecd
Some checks failed
Build Stratoshark macOS / Build (push) Has been cancelled
Build MacOS / Build & Test (push) Has been cancelled
Build MSYS2 / msys2-ucrt64 (push) Has been cancelled
CMake Options Test / Build (push) Has been cancelled
Build Ubuntu / Build & Test (push) Has been cancelled
Build Windows / Build & Test (push) Has been cancelled
Build MSYS2 / install-nsis (push) Has been cancelled
2026-07-20 15:42:50 +00:00
Compare
Add dissector for the IOAM Aggregation Trace Option
Some checks are pending
Build Stratoshark macOS / Build (push) Waiting to run
Build MacOS / Build & Test (push) Waiting to run
Build MSYS2 / msys2-ucrt64 (push) Waiting to run
Build MSYS2 / install-nsis (push) Blocked by required conditions
CMake Options Test / Build (push) Waiting to run
Build Ubuntu / Build & Test (push) Waiting to run
Build Windows / Build & Test (push) Waiting to run
2e10c1bf83
I added again the dissector for the IOAM Aggregation Trace Option
according to the structure defined in the drafts:

- draft-mbci-ippm-ioam-template-option-03
- draft-cxx-ippm-ioamaggr-06

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Namespace-ID           |           Reserved            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          IOAM Data Param                      | AggrF | Flags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Aggregate                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                Auxil-data Node-Id             |  Hop Count    |
+---------------------------------------------------------------+

The structure of the aggregated data is supposed to be the same
for the IOAM Aggregation Template and the IOAM Aggregation Trace
Option. Currently the fields AggrF and Flags are swapped in
the definitions in the two drafts. The current implementation
follows the template option draft.
ramon force-pushed implement-template-option from 2e10c1bf83
Some checks are pending
Build Stratoshark macOS / Build (push) Waiting to run
Build MacOS / Build & Test (push) Waiting to run
Build MSYS2 / msys2-ucrt64 (push) Waiting to run
Build MSYS2 / install-nsis (push) Blocked by required conditions
CMake Options Test / Build (push) Waiting to run
Build Ubuntu / Build & Test (push) Waiting to run
Build Windows / Build & Test (push) Waiting to run
to 70b021f46c
Some checks are pending
Build Stratoshark macOS / Build (push) Waiting to run
Build MacOS / Build & Test (push) Waiting to run
Build MSYS2 / msys2-ucrt64 (push) Waiting to run
Build MSYS2 / install-nsis (push) Blocked by required conditions
CMake Options Test / Build (push) Waiting to run
Build Ubuntu / Build & Test (push) Waiting to run
Build Windows / Build & Test (push) Waiting to run
2026-07-26 09:54:11 +00:00
Compare
ramon force-pushed implement-template-option from 70b021f46c
Some checks are pending
Build Stratoshark macOS / Build (push) Waiting to run
Build MacOS / Build & Test (push) Waiting to run
Build MSYS2 / msys2-ucrt64 (push) Waiting to run
Build MSYS2 / install-nsis (push) Blocked by required conditions
CMake Options Test / Build (push) Waiting to run
Build Ubuntu / Build & Test (push) Waiting to run
Build Windows / Build & Test (push) Waiting to run
to e845fad603
Some checks failed
Build Stratoshark macOS / Build (push) Has been cancelled
Build MacOS / Build & Test (push) Has been cancelled
Build MSYS2 / msys2-ucrt64 (push) Has been cancelled
CMake Options Test / Build (push) Has been cancelled
Build Ubuntu / Build & Test (push) Has been cancelled
Build Windows / Build & Test (push) Has been cancelled
Build MSYS2 / install-nsis (push) Has been cancelled
2026-07-26 09:56:40 +00:00
Compare
ramon merged commit edb5c87d60 into master 2026-07-26 09:57:23 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ramon/wireshark!1
No description provided.