Handbuch

Inhalt


Handbuch


Systemvoraussetzungen

Entwickelt wurde hauptsächlich auf Fedora Core 1 mit Updates und Kernel 2.4.22 mit dem Compiler gcc Version 3.3.2.

In Tabelle 7.1 kann man die benötigten Bibliotheken [*]für ''netview'' und ''test_client'' ablesen. Unter Red Hat 7.3 stehen die Minimal-Anforderungen.


Tabelle: Systemvoraussetzungen für ''netview'' und ''test_client''
Bibliothek/Software Fedora Core 1 Red Hat 7.3
OpenGL Mesa-libGL 4.0.4 von XFree86, (in XFree86-libs enthalten)
  besser aber vom  
  Grafikkartenhersteller  
GLU Mesa-libGLU 1.3 von XFree86 (in XFree86-libs enthalten)
GLUT Freeglut 1.3 (besser aber 2.2.0) GLUT 3.7
gcc gcc 3.3.2 gcc 2.96
libgcc libgcc 3.3.2 (nicht nötig)
glib glib 1.2.10 glib 1.2.10
glibc glibc 2.3.2 glibc 2.2.5
libstdc++ libstdc++ 3.3.2 libstdc++ 2.96
png libpng 1.2.5 libpng 1.0.14
XFree86-libs XFree86-libs 4.3.0 XFree86-libs 4.2.1
XFree86 XFree86 4.3.0 XFree86 4.2.1
libxml2 libxml2 ab 2.6.6 empfohlen und getestet libxml2 ab 2.6.6
  (minimal ab 2.6.0)  
zlib zlib 1.2.0.7 zlib 1.1.4


Zur Erstellung eines Videos aus der Bildfolge von ''netview'' wird im Skript ''video.sh'' zusätzlich folgende Software genutzt:

Die benötigte Bibliotheken für die Testprogramme sind in Tabelle 7.2 aufgeführt.


Tabelle: Systemvoraussetzungen für die Testprogramme
Bibliothek/Software Fedora Core 1 Red Hat 7.3
gcc gcc 3.3.2 gcc 2.96
libgcc libgcc 3.3.2 (nicht nötig)
glibc glibc 2.3.2 glibc 2.2.5
libstdc++ libstdc++ 3.3.2 libstdc++ 2.96
pcap libpcap 0.7.2 libpcap 0.6.2
png libpng 1.2.5 libpng 1.0.14
XFree86-libs XFree86-libs 4.3.0 XFree86-libs 4.2.1
XFree86 XFree86 4.3.0 XFree86 4.2.1


Windows-Unterstützung

Die Bibliotheken (GL/GLU, GLUT [*], iconv (für libxml), libpng [*], libxml2 [*], pcap [*], zlib) sind alle auch für Windows verfügbar.

Die Strukturen der Paketköpfe sind in der Windows-Entwicklungsumgebung nicht standardmäßig eingebaut. Diese sind aber alle auch in der Glibc [*] enthalten. Deshalb habe ich aus dieser Bibliothek einige Dateien entnommen und angepasst. Diese sind in der Datei ''winincludes.zip'' zusammengefasst. Nur mit diesen Header-Files kann man das Programm ordentlich übersetzen.

Die Windows-Version ist noch nicht ganz so fehlerarm wie die Linux-Version, vor allem weil sie seltener getestet wurde (siehe 7.8). Es werden aber fast alle Funktionen unterstützt. Ausnahme bildet nur die Umwandlung der gespeicherten Bildfolgen in Videos, sie dürfte nur in einer Cygwin-Umgebung laufen (siehe 7.1).

Installation

Wenn die Systemvoraussetzungen erfüllt sind, kann man mit der Installation beginnen.

  1. netview-0.2.tar.gz entpacken mit 'tar -xvzf netview-0.2.tar.gz'
  2. Wechseln ins Verzeichnis 'netview-0.2'
  3. Vorbereiten zum Übersetzen mit './configure'
  4. Übersetzen mit 'make'
  5. Installation erfolgt dann mit 'make install'
  6. optional: Bereinigen des Installationsverzeichnisses mit 'make clean'

Nach der Installation liegen folgende Dateien im Pfad ''/usr/local/'':

