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.
- NAT
IPv4
/TCP
/UDP
/UDPLite
traffic. - Handle fragmented packets.
- Handle inner
IPv4
packet inside variousICMP
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.
- Replace
AST
lookup withLPM
. - Rewrite configuration data structures.
- Write a proper
L2
stack withARP
handling. - Return
ICMP
response ifTTL
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:
- 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.
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 ❤️, 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.