All Projects → snabbco → Snabb

snabbco / Snabb

Licence: apache-2.0
Snabb: Simple and fast packet networking

Programming Languages

lua
6591 projects
c
50402 projects - #5 most used programming language
assembly
5116 projects
HTML
75241 projects
shell
77523 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Snabb

vita
Vita: simple and fast VPN gateway
Stars: ✭ 685 (-75.38%)
Mutual labels:  luajit, userspace-networking
computer networking a top down approach
Assignments and wireshark labs for Computer Networking: A Top Down Approach 7th Edition
Stars: ✭ 50 (-98.2%)
Mutual labels:  networking
krypta
Generating random bits, passwords, recovery phrases and Bitcoin private keys / addresses (including QR codes) from text seed and salt.
Stars: ✭ 18 (-99.35%)
Mutual labels:  luajit
lua-resty-jump-consistent-hash
consistent hash for openresty
Stars: ✭ 24 (-99.14%)
Mutual labels:  luajit
phi
an api-gateway based on openresty
Stars: ✭ 23 (-99.17%)
Mutual labels:  luajit
depth-preserving-neural-style-transfer
Depth-Preserving Style Transfer
Stars: ✭ 86 (-96.91%)
Mutual labels:  luajit
lua-resty-ipcidr
A simple and very fast function to check against CIDR
Stars: ✭ 17 (-99.39%)
Mutual labels:  luajit
90DaysOfDevOps
This repository is my documenting repository for learning the world of DevOps. I started this journey on the 1st January 2022 and I plan to run to March 31st for a complete 90-day romp on spending an hour a day including weekends to get a foundational knowledge across a lot of different areas that make up DevOps.
Stars: ✭ 1,575 (-43.39%)
Mutual labels:  networking
libvmod-cfg
VMOD useful to access to contents of environment variables and local or remote files from VCL, usually for configuration purposes, including execution of Lua and JavaScript programs.
Stars: ✭ 20 (-99.28%)
Mutual labels:  luajit
raylib-lua
A modern LuaJIT binding for Raylib (also available at https://gitlab.com/TSnake41/raylib-lua)
Stars: ✭ 47 (-98.31%)
Mutual labels:  luajit
luaport
An Erlang/Elixir port for scripting application logic in Lua. Works with Lua and LuaJIT.
Stars: ✭ 18 (-99.35%)
Mutual labels:  luajit
nott
The New OTT Platform - an excuse to discuss and design a simple edge computing platform
Stars: ✭ 46 (-98.35%)
Mutual labels:  luajit
lesvim
Nvim config focus on Javascript, Typescript, Rust and Lua - 🚀 💪 ( Fast and Powerfull ) - Deno and other typescript LSP working well together
Stars: ✭ 69 (-97.52%)
Mutual labels:  luajit
Hack-Utils
Script to facilitate different functions and checks
Stars: ✭ 27 (-99.03%)
Mutual labels:  networking
lua-resty-aries
openresty and lua multi-function template
Stars: ✭ 47 (-98.31%)
Mutual labels:  luajit
lua-resty-couchbase
Lua couchbase client driver for the ngx_lua based on the cosocket API / 使用cosocket纯lua实现的couchbase的client,已经在爱奇艺重要的服务播放服务稳定运行5年多
Stars: ✭ 77 (-97.23%)
Mutual labels:  luajit
tbag
Tea-bag is Third party extension utility project
Stars: ✭ 13 (-99.53%)
Mutual labels:  luajit
Pypcap
pypcap - python libpcap module, forked from code.google.com/p/pypcap, now actively maintained
Stars: ✭ 255 (-90.83%)
Mutual labels:  networking
vmecs
A simple VMess proxy implementation written in C.
Stars: ✭ 28 (-98.99%)
Mutual labels:  networking
lua-resty-maxminddb
A Lua library for reading MaxMind's Geolocation database
Stars: ✭ 72 (-97.41%)
Mutual labels:  luajit

Snabb

Snabb

Snabb (formerly "Snabb Switch") is a simple and fast packet networking toolkit.

We are also a grassroots community of programmers and network engineers who help each other to build and deploy new network elements. We care about practical applications and finding simpler ways to do things.

The Snabb community are active in applying modern programming techniques, do-it-yourself operator networking, high-level device drivers, fast userspace virtio networking, universal SIMD protocol offloads, and applying compiler technology to networking.

You are welcome to join our community! Scroll down to the bottom for tips on how you can get involved.

Documentation

How does it work?

Snabb is written using these main techniques:

  • Lua, a high-level programming language that is easy to learn.
  • LuaJIT, a just-in-time compiler that is competitive with C.
  • Ethernet I/O with no kernel overhead ("kernel bypass" mode).

Snabb compiles into a stand-alone executable called snabb. This single binary includes multiple applications and runs on any modern Linux/x86-64 distribution. (You could think of it as a busybox for networking.)

How is it being used?

The first generation of Snabb applications include:

snabbnfv

Snabb NFV makes QEMU/KVM networking performance practical for applications that require high packet rates, such as ISP core routers. This is intended for people who want to process up to 100 Gbps or 50 Mpps of Virtio-net network traffic per server. We originally developed Snabb NFV to support Deutsche Telekom's TeraStream network.

You can deploy Snabb NFV stand-alone with QEMU or you can integrate it with a cloud computing platform such as OpenStack.

lwAFTR

Snabb lwAFTR is the internet-facing component of "lightweight 4-over-6" (lw4o6), an IPv6 transition technology. An ISP can use lwAFTR functions to provide its users with access to the IPv4 internet while maintaining a simple IPv6-only internal network. An ISP deploying Snabb lwAFTR can also configure lw4o6 to share IPv4 addresses between multiple different customers, ameliorating the IPv4 address space exhaustion problem and lowering costs. See the lwAFTR documentation for more details.

VPWS

VPWS (Virtual Private Wire Service) is a Layer-2 VPN application being developed by Alexander Gall at SWITCH. His Github vpn branch is the master line of development.

packetblaster

packetblaster generates load by replaying a pcap format trace file or synthesizing customizable packets onto any number of Intel 82599 10-Gigabit network interfaces. This is very efficient: only a small % of one core per CPU is required even for hundreds of Gbps of traffic. Because so little CPU resources are required you can run packetblaster on a small server or even directly on a Device Under Test.

snsh

snsh (Snabb Shell) is a tool for interactively experimenting with Snabb. It provides direct access to all APIs using a Lua shell. You can operate snsh either from script files or from an interactive shell.

How do I get started?

Setting up a Snabb development environment takes around one minute:

$ git clone https://github.com/SnabbCo/snabb
$ cd snabb
$ make -j
$ sudo src/snabb --help

The snabb binary is stand-alone, includes all of the applications, and can be copied between machines.

For example, to install on the local machine and use as a load generator:

$ cp src/snabb /usr/local/bin/
$ sudo snabb packetblaster replay capture.pcap 01:00.0

snabb container

Basic support for building and running snabb in a Docker container is available via

$ make docker

This will build a tiny snabb container (8MB), ready to be used:

$ docker run -ti --rm snabb --help

Or simply run snabb, as you would under linux. This is made possible by using a wrapper shell script that gets linked to as part of 'make docker':

$ src/snabb --help

How do I get involved?

Here are the ways you can get involved:

  • Use the Snabb applications in your network.
  • Create your very own application: Getting Started.
  • Create Github Issues with your ideas and questions and problems.
  • Join the Snabb Slack chat to hang out and shoot the breeze.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].