Ethereal-dev: Re: [Ethereal-dev] Support for pure protocol packetswithout underlying protocol
On Thu, 3 Jul 2003, Jeff Morriss wrote:
> >>Jeff Morris wrote:
> >>
> >>>What he's got now is a PCAP file format where each packet has a "fake
> >>>link" header on it that specifies the lowest-level protocol. This seems
> >>>quite flexible to me--although I suppose that the format of the header
> >>>needs to be stable before the file type is allocated.
> >>>
> >
> >
> > Hmmm, I am not sure that we should use fake link headers. Rather, we
> > should define a separate DLT value for packets that come in without lower
> > layer headers.
>
> You mean one DLT value for each protocol? That seems like a lot.
Yes, I agree.
> > However, a further issue is that at any future time, people might want to
> > create a capture file of only some higher layer PDUs, like, for example
> > SMB PDUs without any link layer, network layer or transport layer headers.
> >
> > Having a flexible scheme to deal with this would be useful.
>
> By having a "fake link" header that has a "type" (protocol) field you
> can put any protocol in there. You can even mix protocols: packet 1 is
> MTP2, packet 2 is SCCP, packet 3 is MTP3, packet 4 is SMB.
>
> Of course, people will have to reserve their fakelink.type's just like
> people reserve DLT_ values.
>
> >>I have a similar need to get packets of different higher level
> >>protocols dissected by Ethereal. In one capture file I want to have
> >>packets with several different high level protocols (H.225, H.245, SIP,
> >>MTP3, ...), so I have been thinking of using something similar to
> >>Navin's "fake link" dissector.
> >>However I also want to have possibilities to store some extra data in
> >>some cases - so I have been thinking of having
> >>some kind of Tag/Length/Value scheme for optional data per packet.
> >
> >
> > I would like to define a DLT-type that allows TLVs or name value pairs as
> > its content, where perhaps one of the TLVs or NVPs contains the data.
> >
> > Perhaps we could include flags like link-hdr=not-present, next-type=IP,
> > network-hdr=not-present, next-type=tcp, transport-hdr=not-present,
> > next-type=SMB ...
>
> How is that better than just saying:
>
> type=SMB,data="..."? Why do you need to know what wasn't there above SMB?
>
> Or are you thinking of being able to have IP + SMB but no TCP? (Which
> seems really complicated to me.)
No, I was thinking of how a tool like Ethereal would be able to figure out
how to dissect the PDUs in a packet that simply contained SMB PDUs.
It seems that we have two alternatives:
1. Unique protocol IDs for each and every protocol
2. Some sort of path to the protocol.
Perhaps there are other approaches that I have not though of.
I think we should thrash this out some more, because it is worthwhile to
get it [close-to] right.
Regards
-----
Richard Sharpe, rsharpe[at]ns.aus.com, rsharpe[at]samba.org,
sharpe[at]ethereal.com, http://www.richardsharpe.com