Very Slow Sync Speed When Server Connected To Xfinity Gateway vs Router

Here’s My Original Setup which worked great and download/upload speeds were blazing fast. I used all the default settings originally:

-Xfinity Gateway with Asus router attached via cat5e
-Arch Linux server connected to Asus router via cat5e
-Primary Arch Linux pc connected to Asus router via cat5e

Now I had to move my server connection straight to the Xfinity Gateway for other reasons, while my main pc is still connected to the Asus router. Now it’s this:

-Xfinity Gateway with Asus router attached via cat5e
-Arch Linux server connected to Xfinity Gateway via cat5e
-Primary Arch Linux pc connected to Asus router via cat5e

Transfer speeds have dropped to a crawl. I’m seeing download speeds of 100-200kbs vs the high mb range I was seeing when both units were connected to the Asus router. I’ve tried forwarded ports 22000 & 21027 on Xfintity Gateway and the speed remain the same…very slow. What can I do to get the speeds up. It’s still technically the same network. I’m very confused as to why it dropped like that.

Also another note, both routers support UPnP, but the option is greyed out on the Linux Syncthing client. Not sure if that matters or not.

You should hardcode addresses of the devices in the device edit dialog. You are likely getting connected via relay because you are in different subnets or your router is preventing multicasts.

Should that be done with each computer I use Syncthing on or just the server? Would that also help with speeding things up when I’m connected to a computer outside of my network (aka at my work to sync to my computers at home)? Ideally I’d like to only have the ports forwarded for just the server, while my other computers that use Syncthing I’d like to keep the default dynamic settings for simplicity.

Also should I be using my local IP or Public IP?

edit: do the ports need to even be forwarded, if dynamic is the setting, it should default to 22000 & 21027 correct? Then its just entering the ip:port as the address to the server on each connecting machine?

Please check the docs firewall/forwarding section, and if you still have questions, ask them here.

What do you mean ask in the firewall section, that’s a doc section not a forum. What I’ve done is disabled all forwarded ports, reverted back to default dynamic settings, reconnected back to the Asus and speeds are good at home on my home network.

Now my issue is with my computers in other locations. Ex. my work computer which is in a different city/network. Syncthing connects and works, but it’s very slow to sync to these computers. All forum posts seem to state nonsense about the CPU being too slow, but that is not the case here. Syncthing is fast on local, slow away from local…very slow. Like an hour or two to transfer a 500mb video file, while at home it takes seconds.

Yes, check firewall section in the docs, it explains how to setup forwarding.

So what your saying is that forwarding the port will make it sync faster? Please be clear here, as I tried this already and it did not work. Syncing was extremely slow. I’m gonna list what I think you are trying to say, please let me know if this is accurate.

-Forward a port to syncthing other than default on the server (say 22050).

-Set syncthing to use that port in the device settings (DO I USE MY LOCAL OR PUBLIC IP).

-On connecting computers set the address that I set on the server as the target address for the server.

-Syncing from outside the network should now be faster? Is this correct? I honestly cannot believe I’m the only one with this issue, everyone uses another router on top of their gateways.

You haven’t read the docs properly. You need to forward exactly the same external port to the same internal port that syncthing is listening on. Syncthing has no way to figure out which port you forwarded to announce it if its not the same its listening on.

Then add an extra device address on the remote side with you external ip and that forwarded port.

When syncthing is connected, you can hover on the address field in the UI and it will explain what type of connection it has. If it’s a relay connection, it’s going to be slow and your port forwarding is not working.

I appreciate your help, but the questions I’m asking are not in that doc thread or a are not clear. There are 2 settings for ports to be forwarded according to the docs. Here is the exact text from the firewall doc page:

Local Firewall

If your PC has a local firewall, you will need to open the following ports for incoming and outgoing traffic:

Port 22000/TCP (or the actual listening port if you have changed the Sync Protocol Listen Address setting.) Port 21027/UDP (for discovery broadcasts on IPv4 and multicasts on IPv6)

It lists 2 ports, one being variable (the 22000 listening port, which can be changed). And if I’m reading this right, port 21027 which does not list if it can be changed or not. Because I use sycthing on several computers I’m guessing I have to set & forward a port different than 22000 is that correct? And what about the discovery port? Can the be variable, where do I plug that in on the client side. Pointing someone to a doc page and saying its all there doesn’t help, when the docs are vague and assume that you already know certain things. What you just said is the exact opposite of what the doc is saying, there it’s saying 2 ports need to be forwarded, your saying they need to be the same.

If you have two computers on the network, and you want forward both devices to the outside/internet, yes, you’d have to change one of their listen ports (22000) to be able to forward both of them, as the external and internal port has to match.

The UDP port (21027) does not need to be forwarded as it’s used for local discovery within the local network, so makes no sense to forward that outside. Global discovery works over HTTPS, so there is no need to forward anything. Local discovery UDP port is mentioned only for the purpose of local firewalls on the machine rather than forwarding.

The documentation is maintained mostly by the community, so if you feel it’s insufficient, feel free to improve it.

OMG…I just am missing something that I’m sure is simple, but this is just not working at all. I’ve forwarded port #22050 to the server computer.

In daemon settings “sync protocol listen address” I’ve entered the number 22050 instead of default. Local discovery port is listed as 21027 (i didn’t change that) and global discovery says default. Restarted the daemon, restarted the machine and it’s just not using that port. Running a net activity tool shows that 22050 is not used by anything. Everything is forwarded correctly.

Where and how exactly do I tell synthing what port to use and what exactly do I enter in the field. I can’t believe how complicated this is for something so simple as assigning a port.

It’s protocol address field in settings, but you probably want to add relay listen addresses too, expanding what default means, and just modifying the port. Just specifying the port is not enough, you have to specify the protocol etc as shown in the config section in the docs.

To be exact: https://docs.syncthing.net/users/config.html#listen-addresses

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.