The Dynamic Port Reservation Protocol
A Master's Thesis by Andrew Reitz
In the current Internet, Network Address Translation (NAT) gateways that provide port address translation are quite popular. These gateways allow many hosts to be multiplexed on one single IP address and still maintain full outbound connectivity. However, the ability to share a single IP address with many hosts doesn't come for free - the NAT denies these hosts the ability to receive unsolicited inbound connections.
The lack of inbound connectivity is fine for a user base that wishes to only surf the web and check e-mail. However, with the rise of peer-to-peer applications such as instant messaging, Napster and Internet-enabled games, users are demanding inbound connectivity at an ever-increasing rate.
Most NAT gateways already provide a method to restore limited inbound connectivity. It is possible to instruct the NAT gateway to forward unsolicited inbound packets on a specific port to a specific internal host. This is typically hard to configure and is only available to the administrators of the NAT gateway.
In order to make the port-forwarding solution generally usable, a new network protocol is needed. The Dynamic Port Reservation Protocol (DPRP) allows end-users to establish their own port-forwarding rules on the NAT gateway. These port forwarding rules are not static -- rather, they are dynamic. End users are only able to get a lease on a port, which they may use for a limited period of time, before it is reclaimed by the NAT gateway. In this manner, the gateway administrator is able to keep some measure of control over the port-forwarding rules and users are able to run their peer-to-peer applications with full functionality.
Read the entire document:
In order to validate this work, a reference DPRP client and server were implemented in Sun's Java programming environment. The following source code package contains both DPRP clients (both command-line and GUI based), as well ad the reference DPRP server. The reference DPRP server can optionally be integrated with a Linux/Netfilter environment, to create an actual, working DPRP-enabled NAT gateway. Finally, the source code package contains a patch to the XNap Napster client, which enables it for DPRP operation.
- Slide presentation, in PowerPoint format (248Kb)
- Overview presentation poster
- Behind-the-scenes documents