• Stars
    star
    125
  • Rank 277,295 (Top 6 %)
  • Language
    C
  • License
    GNU General Publi...
  • Created over 5 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Natasha is a fast and scalable, DPDK powered, stateless NAT44 packet processor

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.

More Repositories

1

scaleway-cli

Command Line Interface for Scaleway
Go
843
star
2

docker-machine-driver-scaleway

🐳 Scaleway driver for Docker Machine
Go
248
star
3

frontalization

Pytorch deep learning face frontalization model
Python
198
star
4

terraform-provider-scaleway

Terraform Scaleway provider
Go
178
star
5

postal-address

πŸ“― Parse, normalize and render postal addresses.
Python
174
star
6

image-tools

πŸ”© Scripts used to create Images on Scaleway - https://github.com/scaleway-community
Shell
117
star
7

python-scaleway

🐍 Python SDK to query Scaleway APIs.
Python
114
star
8

kernel-tools

🐧 Kernels on Scaleway
Makefile
104
star
9

scaleway-sdk-go

Integrate Scaleway with your Go application
Go
103
star
10

ultraviolet

A monorepo Design System with React components.
TypeScript
100
star
11

netbox-netprod-importer

Poll data from network devices in production and import it into netbox
Roff
94
star
12

c14-cli

[EOL] πŸ’» Manage your C14 Online Cold Storage from Command Line
Go
89
star
13

docs-content

Scaleway Documentation contents
MDX
77
star
14

serverless-scaleway-functions

Plugin for Serverless Framework to allow users to deploy their serverless applications on Scaleway Functions
JavaScript
69
star
15

image-builder

πŸ“ build server images on Scaleway
Dockerfile
66
star
16

scaleway-csi

Container Storage Interface (CSI) Driver for https://www.scaleway.com/block-storage/
Go
56
star
17

scaleway-cloud-controller-manager

Kubernetes Cloud Controller Manager for Scaleway
Go
52
star
18

initrd

πŸ”§ Initrd builder with qemu nbd metadata for Scaleway boot (armhf + x86_64)
Shell
51
star
19

action-scw

Github action to install and use scaleway-cli
TypeScript
49
star
20

netbox2netshot

Inventory synchronization tool between Netbox and Netshot
Rust
43
star
21

serverless-examples

Example projects and patterns for use with Scaleway's serverless products
HCL
42
star
22

python-netboxapi

Python client API for Netbox
Python
30
star
23

scaleway-sdk-js

Integrate Scaleway with your JS application
TypeScript
28
star
24

cert-manager-webhook-scaleway

A Scaleway DNS ACME webhook for cert-manager
Go
27
star
25

taskor

Async queued task library for Go
Go
27
star
26

juju-scaleway

☁️ Scaleway driver for Juju
Python
26
star
27

prometheus-scw-sd

Prometheus Service Discovery for Scaleway
Go
25
star
28

scaleway-operator

Scaleway Operator for Kubernetes
Go
25
star
29

scaleway-sdk-python

Integrate Scaleway with your Python applications
Python
24
star
30

scaleway-lib

scaleway-lib is a set of NPM packages used at Scaleway
TypeScript
22
star
31

crossplane-provider-scaleway

Crossplane Scaleway Provider
Go
16
star
32

serverless-gateway

Serverless API Gateway running on Scaleway
Python
15
star
33

homebrew-scaleway

🍺 `brew tap scaleway/scaleway`
Ruby
11
star
34

packer-plugin-scaleway

Packer plugin for Scaleway Builder
Go
10
star
35

serverless-functions-python

Utilities for testing your Python functions for Scaleway Serverless Functions.
Python
9
star
36

scaleway-form

Build amazing forms with Scaleway-ui and React-final-form πŸš€πŸš€
TypeScript
9
star
37

scaleway-ui-website

Open Source Component Library
TypeScript
8
star
38

scaleway-functions-runtimes

Runtimes for Scaleway Function As A Service Platform
Go
8
star
39

serverless-api-framework-python

Framework for writing serverless APIs in Python, using Scaleway functions and containers.
Python
8
star
40

ansible

Ansible Collection for Scaleway
Python
7
star
41

serverless-offline-scaleway

JavaScript
7
star
42

qa

πŸ’” Cloud testing suite
Makefile
6
star
43

serverless-functions-node

Offline testing for Scaleway Serverless Functions
TypeScript
6
star
44

sentry-wrapper

Log exceptions of a non sentry-capable setuptools entrypoint to Sentry
Python
6
star
45

cq-source-scaleway

CloudQuery Provider for Scaleway
Go
5
star
46

python2-secrets

Backport python3.6 secrets to python2
Python
5
star
47

octodns-scaleway

Scaleway provider for octoDNS
Python
5
star
48

terraform-scaleway-vpc-module

Terraform module for configuring a VPC
HCL
5
star
49

action-scw-secret

TypeScript
5
star
50

port-range

🐍 A python module for port-range
Python
4
star
51

helm-charts

Scaleway Helm Charts
Mustache
4
star
52

waypoint-plugin-scaleway

Waypoint provider for Scaleway
Go
4
star
53

design-tokens

JSON design tokens used in Scaleway UI library
4
star
54

serverless-functions-go

Scaleway Serverless Functions (FaaS) framework to increase developer experience, local testing and more
Go
4
star
55

python-dkim

User-friendly interface as well as python bindings for libopendkim.
Python
3
star
56

kernels

Kernel repository used at Scaleway (branch-oriented)
3
star
57

learn-nomad-cluster-setup

Infrastructure configuration to deploy a Nomad cluster on Scaleway
Shell
2
star
58

scaleway-packages

Repository of the RPM packages used in Scaleway Instance Images
2
star
59

demo-scaleway-ansible-baremetal

Scaleday 2019 demo baremetal
Python
2
star
60

tim

TIM is a plugin for testinfra parametrizing tests as described by a yaml file.
Python
1
star
61

snippets

Snippets to use Scaleway services
Python
1
star
62

tutorial-tem-serverless-terraform

HTML
1
star
63

terraform-scaleway-lb-module

HCL
1
star