Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
nfdump(1)							       nfdump(1)

NAME
     nfdump - netflow display and analyze program

SYNOPSIS
     nfdump [options] [filter]

DESCRIPTION
     nfdump is the netflow display and analyzing program of the nfdump tool set.
     It  reads	the  netflow  data from files stored by nfcapd and processes the
     flows according the options given. The filter syntax is comparable to  tcp-
     dump  and extended for netflow data. Nfdump can also display many different
     top N flow and flow element statistics.

OPTIONS
     -r inputfile
	Read input data from inputfile. Default is read from stdin.

     -R expr
	Read input from a sequence of files in the same directory. expr  may  be
	one of:
	 /any/dir	   Read recursively all files in directory dir.
	 /dir/file	   Read all files beginning with file.
	 /dir/file1:file2  Read all files from file1 to file2.

	 When using in combination with a sub hierarchy:
	 /dir/sub1/sub2/file1:sub3/sub4/file2
	 Read  all files from sub1/sub2/file1 sub3/sub4/file2 iterating over all
	 required hierarchy levels.

	 Note: files are read in alphabetical sequence.

     -M expr
	Read   input   from   multiple	  directories.	  expr	  looks    like:
	/any/path/to/dir1:dir2:dir3  etc.  and	will be expanded to the directo-
	ries: /any/path/to/dir1,  /any/path/to/dir2  and  /any/path/to/dir3  Any
	number	of  colon  separated directories may be given. The files to read
	are specified by -r or -R and are expected to exist in all the given di-
	rectories.  The options -r and -R must not contain  any  directory  part
	when used in conjunction with -M.

     -m
	Sort  the  netflow records according the date first seen. This option is
	usually only useful in conjunction with -M,  when  netflow  records  are
	read from different sources, which are not necessarily sorted.

     -w outputfile
	If  specified  writes  binary  netflow records to outputfile ready to be
	processed again with nfdump. The default output is ASCII on stdout.

     -f filterfile
	Reads the filter syntax from filterfile. Note: Any filter specified  di-
	rectly on the command line takes precedence over -f.

     -t timewin
	Process only flows, which fall in the time window timewin, where timewin
	is YYYY/MM/dd.hh:mm:ss[-YYYY/MM/dd.hh:mm:ss]. Any parts of the time spec
	may	  be	   omitted	e.g	 YYYY/MM/dd	 expands      to
	YYYY/MM/dd.00:00:00-YYYY/MM/dd.23:59:59 and processes all  flow  from  a
	given  day. The time window may also be specified as +/- n. In this case
	it is relativ to the beginning or end of all flows. +10 means the  first
	10 seconds of all flows, -10 means the last 10 seconds of all flows.

     -c num
	Limit number of records to process to the first num flows.

     -a
	Aggregate netflow data. Aggregation is done at connection level.

     -A fields[/netmask]
	Aggregate netflow data using the specified fields, where fields is a ','
	separated list out of proto srcip dstip srcport dstport srcas dstas. The
	default is using all fields: proto,srcip,dstip,srcport,dstport. An addi-
	tional	netmask  may  be given. In that case flows from the same subnets
	are aggregated. In order to do proper aggregation, the IP version is im-
	portant, for which the mask applies. Therefore the IP  protocol  version
	must  be  given in the form of: srcip4/24 for IPv4 or srcip6/64 for IPv6
	address aggregation. Apply the protocol version for dstip respectively.

     -I
	Print flow statistics from file specified by -r, or  timeslot  specified
	by  -R/-M.  The printed information corresponds to pre nfdump 1.5 nfcapd
	stat files.

     -S
	Compatibility option with pre 1.4 nfdump. Is equal  to	-s  record/pack-
	ets/bytes.

     -s statistic[:p][/orderby]
	Generate the Top N flow or flow element statistic. statistic can be:
	  record  Statistic about arregated netflow records.
	  srcip   Statistic about source IP addresses
	  dstip   Statistic about destination IP addresses
	  ip	  Statistic about any (source or destination) IP addresses
	  srcport Statistic about source ports
	  dstport Statistic about destination ports
	  port	  Statistic about any (source or destination) ports
	  tos	  Statistic about type of service
	  srcas   Statistic about source AS numbers
	  dstas   Statistic about destination AS numbers
	  as	  Statistic about any (source or destination) AS numbers
	  inif	  Statistic about input interface
	  outif   Statistic about output interface
	  proto   Statistic about IP protocols
	By  adding :p to the statistic name, the resulting statistic is splitted
	up into transport layer protocols. Default is transport  protocol  inde-
	pendant statistics.
	orderby  is  optional and specifies the order by which the statistics is
	ordered and can be flows, packets, bytes, pps, bps or bpp. You may spec-
	ify more than one orderby which results in the same  statistic	but  or-
	dered  differently.  If  no  orderby is given, statistics are ordered by
	flows.	You can specify as many -s flow element statistics on  the  com-
	mand line for the same run.
	Example:   -s	srcip	-s   ip/flows  -s  dstport/pps/packets/bytes  -s
	record/bytes

     -O orderby
	Specifies the default orderby for flow element statistics -s, which  ap-
	plies  when  no  orderby  is given at -s. orderby can be flows, packets,
	bytes, pps, bps or bpp. Defaults to flows.

     -l [+/-]packet_num
	Limit statistics output to those records above or below  the  packet_num
	limit. packet_num accepts positive or negative numbers followed by 'K' ,
	'M' or 'G' 10E3, 10E6 or 10E9 flows respectively. See also note at -L

     -L [+/-]byte_num
	Limit  statistics  output  to  those records above or below the byte_num
	limit. byte_num accepts positive or negative numbers followed by  'K'  ,
	'M'  or  'G'  10E3,  10E6 or 10E9 bytes respectively. Note: These limits
	only apply to the statistics and aggregated outputs generated with -a -s
	or -S.	To filter netflow records by packets and bytes, use  the  filter
	syntax 'packets' and 'bytes' described below.

     -n num
	Define	the  number  for  the  Top N statistics. Defaults to 10. If 0 is
	specified the number is unlimited.

     -o format
	Selects the output format to print flows or flow record  statistics  (-s
	record). The following formats are available:
	  raw	   Print each file flow record on multiple lines.
	  line	   Print each flow on one line. Default format.
	  long	   Print each flow on one line with more details
	  extended Print each flow on one line with even more details.
	  pipe	   Machine readable format: Print all fields '|' separated.
	  fmt:format User defined output format.
	For  each defined output format except -o fmt:<format> an IPv6 long out-
	put format exists.  line6, long6 and extended6. See output formts  below
	for more information.

     -K key
	Anonymize  all IP addresses using the CryptoPAn (Cryptography-based Pre-
	fix-preserving Anonymization) module. The key is used to initialize  the
	Rijndael  cipher. key is either a 32 character string, or a 64 hex digit
	string starting with 0x. Anonymizing takes place after applying the flow
	filter, but before printing the flow or writing the flow to a file.

	See http://www.cc.gatech.edu/computing/Telecomm/cryptopan/ for more  in-
	formation about CryptoPAn.

     -q
	Suppress the header line and the statistics at the bottom.

     -N
	Print the numbers in the summary line as plain numbers. Better parsing.

     -z
	Zero flows. Do not dump flows into the output file, but only the statis-
	tics record.

     -Z
	Check filter syntax and exit. Sets the return value accordingly.

     -X
	Compiles  the  filer syntax and dumps the filter engine table to stdout.
	This is for debugging purpose only.

     -V
	Print nfdump version and exit.

     -h
	Print help text on stdout with all options and exit.

