tygress

Crates.iotygress
lib.rstygress
version0.1.1
sourcesrc
created_at2022-01-29 18:43:44.243695
updated_at2022-01-29 19:11:12.725118
descriptionA library implementing popular networking transport protocols in user space with Rust
homepage
repositoryhttps://github.com/ajguerrer/tygress
max_upload_size
id523740
size109,283
Andrew Guerrero (ajguerrer)

documentation

https://docs.rs/tygress

README

Tygress (Work in Progress)

A library implementing popular networking transport protocols in user space with Rust.

Goals

  • Correct, and comprehensive - The primary goal is create a network stack that works. Rusts world-class type system is used at every opportunity to properly capture the constraints of the network stack detailed in the IETF RFCs. From the link layer to the transport layer, the following transport protocols are supported:
    • UDP
    • TCP
    • QUIC
  • Familiar, but async - Rust already has networking primitives for TCP/UDP. That familiar API is reproduced here, but with non-blocking primitives similar to the API in Tokio. These primitives are intended for use with the tygress executor multiplexing network traffic between a NetDev to a collection of sockets.
  • Safe, but zero-copy - Some use of the the unsafe keyword is necessary to provide a type-safe zero-copy API. Usage of unsafe is cordoned off to a small, well documented section of the library, while the rest is written in safe Rust.
  • No dependencies, and no_std - A network stack all in one place using only the core components of the Rust standard library. Implement the NetDev trait for your own network device capable of receiving/transmitting Ethernet frames and BYOB (Bring Your Own Buffers) for the sockets. Those running Unix/BSD may opt-in to some provided NetDev implementations.

Influences

  • Jon Gjengset - Where this project all started.
  • smoltcp - Used heavily as a reference throughout the project.
  • tokio - Ideas for async networking primitives.
  • embassy - Ideas for a no_std executor.
  • zerocopy - Ideas for zero-copy type-safe headers.
Commit count: 21

cargo fmt