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 CAP_NET_RAW, oder root Zugriff. Da das PGM-Protokoll in UDP gekapselt verwendet wird, werden keine besonderen Rechte benötigt.

pvsmcastpres-handout.pdf (169.3 kB) sb, 11/05/2010 05:16 pm