Synchronisierungs-Protokoll für Po.W.E.R.
=========================================
Version: 20131106
Autor: Stefan Schürmans
Aufgabenstellung
----------------
Für die Theateraufführung Po.W.E.R.ist es notwendig, verschiedene Rechner, die
Audio, Video und/oder Effekte abspielen miteinander zu synchronisieren. Dabei
soll nicht nur die aktuelle Zeit innerhalb eines Audio-Stücks bzw. Films
synchronisiert werden, sondern auch das aktuelle Stück (z.B. der Dateiname)
mit behandelt werden. Da kein Standard-Protkoll für diese Aufgabe gefunden
werden konnte, soll nun ein einfaches Protokoll neu definiert werden.
Grundprinzip
------------
Ein sogenannter Master soll als zentrale Instanz die Synchronisations-
Informationen periodisch per Ethernet/WLAN an die einzelnen Abspielrechner
(auch Clients genannt) verteilen. Die Abspielrechner empfangen den Namen
des aktuellen Stücks und die aktuelle Position in diesem Stück. Sie
vergleichen diese Soll-Information mit der lokalen Ist-Information und passen
das Stück und die Position eigenständig an, wenn eine signifikante Abweichung
vorliegt.
Die Übermittlung der Synchronisations-Informationen soll ohne An-/Abmeldung
der Clients beim Server erfolgen und keine Speicherungs eines Zustands der
Gegenstelle auf Seiten des Servers oder der Clients erfordern, damit die
einzelnen Geäte autonom arbeiten können. Es soll gewährleistet sein,
dass der Ausfall eines Gerätes (Client oder Server) die Funktion der anderen
Geräte nicht beeinträchtigt. Im Falle des Ausfalls des Servers steht
allerdings die Synchronisations-Funktion nicht mehr zur Verfügung und die
Clients laufen unsynchronisert weiter. Wird das ausgefallene Gerät
neu gestartet, soll es direkt wieder den Normalbetrieb aufnehmen, ohne
dass die anderen Geräte mitwirken.
Datenformat
-----------
Die Synchronisations-Informationen werden periodisch per UDP-Broadcast
gesendet. Sowohl Quell- als auch Ziel-Port sind 5740. Die Sendung erfolgt
alle 0.1 Sekunden. Jedes gesendete Informations-Paket enthält den Namen des
aktuellen Stücks und die aktuelle Position im Stück.
Da die Informations-Pakete häufig versand werden und schnell bearbeitet werden
müssen, soll sowohl deren Erstellung als auch deren Verarbeitung möglichst
effizient sein. Es wir daher ein einfaches Binärformat verwendet. Die
Nutzdaten des UDP-Pakets sind wie folgt aufgebaut: