d70d085553
1. Route must impl PeerPacketFilter trait. 2. Use postcard lib to serial msg instead of bincode. 3. Fix cycle ref in peer_mgr & peer_rpc |
||
---|---|---|
.cargo | ||
.github/workflows | ||
easytier-cli | ||
easytier-core | ||
scripts | ||
third_party | ||
.gitignore | ||
.gitmodules | ||
Cargo.toml | ||
LICENSE | ||
README.md |
EasyTier
! NOTICE: THIS SOFTWARE IS STILL BEGIN DEVELOPPING, ONLY POC VERSION IS PROVIDED
A simple out-of-box alternative of ZeroTier & TailScale in rust. Bring all devices to one virtual net.
this software can serve as a substitute for Zerotier or TailScale in certain scenarios due to following features:
-
Easy to deploy.
No roles (moons/derp or other dedicated relay server). All nodes are equal and rely on some p2p algorithms to communicate.
-
Smart route decision.
Use links charged by traffic to reduce latency but free links for high throughout app.
-
Break the UDP throttling.
Try use TCP to achieve better performance under enviraonment with throttled UDP. Also use some methods to avoid HOL-blocking of TCP over TCP.
-
High availibility.
Support multipath and switching to healthy paths when high packet loss rate or network error are detected
EasyTIer also have following common features which are already supported by other softwares, but may be easier to use.
-
Multi-platform support.
-
Effcient P2P hole punching, both UDP & TCP.
-
High performance. Try use multiple wan interface.
-
Subnet Route. node can advertise and proxy one or more subnets, so other nodes can directy access these subnets without any iptables/nft trickys.
Usage
Currently a server with public ip is needed.
run first node on the public node:
sudo easytier-core --ipv4 <VIRTUAL_IP>
run other nodes
sudo easytier-core --ipv4 <VIRTUAL_IP> --peers tcp://<public_ip>:11010
use cli tool to inspect nodes with direct link.
easytier-cli peer
cli tool can also be used to inspect the route table
easytier-cli route
RoadMap
-
Windows / Mac / Linux support
-
TCP / UDP tunnel.
-
NAT Traverse with relaying.
-
NAT Traverse with UDP hole punching.
-
Support shared public server. So users can use it without a public server.
-
Broadcast & Multicast support.
-
Encryption. With noise framework or other method.
-
Support mobile platforms.
-
UI tools.