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_3
  • cdrouter_upnp_igd2_10
  • cdrouter_upnp_igd2_12
  • cdrouter_upnp_igd2_20
  • cdrouter_upnp_igd2_25
  • cdrouter_upnp_igd2_30
  • cdrouter_upnp_igd2_31
  • cdrouter_upnp_igd2_32
  • cdrouter_upnp_igd2_35
  • cdrouter_upnp_igd2_36
  • cdrouter_upnp_igd2_40
  • cdrouter_upnp_igd2_41
  • cdrouter_upnp_igd2_45
  • cdrouter_upnp_igd2_50
  • cdrouter_upnp_igd2_100
  • cdrouter_upnp_igd2_200
  • cdrouter_upnp_igd2_201
  • cdrouter_upnp_igd2_202
  • cdrouter_upnp_igd2_203
  • cdrouter_upnp_igd2_204
  • cdrouter_upnp_igd2_210
  • cdrouter_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_1
  • ipv6_ssdp_2
  • ipv6_ssdp_3
  • ipv6_ssdp_4
  • ipv6_ssdp_5
  • ipv6_ssdp_6
  • ipv6_upnp_10
  • ipv6_upnp_12
  • ipv6_upnp_20
  • ipv6_upnp_25
  • ipv6_upnp_30
  • ipv6_upnp_31
  • ipv6_upnp_32
  • ipv6_upnp_35
  • ipv6_upnp_36
  • ipv6_upnp_40
  • ipv6_upnp_41
  • ipv6_upnp_45
  • ipv6_upnp_50
  • ipv6_upnp_100
  • ipv6_upnp_200
  • ipv6_upnp_201
  • ipv6_upnp_202
  • ipv6_upnp_203
  • ipv6_upnp_204
  • ipv6_upnp_210
  • ipv6_upnp_220

Additionally, there are a number of new test cases which verify IGDv2 functionality when UPnP is run over IPv6:

  • ipv6_ssdp_igd2_3
  • ipv6_upnp_igd2_10
  • ipv6_upnp_igd2_12
  • ipv6_upnp_igd2_20
  • ipv6_upnp_igd2_25
  • ipv6_upnp_igd2_30
  • ipv6_upnp_igd2_31
  • ipv6_upnp_igd2_32
  • ipv6_upnp_igd2_35
  • ipv6_upnp_igd2_36
  • ipv6_upnp_igd2_40
  • ipv6_upnp_igd2_41
  • ipv6_upnp_igd2_45
  • ipv6_upnp_igd2_50
  • ipv6_upnp_igd2_100
  • ipv6_upnp_igd2_200
  • ipv6_upnp_igd2_201
  • ipv6_upnp_igd2_202
  • ipv6_upnp_igd2_203
  • ipv6_upnp_igd2_204
  • ipv6_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_220
  • ipv6_upnp_igd2_230
  • ipv6_upnp_igd2_300
  • ipv6_upnp_igd2_301
  • ipv6_upnp_igd2_302
  • ipv6_upnp_igd2_303
  • ipv6_upnp_igd2_304
  • ipv6_upnp_igd2_305
  • ipv6_upnp_igd2_306
  • ipv6_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.