.TH LNSTAT 8
.SH NAME
lnstat \- unified linux network statistics
.SH SYNOPSIS
.B lnstat
.RI [ options ]
.SH DESCRIPTION
This manual page documents briefly the
.B lnstat
command.
.PP
\fBlnstat\fP is a generalized and more feature-complete replacement for the old
rtstat program. It is commonly used to periodically print a selection of
statistical values exported by the kernel.
In addition to routing cache statistics, it supports any kind of statistics the
linux kernel exports via a file in /proc/net/stat/.
.PP
Each file in /proc/net/stat/ contains a header line listing the column names.
These names are used by \fBlnstat\fP as keys for selecting which statistics to
print. For every CPU present in the system, a line follows which lists the
actual values for each column of the file. \fBlnstat\fP sums these values up
(which in fact are counters) before printing them. After each interval, only
the difference to the last value is printed.
.PP
Files and columns may be selected by using the \fB-f\fP and \fB-k\fP
parameters. By default, all columns of all files are printed.
.SH OPTIONS
lnstat supports the following options.
.TP
.B \-h, \-\-help
Show summary of options.
.TP
.B \-V, \-\-version
Show version of program.
.TP
.B \-c, \-\-count <count>
Print <count> number of intervals.
.TP
.B \-d, \-\-dump
Dump list of available files/keys.
.TP
.B \-f, \-\-file <file>
Statistics file to use, may be specified multiple times. By default all files in /proc/net/stat are scanned.
.TP
.B \-i, \-\-interval <intv>
Set interval to 'intv' seconds.
.TP
.B \-j, \-\-json
Display results in JSON format
.TP
.B \-k, \-\-keys k,k,k,...
Display only keys specified. Each key \fBk\fP is of the form \fB[file:]key\fP. If \fB<file>\fP
is given, the search for the given key is limited to that file. Otherwise the first file containing
the searched key is being used.
.TP
.B \-s, \-\-subject [0-2]
Specify display of subject/header. '0' means no header at all, '1' prints a header only at start of the program and '2' prints a header every 20 lines.
.TP
.B \-w, \-\-width n,n,n,...
Width for each field.
.SH USAGE EXAMPLES
.TP
.B # lnstat -d
Get a list of supported statistics files.
.TP
.B # lnstat -k arp_cache:entries,rt_cache:in_hit,arp_cache:destroys
Select the specified files and keys.
.TP
.B # lnstat -i 10
Use an interval of 10 seconds.
.TP
.B # lnstat -f ip_conntrack
Use only the specified file for statistics.
.TP
.B # lnstat -s 0
Do not print a header at all.
.TP
.B # lnstat -s 20
Print a header at start and every 20 lines.
.TP
.B # lnstat -c -1 -i 1 -f rt_cache -k entries,in_hit,in_slow_tot
Display statistics for keys entries, in_hit and in_slow_tot of field rt_cache every second.

.SH FILES
.TP
.B /proc/net/stat/arp_cache, /proc/net/stat/ndisc_cache
Statistics around neighbor cache and ARP. \fBarp_cache\fP is for IPv4, \fBndisc_cache\fP is the same for IPv6.
.sp
.B entries
Number of entries in the neighbor table.
.sp
.B allocs
How many neighbor entries have been allocated.
.sp
.B destroys
How many neighbor entries have been removed.
.sp
.B hash_grows
How often the neighbor (hash) table was increased.
.sp
.B lookups
How many lookups were performed.
.sp
.B hits
How many \fBlookups\fP were successful.
.sp
.B res_failed
How many neighbor lookups failed.
.sp
.B rcv_probes_mcast
How many multicast neighbor solicitations were received. (IPv6 only.)
.sp
.B rcv_probes_ucast
How many unicast neighbor solicitations were received. (IPv6 only.)
.sp
.B periodic_gc_runs
How many garbage collection runs were executed.
.sp
.B forced_gc_runs
How many forced garbage collection runs were executed. Happens when adding an
entry and the table is too full.
.sp
.B unresolved_discards
How many neighbor table entries were discarded due to lookup failure.
.sp
.B table_fulls
Number of table overflows. Happens if table is full and forced GC run (see
\fBforced_gc_runs\fP) has failed.

