Nprobe User'S Guide: Open Source Software and Hardware Netflow V5/V9 Probe
Nprobe User'S Guide: Open Source Software and Hardware Netflow V5/V9 Probe
Nprobe User'S Guide: Open Source Software and Hardware Netflow V5/V9 Probe
!
!
!
!
!
!
!
!
!
!
!
!
!
!
nProbe User’s Guide
Open Source Software and Hardware NetFlow v5/v9 Probe
!
!
!
!
!
!
!
!
!
!
!
!
!! !
!!
!!
! Version 6.16
April 2014
!!
© 2002-14
!
!
nProbe User’s Guide v.6.16
1.Table of Contents
!
1.Introduction ......................................................................................................................3
1.1. Main Features ......................................................................................................4
1.2. What’s New? ........................................................................................................4
2.Using nProbe...................................................................................................................6
2.1. Compiling nProbe Source Code ........................................................................6
2.2. Installing a Binary nProbe...................................................................................6
2.3. nProbe Command Line Options
................................................7
2.4. nProbe on Windows ..........................................................................................18
2.5. Licenses Installation ...........................................................................................19
2.6. Tuning nProbe Performance .............................................................................19
2.7. Using nProbe with ntopng ...............................................................................20
2.8. Frequently Asked Questions ............................................................................20
3. nProbe Plugins .............................................................................................................22
3.1. BGP Plugin .........................................................................................................22
3.2. DNS Plugin .........................................................................................................23
3.3. GTPv0 Plugin ......................................................................................................23
3.4. GTPv1 Plugin.......................................................................................................24
3.5. GTPv2 Plugin ......................................................................................................24
3.6. HTTP Plugin ........................................................................................................25
3.7. IMAP Plugin .......................................................................................................25
3.8. MySQL Plugin .....................................................................................................26
3.9. Oracle Plugin .....................................................................................................26
3.10. POP3 Plugin .......................................................................................................27
3.11. Radius Plugin .....................................................................................................27
3.12. RTP Plugin ...........................................................................................................27
3.13. SIP Plugin............................................................................................................28
3.14. SMTP Plugin .......................................................................................................28
3.15. NetFlow-Lite Plugin ............................................................................................28
4.Developing nProbe Plugins .........................................................................................29
5. References ....................................................................................................................34
5.1. Credits ................................................................................................................34
6.Appendix A: BPF Packet Filtering Expressions ...........................................................35
6.1. Examples ...........................................................................................................38
7.Appendix B: Flow Information Elements .....................................................................40
8.Appendix C: nProbe Usage Modes ............................................................................44
9.Appendix D: nProbe License .......................................................................................45
10.Appendix E: EULA ........................................................................................................45
!2
nProbe User’s Guide v.6.16
!!
!!
!!
2.Introduction
!
Traffic measurements are necessary to operate all types of IP networks. Networks admin
need a detailed view of network traffic for security, accounting and management reasons.
The compositions of the traffic have to be analyzed accurately when estimating traffic
metrics or when finding network problems. All of these measurements have to be made by
analyzing all the packets flowing to the central points in the network (such as router and/or
switches). The analysis could be done on the fly or by logging all the packets and than post-
processing them. But with the increasing network capacities and traffic volumes this kind of
approach is not very efficient. Instead similar packets (packets with a set of common
properties) can be grouped together composing flows. As an example, a flow can be
composed of all flowing packets that share the same source and destination address so a
flow can be derived using only some fields of a network packet. This way, similar types of
traffic can be stored in a more compact format without loosing the information we are
interested in. This information can be aggregated in a flow datagram and exported to a
collector able to report network metrics in a user-friendly format.
When collected this information provides a detailed view of the network traffic.
!
Precise network metric measurements is a challenging task so a lot of work has been done
in this filed. In commercial environments, NetFlow is probably the de-facto standard for
network traffic accounting and billing. NetFlow is a technology originally created by Cisco in
1996 and is now standardized as Internet Protocol Flow Information eXport (IPFIX — RFC
3917). NetFlow is based on the probe/collector paradigm. The probe, usually part of
network appliance such as a router or a switch, is deployed on the measured network
segment, it sends traffic information in NetFlow format towards a central collector.
!
nProbe is a software NetFlow v5/v9/IPFIX probe able to collect, analyze and export network
traffic reports using the standard Cisco NetFlow v5/v9/IPFIX format. It is available for most
of the OSs on the market (Windows, BSD, Linux, MacOSX). When installed on a PC, nProbe
turn it into a Network-aware monitoring appliance.
!
This manual aims at describing how to use nProbe, deploy it in networks, and how to
develop plugins for extending it functionalities.
!
!!
!3
nProbe User’s Guide v.6.16
!5
nProbe User’s Guide v.6.16
3.Using nProbe
The nProbe probe has to be activated on a PC from which it is possible to see/
capture all the traffic you are interested in. For this reason, in case of switched
networks, it is necessary to either mirror traffic (VLAN or port mirror) or place the
probe on a location (e.g. by the border gateway) where most of the traffic flows.
!
When activated, nProbe will collect traffic data and emit NetFlow v4/v5/v9/IPFIX flows
towards the specified collector. A set of packets with the same (src ip & port, dst ip & port,
protocol #) is called flow (note that some protocols such as ICMP have no concept of ports).
Every flow, even a very long-standing ISO CD image download, has a limited lifetime; this is
because the flow collector should periodically receive flow chunks for accounting traffic
precisely.
!
In the following sections, we discuss all the command line options and how to efficiently
configure nProbe to run on your network.
!
3.1. Compiling nProbe Source Code
!
The nProbe source code (if you have decided to compile nProbe from source
instead of using a binary package, on Unix it can be compiled as follows:
!
cd <nprobe source code directory>
./autogen.sh
make
!
On Windows the compilation is much more complicated as .NET compiler is needed
and all the code dependencies must be satisfied. For this reason ntop releases a
pre-built nProbe binary for the windows platform. Please note that the nProbe
source code compiles both on Unix and Windows.
!
3.2. Installing a Binary nProbe
!
The windows version of nProbe comes in a standard installer package that can be
installed using the wizard. On Linux, we pre-build two packages for the two most
popular platforms Ubuntu Server LTE x64 and CentOS x64. We always build binaries
for the latest server versions. Such packages can be installed from:
• http://apt.ntop.org (Ubuntu)
• http://rpm.ntop.org (CentOS)
!
Often the above packages can be installed on “sister” distributions such as Debian
and RedHat/Fedora, although we cannot guarantee that they will work or install
properly.
!
Once the installation is completed it is necessary to create the nProbe license
otherwise the probe will operate in demo mode.
!
!
!6
nProbe User’s Guide v.6.16
!
Welcome to nprobe v.6.16.140318 ($Revision: 4095 $) for x86_64-apple-darwin13.1.0
!
Copyright 2002-14 ntop.org
!
SystemID: 1FE719B8-0B82-5C67-9AE6-990B5030479F
WARNING: Invalid nProbe license (/etc/nprobe.license) [License mismatch error]
Usage:
nprobe -n <host:port|none> [-i <interface|dump file>] [-t <lifetime timeout>]
[-d <idle timeout>] [-l <queue timeout>] [-s <snaplen>]
[-p <aggregation>] [-f <filter>] [-a] [-b <level>] [-G] [-O <# threads>]
[-P <path>] [-F <dump timeout>] [-D <format>]
[-u <in dev idx>] [-Q <out dev idx>]
[-I <probe name>] [-v] [-w <hash size>] [-e <flow delay>] [-B <packet count>]
[-z <min flow size>] [-M <max num flows>]
[-x <payload policy>] [-E <engine>] [-C <flow lock file>]
[-m <min # flows>] [-R <cmd>]
[-S <sample rate>] [-A <AS list>] [-g <PID file>]
[-T <flow template>] [-U <flow template id>]
[-o <v9 templ. export policy>] [-L <local nets>] [-c] [-r]
[-1 <interface nets>] [-2 <number>] [-3 <port>] [-4] [-5 <port>] [-6]
!!
[-9 <path>] [--black-list <networks>] [--pcap-file-list <filename>]
[-N <biflows export policy>] [--dont-drop-privileges]
!7
nProbe User’s Guide v.6.16
!8
nProbe User’s Guide v.6.16
!9
nProbe User’s Guide v.6.16
!
--dump-plugin-families | Dump all available plugin families
!!
!!
-n: collector addresses
This specifies the NetFlow collectors addresses to which nProbe will send the flows. If
more than one is specified, they need to be separated with a comma or the —n flag can
be repeated several times (e.g. -n 172.22.3.4:33,172.22.3.4:34 and -n 172.22.3.4:33 —n
172.22.3.4:34 are equivalent). When multiple collectors are defined, you can control the
way flows are exported using the —a option (see below); if on a collector address the
destination port is omitted, flows are sent to 2055 port and whereas if all the option is
not specified, by default, flows are sent to the loop back interface (127.0.0.1) on port
2055. If this parameter is used, nProbe exports flows towards collector running at
127.0.0.1:2055. By default the UDP protocol is used but also TCP and SCTP (Linux only
when nProbe is compiled with SCTP support and the kernel supports it). In this case you
can specify the collector address as udp://<host>:<port>, tcp://<host>:<port>, and
sctp://<host>:<port>,
-i: interface name
It specifies the interface from which packets are captured. If -i is not used, nProbe will
use the default interface (if any). In case a user needs to activate nProbe on two
different interfaces, then he/she needs to activate multiple nProbe instances once per
interface. For debugging purposes it is possible to pass nProbe a .pcap file from which
packets will be read. If nProbe is compiled and activated with PF_RING support, you can
specify multiple interfaces from which packets are captured. Example “-i eth0,eth1”
-t: maximum flow lifetime
Regardless of the flow duration, a flow that has been active for more that the specified
maximum lifetime is considered expired and it will be emitted. Further packets
belonging to the same flow will be accounted on a new flow.
-d: maximum flow idle lifetime
A flow is over when the last packet received is older that the maximum flow idle
lifetime. This means that whenever applicable, (e.g. SNMP walk) UDP flows will not be
accounted on 1 packet/1 flow basis, but on one global flow that accounts all the traffic.
This has a benefit on the total number of generated flows and on the overall collector
performance.
-l: maximum queue timeout
It specifies the maximum amount of time that a flow can be queued waiting to be
exported. Use this option in order to try to pack several flows into fewer packets, but at
the same time have an upper bound timeout for queuing flows into the probe.
-s: snaplen
This flag specifies the portion of the packet (also called snaplen) that will be captured by
nProbe. By default nprobe sets the snaplen automatically according to its configuration,
but you can override its value using thia flag.
!10
nProbe User’s Guide v.6.16
!11
nProbe User’s Guide v.6.16
Flows stored on disks can be stored in two formats: text with user-specified format or
SQLite format (availability depends on the platform and if nProbe has been compiled
with it). Using flow SQLite format (-D d) can significantly reduce the size of stored files,
although all the collectors might not support this format. Text flows (-D t) are the safest
setting if you want to use a standard collector able to read flows dump on disk. You can
also export core flow fields (-D B) in binary format for post-processing by binary
applications. Note that this flag has no effect unless —P is used.
-u: input device index
The NetFlow specification contains a numeric index in order to identify flows coming
from different interfaces of the same probe . As multiple nProbe instances can be
started on the same host but on different devices, the collector to divide flows according
to interface number can use this flag. If —u is not used, then nprobe will use 0 as
interface index, instead of -1 is used the last two bytes of the mac address of the flow
sender will be used as index.
-Q: output device index
Similar to —u but for the output interface.
--vlanid-as-iface-idx <mode: inner | outer>
nProbe can use the VLAN tag as interface identifier. Using this flag you enable this
feature. As VLAN tags can be stacked you need to specify if the inner or outer tag will
be used for the interface identifier.
--discard-unknown-flows <mode:0 | 1 | 2>
nProbe includes nDPI support for analyzing packet contents in order to detect
application protocol. The mode value can be used to:
• 0: Export all know (i.e. those whose application protocol has been detected) and
unknown (i.e. the application protocol is unknown)
• 1: Export only know flows, discarding unknown flows.
• 2:Export only unknown flows, discarding known flows.
-v: print version
This flag is used to print the nProbe version number and date.
-C: flow export lock
This is a simple way to implement high-availability. Start two probes capturing the
same data. The master probe emit flows, the slave probe is started with —C <path>. As
long as <path> exists, the slave works but no flow is emitted. If the <path> file is
deleted (e.g. using an external program for controlling the master/slave such as
heartbeat) the slave starts emitting flows. If the file is restored, the slave is silent again.
-h: print help
Prints the nProbe help.
--quick-mode
nProbe is computing many statistics, but if you care just about basic netflow (i.e. V5 or
V9/IPFIX flows with standard fields) you can use this flag to expedite operations telling
nProbe to avoid doing many unnecessary things (e.g. handle L2 traffic). Use this option
if you care about speed.
--dont-nest-dump-dirs
!12
nProbe User’s Guide v.6.16
nProbe dumps data on disk (e.g. with -P) using a nested directory. In essence the base
directory will be partitioned in sub-directories with <year>/<month>/<day>/<hour>/
<min> structure. use this option is you want nProbe to dump all data in the base
directory without creating this nested directory tree.
-I: log to syslog <probe name>
nProbe logs on stdout unless the —g flag (see above) is used. If the syslog needs to be
used instead of a file, this flag instruments nProbe to log on it using the specified name
(this is useful when multiple nProbe instances are active on the same host). Please note
that —g is ignored if —I is used, and this option is not available on nProbe for Win32.
-w: size of the hash that stores the flows
The default size is 131072 and it should be enough for most of networks. In case flows
are not emitted often and with strong traffic conditions it would be necessary to
increase the hash. See later in this manual for knowing more about nProbe tuning.
-W: Discard IPv6 traffic
Use this flag if you want nProbe not to account IPv6 traffic.
-e: flow export delay
Some collectors cannot keep up with nProbe export speed. This flag allows flows to be
slow down by adding a short delay (specified in ms) between two consecutive exports.
The maximum allowed delay is 1000 ms.
-B: packet count delay
It specified how many flow packets need to be sent before —e is applied,
-z: minimum TCP flow size
Peer-to-peer applications, attacks or misconfigured applications often generate a lot of
tiny TCP flows that can cause significant load on the collector side. As most collector
setups often discarded those flows, it is possible to instrument nProbe via the —z flag
not to emit such flows. Note that the —z flag affects only the TCP protocol (i.e. UDP, ICMP
and other protocols are not affected).
-M: maximum number of active flows
It is used to limit the maximum number of concurrent flows that the probe can sustain.
This is useful for preventing the probe from creating as many flows as needed and
hence to take over all the available resources.
-E: netflow engine
Specify the netflow engineType:engineId into the generated flows.
-m: minimum number of flows per packet
In order to minimize the number of emitted packets containing flows, it is possible to
specify the minimum number of flows that necessarily need to be contained in a
packet. This means that the packet is not emitted until the specified number of flows is
reached.
-q: flow sender address
This option is used to specify the address and port from which the packets containing
flows are coming from. Usually the operating systems prevents people from sending
packets from addresses different from those assigned to the network interfaces.
!13
nProbe User’s Guide v.6.16
!14
nProbe User’s Guide v.6.16
When this option is used (-L must be specified before —r), all the traffic that goes
towards the local networks is considered incoming, all the rest is outgoing. This has
effect on the —u/-Q that are then forced with —r.
--if-networks: specify a mapping between MAC address/Interface index
Flags -u and -Q are used to specify the SNMP interface identifiers for emitted flows. In
mirrored environments, it is possible to simulated a switched environment by playing
with MAC addresses. This option allows users to bind a MAC or IP address to a
specified interfaceId.. The syntax of --if-networks is <MAC|IP/mask>@<interfaceId>
where multiple entries can be separated by a comma (,). Example: --if-networks
"AA:BB:CC:DD:EE:FF@3,192.168.0.0/24@2" or --if-networks @<filename> where
<filename> is a file path containing the networks specified using the above format.
--count: debug only
Let the probe capture only up to the specified number of packets.
--collector-port: specifies the NetFlow collector port
It is now possible to use the nProbe as NetFlow proxy. With --collector-port we can se
the incoming NetFlow port on which flows are received instead of sniffing packets.
nProbe is able to convert flows from various versions. For instance “nprobe --collector-
port 2055 —i 192.168.0.1:2056 —V 10” converts each flow received on port 2055 to IPFIX
and sends them to 192.168.0.1:2056.
--tunnel:
Let the probe decode tunneled traffic (e.g. GTP or GRE traffic) and thus extract traffic
information from such traffic rather than from the external envelope.
--no-promisc:
With this option nProbe does not use promiscuous mode to capture packets.
--smart-udp-frags:
Ignore UDP fragmented packets with fragment offset greater than zero, and compute
the fragmented packet length on the initial fragment header. This flag might lead to
inaccuracy in measurement but it speeds us operations with fragmented traffic.
--ipsec-auth-data-len
Length of the authentication data of IPSec in tunnel mode. If not set, IPSec will not be
decoded but just accounted.
--dump-stats: dump some flow statistics on file
Periodically dump NetFlow statistics on the specified file. Note that when using nProbe
over PF_RING, nProbe dumps statistics on /proc/net/pf_ring/stats/<nprobe stats file>.
--black-list
With this option you can specify a list of networks or hosts from which all the incoming
packets will be discarded by the probe. The accepted notation can be CIDR format or
the classical network/netmask format.
--pcap-file-list <file>
The specified file path contains a list of pcap files to be read in sequence by nProbe.
Use this option when you want nProbe to read a list of pcap files (e.g. when generated
using tcpdump).
!15
nProbe User’s Guide v.6.16
--biflows-export-policy <policy>
Bi-directional flows are such when there is traffic in both direction of the flow (i.e.
source->dest and dest->source). As mono-directional flows might indicate suspicious
activities, this flag is used to determine the export policy:
• 0: Export all know (i.e. mono and bi-directional flows)
• 1: Export only bi-directional flows, discarding mono-directional flows.
• 2: Export only mono-directional flows, discarding bi-directional flows.
--csv-separator <separator>
Override the default ‘|’ separator in dumps with the specified one.
--dont-drop-privileges
Do not drop root privileges to user ‘nobody’ when this option is specified. See al --
unprivileged-user later int this manual.
--bi-directional
Force flows to be bi-directional. This option is not supported by NetFlow V5 that by
nature supports only mono-directional flows
--account-l2
NetFlow accounts IP traffic only, not counting layer 2 headers. Using this option the layer
2 headers are also accounted in flow traffic statistics.
--dump-metadata <file>
Dump metadata information into the specified file and quit. This option is useful when
users want to know the type of each information element exported by nProbe so that
(for instance) they can properly import into a database.
--event-log <file>
Dump relevant activities (e.g. nProbe start/stop or packet drop) onto the specified file.
--enable-throughput-stats
When -P is used, with this option is also possible to generate throughput information.
The file has the following format: <epoch> <bytes> <packets>. Each line is printed
every second and it contains the number of bytes and packets observed within minute.
--ndpi-proto-ports <file>
Read the nDPI custom protocol and ports configuration from the specified file. Please
refer to the nDPI manual for further information about the format of this file.
--disable-l7-protocol-guess
When nDPI is unable to detect a protocol, nProbe uses the port information to guess the
protocol. This flag prevents nProbe from doing that, so protocols are detected only by
nDPI without relying on default ports.
--db-engine <database engine>
In case flows are dumped on a MySQL database (see later on this manual) the default
database engine used by nProbe is MyISAM. With this option you can use another
engine (e.g. InnoDB).
--unprivileged-user <name>
!16
nProbe User’s Guide v.6.16
When nprobe drops privileges (unless --dont-drop-privileges is used) the user nobody
is used. It is possible to use another user by using this option.
--disable-cache
nProbe implements a flow cache for merging packets belonging to the same flow. In
proxy/collector mode, nProbe can disable this feature so that incoming flows are not
put in cache but immediately exported.
--redis <host>[:<port>]
The redis database (when nProbe is compiled with it) is used to implement a data
cache and for aggregating flow information. This option specifies the host (and
optionally the port) where redis is listening. nProbe opens several connections to redis
(not just one) in order to maximize performance.
--ucloud
This option enables the micro-cloud concept. Please refer to http://www.ntop.org/
nprobe/monitoring-on-the-microcloud/ for more information.
--show-system-id
Shown the systemId where nProbe is running (for binary nProbe’s only).
--check-license
Checks if the configured license is valid (for binary nProbe’s only).
--dump-plugin-families
Dump installed plugin family names.
!
As some people prefer to have a configuration file containing the options that otherwise
would be specified on the command line, it is also possible to start nProbe as follows:
nprobe <configuration file path>
!
where the configuration file contains the same options otherwise specified on the
command line. The only difference between the command line and the configuration file is
that different options need to be specified on different lines. For instance:
! nprobe —n 127.0.0.1:2055 —i en0 —a -p
!
is the same as:
nprobe /etc/nprobe.conf
!
where /etc/nprobe.conf contains the following lines:
!
!
# cat /etc/nprobe.conf
-n=127.0.0.1:2055
-i=en0
-a=
-p=
!
Note that flags with no parameter associated (e.g. —a) also need to have ‘=’ specified.
Any standard NetFlow collector (e.g. ntop) can be used to analyze the flows generated by
nProbe. When used with ntop, the nProbe can act as a remote and light traffic collector and
!17
nProbe User’s Guide v.6.16
ntop as a central network monitoring console. See chapter 3 for further information about
this topic.
!
3.4. nProbe on Windows
!
nProbe is activated as service or application (i.e. you can start it from cmd.exe). The nProbe
installer registers the service and creates an entry on the Start menu. Example:
!
E:\ntop\Source\nprobe\Debug>nprobe /h
Available options:
/i [nprobe options] - Install nprobe as service
/c [nprobe options] - Run nprobe on a console
!
/r
Example:
- Deinstall the service
!
Remove the nprobe service: 'nprobe /r'
Notes:
1. Type 'nprobe /c -h' to see all options
2. In order to reinstall a service with new options it is necessary to first remove the
service, then add it again with the new options.
3. Services are started/stopped using the Services control panel item.
If nProbe is started on the console, the /c flag needs to be used (e.g. nprobe /c —n
127.0.0.1:2055). If used as service, the command line options need to be specified at service
registration and can be modified only removing and adding the service. The nProbe
installer registers nProbe as a service with the default options. If you need to change the
nProbe setup, you need to do as follows:
!
nprobe /r Remove the service
nprobe /i <put your options here> Install the service with
Services are started and stopped using the Services application part of the Windows
administrative tools.
As network interfaces on Windows can have long names, a numeric index is associated to
the interface in order to ease the nProbe configuration. The association interface name and
!
index is shows typing the ‘nprobe /c —h’
C:\ntop\nprobe\Debug>nprobe.exe/c -h
!
Running nProbe for Win32.
!
Copyright 2002-07 by Luca Deri <deri@ntop.org>
[…]
Available interfaces:
[index=0] 'Adapter for generic dialup and VPN capture'
!
[…]
!18
nProbe User’s Guide v.6.16
For instance, in the above example the index 1 is associated to the interface Realtek 8139-
series PCI NIC, hence in order to select this interface nprobe needs to be started with —i 1
option.
!
3.5. Licenses Installation
Binary nProbe instances require a per-server license that is released according to the EULA
(End User License Agreement) as specified in the appendix. Each license is perpetual (i.e. it
does not expire) and it allows to install updates for one year since purchase/license issue.
This means that a license generated on 1/1/2013 will be able to activate new versions of the
software until 1/1/2014. If you want to install new versions of the software release after that
date, you need to purchase a new license or avoid further updating the software. For
source-based nProbes you still have to obey to the nProbe license listed in appendix.
!
nProbe licenses are generated using the orderId and email you provided when the license
has been purchased on http://shop.ntop.org/. The licenses are generated at http://
www.nmon.net/mklicense/.
!!
3.6. Tuning nProbe Performance
!
As nProbe can be deployed on very different environments, it is necessary to tune it
according to the network where is active. In order to achieve a good probe setup, it is
necessary to understand how nProbe is working internally. Each captured packet is
analyzed, associated to a flow, and stored onto a hash. Periodically, the hash is analyzed
and expired flows are emitted1. The hash size is static (-w flag)2 as this allows nProbe to:
• Allocate all the needed memory at startup (this is compulsory on embedded
systems where memory is limited and it is necessary to know at startup whether a
certain application can operate with the available resources).
• Avoid exhausting all the available memory in case of attacks that can produce
several flows.
Selecting the hash size is a matter of trade-off between efficiency (an efficient hash is at
least 1/3 empty) and memory usage. This statement does not mean that a huge hash is
always the solution as the flow export process can be slower (and more CPU cycles are
needed) as a large hash needs to be explored.
!
On the other hand, the hash size is just a part of the problem. In fact, the hash fill
percentage can be also controlled by other factors such as:
• Reducing the flow lifetime (-t)
• Reducing the maximum flow idle time (-d)
• Increasing how often the hash is walked searching expired flows (-s)
nProbe allows users to ease the tuning process by printing the status of internal hashes
using the —b flag. Users who experience severe nProbe performance problems, packet loss
1 It is worth to remark that packets are captured while nProbe performs flow export (i.e. packet capture is not stopped during
flow export).
2 Note that the basic hash has a static size specified by –w that can grow as needed according to traffic conditions.
!19
nProbe User’s Guide v.6.16
or high CPU usage, should start nProbe with —b in order to find out whether their probe
setup is optimal.
!!
3.7. Using nProbe with ntopng
!
On the Internet there are several NetFlow collectors (see Reference paragraph) that can be
used to handle flows generated by nProbe. Among them ntopng is included. This section
explains how to configure ntopng to take advantage of nProbe.
Packet Capture
n
ZMQ
nProbe
Flow Collection
(sFlow, NetFlow, IPFIX)
!20
nProbe User’s Guide v.6.16
!21
nProbe User’s Guide v.6.16
4. nProbe Plugins
!
nProbe has been designed as an engine that processes packets and compute basic
statistics, and plugins that extend the core with additional capabilities. Each plugin dissects
a specific traffic (e.g. SMTP email traffic), but you can enable the use of multiple plugins
simultaneously. nProbe based on the template configuration (-T) will selectively enable
plugins and define as many templates as necessary. Their number depends on the plugins
enabled and on the fact that you might enable IPv4 and/or IPv6 traffic support.
!
The following sections cover the configuration and information elements provided by each
individual plugin. Most plugins are available also in source format, but sometimes due to
license restrictions (e.g. the plugin has been sponsored by a company that does not want
others to access the source code) we are unable to release all plugins in source format.
!
4.1. BGP Plugin
This plugin is used in combination with the bgp_probe_client.pl script for receiving BGP
information and updates from a router. In order to use it you need to:
• Edit the bgp_probe_client.pl file and configure the IP address of the machine where the
script is listening ($local_ip) and its AS ($local_as), the IP address of the router ($remote_ip)
and its AS ($remote_as). Of course you better define a private AS for doing all this.
!
# BGP
my $local_ip = '192.168.48.2';
my $local_as = 65498;
my $remote_ip = '192.168.48.1';
my $remote_as = 2597;
!
# nProbe
my $nprobe_ip = '127.0.0.1';
my $nprobe_port = 4096;
!
• Start the script and configure the router to connect to the script (that acts as a server). The
router will initially send its BGP table, and then periodically send BGP updates.
• Start nProbe on the same machine where the script is active with the option --bgp-port
<port> where <port> is set to the value of $nprobe_port.
!
With this plugin nProbe will emit AS information with exported flows using the information
exported by the router via BGP. If the plugin is not active, nProbe will use information from
GeoIP if configured.
!
This plugin defines the following information elements used to export not just the AS to
which flows belong to, but also the whole AS path.
!
%SRC_AS_PATH_1 Src AS path position 1
%SRC_AS_PATH_2 Src AS path position 2
%SRC_AS_PATH_3 Src AS path position 3
%SRC_AS_PATH_4 Src AS path position 4
%SRC_AS_PATH_5 Src AS path position 5
%SRC_AS_PATH_6 Src AS path position 6
%SRC_AS_PATH_7 Src AS path position 7
!22
nProbe User’s Guide v.6.16
!23
nProbe User’s Guide v.6.16
!
4.4. GTPv1 Plugin
This plugin dissects GTPv1 signaling information (GTP-C) and saves it in dump files as well
export the information via NetFlow/IPFIX using the following information elements.
!
%GTPV1_REQ_MSG_TYPE GTPv1 Request Msg Type
%GTPV1_RSP_MSG_TYPE GTPv1 Response Msg Type
%GTPV1_C2S_TEID_DATA GTPv1 Client->Server TunnelId Data
%GTPV1_C2S_TEID_CTRL GTPv1 Client->Server TunnelId Control
%GTPV1_S2C_TEID_DATA GTPv1 Server->Client TunnelId Data
%GTPV1_S2C_TEID_CTRL GTPv1 Server->Client TunnelId Control
%GTPV1_END_USER_IP GTPv1 End User IP Address
%GTPV1_END_USER_IMSI GTPv1 End User IMSI
%GTPV1_END_USER_MSISDN GTPv1 End User MSISDN
%GTPV1_END_USER_IMEI GTPv1 End User IMEI
%GTPV1_APN_NAME GTPv1 APN Name
%GTPV1_RAI_MCC GTPv1 RAI Mobile Country Code
%GTPV1_RAI_MNC GTPv1 RAI Mobile Network Code
%GTPV1_RAI_LAC GTPv1 RAI Location Area Code
%GTPV1_RAI_RAC GTPv1 RAI Routing Area Code
%GTPV1_ULI_MCC GTPv1 ULI Mobile Country Code
%GTPV1_ULI_MNC GTPv1 ULI Mobile Network Code
%GTPV1_ULI_CELL_LAC GTPv1 ULI Cell Location Area Code
%GTPV1_ULI_CELL_CI GTPv1 ULI Cell CI
%GTPV1_ULI_SAC GTPv1 ULI SAC
%GTPV1_RESPONSE_CAUSE GTPv1 Cause of Operation
!
The plugin supports the following command line options that are used to specify where the
(optional) GTP log file is saved. As previously described for -P, dumps are nested in
directories. It is possible to instruct nProbe to execute a command when a directory (not a
log file) if fully dumped (i.e. nProbe has moved to the next directory in time order).
!
--gtpv1-dump-dir <dump dir> Directory where GTP logs will be dumped
--gtpv1-exec-cmd <cmd> Command executed whenever a directory has been dumped
!
Please note that GTP-U is not handled by this plugin but rather by the nProbe core when
the --tunnel option is used.
!
4.5. GTPv2 Plugin
This plugin dissects GTPv2 signaling information (GTP-C) and saves it in dump files as well
export the information via NetFlow/IPFIX using the following information elements.
!
%GTPV2_REQ_MSG_TYPE GTPv2 Request Msg Type
%GTPV2_RSP_MSG_TYPE GTPv2 Response Msg Type
%GTPV2_C2S_S1U_GTPU_TEID GTPv2 Client->Svr S1U GTPU TEID
%GTPV2_C2S_S1U_GTPU_IP GTPv2 Client->Svr S1U GTPU IP
%GTPV2_S2C_S1U_GTPU_TEID GTPv2 Srv->Client S1U GTPU TEID
%GTPV2_S2C_S1U_GTPU_IP GTPv2 Srv->Client S1U GTPU IP
%GTPV2_END_USER_IMSI GTPv2 End User IMSI
%GTPV2_END_USER_MSISDN GTPv2 End User MSISDN
%GTPV2_APN_NAME GTPv2 APN Name
%GTPV2_ULI_MCC GTPv2 Mobile Country Code
%GTPV2_ULI_MNC GTPv2 Mobile Network Code
%GTPV2_ULI_CELL_TAC GTPv2 Tracking Area Code
%GTPV2_ULI_CELL_ID GTPv2 Cell Identifier
%GTPV2_RESPONSE_CAUSE GTPv2 Cause of Operation
!24
nProbe User’s Guide v.6.16
!
The plugin supports the following command line options that are used to specify where the
(optional) GTP log file is saved. As previously described for -P, dumps are nested in
directories. It is possible to instruct nProbe to execute a command when a directory (not a
log file) if fully dumped (i.e. nProbe has moved to the next directory in time order).
!
--gtpv2-dump-dir <dump dir> Directory where GTP logs will be dumped
--gtpv2-exec-cmd <cmd> Command executed whenever a directory has been dumped
!
Please note that GTP-U is not handled by this plugin but rather by the nProbe core when
the --tunnel option is used.
!
4.6. HTTP Plugin
This plugin dissects HTTP traffic information (https can be decoded if the plugin is compiled
with CyaSLL and the private SSL key is available and configured in the plugin) and saves it in
dump files as well export the information via NetFlow/IPFIX using the following information
elements.
!
%HTTP_URL HTTP URL
%HTTP_RET_CODE HTTP return code (e.g. 200, 304...)
%HTTP_REFERER HTTP Referer
%HTTP_UA HTTP User Agent
%HTTP_MIME HTTP Mime Type
%HTTP_HOST HTTP Host Name
%HTTP_FBOOK_CHAT HTTP Facebook Chat
!
The plugin supports the following command line options that are used to specify where the
(optional) HTTP log file is saved. As previously described for -P, dumps are nested in
directories. It is possible to instruct nProbe to execute a command when a directory (not a
log file) if fully dumped (i.e. nProbe has moved to the next directory in time order).
!
--http-dump-dir <dump dir> Directory where HTTP logs will be dumped
--ssl-config-file <path> Configuration file for SSL certificate decoding
--ssl-debug Enables ssl tracing (highly verbose)
--http-exec-cmd <cmd> Command executed whenever a directory has been dumped
--dont-hash-cookies Dump cookie string instead of cookie hash
--max-http-log-lines Max number of lines per log file (default 10000)
--http-dump-timeout After that timeout (in sec) the log file will be closed (default: 60 sec)
--http-ports List of ports used for http protocol (default: 80)
--https-ports List of ports used for https protocol (default: 443)
--proxy-ports List of ports used for proxy protocol (default: 3128, 8080)
!
!
4.7. IMAP Plugin
This plugin dissects IMAP traffic information and saves it in dump files as well export the
information via NetFlow/IPFIX using the following information element.
!
%IMAP_LOGIN Mail sender
!
The plugin supports the following command line options that are used to specify where the
(optional) log file is saved. As previously described for -P, dumps are nested in directories. It
!25
nProbe User’s Guide v.6.16
is possible to instruct nProbe to execute a command when a directory (not a log file) if fully
dumped (i.e. nProbe has moved to the next directory in time order).
--imap-dump-dir <dump dir> Directory where IMAP logs will be dumped
--imap-exec-cmd <cmd> Command executed whenever a directory has been dumped
--imap-peek-headers Dump both emails body and headers (default: body only)
!
!
4.8. MySQL Plugin
This plugin dissects MySQL (unencrypted) traffic information and saves the queries log in
dump files as well export the information via NetFlow/IPFIX using the following information
elements.
!
%MYSQL_SERVER_VERSION MySQL server version
%MYSQL_USERNAME MySQL username
%MYSQL_DB MySQL database in use
%MYSQL_QUERY MySQL Query
%MYSQL_RESPONSE MySQL server response
%MYSQL_APPL_LATENCY_USEC MySQL request->response latecy (usec)
!
The plugin supports the following command line options that are used to specify where the
(optional) log file is saved. As previously described for -P, dumps are nested in directories. It
is possible to instruct nProbe to execute a command when a directory (not a log file) if fully
dumped (i.e. nProbe has moved to the next directory in time order).
--mysql-dump-dir <dump dir> Directory where MySQL logs will be dumped
--mysql-exec-cmd <cmd> Command executed whenever a directory has been dumped
--max-mysql-log-lines Max number of lines per log file (default 10000)
!
!
4.9. Oracle Plugin
This plugin dissects Oracle (unencrypted) traffic information and saves the queries log in
dump files as well export the information via NetFlow/IPFIX using the following information
elements.
!
%ORACLE_USERNAME Oracle Username
%ORACLE_QUERY Oracle Query
%ORACLE_RSP_CODE Oracle Response Code
%ORACLE_RSP_STRING Oracle Response String
%ORACLE_QUERY_DURATION Oracle Query Duration (msec)
!
The plugin supports the following command line options that are used to specify where the
(optional) log file is saved. As previously described for -P, dumps are nested in directories. It
is possible to instruct nProbe to execute a command when a directory (not a log file) if fully
dumped (i.e. nProbe has moved to the next directory in time order).
--oracle-dump-dir <dump dir> Directory where Oracle logs will be dumped
--oracle-exec-cmd <cmd> Command executed whenever a directory has been dumped
--max-oracle-log-lines Max number of lines per log file (default 10000)
!
Note that not all Oracle DB version might be supported by this plugin.
!
!26
nProbe User’s Guide v.6.16
!27
nProbe User’s Guide v.6.16
!28
nProbe User’s Guide v.6.16
!29
nProbe User’s Guide v.6.16
• char *descr;
Plugin description in plain English.
• char*author;
Plugin author name and email.
• u_int8_t always_enabled;
Set it to 1 to enable the plugin permanently regardless of its use in the template (-T
command line option).
• u_int8_t enabled;
Do not touch it and set it to 0 (used by nProbe).
• u_int8_t need_license;
Set it to 1 if a license for this plugin is needed, or 0 if is not needed.
• PluginInitFctn initFctn;
Plugin initialization function called when the plugin is loaded in memory. This
function is called regardless of the fact that the plugin will later be used or not.
• PluginTermFctn termFctn;
Plugin termination function called when the plugin is terminated during nProbe
shutdown.
• PluginConf pluginFlowConf;
Function that returns the flow configuration (see below).
• PluginFctn deleteFlowFctn;
Flow callback that is called for flows handled by this plugin whenever a flow has
been exported. This function is used to free memory of resources associated to
the flow. Set it to NULL if no function will be defined,
• u_int8_t call_packetFlowFctn_for_each_packet;
Set it to 1 to ask nProbe to call the packetFlowFctn callback for every packet
belonging to this flow, or 0 for calling it only for the first flow packet.
• PluginPacketFctn packetFlowFctn;
Callback called whenever nProbe has a packet belonging to the flow to be
processed by the plugin.
• PluginGetTemplateFctn getTemplateFctn;
Function used to return the template Element for the specified information element
passed as parameter.
• PluginExportFctn pluginExportFctn;
Callback called whenever the flow handled by this plugin is going to be exported.
• PluginPrintFctn pluginPrintFctn;
Function that is called when nprobe -P is used, and that is supposed to print flow
information into text files.
• PluginStatsFctn pluginStatsFctn;
Function that is called (when not set to NULL) whenever nProbe prints periodic
information (-b 1 or -b 2).
• PluginSetupFctn setupFctn;
Function called after plugin initialization (when not set to NULL), if according to the
specified template, this plugin will be used.
• PluginHelpFctn helpFctn;
Function that is called when nprobe -h is executed, and that is supposed to print
plugin information.
• PluginIdleTaskFctn idleFctn;
If not set to NULL, this function will be periodically called by the nProbe core to
execute (if any) housekeeping activities.
!30
nProbe User’s Guide v.6.16
!int i;
! }
return(NULL); /* Unknown */
!
}
!31
nProbe User’s Guide v.6.16
printed into MySQL. The supported format types are: ascii_format, hex_format,
numeric_format, ipv6_address_format.
• const ElementDumpFormat fileDumpFormat;
Specify the field format when the nProbe metadata information is printed (--
metadata). The supported format types are: dump_as_uint ,
dump_as_formatted_uint, dump_as_ip_port, dump_as_ip_proto,
dump_as_ipv4_address, dump_as_ipv6_address, dump_as_mac_address,
dump_as_epoch, dump_as_bool, dump_as_tcp_flags, dump_as_hex,
dump_as_ascii
• const char *netflowElementName;
String with the symbolic network element name used in NetFlow (-V 9).
• const char *ipfixElementName;
String with the symbolic network element name used in IPFIX (-V 10).
• const char *templateElementDescr;
String that describes the element information type used by nProbe when the help
(-h) is printed.
!
Most plugin callbacks are straightforward and its logic can be understood simply
having a look at examples of existing plugins. The only function worth to describe is
the one that processes packets as it is the most complex one.
!32
nProbe User’s Guide v.6.16
!
!
if(new_bucket /* This bucket has been created recently */) {
info->pluginPtr = (void*)&myPlugin;
!
pluginData = info->pluginData = (struct my_plugin_info*)malloc(sizeof(struct my_plugin_info));
if(info->pluginData == NULL) {
traceEvent(TRACE_ERROR, "Not enough memory?");
free(info);
return; /* Not enough memory */
} else {
/* Reset fields */
info->next = bkt->ext->plugin;
info->plugin_used = 0;
bkt->ext->plugin = info;
}
}
}
!
Once a plugin is defined, it must be placed into the nProbe/plugins directory so that
the nProbe build process will detect and compile it.
!33
nProbe User’s Guide v.6.16
6. References
1. Introduction to Cisco NetFlow, http://www.cisco.com/warp/public/cc/pd/iosw/ioft/
neflct/tech/napps_wp.htm
2. ntop, http://www.ntop.org/
3. nProbe, http://www.ntop.org/nprobe.html
4. nBox, http://www.nmon.net/nBox.html
5. Linux Debian, http://www.debian.org/
6. tcpdump, http://www.tcpdump.org/
7. Extreme Happy Netflow Tool, http://ehnt.sourceforge.net/
8. Libpcap, http://www.tcpdump.org/
9. Winpcap, http://winpcap.polito.it/
10. PC Engines, http://www.pcengines.ch/
11. SQLite, http://www.sqlite.org
12. IPerf, http://dast.nlanr.net/Projects/Iperf
!
6.1. Credits
• NetFlow is a trademark of Cisco Systems.
• Windows is a trademark of Microsoft Corporation.
!!
!!
!34
nProbe User’s Guide v.6.16
!35
nProbe User’s Guide v.6.16
!
host host
True if either the IP source or destination of the packet is host. Any of the above host
expressions can be prepended with the keywords, ip, arp, or rarp as in: ip host
host
which is equivalent to: ether proto \ip and host host
If host is a name with multiple IP addresses, each address will be checked for a
match.
!
ether dst ehost
True if the ethernet destination address is ehost. Ehost may be either a name from /
etc/ethers or a number.
!
ether src ehost
True if the ethernet source address is ehost.
!
ether host ehost
True if either the ethernet source or destination address is ehost.
!
gateway host
True if the packet used host as a gateway. I.e., the ethernet source or destination
address was host but neither the IP source nor the IP destination was host. Host
must be a name and must be found in both /etc/hosts and /etc/ethers. (An
equivalent expression is ether host ehost and not host host
which can be used with either names or numbers for host / ehost.)
!
dst net net
True if the IP destination address of the packet has a network number of net, which
may be either an address or a name.
!
src net net
True if the IP source address of the packet has a network number of net.
!
net net
True if either the IP source or destination address of the packet has a network
number of net.
!
dst port port
True if the packet is ip/tcp or ip/udp and has a destination port value of port. The
port can be a number or a name used in /etc/services. If a name is used, both the
port number and protocol are checked. If a number or ambiguous name is used,
only the port number is checked (e.g., dst port 513 will print both tcp/login traffic
and udp/who traffic, and port domain will print both tcp/domain and udp/domain
traffic).
!
src port port
True if the packet has a source port value of port.
!
port port
!36
nProbe User’s Guide v.6.16
True if either the source or destination port of the packet is port. Any of the above
port expressions can be prepended with the keywords, tcp or udp, as in: tcp src
port port which matches only tcp packets.
!
less length
True if the packet has a length less than or equal to length. This is equivalent to: len
<= length.
!
greater length
True if the packet has a length greater than or equal to length. This is equivalent to:
len >= length.
!
ip proto protocol
True if the packet is an ip packet of protocol type protocol. Protocol can be a
number or one of the names icmp, udp, nd, or tcp. Note that the identifiers tcp,
udp, and icmp are also keywords and must be escaped via backslash (\), which is
\\ in the C-shell.
!
ether broadcast
True if the packet is an ethernet broadcast packet. The ether keyword is optional.
!
ip broadcast
True if the packet is an IP broadcast packet. It checks for both the all-zeroes and all-
ones broadcast conventions, and looks up the local subnet mask.
!
ether multicast
True if the packet is an ethernet multicast packet. The ether keyword is optional. This
is shorthand for `ether[0] & 1 != 0'.
!
ip multicast
True if the packet is an IP multicast packet.
!
ether proto protocol
True if the packet is of ether type protocol. Protocol can be a number or a name like
ip, arp, or rarp. Note these identifiers are also keywords and must be escaped via
backslash (\). [In the case of FDDI (e.g., `fddi protocol arp'), the protocol identification
comes from the 802.2 Logical Link Control (LLC) header, which is usually layered on
top of the FDDI header. ntop assumes, when filtering on the protocol identifier, that
all FDDI packets include an LLC header, and that the LLC header is in so-called
SNAP format.]
!
decnet src host
True if the DECNET source address is host, which may be an address of the form
``10.123'', or a DECNET host name. [DECNET host name support is only available on
Ultrix systems that are configured to run DECNET.]
!
decnet dst host
True if the DECNET destination address is host.
!
!37
nProbe User’s Guide v.6.16
!38
nProbe User’s Guide v.6.16
!39
nProbe User’s Guide v.6.16
!40
nProbe User’s Guide v.6.16
!
[NFv9 57822][IPFIX 35632.350] %OUT_DST_OSI_SAP
!
[NFv9 57781][IPFIX 35632.309] %DST_AS_PATH_10
!
[NFv9 57827][IPFIX 35632.355] %DHCP_CLIENT_NAME
!
[NFv9 57824][IPFIX 35632.352] %DNS_TTL_ANSWER
!
[NFv9 57831][IPFIX 35632.359] %FTP_COMMAND_RET_CODE FTP client command return code
!41
nProbe User’s Guide v.6.16
!
[NFv9 57803][IPFIX 35632.331] %GTPV0_RESPONSE_CAUSE
!
[NFv9 57804][IPFIX 35632.332] %GTPV1_RESPONSE_CAUSE
!
[NFv9 57805][IPFIX 35632.333] %GTPV2_RESPONSE_CAUSE
!
[NFv9 57833][IPFIX 35632.361] %HTTP_SITE
!
[NFv9 57732][IPFIX 35632.260] %IMAP_LOGIN
!
[NFv9 57792][IPFIX 35632.320] %MYSQL_APPL_LATENCY_USEC
!
[NFv9 57676][IPFIX 35632.204] %ORACLE_QUERY_DURATION
!
[NFv9 57682][IPFIX 35632.210] %POP_USER
!42
nProbe User’s Guide v.6.16
!
[NFv9 57727][IPFIX 35632.255] %RADIUS_ACCT_OUT_PKTS
!
[NFv9 57852][IPFIX 35632.380]
!
[NFv9 57835][IPFIX 35632.363]
!
[NFv9 57658][IPFIX 35632.186] %SMTP_RCPT_TO
!!
[NFv9 57823][IPFIX 35632.351] %WHOIS_DAS_DOMAIN Whois/DAS Domain name
!
For instance if you want to specify NetFlow v9 flows in a format similar to v5 flows you can
do as follows:
nprobe -T "%IPV4_SRC_ADDR %IPV4_DST_ADDR %IPV4_NEXT_HOP %INPUT_SNMP %OUTPUT_SNMP %IN_PKTS
%IN_BYTES %FIRST_SWITCHED %LAST_SWITCHED %L4_SRC_PORT %L4_DST_PORT %TCP_FLAGS %PROTOCOL
%SRC_TOS %SRC_AS %DST_AS %SRC_MASK %DST_MASK"
Note that the fields start with a % and are separated by a space.
!
!
!
!43
nProbe User’s Guide v.6.16
Command: “nprobe -i eth0 -n collector_ip:2055 ”
!
2. Collector mode
!
3. Proxy mode
In proxy mode you can convert from/to IPFIX/NetFlow v5/v9 in order to smoothly upgrade
to newer netflow protocol versions while capitalizing on previous protocol versions. So you
can for instance convert flows coming from your v5 router into IPFIX and vice-versa. Note
that with some combinations (e.g. from v9 to v5) you might loose some flow information.
!44
nProbe User’s Guide v.6.16
!
and copyright (beside the sFlow collector code).
!
Please contact license@ntop.org.
GPL requires that any work derived from a GPL licensed work
(as nProbe) must also be distributed under GPL. As the term
"derivative work" (see http://en.wikipedia.org/wiki/Derivative_work)
is not entirely clear we want to clarify this concept in the case of
nProbe. We consider a derivated work of nProbe for the purpose of
this license if it does any of the following:
- Integrates (even partially) nProbe source code
- Includes (even partially) nProbe copyrighted data files
- Integrates/embeds nProbe into a binary installer/application
- Includes the nProbe into an appliance, router or similar device
- Links (even through nProbe's plugins) to a library that is not
available under GPL
- Executes nProbe and uses the produced results (usually flows
Note that the list applies to both nProbe "as a whole" and also
to portions of it. The above list is not exhaustive but it's
used to clarify the term derivative work with respect to nProbe.
This means that:
- nothing prevents you from distributing a proprietary product
(either appliance, GUI front-end, or application) based on
nProbe. Just sell/distribute it *without* nProbe, and point
your customers to http://www.ntop.org/products/nprobe/ in order
to have access to nProbe.
!
- you cannot include nProbe into a non-GPL derivative work.
!
other GPL products.
!
contact license@ntop.org
!
See COPYING and EULA files for more details.
!
Note that the EULA applies *only* to nProbe derived work.
!
11.Appendix E: EULA
!
!
NTOP END USER LICENSE AGREEMENT
!45
nProbe User’s Guide v.6.16
THE TERMS AND CONDITIONS HERE, INCLUDING ALL PROVISIONS REGARDING THE
!
LIMITATIONS OF THE LICENSOR LIABILITY.
!
notices/credits and any proprietary legends/disclaimers.
!
thereof.
3. Restrictions. You are not allowed to or permit/assist any third party to: (a)
publish, display, disclose, rent, lease, modify, copy, loan, distribute, or
create derivative works based on the Software or any part thereof; (b) reverse
engineer, decompile, translate, adapt, or disassemble the Software or any part
thereof; (c) attempt to create or otherwise reproduce in any form the source
code from the object code of any portion or component of the licensed Software;
(d) sublicense the Software or permit the exploitation of the Software by more
than a single hardware unit with a unique MAC address or unique system
identifier of any kind; (e) attempt to disable or circumvent any technological
!
protection measure of the Software or assist third parties to do so.
!
to maintain the confidentiality of Software and Documentation).
!
obligated to provide any updates to the Software.
!
Documentation.
!
violation of applicable laws and regulations.
!46
nProbe User’s Guide v.6.16
8. High Risk Activities. The licensed Software is not fault-tolerant and is not
designed, manufactured or intended for any kind of use with on-line control
equipment in hazardous environments requiring fail-safe performance (such as in
the operation of nuclear facilities, aircraft navigation or communication
systems, air traffic control, direct life support machines or weapon systems in
which the failure of the Software could lead directly to death, personal injury
or severe physical or environmental damage: all the so called "High Risk
Activities"). Accordingly, Licensor specifically disclaims any express or
!
implied warranty of fitness for High Risk Activities.
9. Ethics. The licensor commits itself to use the Software in compliance with
all applicable local, national and international laws, rules and
regulations, including any laws regarding the transmission of technical data
exported from its country of residence. In no case the licensed Software can
be used to track, spy, intercept or collect evidence of network
communications to be used against individuals or organizations, to prosecute
!
individuals or organizations, or to restrict their freedom.
10. Termination. Licensor may terminate this Agreement at any time if you violate
its terms. Upon termination, you must immediately destroy or return to Licensor
the Software and Documentation. The provisions of Sections 2 (IP Ownership), 3
(Restrictions), 4 (Confidentiality), 5 (No Warranty), 6 (Limitation of
Liability) and the provisions of this Section 9 (Termination) shall in any case
!
survive the termination or expiration hereof.
11. General Provisions, Governing Law, Jurisdiction. This EULA shall be governed
by, construed and interpreted in accordance with Italian Law. The licensee
agrees that any dispute arising from or connected to this EULA shall be
submitted to the exclusive jurisdiction of the Italian Specialized IP Courts.
Therefore, the jurisdiction of any other court is expressly excluded. This EULA
shall constitute the entire agreement between the parties; any waiver or
modification of this EULA shall be effective only if it is in writing and signed
by both parties. Should any part of this EULA be found invalid or unenforceable
by an Italian Specialized IP Court, the remainder of this EULA shall be
!
interpreted so as to reasonably effect the intention of the parties.
EACH PARTY IS HEREBY CONFIRMING ITS AGREEMENT WITH THE FOREGOING BY SIGNING AND
!
RETURNING ONE COPY OF THIS EULA TO THE OTHER PARTY.
PURSUANT TO ARTICLES 1341 AND 1342 OF THE ITALIAN CIVIL CODE, THE PARTIES HEREBY
ACKNOWLEDGE AND EXPRESSLY APPROVE SECTIONS 1 (Grant of License in Favour of
Registered Users), 2 (IP Ownership), 3 (Restrictions), 5 (No Warranty), 6
(Limitation of Liability), 8 (High Risk Activities), 9 (Termination) AND 10
!
(General Provisions, Governing Law, Jurisdiction).
!47