UPnP Support

UPnP support is one of the features introduced in Opera Unite to try to reduce the use of the proxy when a web browser tries to connect to a server widget and at least one of the two is behind a NAT.

At the moment, UPnP support is limited, and focused on the IGD (Internet Gateway Device) protocol, which allows to open a port in a gateway, like a home router.

The UPnP process is divided in four phases:
  • Discovery: it is used to discover the devices connected to the network
  • Description: the device lists all the services available
  • Control: the application can control the devices and invoking the actions required
  • Event notification: the devices can notify events (like a new router or the change of the value of some variables)

  • The main problem is that UPnP support is not guaranteed at all, so we cannot count on it, and we have to use several approaches, depending on the network configuration of the client and of the server, trying to minimize the number of the scenarios that require the proxy.


    NAT Traversal Strategies
    This document explain some scenarios that Opera Unite will have to handle, not only using the UPnP support; at the moment only some of these strategies are implemented or planned.


    UPnP classes usage
    The typical usage of the UPnP classes is very easy, because you only need to ask for port opening.


    Supported Standards
    This module currently (partially) implements the UPnP Internet Gateway Device 1.0 standard (urn:schemas-upnp-org:device:InternetGatewayDevice:1)


    UPnP Specifications
    For full details about UPnP, you can check the UPnP specifications, paying special attention to InternetGatewayDevice and Device Architecture documents.


    In Debug, the log file UPnP.log, is created, to help keeping track of what's happening in the module.