Verteilung von VNC Datenströmen

Allgemein

Die Verteilung von VNC Datenströmen soll es ermöglichen, den Inhalt eines Desktops (dabei spielt es keine Rolle, ob es sich um den Dozenten-Client oder einen Teilnehmer-Client handelt) auf einzelne oder alle anderen Desktops zu duplizieren.
Hierzu zählt auch das Anzeigen von einzelnen Desktops auf einem Beamer.

Umsetzung

Aufzeigen verschiedener Möglichkeiten für:

  • Initiierung der Verteilung
  • Absichern der Verbindungen
  • Optimierung - hier könnte man einen Blick auf das NoMachine NX (X proxy protocol) als Alternative werfen ...
Zu untersuchen sind:
  • Die performanzmäßige Auswirkung von der Erzeugung mehrerer VNC Datenströme
  • Mögliche Optimierungen durch z.B. Multicast (oder NoMachine NX)
  • Sicherheit
  • Verhalten bei Shared Zugriff d.h. Client A ist per VNCViewer mit B verbunden, Client C verbindet sich nun auch mit B. Wird die Verbindung von A beendet, besteht fort etc.?

Externe VNC-Server-Applikation

Derzeit wird der VNC-Server durch ein Wrapperskript gestartet und ist auf x11vnc festgelegt. Das könnte auch noch etwas generischer (Verwendung anderer Server) geregelt werden. Bisher kümmert sich das Wrapperskript um Start und Stop (bei ersterem mit Übergabe von Passwort und Port). Das müsste vermutlich noch etwas aufgebohrt werden, als dass ja dieser Server dann auch im Shared-Modus (der bisher vermutlich noch nicht aktiviert wird) alle anderen Clients bedienen muss. Da wird man noch die Steuerung noch etwas feiner gestalten müssen: RW-Modus für Remote-Hilfe von der Steuerkonsole aus und dann RO-Modus für die angesprochene Massenverteilung. Oder zumindest Arbeiten mit verschiedenen RW und RO-Passwörtern.

Benötigte Schnittstellen / Interaktion

  • PVSmgr / Steuerkonsole: Auswahl der Quelle für den Datenstrom in der GUI (Dozent, Client, Beamer etc.)
  • PVSmgr / Steuerkonsole: Auswahl des Ziels des Datenstroms (Einzelne Clients, Alle Clients) - derzeit z.T. schon möglich
  • PVSClient: Übergabe von Ip, Passwort und Port für die Datenstromquelle an den VNC-Client (PVS-GUI?)
  • PVSClient: Policy / Sicherheitsoptionen - RO / RW Zugriff etc.
  • Beamer: Mögliche Lösungsvorschläge für das Darstellen einzelner Clients auf dem Beamer - Schnittstellen?

Beamer

Der Beamer gibt das Bild des Dozentenpcs wieder. Das Darstellen eines Clients auf dem Beamer ist folglich gleichzusetzen mit dem Darstellen eines Clients auf dem DozentenPC.

Optimierungsmöglichkeiten

x11vnc

Mechanismen des x11vncs wie z.B. reflect, ro / rw Zugriff, ssl usw.

No Machine NX

NoMachine NX könnte durch die weitere Komprimierung der Datenströme, ausnutzen von Cachingverfahren und Reduzierung der RoundTrip Time eine gute Alternative zu x11vnc Darstellen. Vorallem sollte sich x11vnc beim Einsatz für viele gleichzeitige Verbindungen als zu langsam erweisen. NoMachine NX Verbindungen werden über einen SSH Tunnel hergestellt, dies wäre sicher auch in der Untersuchung der Sicherheit/Absicherung der Verbindung zu beachten.

Vergleich von VNC Servern

Name(Link) Qualitätsoptionen Sicherheitsoptionen* Kompression Datenverkehrsoptimierung Sonstige Optionen
x11vnc Verschiedene Qualitätsstufen SSL Tight, Zlib Repeat(Reflect) Funktion
NoMachine NX
krfb - Passwort (unverschl.), Verbindungsbestätigung keine relevanten Parameter-Optionen
vino - Passwort (unverschl.), Verbindungsbestätigung - - keine relevanten Parameter-Optionen
Performanzvergleich
Name Performanzmessung (1 Client) Performanzmessung (15 Clients)
x11vnc

*Man kann alle VNC Verbindungen über einen SSH Tunnel führen was sich jedoch auf die Geschwindigkeit auswirkt.

KRFB und Vino sind so stark in die jeweiligen Desktop Umgebungen integriert, das sie fast nur über die Graphischen Einstellungsdialoge konfigurierbar sind.
Einstellungen können jedoch bei KRFB über das manuelle Anlegen von Einladungen, bei Vino über das gconftool verändert werden. Dies bietet jedoch kaum Einstellungsmöglichkeiten. Krfb und Vino basieren auf x11vnc, vielleicht gibt es eine Möglichkeit auch einige x11vnc Parameter irgendwie mit ihnen zu benutzen.

Weitere, nicht betrachtete VNC Server:
Name (Link) Grund
Xvnc - RealVNC Keine Darstellung existierender Displays
vnc4server Keine Darstellung existierender Displays, kein Shared Mode
TightVNC Keine Darstellung existierender Displays

Links:
VNC allgemein
VINO, KRFB, X11VNC, TIGHTVNC

Abschliessen lässt sich feststellen, dass es eigentlich nur zwei Arten von VNC Servern gibt, die auf dem orginalen VNC basierenden (ursprünglich AT&T jetzt RealVNC) und die auf libvnc basierenden. Erstere können keine existierende Displays darstellen sondern erzeugen ein "virtuelles" Display und sind so für die Remoteüberwachung und -hilfe nicht geeignet. Die auf libvnc basierenden (z.B. x11vnc, krfb, vino) können existierende Displays darstellen, können jedoch erst nach Anmeldung gestartet werden (was jedoch kein Problem darstellen sollte).

Vino

Vino lässt sich zwar, ausser über das Gconftool auch über die entsprechende xml-file ( [...]/remote_access/%gconf.xml ) konfigurieren. Passwörter können hier über den Eintrag

<entry name="vnc_password mtime="[...]" type="string">
   <stringvalue>password</stringvalue>
</entry>

base64 kodiert gespeichert werden.
Jedoch kann der Port des Servers anscheinend nicht gewählt bzw. geändert werden (fest auf 5900).