Collaboration Bus: A System for Interoperating Collaborative Systems

advertisement
Device Servers
Prasun Dewan
Department of Computer Science
University of North Carolina
dewan@unc.edu
Issues in Device Servers


Device is just a
server.
So what is
different?
Network
2
Addressing Devices vs.
Traditional Servers



Sever and network is always
around - static address
Centralized heavyweight
scheme acceptable to give
install and give unique
addresses to servers
Client expected to know
traditional server address





imap.cs.unc.edu
With so many dynamic devices
and ad-hoc networks lightweight
decentralized scheme needed
Client may not know or care
about device server address
print to the nearest printer
 turn off all light bulbs

Discovery phase possible
www.cnn.com
 logical name to physical
name can be bound
dynamically
Devices may be dynamically
added on ad-hoc networks dynamic address


Implies later binding and thus
a discovery phase
3
Communicating with Device vs.
Traditional Servers

Client expected to
know exact server
interface
get mail
 send mail


Client may not know exact
server interface
palm computer controlling a
VCR it knows nothing about
 security system composer
substituting Axis camera
with Aibot Robot, which may
not share an interface
 impromptu interoperability
 implies an interface
(capability) discovery phase

4
Communicating with Device vs.
Traditional Servers

Client polls for
traditional server
changes
New mail arrived?
 Cannot track fast
changing
information


Client may wish to notified of
device changes
current channel changed, so
redisplay it
 Implies an eventing
mechanism that is

distributed
 can be dynamically
discovered

5
Deploying Remote User
Interfaces

Run preloaded client
user-interface
program
xmh
 netscape



Because of late binding,
client UI program may not
exist
Implies dynamic userinterface deployment
6
Composing Devices

Traditional servers
not composed into a
single unit


Not the same as
replicas
Composite device may be
composed out of multiple
devices
security system
 CD


How to support composite
and individual device
services.
7
UPnP (Universal Plug and Play)

Formed in 1999 with 200 vendors


Consumer electronics,Home security, Networking, Mobile
devices
Late binding
Dynamic Server discovery
 Dynamic Interface discover
 Dynamic Event discovery
 Dynamic UI Deployment
 Static Service Composition



Language- and OS- Neutral Solution
Avoid trojan horses



Ship data rather than code
Open
Use existing standards
8
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
9
UPNP Examples: Installing a
printer
Today

Attach it to server PC

Load device driver

Share printer

Manually bind each
client to printer
Vision

Just connect printer
to network
10
Installing a device store
Today

Attach a new disk
drive to computer
Vision

Just connect drive to
network
11
Intelligent Alarm clock
Today

Set alarm clock



May vary
depending on
weekday or
weekend
Vision

Alarm clock tells PC

It runs script that
checks schedule and
sets thermostat
Set thermostat
Hope meeting not
missed
12
Arriving/leaving home
Today

Turn on entrance light

Change thermostat

Play answering machine
messages

Turn on TV

Set channel to CNN

Raise/lower blinds
depending on
before/after sunset

Turn on other lights

Reverse steps when
turning off light
Vision

Light switch
communicates with
PC, which runs script
and its inverse
13
Arriving/leaving town
Today

Manually change
thermostat

Change water heater

Close/open water valve
 Hold mail

Set vacation message(s)

Inform neighbour(s)

Throw trash
Vision

Push button saying
on vacation


Could do it remotely
Must still throw trash
14
Power outage
Today

Manually set all clocks
Vision

They automatically
synchronize with an
a networked atomic
clock

Script runs
periodically or when
power comes on
15
Home theater
Script to
 Turn on DVD
 Turn on TV
 Set it to DVD channel
 Set stereo to Video mode
 Set stereo volume to theater levels
 Dim lights
16
Ball game
Mobile device used to:
 pick up traffic info on road
 receive commentary at stadium
 track player statistics
 order food
 chat with buddies at game
17
Other apps




Appliance remotely fixed or set
Calendars of family members
synchronized
Product barcode scanned to order new
instance
Presentation displayed on discovered
display devices
18
UPnP Device
Architecture
19
Architecture/Terminology

