sfcapd(1) sflow capture daemon


sfcapd [options]


is the sflow capture daemon of the nfdump tools. It reads sflow data from the network and stores it into nfcapd compatible files. The output file is automatically rotated and renamed every n minutes - typically 5 min - according the timestamp YYYYMMddhhmm of the interval e.g. nfcapd.200407110845 contains the data from July 11th 2004 08:45 onward. sfcapd supports sFlow version 4 and 5 datagrams.

Sflow is an industry standard developed by InMon Corporation. For more information see http://sflow.org.


-p portnum
Specifies the port number to listen. Default port is 6343
-b bindhost
Specifies the hostname/IPv4/IPv6 address to bind for listening. Can be an IP address or a hostname, resolving to an IP address attached to an interface. Defaults to any available IPv4 interface, if not specified.
Forces sfcapd to listen on IPv4 addresses only. Can be used together with -b if a hostname has an IPv4 and IPv6 address record. Depending on the socket implementation -6 also accepts IPv4 data.
Forces sfcapd to listen on IPv6 addresses only. Can be used together with -b if a hostname has an IPv4 and IPv6 address record.
-j MulticastGroup
Join the specified IPv6 or IPv6 multicast group for listening.
-R host[/port}
Enable packet repeater. Send all incoming packets to another host and port. host is either a valid IPv4/IPv6 address, or a valid simbolic hostname, which resolves to a IPv6 or IPv4 address. port may be ommited and defaults to port 6343. Note: Due to IPv4/IPv6 accepted addresses the port separator is '/'.
-I IdentString ( capital letter i )
Specifies an ident string, which describes the source e.g. the name of the router. This string is put into the stat record to identify the source. Default is 'none'. This is for compatibility with nfdump 1.5.x and used to specify a single sflow source. See -n
-l base_directory ( letter ell )
Specifies the base directory to store the output files. If a sub hierarchy is specified with -S the final directory is concatenated to base_directory/sub_hierarchy. This is for compatibility with nfdump 1.5.x and used to specify a single sflow source. See -n
-n <Ident,IP,base_directory>
Configures an sflow source named Ident and identified by source IP address IP. The base directory for the flow files is base_directory. If a sub hierarchy is specified with -S the final directory is concatenated to base_directory/sub_hierarchy. Multiple netflow sources can be specified. All data is sent to the same port specified by -p. Note: You must not mix -n option with -I and -l. Use either syntax.
-f <pcap_file>
Read sflow packets from a give pcap_file instead of the network. This requires sfcapd to be compiled with the pcap option and is intended for debugging only.
-S <num>
Allows to specify an additional directory sub hierarchy to store the data files. The default is 0, no sub hierarchy, which means the files go directly in the base directory (-l). The base directory (-l) is concatenated with the specified sub hierarchy format to form the final data directory. The following hierarchies are defined:

 0 default     no hierarchy levels

 1 %Y/%m/%d    year/month/day

 2 %Y/%m/%d/%H year/month/day/hour

 3 %Y/%W/%u    year/week_of_year/day_of_week

 4 %Y/%W/%u/%H year/week_of_year/day_of_week/hour

 5 %Y/%W/%u    year/week_of_year/day_of_week

 6 %Y/%W/%u/%H year/week_of_year/day_of_week/hour

 7 %Y/%j       year/day-of-year

 8 %Y/%j/%H    year/day-of-year/hour

 9 %Y-%m-%d    year-month-day

10 %Y-%m-%d/%H year-month-day/hour

-T <extension list>
Specifies the list of extensions, to be stored in the flow file. Regardless of the extension list, the following sflow data is stored per record: first, last, fwd status, tcp flags, proto, (src)tos, src port, dst port, src ipaddr, dst ipaddr, in(packets), in(bytes). In addition sfcapd recognises the extensions as described below.

sflow extensions:

 1 input/output interface SNMP numbers.

 2 src/dst AS numbers.

 3 src/dst mask, (dst)TOS, direction, 

 4 Next hop IP addr

 5 BGP next hop IP addr

 6 src/dst vlan id labels

10 in_src/out_dst MAC address

By default extension 1 and 2 are selected, which provides compatibility with earlier nfdump version. Extensions can be added/deleted by specifying a ',' separated list of extension ids. Each id may be prepended by an optional sign +/- to add or remove a given id from the extension list. The string 'all' means all extensions. Extensions 7-9 are not available for sfcapd.


-T all Enables all possible extensions.

-T +3,+4 Adds extensions 3 and 4 to the defaults 1 and 2.

-T all,-5,-6 Set all extensions but 5 and 6

-T -1,4 Removes default extension 1 and adds extension 4

Note: Extensions are shared with the netflow collector nfcapd. Sflow as well as netflow data is stored in the same type of extensions.

-t interval
Specifies the time interval in seconds to rotate files. The default value is 300s ( 5min ).
Align file rotation with next n minute ( specified by -t ) interval. Example: If interval is 5 min, sync at 0,5,10... wall clock minutes Default: no alignment.
-x cmd
Run command cmd at the end of every interval, when a new file becomes available. The following command expansion is available:
%f     Replaced by the file name e.g nfcapd.200407110845 inluding any

     sub hierarchy. ( 2004/07/11/nfcapd.200407110845 )

%d     Replaced by the directory where the file is located.

%t     Replaced by the time ISO format e.g. 200407110845.

%u     Replaced by the UNIX time format.

%i     Replaced ident string given by -I

Auto expire files at every cycle. max lifetime and max filesize are defined using nfexpire(1)
-P pidfile
Specify name of pidfile. Default is no pidfile.
Daemon mode: fork to background and detach from terminal. Nfcapd terminates on signal TERM, INT and HUP.
-u userid
Change to the user userid as soon as possible. Only root is allowed to use this option.
-g groupid
Change to the group groupid as soon as possible. Only root is allowed use this option.
-B bufflen
Specifies the socket input buffer length in bytes. For high volume traffic ( near GB traffic ) it is recommended to set this value as high as possible ( typically > 100k ), otherwise you risk to lose packets. The default is OS ( and kernel ) dependent.
Print data records in nfdump raw format to stdout. This option is for debugging purpose only, to see how incoming sflow data is processed and stored.
Compress flows. Use fast LZO1X-1 compression in output file.
Print sfcapd version and exit.
Print help text to stdout with all options and exit.


Returns 0 on success, or 255 if initialization failed.


sfcapd logs to syslog with SYSLOG_FACILITY LOG_DAEMON For normal operation level 'warning' should be fine. More information is reported at level 'info' and 'debug'.

A small statistic about the collected flows, as well as errors are reported at the end of every interval to syslog with level 'info'.


Compatible with old sfcapd 1.5.x:
sfcapd -w -D -l /data/spool/router1 -p 6343 -B 128000 -I router1 -x '/path/some_app -r %d/%f' -P /var/run/sfcapd/sfcapd.router1

Selectively enabled sender:

sfcapd -Tall -w -D -n router1,,/data/spool/router1 -p 6343 -B 128000 -P /var/run/sfcapd/sfcapd.router1


sfcapd automatically scales the packets and bytes according the sampling rate.

Even with sflow version 4 and 5 support, not all available sflow elements are stored in the data files. As of this version, sfcpad supports the the same shared fields as extensions, as it's netflow companion nfcapd for netflow version v9. See nfcapd(1). More fields will be supported in future.

The format of the data files is version independent and compatible nfcapd collected data.

Socket buffer: Setting the socket buffer size is system dependent. When starting up, sfcapd returns the number of bytes the buffer was actually set. This is done by reading back the buffer size and may differ from what you requested.