Snabb Switch
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 Switch 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. If you have an application that you want to build, or you want to use one that we are already developing, or you want to contribute in some other way, then please join the snabb-devel mailing list and read on.
How does it work?
Snabb Switch 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 Switch compiles into a stand-alone executable called
snabb
. This single binary includes multiple applications and runs on
any modern Linux distribution. (You could think of it as a
busybox for
networking.)
How is it being used?
The first generation of Snabb Switch 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.
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 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 Switch. 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 Switch development environment takes around one minute:
$ git clone https://github.com/SnabbCo/snabbswitch
$ cd snabbswitch
$ make -j
$ 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 capture.pcap 0000:01:00.0
How do I get involved?
Here are the ways you can get involved:
- Use the Snabb Switch applications in your network.
- Join the snabb-devel mailing list.
- Send a mail to introduce yourself to the community (don't be shy!).
- Create your very own application: Getting Started.