Components
 Control
Control Point
points
 Controller,
usually client
 Device
 Controlled,
Device
Service
usually server
 An
actual device
might contain
both functions
Control Point
Device
Service
20
Architecture
UPnP Enabled Device
Device
Service 1
Service 2
UPnP Enabled Device
Control Point
Device
Control Point
Service
UPnP Enabled Device
Root Device
Embedded Device
Service
Service
State
Table
Control
Server
Event
Server
Service 1 Service 2
21
Example Configuration
Control Point
(Pocket PC)
Control Point
(Remote Control)
IP Network
Native Device
(UPnP VCR)
UPnP Bridge
Native Device
(UPnP Alarm Clock)
Lightweight Device
(LonWorks Thermostat)
Non-IP Bus/Networks
Non-UPnP Device
(X-10 Light)
22
Steps to UPnP Networking
3 Control
4 Eventing
5 Presentation
2 Description
1 Discovery
0 Addressing
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
23
UPnP
Protocol
Stack
Standardized Schema
Instances (Types)
URLs, Model, Device #
Vendor-specific API above
Schemas (Prog Lang)
UPnP vendor
UPnP Device Architecture
HTTPU/MU GENA
SSDP
SOAP
HTTP
HTTP
UDP
GENA
Wire protocols
UPnP Forum
TCP
IP
Vendor-specific OS below
Name
Discovery
Capability
Multiple http servers
and Events
Discovery
State Events
Operation
24
Control
Steps to UPnP Networking
3 Control
4 Eventing
5 Presentation
2 Description
1 Discovery
0* Addressing
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
25
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 169.254/16 range
 Check to see if it is used (ARP)
 Periodically check for DHCP server
Could use DNS and include DNS Client
26
Overview -ad hoc
UPnP in action - ad hoc
1. DHCP broadcast
(timeout)
2. Assign AutoNet address
3. DNS name multicast
4. Announce service
(timeout - wait for requests)
5. Discover service
7. Response to discover
8. Get_HTTP XML
9. XML content
27
Overview - configured
UPnP in action - configured
1. DHCP broadcast
2. Address from DHCP server
3. Name unicast to DNS server
5. Listener Get_HTTP XML
Server
4. Announce service to listener
6. Directory updated by listener
7. Device specific negotiation
8. LDAP query directory
28
Steps to UPnP Networking
3 Control
4 Eventing
5 Presentation
2 Description
1* Discovery
0 Addressing
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
29
1 Discovery: Pull (Active) vs.
Push (Passive)

Client
Server
Servers could be
dynamically added
 Needs to poll for new
devices


Client
Client (Control point)
could pull info
Server
Server (Device) could
push advertisement
Control points can be
dynamically added
 Needs to continuously
send info, using
network

30
1 Discovery: Pull (Active) vs.
Push (Passive)

Server
Client
SSDP Solution:
Hybrid approach
 Advertisement has
lifetime



Can simulate pure
push model
HTTP over UDP
What if message
gets lost?
 Must send UDP
message 3 times
 Solution over TCP
planned

Server
31
1 Discovery: SSDP Sidebar

What is SSDP?
 IETF
Draft Simple Service Discovery
Protocol

Key design principles
 Administratively-scoped
 Unicast
multicast
responses
 UDP
 Very
simple advertisements
 Very simple search
32
1 Discovery

Control point finds
interesting device




Guarantee of
minimal
capabilities
Simple
Devices
Advertise when
added
 Refresh
advertisements
(cf. lease)
 Cancel
advertisements
when removed

0 get address
1 discover device
Advertise / find
typed devices
(services)



Control points
search as needed
Devices respond
 Control points
filter

33
1 Discovery: Protocol Stack
UPnP vendor
UPnP Forum
UPnP Device Architecture
HTTPMU
(multicast)
GENA
SSDP
HTTPU
(unicast)
SSDP
UDP
IP
34
1 Discovery: Advertising