bin
bin/netview
bin/test_client
share/netview/
share/netview/bin
share/netview/bin/start
share/netview/bin/video.sh
share/netview/COPYING
share/netview/count_lines
share/netview/doxy-konfig
share/netview/etc
share/netview/etc/keycodes.txt
share/netview/etc/menu.xml
share/netview/INSTALL
share/netview/Makefile.old
share/netview/README
share/netview/README_GERMAN
share/netview/README_GERMAN/handbuch.html
share/netview/README_GERMAN/img53.png
share/netview/README_GERMAN/img54.png
share/netview/README_GERMAN/img55.png
share/netview/README_GERMAN/img7.png
share/netview/test
share/netview/test/client_packets.xml
share/netview/test/netview_schema.xml
share/netview/test/route_net.xml
share/netview/test/saved_network.xml

Zum Ausführen des Programms sollte man nach ''/usr/local/share/netview'' wechseln und dann ''netview'' (bzw. ''../../bin/netview'') starten. Nur so kann das Programm die Dateien zum Menüaufbau und der Tastaturbelegung (in ''etc'') finden. Im ''test''-Verzeichnis liegt das XML-Schema (''netview_schema.xml'') für den Menüaufbau (''menu.xml''), die Netzwerkbeschreibungen (''route_net.xml'' und ''saved_network.xml'') und die Paketbeschreibung (''client_packets.xml'').

Navigation

Die Navigation durch die 3D-Welt des Programms geschieht per Tastatur und/oder Maus. Nur mit der Tastatur kann man sich in Einzelschritten bewegen. Die Maus erlaubt eine fließendere Bewegung im Raum. Umgesetzt sind Drehung um die eigene Achse zur Richtungsanpassung, Verschiebung des Standpunktes (mit Beibehaltung der Richtung) und die Fortbewegung in die aktuelle Richtung mit variabler Geschwindigkeit im 3D-Fenster. Zusätzlich wird noch eine genaue Positionierung über die Kartenansicht angeboten (Blick von oben).

Die Verschiebung des Standpunktes erfolgt mit Shift-Taste und einer Mausbewegung. Da die Maus nur zweidimensional ist, kann man sich nur in je zwei Achsen bewegen. Einmal links/rechts und vor/zurück (linke Maustaste) oder sonst links/rechts und hoch/herunter (mittlere Maustaste). Die Länge der Verschiebung wird entsprechend der Mausbewegung skaliert in die 3D-Welt übernommen.

Bei der Fortbewegung in die aktuelle Richtung wird die Geschwindigkeit durch die Mausbewegung angepasst (bei gedrückter linker Maustaste). Bei Verschiebung des Mauszeigers nach oben wird man schneller, nach unten langsamer, bis zur Richtungsumkehrung (rückwärts bewegen).

Die Rotation um den Standpunkt erfolgt durch Bewegung der Maus nach links oder rechts mit linker Maustaste (Drehung um die Senkrechte) beziehungsweise nach oben oder unten mit der mittleren Maustaste (Drehung um die Waagerechte, Neigung). Der Drehwinkel wird anhand der Mausbewegung über eine Hysterese berechnet.

Steuerung der Filmaufnahmen im Programm

Im Programm erfolgt Erstellung eines Videos immer in Zusammenhang mit einer Animation. Zum Starten/Stoppen wählt man in Menü ''Video Start/Stop'', bzw. Taste 'v'. Danach wird in einem bestimmten Zeitabstand jeweils ein Abbild des Programmfensters gesichert. Die Anzahl der Bilder je Sekunde wird hauptsächlich von der Geschwindigkeit des Systems und dessen aktuelle Last bestimmt. Erst bei genügend Leistung ist die Zeitkonstante entscheidend (derzeit 10 ms).

Die Steuerung der Kamerarichtung ist nur nach Abschaltung der Paketverfolgung möglich.

Alle Einzelbilder erscheinen im Verzeichnis ''/tmp/netview_video/''. Diese können dann durch das Skript ''video.sh'' in einen Film umgewandelt werden. Es geht automatisch ins Verzeichnis, in dem die Bilder liegen, erstellt die Filmdatei ''film.avi'' darin und wechselt dann wieder ins Verzeichnis, in dem es gestartet wurde. Es benötigt ''convert'' aus dem ImageMagick-Paket, Gzip und den ''mencoder'' des Mplayer-Projekts.

