9275ddb7f694ea3aa625c5e3b0fcb0305ee7efef
Stefan Schuermans sync protocol spec (German)

Stefan Schuermans authored 10 years ago

1) Synchronisierungs-Protokoll für Po.W.E.R.
2) =========================================
3) 
4) Version: 20131106
5) Autor: Stefan Schürmans
6) 
7) Aufgabenstellung
8) ----------------
9) 
10) Für die Theateraufführung Po.W.E.R.ist es notwendig, verschiedene Rechner, die
11) Audio, Video und/oder Effekte abspielen miteinander zu synchronisieren.  Dabei
12) soll nicht nur die aktuelle Zeit innerhalb eines Audio-Stücks bzw. Films
13) synchronisiert werden, sondern auch das aktuelle Stück (z.B. der Dateiname)
14) mit behandelt werden.  Da kein Standard-Protkoll für diese Aufgabe gefunden
15) werden konnte, soll nun ein einfaches Protokoll neu definiert werden.
16) 
17) Grundprinzip
18) ------------
19) 
20) Ein sogenannter Master soll als zentrale Instanz die Synchronisations-
21) Informationen periodisch per Ethernet/WLAN an die einzelnen Abspielrechner
22) (auch Clients genannt) verteilen.  Die Abspielrechner empfangen den Namen
23) des aktuellen Stücks und die aktuelle Position in diesem Stück.  Sie
24) vergleichen diese Soll-Information mit der lokalen Ist-Information und passen
25) das Stück und die Position eigenständig an, wenn eine signifikante Abweichung
26) vorliegt.
27) 
28) Die Übermittlung der Synchronisations-Informationen soll ohne An-/Abmeldung
29) der Clients beim Server erfolgen und keine Speicherungs eines Zustands der
30) Gegenstelle auf Seiten des Servers oder der Clients erfordern, damit die
31) einzelnen Geäte autonom arbeiten können.  Es soll gewährleistet sein,
32) dass der Ausfall eines Gerätes (Client oder Server) die Funktion der anderen
33) Geräte nicht beeinträchtigt.  Im Falle des Ausfalls des Servers steht
34) allerdings die Synchronisations-Funktion nicht mehr zur Verfügung und die
35) Clients laufen unsynchronisert weiter.  Wird das ausgefallene Gerät
36) neu gestartet, soll es direkt wieder den Normalbetrieb aufnehmen, ohne
37) dass die anderen Geräte mitwirken.
38) 
39) Datenformat
40) -----------
41) 
42) Die Synchronisations-Informationen werden periodisch per UDP-Broadcast
43) gesendet.  Sowohl Quell- als auch Ziel-Port sind 5740.  Die Sendung erfolgt
44) alle 0.1 Sekunden.  Jedes gesendete Informations-Paket enthält den Namen des
45) aktuellen Stücks und die aktuelle Position im Stück.
46) 
47) Da die Informations-Pakete häufig versand werden und schnell bearbeitet werden
48) müssen, soll sowohl deren Erstellung als auch deren Verarbeitung möglichst
49) effizient sein.  Es wir daher ein einfaches Binärformat verwendet.  Die
50) Nutzdaten des UDP-Pakets sind wie folgt aufgebaut:
51) 
52) Start   Länge   Typ     Beschreibung
53) -----   -----   ---     ------------
54)     0       4   ASCII   feste Kennung, immer "PoSy"
55)                         (steht für "Po.W.E.R. Synchronisation")
56)     4       4   U32be   Bitfeld mit Steuerinformationen
57)     8      64   UTF-8   Name des aktuellen Stücks
58)    72       4   U32be   aktuelle Position im Stück (in Millisekunden)
59) 
60) Die Bedeutung der Typkürzel ist wie folgt:
61) 
62) Typ     Bedeutung
63) ---     ---------
64) ASCII   ASCII-String mit fester Maximal-Länge, ggf. mit Null-Zeichen aufgefüllt
65) UTF-8   UTF-8-String mit fester Maximal-Länge, ggf. mit Null-Zeichen aufgefüllt
66) U32be   vorzeichenlose Ganzzahl, 32 bit Länge, byte order big-endian
67) 
68) Das Bitfeld für Steuerinformationen enthält folgende Informationen (mit
Stefan Schuermans typo

Stefan Schuermans authored 10 years ago

69) bitweisem Oder verknüpft):