Networking isn't my specialty, so I won't get overly technical. It's probably a good idea to look at it really simply anyway.
Some hardware devices or software applications require that they be discoverable and that network communication can be made with them directly without them asking for it first. For example, a printer will sit on a network waiting for a client to talk directly to it, not continually ask clients if they have anything to print. The problem is that sometimes this means you have to configure the devices that control how the networks communicate in such a way that they allow traffic to these devices when required. This is particularly troublesome in home/consumer networks where people generally just want to plug things in and have it work.
uPnP is a protocol that basically helps facilitate all of that configuration... automatically. If your router supports uPnp and you plug a uPnp-enabled device into your network the conversation might go roughly like this: Device broadcasts out (sends to everything) "Hey! I'm here. You need to talk to me on port 1234." The router picks this up and says, "Sure. Oh, wait. I've had my firewall turned on. Let me just make a quick adjustment here so that your traffic is allowed through."
In general, a router that is connecting your home network to the internet does not know what to do with incoming connections (coming from the internet) if it's not in response to an existing outgoing connection. So you need to tell it, "I've got this computer sitting in my network. I'm playing ED on it. FD is going to try to send me data on port 5100. If you see any of that, send it my way." uPnp allows for this to be configured automatically for you.
It would make sense for this to be turned on since many consumer routers support uPnp and this makes client configuration a
whole lot easier for everyone.
It doesn't always make sense, though. My network sits behind a software firewall/gateway that does not support uPnp at all (and I wouldn't really want it to - I prefer to have control). So when my ED client sends out it's uPnp broadcasts, they are completely ignored and nothing gets set up. So I have to disabled that setting and configure my firewall manually to forward ED traffic to the PC I play on.
There is a fallback, of course, which
should work. There is the ability (which now seems to be selectable rather than automatic) to relay through FDs servers. The gets around the inbound connection problem because once your client determines that it needs to do this, it will start making outgoing connections first which FDs servers can then respond to.
Hmm. I had every intention of making this a short, quick, response. Oh, well.
...and I certainly hope I didn't oversimplify it to the point of being condescending. That wasn't my intention.
- - - Updated - - -
And then someone goes and sums it up in two sentences.