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

  
 
  

home | help
rate(1) 		     General Commands Manual			 rate(1)

NAME
     rate - Swiss-Army-knife traffic analyzer

SYNOPSIS
     rate [generic options] <-R | -A | -T | -E> [mode-specific options]

     rate -L <name>

     rate [-h | -?]

     rate [mode select option] [-h | -?]

DESCRIPTION
     Rate  helps an administrator to figure out what is happening in his network
     at the moment.  Unlike tcpdump(1), rate uses  statistical	and  stream-ori-
     ented traffic analysing methods, and it will never produce an output stream
     at a speed beyond human perception. The output is less accurate, however.

     Rate  features four different operating modes, designed to perform the fol-
     lowing tasks: estimating overall traffic rates (the -R  mode),  determining
     nodes generating the highest traffic (the -A mode), determining connections
     and flows generating the highest traffic (the experimental -T mode) and ex-
     tracting strings from packets (the bonus -E mode).

USAGE
     Rate  accepts  parameters	in a standard, short getopt(3) syntax. There are
     several options common for all operation modes  -	these  options	are  de-
     scribed  in the GENERIC OPTIONS section below. The operation mode itself is
     chosen by one of special mode-selection options: -R, -A, -T or -E. After  a
     mode-selection option, no other generic options are allowed, the only valid
     options  are  the mode-specific ones. Each operation mode has its own set -
     see appropiate sections below.

     After a successful startup, the application  installs  a  packet  capturing
     handler, and starts to generate reports. The default report generating pol-
     icy is to dump a report to stdout every 1 second.

     Always  make  sure  rate  has enough information on datalink layer protocol
     present on the interface it was ordered to bind to. Consult the  -p  option
     description for details.

GENERIC OPTIONS
     -0 c   Replace  every  NUL  character (ASCII 0) with c before doing regular
	    expression based filtering. Ignored if the -x option was not  speci-
	    fied. The default is '@'.

     -c     Color  (ANSI-compatible) output in modes that support it (currently:
	    stream analyzer and "abusers detection" mode).

     -f f   BPF filter expression to use. Using this option causes rate  to  ig-
	    nore  any  packets NOT matching the specified BPF filter expression.
	    For a detailed description of BPF filter expressions syntax, consult
	    the tcpdump(1) manual page.

     -g     Signal-based report generation policy. The reports are dumped  when-
	    ever rate receives a SIGUSR1 signal.

     -h -?  Print  help.   rate dumps a short help on available command-line op-
	    tions and quits, regardless of other options.

     -i I   Bind to interface I. The default is 'eth0',  which	of  course  will
	    cause  a  failure on systems other than Linux. Make sure you specify
	    the datalink prefix (see -p) when you order rate to bind to  an  in-
	    terface of an uncommon type.

     -k     Interactive  report generation. The reports are dumped whenever data
	    is available on the standard input, which usually means you'll  have
	    to press RETURN in order to generate a report.

     -l     Make  stdout  line-buffered.  This option is useful when reports are
	    redirected (eg. using shell redirection) to a file.

     -L N   Loads a previously saved (using -S ) option set.  No  other  options
	    are allowed when -L is being used.

     -n     Turns off asynchronous reverse DNS lookups.  Rate will print numeric
	    IPs rather than fully qualified domain names.

     -p N   Datalink  layer  header  prefix  length.  Every  (or at least almost
	    every) known datalink layer protocol prefixes a packet with its  own
	    header  -  which has to be stripped before the actual data essential
	    for rate (the IP protocol header) can be read.  Rate is able to  de-
	    termine  automatically how many bytes to skip only for the most com-
	    mon datalink layer protocols (Ethernet, FDDI,  TokenRing,  loopback,
	    PPP) - in other cases the prefix length must be specified using this
	    option. It is EXTREMELY IMPORTANT to set the right value - otherwise
	    rate might print completely irrevelant reports and output invalid IP
	    addresses.	The  default  is autosense, or if that fails - 14 bytes,
	    which is the length of an Ethernet header.

     -q N   Orders rate to quit after outputting N reports.

     -r N   Time-based report generation policy. The reports will be  dumped  on
	    stdout every N seconds. This is the default (with N = 1).

     -s N   Capture at least N bytes. For performance reasons, rate does not ac-
	    quire  the	whole  packet  from network, it just reads and processes
	    first N bytes. The default is 64 bytes, which might be not enough if
	    you are using complicated BPF expressions or filtering  the  packets
	    using  a  regular  expression.  In such cases, it is good to set the
	    capture length to MTU on the interface. The value  is  automatically
	    increased to at least 1500 (which is the default MTU for an Ethernet
	    interface)	if one of -x, -E or -T options is used. This option does
	    NOT affect statistical data (amount of bytes, per-second byte  rate)
	    collected  by  rate - the accounted packet size is always the 'real'
	    one.

     -S N   Save the whole specified option set into a file in your home  direc-
	    tory  (~/.rate.modes) under the name N. The option set might then be
	    recalled using the -L option.

     -v     Print exact values. Normally, rate uses SI prefixes (like k -  kilo,
	    M  -  mega,  G  - giga, T - tera) to make the printed numeric values
	    more attractive for a human being. The -v option disables this  fea-
	    ture, causing rate to print exact values.

     -w     Clear the screen before printing each report. This assumes your ter-
	    minal is capable of understanding certain control sequences.

     -x r   Regular  expression-based  filtering. This option will cause rate to
	    ignore packets that DO NOT match specified regular	expression.  Be-
	    fore  any  tests,  NUL  characters occuring in a packet are replaced
	    with an other character, as specified in the -0 option (the  default
	    is	'@').	Consult  regex(5)  manual  for a detailed description of
	    POSIX regular expressions.	In addition to	standard  regex  syntax,
	    you may use the \r (CR), \n (LF), \t (TAB), \\ (\) and \xNN (hex NN)
	    special sequences.