RETURN VALUE
     Returns
	 0   No error.
	 255 Initialization failed.
	 254 Error in filter syntax.
	 250 Internal error.

OUTPUT FORMATS
     The output format raw prints each flow record on multiple lines,  including
     all  information available in the record. This is the most detailed view on
     a flow.

     Other output formats print each flow on a single  line.  Predefined  output
     formats  are  line, long and extended The output format line is the default
     output format when no format is specified.  It limits  the  imformation  to
     the connection details as well as number of packets, bytes and flows.

     The  output format long is identical to the format line, and includes addi-
     tional information such as TCP flags and Type of Service.

     The output format extended is identical to the format  long,  and	includes
     additional computed information such as pps, bps and bpp.

     Fields:

	Date  flow  start: Start time flow first seen. ISO 8601 format including
	miliseconds.

	Duration: Duration of the flow in seconds and miliseconds.  If flows are
	aggregated, duration is the time span over the entire  periode	of  time
	from first seen to last seen.

	Proto: Protocol used in the connection.

	Src IP Addr:Port: Source IP address and source port.

	Dst  IP Addr:Port: Destination IP address and destination port.  In case
	of ICMP, port is decodes as type.code.

	Flags: TCP flags ORed of the connection.

	Tos: Type of service.

	Packets: The number of packets in this flow. If  flows	are  aggregated,
	the packets are summed up.

	Bytes:	The  number  of bytes in this flow. If flows are aggregated, the
	bytes are summed up.

	pps: The calculated packets per second: number of  packets  /  duration.
	If  flows are aggregated this results in the average pps during this pe-
	riode of time.

	bps: The calculated bits per second: 8 * number of bytes / duration.  If
	flows are aggregated this results in the average bps during this periode
	of time.

	Bpp:  The calculated bytes per packet: number of bytes / number of pack-
	ets. If flows are aggregated this results in the average bpp during this
	periode of time.

	Flows: Number of flows. If flows are listed only, this number is  alwasy
	1. If flows are aggregated, this shows the number of aggregated flows to
	one record.

     Numbers  larger  than  1048576  (1024*1024), are scaled to 4 digits and one
     decimal digit including the scaling factor M, G or T  for	cleaner  output,
     e.g. 923.4 M

     To  make  the  output more readable, IPv6 addresses are shrinked down to 16
     characters. The seven most and seven least digits connected with  two  dots
     '..'  are	displayed in any normal output formats. To display the full IPv6
     address, use the appropriate long format, which is the format name followed
     by a 6.

     Example: -o line displays an IPv6 address as 2001:23..80:d01e where as  the
     format    -o   line6   displays   the   IPv6   address   in   full   length
     2001:234:aabb::211:24ff:fe80:d01e.  The combination of -o line -6 is equiv-
     alent to -o line6.

     The pipe output format is intended to be read by another programm for  fur-
     ther  processing.	 Values are separated by a '|'. IP addresses are printed
     as 4 consecutive 32bit numbers.  Output sequence:

	Address family	PF_INET or PF_INET6
	Time first seen UNIX time seconds
	msec first seen Mili seconds first seen
	Time last seen	UNIX time seconds
	msec last seen	Mili seconds first seen
	Protocol	Protocol
	Src address	Src address as 4 consecutive 32bit numbers.
	Src port	Src port
	Dst address	Dst address as 4 consecutive 32bit numbers.
	Dst port	Dst port
	Src AS		Src AS number
	Dst AS		Dst AS number
	Input IF	Input Interface
	Output IF	Output Interface
	TCP Flags	TCP Flags
			      000001 FIN.
			      000010 SYN
			      000100 RESET
			      001000 PUSH
			      010000 ACK
			      100000 URGENT
			      e.g. 6 => SYN + RESET
	Tos		Type of Service
	Packets 	Packets
	Bytes		Bytes

     For IPv4 addresses only the last 32bit integer is used. All others are  set
     to zero.

     The output format fmt:<format> allows you to define your own output format.
     A	format description format consists of a single line containing arbitrary
     strings and format specifier as described below

	%ts   Start Time - first seen
	%te   End Time - last seen
	%td   Duration
	%pr   Protocol
	%sa   Source Address
	%da   Destination Address
	%sap  Source Address:Port
	%dap  Destination Address:Port
	%sp   Source Port
	%dp   Destination Port
	%sas  Source AS
	%das  Destination AS
	%in   Input Interface num
	%out  Output Interface num
	%pkt  Packets
	%byt  Bytes
	%fl   Flows
	%pkt  Packets
	%flg  TCP Flags
	%tos  Tos
	%bps  bps - bits per second
	%pps  pps - packets per second
	%bpp  bps - Bytes per package

     For example the standard output format long can be created as

     -o "fmt:%ts %td %pr %sap -> %dap %flg %tos %pkt %byt %fl"

     You may also define your own output format and have it  compiled  into  nf-
     dump.  See nfdump.c around line 100 for more details.

