Ethereal-dev: [Ethereal-dev] IP over fixed-length frames

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Joshua Schoolcraft <jschoolc@xxxxxxxxx>
Date: Thu, 12 Aug 2004 16:33:33 -0700
Hello list,

I'm working with a transfer protocol developed by the CCSDS
(http://www.ccsds.org).  The current form that we are developing
(telemetry data transfer frame, version 1) uses a fixed-size frame
packaged inside an Ethernet frame to transfer TCP/IP packets.  I'm a
little lost dissector development-wise as far as handing off
dissection from the telemetry transfer frame dissector to the IP
dissector.  Here are the possible scenarios I'm wrestling with:

Scenario #1: The size of the IP packet exceeds the size of the CCSDS
transfer frame.
In this case, there will exist telemetry transfer frames which contain
no IP header and only a partial IP payload, or contain an IP header
with a partial payload, padded by a preceding fragmented payload.

The transfer frame header contains a pointer to the first IP header in
its payload (if it exists), so I can at least reliably find a single
IP header in the mix.  Is there any way, however, to decode the IP
payload when it spans across multiple CCSDS frames?

Scenario #2: The size of the IP packet is small enough that multiple
packets will fit in a single frame.  In this case, I can use the
previously mentioned pointer to pass Ethereal the first IP packet, but
I'm not sure how to make it dissect each additional one inside the
frame's payload.  Also included with this scenario is the same
situation as scenario #1 - partial and fragmented payloads, and the
possibility of parsing/dissecting them across multiple transfer
frames.

Any suggestions are greatly appreciated.

Regards,
Josh Schoolcraft