Natasha is a fast and scalable, DPDK powered, stateless NAT44 packet processor
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.
IPv4
/TCP
/UDP
/UDPLite
traffic.IPv4
packet inside various ICMP
messages.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.stats
, Software and Hardware stats and per core.test
with a bench of functional and performance tests.AST
lookup with LPM
.L2
stack with ARP
handling.ICMP
response if TTL
is exceeded.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.
Natasha supports DPDK v18.02
stable:
v18.02
version:git clone git://dpdk.org/dpdk-stable && cd $PATH_TO_DPDK_SOURCES
git checkout v18.02
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.
Natasha has a small CI process with a functional and performance tests, checkout functional and performance documentation for more informations.
Any contribution or bug report are more than welcome :heart:, please make sure to details the bug/feature request.
See the Changelog file
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.