FILTER
     The  filter  syntax  is similar to the well known pcap library used by tcp-
     dump.  The filter can be either specified on the command line after all op-
     tions or in a separate file. It can span several lines.  Anything	after  a
     '#'  is  treated  as a comment and ignored to the end of the line. There is
     virtually no limit in the length of the filter expression. All keywords are
     case independent.

     Any filter consists of one or more expressions expr. Any number of expr can
     be linked together:

     expr and expr, expr or expr, not expr and ( expr ).

     Expr can be one of the following filter primitives:

     protocol version
	 inet for IPv4 and inet6 for IPv6

     protocol
	 proto <protocol> where protocol can be any known protocol such as  TCP,
	 UDP, ICMP, ICMP6 GRE, ESP, AH, or a valid protocol number.

     IP address
	 [SourceDestination] IP <ipaddr> or
	 [SourceDestination]  HOST  <ipaddr>  with <ipaddr> as any valid IPv4 or
	 IPv6 address.	SourceDestination may be omitted.

     IP in [ <iplist> ]
	 [SourceDestination] IP in [<iplist>]
	 [SourceDestination] host in [<iplist>]
	 iplist space separated list of individual <ipaddr>

     SourceDestination
	 defines the IP address to be selected and can be SRC, DST or any combi-
	 nation of SRC and|or DST. Ommiting SourceDestination is  equivalent  to
	 SRC or DST.

     inout
	 defines the interface to be selected and can be IN or OUT.

     network
	 [SourceDestination]  NET a.b.c.d m.n.r.s. for IPv4 with m.n.r.s as net-
	 mask.
	 [SourceDestination] NET <net> / num with <net> as a valid IPv4 or  IPv6
	 network and num as maskbits. The number of mask bits must match the ap-
	 propriate address familiy IPv4 or IPv6. Networks may be abreviated such
	 as 172.16/16 if they are unambiguous.

     Port
	 [SourceDestination]   PORT  [comp] num with num as a valid port number.
	 If comp is omitted, '=' is assumed.

     Interface
	 [inout]  IF num with num as an interface number.

     Flags
	 flags tcpflags with tcpflags as a combination of:
	 A    ACK.
	 S    SYN.
	 F    FIN.
	 R    Reset.
	 P    Push.
	 U    Urgent.
	 X    All flags on.
     The ordering of the flags is not relevant. Flags not mentioned are  treated
     as don't care.  In order to get those flows with only the SYN flag set, use
     the syntax 'flags S and not flags AFRPU'.

     TOS
	 Type of service: tos value with value 0..255.

     Packets
	 packets  [comp]  num [scale] to specify the packet count in the netflow
	 record.

     Bytes
	 bytes [comp] num [scale] to specify  the  byte  count	in  the  netflow
	 record.

     Packets per second: Calculated value.
	 pps [comp] num [scale] to specify the pps of the flow.

     Duration: Calculated value
	 duration [comp] num to specify the duration in miliseconds of the flow.

     Bits per second: Calculated value.
	 bps [comp] num [scale] to specify the bps of the flow.

     Bytes per packet: Calculated value.
	 bpp [comp] num [scale] to specify the bpp of the flow.

     AS  [SourceDestination]  AS num with num as a valid AS number.

     scale scaling factor. Maybe k m g. Factor is 1024

     comp The following comparators are supported:
	 =, ==, >, <, EQ, LT, GT .  If comp is omitted, '=' is assumed.

