46
Stéphane Lavirotte Gaëtan Rey Jean-Yves Tigli Stéphane Lavirotte Gaëtan Rey Jean-Yves Tigli Universal Plug and Play (UPnP) Mail: [email protected] Web: http://stephane.lavirotte.com/ Université de Nice - Sophia Antipolis 04/11/2008 1

Cours UPnP

Embed Size (px)

Citation preview

Page 1: Cours UPnP

Stéphane LavirotteGaëtan Rey

Jean-Yves Tigli

Stéphane LavirotteGaëtan Rey

Jean-Yves Tigli

Universal Plug and Play (UPnP)

Mail: [email protected]

Web: http://stephane.lavirotte.com/

Université de Nice - Sophia Antipolis

04/11/2008 1

Page 2: Cours UPnP

Motivations

Limitation à de l’envoi de données sur le réseau– Pas d’exécutables circulant sur le réseau

– Minimiser les versions

– Minimiser les aspects sécurité

Conserver le code de l’application « privé »– Etre agnostique par rapport au réseau, à l’OS, au langage de

programmation

– Mise à jour de l’implémentation sans affecter l’interopérabilitéAugmenter les performances

Augmenter les possibilités

Etre d’accord sur le format et le sens des données– Choix de protocoles éprouvés (W3C, IETF)

– Définition des Dispositifs et Services par un Forum

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 2

Présentateur
Commentaires de présentation
UPnP est un protocol de transmission de donnée UPnP n’envoie pas byte code, de contrôles ActiveX, … UPnP ne requière qu’une compatibilité de version au niveau protocole, et pas un environnement de programmation / langage / OS soécifiques UPnP n’introduit pas d’aspects sécurité (accès non autorisés, allocations de ressources déraisonnables, …) UPnP conserve l’implémentation du protocole privée UPnP ne requière pas que l’industriel développe sur un OS spécifique ou avec un langage ou un matériel sépcifiques. Ceci relève des décisions stratégiques des industriels et doit être complètement transparent pour le protocole. UPnP doit permettre aux industriels de suivre les évolutions de la loi de Moore et ses propres avancées technologiques pour construire et fournir des dispositifs toujours plus efficaces, avec plus de capacités et des solutions moins couteuses, le tout sans affecter l’interoperabilité. UPnP nécessite l’accord sur les format et le sens des données transmises Les bases de ces accords sont les protocoles existants du W3C et de l’IETF Les accord spécifiques concernant les domaines ou les types de dispositifs particulier se feront au travers le Forum UPnP
Page 3: Cours UPnP

Introduction

Le forum UPnP™ – une initiative industrielle

– Conçue pour permettre la connectivité simple et robuste entre dispositifs de différents fournisseurs

L'architecture d'UPnP permet la découverte puis le contrôle de dispositifs sur un réseau, indépendant – Des OS

– Des langages de programmation,

– Des réseaux physiques et locaux.

La technologie d'UPnP s’appuie pour cela sur des normes existantes IP, UDP et TCP, HTTP, XML et SOAP

http://www.upnp.org/

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 3

Présentateur
Commentaires de présentation
Les industriels peuvent choisir leur propres langages et modèle de programmation pour la mise en œuvre d’UPnP. choisir leur propres systèmes et matériels pour implémenter UPnP fournir UPnP sur une grande variété de réseau physique. La seule contrainte est la nécessité de disposer d’IP sur le réseau, sinon, mise en place d’un pont entre les technologies.
Page 4: Cours UPnP

Architecture UPnP

Control Point (Point de Contrôle)– Celui qui contrôle (le client)

Device (Dispositif)– Celui qui est contrôlé (le serveur)

Un dispositif peut contenir les deux

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 4

Control Point

Network

Control Point

Device3

Service

Device1

Service

Device2

Service

Service

Internet Network2Network1NAT

Bridge

NAT

Présentateur
Commentaires de présentation
Les points clés d’UPnP sont les points de contrôle et les dispositifs. UPnP est un modèle de réseau asymétrique (tous les types de nœuds du réseau ne sont pas du même type). Un bon test pour les identifier: si un nœud émet des actions c’est un point de contrôle; s’il reçoit des actions, c’est un dispositif. Un dispositif inclus un ou des ensemble de fonctionnalités appelés des service (ce qui sera explicité ultérieurement). Un nœud du réseau peut à la fois être un point de contrôle et un dispositif
Page 5: Cours UPnP

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 5

