NAT-PMP is another protocol, developed by Apple, released in 2005 to
allow Routers to assign external ports, advise changes etc, it isn't as
prevalent as Upnp is today.
If we were to pick one or the other it's probably smarter to go with
NAT-PMP longer term. Which brings me back to where I started.
For now, I think I'll take the other options, p2p TCP and a Jeri Relay
service, see my earlier posts for details.
Excerpt from the Internet draft at:
http://files.dns-sd.org/draft-cheshire-nat-pmp.txt
Internet Draft NAT Port Mapping Protocol 16th April 2008
9. Noteworthy Features of NAT Port Mapping Protocol
[Temporary Authors' Note (not to be included in published RFC):
The intent of this section is not to bash UPnP, but to be a fair and
accurate comparison of NAT-PMP and IGD. NAT-PMP is frequently compared
to IGD, because superficially it might appear that they perform much the
same task, so it would be an omission for this document to ignore that
and try to pretend the issue doesn't exist. The purpose of this section
is to point out the relevant differences so that implementors can make
an informed decision. If we have any errors or omissions in our
descriptions of how IGD works for creating port mappings, we invite and
welcome feedback from IGD experts who can help us correct those
mistakes.]
Some readers have asked how NAT-PMP compares to other similar
solutions, particularly the UPnP Forum's Internet Gateway Device
(IGD) Device Control Protocol [IGD].
The answer is that although UPnP IGD is often used as a way for
client devices to create port mappings programmatically, that's not
what it was created for. Whereas NAT-PMP was designed to be used
primarily by software entities managing their own port mappings, UPnP
IGD was designed to be used primarily by humans configuring all the
settings of their gateway using some user interface tool. This
different target audience leads to protocol differences. For example,
while it is reasonable and sensible to require software entities to
renew their mappings periodically to prove that they are still there,
it's not reasonable to require the same thing of a human user. When
a human user configures their gateway, they expect it to stay
configured that way until they decide to change it. If they configure
a port mapping, they expect it to stay configured until they decide
to delete it.
Because of this focus on being a general administation protocol for
all aspects of home gateway configuration, UPnP IGD is a large and
complicated collection of protocols (360 pages of specification
spread over 13 separate documents, not counting supporting protocol
specifications like SSDP and XML). While it may be a fine way for
human users to configure their home gateways, it is not especially
suited to the task of programmatically creating port mappings.
The requirements for a good port mapping protocol, requirements which
are met by NAT-PMP, are outlined below:
9.1. Simplicity
Many home gateways, and many of the devices that connect to them,
are small, low-cost devices, with limited RAM, flash memory, and CPU
resources. Protocols they use should be considerate of this,
supporting a small number of simple operations that can be ...