Skip to content

guillaumedsde/eurybis

Repository files navigation

🪉 Eurybis

Eurybis is a proof-of-concept implementation of a webserver for receiving data to send through a unidirectional network link. Files are sent through the unidirectional link using ANSSI-FR/lidi and are stored on disk at destination.

The goal of the PoC is to implement high performance transfer of files received by the HTTP server, this repository does so using:

  • Zero-copy transfer from the HTTP server's socket to lidi's socket
  • A free-threaded python build
  • asyncio whenever possible on the destination side
  • The ThreadingHTTPServer in the Python standard library on the origin side
  • TODO: kTLS?

🏁 Requirements

  • docker
  • docker compose
  • Linux kernel >= 4.5

🚀 How to use?

docker compose up --build --wait
# Send 2GB to the HTTP API
head --bytes $((2 * 1024 * 1024 * 1024)) /dev/urandom | curl \
    --request POST \
    --data-binary @- \
    http://localhost:8080/

Note: for optimal performance, please follow Lidi's guide on sysctl tuning

📊 Performance orders of magnitude

Local testing on my machine yields transfer speed from RAM to RAM of around 400MiB/S (≅3.3Gb/s).

About

No description, website, or topics provided.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors