Skip to content

epam/nfstrace

Folders and files

NameName
Last commit message
Last commit date
Oct 8, 2021
Oct 8, 2021
Apr 1, 2015
Aug 7, 2019
Oct 28, 2016
Aug 5, 2020
Oct 8, 2021
Oct 8, 2021
May 1, 2016
Feb 15, 2016
Feb 27, 2016
Dec 24, 2014
Apr 30, 2016
Dec 29, 2017
Dec 29, 2017
Nov 3, 2016
Jul 15, 2024
Nov 17, 2014
Jun 13, 2014
Oct 8, 2021
Aug 16, 2016

Repository files navigation

License Language Release Issues Build Status Coverage Status

NFSTRACE Logo NFSTRACE

nfstrace is an NFS and CIFS tracing/monitoring/capturing/analyzing tool.

It performs live Ethernet 1 Gbps - 10 Gbps packets capturing and helps to determine NFS/CIFS procedures in raw network traffic. Furthermore, it performs filtration, dumping, compression, statistical analysis, visualization and provides the API for custom pluggable analysis modules.

nfstrace is written in C++ programming language and supports the following protocols:

  • Ethernet
  • IPv4 | IPv6
  • UDP | TCP
  • NFSv3 | NFSv4 | NFSv4.1 | CIFSv1 | CIFSv2

nfstrace has been tested on the following GNU/Linux and FreeBSD systems:

  • Debian Sid packages build-logs
  • Fedora 34
  • OpenSUSE 13.2
  • Ubuntu 16.04 LTS
  • CentOS 7
  • Arch Linux
  • FreeBSD 10.1
  • Alt Linux 7.0.5

You can find more detailed description at docs/nfstrace_manual.pdf

Problems, bugs, questions, desirable enhancements, etc. should be sent to [email protected]

External Dependencies

  • PCAP library (core component)
  • JSON-C library (used for libjson.so plugin)
  • Curses (used for libwatch.so plugin)
  • GMock (used for testing)

Building

Since nfstrace is written in C++ you have to use gcc >= 6 or clang >= 3.8. Additionally, you need to install development version of libpcap (version 1.3 or newer).

You can build nfstrace using CMake (version 3.0 or newer). From the top level project's directory run:

$ mkdir release
$ cd release
$ cmake -DCMAKE_BUILD_TYPE=release ../
$ make

If you want to use specific compiler you can set the CC and CXX environment variables:

$ CC="path/to/clang" CXX="path/to/clang++" cmake -DCMAKE_BUILD_TYPE=release ../

If you want to build unit-tests initialize git submodules and provide a path to googltest directory via CMake option:

$ -DGTEST_SOURCE_DIR=/home/user/nfstrace/third_party/googletest

If you want to specify different installation prefix:

$ cmake -DCMAKE_INSTALL_PREFIX=/your/path ../

You can use different build tools, compilers, packaging systems with required parameters. Please refer to CMake, CPack and Reference Manuals.

Installation

You can install nfstrace to default location. After you build nfstrace simply run:

$ sudo make install

If you're using rpm- or debian based Linux distribution you can try to generate package for your system using cpack. Please note that you need rpm or debian tools to be installed.

In order to generate rpm package:

$ cpack -G RPM

In order to generate deb package:

$ cpack -G DEB

After that you'll be able to install generated package using your package manager.

Testing

There are prepared dumps in traces/ directory so you can perform quick sanity check with the following command:

$ make test

Please note that ctest is required in order to run tests, on some platforms it is packaged separately from cmake.

Scripts will run nfstrace in different modes and compare its output with reference results.

Authors

Vitali Adamenka ([email protected])

Yauheni Azaranka ([email protected])

Alexey Costroma ([email protected])

Dzianis Huznou ([email protected])

Artsem Iliasau ([email protected])

Pavel Karneliuk ([email protected])

Andrey Kuznetsov ([email protected])

Mikhail Litvinets ([email protected])

Ilya Storozhilov ([email protected])

License

Copyright (c) 2015 EPAM Systems

Nfstrace 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, version 2 of the License.

Nfstrace is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with Nfstrace. If not, see.