Who? Device multicasts
When? Added or refresh (cf. lease)
What?
Multicast
address
Port
NOTIFY * HTTP/1.1
HOST: 239.255.255.250: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 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:rootdevice
35
GENA



Notification method format defined by
GENA
An event delivery scheme over HTTP
Allows subscription
 May
be used later
 Will allow it to be not depend on the “largely
non-existent Internet multicast
infrastructure”
36
Multicast Scope

Entire internet
 Idea

to find local service
Link local
 Does

not support bridged/routed LANS
Local administrative scope
 Relative
address
 239.255.255.250

Relative address vs local scope
 Relative
address allows progressively larger
scopes

Based on physical location?
37
Location vs. USN


Location needed to send messages
USN a unique, location-independent ID
 UUID
is a USN example
 Decentralized
 Allows
assignment
services to move
 Change
IP address
 Change DNS name
38
Byebye message



Sent before device ceases to operate
NTS = ssdp:byebye
NT = service type
39
1 Discovery: Searching



Who? Control point multicasts
When? Looking for device or service
What?
M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900
MAN: "ssdp:discover"
MX: seconds to delay response
ST: search target

ST one of





Service type
Device type
Device UUID
upnp:rootdevice
ssdp:all
40
Broadcast message

Can send message to all devices
 ssdp:
all
 Network analysis tool
 Remote control unit
41
1 Discovery: Responding



Who? Device unicasts
When? If ST matches an NT
What?
HTTP/1.1 200 OK
CACHE-CONTROL: max-age = seconds until advertisement expires
LOCATION: URL for UPnP description for root device
ST: search target
USN: advertisement UUID
1
time for each NT that matches
 Very
simple matching
42
Network traffic

SSDP traffic on recovery after power outage.
 Control
 to
points will all send discover messages.
find printer
 In
large companies multicast admin domain will be
large
 Can
be entire company
 Need
a way for SSDP to deactivate before network
storms created
 Even with directory services, low-level SSDP may
activate
43
Bandwidth requirements
 TP
= some time period
 DR = # of clients sending discovery messages in TP
 RS = # of devices responding to each discover
message
 AM = average message size
 Bandwidth = (DR* 3 + DR*9*RS)*AM/TP
44
E.g. Network traffic
 100,
000 hosts
 5,000 printers
 Requests evenly distributed over 30 second period
 Message size = 512 bytes
 Bandwidth = 585976 Megabits per second
45
E.g. Network traffic
 1000
hosts
 50 printers
 Requests evenly distributed over 30 second period
 Message size = 512 bytes
 Bandwidth = 59 Megabits per second
46
Steps to UPnP Networking
3 Control
4 Eventing
5 Presentation
2* Description
1 Discovery
0 Addressing
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
47
2 Description

Control point learns
about device
capabilities
UPnP vendor
0 get address
 1 discover device
UPnP Forum



2 retrieve descr


get URL for
description
get URL for
service description
Declare capabilities

Protocol stack
UPnP Device Architecture
HTTP
TCP
IP
48
2 Description

Device description

Type
Physical


container
Logical
container

Functional units
within devices
Service description
Actions
 State variables
 Actual (vs.
designed)
implementation

For each service
• Type
• URL for
description
• URL for control
• URL for eventing
Services

Expressed in XML
49
XML

Like HTML
 Describes

Unlike HTML
 Describes
 Style
 Tags
contents rather than UI
sheets describe UI
are user-defined
 Via

a tree
Schema Language (DDT)
Supported by Web browsers
50
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 <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
51
2 Description: Device (phys)
<?xml version="1.0"?>
<root xmlns="urn:schemas-upnp-org:device-1-0">
<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>
<URLBase>base URL for all relative URLs</URLBase>
<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>
52
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>
53
2 Description: Device (other)
<?xml version="1.0"?>
<root xmlns="urn:schemas-upnp-org:device-1-0">
<device>
<URLBase>base URL for all relative URLs</URLBase>
<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>
54
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>
55
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>
56
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>
57
Steps to UPnP Networking
3* Control
4 Eventing
5 Presentation
2 Description
1 Discovery
0 Addressing
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
58
3 Control

