Ubuntu Weekly Recipe

第213回 Ubuntuを使ってUPnPとDLNAのネットワーキングを覗いてみる

この記事を読むのに必要な時間:およそ 3 分

本連載の第86回 UbuntuをWindows 7のサーバとして使う(2)DLNAサーバ編第109回 HDDレコーダを使いこなす(1)DLNAクライアント第111回 UbuntuからHDDレコーダを使いこなす(2)動画ファイルのダウンロードでは,DLNAやUPnPに関するレシピをお届けしました。

今回はGUPnPというソフトウェアを使い,このDLNAやUPnPをもう少し掘り下げて説明してみます。

UPnP?DLNA?

DLNAに関して調べていると必ず,UPnPという言葉も目にするはずです。この2つの区別がいまひとつわからずに混乱している方も多いのではないでしょうか? そこで、まずはこの2つが何なのか,まとめておきましょう。

UPnPDLNAも,互いに独立した業界団体です。ローカルネットワークを介したハードウェアの相互運用性の向上がその目的です。簡単に言ってしまうと「ネットワークにつなぐとすぐに使える=特定の用途を簡単に提供できる製品を作る」ということです。これを達成するためにガイドラインを策定し注1),そのガイドラインの認証テストを行なっています。

UPnPのガイドラインにはマルチメディア向けガイドラインのほかに,調光装置向け,インターネットゲートウェイ向け,プリンター向け,スキャナー向け,固定電話向けなど,多くのガイドラインを含んでいます。中には,日差しを避けるブラインド向けのガイドラインもあります。そしてそれらガイドラインが共通して用いるネットワーキング機能を,UPnP Device Architectureとして定めています。

対してDLNAは,映像・音声・画像などマルチメディアを扱う製品のみに特化したガイドラインを出しています。UPnPのマルチメディア関連ガイドライン(AV architecture)に上乗せする形で,扱うことのできるファイルフォーマットやDRM(Digital Rights Management)への対応などを独自に定めています。UPnPなしにはDLNAは成り立たないと言えます。

注1
UPnPのガイドラインはISO/IEC 29341シリーズで標準化されています。ISOから購入することも可能ですが,UPnPのインターネットサイトから入手することも可能です。しかし,DLNAのガイドラインに関しては加盟料を支払いアライアンスに加わらなければ参照することができません。

GUPnPで見る,自宅のUPnPノード

GUPnPは開発者のためのツールですが,ユーザーはこれを用いることで,自分のネットワークにあるUPnPノードを見つけたり,装置やソフトウェアがうまく使えないといったトラブルシュートに利用することができます。

導入するにはUbuntuソフトウェアセンターで「gupnp-tools」をインストールしてください。このパッケージは以下のソフトウェアを提供します。

gupnp-universal-cp
UPnPのありとあらゆる機能のControl Pointとなるソフトウェア
gupnp-av-cp
UPnPのAVガイドラインにしたがって作られたノードの一覧を表示し,簡単な操作をする
gupnp-network-light
UPnPの調光ガイドラインの仮想ノードを設ける
gupnp-upload
MediaServer機能を持ったUPnPノードにファイル転送を試す
gssdp-discover
ネットワーク内に存在するUPnPノードからのSSDPメッセージを表示する

まずは,自宅のネットワークに存在しているUPnPノードを一覧してみましょう。UnityのDashで「gupnp-universal-cp」を検索し,「GUPnP Universal Control Poiint」を起動してください。

図1 GUPnP Universal Control Pointの画面

図1 GUPnP Universal Control Pointの画面

ウィンドウ左に,ネットワーク内にあるUPnPの各ノードが提供する機能が表示されます。ここでは,MiniDLNA,MediaTomb,Windowsオペレーティングシステムが提供するMediaServer機能と,Windows Media PlayerによるMediaRenderer機能が認識されています。筆者はUPnP/DLNA対応の家電を持っていないためこれだけしか表示されませんが,普通の家庭であればテレビやレコーダーなどが現れると思います。

UPnPノードの種類

UPnPのノードには2種類あり,ひとつが「Control Point」,もうひとつが「Root Device」です。

Control Pointはその名の通り,他のノードを制御するノードです。

Root Deviceは,ファイルサーバー機能やプリンター機能といったUPnPのサービスを提供するノードです。ひとつのIPアドレスに対応しており,ひとつのノードが複数のサービスを提供している場合もあります。先ほどの「GUPnP Universal Control Poiint」では,同一のWIndowsマシンが提供する2つのサービスが別々に見えていました。

ノードを相互認識する仕組み

UPnPの基本部分は,ノードが相互を認識するところにあります。簡単に説明してみます。

UPnP対応ハードウェアやソフトウェアはネットワークに接続されると,ネットワーク上でパケットをやりとりするためにIPアドレスを取得します。これはUPnPでは「Addressing」と呼んでいます。具体的な方法はDHCP,あるいは固定IPアドレス,あるいはlink-localを解決する実装(BonjourやAvahiの機能の一部)など,UPnPの外の技術に頼っています。

次にUDPを使い,自分の存在と提供するサービスの概略を通知するメッセージをマルチキャストします。すでにネットワークに接続されているソフトウェアやハードウェアはこのメッセージを受け取り,自分と関係のあるものであれば応答します。この段階はUPnPでは「Discovery」と呼び,一連の手続きはSSDP(Simple Service Discovery Protocol)と名付けられており,メッセージの内容はHTTPに順じています。

ここまでを終えると,関係のあるノード同士がお互いのIPアドレスを把握しますので,以降はTCPを使ったHTTPによってXMLをやり取りすることで相互運用をします。この際やり取りされるXMLの内容を大別すると,以下の3つとなります。なお,()内はUPnPでの用語です。

  1. Control Pointの要求に応じて,Deviceはそのメーカー情報や,提供するサービスの詳細を送信する(Description)
  2. Control Pointは操作情報を送信し,Deviceはそれに応答する(Control)
  3. Deviceは自分が持つControl Pointの登録リストに対し,自分の状態変化を通知する(Eventing)

このようにしてUPnPは,既存のインターネット技術を組み合わせて相互運用を実現しています。

著者プロフィール

坂本貴史(さかもとたかし)

Ubuntuのマルチメディア編集環境であるUbuntu Studioのユーザ。主にUbuntu日本コミュニティとUbuntu Studioコミュニティで活動。いつかユーザ同士で合作するのが夢。

コメント

コメントの記入