#tcp #networking #veilid #publish #service #consume #pipe

app vldpipe

Publish and consume TCP services over the Veilid network

5 releases

0.1.4 Sep 11, 2023
0.1.3 Sep 10, 2023
0.1.2 Sep 9, 2023
0.1.1 Sep 4, 2023
0.1.0 Sep 4, 2023

#1436 in Network programming

MPL-2.0 and maybe GPL-3.0-only

75KB
1.5K SLoC

vldpipe

A most valid pipe.

Publish and consume TCP services over the Veilid network.

Status

Working, but tends to drop connections and time out. Still improving stability and reliability.

Put this in your valid pipe and smoke it

Publishing host exports a local socket address to Veilid. This form is vldpipe [local address].

vldpipe 8080
# Copy "that DHT key"

Consuming hosts can import this service and bind it to local addresses with:

vldpipe [that DHT key] 127.0.0.1:9000

Or serve it on all interfaces (local lan, public wan ingress) with:

vldpipe [that DHT key] 0.0.0.0:9000

Should eventually pair nicely with podman-compose and the like.

Demo

Serving up the project source on port 8000, exporting it to Veilid, importing from Veilid back to the same machine on port 9000. Useless but fun.

asciicast

TODO

Persistent node identities & DHT addresses.

Patched veilid-core to start nodes faster? Or upstream fix for this... configuration option? There's about a 1m5s delay for the node to go online.

Renegotiating private routes. I've observed persistent InvalidTarget failures, which seems to indicate that routes can churn and need to be rebuilt automatically.

Authenticated encryption like Tor stealth HS.

Security review, this is still experimental.

Credits

Examples in veilid-core and https://gitlab.com/bbigras/netdog were super-helpful in figuring out how to set things up.

Dependencies

~25–72MB
~1M SLoC