Control point invokes
actions on device
0 get address
 1 discover device
 2 retrieve descr

Protocol stack
UPnP vendor

UPnP Device Architecture
get URL for
control
SOAP
3 send actions to
device
HTTP


UPnP Forum
TCP
IP
59
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.
60
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"
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<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>
</s:Body>
</s:Envelope>
61
3 Control: Action Result



Who? Device
When? Action completes
What?
HTTP/1.1 200 OK
CONTENT-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>
<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>
</s:Body>
</s:Envelope>
62
Steps to UPnP Networking
3 Control
4* Eventing
5 Presentation
2 Description
1 Discovery
0 Addressing
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
63
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

Protocol stack
UPnP vendor
UPnP Forum
UPnP Device Architecture
HTTP
GENA
TCP
IP


Basic push model
Simple
64
4 Eventing: GENA Sidebar

What is GENA?
 IETF
Draft General Event Notification
Architecture
 "Send and receive notifications using
HTTP over TCP/IP and administrativelyscoped multicast UDP."
 SUBSCRIBE
to notifications
 UNSUBSCRIBE
 NOTIFY
• Of device availability
• Of state variable changes
65
4 Eventing: Subscribing
Who? Control point
 When? Before receiving any events
 What?
SUBSCRIBE
publisher path HTTP/1.1

HOST: publisher host:publisher port
CALLBACK: <delivery URL>
NT: upnp:event
TIMEOUT: Second-requested subscription duration
66
4 Eventing: Subscription
Who? Device
 When? Accepts subscription
 200
What?
HTTP/1.1
OK

SID: uuid:subscription-UUID
TIMEOUT: Second-actual subscription duration
 Device
immediately sends a special,
initial event to control point with the value
of all evented variables
67
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
<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>
68
Steps to UPnP Networking
3 Control
4 Eventing
5* Presentation
2 Description
1 Discovery
0 Addressing
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
69
5 Presentation

vendor
Control point controls UPnP

Protocol stack
device and/or views UPnP Device Architecture
device status using
HTML UI
HTTP
0 get address
 1 discover device
 2 retrieve descr




get URL for
presentation
TCP
IP
5 load presentation
page
(Don't constrain
implementation)
70
Example Device (Intel
Implementation)
TV Composite
 Control
Service
 Volume
 Power
 ….
 Picture
Service
 Color
 Tint
 Contrast
 ….
