All Projects → blitz → Sv3

blitz / Sv3

A userspace software-switch including Intel 82599 10G NIC driver

Projects that are alternatives of or similar to Sv3

Grassmarlin
Provides situational awareness of Industrial Control Systems (ICS) and Supervisory Control and Data Acquisition (SCADA) networks in support of network security assessments. #nsacyber
Stars: ✭ 621 (+10250%)
Mutual labels:  networking
Okreplay
📼 Record and replay OkHttp network interaction in your tests.
Stars: ✭ 697 (+11516.67%)
Mutual labels:  networking
Bmon
bandwidth monitor and rate estimator
Stars: ✭ 787 (+13016.67%)
Mutual labels:  networking
Habu
Hacking Toolkit
Stars: ✭ 635 (+10483.33%)
Mutual labels:  networking
Dnsfs
Store your data in others DNS revolvers cache
Stars: ✭ 696 (+11500%)
Mutual labels:  networking
Evillimiter
Tool that monitors, analyzes and limits the bandwidth of devices on the local network without administrative access.
Stars: ✭ 764 (+12633.33%)
Mutual labels:  networking
Fast Android Networking
🚀 A Complete Fast Android Networking Library that also supports HTTP/2 🚀
Stars: ✭ 5,346 (+89000%)
Mutual labels:  networking
Kube Ovn
A Kubernetes Network Fabric for Enterprises that is Rich in Functions and Easy in Operations
Stars: ✭ 798 (+13200%)
Mutual labels:  networking
Bedrockframework
High performance, low level networking APIs for building custom servers and clients.
Stars: ✭ 697 (+11516.67%)
Mutual labels:  networking
Com.unity.multiplayer.mlapi
A game networking framework built for the Unity Engine to abstract game networking concepts.
Stars: ✭ 781 (+12916.67%)
Mutual labels:  networking
Netaddr
A network address manipulation library for Python
Stars: ✭ 648 (+10700%)
Mutual labels:  networking
Brynet
A Header-Only cross-platform C++ TCP network library . Can use vcpkg(https://github.com/Microsoft/vcpkg/tree/master/ports/brynet) install
Stars: ✭ 674 (+11133.33%)
Mutual labels:  networking
Shadow
Shadow is a unique discrete-event network simulator that runs real applications like Tor, and distributed systems of thousands of nodes on a single machine. Shadow combines the accuracy of emulation with the efficiency and control of simulation, achieving the best of both approaches.
Stars: ✭ 769 (+12716.67%)
Mutual labels:  networking
Bridge Deprecated
[DEPRECATED]: Prefer Retrofit/OkHttp by Square, or Fuel for Kotlin
Stars: ✭ 624 (+10300%)
Mutual labels:  networking
Mongo Cxx Driver
C++ Driver for MongoDB
Stars: ✭ 792 (+13100%)
Mutual labels:  networking
Wireguard Install
WireGuard VPN server installer
Stars: ✭ 616 (+10166.67%)
Mutual labels:  networking
Jsftp
Light and complete FTP client implementation for Node.js
Stars: ✭ 766 (+12666.67%)
Mutual labels:  networking
Zerotierone
A Smart Ethernet Switch for Earth
Stars: ✭ 7,839 (+130550%)
Mutual labels:  networking
Swift Nio
Event-driven network application framework for high performance protocol servers & clients, non-blocking.
Stars: ✭ 6,777 (+112850%)
Mutual labels:  networking
Bandwhich
Terminal bandwidth utilization tool
Stars: ✭ 6,737 (+112183.33%)
Mutual labels:  networking

A userspace switch for virtual machines.

  • Prerequisites

    sv3 currently only supports Linux on x86-64 with Qemu/KVM as virtualization layer. It also needs a relatively recent kernel, at least 3.6, but it hasn't been tested with anything older than 3.9.

  • Building

** Qemu

The switch needs a patched qemu. Build it using:

#+BEGIN_SRC sh git submodule init git submodule update

cd contrib/qemu ./configure --target-list=x86_64-softmmu --enable-kvm --disable-fdt make #+END_SRC

** Switch

Execute =scons=. If you installed prerequisite libraries after you first scons run, you might have to do =scons --config=force= afterwards.

  • Usage

** Starting a Guest

Start the switch and attach a guest using:

#+BEGIN_SRC sh ./sv3

Switch to another terminal

export PATH=$PWD/contrib/qemu/x86_64-softmmu:$PATH qemu-system-x86_64 -mem-path /tmp -net none -device externalpci,socket=/tmp/sv3 additional-args... #+END_SRC

Adding =-mem-path /tmp= to qemu is important, because it will create files there that serve as backing store for RAM. /tmp should be a tmpfs! If this is not the case, guest RAM will be periodically written to disk.

** Creating an Upstream Port

By default, the switch is not connected to the outside world. You need an upstream port to do this. sv3 is able to drive network cards itself, but needs some preparation. Currently, sv3 can drive a single upstream port at a time.

If the PCI ID of the desired network card is 0000:02:00.1 and the user that runs the switch is john, use =scripts/vfio-rebind.sh= like this:

#+BEGIN_SRC sh sudo ./scripts/vfio-rebind.sh 0000:02:00.1 john #+END_SRC

This will unload the device's driver and attach it to VFIO with access rights for john. The script might tell you to rebind unrelated devices as well to make the IOMMU happy.

Currently, sv3 supports Intel 82599 10G "Niantic" NICs (sold as x520).

  • Known Bugs
  • The switch will segfault, if passed file descriptors point to files that are too short.
  • The switch sometimes segfaults when clients disappear unexpectedly.

L4 checksums are wrong in the presence of option headers. But this code is not used right now.

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].