Definition eines Netzwerkes

Ein Netzwerk besteht, wie oben erwähnt, aus Knoten (Switches, Router, Hosts) und Kabelverbindungen zwischen diesen. Alle Aktionen zum Verändern eines Netzwerkes passieren in der Kartenansicht des Programmfensters (rechts).

Einfügen

Über das Menü (rechte Maustaste Map->insert) wird auf den Einfüge-Modus umgestellt. Durch einen Klick auf die linke Maustaste wird ein Host an der Mausposition dem Netzwerk hinzugefügt. (Die Position (x,y) wird skaliert auf Position (x,z), gerundet auf ganze Zahlen, anhand der bekannten Grenzen des Fensterteils (Breite/Höhe im Fenster) und des dargestellten Kartenbereiches (linker/rechter bzw. vorderer/hinterer Rand der 3D-Welt)). Mit der mittleren Maustaste wird ein Router ins Netzwerk eingebaut. Eine Kabelverbindung erstellt man durch Ziehen der Maus mit gedrückter linker Maustaste von Anfangspunkt zum Endpunkt. Switches sind zur Zeit noch nicht umgesetzt.

Verschieben

Nach dem Umschalten in den Verschiebe-Modus (Menü: Map->move) kann man die Enden der Kabel oder auch die Knoten verschieben. Mit gedrückter linker Maustaste zeigt die grüne Linie den Weg zum Zielpunkt an. Nach Loslassen der Maustaste wird das Element dort positioniert. Bei Kabelverbindungen kann man auch zwischen den Enden Verschiebungen durchführen. Dann wird das Kabel in Kurven geführt.

Löschen

Im Lösch-Modus (Menü: Map->delete) wird das Element an dieser Position entfernt. Die Knoten (Router/Hosts) verschwinden sofort, die Kabel erst, wenn weniger als zwei Punkte vorliegen, die das Kabel definieren. Ansonsten wird nur der Kurven-Hilfspunkt an dieser Stelle entfernt und das Kabel entsprechend neu verlegt.

Einstellungen

Zum Einstellen der Parameter im Netzwerk muss man in den Info-Modus gehen (Menü: Map->info). Beim Klick auf ein Knoten oder Kabel öffnet sich ein Dialogfenster. Darin kann man Adressen setzen, Routen einstellen und Namen vergeben. Mit der Taste 'Einfg' schaltet man zwischen Überschreiben und Einfügen um. Mit den Cursortasten wechselt man zwischen den Zeilen. Den Abschluss der Änderungen zeigt man mit der 'Enter'-Taste an. Das Programm prüft die Werte und zeigt die übernommenen an. Bei fehlerhaften Eingaben bleiben die alten Werte erhalten. Durch nochmaliges Betätigen der 'Enter'-Taste schließt sich das Dialogfenster wieder. Mit 'Esc' werden die Änderungen (die nach dem letzten 'Enter' erfolgten) verworfen.
Folgende Einstellungen sind möglich:

Bei Kabeln:

Bei Hosts:

Bei Routern:

Zu den Netzwerkkarten:

Zu den Routen-Tabellen:

Zu NAT:

Kamera ausrichten

Am Anfang startet das Programm aber im Kamera-Modus (Menü: Map->camera pos). Dann kann man die Kamera genau an der Stelle positionieren, an der man sie gerne hätte. Mit einem Klick auf die linke Maustaste wird die Ansicht neu gesetzt und die Kamera zeigt genau nach vorn (Winkel 90 Grad). Die Neigung (Kippen) um die Waagerechte wird zurückgesetzt (Winkel 0 Grad). Wenn man dagegen bei gedrückter linker Maustaste in eine bestimmte Richtung zieht, dreht sich die Kamera dahin.

Eine zusätzliche Funktion hilft, wenn man die Orientierung verloren hat: das Zurücksetzen der Kamera auf den Ausgangspunkt beim Start (Menü: camera init, Taste '5'). Dann ist die Kamera auf der Position (0, 1, 15) und blickt gerade nach vorn in Richtung des Zentrums des virtuellen 3D-Raums, leicht erhöht auf (0, 1, 0).

