Hi team,
Love what you do. Just a quick question as to why some relays are missing info? The relay that I’m connected to seems to be completely blank.
Thanks
Hi team,
Love what you do. Just a quick question as to why some relays are missing info? The relay that I’m connected to seems to be completely blank.
Thanks
This happens when a relay’s status service is disabled or unreachable. The way this works is that relays are run by volunteers. A relay announces itself to the global relay pool server (hosted by the syncthing project) to be publicly known. However, this announce doesn’t contain any statistics about the relay. Instead, each relay server hosts a separate status service (by default on port 22070, see the relay server documentation). The global relay pool server - which also hosts the stats page you’re looking at - connects to each relay’s status service to retrieve the stats you’re seeing. The relay operator can choose to disable the status service (or just experience connection issues) which causes the pool server to be unable to reach the status service. In such a case, the relay is still part of the global pool, but the pool server won’t be able to show any data about the relay (except basic address information).
Hi @Nummer378
Thanks so much for the detailed response!! That makes complete sense. I’m surprised syncthing allows servers to not show their statistics as their status site looks fantastic apart from the blank parts.
In any case, is there a way for me to limit my relay usage to only relays that advertise their statistics? Furthermore, are there any dangers in connecting to a random relay which you don’t necessarily know? I understand that it’s all end to end encrypted but want to make sure I’m on the right page.
Thanks again!
I think the main point to remember is that these stats are only supposed to be supplemental information and should not be relied on. They’re self-reported by each relay and any relay operator can theoretically send anything here (i.e. you can set up a relay and report the number of sessions as infinite, the number of bytes transferred as -3 gigazillion etc.). This is all just “for your information” but not technically required information for relay operation.
Not directly, but you can technically instruct syncthing to connect to only specific relays. This requires handcrafting a list of relay servers which you then configure in syncthing as the only relay servers (thus bypassing the pool server, which would normally give you all relays it knows). Alternatively, if you have the skills, you can also set up some self-hosted magic service that proxies the pool server but truncates the list of relays.
The security page has a short paragraph on relay security, which sums it all up. Effectively, by design, the only thing a relay knows is whether two syncthing devices have a connection and how much traffic there is between them. All relays are considered as untrusted by syncthing and do not receive more information than they need to, hence the end-to-end encryption even across relays.
Ideally, you do not even connect to any relay. Not because of security, but because relaying is a gamble performance-wise: Some relays may be fast with a lot of bandwidth, but other relays may be operating at their capacity. A syncthing device chooses a relay at random with a bias towards relays with low latency, but that’s it. Syncthing doesn’t know if a relay it is connected to is fast or slow. As such, relay connections tend to be slow or even unreliable, which is why they’re considered a last-resort measure for cases where a direct connection really isn’t possible. If you’re looking to optimize your network, getting rid of the relay connections would be the first step. (You can still have relaying enabled just in case, but ideally you won’t use them much)
I think it’s usually because you need to do additional port forwarding specifically for the status service, and the service isn’t really required to have the relay running, so many people would probably not care enough about doing it.
Hi @Nummer378,
That’s a very good point, one that is especially important when considering this whole project is open source. This makes complete sense, thanks for the in depth explanation once again.
As for bypassing the pool server, I will look into this further. I find it quite interesting seeing this data in terms of how many people are using and contributing to syncthing so I’ll personally select a relay server with good reliability which chooses to share statistics. I would be very interested in hosting my own relay, however, don’t currently have the isolated network setup that would be disconnected from my internal LAN. Something I’ll be looking into in the future for sure.
Sadly relays are my only option as I’m trying to connect to a friend who cannot port forward due to CGNAG.
Thanks again for your amazing advice!!!