MODE SELECTING OPTIONS
     These  options  are used to choose between one of the four operation modes.
     It is necessary to specify exactly one of them. After specyfing a mode  se-
     lecting option, you may pass the mode-specific options described below, de-
     pending  on the selected mode.  No generic options are allowed though - all
     the generic ones have to be passed BEFORE the mode selecting option.

     -R     Enable the rate estimation mode. See the RATE ESTIMATION  MODE  sec-
	    tion for details.

     -A     Enable  the  "abusers detecion" mode. See the ABUSERS DETECTION MODE
	    section.

     -T     Enable the stream analyzer mode. See the STREAM ANALYZER  MODE  sec-
	    tion.

     -E     Enable  the  regular  expression  extractor mode. See the STRING EX-
	    TRACTING MODE section.

RATE ESTIMATION MODE
     rate [...] -R -h

     rate [...] -R [-b] [bpf filter expression]

     In this mode, rate just shows overall traffic generated by packets matching
     the specified (generic) filtering options (-f, -x).  The  reports	in  this
     mode are just one-line long:

     => Currently XXX Bps/YYY pps, Average: ZZZ Bps/TTT pps

     Where  of	course,  XXX  and YYY are the byte and packet per second values,
     measured since the last report, while ZZZ and TTT are  the  rates	measured
     since the application started.

     Available options:

     -b     Use bit units. The output is to be presented in bits (b) rather than
	    bytes (B).

     -h     Help. Dumps a short hint on mode-specific options available for this
	    mode, and forces rate to quit.

ABUSERS DETECTION MODE
     rate [...] -A -h

     rate  [...] -A [-a n] [-b] <-c c/p [-c c/p [-c c/p ...]]> [-dflt] [-O | -M]
     [-P | -B] [-T | -R] [bpf filter expression]

     This mode is designed for hunting network nodes that generate highest traf-
     fic. An independent set of counters is allocated for every host from  every
     specified IP subnet. On a report event, a list of hosts is composed, sorted
     by  one  of the counters (depending on OMPBTR sorting options), and top en-
     tries (and values of their counters) are displayed on stdout. Available op-
     tions:

     -a N   Print N top nodes.

     -b     Use bit units. The output is to be presented in bits (b) rather than
	    bytes (B).

     -c C/P
	    Consider nodes from this IP subnet. The network mask has to be spec-
	    ified in 'short', CIDR notation, eg.  10.0.0.0/8.

     -d     Alternative ("dump") output format. Instead of showing top N  nodes,
	    rate  will	dump  the  whole  host list in a form that can be easily
	    parsed by automated tools. The output format is:

	    <host IP>:<overall input bytes #>:<overall output  bytes  #>:<momen-
	    tary input bytes #>:<momentary output bytes #>:<overall packet input
	    #>:<overall  packet  output #>:<momentary packet input #>:<momentary
	    packet output #>

     -f     Print spaces instead of "pipes" (|) as column separators.  Normally,
	    rate will use characters imitating a vertical line ('|') to separate
	    columns  in  order to improve readability. This option disables this
	    feature.

     -l     Account local transfers too.  Rate will also account 'local'  trans-
	    fers,  ie.	transfers between two hosts in IP classes specified with
	    -c option. By default, such transfers are ignored.

     -t     Print total amount of transferred data instead of overall speed.

     -O     Consider overall transfer rates while sorting the host list.

     -M     Consider momentary transfer rates while sorting the host  list  (de-
	    fault).

     -P     Consider packet counters while sorting the host list.

     -B     Consider byte counters while sorting the list (default).

     -T     Consider output (TX) counters while sorting the list.

     -R     Consider input (RX) counters while sorting the list (default).

