How does port-forwarding help in torrents?

I use Transmission to download files but it says that a certain port is required to be opened. However, while this port is closed I noticed that I can still download files with no problem. But when I opened the port via my router I can see a significant difference in the download speed. I know the basics of "port-forwarding" and that it forwards the traffic to a certain device on a certain port. So I was thinking that my downloads would not proceed since the port was closed but it didn't. So my question is:

  1. How does port forwarding help in this situation?
  2. Why do my downloads speed up when port-forwarding is enabled?

In short: for BitTorrent (p2p) protocol to work at least one peer has to have a publicly open port (be an active node).

You can run Transmission without port forwarding (stay a passive node) and you will connect, download and seed files with no problems. However your client would only be able to communicate with active nodes.

With port forwarding enabled on your side (becoming an active node) you are increasing the number of peers you can communicate with (you can then exchange data with passive nodes).

This influences the overall transfer rate as the file would be downloaded simultaneously from a larger number of nodes.

The document Analysis of BitTorrent and its use for the Design of a P2P based Streaming Protocol for a Hybrid CDN contains graphs comparing the transfer speed between "firewalled" and "open" peers (refer to page 8):

enter image description here


If uPnP/NAT-PMP was turned off on your torrent client, router, or both, then Inbound connections wouldn't work. You would then need to forward the port to your machine in your router's config or turn uPnP on. Since the forwarding/uPnP mapping is there for inbound connections, it could allow more peers through that previously couldn't connect to you. So if you had forwarding AND uPnP off, then enabled one of them, that might result in an increase.

Barring that, as far as I know, there are no large differences between uPnP vs. manual port forwarding in regards to speed. Maybe some other event happened around that time e.g. you were connected to more peers, your ISP does port based traffic shaping, interference from other programs, etc. but assuming that's not the case, there should be no difference.

(My original answer was not that clear, I'm sorry. Hopefully this is better.)