EXAMPLES
     nfdump   -r   /and/dir/nfcapd.200407110845   -c  100  'tcp  and  (  src  ip
     172.16.17.18 or dst ip 172.16.17.19 )' Dumps the first 100 netflow  records
     which match the given filter:

     nfdump	-R     /and/dir/nfcapd.200407110845:nfcapd.200407110945    'host
     192.168.1.2' Dumps all netflow records of host  192.168.1.2  from	July  11
     08:45 - 09:45

     nfdump  -M  /to/and/dir1:dir2 -R nfcapd.200407110845:nfcapd.200407110945 -S
     -n 20 Generates the Top 20 statistics from 08:45 to 09:45 from 3 sources

     nfdump -r /and/dir/nfcapd.200407110845 -S -n 20 -o extended  Generates  the
     Top 20 statistics, extended output format

     nfdump  -r  /and/dir/nfcapd.200407110845  -S  -n 20 'in if 5 and bps > 10k'
     Generates the Top 20 statistics from flows comming from interface 5

     nfdump -r /and/dir/nfcapd.200407110845 'inet6 and tcp and ( src port > 1024
     and dst port 80 ) Dumps all port 80 IPv6 connections to any web server.

NOTES
     Generating the statistics for data files of a few hundred MB is no problem.
     However be careful if you want to create statistics of several GB of  data.
     This may consume a lot of memory and can take a while. Also, anonymizing IP
     addresses	is time consuming and uses a lot of CPU power, which reduces the
     number of flows per second. Therefore anonymizing takes  place  only,  when
     flow  records are printed or written to files. Any internal flow processing
     takes place using the original IP addresses.

SEE ALSO
     nfcapd(1), nfprofile(1), nfreplay(1)

BUGS
     There is still the famous last bug. Please report them - all the last  bugs
     - back to me.

				   2005-08-19			       nfdump(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=nfdump&sektion=1&manpath=FreeBSD+8.2-RELEASE+and+Ports>

home | help