SSDP/UPnP

RackHD on-http service uses SSDP (Simple Service Discovery Protocol) to advertise its Restful API services and device descriptions. The on-http service will respond to M-SEARCH queries from SSDP enabled clients for requested discovery.

Northbound M-SEARCH Queries

  • Request all: ssdp:all
  • Request Root device description: upnp:rootdevice
  • Request on-http device description: urn:schemas-upnp-org:device:on-http:1
  • Request API v1.1 service: urn:schemas-upnp-org:service:api:1.1
  • Request API v2.0 service: urn:schemas-upnp-org:service:api:2.0
  • Request Redfish v1.0 service: urn:dmtf-org:service:redfish-rest:1.0
  • Example Response:
{
  "ST": "urn:dmtf-org:service:redfish-rest:1.0",
  "USN": "564d4f6e-a405-706e-38ec-da52ad81e97a::urn:dmtf-org:service:redfish-rest:1.0",
  "LOCATION": "http://10.2.3.1:8080/redfish/v1/",
  "CACHE-CONTROL": "max-age=1800",
  "DATE": "Tue, 31 May 2016 18:43:29 GMT",
  "SERVER": "node.js/5.0.0 uPnP/1.1 on-http",
  "EXT": ""
}

Southbound M-SEARCH Queries

  • Request all: ssdp:all
  • Request API v1.1 service: urn:schemas-upnp-org:service:api:1.1:southbound
  • Request API v2.0 service: urn:schemas-upnp-org:service:api:2.0:southbound
  • Request Redfish v1.0 service: urn:dmtf-org:service:redfish-rest:1.0:southbound
  • Example Response:
{
  "ST": "urn:schemas-upnp-org:service:api:2.0:southbound",
  "USN": "564d4f6e-a405-706e-38ec-da52ad81e97a::urn:schemas-upnp-org:service:api:2.0:southbound",
  "LOCATION": "http://172.31.128.1:9080/api/2.0/",
  "CACHE-CONTROL": "max-age=1800",
  "DATE": "Tue, 31 May 2016 18:43:29 GMT",
  "SERVER": "node.js/5.0.0 uPnP/1.1 on-http",
  "EXT": ""
}

Southbound Advertisement Handler

RackHD will poll for SSDP/UPnP advertisements made by nodes residing on the southbound side network. For each advertisement RackHD will publish an alert event to the on.ssdp AMQP exchange to notify layers sitting above RackHD.

  • Exchange: on.ssdp
  • Routing Key prefix: ssdp.alert.*
  • AMQP published message example:
{
    "delivery_info": {
        "consumer_tag": "None1",
        "delivery_tag": 1734,
        "exchange": "on.ssdp",
        "redelivered": false,
        "routing_key": "ssdp.alert.uuid:f40c2981-7329-40b7-8b04-27f187aecfb5::urn:schemas-upnp-org:service:ConnectionManager:1"
    },
    "message": {
        "value": {
            "headers": {
                "CACHE-CONTROL": "max-age=1800",
                "DATE": "Mon, 06 Jun 2016 17:09:34 GMT",
                "EXT": "",
                "LOCATION": "172.31.129.47/desc.html",
                "SERVER": "node.js/0.10.25 UPnP/1.1 node-ssdp/2.7.1",
                "ST": "urn:schemas-upnp-org:service:ConnectionManager:1",
                "USN": "uuid:f40c2981-7329-40b7-8b04-27f187aecfb5::urn:schemas-upnp-org:service:ConnectionManager:1"
            },
            "info": {
                "address": "172.31.129.47",
                "family": "IPv4",
                "port": 1900,
                "size": 329
            }
        }
    },
    "properties": {
        "content_type": "application/json",
        "type": "Result"
    }
}

Configuration Options

Related options defined in config.json. For complete examples see Configuration.

Parameter Description
enableUPnP boolean true or false to enable or disable all SSDP related server/client services.
ssdpBindAddress The bind address to send advertisements on (defaults to 0.0.0.0).