UPnP Testing Guide
Introduction
CDRouter supports InternetGatewayDevice:2 (IGDv2) device support, UPnP over
IPv6 test cases as well as a general tuneup of CDRouter’s UPnP control point
implementation. This article aims to give a brief overview of the new
test features, describe any configuration changes that may be
necessary and outline a few small changes to be aware of when using
CDRouter to test the UPnP functionality of your device.
IGDv2 Support
The UPnP Forum plans to deprecate InternetGatewayDevce:1 (IGDv1)
support in the near future. CDRouter 9.0 adds the following new test
cases which verify support for InternetGatewayDevce:2 (IGDv2)
devices:
cdrouter_ssdp_igd2_3cdrouter_upnp_igd2_10cdrouter_upnp_igd2_12cdrouter_upnp_igd2_20cdrouter_upnp_igd2_25cdrouter_upnp_igd2_30cdrouter_upnp_igd2_31cdrouter_upnp_igd2_32cdrouter_upnp_igd2_35cdrouter_upnp_igd2_36cdrouter_upnp_igd2_40cdrouter_upnp_igd2_41cdrouter_upnp_igd2_45cdrouter_upnp_igd2_50cdrouter_upnp_igd2_100cdrouter_upnp_igd2_200cdrouter_upnp_igd2_201cdrouter_upnp_igd2_202cdrouter_upnp_igd2_203cdrouter_upnp_igd2_204cdrouter_upnp_igd2_210cdrouter_upnp_igd2_220
IGDv2 is backwards compatible with IGDv1, meaning a device which
advertises support for InternetGatewayDevice:2 implicitly also
supports InternetGatewayDevice:1. CDRouter 9.0 adds a new testvar
upnpDevice which should be set to
InternetGatewayDevice:2 if your device supports IGDv2, otherwise set
it to InternetGatewayDevice:1. CDRouter will automatically skip
tests which require IGDv2 support if this testvar is not set to
InternetGatewayDevice:2.
Please see the CDRouter Test Summaries page for descriptions of the new test cases.
UPnP over IPv6
CDRouter also introduces a new test module upnp-v6.tcl. This
module includes many test cases from upnp.tcl modified to send UPnP
messages over IPv6:
ipv6_ssdp_1ipv6_ssdp_2ipv6_ssdp_3ipv6_ssdp_4ipv6_ssdp_5ipv6_ssdp_6ipv6_upnp_10ipv6_upnp_12ipv6_upnp_20ipv6_upnp_25ipv6_upnp_30ipv6_upnp_31ipv6_upnp_32ipv6_upnp_35ipv6_upnp_36ipv6_upnp_40ipv6_upnp_41ipv6_upnp_45ipv6_upnp_50ipv6_upnp_100ipv6_upnp_200ipv6_upnp_201ipv6_upnp_202ipv6_upnp_203ipv6_upnp_204ipv6_upnp_210ipv6_upnp_220
Additionally, there are a number of new test cases which verify IGDv2 functionality when UPnP is run over IPv6:
ipv6_ssdp_igd2_3ipv6_upnp_igd2_10ipv6_upnp_igd2_12ipv6_upnp_igd2_20ipv6_upnp_igd2_25ipv6_upnp_igd2_30ipv6_upnp_igd2_31ipv6_upnp_igd2_32ipv6_upnp_igd2_35ipv6_upnp_igd2_36ipv6_upnp_igd2_40ipv6_upnp_igd2_41ipv6_upnp_igd2_45ipv6_upnp_igd2_50ipv6_upnp_igd2_100ipv6_upnp_igd2_200ipv6_upnp_igd2_201ipv6_upnp_igd2_202ipv6_upnp_igd2_203ipv6_upnp_igd2_204ipv6_upnp_igd2_210
Finally, there are a number of new test cases which verify support for
the WANIPv6FirewallControl:1 service which is part of the IGDv2
specification and allows creating IPv6 firewall holes using UPnP:
ipv6_upnp_igd2_220ipv6_upnp_igd2_230ipv6_upnp_igd2_300ipv6_upnp_igd2_301ipv6_upnp_igd2_302ipv6_upnp_igd2_303ipv6_upnp_igd2_304ipv6_upnp_igd2_305ipv6_upnp_igd2_306ipv6_upnp_igd2_307
Please see the IPv6 Test Summaries page for descriptions of the new test cases.
UPnP 1.0 versus 1.1
There are two revisions of the UPnP Device Architecture specification,
oftentimes referred to as the UPnP version. UPnP version 1.1 added
support for unicast M-SEARCH messages, a number of new required
headers in M-SEARCH responses as well as a number of other small
changes. In its UPnP test cases, CDRouter behaves as a UPnP v1.1
control point (conforming to v1.1 of the UPnP Device Architecture
specification). However, CDRouter supports testing either v1.0 or
v1.1 devices. CDRouter 9.0 introduces a new testvar upnpVersion
which should be set to 1.1 if your device supports
UPnP v1.1, otherwise set it to 1.0.
References
Both version 1.0 and version 1.1 of the UPnP Device Architecture specification can be downloaded from the UPnP Forum’s Device Architecture Documents page.
Official device control protocol specifications for
InternetGateway:1 (IGDv1) and InternetGateway:2 (IGDv2) as well as
many other DCPs can be downloaded from the UPnP Forum’s
Standards: Device Control Protocols
page.