FileMulticast¶
Der Videoswitch soll um eine Funktion erweitert werden, die es ermöglicht, eine Datei an alle angeschlossenen Benutzer per IP-Multicast zu versenden.
Protokoll¶
Die Multicast-File-Transfer-Funktion setzt auf dem Protokoll Pragmatic General Multicast (RFC3208) auf.
PGM stellt folgende Funktionen bereit:
1. Verlässliche Auslieferung: Paketverluste werden bemerkt, und ausgeglichen.
2. Erhalt von Paketgrenzen und Paketreihenfolge.
3. Open-Source-Implementierung unter LGPL verfügbar: OpenPGM
Über PGM werden Pakete in einem mittels QDataStream implementierten Format verschickt:
Datenpakete: Format Feldname Bemerkungen ========== =============== =================================== quint64 magic_number = 0x6d60ad83825fb7f9 quint64 offset QByteArray data quint16 hash CRC16-CCITT der vorhergehenden Felder
Nach der Übertragung der Datei wird noch ein Abschlusspaket verschickt:
Abschlusspaket Format Feldname Bemerkungen ========== =============== =================================== quint64 magic_number = 0x6d60ad83825fb7f9 quint64 marker = 0xffffffffffffffff QByteArray md5sum quint16 hash CRC16-CCITT der vorhergehenden Felder
wobei das Feld md5sum die MD5-Prüfsumme der Datei enthält. Diese wird beim Senden nebenbei mitberechnet.
Was existiert schon?¶
In der branch mcastft steht der Code für das Übertragungsprotokoll und die Integration von OpenPGM ins Build-System bereit.
In src/net/mcast/trial_programs befinden sich die Programme mcastsend und mcastreceive, die die Übertragung von Dateien
außerhalb des PVS als Kommandozeilenprogramme implementieren.
User Interface¶
Dateien können per Multicast verschickt werden, indem -- statt einen Empfänger auszuwählen -- die Checkbox "Send to all" aktiviert wird.
Konfiguration¶
Die Multicast-Funktionalität kann über einen Toolbareintrag im PVSMgr konfiguriert werden. Wichtigste Einstellung ist die Multicast-Adresse, die verwendet werden soll. Dies ist im Vorfeld mit dem entsprechenden Netzwerkadministrator abzusprechen.
Clientseitig ist es unbedingt notwendig, im Config-Dialog unter Netzwerk das richtige Interface auszuwählen, da die Software nicht automatisch entscheiden kann, über welchen Rückkanal der Multicast-Sender zu erreichen ist.
Was fehlt noch?¶
Die bestehende Funktionalität hat kein User Interface.
- Bei der Übertragung großer Dateien entstehen unter Umständen "Aussetzer" in der Übertragung. Diese kommen durch Übertragungsfehler zustande, wenn der Sender nicht mit dem Versenden von Korrekturpaketen nachkommt und irgendwann die Puffer ausgereizt sind. Das ließe sich durch die Integration eines Rate Limiters (z.B. Leaky Bucket Algorithmus) verhindern, indem die Übertragungsbandbreite "künstlich" unter der maximal möglichen Bandbreite gehalten wird. Auf diese Weise hätte der Sender genug Bandbreite für Protokollverwaltung und Korrekturen übrig.
- Das Protokoll ist bei der Übertragung von Dateien über WLAN unzuverlässig, da die Verlustrate einfach zu hoch ist. Auch hier könnte die Integration eines Rate Limiters helfen; zusätzlich sollten die Protokollparameter überprüft und angepasst werden (erfordert aber hohen experimentellen Aufwand).
Sicherheit¶
Um PGM zu nutzen, benötigt OpenPGM die Linux Capability Da das PGM-Protokoll in UDP gekapselt verwendet wird, werden keine besonderen Rechte benötigt.CAP_NET_RAW, oder root Zugriff.