Ethereal-dev: Re: [ethereal-dev] Antwort: Re: [ethereal-users] Reading AIX-iptrace on at0

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

From: Guy Harris <gharris@xxxxxxxxxxxx>
Date: Wed, 17 Nov 1999 22:21:44 -0800
> My guess is that it's a 32-bit quantity, but 4-gigabyte packets
> scare me.

That's my guess, too - maybe they just made it a 32-bit field because
that's the word size of (32-bit) POWER-family processors.

> I have no idea why. Here's my updated
> iptrace_pkt_hdr struct. junk1 and junk2 appear to always be 0.
> 
> typedef struct {
> /* 0-3 */       guint32         pkt_length;     /* packet length + 32 */
> /* 4-7 */       guint32         tv_sec0;	/* copy of tv_sec */
> /* 8-11 */      guint32         junk1;          /* ?? */
> /* 12-15 */     char            if_name[4];     /* null-terminated */
> /* 16-27 */     char            if_desc[12];    /* interface description. */
> /* 28 */        guint8          if_type;        /* BSD net/if_types.h */
> /* 29 */        guint8          tx_flag;	/* 0=receive, 1=transmit */
> /* 30-31 */     guint16         junk2;
> /* 32-35 */     guint32         tv_sec;
> /* 36-39 */     guint32         tv_usec;
> } iptrace_phdr;

Yup.  That's what it looked like to me, too.

For ATM, the interface description appears to be a string of the form
"atvcX.Y", where X is the virtual path identifier and Y is the virtual
circuit identifier of the connection.

It's beginning to look as if an "at"/IFT_ATM "iptrace" capture contains
raw AAL5 frames as the packet data.

Unfortunately, I'm not sure how one infers from that the type of traffic
it is, in general.  Frames 3 and 4 are to virtual circuit 0.16, and some
stuff on the ATM Forum site indicate that VC 0.16 is for use by ILMI,
and "ipreport" *did* dissect that as ILMI, and it looks as if it's
probably valid ILMI traffic (ILMI appears to be "SNMP inside AAL5", and
it looks as if the traffic is getting something in an ATM MIB of some
sort).

VC 0.567 looks like Classical IP, with an 802.2 LLC header at the
beginning of the frame; it appears to have correctly dissected that.

VC 0.561's traffic begins with 0xFF 0x00, which is the header for a LANE
control frame, and that's what it dissected it as.  VC 0.563 could be
LANE data, but it's being dissected in a non-obvious fashion - the first
0.563 frame is

	00 02 01 80 c2 00 00 00 08 00 8f 41 22 02 00 26 42 42 03 00
	00 00 00 00 80 00 08 00 8f 19 42 a9 00 00 00 0a 80 00 08 00
	8f 26 31 39 81 21 01 00 14 00 02 00 0f 00 00 00 00 00 0d 0f
	08 00 8f 4f 00 00

which would, as Ethernet LANE data, be:

	00 02			LE header
	01 80 c2 00 00 00	Destination Ethernet address
	08 00 8f 41 22 02	Source Ethernet address
	00 26			Type/length (a length)

with

	42 42 03 00
	00 00 00 00 80 00 08 00 8f 19 42 a9 00 00 00 0a 80 00 08 00
	8f 26 31 39 81 21 01 00 14 00 02 00 0f 00 00 00 00 00 0d 0f
	08 00 8f 4f 00 00

as the payload - and that looks like a UI frame with source and
destination SAPs of 0x42, i.e. Spanning Tree BPDU - but, for some
unknown reason, it's dissecting it as IP, with the payload being treated
as purely IP data!  Perhaps "ipreport" is just buggy....

However, that still doesn't indicate how it knew that VC 0.561 and 0.563
were LANE, and VC 0.567 was Classical IP.  There doesn't seem to be
anything in the header that would indicate the type of traffic; perhaps
it doesn't know what type of traffic it is, perhaps it just looks at the
first few bytes of the packet and tries to *guess* what it is....