Netzwerke mit UPnP einrichten und steuern

Seite 3: Netzwerk-Magie

Inhaltsverzeichnis

Damit eine Fernbedienung den Fortschritt der Wiedergabe verfolgen kann, sichert der Mediarenderer den aktuellen Titel, die Spieldauer und Ähnliches in Zustandvariablen. Die Fernbedienung abonniert sie und erhält beim Wechseln eines Musikstücks eine Nachricht, die den neuen, nun aktuellen Titel enthält. Drückt man während des Abspielens auf der Fernbedienung die Weiter-Taste, löst man damit eine Aktion aus, die den Medienserver dazu bewegt, zum nächsten Titel zu springen. Er vermerkt die Veränderung und teilt sie wiederum der Fernbedienung mit (Eventing).

Im Zusammenhang mit UPnPAudio- und -Videogeräten taucht oftmals die Abkürzung UPnP/AV oder DLNA auf, die diese Vorgänge beschreiben soll. Die Digital Living Network Alliance (DLNA) entwickelt, standardisiert und testet Geräte, die Videos und Musik ausgeben oder speichern. Die DLNA zertifiziert strenger und will damit verhindern, dass Probleme zwischen Medienservern und -renderern auftreten.

Wireshark fischt aus dem Netzwerkverkehr SSDP-Daten heraus und arbeitet so als einfacher UPnP-Browser.

Läuft im Netz neben UPnP-Geräten ein Rechner mit Windows XP SP2 oder Vista, tauchen in der Netzwerkumgebung neben den LAN-Rechnern Symbole auf, die beispielsweise den Windows Media Player mit einer Medienfreigabe öffnen oder zu einer Gerätewebseite führen (Presentation).

So praktisch die Beschreibungen der UPnP-Funktionen klingen, so viele neue Probleme werfen sie auf: Will man beispielsweise die Oma aus der Ferne ins digitale Familienalbum schauen lassen, öffnet eine UPnP-Fotoverwaltung einen Port im Netzwerkrouter und leitet Anfragen an ihn ins lokale Netz weiter. Anschließend bastelt das Programm aus der externen Router-Adresse und der Portnummer eine URL, die es an Omas E-Mail-Adresse sendet. Tauscht man in dieser Beschreibung die Wörter Fotoverwaltung gegen Trojaner und Oma gegen Innenminister, verfliegt die Begeisterung für die Technik schnell: Die UPnP-tauglichen Heimrouter vertrauen anderen UPnP-Geräten und Control-Points nämlich blind. Eine Authentifizierung sieht die dafür zuständige UPnP-Definition für ein Internet Gateway Device (IDG) nicht vor. Allerdings gibt es mittlerweile Beschreibungen für die UPnPGerätesicherheit, die man mit dem IDG kombinieren könnte. Doch finden sich keine Heimrouter auf dem Markt, die die Portweiterleitung über UPnP beispielsweise per Passwort oder Schlüssel sichern. Wer also unliebsame Überraschungen vermeiden möchte, sollte bei DSL-Routern UPnP abschalten.

Hör mal, wer da hämmert Einige fertige Hilfsmittel und ein selbst gestricktes Skript bringen die UPnP-Datenformate und den Protokoll-Ablauf sowie zahlreiche Informationen über UPnP-Geräte ans Licht: Ein Netzwerk-Sniffer hilft dabei, die einzelnen Phasen und die Paketformate unter die Lupe zu nehmen. Ein wichtiges Merkmal von UPnP ist die Bekanntgabe und Erkennung von Geräten und Diensten, die sich Simple Service Discovery Protocol (SSDP) nennt und wie Apples Bonjour oder die Dienstesuche bei der Funktechnik Bluetooth zur dezentralen Namensauflösung und Diensteerkennung dient.

Eine dezentrale Dienste-Annoncierung benötigt Software, die auf Anfrage ihre Fähigkeiten und ihre Adresse mitteilt. UPnP-Geräte verkünden daher regelmäßig ihre Existenz, was zu mehr Netzwerkverkehr führt, aber sicherstellt, dass die Informationen aktuell sind.

Nach dem Einschalten und der Netzwerkeinrichtung startet auf dem Gerät die erste UPnP-Stufe, die sogenannte Erkennungs- oder Bekanntmachungsphase (Discovery). Ein UPnP-Gerät verkündet per SSDP, dass es im LAN arbeitet und zu welcher Geräteart es gehört. Dazu überträgt es HTTP-Anfragen zum Port 1900 an die Multicast-Adresse 239.255. 255.250, auf der alle im LAN aktiven UPnP-Geräte und Control Points mithören.

NOTIFY * HTTP/1.1
Host:239.255.255.250:1900
NT:upnp:rootdevice
NTS:ssdp:alive
Location:http://10.10.222.94:2869/upnphost/udhisapi.dll?content=uuid:e711a4
bf-5a90-43e1-bd01-e7d74c0d0706
USN:uuid:e711a4bf-5a90-43e1-bd01-e7d74c0d0706::upnp:rootdevice
Cache-Control:max-age=1800
Server:Microsoft-Windows-NT/5.1 UPnP/1.0 UPnP-Device-Host/1.0

Ein Windows-Rechner gibt sich per Simple Service Discovery als UPnP-Gerät erkennbar.

Das Paket beginnt mit dem Nachrichtentyp (Notify) und der Zieladresse samt Portnummer, die durch SSDP definiert ist (siehe Listing unten). Der Wert NT (Notification Type) zeigt den UPnP-Gerätetyp. NT enthält eine Nachricht, die anderen Netzteilnehmern zeigt, ob das Gerät aktiv ist (alive) oder sich demnächst abschaltet (byebye). Cache-Control zeigt an, wann die Geräte-Information verfällt und eine neue Nachricht fällig wird. Der Unique Service Name (USN) ist eine eindeutige ID für den Absender. Der Wert LOCATION verweist auf die eigentliche XML-Gerätebeschreibung, die im nächsten Schritt des UPnP-Ablaufs wichtig wird. Control Points suchen auf ähnliche Weise nach UPnP-tauglichen Geräten im Netz. Sie können allerdings die Anfrage auf bestimmte Geräteklassen einschränken und damit gezielt nach Diensten suchen:

M-SEARCH * HTTP/1.1\r\n
HOST: 239.255.255.250:1900\r\n
MAN: "ssdp:discover"\r\n
MX: 3\r\n
ST: urn:schemas-upnp- org:device:InternetGatewayDevice:1\r\n
\r\n

Das Feld MAN enthält die SSDP-Nachricht (discover) und ST spezifiziert die gesuchte UPnP-Klasse einer aktiven Internet Gateway (IDG). Steht hier "upnp:rootdevice", sollten sich alle UPnP-tauglichen, nicht eingebetteten Geräte melden. Antworten auf M-SEARCH-Anfragen beantworten sie anschließend direkt, also per Unicast (HTTPU).