Overview of Intel® AV Tools for UPnP Technologies

Ylian Saint-Hilaire

Senior Architect

Démonstration

Présentateur
Commentaires de présentation
Overview of Intel AV Tools: Pour une première découverte en vidéo des possibilités offertes grâce à UPnP
Page 6: Cours UPnP

Terminologie UPnP

1. Le point de contrôle et les dispositifs obtiennent une adresse

2. Le point de contrôle trouve les dispositifs intéressants3. Le point de contrôle découvre les capacités du dispositif4. Le point de contrôle déclenche une action du dispositif5. Le point de contrôle écoute les changement d’état des

dispositifs6. Le point de contrôle commande les dispositifs ou visualise

les changements d’état par l’interface HTML du dispositif

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 6

1. Adressage

2. Découverte

3. Description

6. Présentation5. Evènements4. Contrôle

Présentateur
Commentaires de présentation
La trame de présentation d’UPnP: Nous allons décrire comme le réseau est construit par la présentation successive des couches du bas vers le haut
Page 7: Cours UPnP

Sous-Système UPnPcôté Dispositif

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 7

Network

Device

DescriptionEvents generated

by the device

Events notification

Eventing

Event

subscription

Control

Control

Request

Action

Request

Control

Response

Action

Response

Device

Advertisements

over SSDP channel

Discovery

Discovery

Search

Addressing

DHCP Auto-IP

Page 8: Cours UPnP

Sous-Système UPnP côté Point de Contrôle

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 8

Control

Control

Request

Eventing

Event

subscription Events notification

Control

Response

Discovery

Search Discovery

Response

Discovery

Presentation

Control point user

Network

Addressing

DHCP Auto-IP

Page 9: Cours UPnP

Piles et protocoles UPnPLa suite de protocoles HTTP/TCP/IP fournissent la connectivité de base de réseau pour UPnP.

Chaque phase UPnP est reliée à des protocoles de réseau plus ou moins standards.

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 9

DescriptionXML

ContrôleSOAP

EvènementGENA

PrésentationHTML

DécouverteSSDP

AdressageDHCP / Auto IP

HTTP

TCP

IP

UDP

HTTPU/MU

UPnP Device Architecture

UPnP Forum Working Commitee

UPnP Vendor

Présentateur
Commentaires de présentation
Présentation simplifiée de l’ensemble de la pile. Les diapositives suivantes présenteront chacune des parties en détail. Tout d’abord, tout repose sur IP UDP est utilisé pour la recherche et découverte TCP est utilisé pour la decription, le contôle, les évènement et bien sur la présentation UPnP Device Architecture: contribution de Microsoft au Forum UPnP. UPnP Forum Working Commitees: défini les spécifications liées à un domain ou à des types de dispositifs spécifiques, ainsi que les format de données, au dessus de l’ UPnP Device Architecture. UPnP Vendor: spécifie leurs propres extensions au dessus de l’UPnP Forum Working.
Page 10: Cours UPnP

Adressage

Points de contrôle et dispositifs recherche une adresse– Utilisation d’un serveur DHCP

– Sinon, utilisation de Auto-IP

Qu’est ce que c’est que Auto-IP ?– IETF Draft Automatically Choosing an IP Address in an Ad-Hoc

IPv4 Network

Quelles sont les étapes de Auto-IP ?– Prendre une adresse dans l’intervalle 169.254/16

– Vérification de la non utilisation de l’adresse

– Recherche périodique d’un serveur DHCP

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 10

Présentateur
Commentaires de présentation
UPnP ne fait aucun présupposé sur les composants réseaux qui existent pour la maintenance du réseau, mais si de tels composants existent, UPnP travaille avec ceux-ci.
Page 11: Cours UPnP

Découverte

Le Point de Contrôle – recherche les

dispositifs intéressants

0 récupère l’adresse1 découvre le dispositif

– Avertit / Trouve les dispositifs typés (services)