STREAM ANALYZER MODE
     rate [...] -T -h

     rate [...] -T [-m <memlimit> [-f <free>]] [-rtv] [-n <n> | -s <n> | -p <n>]
     [-R | -S] [-M | -O] [-B | -P] [-A | -D] [-b]

     In  this  mode, rate will try to keep track of every TCP connection and UDP
     or ICMP stream present on the interface. Every detected conversation is al-
     located its own set of traffic counters; besides, rate attempts to identify
     common protocols (like HTTP or FTP). The feature is still experimental, and
     consumes HUGE amounts of system resources. Do not trust the -m and  -f  op-
     tions, avoid leaving rate -T somewhere in the background and without super-
     vision.

     The reports might be generated in three different ways:

     host-oriented reports
	    a  list  of  most  active (or least active, depending on sorting op-
	    tions) hosts is printed, with an optional list of conversations  be-
	    low every entry.

     stream-oriented reports
	    rate print an overall list of most/least active streams.

     protocol-oriented reports
	    show the mostly utilized protocols, with an optional list of conver-
	    sations classified as a specific protocol below every entry.

     Available options:

     -m M   Limit  memory  used  by the conversation engine to M kilobytes. When
	    the amount of allocated memory gets beyond the set limit,  a  number
	    of least active conversation is dropped. DO NOT trust this option.

     -f F   Drop F conversations after a memory overlimit. Default: 4000.

     -r     Output resource usage statistics (CPU, memory) before every report.

     -t     Use tabs instead of spaces to separate columns.

     -v     Increase  verbosity  level. This will print the guessed conversation
	    protocol below every printed conversation entry. Again, please  keep
	    on mind that the stream analyzer feature is highly experimental, and
	    it	still lacks ability to recognize many common protocols. Only the
	    basic ones (HTTP, FTP, FTP Data, POP3, SMTP) are supported for  now.
	    The  remaining  streams  are  classified as "Unknown" and "Unidenti-
	    fied".

     -n N   Node-driven reports. Print a list of N most/least active nodes (and,
	    optionally, conversations associated with them)

     -s N   Stream-driven reports. Print a list of N most/least active streams.

     -p N   Protocol-driven reports. Output a list of N top protocols.

     -b     Brief output. Supress the conversation lists - valid only  for  node
	    and protocol driven reports.

     Sorting options:

     -R     Consider  received	data  counters. Makes sense only for node-driven
	    reports. This is the default.

     -S     Consider sent data counters. As above, only for node-driven reports.

     -M     Consider momentary counters (default).

     -O     Consider overall counters.

     -B     Consider byte counters (default).

     -P     Consider packet counters.

     -D     Descending sort - the most active hosts/nodes/protocols first.  This
	    is the default.

     -A     Ascending sort - the least active hosts/nodes/protocols first.

