zerotier / ZeroTierOne

A Smart Ethernet Switch for Earth
https://zerotier.com
Other
14.33k stars 1.67k forks source link

Receiving/being assigned a local IPv4 address takes 15-20 seconds after joining a network. Changing system time after zerotier service has started on windows makes joining networks impossible. #2296

Open MarcellVokk opened 4 months ago

MarcellVokk commented 4 months ago

After joining a network, it takes somewhere between 15 to 20 seconds for zerotier to assign a local ipv4 address to the connecting node. This is especialy frustrating because our application requires us to wait for this address before moving on to the next step. I'd apreciate if someone would look into this. Awesome project btw, keep up the good work!

MarcellVokk commented 4 months ago

This is a video demonstrating the issue. It apears to be consistent, it doesn't just hapen to me. My internet is very good, I doubt that would be the problem. As a naive user, I would expect the ip address to be assigned and be accessible immediately after joining a network has completed.

https://github.com/zerotier/ZeroTierOne/assets/40302952/3e534e8a-f9e9-4764-bf9c-9120430edc18

MarcellVokk commented 4 months ago

Possibly related issue I discovered recently:

Changing system time on windows (in my case, I rolled the time back 1 hours) after the zerotier service is started makes joining networks impossible, the network status remains stuck on 'REQUESTING_CONFIGURATION'.

laduke commented 4 months ago

Hello, it will always take some time to set up the interface. The client has to talk to something on the internet to get the information to do you. You will need some kind of wait/check in your scripts no matter what.

MarcellVokk commented 4 months ago

Yeah of course, we already do implement a system that waits for the ip to be received and be configured, but I just wish it could be faster that's all... Would self-hosting my own controller help in this situation?

laduke commented 4 months ago

It depends on your connection to the controller. If the device is just coming online for the first time ever, it might take some time. https://docs.zerotier.com/routertips#is-my-device-relaying

MarcellVokk commented 4 months ago

By device, are you refering to the network device created when joining a room, or the users machine? The zerotier service is started as soon as the machine starts as far as I'm aware (but we make sure the service is started before we try to join any networks of course).

And about relaying, that's actualy a whole other thing. After running a test on our playerbase (we have an application that basicaly uses zerotier to connect people so they can play LAN games online, sort of like hamachi or radmin) of roughly 1,000 players from all around the world, we have discovered that forcing the clients to use tcp relaying greatly reduced network latency (we host our own relays). With default configuration, the games were practicaly unplayable due to lag, with the relay, it's a lot better, altough compared to something like radmin, which is a similar VPN service, it's still significantly slower. Each game typicaly has 2-4 players, and every game gets its own zerotier network. (If there are any tips on how to reduce latency even further I'd be happy to hear them!)