UPnP Device Architecture
Networking is easy, except… Ad hoc networks don't have resources just for the sake of the network E.g., DHCP, DNS, directory, … Network is unreliable Nodes added / removed unpredictably Programs need to talk to programs But software is heterogeneous One size doesn't fit all Must upgrade system piece at a time
UPnP Strategy 1. Just send data over the network (No executables) Minimize version issues Minimize security issues 2. Keep implementation private Be agnostic re: programming language, OS Update implementation w/o affecting interop Improve performance Reduce footprint Improve capabilities 3. Agree on meaning / format of data Choose substrate of proven protocols Define device (service) specific protocols in a Forum
UPnP Tactics Start simple Build in only universal things that everybody needs (and can live with) Add as needed Minimize requirements Basic IP network connectivity Common HTTP protocol stack Leverage existing standards HTTP, XML
Goals Describe the protocols for communication between Control points Controller, usually client Device Controlled, usually server An actual device might contain both functionsDeviceDeviceServiceService Control Point DeviceDevice ServiceService
Steps to UPnP Networking 0 Control point and device get addresses 1 Control point finds interesting device 2 Control point learns about device capabilities 3 Control point invokes actions on device 4 Control point listens to state changes of device 5 Control point controls device and/or views device status using HTML UI 0 Addressing 1 Discovery 2 Description 5 Presentation 4 Eventing 3 Control
Vendor-specific API above Vendor-specific OS below UPnP Protocol Stack Vendor-specific physical net UPnP Device Architecture UDPUDP IPIP HTTPU/MUHTTPU/MU GENAGENASSDPSSDP SOAPSOAP HTTPHTTP HTTPHTTP GENAGENA TCPTCP UPnP Forum UPnP vendor
Steps to UPnP Networking 0* Control point and device get addresses 1 Control point finds interesting device 2 Control point learns about device capabilities 3 Control point invokes actions on device 4 Control point listens to state changes of device 5 Control point controls device and/or views device status using HTML UI 0* Addressing 1 Discovery 2 Description 5 Presentation 4 Eventing 3 Control
0 Addressing Control point and device get address Use a DHCP server Else use Auto IP What is Auto IP? IETF Draft Automatically Choosing an IP Address in an Ad-Hoc IPv4 Network What steps does it take? Pick an address in /16 range Check to see if it is used (ARP) Periodically check for DHCP server
Steps to UPnP Networking 0 Control point and device get addresses 1* Control point finds interesting device 2 Control point learns about device capabilities 3 Control point invokes actions on device 4 Control point listens to state changes of device 5 Control point controls device and/or views device status using HTML UI 0 Addressing 1* Discovery 2 Description 5 Presentation 4 Eventing 3 Control
1 Discovery Control point finds interesting device 0 get address 1 discover device Advertise / find typed devices (services) Guarantee of minimal capabilities Simple Devices Advertise when added Refresh advertisements (cf. lease) Cancel advertisements when removed Control points search as needed Devices respond Control points filter
1 Discovery: Protocol Stack UPnP vendor UPnP Forum UPnP Device Architecture UDPUDP IPIP HTTPMU (multicast) GENAGENASSDPSSDP HTTPU (unicast) SSDPSSDP
1 Discovery: SSDP Sidebar What is SSDP? IETF Draft Simple Service Discovery Protocol Key design principles Administratively-scoped multicast Unicast responses UDP Very simple advertisements Very simple search
1 Discovery: Advertising Who? Device multicasts When? Added or refresh (cf. lease) What? 1 time / service type with NT == service type 1 time / device type with NT == device type 1 time / device with NT == device UUID upnp:rootdevice 1 time with NT == upnp:rootdevice NOTIFY * HTTP/1.1 HOST: :1900 CACHE-CONTROL: max-age = seconds until advertisement expires LOCATION: URL for UPnP description for root device NT: search target NTS: ssdp:alive USN: advertisement UUID
1 Discovery: Searching Who? Control point multicasts When? Looking for device or service What? ST one of Service type Device type Device UUID upnp:rootdevice upnp:rootdevice ssdp:all ssdp:all M-SEARCH * HTTP/1.1 HOST: :1900 MAN: "ssdp:discover" MX: seconds to delay response ST: search target
1 Discovery: Responding Who? Device unicasts When? If ST matches an NT What? 1 time for each NT that matches Very simple matching HTTP/ OK CACHE-CONTROL: max-age = seconds until advertisement expires LOCATION: URL for UPnP description for root device ST: search target USN: advertisement UUID
Steps to UPnP Networking 0 Control point and device get addresses 1 Control point finds interesting device 2* Control point learns about device capabilities 3 Control point invokes actions on device 4 Control point listens to state changes of device 5 Control point controls device and/or views device status using HTML UI 0 Addressing 1 Discovery 2* Description 5 Presentation 4 Eventing 3 Control
2 Description Control point learns about device capabilities 0 get address 1 discover device get URL for description 2 retrieve descr get URL for service description Declare capabilities Protocol stack UPnP vendor UPnP Forum UPnP Device Architecture IPIP HTTPHTTP TCPTCP
2 Description Device description Type Physical container Logical container For each service Type URL for description URL for control URL for eventing UI Icons URL for presentation Services Functional units within devices Service description Actions State variables Actual (vs. designed) implementation Expressed in XML
2 Description: XML Sidebar What is XML? W3C Recommendation Extensible Markup Language "Universal format for structured documents and data on the Web." Field names in Field values between names Defines 24 data types ui1, ui2, ui4, i1, i2, i4, int r4, r8, number, fixed.14.4, float char, string date, dateTime, dateTime.tz, time, time.tz boolean bin.base64, bin.hex uri uuid
2 Description: Device (phys) base URL for all relative URLs short user-friendly title manufacturer name URL to manufacturer site long user-friendly title model name model number URL to model site manufacturer's serial number uuid:UUID Universal Product Code urn:schemas-upnp-org:device:deviceType urn:schemas-upnp-org:service:serviceType:v urn:upnp-org:serviceId:serviceID URL to service description URL for control URL for eventing Declarations for other services (if any) go here Description of embedded devices (if any) go here image/format horizontal pixels vertical pixels color depth URL to icon XML to declare other icons, if any, go here URL for presentation 1 0
2 Description: Device (logical) base URL for all relative URLs short user-friendly title manufacturer name URL to manufacturer site long user-friendly title model name model number URL to model site manufacturer's serial number uuid:UUID Universal Product Code urn:schemas-upnp-org:device:deviceType :v urn:schemas-upnp-org:service:serviceType:v urn:upnp-org:serviceId:serviceID URL to service description URL for control URL for eventing Declarations for other services (if any) go here Description of embedded devices (if any) go here image/format horizontal pixels vertical pixels color depth URL to icon XML to declare other icons, if any, go here URL for presentation 1 0
2 Description: Device (other) base URL for all relative URLs short user-friendly title manufacturer name URL to manufacturer site long user-friendly title model name model number URL to model site manufacturer's serial number uuid:UUID Universal Product Code urn:schemas-upnp-org:device:deviceType urn:schemas-upnp-org:service:serviceType:v urn:upnp-org:serviceId:serviceID URL to service description URL for control URL for eventing Declarations for other services (if any) go here Description of embedded devices (if any) go here image/format horizontal pixels vertical pixels color depth URL to icon XML to declare other icons, if any, go here URL for presentation 1 0
2 Description: Service (actns) actionName formalParameterName in xor out stateVariableName Declarations for other arguments (if any) go here Declarations for other actions (if any) go here variableName variable datatype default value minimum value maximum value increment value variableName variable data type default value some value some value Declarations for other state variables (if any) go here 1 0
2 Description: Service (vars) actionName formalParameterName in xor out stateVariableName Declarations for other arguments (if any) go here Declarations for other actions (if any) go here variableName variable datatype default value minimum value maximum value increment value variableName variable data type default value some value some value Declarations for other state variables (if any) go here 1 0
2 Description: Service (vars) actionName formalParameterName in xor out stateVariableName Declarations for other arguments (if any) go here Declarations for other actions (if any) go here variableName variable datatype default value minimum value maximum value increment value variableName variable data type default value some value some value Declarations for other state variables (if any) go here 1 0
Steps to UPnP Networking 0 Control point and device get addresses 1 Control point finds interesting device 2 Control point learns about device capabilities 3* Control point invokes actions on device 4 Control point listens to state changes of device 5 Control point controls device and/or views device status using HTML UI 0 Addressing 1 Discovery 2 Description 5 Presentation 4 Eventing 3* Control
3 Control Control point invokes actions on device 0 get address 1 discover device 2 retrieve descr get URL for control 3 send actions to device Protocol stack UPnP vendor UPnP Forum UPnP Device Architecture IPIP SOAPSOAP HTTPHTTP TCPTCP
3 Control: SOAP Sidebar What is SOAP? IETF Draft Simple Object Access Protocol "Lightweight, XML-based protocol for exchange of information in a decentralized, distributed environment." Envelope: defines a framework for describing what is in a message and how to process it. Convention: represent remote procedure calls and responses.
3 Control: Invoke Action Who? Control point When? To invoke action on device What? POST path of control URL HTTP/1.1 HOST: host of control URL:port of control URL CONTENT-TYPE: text/xml; charset="utf-8" SOAPACTION: "urn:schemas-upnp-org:service:serviceType:v#actionName" in arg value other in args and their values (if any) go here
3 Control: Action Result Who? Device When? Action completes What? HTTP/ OK CONTENT-TYPE: text/xml; charset="utf-8" HTTP/ OK CONTENT-TYPE: text/xml; charset="utf-8" out arg value other out args and their values (if any) go here
Steps to UPnP Networking 0 Control point and device get addresses 1 Control point finds interesting device 2 Control point learns about device capabilities 3 Control point invokes actions on device 4* Control point listens to state changes of device 5 Control point controls device and/or views device status using HTML UI 0 Addressing 1 Discovery 2 Description 5 Presentation 4* Eventing 3 Control
4 Eventing Control point listens to state changes of device 0 get address 1 discover device 2 retrieve descr get URL for eventing 4 subscribe to events from device Basic push model Simple Protocol stack UPnP vendor UPnP Forum UPnP Device Architecture IPIP HTTPHTTP GENAGENA TCPTCP
4 Eventing: GENA Sidebar What is GENA? IETF Draft General Event Notification Architecture "Send and receive notifications using HTTP over TCP/IP and administratively- scoped multicast UDP." SUBSCRIBE to notifications UNSUBSCRIBE NOTIFY Of device availability Of state variable changes
4 Eventing: Subscribing Who? Control point When? Before receiving any events What? SUBSCRIBE publisher path HTTP/1.1 HOST: publisher host:publisher port CALLBACK: NT: upnp:event TIMEOUT: Second-requested subscription duration
4 Eventing: Subscription Who? Device When? Accepts subscription What? Device immediately sends a special, initial event to control point with the value of all evented variables HTTP/ OK SID: uuid:subscription-UUID TIMEOUT: Second-actual subscription duration
4 Eventing: Notify Who? Device When? A state variable changes What? NOTIFY delivery path HTTP/1.1 HOST: delivery host:delivery port CONTENT-TYPE: text/xml NT: upnp:event NTS: upnp:propchange SID: uuid:subscription-UUID SEQ: event key new value Other variable names and values (if any) go here
Steps to UPnP Networking 0 Control point and device get addresses 1 Control point finds interesting device 2 Control point learns about device capabilities 3 Control point invokes actions on device 4 Control point listens to state changes of device 5* Control point controls device and/or views device status using HTML UI 0 Addressing 1 Discovery 2 Description 5* Presentation 4 Eventing 3 Control
5 Presentation Control point controls device and/or views device status using HTML UI 0 get address 1 discover device 2 retrieve descr get URL for presentation 5 load presentation page (Don't constrain implementation) Protocol stack UPnP vendor UPnP Device Architecture IPIP HTTPHTTP TCPTCP
Summary UPnP says 1. Just send data 2. Keep implementation private 3. Agree on content / format of data UPnP is Web-based protocols Tailored by a Forum for device (service) types That are API, OS, physical network neutral For discovery, description, control, eventing (And simple HTML UI too) For more information Resources: Questions?