STRING EXTRACTING MODE
     rate [...] -E -h

     rate [...] -E [-o <output format string>] [-i] [-e] <pattern>

     This is a "bonus" mode - it has nothing to do with traffic analysis. Unlike
     other  operation  modes, this one does not generate reports. It is designed
     for extracting strings from packets - whenever a  matching  packet  occurs,
     the extracted string is printed to stdout, regardless of the report genera-
     tion policy.

     pattern  is a regular expression to be matched. Parts of the expression en-
     cosed in escaped braces \( ... \) are printed to standard output, in  order
     they  appear  in  the expression if a packet matches the pattern. If the -o
     (output format) option was specified, the output format string  is  printed
     instead, with \1 being substituted with the first subexpression in pattern,
     \2 with the second, etc. The whole thing works much like sed 's///'. A typ-
     ical  application	would  be  investigating  web pages currently visited by
     users:

     # rate -f 'dst port 80' -E -o  'Host:  \2	Browser:  \1'  -ie  'User-Agent:
     \([^\r\n]+\)\r\n.*Host: \([^\r\n]+\)\r\n'

     The -i option enables printing source and destination addresses before each
     set of extracted strings.	As you can see, it is possible to use \n, \r, \t
     and \x in pattern, just like in the case of the -x generic option.

EXAMPLES
     To determine overall traffic on eth3:

     # rate -i eth3 -R

     To estimate bandwidth consumed by WWW traffic on ppp0, bit units:

     # rate -i ppp0 -f 'port 80' -Rb

     To print top 20 nodes from 10.0.0.0/8 that are receiving the highest number
     of  bytes (including transfers between hosts inside the 10.0.0.0/8 network)
     every 5 seconds:

     # rate -i eth0 -r 5 -Aa 20 -lc 10.0.0.0/8

     Same as above, but w/color output and screen clearing:

     # rate -i eth0 -r 5 -w -c -Aa 20 -lc 10.0.0.0/8

     Show 10 nodes from 10.0.0.0/8 and 192.168.0.0/16 that generated the largest
     overall number of packets, generate reports on a  keypress  (RETURN),  ANSI
     color output:

     # rate -i eth0 -ck -Ac 10.0.0.0/8 -c 192.168.0.0/16 -a 10 -OPT

     Estimate  ICMP  traffic  exchanged with the 10.0.0.0/8 subnet, wait for SI-
     GUSR1, then dump the counters for each host in  192.168.0.0/24  to  a  file
     named FILE, then quit.

     # rate -i eth1 -f 'icmp and net 10.0.0.0/8' -q 1 -gl -A -c 192.168.0.0/24
     -d > FILE

     Show  most active (considering transferred bytes) conversations detected on
     eth3, color output  on  keypress;	save  the  option  set	under  the  name
     'streams':

     # rate -S streams -i eth3 -ckTrs 25 -MB

     Recall the 'streams' operation mode:

     # rate -L streams

     On  a keypress, show a list of 3 nodes that have sent the highest amount of
     packets since the application started; color output:

     # rate -i eth3 -ckTrvn 3 -SOP

     Show currently visited web pages:

     # rate -f 'dst port 80' -E -o 'Host: \2 Browser: \1' -ie 'User-Agent:
     \([^\r\n]+\)\r\n.*Host: \([^\r\n]+\)\r\n'

     View addresses e-mails are being sent from:

     # rate -i eth1 -f 'dst port 25' -E -ie 'MAIL FROM: \([^\r\n]+\)'

BUGS AND LIMITATIONS
     The TRAFFIC ANALYZER (-T) operation mode is experimental. It consumes large
     amounts of system resources. Memory leaks in code that provides  this  fea-
     ture are possible.

     The commandline options are a bit complicated, but it seems it's impossible
     to do anything about that.

SEE ALSO
     tcpdump(1), regex(7), pcap(3), bpf(4)

AUTHOR
     Mateusz Golicz <mteg@jaszczur.org>

     Feel  free  to  send comments, suggestions, bug reports, etc. The author is
     not a native english speaker, and is aware of the fact that his english  is
     far  from	perfect.  Because of that, reports on grammar or vocabulary mis-
     takes in this manual are also welcome.

     The asynchronous DNS resolver part was  taken  from  mtr  -  a  very  handy
     traceroute replacement by Matt Kimball.

LICENSE
     Copyright 2003 Mateusz Golicz. All rights reserved.

     This program is free software; you can redistribute it and/or modify it un-
     der the terms of the GNU General Public License, Version 2, as published by
     the  Free	Software  Foundation. A copy of this license is distributed with
     this software in the file "COPYING".

     This program is distributed in the hope that it will be useful, but WITHOUT
     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or  FIT-
     NESS FOR A PARTICULAR PURPOSE. Read the file "COPYING" for more details.

				 11-August-2003 			 rate(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=rate&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help