Zenoh uses an hop-to-hop fragmentation approach, typical of the Name Data Networking (NDN) concept. Although, generally, this is good approach, in some cases, i.e. when dealing with large files, in particular when intermediate nodes may also consider constraint devices, a different approach may be more suitable in order to minimize the number of fragmentation/reconstrcutions.
See the zenoh documentation for more details.
This library is advisable for sending large files because it allows to fragment and reconstruct as less as it can: at source and at destination. It's a library that relies on zenoh and shares files on zenoh in order to avoid the h2h fragmentation.
At first, install Cargo and Rust.
And then build the library with:
$ cargo build --release --all-targets
Start the zenoh-cdn server
$ RUST_LOG=zenoh_cdn=trace ./target/release/examples/server server-config.yml
Send and retrieve a file using the Client
example
./target/debug/examples/client upload $(pwd)/zenoh.png "/imgs/zenoh"
Retrieve
./target/debug/examples/client download $(pwd)/zenoh2.png "/imgs/zenoh"