• Stars
    star
    125
  • Rank 286,335 (Top 6 %)
  • Language
    C
  • License
    GNU General Publi...
  • Created almost 6 years ago
  • Updated about 2 years 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

terraform-provider-scaleway

Terraform Scaleway provider
Go
198
star
4

frontalization

Pytorch deep learning face frontalization model
Python
198
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

ultraviolet

A monorepo Design System with React components.
TypeScript
104
star
9

kernel-tools

๐Ÿง Kernels on Scaleway
Makefile
104
star
10

scaleway-sdk-go

Integrate Scaleway with your Go application
Go
103
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
78
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
57
star
17

scaleway-cloud-controller-manager

Kubernetes Cloud Controller Manager for Scaleway
Go
53
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

serverless-examples

Example projects and patterns for use with Scaleway's serverless products
HCL
48
star
21

netbox2netshot

Inventory synchronization tool between Netbox and Netshot
Rust
46
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-lib

scaleway-lib is a set of NPM packages used at Scaleway
TypeScript
25
star
30

scaleway-sdk-python

Integrate Scaleway with your Python applications
Python
24
star
31

serverless-gateway

Serverless API Gateway running on Scaleway
Python
18
star
32

crossplane-provider-scaleway

Crossplane Scaleway Provider
Go
16
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
10
star
36

scaleway-form

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

ansible

Ansible Collection for Scaleway
Python
8
star
38

scaleway-ui-website

Open Source Component Library
TypeScript
8
star
39

scaleway-functions-runtimes

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

serverless-api-framework-python

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

serverless-offline-scaleway

JavaScript
7
star
42

qa

๐Ÿ’” Cloud testing suite
Makefile
6
star
43

action-scw-secret

TypeScript
6
star
44

serverless-functions-node

Offline testing for Scaleway Serverless Functions
TypeScript
6
star
45

sentry-wrapper

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

cq-source-scaleway

CloudQuery Provider for Scaleway
Go
5
star
47

helm-charts

Scaleway Helm Charts
Mustache
5
star
48

octodns-scaleway

Scaleway provider for octoDNS
Python
5
star
49

terraform-scaleway-vpc-module

Terraform module for configuring a VPC
HCL
5
star
50

design-tokens

JSON design tokens used in Scaleway UI library
5
star
51

python2-secrets

Backport python3.6 secrets to python2
Python
5
star
52

serverless-functions-go

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

port-range

๐Ÿ A python module for port-range
Python
4
star
54

qiskit-scaleway

Scaleway provider implementation for Qiskit SDK
Python
4
star
55

waypoint-plugin-scaleway

Waypoint provider for Scaleway
Go
4
star
56

learn-nomad-cluster-setup

Infrastructure configuration to deploy a Nomad cluster on Scaleway
Shell
3
star
57

python-dkim

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

kernels

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

tink-go-scwkms

Extension to Tink Go that provides Scaleway's Key Manager integration
Go
3
star
60

scaleway-packages

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

demo-scaleway-ansible-baremetal

Scaleday 2019 demo baremetal
Python
2
star
62

tim

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

snippets

Snippets to use Scaleway services
Python
1
star
64

tutorial-tem-serverless-terraform

HTML
1
star
65

terraform-scaleway-lb-module

HCL
1
star
66

dagster-scaleway

Python
1
star