Garantie de capacités minimales

– Simple

Le Dispositif– Avertit quand il rejoint

le réseau– Rafraîchit

l’avertissement (lease)– Annule

l’avertissement quant il se retire

Le Point de contrôle recherche au besoin– Le dispositif répond– Le Point de Contrôle

filtre

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 11

Présentateur
Commentaires de présentation
La découverte utilise un système de matching simple. Ceci aide au maintient de bande passante faible et à la mise au point de dispositif peut couteux. Les points de contrôle doivent faire le filtrage. Les dispositifs doivent avertir de leur arrivée et de leur départ du réseau. Comme les dispositifs peuvent quitter le réseau dans avertissement (retrait par l’utilisateur de l’alimentation du dispositif par exemple), les avertissements ont un délais d’expiration. C’est un délai de leasing que les dispositifs doivent renouveller pour rester signalés comme actifs sur le réseau. Deux types de découverte pour les deux types de nœuds du réseau: Les dispositifs doivent avertir quand ils sont ajoutés au réseau Les points de contrôle recherchent quand ils sont ajoutés au réseau
Page 12: Cours UPnP

Découverte: Pile du protocole

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 12

IP

UDP

UPnP Device Architecture Defined

UPnP Forum Working Commitee Defined

UPnP Vendor Defined

HTTPMU(multicast)

SSDPGENA HTTPU(Unicast)

SSDP

Page 13: Cours UPnP

Découverte: SSDP

Qu’est ce que c’est SSDP– IETF Draft Simple Service Discovery Protocol (expiré)

– Proposé par Microsoft et Hewlett-Packard

– Il peut être utilisé par des dispositifs démarrant pour notifier aux autres leur présence.

– Il peut être employé par des points de contrôle essayant de trouver un service (demande une recherche pour un service )

SSDP est employé au-dessus de HTTPMU et HTTPU– Basé sur UDP

– Annonces/requêtes sont faits multicast sur HTTPMU

– Réponses sont faits au-dessus de HTTPU

– Adresse multicast: 239.255.255.250

– Port: 1900

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 13

Présentateur
Commentaires de présentation
La découverte est basée sur l’utilisaSSDP: Protocole Simple de Découverte De Service SSDP a été soumis à l’IETF (28 octobre 1999), mais a expiré depuis (avril 2000). Auteurs: Yaron Y Goland, Ting Cai, Paul Leach, Ye Gu (Microsoft) et Shivaun Albright (Hewlett-Packard) IANA a réservé adresse et port en IPv4 pour SSDP Les items spécifiés par SSDP sont soulignés dans les diapositives suivantes tion du protocol SSDP
Page 14: Cours UPnP

HTTPMU

HTTPMU – a été inventé pour soutenir UPnP

– n'est pas une recommandation du W3C

– utilise la syntaxe HTTP tout en en changeant la sémantique Ainsi une requête comme GET http://localhost/index.html ne peut pas être interprétée comme une requête d'un document

– utilise les requêtes standards de HTTP: GET, POST, HEAD, …

– permet l’utilisation de nouveaux types de requêtes: NOTIFY

– fonctionne sur UDP (multicast)envoi de datagrammes messages d’un seul bloc

possibilité d’envoi des datagrammes à un "groupe"

les contenus du datagramme sont des requêtes HTTP

– aucune réponse à ces requêtes multicast puisque le message peut être reçu par plusieurs clients

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 14

Page 15: Cours UPnP

HTTPU

HTTPU – a été inventé pour UPnP

– n’est pas une recommandation du W3C

– envoie un seul datagramme en UDP à un destinataire

– le destinataire peut envoyer une réponse en retour à l’émetteur à l’adresse et au port d’émission du datagramme.

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 15

Page 16: Cours UPnP

Annonce SSDP (Notify)

Multicast sur HTTPMUQui ? Un dispositif pour s’annoncerQuand ? Ajout, arrêt ou rafraîchissement (lease) (NTS)Comment ?

– USN: chaque dispositif a un UUID de sorte d’être identifié même en cas de changement d’adresse IP

Les notifications sont atomiques et envoyées périodiquementPas de réponse à une annonce

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 16

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

