A P2P file transfer protocol
Go to file
dependabot[bot] 639929d0a6
chore(deps): Bump crate-ci/typos from 1.32.0 to 1.33.1 (#29)
Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.32.0 to 1.33.1.
- [Release notes](https://github.com/crate-ci/typos/releases)
- [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md)
- [Commits](0f0ccba9ed...b1ae8d918b)

---
updated-dependencies:
- dependency-name: crate-ci/typos
  dependency-version: 1.33.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-10 13:54:11 +08:00
.github
benches
docs
src
tests
.gitignore
.markdownlint.yml
.typos.toml
Cargo.lock
Cargo.toml
LICENSE
README.md
rust-toolchain.toml

README.md

Vortex Protocol

LICENSE Discussions

Introduction

Vortex protocol is a high-performance peer-to-peer (P2P) file transfer protocol implementation in Rust, designed as part of the Dragonfly project. It utilizes the TLV (Tag-Length-Value) format for efficient and flexible data transmission, making it ideal for large-scale file distribution scenarios.

Features

  • Efficient TLV Protocol: Optimized for fast serialization and deserialization of data packets.
  • Large File Support: Handles piece sizes up to 1 GiB and value fields up to 4 GiB.
  • Memory Safety: Built in Rust with zero-cost abstractions and memory safety guarantees.
  • High Performance: Designed for high-throughput file transfer scenarios.
  • Extensible Design: Reserved tags for future protocol extensions like compression and encryption.

Documentation

For details, please see the specification.

Benchmarking

Vortex protocol includes comprehensive benchmarks for packet creation, serialization, and deserialization:

# Run all benchmarks
cargo bench

# Run specific benchmark group
cargo bench "Vortex Packet Creation"

The benchmarks cover various packet sizes:

  • Small packets (32 bytes)
  • Medium packets (1 KB)
  • Large packets (1 MB)
  • Extra large packets (16 MB)