71
Example Composition
<?xml version="1.0" ?>
<root xmlns="urn:schemas-upnp-org:device-1-0">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<URLBase>http://192.168.0.4:5431</URLBase>
72
Example Composition
<device>
<deviceType>urn:schemas-upnp- org:device:tvdevice:1</deviceType>
<friendlyName>UPnP Television Emulator</friendlyName>
<manufacturer>TV Manufacturer Name</manufacturer>
<manufacturerURL>http://www.manufacturer.com</manufacturerURL>
<modelDescription>UPnP Television Device Emulator
1.0</modelDescription>
<modelName>TVEmulator</modelName>
<modelNumber>1.0</modelNumber>
<modelURL>http://www.manufacturer.com/TVEmulator/</modelURL>
<serialNumber>123456789001</serialNumber>
<UDN>uuid:Upnp-TVEmulator-1_0-1234567890001</UDN>
<UPC>123456789</UPC>
73
Example Service Composition
<serviceList>
<service>
<serviceType>urn:schemas-upnporg:service:tvcontrol:1</serviceType>
<serviceId>urn:upnp-org:serviceId:tvcontrol1</serviceId>
<controlURL>/upnp/control/tvcontrol1</controlURL>
<eventSubURL>/upnp/event/tvcontrol1</eventSubURL>
<SCPDURL>/tvcontrolSCPD.xml</SCPDURL>
</service>
<service>
<serviceType>urn:schemas-upnporg:service:tvpicture:1</serviceType>
<serviceId>urn:upnp-org:serviceId:tvpicture1</serviceId>
<controlURL>/upnp/control/tvpicture1</controlURL>
<eventSubURL>/upnp/event/tvpicture1</eventSubURL>
<SCPDURL>/tvpictureSCPD.xml</SCPDURL>
</service>
</serviceList>
</device>
74
Example Service
<?xml version="1.0" ?>
<scpd xmlns="urn:schemas-upnp-org:service-1-0">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
75
Example Action List
<actionList>
<action>
<name>PowerOn</name>
</action>
<action>
<name>SetChannel</name>
<argumentList>
<argument>
<name>Channel</name>
<relatedStateVariable>Channel</relatedStateVariable>
<direction>in</direction>
</argument>
</argumentList>
</action>
….
<actionList>
76
Example Variables
<serviceStateTable>
<stateVariable sendEvents="yes">
<name>Power</name>
<dataType>Boolean</dataType>
<defaultValue>0</defaultValue>
</stateVariable>
<stateVariable sendEvents="yes">
<name>Channel</name>
<dataType>i4</dataType>
<allowedValueRange>
<minimum>1</minimum>
<maximum>100</maximum>
<step>1</step>
</allowedValueRange>
<defaultValue>1</defaultValue>
</stateVariable>
…..
</serviceStateTable>
77
Example Presentation
Described using HTML
78
Example Server Code
Object processMessages (Message message) {
switch (message.kind)
case GET_VAR_REQUEST:
switch ((GetVarMessage) message).varName)
case “Channel”: message.result = getChannel();
…
case ACTION_REQUEST:
actionMessage = (ActionMessage) message.
switch (actionMessage.actionName)
case “setChannel”: setChannel(parseString(actionMessage.params[0]))
…
}
int channel;
int getChannel () { return curentChannel};
void setChannel (int newChannel) {
channel = newChannel;
UPnP.announce(“Channel”, toString(getChannel());
}
...
79
Another Example: Composite
greater than sum of parts
TV Composite
 Simply

combines services
CD Composite
 Adds
services
 Record with fields vs Object with instance
variables
80
CD Example
disc
disc
disc
(empty)
Changer
(empty)
disc
disc
disc tray
disc
(empty)
disc
(empty)
carousel
disc tray door
(closed)
Player
CD
Composite
Audio
Power
•When disc insertion event received play CD
• Play random (CD)
81
Elaborate Scenario

New DVD player connected to network
 Assigns
itself an IP address after looking for
DHCP several times or Auto-IP
 Sends advertisement, possibly multiple times
because UDP

Father brings laptop home
 Assigns

address and sends advertisement
Video remote control started
 Searches
for and displays Video devices
82
Elaborate Scenario

DVD selected by father
 Controller
retrieves description/presentation
URL
 User can choose between using URL or
controller UI





Run invoked on DVD
Run time of current disc can be queried
Clock flashing
Retrieves clock synchronizer from disk server
Clock synchronizer finds clocks and syncs
them
83
Elaborate Scenario




Father prints file
Printer out ink message appears on father’s
and son’s computers
Son fixes it. Needs printer in room to print HW
Disconnects printer
 Bye

Moves printer to room
 IP

bye message sent and seen by father
assignment and advertisement
Mother presses button for mood control
 Lights
get dimmed, shades down, soft music
starts, laptop shuts down
84
Issues raised by UPnP
3 Control
4 Eventing
5 Presentation
2 Description
1 Discovery
0 Addressing
0 Control point and device get addresses (Auto IP)
1 Control point finds interesting device (push/pull multicast,
type)
2 Control point learns about device capabilities (XML)
3 Control point invokes actions on device (SOAP)
4 Control point listens to state changes of device (GENA)
5 Control point controls device and/or views device status
using HTML UI
85
Issues raised by UPnP

Scaling problem of multicast-based discovery
 Auto






Shut off problem
Simple-minded search
Lack of access and concurrency control
Static, manual, procedural service composition
Device-independent UI
No programmer-defined types
High programming and maintenance costs
86
Auto-Shutoff

Auto Shut off problem
Network storm when devices reboot in sync
 Combine address discovery and routing

87
Simple-minded Search Facilities

Choices
 All
 Service
type
 Device Type
 Specific

Complex queries
 Attributes?
88
Lack of Control

Ignores access control.
 prevents
 turning
 prevents
accidents
on neighbor’s TV
intentional sabotage
 opening
garage door to steal
 Classic AC

applicable?
Ignores concurrency control.
 Two
remote users concurrently setting thermostat
 Two users editing VCR settings offline
 Classic CC applicable?
 Mobile CC applicable?
89
Static, Manual, Procedural
Composition

Dynamic collections
 e.g. All
lamps in a room
 All services explicitly statically enumerated in UPnP
 Must create a new description when new service added
to collection
 new

lamp to room
Declarative/automatic composition
 issue
when composite greater than sum of parts
 low-level procedural code to add functionality in UPnP
 play
CD when disc inserted
 set printer output to camera
 distribute multi-media presentation to audio and video
devices
90
Device-Independent UI
Fixed UI for all devices
 may
wish one specific to interactive computer used
 palm
computers and laptops have different form
factors and I/O capabilities
 may wish to show each variable in separate screen.
 the
kind of interactive computer may not be known
when service defined
91
No Programmer-Defined Types

XML 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
92
No Programmer-Defined Types

Only supports predefined types
 state
variables
 action parameters

No way to model dynamic composites
Dynamic
programmerdefined
collection
93
High Programming Cost

Device developer must:
 define
the XML-based external representation of
the device
 translate the client operation-invocation and
variable-access requests to local operationinvocations
 announce variable change notifications

Exporting functionality requires more code than
implementing it in example Intel device
 not

counting UI code
Cost proportional to complexity of type.
 Reason
for not allowing complex types?
94
High Maintenance Cost

Information repeated multiple times
 operation
implementation code
 action
list
 state variable table
 message processing code
 event announcement code

All repetitions must be changed
 tedious
 error-prone

Channel -> Current Channel requires 9 changes!
95
Changed Action List
<actionList>
<action>
<name>PowerOn</name>
</action>
<action>
<name>SetCurrentChannel</name>
<argumentList>
<argument>
<name>CurrentChannel</name>
<relatedStateVariable>CurrentChannel</relatedStateVariable>
<direction>in</direction>
</argument>
</argumentList>
</action>
….
<actionList>
96
Changed State Variable Table
<serviceStateTable>
<stateVariable sendEvents="yes">
<name>Power</name>
<dataType>Boolean</dataType>
<defaultValue>0</defaultValue>
</stateVariable>
<stateVariable sendEvents="yes">
<name>CurrentChannel</name>
<dataType>i4</dataType>
<allowedValueRange>
<minimum>1</minimum>
<maximum>100</maximum>
<step>1</step>
</allowedValueRange>
<defaultValue>1</defaultValue>
</stateVariable>
…..
</serviceStateTable>
97
Changed Server Code
Object processMessages (Message message) {
switch (message.kind)
case GET_VAR_REQUEST:
switch ((GetVarMessage) message).varName)
case “CurrentChannel”: message.result = getCurrentChannel();
…
case ACTION_REQUEST:
actionMessage = (ActionMessage) message.
switch (actionMessage.actionName)
case “setCurrentChannel”:
setCurrentChannel(parseString(actionMessage.params[0]))
…
}
int channel;
int getCurrentChannel () {return channel};
void setCurrentChannel (int newChannel) {
channel = newChannel;
UPnP.announce(“CurrentChannel”, toString(getCurrentChannel());
}
98
Ideal Developer Effort
int getChannel () { return channel};
void setChannel (int newChannel) {
channel = newChannel;
}
...
99
Issues raised by UPnP

Scaling problem of multicast-based discovery
 Auto






Shut off problem
Simple-minded search
Lack of access and concurrency control
Static, manual, procedural service composition
Device-independent UI
No programmer-defined types
High programming and maintenance costs
100
Download