Présentateur
Commentaires de présentation
Les dispositifs envoi un message multicast quand ils sont ajoutés au réseau ou quand ils renouvellent leur avertissement. La commande NOTIFY définie par GENA (voir plus loin dans cette présentation) Champs HOST: l’adresse multicast et le port réservés par l’IANA pour SSDP Champs CACHE-CONTROL: la durée pour l’avertissement Champs LOCATION: une localisation pour le dispositif (voir plus loin dans la présentation) Champs NT (notification Type): spécification du type d’avertissement Champs NTS (Notification Sub Type): ssdp:alive pour l’avertissement d’arrivée, et ssdp:byebye pour l’avertissement de départ Champs USN (Unique Serial Number): un identifiant unique pour cet avertissement Les autres champs sont volontairement omis pour une meilleure clarté. Consulter le document UPnP Device Architecture pour plus de détails. Le mot clé upnp:rootdevice permet aux applications d’afficher l’interface graphique correspondante au dispositif physique
Page 17: Cours UPnP

Recherche SSDP (Search)

Multicast

Qui ? Un point de contrôle qui a manqué les annonces

Quand ? Recherche de dispositif ou de service

Comment ?

La recherche est assez simple: le service demandé correspond-il au type de service ou pas? Si oui il y aura une réponse par HHTPU, sinon pas.

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 17

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

Présentateur
Commentaires de présentation
Le points de contrôle multicast ce message quand il essaie de rechercher tous les dispositifs, typiquement quand une application démarre ou qu’elle rejoint le réseau. Le message inclus: la commande SEARCH avec une extension au protocole HTTP M-SEARCH Champs HOST: l’adresse multicast et le port réservés par l’IANA pour SSDP Champs MAN (Mandatory): spécifie le typê ssdp:discovery Champs MX: Durée pour les dispositifs pour retarder leur réponse (aide au contrôle de congestion du réseau) ST (search target): ce qui est recherché (un type de service ou de dispositif) Par rapport au champs NT (notification types) du message de type NOTIFY, ST peut contenir la valeur spéciale ssdp:all qui est définie pour matcher l’ensemble des valeur de NT.
Page 18: Cours UPnP

Réponse SSDP

Unicast

Qui ? Une dispositif

Quand ? Si ST correspond à NT

Comment ?

Envoyé pour chaque NT qui correspond

Matching très simple

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 18

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

Page 19: Cours UPnP

Description

Le point de contrôle apprend les capacités des dispositifs– 0 récupère l’adresse

– 1 découvre le dispositif

URL pour la description du dispositif

– 2 récupère la description

URL pour la description du (des) service(s)

Pile du protocole

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 19

IP

TCP

UPnP Device Architecture

UPnP Forum Working Commitee

UPnP Vendor

HTTP

Page 20: Cours UPnP

Description: Dispositif et Service

Description du Dispositif– Type– Description Physique– Description Logique

Pour chaque Service– Type– URL pour la

description– URL pour le contrôle– URL pour les

évènements

– Interface utilisateurIconesURL de présentation

Services– Unité fonctionnelles du

dispositif

Description du Service– Actions– Variables d’état

Tout est spécifié en XML

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 20

Présentateur
Commentaires de présentation
Description de Dispositif Défini le type des dispositifs (Magnétoscope, Télévision, …) Contient une description physique (informations sur le dispositif: manufacturier, version, …) Pour chaque service: contient l’URL pour la description, le contrôle et les évènements Contient une partie interface utilisateur (icones, URL de présentation) Fourni lors de la notification Description des Services Renseigne sur les actions définies par le service (ex: lecture, stop, rembobiner, …) Renseigne sur les évènements auxquels on peut souscrire Récupération grâce à HTTP GET et toutes les données sont spécifiées en XML
Page 21: Cours UPnP

Description: Dispositif

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 21

<?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>

Description Physique

Description Autre

Description Logique

Page 22: Cours UPnP

<?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>

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 22

Description: Dispositif (Physique)

Page 23: Cours UPnP

Description: Dispositif (Logique)

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 23

<?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>

Page 24: Cours UPnP

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 24

<?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>

Description: Dispositif (autre)

Page 25: Cours UPnP

