tcp-over-quic is an WIP implementation for draft RFC Tunneling TCP inside QUIC.
client accepts TCP connection from tcp clients and tunnels data through quic stream. concentrator accepts those quic streams and sends data towards remote TCP server.
Note: tcp-over-quic is not tested in production and probably not ready for production use. at this stage its just a project to learn quic and rust.
-
run
cargo buildto build project and generate binaries. -
start
concentratorusingtarget/debug/concentrator --quic_serv_port=4433. it will also generate self signed certificate required for quic tls. same certificate will be used by client as well. -
start
client, client will listen on tcp port6970and it will connect to remotequicserver127.0.0.1:4433. client will send addr127.0.0.1:7970as remote tcp address viaQUIC tunnel stream TLVsfor ALL its TCP connections.
target/debug/client \
--tcp_source_port=6970 \
--quic_serv_addr=127.0.0.1:4433 \
--tcp_dest_addr=127.0.0.1:7970 \
--quic_serv_cert_path=cert/public_cert.der \
--quic_serv_name=localhost-
start tcp server on port
7971. usingnc -l 127.0.0.1 7970 -
send data via tcp client on port
6970usingecho "From tcp client" | nc 127.0.0.1 6970