Ethereal-dev: Re: [Ethereal-dev] Cisco NetFlow (and Juniper Cflowd) dissector
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: Matthew Smart <smart@xxxxxxxxxx>
Date: Thu, 5 Sep 2002 15:43:45 -0400
If you could provide me with documentation on how Juniper treats the last, reserved field in the header, I would be grateful. Cisco treats this as undocumented and unsupported. Also, the field only represents the sampling rate if the top two bits are == 10b. I have code to do the right thing in this case. I have removed Cisco-specific language from the dissector. mattSMART On Thu, Sep 05, 2002 at 07:32:47PM +0200, Hannes Gredler wrote: > hi, > > pls find attached patch that supports decoding of the > sample rate factor in cflowd5 headers; > > --- > another question: is there a way to tell ethereal on startup > that is should register the netflow dissector on a specific UDP > port ? > > matthew already pointed out the dillemma - currently there is > no wellknown port for cflowd records and on most of my customers > networks it is an arbitrary UDP port [2000, 2032 etc.] > > /hannes > > On Wed, Sep 04, 2002 at 03:39:42PM -0400, Matthew Smart wrote: > | This dissector properly reads NetFlow version 5 and can be > | enhanced to handle version 1, 7, 8, and with a bit more work > | version 9. I have a lot of code that processes the different > | versions, and I'd be happy to continue to make this dissector > | better if it makes it into the tree. > | > | The patch to 0.9.6-current is trivial: just added the source file > | to Makefile.am and Makefile.nmake and two new files, packet-netflow.h > | and packet-netflow.c. > | > | I realize that there is no default port for NetFlow exports, so > | I have set default value to port 5000. > > [ ... ] > Index: packet-netflow.c > =================================================================== > RCS file: /cvsroot/ethereal/packet-netflow.c,v > retrieving revision 1.1 > diff -u -r1.1 packet-netflow.c > --- packet-netflow.c 2002/09/04 20:23:53 1.1 > +++ packet-netflow.c 2002/09/05 17:26:36 > @@ -41,6 +41,7 @@ > static int hf_netflow_sys_uptime = -1; > static int hf_netflow_unix_sec = -1; > static int hf_netflow_unix_nsec = -1; > +static int hf_netflow_sample_rate = -1; > static int hf_netflow_flow_sequence = -1; > static int hf_netflow_record = -1; > > @@ -56,7 +57,7 @@ > gint offset = 0; > struct netflow5_hdr nfh; > struct netflow5_rec nfr; > - guint16 nfh_version, nfh_count; > + guint16 nfh_version, nfh_count, nfh_sample_rate; > guint32 nfh_sys_uptime, nfh_unix_sec, nfh_unix_nsec; > guint32 nfh_sequence; > int i; > @@ -73,18 +74,19 @@ > nfh_sys_uptime = ntohl(nfh.sys_uptime); > nfh_unix_sec = ntohl(nfh.unix_sec); > nfh_unix_nsec = ntohl(nfh.unix_nsec); > + nfh_sample_rate = ntohs(nfh.sample_rate); > nfh_sequence = ntohl(nfh.flow_sequence); > > if (check_col(pinfo->cinfo, COL_INFO)) > col_add_fstr(pinfo->cinfo, COL_INFO, > - "v%u, %u records, sequence number %u", > + "Netflow v%u, %u records, sequence number %u", > nfh_version, nfh_count, nfh_sequence); > > if (tree != NULL) { > /* Add NetFlow to to the tree */ > ti = proto_tree_add_protocol_format(tree, proto_netflow, tvb, > offset, sizeof(nfh.version) + sizeof(nfh.count)*sizeof(nfr), > - "Cisco Netflow, v%u, %u records, sequence number %u", > + "Netflow v%u, %u records, sequence number %u", > nfh_version, nfh_count, nfh_sequence); > netflow_tree = proto_item_add_subtree(ti, ett_netflow); > > @@ -115,6 +117,11 @@ > tvb, offset + 12, sizeof(nfh.unix_nsec), nfh_unix_nsec, > "Residual: %u nanoseconds", nfh_unix_nsec); > > + /* On high-speed interfaces often just statistical sample records are produced */ > + proto_tree_add_uint_format(netflow_tree, hf_netflow_sample_rate, > + tvb, offset + 22, sizeof(nfh.sample_rate), nfh_sample_rate, > + "Sample Rate: 1/%u", nfh_sample_rate); > + > for (i = 0; i < nfh_count; i++) { > guint rec_offset = sizeof(nfh) + i * sizeof(nfr); > > @@ -202,6 +209,9 @@ > BASE_DEC, NULL, 0x0, "", HFILL }}, > { &hf_netflow_unix_nsec, > { "Unix nanonseconds", "netflow.unix_nsec", FT_UINT32, > + BASE_DEC, NULL, 0x0, "", HFILL }}, > + { &hf_netflow_sample_rate, > + { "Sample Rate", "netflow.sample_rate", FT_UINT16, > BASE_DEC, NULL, 0x0, "", HFILL }}, > { &hf_netflow_flow_sequence, > { "Sequence number", "netflow.flow_sequence", FT_UINT32, > Index: packet-netflow.h > =================================================================== > RCS file: /cvsroot/ethereal/packet-netflow.h,v > retrieving revision 1.1 > diff -u -r1.1 packet-netflow.h > --- packet-netflow.h 2002/09/04 20:23:54 1.1 > +++ packet-netflow.h 2002/09/05 17:26:36 > @@ -39,7 +39,7 @@ > guint32 flow_sequence; /* Sequence num of flows seen */ > guint8 engine_type; /* Type of flow switching engine */ > guint8 engine_id; /* Slot number of switching engine */ > - guint16 reserved; > + guint16 sample_rate; /* sample 1/sample_rate packets */ > }; > > struct netflow5_rec {
- Follow-Ups:
- Re: [Ethereal-dev] Cisco NetFlow (and Juniper Cflowd) dissector
- From: Hannes Gredler
- Re: [Ethereal-dev] Cisco NetFlow (and Juniper Cflowd) dissector
- References:
- [Ethereal-dev] Cisco NetFlow (and Juniper Cflowd) dissector
- From: Matthew Smart
- Re: [Ethereal-dev] Cisco NetFlow (and Juniper Cflowd) dissector
- From: Hannes Gredler
- [Ethereal-dev] Cisco NetFlow (and Juniper Cflowd) dissector
- Prev by Date: Re: [Ethereal-dev] Bootable ethereal?
- Next by Date: Re: [Ethereal-dev] Cisco NetFlow (and Juniper Cflowd) dissector
- Previous by thread: Re: [Ethereal-dev] Cisco NetFlow (and Juniper Cflowd) dissector
- Next by thread: Re: [Ethereal-dev] Cisco NetFlow (and Juniper Cflowd) dissector
- Index(es):