Description: Service (actions)

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 25

<?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>

Page 26: Cours UPnP

Description: Services (Variables)

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 26

<?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>

Page 27: Cours UPnP

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 27

Overview of the Intel® Tools for UPnP Technologies

Ylian Saint-Hilaire

Senior Architect

Démonstration

Présentateur
Commentaires de présentation
Overview of Intel Tools: Pour une présentation des outils founis par Intel: Device Spy, Device Light, Device Sniffer, …
Page 28: Cours UPnP

Contrôle

Côté Point de Contrôle– Chercher l’URL pour la

commande– Construit des requêtes

(RPC calls) en utilisant SOAP

– Envoie les requêtes par HTTP

– Attend les réponses SOAP du dispositif.

Côté Dispositif– Parse la requête SOAP– Effectue l'action requise

et renvoie les réponses dans des messages SOAP

Pile du protocole

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 28

IP

TCP

UPnP Device Architecture

UPnP Forum Working Commitee

UPnP Vendor

HTTP

SOAP

Présentateur
Commentaires de présentation
SOAP est simplement une spécification XML de où et comment vont être spécifié les actions, les arguments, et les information contextuelles (par utilisé par UPnP)
Page 29: Cours UPnP

Contrôle: SOAP

Qu’est ce que SOAP ?– IETF Draft Simple Object Access Protocol– Protocol basé sur XML pour l’échange d’information dans un

environnement décentralisé et distribuéEnveloppe: défini un cadre pour décrire ce qui est dans le message et comment l’utiliser

Convention: représente l’appel distant de méthodes et les réponses

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 29

Page 30: Cours UPnP

Contrôle: Requête SOAP

Qui ? Le Point de Contrôle

Quand ? Pour déclencher une action d’un dispositif

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 30

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>

Page 31: Cours UPnP

Contrôle: Réponse Action

Qui ? Le dispositif

Quand ? Quand l’action est effectuée

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 31

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:actionNameResponsexmlns: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>

Page 32: Cours UPnP

Evénement

Le dispositif – publie une liste

d’événements auxquels les points de contrôle peuvent s’abonner et sur lesquels ils peuvent obtenir des notifications

Les points de contrôles – souscrivent auprès d’un

dispositif pour un événement publié

Les événements sont notifiés par les dispositifs à travers TCP aux points de contrôle abonnés.

Pile du protocole

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 32

IP

TCP

UPnP Device Architecture

UPnP Forum Working Commitee

UPnP Vendor

HTTP GENA

Page 33: Cours UPnP

Evènement: GENA

Qu’est ce que GENA ?– IETF Draft General Event Notification Architecture– Envoi et reçoit des notifications par HTTP au dessus de TCP/IP

Souscription (abonnement) aux notification

Désabonnement

Notification– Disponibilité des dispositifs

– Changement des valeurs de variables d’état

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 33

Page 34: Cours UPnP

Evènement: Abonnement

Qui ? Le Point de Contrôle

Quand ? Avant de recevoir tout évènement

Comment ?

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 34

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

Page 35: Cours UPnP

Evènement: Réponse Abonnement

Qui ? Le Dispositif

Quand ? Acceptation de l’abonnement

Comment ?

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 35

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

Page 36: Cours UPnP

Evènement: Notification

Qui ? Le Dispositif

Quand ? A chaque changement de variables d’état

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 36

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>

Page 37: Cours UPnP

Présentation

Le point de contrôle apprend les capacités des dispositifs– 0 récupère l’adresse

– 1 découvre le dispositif

– 2 récupère la description

URL pour la description de la présentation

– 5 charge la page de présentation

Pile du protocole

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 37

IP

TCP

UPnP Device Architecture

UPnP Vendor

HTTP

Page 38: Cours UPnP

Synthèse sur UPnP

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 38

EvènementsContrôleRecherche et Découverte

IP

UPnP Device Architecture Defined

UPnP Forum Working Commitee Defined

UPnP Vendor Defined

UDP TCP

HTTPMU(multicast)

SSDP

GENA HTTPU(Unicast)

SSDP HTTP GENASOAP

HTTP

Page 39: Cours UPnP

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 39

