CarrierIn - a FlowScan module for reporting on carrier or ISP input traffic
$ flowscan CarrierIn
or in flowscan.cf:
ReportClasses CarrierIn
CarrierIn is a general flowscan report for reporting on flows of input traffic for a carrier or ISP. It does this by processing flows reported by one or more routers at the network border. The carrier is thought to have an Autonomous System (AS) and BGP protocol running on the Netflow exporting routers.
CarrierIn relies on the fact that NetFlow is turned on at inbound interfaces only.
CarrierIn is based on CampusIO.pm written by Dave Plonka.
flowscan
will run the CarrierIn report if you configure this in
your flowscan.cf:
ReportClasses CarrierIn
The difference to Dave Plonka's CampusIO.pm is as follows:
CarrierIn's configuration file is CarrierIn.cf. This configuration file is located in the directory in which the flowscan script resides.
Configuration directives removed from CampusIO.pm:
New configuration directives are:
The CarrierIn configuration directives include:
# OutputDir /var/local/flows/graphs OutputDir graphs
# SubnetFiles our_subnets.boulder SubnetFiles bin/our_subnets.boulder
Each file contains network definitions in Boulder format. For each subnet you can specify optional name and level. The name is used as the symbolic representation of this subnet and will be used for RRD database file names.
Example:
SUBNET=195.2.0.0/16 NAME=whole_62_2 LEVEL=0 = SUBNET=195.2.20.0/22 NAME=my_favorite_customer LEVEL=1 = SUBNET=192.2.120.0/21 NAME=dialin_pool LEVEL=1 = SUBNET=192.2.128.0/20 NAME=dialin_pool LEVEL=1 =
You need to specify levels if you want to collect statistics on nested subnets, like in the eample above. Each level consists of a separate Patricia tree, thus allowing for nested counters. If the level is not specified, the subnet is put into Level 0.
Several subnets can have the same names. In such case, they will have common counters. This is useful when you have non-contiguous address pools for some common purposes.
However, if you need the collected data for raw traffic overview only, this option might be useful for multi-gigabit Internet upstream.
# TCPServices ftp-data, ftp, smtp, nntp, http, 7070, 554 TCPServices ftp-data, ftp, smtp, nntp, http, 7070, 554
# UDPServices domain, snmp, snmp-trap
# Protocols icmp, tcp, udp Protocols icmp, tcp, udp
# source_AS:destination_AS, e.g.: # ASPairs 0:0 ASPairs 0:0
Note that the effect of setting ASPairs will be different based on whether you specified ``peer-as'' or ``origin-as'' when you configured your Cisco. This option was intended to be used when ``peer-as'' is configured.
See the BGPDumpFile
directive for other AS-related features.
flowscan
more verbose with respect to messages
and warnings. Currently the values 1
and 2
are understood, the
higher value causing more messages to be produced.
E.g.:
# Verbose (OPTIONAL, non-zero = true) Verbose 1
HTML::Table
perl
module. TopN
is the number of entries to show in the tables that
will be generated in HTML top reports. E.g.:
# TopN (OPTIONAL) TopN 10
If you'd prefer to see hostnames rather than IP addresses in your top reports, use the ip2hostname script. E.g.:
$ ip2hostname -I *.*.*.*_*.html
strftime(3)
format specifiers in the
value, and it may also specify sub-directories. If not set, the prefix
defaults to the null string, which means that, every five minutes,
subsequent reports will overwrite the previous.
E.g.:
# Preserve one day of HTML reports using the time of day as the dir name: ReportPrefixFormat html/CarrierIn/%H:%M/
or:
# Preserve one month by using the day of month in the dir name (like sar(1)): ReportPrefixFormat html/CarrierIn/%d/%H:%M_
TopN
and ASNFile
it causes FlowScan to produce ``Top ASN'' reports
which show the ``top'' Autonomous Systems with which your site exchanges
traffic.
BGPDumpFile
requires the ParseBGPDump
perl module by Sean
McCreary, which is supplied with CAIDA's CoralReef Package:
http://www.caida.org/tools/measurement/coralreef/status.xml
Unfortunately, CoralReef is governed by a different license than FlowScan itself. The Copyright file says this:
Permission to use, copy, modify and distribute any part of this CoralReef software package for educational, research and non-profit purposes, without fee, and without a written agreement is hereby granted, provided that the above copyright notice, this paragraph and the following paragraphs appear in all copies. [...]
The CoralReef software package is developed by the CoralReef development team at the University of California, San Diego under the Cooperative Association for Internet Data Analysis (CAIDA) Program. Support for this effort is provided by the CAIDA grant NCR-9711092, and by CAIDA members.
After fetching the coral
release from:
http://www.caida.org/tools/measurement/coralreef/dists/coral-3.4.1-public.tar.gz
install ParseBGPDump.pm
in FlowScan's perl include path, such as in
the bin
sub-directory:
$ cd /tmp $ gunzip -c coral-3.4.1-public.tar.gz |tar x coral-3.4.1-public/./libsrc/misc-perl/ParseBGPDump.pm $ mv coral-3.4.1-public/./libsrc/misc-perl/ParseBGPDump.pm $PREFIX/bin/ParseBGPDump.pm
Also you must specify TopN
to be greater than zero, e.g. 10, and the
HTML::Table
perl module is required if you do so.
The BGPDumpFile
value is the name of a file containing the output of
show ip bgp
from a Cisco router, ideally from the router that is
exporting flows. If this option is used, and the specified file
exists, it will cause the ``originAS'' and ``pathAS'' reports to be
generated. E.g.:
TopN 10 BGPDumpFile etc/router.our.domain.bgp
One way to create the file itself, is to set up rsh access to your Cisco, e.g.:
ip rcmd rsh-enable ip rcmd remote-host username 10.10.42.69 username
Then do something like this:
$ cd $PREFIX $ mkdir etc $ echo show ip bgp >etc/router.our.domain.bgp # required by ParseBGPDump.pm $ time rsh router.our.domain "show ip bgp" >>etc/router.our.domain.bgp 65.65s real 0.01s user 0.05s system $ wc -l /tmp/router.our.domain.bgp 197883 /tmp/router.our.domain.bgp
Once flowscan
is up and running with BGPDumpFile
configured, it
will reload that file if its timestamp indicates that it has been
modified. This allows you to ``freshen'' the image of the routing table
without having to restart flowscan
itself.
Using the BGPDumpFile
option causes FlowScan
to use much more
memory than usual. This memory is used to store a Net::Patricia
trie containing a node for every prefix in the BGP routing table. For
instance, on my system it caused the FlowScan
process to grow to
over 50MB, compared to less than 10MB without BGPDumpFile
configured.
BGPDumpFile
. If specified, this directive will cause the AS names
rather than just their numbers to appear in the Top ASN HTML reports.
Its value should be the path to a file having the format of the file
downloaded from this URL:
ftp://ftp.arin.net/netinfo/asn.txt
E.g.:
TopN 10 BGPDumpFile etc/router.our.domain.bgp ASNfile etc/asn.txt
Once flowscan
is up and running with ASNFile
configured, it will
reload the file if its timestamp indicates that it has been modified.
This module provides no public methods. It is a report module meant
only for use by flowscan
. Please see the FlowScan
module
documentation for information on how to write a FlowScan report
module.
perl(1), FlowScan, CampusIO, SubNetIO, flowscan(1), Net::Patricia.
See CampusIO.pm bugs.
Dave Plonka <plonka@doit.wisc.edu> Stanislav Sinyagin <ssinyagin@yahoo.com>
Copyright (C) 1998-2001 Dave Plonka. Copyright (C) 2002 Cablecom GmbH
This program source is based on CampusIO.pm. It was developed by the order of Cablecom GmbH (www.cablecom.ch).
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
The version number is the module file RCS revision number ($Revision: 1.6 $) with the minor number printed right justified with leading zeroes to 3 decimal places. For instance, RCS revision 1.1 would yield a package version number of 1.001.
This is so that revision 1.10 (which is version 1.010), for example, will test greater than revision 1.2 (which is version 1.002) when you want to require a minimum version of this module.