upnp device architecture. networking is easy, except… ad hoc networks don't have resources...

Post on 30-Mar-2015

216 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

UPnP Device ArchitectureUPnP Device Architecture

Networking is easy, except…Networking is easy, except…Ad hoc networks don't have

resources just for the sake of the networkE.g., DHCP, DNS, directory, …

Network is unreliableNodes added / removed unpredictably

Programs need to talk to programsBut software is heterogeneousOne size doesn't fit all

Must upgrade system piece at a time

UPnP StrategyUPnP Strategy1. 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 TacticsUPnP TacticsStart simple

Build in only universal things that everybody needs (and can live with)

Add as neededMinimize requirements

Basic IP network connectivityCommon HTTP protocol stack

Leverage existing standardsHTTP, XML

GoalsGoalsDescribe the protocols for

communication betweenControl points

Controller, usually clientDevice

Controlled,usually server

An actual devicemight containboth functions

DeviceDeviceDeviceDevice

ServiceServiceServiceService

Control PointControl PointControl PointControl Point

Control PointControl PointControl PointControl Point

DeviceDeviceDeviceDevice

ServiceServiceServiceService

Steps to UPnP NetworkingSteps 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 Addressing0 Addressing

1 Discovery1 Discovery

2 Description2 Description

5 Presentation5 Presentation4 Eventing4 Eventing3 Control3 Control

Vendor-specific API above

Vendor-specific OS below

UPnP Protocol StackUPnP Protocol Stack

Ven

do

r-sp

ecif

ic p

hys

ical

net

UPnP Device ArchitectureUPnP Device ArchitectureUPnP Device ArchitectureUPnP Device Architecture

UDPUDPUDPUDP

IPIPIPIP

HTTPU/MUHTTPU/MUHTTPU/MUHTTPU/MUGENAGENAGENAGENA SSDPSSDPSSDPSSDP SOAPSOAPSOAPSOAP

HTTPHTTPHTTPHTTP

HTTPHTTPHTTPHTTPGENAGENAGENAGENA

TCPTCPTCPTCP

UPnP ForumUPnP ForumUPnP ForumUPnP Forum

UPnP vendorUPnP vendorUPnP vendorUPnP vendor

Steps to UPnP NetworkingSteps 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* Addressing0* Addressing

1 Discovery1 Discovery

2 Description2 Description

5 Presentation5 Presentation4 Eventing4 Eventing3 Control3 Control

0 Addressing0 AddressingControl point and device get address

Use a DHCP serverElse use Auto IP

What is Auto IP?IETF Draft Automatically Choosing an IP

Address in an Ad-Hoc IPv4 NetworkWhat steps does it take?

Pick an address in 169.254/16 rangeCheck to see if it is used (ARP)Periodically check for DHCP server

Steps to UPnP NetworkingSteps 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 Addressing0 Addressing

1* Discovery1* Discovery

2 Description2 Description

5 Presentation5 Presentation4 Eventing4 Eventing3 Control3 Control

1 Discovery1 Discovery Control point

finds interesting device

0 get address 1 discover device

Advertise / find typed devices (services)

Guarantee of minimal capabilities

Simple

DevicesAdvertise when

addedRefresh

advertisements (cf. lease)

Cancel advertisements when removed

Control points search as needed

Devices respondControl points

filter

1 Discovery: Protocol Stack1 Discovery: Protocol Stack

UPnP vendorUPnP vendorUPnP vendorUPnP vendor

UPnP ForumUPnP ForumUPnP ForumUPnP Forum

UPnP Device ArchitectureUPnP Device ArchitectureUPnP Device ArchitectureUPnP Device Architecture

UDPUDPUDPUDP

IPIPIPIP

HTTPMUHTTPMU(multicast)(multicast)

HTTPMUHTTPMU(multicast)(multicast) GENAGENAGENAGENA SSDPSSDPSSDPSSDP HTTPUHTTPU

(unicast)(unicast)

HTTPUHTTPU(unicast)(unicast) SSDPSSDPSSDPSSDP

1 Discovery: SSDP Sidebar1 Discovery: SSDP SidebarWhat is SSDP?

IETF Draft Simple Service Discovery Protocol

Key design principlesAdministratively-scoped multicastUnicast responsesUDPVery simple advertisementsVery simple search

1 Discovery: Advertising1 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 1 time with NT == upnp:rootdeviceupnp:rootdevice

NOTIFY * HTTP/1.1HOST: 239.255.255.250:1900

NOTIFY * HTTP/1.1HOST: 239.255.255.250:1900CACHE-CONTROL: max-age = seconds until advertisement expiresLOCATION: URL for UPnP description for root deviceNT: search targetNTS: ssdp:aliveUSN: advertisement UUID

1 Discovery: Searching1 Discovery: Searching Who? Control point multicasts When? Looking for device or service What?

ST one of Service type Device type Device UUID upnp:rootdeviceupnp:rootdevice ssdp:allssdp:all

M-SEARCH * HTTP/1.1HOST: 239.255.255.250:1900

M-SEARCH * HTTP/1.1HOST: 239.255.255.250:1900MAN: "ssdp:discover"MX: seconds to delay responseST: search target

1 Discovery: Responding1 Discovery: RespondingWho? Device unicastsWhen? If ST matches an NTWhat?

1 time for each NT that matches

Very simple matching

HTTP/1.1 200 OKCACHE-CONTROL: max-age = seconds until advertisement expires

HTTP/1.1 200 OKCACHE-CONTROL: max-age = seconds until advertisement expiresLOCATION: URL for UPnP description for root deviceST: search targetUSN: advertisement UUID

Steps to UPnP NetworkingSteps 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 Addressing0 Addressing

1 Discovery1 Discovery

2* Description2* Description

5 Presentation5 Presentation4 Eventing4 Eventing3 Control3 Control

2 Description2 Description Control point

learns about device capabilities 0 get address 1 discover device

get URL for description

2 retrieve descrget URL for

service description

Declare capabilities

Protocol stack

UPnP vendorUPnP vendorUPnP vendorUPnP vendor

UPnP ForumUPnP ForumUPnP ForumUPnP Forum

UPnP Device ArchitectureUPnP Device ArchitectureUPnP Device ArchitectureUPnP Device Architecture

IPIPIPIP

HTTPHTTPHTTPHTTP

TCPTCPTCPTCP

2 Description2 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 Sidebar2 Description: XML Sidebar What is XML?

W3C Recommendation Extensible Markup Language "Universal format for structured documents and data on

the Web." Field names in <angle brackets> 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)2 Description: Device (phys)<?xml version="1.0"?><root xmlns="urn:schemas-upnp-org:device-1-0">   <URLBase>base URL for all relative URLs</URLBase>

  <device>    <friendlyName>short user-friendly title</friendlyName>    <manufacturer>manufacturer name</manufacturer>    <manufacturerURL>URL to manufacturer site</manufacturerURL>    <modelDescription>long user-friendly title</modelDescription>    <modelName>model name</modelName>    <modelNumber>model number</modelNumber>    <modelURL>URL to model site</modelURL>    <serialNumber>manufacturer's serial number</serialNumber>    <UDN>uuid:UUID</UDN>    <UPC>Universal Product Code</UPC>    <deviceType>urn:schemas-upnp-org:device:deviceType</deviceType>    <serviceList>      <service>        <serviceType>urn:schemas-upnp-org:service:serviceType:v</serviceType>        <serviceId>urn:upnp-org:serviceId:serviceID</serviceId>        <SCPDURL>URL to service description</SCPDURL>        <controlURL>URL for control</controlURL>        <eventSubURL>URL for eventing</eventSubURL>      </service>      Declarations for other services (if any) go here    </serviceList>    <deviceList>Description of embedded devices (if any) go here</deviceList>    <iconList>      <icon>        <mimetype>image/format</mimetype>        <width>horizontal pixels</width>        <height>vertical pixels</height>        <depth>color depth</depth>        <url>URL to icon</url>      </icon>      XML to declare other icons, if any, go here    </iconList>    <presentationURL>URL for presentation</presentationURL>

  </device>  <specVersion>    <major>1</major> <minor>0</minor>  </specVersion>

</root>

<?xml version="1.0"?><root xmlns="urn:schemas-upnp-org:device-1-0">   <URLBase>base URL for all relative URLs</URLBase>

  <device>    <friendlyName>short user-friendly title</friendlyName>    <manufacturer>manufacturer name</manufacturer>    <manufacturerURL>URL to manufacturer site</manufacturerURL>    <modelDescription>long user-friendly title</modelDescription>    <modelName>model name</modelName>    <modelNumber>model number</modelNumber>    <modelURL>URL to model site</modelURL>    <serialNumber>manufacturer's serial number</serialNumber>    <UDN>uuid:UUID</UDN>    <UPC>Universal Product Code</UPC>    <deviceType>urn:schemas-upnp-org:device:deviceType</deviceType>    <serviceList>      <service>        <serviceType>urn:schemas-upnp-org:service:serviceType:v</serviceType>        <serviceId>urn:upnp-org:serviceId:serviceID</serviceId>        <SCPDURL>URL to service description</SCPDURL>        <controlURL>URL for control</controlURL>        <eventSubURL>URL for eventing</eventSubURL>      </service>      Declarations for other services (if any) go here    </serviceList>    <deviceList>Description of embedded devices (if any) go here</deviceList>    <iconList>      <icon>        <mimetype>image/format</mimetype>        <width>horizontal pixels</width>        <height>vertical pixels</height>        <depth>color depth</depth>        <url>URL to icon</url>      </icon>      XML to declare other icons, if any, go here    </iconList>    <presentationURL>URL for presentation</presentationURL>

  </device>  <specVersion>    <major>1</major> <minor>0</minor>  </specVersion>

</root>

2 Description: Device (logical)2 Description: Device (logical)<?xml version="1.0"?>

<root xmlns="urn:schemas-upnp-org:device-1-0">  <URLBase>base URL for all relative URLs</URLBase>  <device>    <friendlyName>short user-friendly title</friendlyName>    <manufacturer>manufacturer name</manufacturer>    <manufacturerURL>URL to manufacturer site</manufacturerURL>    <modelDescription>long user-friendly title</modelDescription>    <modelName>model name</modelName>    <modelNumber>model number</modelNumber>    <modelURL>URL to model site</modelURL>    <serialNumber>manufacturer's serial number</serialNumber>    <UDN>uuid:UUID</UDN>    <UPC>Universal Product Code</UPC>

    <deviceType>urn:schemas-upnp-org:device:deviceType :v</deviceType>    <serviceList>      <service>        <serviceType>urn:schemas-upnp-org:service:serviceType:v</serviceType>        <serviceId>urn:upnp-org:serviceId:serviceID</serviceId>        <SCPDURL>URL to service description</SCPDURL>        <controlURL>URL for control</controlURL>        <eventSubURL>URL for eventing</eventSubURL>      </service>      Declarations for other services (if any) go here    </serviceList>    <deviceList>Description of embedded devices (if any) go here</deviceList>    <iconList>      <icon>        <mimetype>image/format</mimetype>        <width>horizontal pixels</width>        <height>vertical pixels</height>        <depth>color depth</depth>        <url>URL to icon</url>      </icon>      XML to declare other icons, if any, go here    </iconList>    <presentationURL>URL for presentation</presentationURL>

  </device>  <specVersion>    <major>1</major> <minor>0</minor>  </specVersion>

</root>

<?xml version="1.0"?>

<root xmlns="urn:schemas-upnp-org:device-1-0">  <URLBase>base URL for all relative URLs</URLBase>  <device>    <friendlyName>short user-friendly title</friendlyName>    <manufacturer>manufacturer name</manufacturer>    <manufacturerURL>URL to manufacturer site</manufacturerURL>    <modelDescription>long user-friendly title</modelDescription>    <modelName>model name</modelName>    <modelNumber>model number</modelNumber>    <modelURL>URL to model site</modelURL>    <serialNumber>manufacturer's serial number</serialNumber>    <UDN>uuid:UUID</UDN>    <UPC>Universal Product Code</UPC>

    <deviceType>urn:schemas-upnp-org:device:deviceType :v</deviceType>    <serviceList>      <service>        <serviceType>urn:schemas-upnp-org:service:serviceType:v</serviceType>        <serviceId>urn:upnp-org:serviceId:serviceID</serviceId>        <SCPDURL>URL to service description</SCPDURL>        <controlURL>URL for control</controlURL>        <eventSubURL>URL for eventing</eventSubURL>      </service>      Declarations for other services (if any) go here    </serviceList>    <deviceList>Description of embedded devices (if any) go here</deviceList>    <iconList>      <icon>        <mimetype>image/format</mimetype>        <width>horizontal pixels</width>        <height>vertical pixels</height>        <depth>color depth</depth>        <url>URL to icon</url>      </icon>      XML to declare other icons, if any, go here    </iconList>    <presentationURL>URL for presentation</presentationURL>

  </device>  <specVersion>    <major>1</major> <minor>0</minor>  </specVersion>

</root>

2 Description: Device (other)2 Description: Device (other)<?xml version="1.0"?>

<root xmlns="urn:schemas-upnp-org:device-1-0">   <URLBase>base URL for all relative URLs</URLBase>

  <device>    <friendlyName>short user-friendly title</friendlyName>    <manufacturer>manufacturer name</manufacturer>    <manufacturerURL>URL to manufacturer site</manufacturerURL>    <modelDescription>long user-friendly title</modelDescription>    <modelName>model name</modelName>    <modelNumber>model number</modelNumber>    <modelURL>URL to model site</modelURL>    <serialNumber>manufacturer's serial number</serialNumber>    <UDN>uuid:UUID</UDN>    <UPC>Universal Product Code</UPC>   <deviceType>urn:schemas-upnp-org:device:deviceType</deviceType>    <serviceList>      <service>        <serviceType>urn:schemas-upnp-org:service:serviceType:v</serviceType>        <serviceId>urn:upnp-org:serviceId:serviceID</serviceId>        <SCPDURL>URL to service description</SCPDURL>        <controlURL>URL for control</controlURL>        <eventSubURL>URL for eventing</eventSubURL>      </service>      Declarations for other services (if any) go here    </serviceList>    <deviceList>Description of embedded devices (if any) go here</deviceList>

    <iconList>      <icon>        <mimetype>image/format</mimetype>        <width>horizontal pixels</width>        <height>vertical pixels</height>        <depth>color depth</depth>        <url>URL to icon</url>      </icon>      XML to declare other icons, if any, go here    </iconList>    <presentationURL>URL for presentation</presentationURL>  </device>  <specVersion>    <major>1</major> <minor>0</minor>  </specVersion></root>

<?xml version="1.0"?>

<root xmlns="urn:schemas-upnp-org:device-1-0">   <URLBase>base URL for all relative URLs</URLBase>

  <device>    <friendlyName>short user-friendly title</friendlyName>    <manufacturer>manufacturer name</manufacturer>    <manufacturerURL>URL to manufacturer site</manufacturerURL>    <modelDescription>long user-friendly title</modelDescription>    <modelName>model name</modelName>    <modelNumber>model number</modelNumber>    <modelURL>URL to model site</modelURL>    <serialNumber>manufacturer's serial number</serialNumber>    <UDN>uuid:UUID</UDN>    <UPC>Universal Product Code</UPC>   <deviceType>urn:schemas-upnp-org:device:deviceType</deviceType>    <serviceList>      <service>        <serviceType>urn:schemas-upnp-org:service:serviceType:v</serviceType>        <serviceId>urn:upnp-org:serviceId:serviceID</serviceId>        <SCPDURL>URL to service description</SCPDURL>        <controlURL>URL for control</controlURL>        <eventSubURL>URL for eventing</eventSubURL>      </service>      Declarations for other services (if any) go here    </serviceList>    <deviceList>Description of embedded devices (if any) go here</deviceList>

    <iconList>      <icon>        <mimetype>image/format</mimetype>        <width>horizontal pixels</width>        <height>vertical pixels</height>        <depth>color depth</depth>        <url>URL to icon</url>      </icon>      XML to declare other icons, if any, go here    </iconList>    <presentationURL>URL for presentation</presentationURL>  </device>  <specVersion>    <major>1</major> <minor>0</minor>  </specVersion></root>

2 Description: Service (actns)2 Description: Service (actns)<?xml version="1.0"?><scpd xmlns="urn:schemas-upnp-org:service-1-0">  <actionList>    <action>      <name>actionName</name>      <argumentList>        <argument>          <name>formalParameterName</name>          <direction>in xor out</direction>          <retval />          <relatedStateVariable>stateVariableName</relatedStateVariable>        </argument>       Declarations for other arguments (if any) go here      </argumentList>    </action>    Declarations for other actions (if any) go here  </actionList>  <serviceStateTable>    <stateVariable sendEvents=“yes” xor “no”>      <name>variableName</name>      <dataType>variable datatype</dataType>      <defaultValue>default value</defaultValue>      <allowedValueRange>        <minimum>minimum value</minimum>        <maximum>maximum value</maximum>        <step>increment value</step>      </allowedValueRange>    </stateVariable>    <stateVariable sendEvents=“yes” xor “no”>      <name>variableName</name>      <dataType>variable data type</dataType>      <defaultValue>default value</defaultValue>      <allowedValueList>        <allowedValue>some value</allowedValue>        <allowedValue>some value</allowedValue>      </allowedValueList>    </stateVariable>    Declarations for other state variables (if any) go here  </serviceStateTable>  <specVersion>    <major>1</major> <minor>0</minor>  </specVersion>

</scpd>

<?xml version="1.0"?><scpd xmlns="urn:schemas-upnp-org:service-1-0">  <actionList>    <action>      <name>actionName</name>      <argumentList>        <argument>          <name>formalParameterName</name>          <direction>in xor out</direction>          <retval />          <relatedStateVariable>stateVariableName</relatedStateVariable>        </argument>       Declarations for other arguments (if any) go here      </argumentList>    </action>    Declarations for other actions (if any) go here  </actionList>  <serviceStateTable>    <stateVariable sendEvents=“yes” xor “no”>      <name>variableName</name>      <dataType>variable datatype</dataType>      <defaultValue>default value</defaultValue>      <allowedValueRange>        <minimum>minimum value</minimum>        <maximum>maximum value</maximum>        <step>increment value</step>      </allowedValueRange>    </stateVariable>    <stateVariable sendEvents=“yes” xor “no”>      <name>variableName</name>      <dataType>variable data type</dataType>      <defaultValue>default value</defaultValue>      <allowedValueList>        <allowedValue>some value</allowedValue>        <allowedValue>some value</allowedValue>      </allowedValueList>    </stateVariable>    Declarations for other state variables (if any) go here  </serviceStateTable>  <specVersion>    <major>1</major> <minor>0</minor>  </specVersion>

</scpd>

2 Description: Service (vars)2 Description: Service (vars)<?xml version="1.0"?><scpd xmlns="urn:schemas-upnp-org:service-1-0">  <actionList>    <action>      <name>actionName</name>      <argumentList>        <argument>          <name>formalParameterName</name>          <direction>in xor out</direction>          <retval />          <relatedStateVariable>stateVariableName</relatedStateVariable>        </argument>       Declarations for other arguments (if any) go here      </argumentList>    </action>    Declarations for other actions (if any) go here  </actionList>

  <serviceStateTable>    <stateVariable sendEvents=“yes” xor “no”>      <name>variableName</name>      <dataType>variable datatype</dataType>      <defaultValue>default value</defaultValue>      <allowedValueRange>        <minimum>minimum value</minimum>        <maximum>maximum value</maximum>        <step>increment value</step>      </allowedValueRange>    </stateVariable>    <stateVariable sendEvents=“yes” xor “no”>      <name>variableName</name>      <dataType>variable data type</dataType>      <defaultValue>default value</defaultValue>      <allowedValueList>        <allowedValue>some value</allowedValue>        <allowedValue>some value</allowedValue>      </allowedValueList>    </stateVariable>    Declarations for other state variables (if any) go here

  </serviceStateTable>  <specVersion>    <major>1</major> <minor>0</minor>  </specVersion>

</scpd>

<?xml version="1.0"?><scpd xmlns="urn:schemas-upnp-org:service-1-0">  <actionList>    <action>      <name>actionName</name>      <argumentList>        <argument>          <name>formalParameterName</name>          <direction>in xor out</direction>          <retval />          <relatedStateVariable>stateVariableName</relatedStateVariable>        </argument>       Declarations for other arguments (if any) go here      </argumentList>    </action>    Declarations for other actions (if any) go here  </actionList>

  <serviceStateTable>    <stateVariable sendEvents=“yes” xor “no”>      <name>variableName</name>      <dataType>variable datatype</dataType>      <defaultValue>default value</defaultValue>      <allowedValueRange>        <minimum>minimum value</minimum>        <maximum>maximum value</maximum>        <step>increment value</step>      </allowedValueRange>    </stateVariable>    <stateVariable sendEvents=“yes” xor “no”>      <name>variableName</name>      <dataType>variable data type</dataType>      <defaultValue>default value</defaultValue>      <allowedValueList>        <allowedValue>some value</allowedValue>        <allowedValue>some value</allowedValue>      </allowedValueList>    </stateVariable>    Declarations for other state variables (if any) go here

  </serviceStateTable>  <specVersion>    <major>1</major> <minor>0</minor>  </specVersion>

</scpd>

2 Description: Service (vars)2 Description: Service (vars)<?xml version="1.0"?><scpd xmlns="urn:schemas-upnp-org:service-1-0">  <actionList>    <action>      <name>actionName</name>      <argumentList>        <argument>          <name>formalParameterName</name>          <direction>in xor out</direction>          <retval />          <relatedStateVariable>stateVariableName</relatedStateVariable>        </argument>       Declarations for other arguments (if any) go here      </argumentList>    </action>    Declarations for other actions (if any) go here  </actionList>

  <serviceStateTable>    <stateVariable sendEvents=“yes” xor “no”>      <name>variableName</name>      <dataType>variable datatype</dataType>      <defaultValue>default value</defaultValue>      <allowedValueRange>        <minimum>minimum value</minimum>        <maximum>maximum value</maximum>        <step>increment value</step>      </allowedValueRange>    </stateVariable>

    <stateVariable sendEvents=“yes” xor “no”>      <name>variableName</name>      <dataType>variable data type</dataType>      <defaultValue>default value</defaultValue>      <allowedValueList>        <allowedValue>some value</allowedValue>        <allowedValue>some value</allowedValue>      </allowedValueList>    </stateVariable>    Declarations for other state variables (if any) go here  </serviceStateTable>  <specVersion>    <major>1</major> <minor>0</minor>  </specVersion>

</scpd>

<?xml version="1.0"?><scpd xmlns="urn:schemas-upnp-org:service-1-0">  <actionList>    <action>      <name>actionName</name>      <argumentList>        <argument>          <name>formalParameterName</name>          <direction>in xor out</direction>          <retval />          <relatedStateVariable>stateVariableName</relatedStateVariable>        </argument>       Declarations for other arguments (if any) go here      </argumentList>    </action>    Declarations for other actions (if any) go here  </actionList>

  <serviceStateTable>    <stateVariable sendEvents=“yes” xor “no”>      <name>variableName</name>      <dataType>variable datatype</dataType>      <defaultValue>default value</defaultValue>      <allowedValueRange>        <minimum>minimum value</minimum>        <maximum>maximum value</maximum>        <step>increment value</step>      </allowedValueRange>    </stateVariable>

    <stateVariable sendEvents=“yes” xor “no”>      <name>variableName</name>      <dataType>variable data type</dataType>      <defaultValue>default value</defaultValue>      <allowedValueList>        <allowedValue>some value</allowedValue>        <allowedValue>some value</allowedValue>      </allowedValueList>    </stateVariable>    Declarations for other state variables (if any) go here  </serviceStateTable>  <specVersion>    <major>1</major> <minor>0</minor>  </specVersion>

</scpd>

Steps to UPnP NetworkingSteps 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 Addressing0 Addressing

1 Discovery1 Discovery

2 Description2 Description

5 Presentation5 Presentation4 Eventing4 Eventing3* Control3* Control

3 Control3 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 vendorUPnP vendorUPnP vendorUPnP vendor

UPnP ForumUPnP ForumUPnP ForumUPnP Forum

UPnP Device ArchitectureUPnP Device ArchitectureUPnP Device ArchitectureUPnP Device Architecture

IPIPIPIP

SOAPSOAPSOAPSOAP

HTTPHTTPHTTPHTTP

TCPTCPTCPTCP

3 Control: SOAP Sidebar3 Control: SOAP SidebarWhat 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 Action3 Control: Invoke Action Who? Control point When? To invoke action on device What?

POST path of control URL HTTP/1.1HOST: host of control URL:port of control URLCONTENT-TYPE: text/xml; charset="utf-8"SOAPACTION: "urn:schemas-upnp-org:service:serviceType:v#actionName"

POST path of control URL HTTP/1.1HOST: host of control URL:port of control URLCONTENT-TYPE: text/xml; charset="utf-8"SOAPACTION: "urn:schemas-upnp-org:service:serviceType:v#actionName"

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"    s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">  <s:Body>

  </s:Body></s:Envelope>

    <u:actionName xmlns:u="urn:schemas-upnp-org:service:serviceType:v">      <argumentName>in arg value</argumentName>      other in args and their values (if any) go here    </u:actionName>

3 Control: Action Result3 Control: Action Result Who? Device When? Action completes What?

HTTP/1.1 200 OKCONTENT-TYPE: text/xml; charset="utf-8"

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"    s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">  <s:Body>

  </s:Body></s:Envelope>

HTTP/1.1 200 OKCONTENT-TYPE: text/xml; charset="utf-8"

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"    s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">  <s:Body>

  </s:Body></s:Envelope>

    <u:actionNameResponse xmlns:u="urn:schemas-upnp-org:service:serviceType:v">      <argumentName>out arg value</argumentName>      other out args and their values (if any) go here    </u:actionNameResponse>

Steps to UPnP NetworkingSteps 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 Addressing0 Addressing

1 Discovery1 Discovery

2 Description2 Description

5 Presentation5 Presentation4* Eventing4* Eventing3 Control3 Control

4 Eventing4 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 vendorUPnP vendorUPnP vendorUPnP vendor

UPnP ForumUPnP ForumUPnP ForumUPnP Forum

UPnP Device ArchitectureUPnP Device ArchitectureUPnP Device ArchitectureUPnP Device Architecture

IPIPIPIP

HTTPHTTPHTTPHTTPGENAGENAGENAGENA

TCPTCPTCPTCP

4 Eventing: GENA Sidebar4 Eventing: GENA SidebarWhat is GENA?

IETF Draft General Event Notification Architecture

"Send and receive notifications using HTTP over TCP/IP and administratively-scoped multicast UDP."SUBSCRIBE to notificationsUNSUBSCRIBENOTIFY

Of device availabilityOf state variable changes

4 Eventing: Subscribing4 Eventing: SubscribingWho? Control pointWhen? Before receiving any eventsWhat?

SUBSCRIBE publisher path HTTP/1.1HOST: publisher host:publisher port

SUBSCRIBE publisher path HTTP/1.1HOST: publisher host:publisher portCALLBACK: <delivery URL>NT: upnp:eventTIMEOUT: Second-requested subscription duration

4 Eventing: Subscription4 Eventing: SubscriptionWho? DeviceWhen? Accepts subscriptionWhat?

Device immediately sends a special, initial event to control point with the value of all evented variables

HTTP/1.1 200 OKSID: uuid:subscription-UUID TIMEOUT: Second-actual subscription duration

HTTP/1.1 200 OKSID: uuid:subscription-UUID TIMEOUT: Second-actual subscription duration

4 Eventing: Notify4 Eventing: Notify Who? Device When? A state variable changes What?

NOTIFY delivery path HTTP/1.1HOST: delivery host:delivery portCONTENT-TYPE: text/xml

NOTIFY delivery path HTTP/1.1HOST: delivery host:delivery portCONTENT-TYPE: text/xmlNT: upnp:eventNTS: upnp:propchangeSID: uuid:subscription-UUIDSEQ: event key

<e:propertyset xmlns:e="urn:schemas-upnp-org:event-1-0">  <e:property>    <variableName>new value</variableName>  </e:property>  Other variable names and values (if any) go here</e:propertyset>

Steps to UPnP NetworkingSteps 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 Addressing0 Addressing

1 Discovery1 Discovery

2 Description2 Description

5* Presentation5* Presentation4 Eventing4 Eventing3 Control3 Control

5 Presentation5 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 vendorUPnP vendorUPnP vendorUPnP vendor

UPnP Device ArchitectureUPnP Device ArchitectureUPnP Device ArchitectureUPnP Device Architecture

IPIPIPIP

HTTPHTTPHTTPHTTP

TCPTCPTCPTCP

SummarySummary 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: http://www.upnp.org Questions? mailto:UPNPWORLD@FORUM.UPNP.ORG

top related