All Projects → scaleway → Natasha

scaleway / Natasha

Licence: gpl-3.0
Natasha is a fast and scalable, DPDK powered, stateless NAT44 packet processor

Programming Languages

c
50402 projects - #5 most used programming language

Labels

Projects that are alternatives of or similar to Natasha

The router
TheRouter is a software packet router based on DPDK an NPF libraries.
Stars: ✭ 123 (+10.81%)
Mutual labels:  nat, dpdk
Lvs Dpdk
LVS on dpdk
Stars: ✭ 125 (+12.61%)
Mutual labels:  nat, dpdk
Npf
NPF: packet filter with stateful inspection, NAT, IP sets, etc.
Stars: ✭ 160 (+44.14%)
Mutual labels:  nat, dpdk
Esp Idf Nat Example
ESP-IDF example project with NAT setup.
Stars: ✭ 41 (-63.06%)
Mutual labels:  nat
Nff Go
NFF-Go -Network Function Framework for GO (former YANFF)
Stars: ✭ 1,036 (+833.33%)
Mutual labels:  dpdk
Turn Client
STUN & TURN client demo and api with python and C
Stars: ✭ 82 (-26.13%)
Mutual labels:  nat
Smargate
内网穿透,c++实现,无需公网IP,小巧,易用,快速,安全,最好的多链路聚合(p2p+proxy)模式,不做之一...这才是你真正想要的内网穿透工具!
Stars: ✭ 1,378 (+1141.44%)
Mutual labels:  nat
Fastdns
fastDNS is an authoritative only, high performance, simple and open source name server based on DPDK and NSD server
Stars: ✭ 12 (-89.19%)
Mutual labels:  dpdk
Sidedoor
SSH connection daemon for Debian/Raspbian/Ubuntu/etc
Stars: ✭ 97 (-12.61%)
Mutual labels:  nat
Tcptunnel
将本地内网服务器映射到公网。
Stars: ✭ 72 (-35.14%)
Mutual labels:  nat
Wenat Client Java
Wenat内网穿透,java版客户端
Stars: ✭ 70 (-36.94%)
Mutual labels:  nat
Nat Explorer
An example project using Nat & Weex.
Stars: ✭ 55 (-50.45%)
Mutual labels:  nat
Aws Lambda Vpc Nat Examples
Example of setting up AWS lambda function with VPC and NAT
Stars: ✭ 92 (-17.12%)
Mutual labels:  nat
Frps Onekey
Frps 一键安装脚本&管理脚本 A tool to auto-compile & install frps on Linux
Stars: ✭ 1,014 (+813.51%)
Mutual labels:  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 (-9.91%)
Mutual labels:  dpdk
Miniupnp
UPnP IGD implementation
Stars: ✭ 974 (+777.48%)
Mutual labels:  nat
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 (+1090.99%)
Mutual labels:  dpdk
Udp Hole Punching Examples
A small collection of examples for UDP hole punching.
Stars: ✭ 66 (-40.54%)
Mutual labels:  nat
Nat
nat - the 'ls' replacement you never knew you needed
Stars: ✭ 1,129 (+917.12%)
Mutual labels:  nat
Coil
CNI plugin for Kubernetes designed for scalability and extensibility
Stars: ✭ 81 (-27.03%)
Mutual labels:  nat

NATASHA

Introduction

Natasha is a fast and scalable, DPDK powered, stateless NAT44 packet processor. It can achieve 100Gbits/s translation with 64bytes packets.

Natasha is in production at Scaleway with more than 1.2Tbits/s capacity.

Features

  • NAT IPv4/TCP/UDP/UDPLite traffic.
  • Handle fragmented packets.
  • Handle inner IPv4 packet inside various ICMP messages.
  • Reply to ICMP Echo requests in both the public and private interface.
  • VLAN offload (Tx/Rx and filtering).
  • L3/L4 Rx checksum offload for stats purpose.
  • L3/L4 Tx checksum using hardware offload or software incremental update (RFC1624) depending on the case.
  • Various stats, Software and Hardware stats and per core.
  • Dumping release version with the commit id.
  • Test directory test with a bench of functional and performance tests.

TODO list

  • Replace AST lookup with LPM.
  • Rewrite configuration data structures.
  • Write a proper L2 stack with ARP handling.
  • Return ICMP response if TTL is exceeded.

Configuration

At startup, NATASHA reads a configuration file that defines rules. These rules are processed for each packet received.

A configuration file looks like:

if (ipv4.dst_addr in 10.0.0.0/8
    or vlan 64
    or ipv4.dst_addr in 192.168.0.0/16) {

    drop ;

} else {
    out port 0 mac de:ad:be:ef:ff:ff;
}

More concrete examples are given in the documentation.

Installation

Natasha supports DPDK v18.02 stable:

  • Get DPDK stable sources and checkout on v18.02 version:
git clone git://dpdk.org/dpdk-stable && cd $PATH_TO_DPDK_SOURCES
git checkout v18.02
  • Configure and build DPDK (see Documentation).
  • Then make sure that your RTE_SDK path is defined.
  • Finally build Natasha:
cd NATASHA_SOURCES_PATH
make

Run Natasha like any DPDK app and add application specific param -f with the right configuration file:

$(NATASHA_SOURCES_PATH)/build/nat -l 0,2 --master-lcore=0 -n 4 -w 0000:04:00.0 -- \
                            -f $NATASHA_CONFIG_FILE

You can check the configuration files in the CI for more examples.

Tests

Natasha has a small CI process with a functional and performance tests, checkout functional and performance documentation for more informations.

Contributing and Bugs report

Any contribution or bug report are more than welcome ❤️, please make sure to details the bug/feature request.

Changelog

See the Changelog file

License

Natasha is Free Software (learn more: http://www.gnu.org/philosophy/free-sw.html).

Natasha is released under the GPLv3 License. Please read the COPYING file for details.

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].