SSDP steht für Simple Service Discovery Protocol. Es ist der Discovery-Teil von UPnP und hilft Geräten und Steuerprogrammen, sich in einem lokalen Netzwerk gegenseitig zu finden. Typische Beispiele sind Smart-TVs, Mediaserver, Netzwerklautsprecher und andere UPnP-Geräte.
Wie funktioniert SSDP?
Für IPv4 nutzt SSDP normalerweise UDP-Port 1900 und die Multicast-Adresse 239.255.255.250. Geräte können ihre Anwesenheit per SSDP ankündigen; ein sogenannter Control Point kann seinerseits aktiv nach passenden Geräten oder Diensten suchen.
Eine typische Suchanfrage sieht vereinfacht so aus:
M-SEARCH * HTTP/1.1 HOST: 239.255.255.250:1900 MAN: "ssdp:discover" MX: 2 ST: ssdp:all
Antwortet ein Gerät auf die Suche, enthält die SSDP-Nachricht unter anderem eine LOCATION-URL. Über diese URL kann der Client anschließend eine XML-Gerätebeschreibung per HTTP abrufen. Darin stehen zum Beispiel Gerätetyp, Friendly Name und die angebotenen UPnP-Dienste.
SSDP ist nicht das eigentliche Streaming-Protokoll
Ein häufiger Irrtum ist, SSDP selbst würde Audio- oder Videodaten übertragen. SSDP dient nur zum Entdecken von Geräten und Diensten. Die eigentliche Steuerung und Medienübertragung erfolgt anschließend über die zu den jeweiligen UPnP-/DLNA-Diensten gehörenden Protokolle und URLs.
SSDP abschalten – ja oder nein?
Die alte Empfehlung, SSDP grundsätzlich zu deaktivieren, ist zu pauschal. Wenn du UPnP-/DLNA-Funktionen im lokalen Netz nutzt, kann das Abschalten die automatische Geräteerkennung verhindern. Sinnvoll ist aber, SSDP/UPnP nicht unnötig aus nicht vertrauenswürdigen Netzen oder aus dem Internet erreichbar zu machen. Für die Fehlersuche kann man den Windows-Dienst SSDP-Suche und die Firewall-Regeln prüfen.
Die UPnP Device Architecture verwendet für IPv4 weiterhin 239.255.255.250:1900. Eine aktive Suche wird typischerweise mit M-SEARCH gesendet; Geräte können sich außerdem mit SSDP-Nachrichten selbst im Netz ankündigen.
Wenn Smart-TV und Mediaserver sich nicht finden
- Prüfe, ob beide Geräte tatsächlich im selben lokalen Netz bzw. VLAN liegen.
- SSDP-Multicast muss zwischen den beteiligten Geräten erreichbar sein. Router, VLAN-Grenzen, WLAN-Client-Isolation oder Firewall-Regeln können
239.255.255.250:1900/UDPblockieren. - Bei Windows-Systemen sollten die für Netzwerk-/Geräteerkennung benötigten Dienste und Firewallregeln nicht deaktiviert sein.
- Mit Wireshark lässt sich nach
ssdpfiltern. So siehst du, ob ein ClientM-SEARCHsendet und ob Antworten zurückkommen. - Eine SSDP-Antwort verweist über
LOCATIONauf die Gerätebeschreibung. Ist diese URL vom Client nicht erreichbar, kann die Discovery sichtbar sein, obwohl die eigentliche UPnP-Kommunikation anschließend scheitert.
SSDP sollte normalerweise auf das vertrauenswürdige lokale Netz begrenzt bleiben. Eine unnötige Freigabe aus dem Internet ist weder für Smart-TV-Erkennung noch für einen lokalen Mediaserver erforderlich.
Beispiel: Ein Smart-TV sucht seinen Mediaserver
Der Client sendet einen Multicast an 239.255.255.250
Der Server antwortet darauf mit der IP-Adresse, die den Serverdienst hostet.
Weitere Kommunikation erfolgt im HTTP und XML Style.
<?xml version=“1.0″ encoding=“utf-8″?>
<root xmlns:dlna=“urn:schemas-dlna-org:device-1-0″ xmlns=“urn:schemas-upnp-org:device-1-0″>
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<device>
<deviceType>urn:schemas-upnp-org:device:MediaServer:1</deviceType>
<friendlyName>PC1 : TVersity Media Server</friendlyName>
<manufacturer>TVersity</manufacturer>
<manufacturerURL>http://www.tversity.com</manufacturerURL>
<modelDescription>UPnP/AV 1.0 Compliant Media Server from TVersity</modelDescription>
<modelName>TVersity Media Server</modelName>
<modelNumber>1.9/2.3/0/</modelNumber>
<modelURL>http://www.tversity.com</modelURL>
<serialNumber/>
<UPC/>
<UDN>uuid:f32cda46-8f2a-f149-b6b6-e3165266b825</UDN>
<iconList>
<icon>
<mimetype>image/png</mimetype>
<width>48</width>
<height>48</height>
<depth>24</depth>
<url>/images/logo48.png</url>
</icon>
<icon>
<mimetype>image/png</mimetype>
<width>32</width>
<height>32</height>
<depth>24</depth>
<url>/images/logo32.png</url>
</icon>
</iconList>
<presentationURL>/</presentationURL>
<serviceList>
<service>
<serviceType>urn:schemas-upnp-org:service:ContentDirectory:1</serviceType>
<serviceId>urn:upnp-org:serviceId:ContentDirectory</serviceId>
<SCPDURL>/UPnP_AV_ContentDirectory_1.0.xml</SCPDURL>
<controlURL>/upnp/control/content_directory</controlURL>
<eventSubURL>/upnp/event/content_directory</eventSubURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>
<serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>
<SCPDURL>/UPnP_AV_ConnectionManager_1.0.xml</SCPDURL>
<controlURL>/upnp/control/connection_manager</controlURL>
<eventSubURL>/upnp/event/connection_manager</eventSubURL>
</service>
</serviceList>
</device>
</root>

