8 releases
0.1.8 | Sep 26, 2023 |
---|---|
0.1.7 | Jun 1, 2023 |
0.1.6 | Mar 31, 2023 |
0.1.3 | Dec 20, 2022 |
#1347 in Network programming
568 downloads per month
60KB
843 lines
MPROXY: Multicast Network Dispatcher and Proxy
Streams data over the network.
About
This repo includes four packages: Forward-proxy, reverse-proxy, UDP client, and UDP server. Proxies allow conversion between TCP and UDP, so these blocks can be combined together for complete interoperability with existing networks. A primary feature is compatability with UDP Multicast for intermediate routing and reverse-proxy, enabling dead simple group communication across complex one-to-many or many-to-many data streams, and resulting in scalable reverse-proxy. Packages can be run either from the command line or included as a library.
- Simple to use full networking stack
- Send, proxy, reverse-proxy, and receive to/from multiple endpoints simultaneously
- Fast
- Can be deployed in less than 5 minutes
- 500+ Mbps read/transfer/write speed (UDP)
- Stateless multithreaded concurrency
- Minimal
- Zero configuration, logging, or caching
- Tiny memory footprint, compiled binary sizes ~350KB
- Less than 1500 LOC
- Leverage benefits of UDP
- Simple stream aggregation
- Performant proxy and reverse proxy
- UDP multicasting for scalable reverse-proxy
Quick Start
Get started with a simple client/server network. Install the command line tools with cargo, and start a UDP listen server on port 9920.
cargo install mproxy-client mproxy-server
mproxy-server --listen-addr "localhost:9920" --path "streamoutput.log" --tee
Then send some bytes from the client to the server. The path option "-" tells the client to read input from stdin. A filepath, descriptor, or handle may also be used.
mproxy-client --path "-" --server-addr "localhost:9920"
> Hello world!
You should now see your message appear in streamoutput.log
(and also to stdout if --tee
is used)
Compatability
- Windows/Linux/Mac
- IPv4/IPv6
- UDP
- TCP/TLS
- via forward and reverse proxy
- Partial client-side TLS support provided by
rustls
(requires featuretls
enabled inmproxy-forward
)
Docs
See the documentation for installing and operation instructions
Dependencies
~0.1–25MB
~329K SLoC