Abspeichern

Nach Einfügen, Verschieben oder auch Löschen von Elementen kann das Netzwerk abgespeichert werden (Menü: Network->save bzw. durch Taste 'F4'). Im erscheinenden Dialogfenster gibt man den Dateinamen an (bei Bedarf mit Verzeichnis), relativ zum Ordner, in dem das Programm gestartet wurde.

Gesichert werden:

Die Position der Kamera wird nicht abgespeichert!

Laden

Ein einmal erstelltes Netzwerk kann jederzeit geladen werden. Nach Anwahl Menü Network->load (oder 'F3') tippt man den Dateinamen ein, relativ zum Verzeichnis, in dem das Programm gestartet wurde.

Aber auch schon auf der Kommandozeile kann eine Datei angegeben werden: mit der Option ''-n dateiname'' ist es am Ende des Programmstarts geladen.

Animation

Nachdem ein Netzwerk erstellt wurde, die richtigen Einstellungen gewählt sind, kann man die Animationsfunktion des Programms nutzen. Dazu wählt man im Menü Network->execute step für die Einzelschritt-Ausführung (Taste 'e'), das heißt es wird nur ein Schritt der Animation umgesetzt. Diese Funktion ist zur Verdeutlichung wichtiger Stellen in der Animationskette sinnvoll.

Für eine länger ablaufende Animation nutzt man besser die unterbrechbare Endlosschleife. Bei jeder Anwahl von Menü Network->execute loop (Taste 'n') läuft die Animation selbstständig weiter oder wird gestoppt.

Die Geschwindigkeit der Ausführung wird über die Tasten '+' (schneller) und '-' (langsamer) gesteuert. Dann verändert sich die Schnelligkeit der Pakete, mit der sie von einem Punkt zum nächsten verschoben werden. In Kabeln wird so die Zeit bis zum Erreichen des anderen Endes angepasst, bei Warteschlangen die Zeit bis zum Übergang in die nächste Schlange oder ins angeschlossene Kabel. Auch die Geschwindigkeit der Drehung von Routern bzw. Hosts ändert sich.

Beim Programmstart kann man durch die Option ''-s geschwindigkeit'' den Anfangswert der Animationsgeschwindigkeit festlegen. Dabei werden auch Gleitkommazahlen (z.B. 0.1) angenommen.

Paketverfolgung

Die Kamera selber folgt in der Grundeinstellung immer dem Paket, welches am weitesten unten (geometrisch gesehen) ist. Das ist das wichtigste Paket, weil es immer als erstes in einer Schlange bearbeitet wird. Wenn mehrere Pakete auf gleicher Höhe sind, richtet sich der Fokus nach der internen Reihenfolge der Kabel und Knoten (Router/Hosts). Die Position zum Paket wird sofort eingenommen (im festen Abstand zu ihm), der Blickwinkel wird mit Hysterese langsam nachgeführt um Sprünge zu vermeiden.

Zur Verdeutlichung, an welcher Stelle das fokussierte Paket gerade ist, wird links unten der Knoten (Router/Switch) mit Name und IP-Adresse bzw. das Kabel mit den MAC-Adressen (Ethernet-Adressen) der Enden angezeigt.

Man kann die Paketverfolgung aber auch ausschalten (Menü: Network->follow packets on/off bzw. Taste 'p'). Dann läuft die Animation und man steuert selbst den Kamera-Standpunkt und die Ausrichtung. In der dritten Variante bleibt nur die gewählte Position fest, die Kamera wird aber immer zum wichtigen Paket ausgerichtet. Das erreicht man über Menü: Network->follow with angle on/off bzw. Taste 'a', dabei muss die Paketverfolgung an sein.

Verschiedene Ansichten

Nach dem Programmstart sieht man links die 3D-Ansicht auf die virtuelle Welt, rechts die Kartenansicht als Blick von oben. Wenn die Kartenansicht störend wirkt, kann man sie einfach ausblenden: Menü Map->Map on/off bzw. Taste 'w'. Die 3D-Ansicht nimmt dann fast das ganze Fenster ein.

Eine nützliche Zweiteilung bietet auch folgende Variante: Nach Wahl von Menü: View->second view on right on/off (oder Taste 'r') sieht man links die gewohnte 3D-Ansicht und rechts nochmal eine Ansicht mit dem gleichen Blickwinkel (Kameraposition und -winkel wird übernommen). Bei angeschalteter Paketverfolgung während einer Animation wird aber links wie gewohnt die Kameraposition verändert, rechts nur der Kamerawinkel. Links ist also die Ansicht immer genau beim wichtigen Paket, rechts hat man den Überblick über das gesamte Netz (je nach Standpunkt) und man sieht trotzdem immer genau den wichtigen Raumausschnitt.

Falls die Beschriftung von Paketen, die Routen-Tabellen der Router oder die ARP-Caches der Router und Hosts auch bei größerem Abstand von diesen wichtig sind oder stören, kann man diese an- oder ausschalten (Menü: View->Level of Details on/off bzw. Taste 'l'). Abhängig von der Entfernung vom Objekt werden sie dann ausgeblendet (nicht mehr gezeichnet) oder immer dargestellt. Wenn die Kamera genau vor dem Objekt ist, wird die Beschriftung aber immer gezeichnet.


Pakete erzeugen

Zur sinnvollen Veranschaulichung der Mechanismen von Netzwerken sind natürlich Datenpakete notwendig. Die Einbindung dieser Pakete ist grundsätzlich über drei Wege möglich:

  1. Einprogrammierung in den Quelltext des Programms
  2. Einfügen in eine Netzwerkdefinitions-Datei (Pakete werden auch darin gespeichert soweit vorhanden)
  3. über ein externes Programm, das eine TCP-Verbindung zum eingebauten Paket-Server aufbaut.

Die letzte Variante ist in den meisten Fällen die sinnvollste, weil sie auch am einfachsten zu handhaben ist.

Pakete über externes Programm einbinden

Beim Start des Animationsprogramms wird gleichzeitig ein Port geöffnet, über den externe Programme Verbindung aufnehmen können. Dies ist standardmäßig über Port 9000 möglich. Mit der Option ''-p Portnummer'' kann aber auch ein beliebiger anderer gewählt werden.

Das Protokoll dazu wird im Hauptteil der Diplomarbeit erläutert.

Beispiel-Klient-Programm

Zum Programm-Paket gehört auch ein kleines Klient-Programm ''test_client'', welches Pakete als XML-Beschreibung einliest und dann ans Animationsprogramm schickt. Es hat folgende Startoptionen:

  1. ''-i ipaddress'': Angabe der IP-Adresse des Rechners, auf dem das Animationsprogramm mit Paketserver läuft, Standard: 127.0.0.1;
  2. ''-p port'': die Portnummer, auf der ein Paketserver Verbindungen annimmt, Standard: 9000;
  3. ''-f filename'': Nutzung der Datei ''filename'' zum Laden von Paketen

Als Paketdatei kann ''test/client_packets.xml'' dienen.

Das XML-Schema zur Paketdatei befindet sich in der Datei ''test/netview_schema.xml'' .

Nach dem Programmstart wird es mit folgenden Tasten bedient:


Bekannte Fehler

Zusammenfassung von netview

Kommandozeilenparameter

  1. ''-n network_file'': lädt die Netzwerkbeschreibung mit diesem Dateinamen
  2. ''-p server_port'': der Paketserver wartet mit dieser Portnummer auf Klientenverbindungen, Standardwert: Port 9000
  3. ''-s animation_speed'': Anfangsgeschwindigkeit der Animation, Standardwert: 1.0

Tastaturbefehle und Aktionsnamen

Zur Anpassung der Tastaturbelegung wird in der Datei ''etc/keycodes.txt'' jeder Taste eine Aktion zugeordnet, die sie im Programm auslöst . In den Tabellen 7.3 und 7.4 sind alle definierten Aktionsnamen mit ihrer Bedeutung und der zugehörigen Taste aufgeführt. Auch die Titel der Menübefehle und ihre Wirkungen können über die Datei ''etc/menu.xml'' geändert werden .


Tabelle: Aktionsnamen und Tastenkürzel (Teil 1)
Taste im Menü Aktion Bedeutung
    Action_Dummy Aktion ohne Wirkung