.TP
.B /proc/net/stat/ip_conntrack, /proc/net/stat/nf_conntrack
Conntrack related counters. \fBip_conntrack\fP is for backwards compatibility
with older userspace only and shows the same data as \fBnf_conntrack\fP.
.sp
.B entries
Number of entries in conntrack table.
.sp
.B searched
Number of conntrack table lookups performed.
.sp
.B found
Number of \fBsearched\fP entries which were successful.
.sp
.B new
Number of conntrack entries added which were not expected before.
.sp
.B invalid
Number of packets seen which can not be tracked.
.sp
.B ignore
Number of packets seen which are already connected to a conntrack entry.
.sp
.B delete
Number of conntrack entries which were removed.
.sp
.B delete_list
Number of conntrack entries which were put to dying list.
.sp
.B insert
Number of entries inserted into the list.
.sp
.B insert_failed
Number of entries for which list insertion was attempted but failed (happens if
the same entry is already present).
.sp
.B drop
Number of packets dropped due to conntrack failure. Either new conntrack entry
allocation failed, or protocol helper dropped the packet.
.sp
.B early_drop
Number of dropped conntrack entries to make room for new ones, if maximum table
size was reached.
.sp
.B icmp_error
Number of packets which could not be tracked due to error situation. This is a
subset of \fBinvalid\fP.
.sp
.B expect_new
Number of conntrack entries added after an expectation for them was already
present.
.sp
.B expect_create
Number of expectations added.
.sp
.B expect_delete
Number of expectations deleted.
.sp
.B search_restart
Number of conntrack table lookups which had to be restarted due to hashtable
resizes.

.TP
.B /proc/net/stat/rt_cache
Routing cache statistics.
.sp
.B entries
Number of entries in routing cache.
.sp
.B in_hit
Number of route cache hits for incoming packets. Deprecated since IP route
cache removal, therefore always zero.
.sp
.B in_slow_tot
Number of routing cache entries added for input traffic.
.sp
.B in_slow_mc
Number of multicast routing cache entries added for input traffic.
.sp
.B in_no_route
Number of input packets for which no routing table entry was found.
.sp
.B in_brd
Number of matched input broadcast packets.
.sp
.B in_martian_dst
Number of incoming martian destination packets.
.sp
.B in_martian_src
Number of incoming martian source packets.
.sp
.B out_hit
Number of route cache hits for outgoing packets. Deprecated since IP route
cache removal, therefore always zero.
.sp
.B out_slow_tot
Number of routing cache entries added for output traffic.
.sp
.B out_slow_mc
Number of multicast routing cache entries added for output traffic.
.sp
.B gc_total
Total number of garbage collection runs. Deprecated since IP route cache
removal, therefore always zero.
.sp
.B gc_ignored
Number of ignored garbage collection runs due to minimum GC interval not
reached and routing cache not full. Deprecated since IP route cache removal,
therefore always zero.
.sp
.B gc_goal_miss
Number of garbage collector goal misses. Deprecated since IP route cache
removal, therefore always zero.
.sp
.B gc_dst_overflow
Number of destination cache overflows. Deprecated since IP route cache removal,
therefore always zero.
.sp
.B in_hlist_search
Number of hash table list traversals for input traffic. Deprecated since IP
route cache removal, therefore always zero.
.sp
.B out_hlist_search
Number of hash table list traversals for output traffic. Deprecated since IP
route cache removal, therefore always zero.

.SH SEE ALSO
.BR ip (8),
and /usr/share/doc/iproute-doc/README.lnstat (package iproute-doc on Debian)
.br
.SH AUTHOR
lnstat was written by Harald Welte <laforge@gnumonks.org>.
.PP
This manual page was written by Michael Prokop <mika@grml.org> for the Debian project (but may be used by others).