All Projects → rmind → Npf

rmind / Npf

Licence: other
NPF: packet filter with stateful inspection, NAT, IP sets, etc.

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Npf

The router
TheRouter is a software packet router based on DPDK an NPF libraries.
Stars: ✭ 123 (-23.12%)
Mutual labels:  router, nat, dpdk
Esp wifi repeater
A full functional WiFi Repeater (correctly: a WiFi NAT Router)
Stars: ✭ 3,818 (+2286.25%)
Mutual labels:  router, nat, firewall
Polycube
eBPF/XDP-based software framework for fast network services running in the Linux kernel.
Stars: ✭ 217 (+35.63%)
Mutual labels:  nat, firewall, bpf
Manuf
Parser library for Wireshark's OUI database.
Stars: ✭ 103 (-35.62%)
Mutual labels:  library, networking
Dublin Traceroute
Dublin Traceroute is a NAT-aware multipath tracerouting tool
Stars: ✭ 159 (-0.62%)
Mutual labels:  library, nat
Fastclick
FastClick - A faster version the Click Modular Router featuring batching, advanced multi-processing and improved Netmap and DPDK support (ANCS'15). Check the metron branch for Metron specificities (NSDI'18).
Stars: ✭ 100 (-37.5%)
Mutual labels:  networking, dpdk
Tor Android
Tor binary and library for Android
Stars: ✭ 90 (-43.75%)
Mutual labels:  library, firewall
Tls Channel
A Java library that implements a ByteChannel interface over SSLEngine, enabling easy-to-use (socket-like) TLS for Java applications.
Stars: ✭ 113 (-29.37%)
Mutual labels:  library, networking
Frp
A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
Stars: ✭ 51,746 (+32241.25%)
Mutual labels:  nat, firewall
Ice
A Go implementation of ICE
Stars: ✭ 114 (-28.75%)
Mutual labels:  networking, firewall
Router Lab
Lab for Network Principles 2019-2020 fall, 2020-2021 spring and 2020-2021 fall
Stars: ✭ 124 (-22.5%)
Mutual labels:  networking, router
Lvs Dpdk
LVS on dpdk
Stars: ✭ 125 (-21.87%)
Mutual labels:  nat, dpdk
Fast Path Lede Openwrt
PLEASE GO TO NEW OPENWRT TRUNK BASED SFE FIRMWARE ->
Stars: ✭ 96 (-40%)
Mutual labels:  networking, router
Pcapplusplus
PcapPlusPlus is a multiplatform C++ library for capturing, parsing and crafting of network packets. It is designed to be efficient, powerful and easy to use. It provides C++ wrappers for the most popular packet processing engines such as libpcap, WinPcap, DPDK and PF_RING.
Stars: ✭ 1,322 (+726.25%)
Mutual labels:  networking, dpdk
Pc Engines Apu Router Guide
Guide to building a Linux or BSD router on the PC Engines APU platform
Stars: ✭ 101 (-36.87%)
Mutual labels:  router, firewall
Vycontrol
vyos frontend
Stars: ✭ 92 (-42.5%)
Mutual labels:  nat, firewall
Natasha
Natasha is a fast and scalable, DPDK powered, stateless NAT44 packet processor
Stars: ✭ 111 (-30.62%)
Mutual labels:  nat, dpdk
Ruffles
Lightweight and fully managed reliable UDP library.
Stars: ✭ 131 (-18.12%)
Mutual labels:  library, networking
Tanya
GC-free, high-performance D library: Containers, networking, metaprogramming, memory management, utilities
Stars: ✭ 70 (-56.25%)
Mutual labels:  library, networking
Highway
Highway - A Modern Javascript Transitions Manager
Stars: ✭ 1,185 (+640.63%)
Mutual labels:  library, router

NPF: stateful packet filter supporting NAT, IP sets, etc

Build Status

NPF is a layer 3 packet filter, supporting stateful packet inspection, IPv6, NAT, IP sets, extensions and many more. It uses BPF as its core engine and it was designed with a focus on high performance, scalability, multi-threading and modularity. NPF was written from scratch in 2009. It is written in C99 and distributed under the 2-clause BSD license.

NPF is provided as a userspace library to be used in a bespoke application to process packets. It can run on Linux, typically, in combination with such frameworks like Data Plane Development Kit (DPDK) or netmap.

Features

NPF offers the traditional set of features provided by packet filters. Some key features are:

  • Stateful inspection (connection tracking).
  • Network address translation (NAT):
    • Static (stateless) and dynamic (stateful) translation.
    • NAPT and other forms of port translation (e.g. port forwarding).
    • Inbound and outbound NAT as well as bi-directional NAT.
    • Network-to-network translation, including NETMAP and NPTv6.
  • Carrier-grade NAT (CG-NAT) capability: known to serve over a million connections.
  • Tables for efficient IP sets, including the longest prefix match support.
  • Application Level Gateways (e.g. to support traceroute).
  • NPF uses BPF with just-in-time (JIT) compilation.
  • Rule procedures and a framework for NPF extensions (plugins).
  • Extensions include: traffic normalization and packet logging.
  • Data Plane Development Kit integration.

For a full set of features and their description, see the NPF documentation and other manual pages.

Usage

You can try NPF-Router as a demo NPF+DPDK application, running a virtual test network with Docker containers.

Documentation

See on Github Pages. Source in the docs directory.

Dependencies

  • libnv: git clone https://github.com/rmind/nvlist
  • thmap: git clone https://github.com/rmind/thmap
  • libqsbr: git clone https://github.com/rmind/libqsbr
  • liblpm: git clone https://github.com/rmind/liblpm
  • bpfjit: git clone https://github.com/rmind/bpfjit
  • libcdb: git clone https://github.com/rmind/libcdb

Each repository provides the build files for RPM (cd pkg && make rpm) and DEB (cd pkg && make deb) packages. You can also check the Travis file for an example of how to build everything.

Source code structure

app/                - NPF-Router demo application (NPF + DPDK + Docker)
docs/               - documentation source
src/                - root source code directory
    kern/           - the kernel component (npfkern library)
    libnpf/         - library to manage the NPF configuration
    npfctl/         - command line user interface to control NPF
    npftest/        - unit tests and a tool to debug NPF
pkg/                - packaging files (RPM and DEB)
misc/               - auxiliary helper scripts

Packages

To build the libnpf library (link using the -lnpf and -lnpfkern flags) packages:

  • RPM (tested on RHEL/CentOS 7): cd pkg && make rpm
  • DEB (tested on Debian 9): cd pkg && make deb

Who is using NPF?

Outscale innofield AG NetBSD TheRouter
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].