Overview of Intel® Device Builder, Intel® Authoring Tools

for UPnP TechnologiesYlian Saint-Hilaire

Senior Architect

Démonstration

Présentateur
Commentaires de présentation
Full tutorial: Création des fichiers XML pour la création d’un dispositif (Service Author, Device Author) Génération de la pile UPnP et du squelette de code pour le dispositif créé (Device Author) Implémentation du dispositif (Visual Studio)
Page 40: Cours UPnP

Des produits intégrant UPnP

Logiciel

Matériel

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 40

Présentateur
Commentaires de présentation
Point de Contrôle: Xbox, PSX3, Philips RC9800i, Logik IR100, Serveur de Media: LinkSys WRT350N, Western Digital My Book World Edition
Page 41: Cours UPnP

Avantages d’UPnP

UPnP– Envoi juste des données

– Conserve les implémentations privées

– Accord sur le contenu et le format des données

UPnP est:– Basé sur des protocoles Web

– Piloté par un Forum pour les types de dispositifs et services

– Indépendant du réseau physique, de l’OS, des API

– Utilisé pour la découverte, la description, le control et la gestion par évènements

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 41

Page 42: Cours UPnP

Limitations et Perspectives

L’approche retenue réside alors dans la conception de ponts (bridge) UPnP

Pointeur sur des travaux en cours– SCP: Simple Control Protocol

– http://www.yitran.com/prod_nar.htm

– http://www.microsoft.com/japan/windows/scp/

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 42

UPnP

Bridge

Dispositif léger

Dispositif léger

UPnP

Point

de

Contrôle

Page 43: Cours UPnP

Faiblesses d’UPnP

UPnP utilise SSDP– par-dessus UDP (HTTPU et HTTPMU pour l'unicast et le

multicast)

– cette spécification n’est pas standardisée

– la version draft a expiré en 2000

UPnP n'intègre aucun protocole d'authentification.

UPnP est une pile imposante pour des dispositifs légers

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 43

Page 44: Cours UPnP

Références

Universal Plug and Play forum– http://www.upnp.org/

UPnP architecture– http://www.upnp.org/UPnPDevice_Architecture_1.0.htm

Intel’s UPnP SDK for Linux– http://developer.intel.com/ial/upnp/

Simple Object Access Protocol– http://www.w3.org/TR/SOAP/

IETF draft on ‘Multicast and Unicast UDP HTTP Messages’– http://www.ics.uci.edu/pub/ietf/http/draft-goland-http-udp-

01.txt

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 44

Page 45: Cours UPnP

Device Profile for Web Services

UPnP v2 ou DPWS– Mêmes objectifs qu’UPnP– Corrige les défaut d’UPnP mais sans être backward compatible

(d’où le changement de nom)– Complètement compatible avec les standards du Web

Spécification DPWS– Initialement publié en mai 2004– Version actuelle:

http://schemas.xmlsoap.org/ws/2006/02/devprof/

Implémentation– Inclus dans Vista, Windows Embedded CE 6.0 R2, .NET Micro

Framework 2.5 (WSDAPI)– http://msdn2.microsoft.com/en-us/library/ms996400.aspx– https://forge.soa4d.org/ et http://www.ws4d.org/

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 45

Page 46: Cours UPnP

Device Profile for Web Services

– Basé uniquement sur des standards et recommandations

SOAP 1.2,

XML,

XML Schema,

WSDL 1.1,

WS-Addressing,

WS-MetadataExchange,

WS-Transfer,

WS-Policy,

WS-Security,

WS-Discovery

WS-Eventing

Pile du Protocole

04/11/2008 S. Lavirotte - G. Rey - J.-Y. Tigli 46

Présentateur
Commentaires de présentation
DPWS est basé sur les recommandations du W3C concernant les Architectures à base de Web Services: SOAP WSDL XML-Schema DPWS est aussi basé sur de nombreux standards des Web Services: WS-Addressing for advanced endpoint and message addressing, WS-Policy for policy exchange, WS-Security for managing security, WS-Discovery and SOAP-over-UDP for device discovery, WS-Transfer / WS- Metadataexchange for device and service description, WS-Eventing for managing subscriptions for event channels.