UPnP Core Architecture Version 1 Yasushi Nagao Windows Product Marketing Microsoft Co., Ltd.
UPnP ビジョン UPnP Network ユーザーへプラグアンドプレイの使い勝手を提供 インターネット接続を簡単に共有する どこからでも自宅のコンテンツに安全にアクセス あらゆるジャンルの機器が対応可能 UPnP Network 検索をリクエスト デバイスが返事
UPnP ビジョン Internet Internet 強力&論理的&シンプルな ネットワーク 複雑に絡み合ったネットワーク HomePNA* PowerLine 1394 802.11 Bluetooth*
UPnPを実現する標準プロトコル ベンダ固有のAPI (上側) ベンダ固有の物理ネットワーク ベンダ固有のOS (下側) UPnP ベンダ UPnP Forum UPnP デバイス アーキテクチャ ベンダ固有の物理ネットワーク HTTPMU HTTPU SOAP HTTP SSDP GENA SSDP GENA HTTP UDP TCP IP ベンダ固有のOS (下側)
UPnP の技術的な特長 1. 物理的なネットワークメディアに依存しない 2. ソフトウェアプラットフォームに依存しない 3. 標準インターネット技術の活用
デバイス と コントロール ポイント コントロールポイント デバイス サービス ブリッジ Non-UPnP Device オーディオ PC
UPnPの動作ステップ 0 アドレッシング 1 ディスカバリ 0 アドレッシング 2 ディスクリプション 3 コントロール 4 イベンティング 5 プレゼンテーション 可能であれば、DHCPを使用 可能でなければAuto-IPを使用 Auto-IPの動作? 169.254/16内のアドレスを選択 ARPによって上記アドレスが有効かチェック 既に使用されていれば、他のアドレスでチェック 定期的にDHCPサーバーが可能かチェック
UPnPの動作ステップ 1 ディスカバリ ネットワーク上の機器を検出する段階 3 コントロール 4 イベンティング 5 プレゼンテーション 2 ディスクリプション 1 ディスカバリ 0 アドレッシング ネットワーク上の機器を検出する段階
UPnPの動作ステップ 1 ディスカバリ UPnP ベンダ UPnP Forum UPnP デバイス アーキテクチャ HTTPMU HTTPU HTTPMU SOAP マルチキャスト ユニキャスト HTTP SSDP GENA SSDP GENA UDP TCP IP
UPnPの動作ステップ UPnP Network 1 ディスカバリ SSDP : コネクト 告知 (アドバタイズ) 1 ディスカバリ SSDP : コネクト UPnP Network NOTIFY * HTTP/1.1 HOST: 239.255.255.250:1900 CACHE-CONTROL: time to live LOCATION: description url NT: {UDN | type:version} NTS: ssdp:alive USN: UDN::NT header value 告知 (アドバタイズ)
UPnPの動作ステップ UPnP Network 1 ディスカバリ SSDP : サーチ 検索をリクエスト 1 ディスカバリ SSDP : サーチ UPnP Network 検索をリクエスト M-SEARCH * HTTP/1.1 HOST: 239.255.255.250:1900 MAN: “ssdp:discover” MX: time to delay ST: {ssdp:all | UDN | type:version} <blank line>
UPnPの動作ステップ UPnP Network 1 ディスカバリ SSDP : サーチレスポンス 検索をリクエスト デバイスが返事 1 ディスカバリ SSDP : サーチレスポンス UPnP Network Audio 検索をリクエスト デバイスが返事 HTTP/1.1 200 OK CACHE-CONTROL: time to live DATE: date generated LOCATION: description url ST: same as NT header USN: UDN::ST header value
UPnPの動作ステップ 2 ディスクリプション 検出したデバイスから詳細な情報を取る段階 3 コントロール 4 イベンティング 5 プレゼンテーション 2 ディスクリプション 1 ディスカバリ 0 アドレッシング 検出したデバイスから詳細な情報を取る段階
UPnPの動作ステップ 2 ディスクリプション UPnP Network HTTP 検出 XMLドキュメント ディスクリプション 取得
UPnPの動作ステップ 2 ディスクリプション 二つのXMLドキュメント 標準規格に準拠 デバイス ディスクリプション 物理プロパティ 論理プロパティ UIプロパティ サービス ディスクリプション 有効なアクション ステート情報 標準規格に準拠
2 ディスクリプション : デバイスディスクリプション UPnPの動作ステップ 2 ディスクリプション : デバイスディスクリプション <?xml version=“1.0”?> <root xmlns=”urn:schemas-upnp-org:device-1-0”> <device> <serviceList> <service> </service> </serviceList> <deviceList> </deviceList> <iconList> <icon> </icon> </iconList> </device> </root>
UPnPの動作ステップ 2 ディスクリプション:物理プロパティ <?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>
UPnPの動作ステップ 2 ディスクリプション : 論理プロパティ <?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 ディスクリプション : サービスディスクリプション UPnPの動作ステップ 2 ディスクリプション : サービスディスクリプション <?xml version=“1.0”?> <scpd xmlns=”urn:schemas-upnp-org:service-1-0”> <actionList> <action> </action> <actionlist> <serviceStateTable> <stateVariable> </stateVariable> </serviceStateTable> </scpd>
UPnPの動作ステップ 2 ディスクリプション : サービスアクション 2 ディスクリプション : サービスアクション <?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 ディスクリプション : ステートバリアブル (変化) UPnPの動作ステップ 2 ディスクリプション : ステートバリアブル (変化) <?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>
UPnPの動作ステップ 3 コントロール 実際にデバイスをコントロールする段階 3 コントロール 4 イベンティング 5 プレゼンテーション 2 ディスクリプション 1 ディスカバリ 0 アドレッシング 実際にデバイスをコントロールする段階
SOAP UPnPの動作ステップ UPnP Network 3 コントロール アクション 結果 電源ON アクション <電源ON> Simple Object Access Protocol アクション 結果 電源ON アクション <電源ON>
UPnPの動作ステップ 3 コントロール : アクション POST: control url HTTP/1.1 3 コントロール : アクション POST: control url HTTP/1.1 HOST: address:port CONTENT-TYPE:text/xml; charset=“utf-8” SOAPACTION:”urn:schemas-upnp-org:service:type:version#action <s:Envelope xmlns:s=“http://schemas.xmlsoap.org/soap/envelope” s:encodingStyle=“http://schemas.xmlsoap.org/soap/encoding/” <s:Body> <u:actionName xmlns:u=“http://schemas-upnp-org:service:type:version” <argumentName>in argument value</argumentName> … </u:actionName> </s:Body> </s:Envelope>
UPnPの動作ステップ 3 コントロール : アクションの結果 HTTP/1.1 200 OK 3 コントロール : アクションの結果 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:type:version” <argumentName>out argument value</argumentName>
UPnPの動作ステップ 4 イベンティング デバイスの状態変化を検知する 3 コントロール 4 イベンティング 5 プレゼンテーション 2 ディスクリプション 1 ディスカバリ 0 アドレッシング デバイスの状態変化を検知する
Notification Architecture UPnPの動作ステップ 4 イベンティング UPnP Network GENA Generic Event Notification Architecture 障害 登録 <サブスクライブ> 通知 <パブリッシュ>
UPnPの動作ステップ 4 イベンティング : サブスクライブ サブスクライブ メッセージはサービスへ送信 4 イベンティング : サブスクライブ サブスクライブ メッセージはサービスへ送信 クライアントは通知にためURLを指定 クライアントはサブスクライブをリフレッシュしなければならない SUBSCRIBE eventing url HTTP/1.1 HOST: address:port CALLBACK: client notification url NT: upnp:event TIMEOUT: time to live
UPnPの動作ステップ 4 イベンティング : ノティフィケーション 4 イベンティング : ノティフィケーション NOTIFY client notification url HTTP/1.1 HOST: address:port CONTENT-TYPE: text/xml NT: upnp:event NTS: upnp:propchange SID: UDN:subscription UUID SEQ: sequence number <e:propertyset xmlns:e=“urn:schemas-upnp-org:event-1-0” <e:property> <variableName>new value</variableName> </e:property> … </e:propertyset>
UPnPの動作ステップ 5 プレゼンテーション Webブラウザを使ってデバイスの操作・設定が可能 3 コントロール 4 イベンティング 2 ディスクリプション 1 ディスカバリ 0 アドレッシング Webブラウザを使ってデバイスの操作・設定が可能
UPnPの動作ステップ 5 プレゼンテーション UPnP Network Web ブラウザ Get Presentation HTML UI
For the interconnected lifestyle