Simple Protocol for Independent Computing Environments, SPICE Client
(Link zu dieser Seite als [[QEMU-KVM-Buch/ Anhang/ Spice]])
Inhaltsverzeichnis |
[bearbeiten] SPICE
Website: http://www.spice-space.org
Das Simple Protocol for Independent Computing Environments (SPICE) ist eine Software und ein Protokoll zur Unterstützung von Zugriffen auf Remote-Maschinen. Es bietet gute Multimedia-Unterstützung. Mediastreaming und VoIP sind möglich. SPICE besteht aus einer Mehrschichtenarchitektur, die Server, Client und einen Treiber enthält. Auf der Server-Seite wird durch ein VDI-Gerät im Host-System ein PCI-Gerät emuliert. Auf der Client-Seite kommt entweder ein Browser oder eine dedizierte Client-Anwendung zum Einsatz. Entwickelt wird SPICE von der Firma Red Hat, Inc. als Open Source. Es gibt eine Implementierung für QEMU.
[bearbeiten] Client
[bearbeiten] Syntax
~$ spicec -h host [-p port] [-s secure-port] [options]
[bearbeiten] Befehlsoptionen
-h, --host host
Definiert die Adresse des SPICE-Servers.
-p, --port port
Definiert den Port des SPICE-Servers.
-s, --secure-port port
Definiert den Secure-Port des SPICE-Servers.
--secure-channels ch0,ch1... --unsecure-channels ch0,ch1...
Die von SPICE verwendeten Übertragungskanäle (Channels) können gesichert oder ungesichert sein. Mit der Option --secure-channels werden bestimmte Channels verschlüsselt übertragen. Mit der Option --unsecure-channels werden bestimmte Channels unverschlüsselt übertragen. Es gibt die SPICE-Channels main, display, inputs, cursor, playback und record. Per Default wird für alle Channels sowohl der abgesicherte als auch der ungesicherte Modus unterstützt. Die jeweilige Verwendung hängt von den angewandten Optionen --secure-port und --port ab.
--tls-ciphers ciphers
Zur Erhöhung der Sicherheit wird für die Verbindung vom Client zum Server die anonymous Transport Layer Security (TLS) genutzt. Mit der Option --tls-ciphers wird die gewünschte Cipher-Suite angegeben. Eine Cipher Suite definiert im kryptographischen Protokoll TLS, welche Algorithmen zum Aufbau einer Datenverbindung verwendet werden. Weitere Informationen findet man unter der URL http://www.openssl.org/docs/apps/ciphers.html.
--ca-file ca-file
Mit dieser Option wird auf die Datei mit der CA (Certificate Authority) und dem CRL (Certificate Revocation List) verwiesen.
--host-subject <host-subject>
Definiert das Subject des Host-Zertifikates. Mehrere Angaben von field=value werden durch Kommas getrennt. Jedem Komma und jedem Backslash in den Werten muß jeweils ein Backslash vorangestellt werden. Man extrahiert das Subject des Host-Zertifikates mit diesem Befehl.
openssl x509 -noout -text -in server-cert.pem | grep Subject: | cut -f 10- -d " "
-w, --password password
Setzt das Ticketing-Passwort des Servers. Per Default ist kein Passwort definiert.
-f, --full-screen[=auto-conf]
Öffnet den SPICE-Client im Vollbildmodus. Optional kann die automatische Konfiguration mit auto-conf aktiviert werden. Dabei wird die Remote-Anzeige an die Anzeige des SPICE-Clients angepasst. Dafür ist ein installierter und gestarteter Gast-Agent notwendig.
--enable-channels ch0,ch1...
Aktiviert die angegebenen Channels. Mit all (Default) werden alle verfügbaren Channels aktiviert. Mögliche Channels sind: display, inputs, cursor, playback und record.
--disable-channels ch0,ch1...
Deaktiviert die angegebenen Channels. Mit all werden alle verfügbaren Channels deaktiviert. Per Defaul sind alle Channels aktiviert.
--canvas-type type1, type2...
Mit dieser Option werden ein oder mehrere Renderer ausgewählt. Werden mehrere Renderer angegeben, bestimmt deren Reihenfolge die Priorität. Für Linux-Clients steht nur cairo zur Verfügung. Für Microsoft Windows-Clients können gdi und cairo verwendet werden. Der Default-Wert ist gdi.
--color-depth [16|32]
Definiert die Farbtiefe des Gast-Systems.
--disable-effects wallpaper/font-smooth/animation/all,wallpaper/font-smooth/animation/all...
Deaktiviert Display-Effekte des Gast-Systems.
--help
Gibt eine Hilfestellung aus.
[bearbeiten] Tastaturkürzel
| [Shift]+[F11] | Schaltet den Vollbild-Modus an oder aus. |
| [Shift]+[F12] | Gibt den Kursor frei, wenn dieser sich im Fenster befindet. |
Im Debug-Modus gelten zusätzlich diese Tasten:
| [Shift]+[F5] | Verbindet zu dem Server. |
| [Shift]+[F6] | Beendet die Verbindung zum Server. |
[bearbeiten] SPICE für QEMU vor Version 0.14.0
Für QEMU vor der Version 0.14.0 gab es Patches für die Integration von SPICE. Dabei wurden folgende QEMU-Optionen und QEMU-Monitor-Befehle angewendet.
[bearbeiten] QEMU-Optionen
-qxl num[,ram=megs]
Aktiviert ein oder mehrere QXL-Devices. Mit num wird die Anzahl der Devices definiert. Jedem Device kann optional mit megs die RAM-Größe in MByte vorgegeben werden (Default = 64 Mbyte). Die Option -qxl ist zusammen mit der Option -spice anzuwenden.
-spice [port=''port''][,sport=''sport''][,host=''host''] \
[,ic=on|auto_glz|auto_lz|quic|glz|lz|off] \
[,sv=''on|off''] \
[,renderer=''oglpbuf+oglpixmap+cairo''] \
[,playback-compression=''on|off''] \
[,disable-ticketing] \
[,password=''password''] \
[,sslkey=''key_file''] \
[,sslcert=''cert_file''] \
[,sslcafile=''ca_file''] \
[,ssldhfile=''dh_file''] \
[,sslpassword=''pem_password''] \
[,sslciphersuite=''cipher_suite''] \
[,secure-channels=[all|ch0+ch1+...]] \
[,unsecure-channels=[all|ch0+ch1+...]] \
[,agent-mouse=''on|off'']
Aktiviert die Verwendung von SPICE. Die Option -spice ist zusammen mit der Option -qxl anzuwenden. Informationen über den aktuellen SPICE-Status zeigt im QEMU-Monitor der Befehl info spice.state. SPICE-Statistiken zeigt der Befehl info spice.stat an.
[port=port][,sport=sport][,host=host]
- Mit der Option host wird das Netzwerk-Interface vorgegeben auf dem SPICE lauscht. Wird diese Option nicht angegeben, hört SPICE auf allen Interfaces des Host-Systems. Mit der Optionen port beziehungsweise sport wird der Port vorgegeben. Für gesicherte Verbindungen ist sport zu verwenden. Es ist zumindest eine der beiden Optionen port oder sport anzugeben.
ic=on|auto_glz|auto_lz|quic|glz|lz|off
- Mit der Option ic wird die Bild-Kompression (Image Compression) konfiguriert. quic basiert auf den SFALIC-Algorithmus. lz aktiviert den Lempel-Ziv-Algorithmus. Dieses verlustfreies Komprimierungsverfahren wird zum Beispiel im Bildformat GIF eingesetzt. glz nutzt den Lempel-Ziv-Algorithmus mit einem globalen Wörterbuch. Dieses Wörterbuch wird zur Laufzeit generiert. Mit den Optionen auto_glz und auto_lz wird ein automatisches Umschalten zwischen glz beziehungsweise lz und quic ermöglicht. Dabei wird je nach Bildeigenschaften das optimale Verfahren ermittelt und angewandt. Mit der Option off wird die Bild-Kompression deaktiviert. Die Default-Einstellung ist auto_glz. Diese Einstellungen können im QEMU-Monitor mit dem Befehl spice.set_image_compression geändert werden.
sv=on|off
- Die Option sv=on (Default-Wert) aktiviert die Erkennung von Video-Streams. Es wird dann die verlustbehaftete Kompression angewendet. Diese Einstellungen können im QEMU-Monitor mit dem Befehl spice.set_streaming_video geändert werden.
renderer=oglpbuf+oglpixmap+cairo
- Mit dieser Option werden ein oder mehrere Renderer ausgewählt. Zur Auswahl stehen oglpbuf, oglpixma und cairo. Werden mehrere Renderer angegeben, bestimmt deren Reihenfolge die Priorität. Der Default-Wert ist cairo.
playback-compression=on|off
- (De-)Aktiviert die Playback-Kompression. Dabei wird der CELT-Algorithmus (Constrained Energy Lapped Transform) angewendet. CELT ist ein Kompressionsalgorithmus für Audio-Daten. Der Default-Wert ist on. Im QEMU-Monitor wird mit dem Befehl spice.set_playback_compression diese Einstellung nachträglich geändert.
disable-ticketing
- Mit dieser Option wird das Ticketing deaktiviert. Damit sind Client-Verbindungen ohne Passwort möglich. Diese Einstellung kann im QEMU-Monitor mit dem Befehl spice.disable_ticketing geändert werden.
password=password
- Mit der Option password wird das Ticket-Passwort für die Client-Verbindung gesetzt. Dieses Passwort läuft nicht ab.
sslkey=key_file
- Mit dieser Option wird auf die Datei mit dem privaten SSL-Schlüssel verwiesen.
sslcert=cert_file
- Mit dieser Option wird auf die Datei mit dem SSL-Zertifikat verwiesen. Dieses Zertifikat kann ein selbst signiertes Zertifikat oder eine Zertifikatskette sein und wird nicht durch den Client überprüft. Es wird nur für das Senden des Public-Keys vom Server zu dem Client verwendet.
sslcafile=ca_file
- Mit dieser Option wird auf die Datei mit der CA (Certificate Authority) und dem CRL (Certificate Revocation List) verwiesen.
ssldhfile=dh_file
- Mit dieser Option wird auf die Datei mit dem symmetrischen Diffie-Hellman Schlüssel verwiesen.
sslpassword=pem_password
- Mit der Option sslpassword wird die Passphrase zum Öffnen des privaten Schlüssel im PEM-Format angegeben.
sslciphersuite=cipher_suite
- Mit der Option sslciphersuite wird die gewünschte Cipher-Suite angegeben. Eine Cipher Suite definiert im kryptographischen Protokoll TLS (Transport Layer Security), welche Algorithmen zum Aufbau einer Datenverbindung verwendet werden. Weitere Informationen findet man unter der URL http://www.openssl.org/docs/apps/ciphers.html.
secure-channels=[all|ch0+ch1+...]
unsecure-channels=[all|ch0+ch1+...]
- Die von SPICE verwendeten Übertragungskanäle (Channels) können gesichert oder ungesichert sein. Mit der Option secure-channels werden alle (all) oder bestimmte Channels verschlüsselt. Mit der Option unsecure-channels werden alle (all) oder bestimmte Channels nicht verschlüsselt. Es gibt die Channels main, display, inputs, cursor, playback und record. Per Default wird für alle Channels sowohl der abgesicherte als auch der ungesicherte Modus unterstützt. Die jeweilige Verwendung hängt von den angewandten SPICE-Optionen port und sport ab.
agent-mouse=on|off
- Die Option agent-mouse definiert, ob der SPICE-Agent von dem Maus-Modus des Clients verwendet werden soll. Der Default-Wert ist on. Diese Einstellung wird im QEMUMonitor mit dem Befehl spice.set_agent_mouse geändert.
[bearbeiten] QEMU-Monitor-Befehle
(qemu) info spice.state
Informiert über den aktuellen SPICE-Status. Dazu gehören die Adressen von verbundenen Clients, Tickening, Bild-Kompression, Video-Streaming und Playback-Kompression.
(qemu) info spice.ticket
Der Befehl info spice.ticket informiert über mögliche Ablaufzeiten der Tickets (siehe spice.set_ticket).
(qemu) info spice.stat
Zeigt Spice-Statistiken an.
(qemu) info spice.rtt_client
Zeigt Statistiken (Minimum, Maximum und Durchschnitt) der Client-Antwortzeiten (Round Trip Time) an (siehe Befehl spice.ping_client).
(qemu) spice.set_image_compression on|auto_glz|auto_lz|quic|glz|lz|off
Mit dem Befehl spice.set_image_compression wird die Bild-Kompression (Image Compression) konfiguriert. Die Optionen entsprechen denen von -spice ic.
(qemu) spice.set_streaming_video on|off
Der Befehl spice.set_streaming_video (de-)aktiviert die Erkennung von Video-Streams und die damit verbundene verlustbehaftete Kompression (siehe Option -spice sv).
(qemu) spice.set_playback_compression on|off
(De-)Aktiviert die Playback-Kompression (siehe Option -spice playback-compression).
(qemu) spice.set_ticket password \ [expiration=seconds[,connected=keep|disconnect|fail]]
Der Befehl spice.set_ticket setzt das Ticket (Einmal-Passwort). Ein leeres Passwort verhindert jede Verbindung. Optional kann mit expiration die Ablaufzeit des Passwortes definiert werden. Bei einem Wert von 0 ist die Ablaufzeit unendlich. Weiterhin lässt sich das Verhalten bei aufgebauter Verbindung beeinflussen. Mit connected=keep wird die Verbindung nach Ablauf des Passwortes gehalten. Mit connected=disconnect wird die Verbindung beendet. Der Befehl info spice.ticket informiert über die aktuellen Ablaufzeiten.
(qemu) spice.set_ticket64
Der Befehl spice.set_ticket64 entspricht dem Befehl spice.set_ticket. Allerdings wird base64 für das ASCII-Passwort verwendet.
(qemu) spice.disable_ticketing
Mit diesem Befehl wird eine Client-Verbindung ohne Passwort ermöglicht (siehe -spice disable-ticketing).
(qemu) spice.set_agent_mouse on|off
Der Befehl spice.set_agent_mouse definiert, ob der Spice-Agent des Maus-Modus vom Client verwendet werden soll (siehe Option -spice agent-mouse).
(qemu) spice.reset_stat
Setzt die Spice-Statistiken zurück.
(qemu) spice.ping_client [on [interval]|off]
Zur Überprüfung der Antwortzeiten des Clients dient der Befehl spice.ping_client. Ist nur ein Ping erwünscht, sind keine Optionen notwendig. Soll der Ping wiederholt werden, sind die Option on und das Intervall (Default= 1 Sekunde) anzugeben. Beendet wird der Ping mit off. Die entsprechenden Statistiken zeigt der Befehl info spice.rtt_client.