q/Esc x Action_Exit Programm beenden
c x Action_Show_Copyright Programminfo u. Copyright im Dialog zeigen
x   Action_Move_Left Szene nach links verschieben
y   Action_Move_Up Szene nach oben verschieben
z   Action_Move_Front Szene nach vorn verschieben
X   Action_Move_Right Szene nach rechts verschieben
Y   Action_Move_Down Szene nach unten verschieben
Z   Action_Move_Back Szene nach hinten verschieben
i   Action_Move_Init alle Verschiebungen rückgängig, Ausgangsposition



Tabelle: Aktionsnamen und Tastenkürzel (Teil 2)
Taste im Menü Aktion Bedeutung
<-   Action_Cam_Left Kamera nach links drehen
->   Action_Cam_Right Kamera nach rechts drehen
^ (hoch)   Action_Cam_Up Kamera nach oben drehen
v (herunter)   Action_Cam_Down Kamera nach unten drehen
f   Action_Cam_Faster Geschwindigkeit der Kamera erhöhen
F   Action_Cam_Slower Geschwindigkeit der Kamera senken
s   Action_Cam_Step ein Schritt der Kamerabewegung
Enter   Action_Cam_Stop Kamera anhalten (nach f/F)
0   Action_View_BRB Blick von unten rechts hinten auf Mittelpunkt (0, 0, 0)
1   Action_View_TRF Blick von oben rechts vorn auf Mittelpunkt
2   Action_View_Bottom Blick von unten auf Mittelpunkt
3   Action_View_Back Blick von hinten auf Mittelpunkt
4   Action_View_Left Blick von links auf Mittelpunkt
5 x Action_Cam_Init Kamera auf den Ausgangspunkt
6   Action_View_Right Blick von rechts auf Mittelpunkt
7   Action_View_TLF Blick von oben links vorn auf Mittelpunkt
8   Action_View_Top Blick von oben auf Mittelpunkt
9   Action_View_Front Blick von vorn auf Mittelpunkt
  x Action_Mode_Insert Einfüge-Modus im Kartenfenster
  x Action_Mode_Cam Modus zum Kamera positionieren im Kartenfenster
  x Action_Mode_Move Modus zum Verschieben eines Netzwerkobj. in Karte
  x Action_Mode_Remove Lösch-Modus im Kartenfenster
  x Action_Mode_Info Info/Editier-Modus im Kartenfenster
F3 x Action_Load_Net Netzwerk laden
F4 x Action_Save_Net Netzwerk speichern
e x Action_Execute_Net einen Schritt der Netzwerk-Simulation ausführen
n x Action_Execute_Net_Loop (kontinuierliche) Netzwerksimulation starten/beenden
p x Action_FollowP_OnOff Paketverfolgung mit der Kamera an/aus
a x Action_FollowAngle_OnOff Paketverfolgung nur durch Kameradrehung an/aus
w x Action_Map_OnOff Karte anzeigen/ausblenden
v x Action_Video_StartStop Filmaufnahme mit Netzwerksimulation starten/beenden
l x Action_LOD_OnOff Level of Details an/aus
r x Action_View_SceneRight rechte Fensterhälfte zeigt Szene, mit Paketverfolgung durch Kameradrehung
+   Action_Animation_Faster Animationsgeschwindigkeit steigern
-   Action_Animation_Slower Animationsgeschwindigkeit senken


Fußnoten

... Bibliotheken[*]
zu libpng: nicht zwingend erforderlich, die Klasse PNG_Image_Writer wird zur Zeit nicht eingesetzt
... ImageMagick-Paket[*]
http://www.imagemagick.org/
... mplayer-Paket[*]
http://www.mplayerhq.hu/
... GLUT[*]
http://www.xmission.com/~nate/glut.html
... libpng[*]
http://www.libpng.org/pub/png/libpng.html
... libxml2[*]
http://www.zlatkovic.com/libxml.en.html
... pcap[*]
http://winpcap.polito.it/
... Glibc[*]
http://www.gnu.org/software/libc/libc.html

About this document ...

Handbuch
 

This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.70)
and edited by Stefan Ziegler

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

stefan.ziegler@s1998.tu-chemnitz.de, 14.02.2005