All Projects → capsule-rs → Capsule

capsule-rs / Capsule

Licence: apache-2.0
A framework for network function development. Written in Rust, inspired by NetBricks and built on DPDK.

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Capsule

Openwisp Monitoring
Network monitoring system written in Python and Django, designed to be extensible, programmable, scalable and easy to use by end users: once the system is configured, monitoring checks, alerts and metric collection happens automatically.
Stars: ✭ 37 (-82.95%)
Mutual labels:  hacktoberfest, networking
Infinity
A lightweight C++ RDMA library for InfiniBand networks.
Stars: ✭ 86 (-60.37%)
Mutual labels:  networking, network-programming
Nff Go
NFF-Go -Network Function Framework for GO (former YANFF)
Stars: ✭ 1,036 (+377.42%)
Mutual labels:  networking, dpdk
Trafficengine
a high performance TCP traffic generator
Stars: ✭ 22 (-89.86%)
Mutual labels:  networking, dpdk
Network
An ansible role to configure networking
Stars: ✭ 134 (-38.25%)
Mutual labels:  hacktoberfest, networking
Ubernet
Flexible networking library for Unity
Stars: ✭ 10 (-95.39%)
Mutual labels:  networking, network-programming
Pynms
A vendor-agnostic NMS for carrier-grade network simulation and automation
Stars: ✭ 73 (-66.36%)
Mutual labels:  networking, network-programming
Ucx
Unified Communication X (mailing list - https://elist.ornl.gov/mailman/listinfo/ucx-group)
Stars: ✭ 471 (+117.05%)
Mutual labels:  hacktoberfest, networking
Ansible Openwisp2 Imagegenerator
Automatically build several openwisp2 firmware images for different organizations while keeping track of their differences
Stars: ✭ 122 (-43.78%)
Mutual labels:  hacktoberfest, networking
Fastclick
FastClick - A faster version the Click Modular Router featuring batching, advanced multi-processing and improved Netmap and DPDK support (ANCS'15). Check the metron branch for Metron specificities (NSDI'18).
Stars: ✭ 100 (-53.92%)
Mutual labels:  networking, dpdk
Pavlos
A light-weight container runtime for Linux with NVIDIA gpu support, allows developers to quicky setup development environments for dev and test. Pavlos can emulate any Linux rootfs image as a container.
Stars: ✭ 22 (-89.86%)
Mutual labels:  hacktoberfest, networking
Moya
Network abstraction layer written in Swift.
Stars: ✭ 13,607 (+6170.51%)
Mutual labels:  hacktoberfest, networking
Roc Toolkit
Real-time audio streaming over the network.
Stars: ✭ 673 (+210.14%)
Mutual labels:  hacktoberfest, networking
Xdp
Package xdp allows one to use XDP sockets from the Go programming language.
Stars: ✭ 36 (-83.41%)
Mutual labels:  networking, network-programming
Quiche
🥧 Savoury implementation of the QUIC transport protocol and HTTP/3
Stars: ✭ 5,481 (+2425.81%)
Mutual labels:  hacktoberfest, network-programming
Nmstate
Nmstate is a library with an accompanying command line tool that manages host networking settings in a declarative manner.
Stars: ✭ 63 (-70.97%)
Mutual labels:  hacktoberfest, networking
Openwisp Config
OpenWRT configuration agent for OpenWISP Controller
Stars: ✭ 375 (+72.81%)
Mutual labels:  hacktoberfest, networking
Openwisp Controller
Network and WiFi controller: provisioning, configuration management and updates, (pull via openwisp-config or push via SSH), x509 PKI management and more. Mainly OpenWRT, but designed to work also on other systems.
Stars: ✭ 377 (+73.73%)
Mutual labels:  hacktoberfest, networking
Pcapplusplus
PcapPlusPlus is a multiplatform C++ library for capturing, parsing and crafting of network packets. It is designed to be efficient, powerful and easy to use. It provides C++ wrappers for the most popular packet processing engines such as libpcap, WinPcap, DPDK and PF_RING.
Stars: ✭ 1,322 (+509.22%)
Mutual labels:  networking, dpdk
Npf
NPF: packet filter with stateful inspection, NAT, IP sets, etc.
Stars: ✭ 160 (-26.27%)
Mutual labels:  networking, dpdk

Crates.io Documentation Apache-2.0 licensed CI-Github Actions Codecov Code of Conduct Discord

Capsule

A framework for network function development. Written in Rust, inspired by NetBricks and built on Intel's Data Plane Development Kit.

Table of Contents

Overview

The goal of Capsule is to offer an ergonomic framework for network function development that traditionally has high barriers of entry for developers. We've created a tool to efficiently manipulate network packets while being type-safe, memory-safe, and thread-safe. Building on DPDK and Rust, Capsule offers

  • a fast packet processor that uses minimum number of CPU cycles.
  • a rich packet type system that guarantees memory-safety and thread-safety.
  • a declarative programming model that emphasizes simplicity.
  • an extendable and testable framework that is easy to develop and maintain.

Quick Start

The easiest way to start developing Capsule applications is to use the Vagrant virtual machine and the Docker sandbox provided by our team. The sandbox is preconfigured with all the necessary tools and libraries for Capsule development, including:

First install Vagrant and VirtualBox on your system. Also install the following Vagrant plugins,

host$ vagrant plugin install vagrant-reload vagrant-disksize vagrant-vbguest

Then clone our sandbox repository, start and ssh into the Vagrant VM,

host$ git clone https://github.com/capsule-rs/sandbox.git
host$ cd sandbox
host$ vagrant up
host$ vagrant ssh

Once inside the created Debian VM with Docker installed, run the sandbox with the command,

vagrant$ docker run -it --rm \
    --privileged \
    --network=host \
    --name sandbox \
    --cap-add=SYS_PTRACE \
    --security-opt seccomp=unconfined \
    -v /lib/modules:/lib/modules \
    -v /dev/hugepages:/dev/hugepages \
    getcapsule/sandbox:19.11.6-1.50 /bin/bash

Remember to also mount the working directory of your project as a volume for the sandbox. Then you can use Cargo commands inside the container as normal.

Add Capsule as a dependency to your Cargo.toml and start writing your application,

[dependencies]
capsule = "0.1"

If you want to develop Capsule without using Docker in Vagrant, please check out our sandbox repo for instructions on running our Vagrant VM environment, as well as others options not using either Vagrant or Docker.

Contributing

Thanks for your help improving the project! We have a contributing guide to help you get involved with the Capsule project.

Code of Conduct

This project and everyone participating in it are governed by the Capsule Code Of Conduct. By participating, you agree to this Code. Please report any violations to the code of conduct to [email protected].

Contact

You can contact us either through Discord or email.

Maintainers

The current maintainers with roles to merge PRs are:

Read More About Capsule

License

This project is licensed under the Apache-2.0 license.

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