Natasha is a fast, DPDK powered, stateless NAT44 packet processor. It
supports DPDK v18.02 stable.
- NAT
IPv4/TCP/UDP/UDPLitetraffic. - Handle fragmented packets.
- Handle inner
IPv4packet inside variousICMPmessages. - Reply to
ICMP Echorequests in both the public and private interface. VLANoffload (Tx/Rxand filtering).L3/L4Rx checksum offload for stats purpose.L3/L4Tx 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
testwith a bench of functional and performance tests.
- Replace
ASTlookup withLPM. - Rewrite configuration data structures.
- Write a proper
L2stack withARPhandling. - Return
ICMPresponse ifTTLis exceeded. - Raise error if out on non-configured port.
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 has a functional and performance test, checkout func and perf for more informations.
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.