Die Thesis zum Drucken
Transcription
Die Thesis zum Drucken
Fachhochschule Wiesbaden Fachbereich Design Informatik Medien Studiengang Allgemeine Informatik Bachelor-Thesis zur Erlangung des akademischen Grades Bachelor of Science - B.Sc. Schnelles Roaming im WLAN mittels Dual-Transceiver Stations vorgelegt von Ralph Robert Erdt am 20. Dezember 2007 Referent: Prof. Dr. Martin Gergeleit Korreferent: Prof. Dr. Reinhold Kröger II Erklärung Ich versichere, dass ich die Bachelor-Thesis selbständig verfasst und keine anderen als die angegebenen Hilfsmittel benutzt habe. Wiesbaden, 20.12.2007 Ralph Robert Erdt Hiermit erkläre ich mein Einverständnis mit den im Folgenden aufgeführten Verbreitungsformen dieser Bachelor-Thesis: Verbreitungsform Einstellung der Arbeit in die Bibliothek der FHW Veröffentlichung des Titels der Arbeit im Internet Veröffentlichung der Arbeit im Internet Wiesbaden, 20.12.2007 ja nein √ √ √ Ralph Robert Erdt III IV Inhaltsverzeichnis 1 Vorwort 1 2 Zielsetzung 3 3 Einleitung 5 3.1 WLAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.2 Roaming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.3 Schwierigkeiten von Roaming . . . . . . . . . . . . . . . . . . . . . . . 8 3.3.1 Frequenzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.3.2 Auswirkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4 Konzept 13 4.1 Verwandte Arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.1.1 Switched WLAN . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.1.2 Sync Scan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.1.3 802.11r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.2 Idee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.3 Möglichkeit A: Dezidiertes Scannen . . . . . . . . . . . . . . . . . . . . 15 4.3.1 Scannen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Möglichkeit B: Wechselnde Aufgaben . . . . . . . . . . . . . . . . . . . 18 4.4 5 Implementierung 21 5.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 5.2 Entwicklungsumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . 22 5.3 Wireless Extensions for Linux . . . . . . . . . . . . . . . . . . . . . . . 22 5.4 madwifi-ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 V 5.5 5.6 6 5.4.1 Virtuelle Devices mit madwifi-ng . . . . . . . . . . . . . . . . . 23 5.4.2 Probleme des madwifi-ng . . . . . . . . . . . . . . . . . . . . . 24 Umsetzung der Methode A . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.5.1 Übertragen der Scan-Informationen . . . . . . . . . . . . . . . . 25 5.5.2 I/O Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.5.3 Scannen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.5.3.1 Empfang der Pakete . . . . . . . . . . . . . . . . . . . 27 5.5.3.2 Verwaltung des Scannens . . . . . . . . . . . . . . . . 28 5.5.4 Hauptprogramm . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.5.5 Vorbereitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.5.6 Ausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.5.7 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Umsetzung der Methode B . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.6.1 Unterschiede zwischen Variante I und II . . . . . . . . . . . . . . 32 5.6.2 Scannen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.6.3 Auslesen der Scandaten . . . . . . . . . . . . . . . . . . . . . . 33 5.6.4 Hauptprogramm . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.6.4.1 Variante II . . . . . . . . . . . . . . . . . . . . . . . . 34 5.6.5 Vorbereitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.6.6 Ausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 5.6.7 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Messung 39 6.1 Erläuterung der Messung . . . . . . . . . . . . . . . . . . . . . . . . . . 39 6.1.1 Visualisierung mittels WI-Spy . . . . . . . . . . . . . . . . . . . 39 6.1.2 Ort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 6.1.3 Methodik, Messverfahren . . . . . . . . . . . . . . . . . . . . . 40 6.1.4 Störgrößen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 6.1.5 Messaufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.1.5.1 Konfiguration . . . . . . . . . . . . . . . . . . . . . . 46 6.1.5.2 Erzwingen des Roamings . . . . . . . . . . . . . . . . 46 6.1.6 Durchführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 6.1.7 Erläuterung des Vorgehens bei der Auswertung . . . . . . . . . . 49 VI 6.2 Messung der Methode „A“ . . . . . . . . . . . . . . . . . . . . . . . . . 50 6.2.1 UDP-Versand von Festnetz auf die WLAN-Station . . . . . . . . 51 6.2.1.1 Auswertung UDP-Test . . . . . . . . . . . . . . . . . . 51 6.2.1.2 Auswertung Ethereal . . . . . . . . . . . . . . . . . . 51 UDP-Versand von der WLAN-Station auf das Festnetz . . . . . . 52 6.2.2.1 Auswertung UDP-Test . . . . . . . . . . . . . . . . . . 52 6.2.2.2 Auswertung Ethereal . . . . . . . . . . . . . . . . . . 53 6.3 Messung der Methode „B I“ . . . . . . . . . . . . . . . . . . . . . . . . 54 6.4 Messung der Methode „B I b“ . . . . . . . . . . . . . . . . . . . . . . . 55 6.4.1 UDP-Versand von Festnetz auf die WLAN-Station . . . . . . . . 55 6.4.1.1 Auswertung UDP-Test . . . . . . . . . . . . . . . . . . 55 6.4.1.2 Auswertung Ethereal . . . . . . . . . . . . . . . . . . 56 UDP-Versand von der WLAN-Station auf das Festnetz . . . . . . 57 6.4.2.1 Auswertung UDP-Test . . . . . . . . . . . . . . . . . . 57 6.4.2.2 Auswertung Ethereal . . . . . . . . . . . . . . . . . . 58 Messung der Methode „B II“ . . . . . . . . . . . . . . . . . . . . . . . . 59 6.5.1 UDP-Versand von Festnetz auf die WLAN-Station . . . . . . . . 59 6.5.1.1 Auswertung UDP-Test . . . . . . . . . . . . . . . . . . 59 6.5.1.2 Auswertung Ethereal . . . . . . . . . . . . . . . . . . 59 UDP-Versand von der WLAN-Station auf das Festnetz . . . . . . 61 6.5.2.1 Auswertung UDP-Test . . . . . . . . . . . . . . . . . . 61 6.5.2.2 Auswertung Ethereal . . . . . . . . . . . . . . . . . . 61 6.2.2 6.4.2 6.5 6.5.2 7 Bewertung 63 7.1 Allgemein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 7.2 Methode A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 7.2.1 Nachteile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 7.2.2 Vorteile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Methode B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 7.3.1 Methode B I b . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 7.3.2 Methode B II . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 7.3.3 Nachteile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 7.3.4 Vorteile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Andere Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 7.3 7.4 VII 8 9 Fazit 67 8.1 Beurteilung der getesteten Methoden . . . . . . . . . . . . . . . . . . . . 67 8.2 Beurteilung der Infrastruktur . . . . . . . . . . . . . . . . . . . . . . . . 67 8.2.1 Vergleich zu „Switched WLAN“ . . . . . . . . . . . . . . . . . . 68 8.2.1.1 Vergleich der Zeiten . . . . . . . . . . . . . . . . . . . 68 8.2.2 Vergleich zu „Sync Scan“ . . . . . . . . . . . . . . . . . . . . . 69 8.2.3 Vergleich zu „802.11r“ . . . . . . . . . . . . . . . . . . . . . . . 69 8.3 Energie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 8.4 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 8.5 Sonstiges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 8.5.1 70 Verschlüsselung . . . . . . . . . . . . . . . . . . . . . . . . . . . Anhang 71 9.1 Installation von SuSE 10.2 auf einem WRAP . . . . . . . . . . . . . . . 71 9.1.1 Voraussetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 9.1.2 Vorbereitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 9.1.3 Software installieren . . . . . . . . . . . . . . . . . . . . . . . . 73 9.1.4 Kernel und Module kompilieren . . . . . . . . . . . . . . . . . . 74 9.1.5 Die Karte bootfähig machen . . . . . . . . . . . . . . . . . . . . 75 9.1.6 WRAP verbinden . . . . . . . . . . . . . . . . . . . . . . . . . . 77 9.1.7 Erster Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 9.1.8 Allgemeine Hinweise . . . . . . . . . . . . . . . . . . . . . . . . 78 9.1.9 Klonen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 9.1.9.1 Karte auslesen . . . . . . . . . . . . . . . . . . . . . . 78 9.1.9.2 Karte bespielen . . . . . . . . . . . . . . . . . . . . . 79 9.1.9.3 Einstellungen korrigieren . . . . . . . . . . . . . . . . 79 UDP-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 9.2.1 Hintergrund . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 9.2.2 Arbeitsweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 9.2.2.1 Senden . . . . . . . . . . . . . . . . . . . . . . . . . . 80 9.2.2.2 Empfangen . . . . . . . . . . . . . . . . . . . . . . . . 81 9.2.3 Ausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 9.2.4 Anleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 9.2 VIII 10 Literaturverzeichnis 83 11 Weblinks Verzeichnis 85 IX X Abbildungsverzeichnis 3.1 Verhältnis von Entfernung zur Verbindungsgeschwindigkeit, Quelle: Texas Instruments 2002 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Empfangsstärke und damit erreichbare maximale Geschwindigkeit, Quelle: [Ahl02] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Screenshot Ausleuchtungstools. links: Ringmaster, rechts: FL Wireless Simulation Tool Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.4 Roaming: Eine Station wechselt in eine andere Zelle . . . . . . . . . . . 8 4.1 Sync Scan: Versatz zwischen den Beacons. . . . . . . . . . . . . . . . . . 14 4.2 Schaubild: Vorgang des Roamens von Access Point 1 nach Access Point 2, Methode A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.3 Aufbau eines Beacons. Quelle [HM03] . . . . . . . . . . . . . . . . . . . 17 4.4 Schaubild: Vorgang des Roamens von Access Point 1 nach Access Point 2, Methode B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 5.1 WRAP2e mit Gehäuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 5.2 Diagramm des struct w2l2_setzeAP . . . . . . . . . . . . . . . . . . . . 26 6.1 Screenshot WI-Spy. Normale Nutzung des Kanal 6 (g) . . . . . . . . . . . 40 6.2 Logo des w2l2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 6.3 Screenshot WI-Spy. Störung durch eine Mikrowelle . . . . . . . . . . . . 43 6.4 Messaufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.5 Folienabschirmung der Antenne . . . . . . . . . . . . . . . . . . . . . . 47 6.6 Screenshot WI-Spy, Traffic der Messung: Methode A, UDP-Pakete werden von Festnetz an das WLAN-System gesendet . . . . . . . . . . . . . . . . 48 6.7 Methode B I, Schema Netzverbindung . . . . . . . . . . . . . . . . . . . 54 6.8 Methode B I, Screenshot Wireshark . . . . . . . . . . . . . . . . . . . . . 55 3.2 3.3 XI XII Tabellenverzeichnis 3.1 ISO OSI Schichtenmodell . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5.1 Beispiel des logischen Aufbaus der Scan-Daten . . . . . . . . . . . . . . 34 6.1 Liste aller MAC Adressen aller Geräte . . . . . . . . . . . . . . . . . . . 45 6.2 Messung: Methode A, Netz → WLAN. Versatz der dump Dateien . . . . . 51 6.3 Messung: Methode A, Netz → WLAN. Roaming Zeiten Layer 2 . . . . . . 52 6.4 Messung: Methode A, WLAN → Netz. Versatz der dump Dateien . . . . . 53 6.5 Messung: Methode A, WLAN → Netz. Roaming Zeiten Layer 2 . . . . . . 53 6.6 Messung: Methode B I b, Netz → WLAN. Versatz der dump Dateien . . . 56 6.7 Messung: Methode B I b, Netz → WLAN. Roaming Zeiten Layer 2 . . . . 57 6.8 Messung: Methode B I b, Fehlende Pakete dem Roaming-Vorgang zugeordnet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Messung: Methode B I b, WLAN → Netz. Versatz der dump Dateien . . . 58 6.10 Messung: Methode B I b, WLAN → Netz. Roaming Zeiten Layer 2 . . . . 58 6.11 Messung: Methode B II, Netz → WLAN. Versatz der dump Dateien . . . . 60 6.12 Messung: Methode B II, Netz → WLAN. Roaming Zeiten Layer 2 . . . . . 60 6.13 Messung: Methode B II, WLAN → Netz. Versatz der dump Dateien . . . . 62 6.14 Messung: Methode B II, WLAN → Netz. Roaming Zeiten Layer 2 . . . . . 62 8.1 68 6.9 Roamingzeiten Switched WLAN Systeme [Sar07] . . . . . . . . . . . . . XIII XIV Verzeichnis der Quellcodes 5.1 Erzeugen eines STA Interfaces . . . . . . . . . . . . . . . . . . . . . . . 23 5.2 Erzeugen eines Monitor-Interfaces . . . . . . . . . . . . . . . . . . . . . 23 5.3 Ändern der Sendekraft . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 5.4 Linux/include/asm-generic/ioctl.h . . . . . . . . . . . . . . . . . . . . . 27 5.5 Radiotap Header für den MadWifi aktivieren . . . . . . . . . . . . . . . . 28 5.6 Vorbereitungsskript für Methode A . . . . . . . . . . . . . . . . . . . . . 30 5.7 Ausgabe der Methode A . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.8 Vorbereitungsskript für Methode B . . . . . . . . . . . . . . . . . . . . . 35 5.9 Ausgabe der Methode B . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 5.10 Ausgabe der Methode B II, Fehlermeldung . . . . . . . . . . . . . . . . . 36 6.1 Dump des Netzwerkverkehrs auf dem WLAN . . . . . . . . . . . . . . . . 47 6.2 Wireshark Filter zum ausblenden der Beacons . . . . . . . . . . . . . . . 50 6.3 Methode A, Netz → WLAN. Ausgabe UDP-Test . . . . . . . . . . . . . . 51 6.4 Methode A, WLAN → Netz. Ausgabe UDP-Test . . . . . . . . . . . . . . 52 6.5 Methode B I b, Netz → WLAN. Ausgabe UDP-Test . . . . . . . . . . . . 55 6.6 Methode B I b, WLAN → Netz. Ausgabe UDP-Test . . . . . . . . . . . . 57 6.7 Methode B II, Netz → WLAN. Ausgabe UDP-Send . . . . . . . . . . . . 59 6.8 Methode B II, WLAN → Netz. Ausgabe UDP-Test . . . . . . . . . . . . . 61 9.1 Aufruf von fdisk, wenn die Karte nach sda gemountet wurde . . . . . . . . 72 9.2 Formatieren der Partitionen . . . . . . . . . . . . . . . . . . . . . . . . 72 9.3 Auswerfen der Karte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 9.4 Mounten der Karte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 9.5 Konfigurieren des Kernels . . . . . . . . . . . . . . . . . . . . . . . . . . 74 9.6 Kernel kompilieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 9.7 Kernel kopieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 XV 9.8 Module kompilieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 9.9 Module kopieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 9.10 RAM-Disk generieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 9.11 Boot-Loader (grub) installieren . . . . . . . . . . . . . . . . . . . . . . . 75 9.12 Serielle Ausgabe des Grubs aktivieren . . . . . . . . . . . . . . . . . . . 75 9.13 Serielle Ausgabe des Kernels aktivieren . . . . . . . . . . . . . . . . . . 76 9.14 Seriellen Login aktivieren . . . . . . . . . . . . . . . . . . . . . . . . . . 76 9.15 Login als root . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 9.16 Login als root . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 9.17 fstab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 9.18 damit kann der sshd starten . . . . . . . . . . . . . . . . . . . . . . . . . 77 9.19 Rechtekorrektur, um kermit als normaler User zu nutzen . . . . . . . . . . 77 9.20 kermit Befehle, um sich zu verbinden . . . . . . . . . . . . . . . . . . . . 77 9.21 Befehle für den ersten Start . . . . . . . . . . . . . . . . . . . . . . . . . 78 9.22 LED Steuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 9.23 Unmounten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 9.24 low-level kopieren: Karte auslesen . . . . . . . . . . . . . . . . . . . . . 79 9.25 low-level kopieren: Karte beschreiben . . . . . . . . . . . . . . . . . . . 79 9.26 IP Adresse setzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 9.27 Beispielausgabe UDP-Test, Empfangsmodus . . . . . . . . . . . . . . . . 81 XVI Kapitel 1 Vorwort Das Studium ist für mich wesentlich besser gelaufen, als ich gedacht und gehofft hatte. Daher will ich mich bei Allen bedanken, die an mich geglaubt und mich unterstützt haben; dadurch wurde mein Studium erst möglich gemacht! Ich bedanke mich bei: Meiner Familie, die mir sowohl finanziell über so manchen Engpass hinweggeholfen haben, als auch moralisch immer wieder den Rücken gestärkt hat. Der Firma Makrolog AG, die mir nicht nur zwei Jahre lang einen sichern Verdienst gegeben habt, sondern auch sehr verständnisvoll mit meinem studentischen Problemen umgegangen ist. Meinen Kommilitonen, die mit meinen Eigenarten sehr gut umgegangen sind. Insbesondere Andreas Textor, der nicht nur viele Nerven auf meine Rechtschreibung verwendet hat, sondern auch einige Projekte mit mir gemeinsam erfolgreich durchgezogen hat. Auch will ich mich bei Frank Meffert bedanken, der mir einige gute Tips für die Thesis gegeben hat. Den Professoren: Herrn Prof. Dr. Gergeleit, der mir nicht nur einen Arbeitsstelle im w2l2 (Wiesbadener Wireless LAN Labor) gegeben hat, sondern auch die Möglichkeit, die Thesis „verfrüht“ zu schreiben. Herrn Prof. Dr. Kleuker, der unseren Jahrgang vier Semester lang begleitet hat, und somit ein fester Ruhepol in dem sonst unruhigen Studentenleben war. Auch will ich mich bei der großen Open Source Community bedanken, ohne deren Wirken und Schaffen ein wesentlicher Bestandteil dieser Arbeit nicht entstanden wäre. 1 Kapitel 1. Vorwort Zuletzt will ich mich noch beim BaFög-Amt bedanken. Sowohl für die ungewollt tiefen Einblicke in die Deutsche Bürokratie, als auch, daß ich dadurch bei bei einigen Banken / Ämtern / Versicherungen einen bleibenden Eindruck hinterlassen habe. 2 Kapitel 2 Zielsetzung Wireless LAN wird heutzutage in vielen Bereichen genutzt. Neben dem trivialen Datentransfer (zum Beispiel für das Surfen von einem mobilen Laptop aus) wird es verstärkt für Echtzeitanwendungen, wie zum Beispiel Voice over IP, genutzt. Auch in der Automatisation wird WLAN verstärkt eingesetzt, zum Beispiel in autonom fahrenden Robotern. Für diese Bereiche ist heutzutage die Bandbreite kein kritischer Faktor mehr. Kritischer sind vielmehr Latenzzeiten, Jitter und Nachrichtenverlustrate. Im 802.11e Standard gibt es daher Mechanismen, diese Quality of Service Anforderungen zu erfüllen. Diese QoSMechanismen sind allerdings nur für eine Zelle definiert. Zellwechsel, das so genannte Roaming, wurde bisher weniger betrachtet. Die Zeiten des normalen, clientseitigen Roamings beim WLAN liegen heutzutage immer noch im Bereich von mehreren 100 ms. Bestimmte Systeme und Vorgehensweisen können diese Zeiten auf ca. 100ms drücken. Damit erfüllen diese Systeme aber immer noch nicht die Anforderungen der oben genannten Anwendungen. Das Ziel dieser Arbeit ist es nun, ein Roaming zu realisieren, das im Bereich von wenigen 10ms liegt. Dazu wird untersucht in welchem Umfang dazu eine zweite WLAN-Karte verwendet werden kann. Die Untersuchung beschränkt sich dabei auf den eigentlichen Roaming-Vorgang. Verschlüsselte Verbindungen, zum Beispiel mittels WPA und dem damit verbundenem Schlüssel-Management, wird nicht näher betrachtet, da diese Aspekte undabhängig sind. Die Aspekte des Schlüssel-Management beim Roaming wird in der laufenden Standardisierung der IEEE 802.11r Task Group "Fast Roaming"betrachtet. 3 Kapitel 2. Zielsetzung 4 Kapitel 3 Einleitung 3.1 WLAN Wireless LAN (WLAN, IEEE802.11 [IEE]) ist eine Netzwerktechnologie, die auf Funk basiert: Die Computer oder ähnliche Systeme (wie z.B. PDAs, Handscanner, etc.) kommunizieren über Funk miteinander. So sind die Systeme mobil und nicht ortsgebunden. Im ISO OSI Schichtenmodell ist dieses auf Layer eins (Physikalische Schicht) und Layer zwei (Sicherungsschicht) / MAC angeordnet. Layer Bezeichnung „Sublayer“ 7 Anwendung 6 Darstellung 5 Sitzung 4 Transport 3 Vermittlung 2 Sicherung 1 Physikalisch LLC (Logical Link Control) MAC (Media Access Control) Tabelle 3.1: ISO OSI Schichtenmodell Ein abgekapseltes Funknetz ohne Verbindung zu einem festen Netz (Hausnetz, Firmennetz und sogar: Internet) ist allerdings nur von begrenzter Nützlichkeit. Es werden auch Zugriffe auf Rechner, bzw. Systeme eines stationären Netzes gebraucht. Zum Beispiel, um Messdaten zu speichern, oder im Lager die nächsten Aufträge zu holen. Oder man 5 3.1. WLAN Kapitel 3. Einleitung will ganz trivial draußen unter dem Baum im Internet surfen. Als Vermittler hierzu gelten so genannte „Access Points“ (APs). Diese sind stationär und an ein stationäres Netz angeschlossen (meist mittels eines Netzwerkkabels, wie z.B. Twisted Pair, also IEEE 802.3). An diesen Access Points kann sich ein WLAN-System anmelden und dann über diesen Access Point in das angeschlossene Netzwerk kommunizieren. Die maximale Entfernung von WLAN beträgt bei 802.11b (11MBit/s bei 2,4 GHz) auf „freier Wiese“, also ohne Hindernisse zwischen Sender und Empfänger, theoretisch bis zu 500m ([HM03], Seite 165), bei den in Deutschland maximal 100mW erlaubten Sendeleistung [VWL] . Aber die Verbindungsqualität nimmt mit der Entfernung ab. Um da noch mit der Gegenstelle kommunizieren zu können, reduzieren die WLAN-Interfaces die Übertragungsgeschwindigkeit. Abbildung 3.1: Verhältnis von Entfernung zur Verbindungsgeschwindigkeit, Quelle: Texas Instruments 2002 Allerdings wird WLAN kaum auf freier Fläche, sondern in Gebäuden (Büro oder Produktsionsräume) eingesetzt. Solche Räume bestehen aus funktechnischer Sicht aus vielen Hindernissen: Wände, Schränke (Metall), selbst eine große Hydrokultur kann das Signal dämpfen. Zusätzlich wird das Funksignal nicht nur gedämpft sondern teilweise auch reflektiert. Dadurch beträgt die typische maximale Reichweite nur noch 40 Meter [Ahl02]. Durch diese starke Beschränkung kann ein Access Point alleine maximal kleine Büroräume versorgen. Um größere Büroräume, oder einen ganzes Firmengelände zu versorgen braucht man mehrere Access Points, die „strategisch“ über das ganze Gelände verteilt sind. Wenn man mehr Access Points als notwendig verwendet, und damit den Abstand zwischen den Access Points verringert, dann kann man einen höhere Durchsatz erwarten, da die Stationen immer ein Access Point in der Nähe haben. Dadurch müssen die 6 Kapitel 3. Einleitung 3.2. Roaming Abbildung 3.2: Empfangsstärke und damit erreichbare maximale Geschwindigkeit, Quelle: [Ahl02] WLAN-Stationen nicht über eine „große“ Strecken funken, und müssen daher nicht auf eine langsamere Übertragungsgeschwindigkeit zurückgreifen. Für die Planung gibt es so genannte „Ausleuchtungstools“, wie z.b. den Ringmaster von Trapeze Networks [Rin] oder das FL Wireless Simulation Tool Basic von Phoenix Contact. In diesen Programmen zeichnet man den Grundriss der Büros nach, inklusive der Möbel und sonstiger Hindernisse. Diese geben dann graphisch aus, wo welche Empfangsstärke zu erwarten ist. Obwohl das theoretische Werte sind, die durch reale Messungen gefestigt werden müssen, können die Simulationsergebnisse ein guter Anhaltspunkt für eine optimale Verteilung der Access Points ergeben. Abbildung 3.3: Screenshot Ausleuchtungstools. links: Ringmaster, rechts: FL Wireless Simulation Tool Basic 3.2 Roaming Ortsgebundene Systeme werden nur selten mit WLAN ausgestattet, da eine feste Verkabelung mehr Durchsatz und eine höhere Sicherheit bieten. Nur in speziellen Fällen, wenn 7 3.3. Schwierigkeiten von Roaming Kapitel 3. Einleitung man kein Kabel legen kann (zum Beispiel weil das Gebäude denkmalgeschützt ist) wird man solche Systeme mit WLAN ausstatten. WLAN wird daher mehr bei mobilen Systemen eingesetzt. Aber dadurch, daß diese Systeme mobil sind, können diese sich auch aus dem Funkbereich des Access Points (auch „Zelle“ genannt), an dem sie angemeldet sind, entfernen. So verlieren diese Systeme die Verbindung zum Access Point, und daher auch zum stationären Netz. Wenn allerdings dieses System in den Bereich eines anderen Access Points kommt, so kann es sich zu diesem Access Point verbinden, und hat wieder Zugriff auf das stationäre Netz. Im Idealfall überlappen sich die Zellen beider Access Points, sodas die Station schnell umschalten kann. Den kombinierten Vorgang von Abmelden von einem Access Point und anmelden an einen anderen Access Point nennt man Roaming. In den mobilen Telekomunikationsnetzen (GSM, UMTS, etc.) nennt man diesen Vorgang auch „Handover“, bzw. „Cell-Handover“. Abbildung 3.4: Roaming: Eine Station wechselt in eine andere Zelle 3.3 3.3.1 Schwierigkeiten von Roaming Frequenzen Für WLAN sind in Europa im 2.4 GHz Band dreizehn Kanäle ([HM03], Seite 63), in Amerika elf Kanäle, mit einem Frequenzabstand von fünf MHz definiert. Dieses gilt aber nur für den 802.11b Standart. Der 802.11g Standart nutzt auch diese Kanäle, braucht aber ein Spektrum von 20 Mhz. Um möglichst kompatibel zu bleiben, nutzt der 11g Standart die gleiche Kanalbelegung wie der 11b Standart. Das hat aber zur Folge, daß ein 11g Gerät 8 Kapitel 3. Einleitung 3.3. Schwierigkeiten von Roaming auch auf den benachbarten Kanälen sendet. Wenn eine Station auf Kanal sechs sendet, so nutzt das die Kanäle vier bis acht mit. Eine zweite 11g Station, die auf diesen Kanälen liegt wird dadurch gestört. Diese Station kann aber noch erkennen, daß eine Übertragung stattfindet, so daß sich die beiden Stationen abstimmen können. Sollte der zweite Sender aber in einem der nahen benachbarten Kanäle liegen, zum Beispiel auf Kanal neun, so stören sich diese beiden Sender, ohne daß die sich abstimmen können. Dadurch ergibt sich eine maximale Anzahl von drei nutzbaren Kanälen im 11g Betrieb. In Europa sind das die Kanäle eins, sieben und dreizehn. Dadurch hat man je ein Kanal (vier und zehn) als Puffer. Wenn man zu den amerikanischen WLAN-Karten kompatibel bleiben will (zum Beispiel, weil amerikanische Kollegen sich in das Netz einklinken), sollte man sich auf die Kanäle eins bis elf beschränken. Die Aufteilung der 11g Kanäle ist dann: eins, sechs und elf. Im 5GHz Band sind außerdem zwölf und fünf Kanäle definiert ([Kaf05], Seite 78). Die zwölf Kanäle für eine normale Geschwindigkeit, und die weiteren fünf für den so genannten „Turbo Modus“. In Deutschland ist das 2.4 GHz Band mehr genutzt als das 5 GHz Band, da das 5 GHz Band in Deutschland lange Zeit nicht lizenzfrei genutzt werden durfte [Ger07]. 3.3.2 Auswirkungen Das Funknetz ist ein so genanntes „Shared Medium“. Das heißt, daß es viele Stationen gibt, die auf das gleiche Medium senden. Wenn mehrere Stationen gleichzeitig - oder fast gleichzeitig senden, dann überlagern sich die Signale. Man spricht von einer Kollision. Die Empfänger sind nicht in der Lage, das empfangene Signal einer Station zuzuordnen, oder gar beide Datenströme zu demultiplexen. Die Übertragung aller Sender ging verloren, und muss wiederholt werden. Aus diesem Grund ist im 802.11 Standart ein CSMA/CA1 Verfahren festgelegt: Jede Station sendet im Layer zwei Frame mit, wie lange es brauchen wird (Feld „Duration“). Sollten mehrere Frames verschickt werden so wird die Gesamtdauer aller Frames angegeben. Die anderen Station warten diese Zeit, plus eine genügend lange Zeit für das „ACK“ ab. Dieses vermindert Kollisionen, aber vermeidet diese nicht komplett. Daher kann eine Station auf stark belasteten Medien erst ein kurzes Frame - ohne Daten - verschicken, mit dem diese Station nur den Kanal belegt. Das Frame heisst „RTS“ - Request to Send. Der Access Point antwortet darauf mit „CTS“ - Clear to Send. Die Wahrscheinlichkeit einer Kollision ist durch die Kürze des Paketes geringer. 1 Carrier Sense, Multiple Access / Collision Avoidant 9 3.3. Schwierigkeiten von Roaming Kapitel 3. Einleitung Sollte es trotzdem zu einer Kollision kommen, ist es nicht sehr teuer, da eine wesentlich geringere Zeit verloren geht, als wenn ein großes Datenpaket kollidiert. Durch diese ganzen Mechanismen sind Kollisionen unwahrscheinlich. Die Stationen müssen sich aber immer noch die knappe Ressource „Bandbreite“ teilen. Um die Wahrscheinlichkeit von Kollisionen noch weiter zu verringern und um zusätzlich mehr Bandbreite zu nutzen, können die Access Points auf verschiedene Frequenzen eingestellt werden (Frequenzmultiplexing). Ein Transceiver, also die Sende/Empfangseinheit des Netzwerksinterfaces, kann nur auf eine Frequenz justiert werden. Es kann daher nicht die Signale der Access Points auffangen, die mit einer anderen Frequenz arbeiten. Wenn sich eine Station einen „Überblick“ verschaffen will, so hat diese Station zwei Möglichkeiten: Diese kann aktiv oder passiv scannen. Jeder Access Point verschickt in regelmäßigen Abständen ein „Beacon“ Signal (Beacon, deutsch: „Leuchtfeuer“), mit dem er sich bekannt macht, und alle seine technischen Daten verschickt. Dieses Signal wird normalerweise alle 100ms verschickt. Dieses kann man für einen passiven Scan verwenden: Bei einem passiven Scan muss die Station nacheinander auf alle Frequenzen schalten. Bei jeder Frequenz muss es auf Beacons warten und diese auswerten. Für einen aktiven Scan muss die Station wie beim passiven Scan auch auf alle Frequenzen schalten. Bei jeder Frequenz muss die Station ein „Probe Request“ Signal schicken. Auf dieses Signal antworten alle erreichten Access Points mit einem „Probe Response“ Signal. Auf dieses Signal muss die Station nur sehr kurze Zeit warten, bis es zur nächsten Frequenz wechseln kann. Der passive Scan hat den Nachteil, das es extrem lange dauert. Bei einem Beacon-Intervall von 100ms muss die Station mindestens 100ms plus doppelte der Übertragungszeit des Beacons warten. Das Doppelte daher, da das Beacon schon gesendet werden könnte, wenn die Station gerade auf diesen Kanal umschaltet. Dieses Beacon empfängt die Station dann aber nicht mehr. Um sicherzugehen, das die Station alle Beacons empfängt, sollte die Station aber 200ms in jedem Kanal verweilen. Bei dreizehn Kanälen sind das dann 2,6 Sekunden, plus die Zeit, die die WLAN-Karte braucht, um den Transceiver auf eine andere Frequenz umzuschalten. Der aktive Scan hat zwar den Vorteil, das die WLAN-Karte nur sehr kurz bei einer Frequenz verweilen muss, allerdings wird durch das Versenden des „Probe-Request“ Signals 10 Kapitel 3. Einleitung 3.3. Schwierigkeiten von Roaming das Medium belastet, da während dieser Zeit keine andere Station senden kann. Es können dadurch sogar Kollisionen auftreten. Bei wenigen Stationen fällt das nicht ins Gewicht. Allerdings wenn viele Stationen alle paar Sekunden scannen, so ist das unnötiger Traffic. Bei beiden Scan Varianten kann die WLAN-Karte einige Zeit nicht auf Ihrer eigentlichen Frequenz arbeiten, und verliert so Pakete. Aktuelle Treiber können dem Paketverlust vorbeugen, indem Sie dem Access Point mitteilen, das diese in den Powersave Modus gehen. Dadurch cached der AccessPoints solange die Pakete, bis diese wieder abgeholt werden. Zusätzlich muss die Station auch die zu sendenden Pakete zurückhalten, bis die Station wieder im eigentlichen Kanal ist. So wird zwar dem Paketverlust vorgebeugt, aber es kommt zu einer zusätzlichen Verzögerung (Delay) in der Übertragung. Diese Verzögerung kann gerade Echtzeitanwendungen stören, da dieses zum Bufferunderrun durch einen unerwartet hohen Jitter (Abweichung des Delays) kommen kann. 11 3.3. Schwierigkeiten von Roaming Kapitel 3. Einleitung 12 Kapitel 4 Konzept 4.1 4.1.1 Verwandte Arbeiten Switched WLAN Große Installationen arbeiten mit einem „Switched WLAN“. In einem switched WLAN sind die Access Points „dumme Antennen“ eines zentralen Switches. Diese Access Points geben einen großen Teil ihrer „Intelligenz“ an den zentralen Switch ab. Daher nennt man diese Access Points auch „Thin APs“. Die Access Points leiten einfach die gesamte empfangene Kommunikation an den zentralen Switch weiter. Dieser entscheidet dann, was damit zu tun ist. Der Switch leitet also nicht nur die Datenpakete weiter, sondern kann auch die Access Points steuern, die Nutzer authentifizieren, u.v.m. Dadurch wird die gesamte Verwaltung an einen zentralen Punkt verlagert. Dieses hält die Administrationskosten niedrig. In der Diplomarbeit von Uwe Mülder von 2005 [Mü05] ist ein ausführlicher Überblick über Switched WLAN enthalten. Um in dieser Umgebung ein schnelles Roaming zu gewährleisten, gibt es zwei Ansätze: Die Firma Extricom zum Beispiel lässt alle Access Points auf dem selben Kanal senden, und spannt so eine virtuelle Zelle über alle Zellen auf. Das mobile System merkt also nicht, wenn es von einem anderen Access Points Daten gesendet bekommt. Ein anderer Ansatz ist der 802.11V Standard. Die Access Points, bzw. der zentrale Switch sollte die Möglichkeit bekommen, die WLAN-Karten in den Stationen zu steuern. So kann zum Beispiel der zentrale Switch, sobald dieser erkennt, daß er die WLAN Station 13 4.1. Verwandte Arbeiten Kapitel 4. Konzept über einen anderen Access Point besser versorgt wäre (z.B. wegen Signalstärke, Auslastung der Zelle oder Wartungsarbeiten), das Roaming anstoßen. Dazu gibt dieser der WLAN-Karte der Station den Befehl, auf einen anderen Access Point zu wechseln. Das Roaming ist also transparent für die überliegenden Protokolle und Anwendungen, und an der WLAN-Station selber sind keine weiteren Arbeiten notwendig. Frau Nuray Saracoglu hat 2007 in ihrer Diplomarbeit [Sar07] die Switched-WLAN Lösungen von Aruba, Extricom und Cisco vermessen. 4.1.2 Sync Scan Eine von Ishwar Ramani and Stefan Savage an der University of California in San Diego ausgegebenes Papier [RS05] beschreibt, wie man die Scan-Zeiten minimieren kann. Die Autoren schlagen vor, daß die Access Points die Beacons mit definierten Abständen zueinander schicken. Wenn also die Access Points auf Kanal eins die Beacons zum Zeitpunkt t schicken, so schicken die Access Points auf den anderen Kanälen die Beacons zum Zeitpunkt t + (Kanal − 1) ∗ d. Ein Access Point auf Kanal zwei würde also zum Zeitpunkt t + d sein Beacon abschicken. Ein Access Point auf Kanal 3 zum Zeitpunkt t + 2 ∗ d. Abbildung 4.1: Sync Scan: Versatz zwischen den Beacons. Durch den Zeitpunkt des Beacon Signals des Access Points, mit dem die WLAN Station 14 Kapitel 4. Konzept 4.2. Idee verbunden ist, kann diese relativ genau ermitteln, wann die Beacons auf den anderen Kanälen gesendet werden. Zum Scannen muss die WLAN Station nur kurz vorher auf einen anderen Kanal wechseln, und empfängt dann schnell die Beacons. Die Wartezeit reduziert sich dadurch drastisch. So verringert sich auch die Zeit drastisch, in dem die Station nicht auf dem ursprünglichen Kanal ist, und Daten verliert. Zusätzlich hat das den Vorteil gegenüber dem aktiven Scan, daß diese Methode den Kanal nicht zusätzlich mit „Probe Response“ Paketen belastet. 4.1.3 802.11r Aktuell ist die Taskgruppe „r“ der IEEE 802.11 dabei, einen Standard für das Fast Roaming zu definieren. Ziel ist es, das Roaming schnell genug für Voice over IP und ähnlich zeitkritische Anwendungen zu machen. Ein Hauptaugenmerk fällt darauf, die Reauthentifizierung am neuen Access Point durch deutlich wenigere Pakete zu beschleunigen. 4.2 Idee Aufgrund des notwendigen Kanalwechsels - sowohl für das Scannen, wie in der Einleitung beschrieben, als auch beim eigentlichem Roamen - ist ein schnelles clientseitiges Roaming über mehrere Frequenzen mit nur einen Transceiver, also einer WLAN-Karte, im Rahmen der Anforderungen nicht möglich. Kostengünstige industrielle Systeme kosten ca. 400 Eur. Selbst günstige aktuelle Laptops kosten noch 500 Eur und mehr. Eine WLAN Karte oder Modul kostest ca. 20 Eur. Das sind ca. 5% der Gesamtkosten, und sind daher heutzutage keine Kostenfaktoren mehr. Aus diesem Grund kann man auch zwei WLAN Karten oder Module verbauen. Durch den Einsatz von zwei WLAN-Karten ergeben sich mehrere Möglichkeiten, ein Clientseitiges Roaming zu implementieren. 4.3 Möglichkeit A: Dezidiertes Scannen Mit einem WLAN Interface wird die Verbindung gehalten. Das andere Interface setzt man nur zum Scannen ein. 15 4.3. Möglichkeit A: Dezidiertes Scannen Kapitel 4. Konzept Während das Hauptinterface immer die Netzwerkverbindung hält, scannt das andere Interface regelmäßig. Ein Programm auf der Station vergleicht regelmäßig die Empfangsstärke des Access Points, mit dem das Hauptinterface verbunden ist, mit dem Access Point, der aktuell am besten zu empfangenen ist. Sollte der stärkste Access Point wesentlich stärker sein, dann muss es sich vom aktuellen Access Point abmelden und bei dem neuen Access Point anmelden. Man muss davon ausgehen, daß die Antennen beider Interfaces unterschiedlich sind. Die Antennen haben nicht nur eine andere räumliche Position, sondern die Ausrichtung kann um wenige Grad abweichen. Auch die Verarbeitungsqualität kann unterschiedlich sein. Dadurch empfangen die Interfaces die WLAN-Übertragung nicht mit der gleichen Stärke, sondern mit einer leicht unterschiedlichen Stärke. Deswegen darf man nicht die Stärke der Signale vom Hauptinterface mit der Stärke der Signale vom Scan-Interface vergleichen. Zum Beurteilen, ob ein Access Point stärker sendet als der Access Point, mit dem die Station aktuell verbunden ist, muss man beide Werte aus dem Scan-Interface lesen. Sonst kann es dazu führen, daß entweder erst sehr spät geroamt wird, oder es zwischen zwei Access Points hin und her schaltet. Bei dieser Methode ist die Station nur eine kurze Zeit, und das nur zu bestimmten Augenblicken, vom Netzwerk getrennt. Der Paketverlust sollte sich also in Grenzen halten, und gegebenenfalls von den Protokollen der höheren Schichten aufgefangen werden. Abbildung 4.2: Schaubild: Vorgang des Roamens von Access Point 1 nach Access Point 2, Methode A 16 Kapitel 4. Konzept 4.3.1 4.3. Möglichkeit A: Dezidiertes Scannen Scannen Ein weiteres Problem ist, daß der Access Point mit dem Beacon oder Probe Response Signal wichtige technische Informationen mitliefert, die notwendig sind, um sich zu diesem Access Point zu verbinden, wie z.B. die unterstützten Protokolle, Frequenz, u.s.w. (siehe Abbildung 4.3). Diese Informationen sind zwar im Treiber des Scan-Interfaces enthalten, aber nicht im Treiber des Hauptinterfaces. Das Hauptinterface müsste also auch noch einmal scannen, um diese Information zu finden. Um dieses zu vermeiden, muss eine Möglichkeit gefunden werden, die Scan-Informationen zu übergeben. Abbildung 4.3: Aufbau eines Beacons. Quelle [HM03] Die Treiber internen Scan-Funktionen sind aber nur minimal konfigurierbar. Da aber ein Interface dezidiert zum Scannen verwendet werden soll, und man die Scan-Informationen irgendwie übertragen muss, kann man auch eine eigene Scan-Routine schreiben. Dieses hat den großen Vorteil gegenüber der Treiber internen Scan-Funktionen, daß man nicht nur alles unter Kontrolle hat, man kann auch die zu scannenden Kanäle sehr genau einstellen. Es müssen nur noch die Kanäle angegeben werden, die auch wirklich gebraucht werden. z.B.: Kanal eins, sieben und dreizehn. Dadurch verringert sich die Zeit des tatsächlichen Durchlaufs von 13 ∗ wz (Wartezeit in ms) auf n ∗ wz. In diesem Beispiel mit 3 n = 3 : 3 ∗ wz. Also um 13 , also mehr als 14 schneller. Ausfälle von Access Points können so schneller erkannt und kompensiert werden. Auch kann man nach Bedarf weitere Parameter den eigenen Bedürfnissen anpassen, zum Beispiel die Verweilzeit in einem Kanal, wenn man ein anderes Beacon-Intervall einstellt. 17 4.4. Möglichkeit B: Wechselnde Aufgaben 4.4 Kapitel 4. Konzept Möglichkeit B: Wechselnde Aufgaben Die WLAN-Karten wechseln sich mit dem Scannen und dem Halten des Netzwerks ab. Zuerst hält ein Interface das Netzwerk. Die andere Karte wird wie in Variante A zum Scannen verwendet. Sobald ein Access Point deutlich stärker wird, verbindet sich das Scan-Interface mit dem neuen Access Point, und das Interface, das bisher die Verbindung gehalten hat, disconnectet sich. Es wird nun zum scannen verwendet. Abbildung 4.4: Schaubild: Vorgang des Roamens von Access Point 1 nach Access Point 2, Methode B Da die Netzwerkkarten aber unterschiedliche MAC-Adressen haben, ist die Station nach dem Roamingvorgang eine logisch neue Station, die erstmal nichts mit der logischen alten Station zu tun hat. Auch wenn man dem neuen Interface die gleiche IP-Adresse vergibt, so haben die anderen Stationen noch die alte MAC-Adresse gechached, und senden weiterhin an die alte MAC-Adresse, die aber nicht mehr zu erreichen ist. Bis also die anderen Stationen ein neuen ARP-Request durchführen, gehen Pakete verloren. Um dieses Problem zu umgehen, gibt es diese Möglichkeiten: • I. Einsatz von einer virtuellen Bridge (z.B. [vBr]) Die beiden WLAN Karten werden zu einer Bridge zusammengefasst. Es entsteht ein neues Interfaces, mit einer eigenen MAC Adresse. Auf dieses Interface legt man dann die IP. Da das Scan-Interface nicht zu einem Access Point assoziiert ist, hat es des Status „kein Kabel angeschlossen“ und wird von der Bridge nicht beachtet. 18 Kapitel 4. Konzept 4.4. Möglichkeit B: Wechselnde Aufgaben • II. Vergabe gleicher MAC-Adressen mit gleichen IP-Adressen Als Alternative kann man den WLAN-Karten die gleiche MAC- und IP-Adressen geben. Durch die gleiche MAC-Adresse ist es für das Netzwerk immer noch die gleiche Station, auch wenn der Datenstrom über eine andere WLAN-Karte fließt. Durch die gleiche IP-Adresse gibt es allerdings Routenprobleme: Das Station wird die Pakete immer von dem ersten Interface schicken wollen. Dieses muss in der Implementierung gelöst werden. Vorteil ist bei dieser Variante, daß man nicht die Scan-Informationen übertragen muss. Nachteil, daß das Netz kurzzeitig durch den Wechsel der Karte, des Access Points und der Frequenz „verwirrt“ wird, was dazu führt, das einige Pakete den „alten“ Weg gehen, und andere den „neuen“. Allerdings schicken die Access Points im Normalfall ein so genanntes „LLC-Update Frame“. Dieses enthält die MAC Adresse der WLAN-Station und wird an alle gebroadcastet. Dadurch lernen die Backbone-Switches und alle erreichbaren Access Points, über welche Verbindung diese Station nun zu erreichen ist. Dadurch sollte die Zeit der „Verwirrung“ sehr kurz sein. 19 4.4. Möglichkeit B: Wechselnde Aufgaben 20 Kapitel 4. Konzept Kapitel 5 Implementierung 5.1 Hardware Dem Wireless Labor der Fachhochschule Wiesbaden stehen vier WRAP 2e (Wireless Router Application Platform) der Firma PC Engines (http://www.pcengines.ch/wrap.htm) zur Verfügung. Die WRAPs sind embedded PCs mit einem 486 kompatiblen AMD Geode Prozessor. Abbildung 5.1: WRAP2e mit Gehäuse Der WRAP 2e hat ein 10/100 MBit Interface, sowie zwei Mini-PCI Steckplätze, die mit mit je einer 11g WLAN Karte mit Atheros Chipsatz belegt sind. Als „Festplatte“ steht eine 1GB Compact-Flash Karte zur Verfügung. Als Betriebssystem wird SuSE Linux 10.2 eingesetzt. Der Kernel ist für diese Umgebung speziell kompiliert worden. Im Anhang, Kapitel 9.1, Seite 71, befindet sich eine kurze Installationsanleitung. 21 5.2. Entwicklungsumgebung 5.2 Kapitel 5. Implementierung Entwicklungsumgebung Entwickelt wird die Software wegen den geringen Ressourcen nicht auf dem WRAP, sondern auf einem normalen PC unter Linux (SuSE 10.2). Die fertige binär-Datei wird dann per scp auf einen WRAP kopiert und dann getestet. Als Compiler wird der gcc 4.1.2 eingesetzt - der gleiche, mit dem auch der Kernel und die Module des WRAPs übersetzt wurden (Siehe Anlage: WRAP). Als Treiber für die WLAN Karten wird der madwifi-ng eingesetzt. Und zwar immer die neueste Version aus dem Subversion-Repository. Es hat sich gezeigt, daß viele Probleme mit einem „svn update“ verschwinden. 5.3 Wireless Extensions for Linux Die Wireless Extensions for Linux [Tou] wurden von 1996 von Jean Tourrilhes initiiert und sind von HP gesponsort. Die Wireless Extensions wurden geschrieben, um ein einfache und für alle Treiber kompatible Methode zu haben, die WLAN-Einstellungen zu ändern. Die Wireless Extensions bestehen aus zwei „Modulen“. Einmal die Kernel-Module, die in den Kernel kompiliert werden, und die User-Space Tools, um die Kernel-Module zu steuern. Als User-Space Tools werden diese Programme bereitgestellt • iwconfig Grundlegende Einstellungen • iwpriv Setzen von Treiberspezifischen Einstellungen • iwlist Auflistung von möglichen Parametern, aber auch von Scan-Informationen • iwspy Anzeige von WLAN Ereignissen (Kanalwechsel, Assoziation, etc.) 22 Kapitel 5. Implementierung 5.4 5.4. madwifi-ng madwifi-ng Der MadWifi (http://madwifi.org/) ist ein Linux-Treiber für WLAN-Karten mit einem Atheros Chipsatz. Der Treiber wird aber langfristig von dem Treiber „ath5k“ abgelöst, der ohne proprietäre HAL 1 auskommen soll [Kap07]. Doch einerseits ist der Treiber noch nicht produktionsbereit, andererseits wurde mit dem „madwifi-ng“ schon Erfahrung gesammelt, sodas in diesem Projekt der Treiber „madwifi-ng“ verwendet wird. 5.4.1 Virtuelle Devices mit madwifi-ng Madwifi unterstützt virtuelle Devices. Das wirkt sich so aus, daß das eigentliche Interface „wifiX“ nicht zur Kommunikation verwendet werden kann. Dafür muss man mit dem Tool „wlanconfig“ virtuelle Devices für den entsprechenden Zweck anlegen. Der Wireless Extension Befehl iwconfig athX mode master funktioniert mit dem nadwifi-ng nicht. Zum Beispiel, wenn man eine ganz normale Verbindung aufbauen will: 1 # wlanconfig ath create wlandev wifi0 wlanmode sta Quellcode 5.1: Erzeugen eines STA Interfaces Mit diesem Interface kann man sich mit Access Points verbinden, scannen u.s.w. Aber einen eigenen Access Point aufmachen (Master Modus) oder gar das Medium monitoren geht nicht. Zum Monitoren muss man ein Interface als Monitor-Interface erzeugen. 1 wlanconfig ath create wlandev wifi0 wlanmode monitor Quellcode 5.2: Erzeugen eines Monitor-Interfaces Vorteil ist, daß man mehrere virtuelle Devices auf ein reales Device legen kann, und getrennt nutzen kann. Es gibt aber die physikalische Beschränkung, daß alle diese Devices auf dem selben Kanal arbeiten müssen. 1 HAL: „Hardware Abstraction Layer“. Bei einer WLAN-Karte ist dieses die Firmware. Aufgrund nationaler Gesetzgebungen ist diese für jedes Land unterschiedlich, um so die Kanäle und Sendestärken einzuhalten. Da dieses HAL zur Zertifizierung der WLAN-Karte dazugehört, darf der Source nicht freigegeben werden. Damit soll verhindert werden, daß die WLAN-Karte außerhalb der zugelassenen Spezifikationen betrieben wird. 23 5.4. madwifi-ng 5.4.2 Kapitel 5. Implementierung Probleme des madwifi-ng Der Madwifi-ng ist kein vollständig korrekt arbeitender Treiber. Im Laufe der Implementierungsarbeiten habne sich diese Probleme herausgestellt: • Wechsel des Access Points mittels iwconfig Der Wechsel von Access Points mittels des Wireless Extensions Befehls iwconfig <if> AP <MAC> oder der entsprechenden API sorgt zwar im Treiber dafür, daß er meint, sich an einem Access Point angemeldet zu haben. Allerdings findet der „four-way handshake“ (anmelden an den Access Point) nicht statt, so das ein normaler Access Point die Pakete der Station ignoriert. Allerdings hat der Madwifi einen speziellen I/O Control: „IEEE80211_IOCTL_SETMLME“. Durch diesen kann man viele weitere Funktionen ansteuern. Dieser I/O Control verlangt eine Struktur vom Typ „ieee80211req_mlme“. Im Feld „im_op“ kommt die ID, der Operation: „IEEE80211_MLME_ASSOC“. Im Feld „im_macaddr“ kommt die MAC - Adresse des Access Points. Nach diesem Aufruf meldet sich das System korrekt am Access Point an. • Roaming im gleichen Kanal Wenn der Treiber sich zu einem Access Point verbinden soll, der im gleichen Kanal wie der vorige ist, dann durchläuft der Treiber den Zustandsautomaten nicht richtig, und das Assoziieren schlägt fehl. Da der Fall „unterschiedliche“ Frequenzen in der Praxis aber wahrscheinlicher ist, um die Last zu verteilen, wurde dieses Problem ignoriert, und mit Access Points auf verschiedenen Frequenzen getestet. Dieses Problem betrifft nur Methode A. • Paketverlust bei Änderungen der Konfiguration Beim Ändern der Konfiguration, z.B. der Sendeleistung mittels iwconfig: 1 iwconfig ath0 txpower 20 Quellcode 5.3: Ändern der Sendekraft gibt es einen kurzen Zeitraum, bei dem nichts gesendet wird. Ein Interface in der Konfiguration „Master“ kann dadurch Pakete verlieren. 24 Kapitel 5. Implementierung 5.5 5.5. Umsetzung der Methode A Umsetzung der Methode A Das Problem beim Roaming ist, wie in der Einleitung beschrieben, daß ein Transceiver nur auf eine Frequenz eingestellt werden kann. Mit einem zweiten Transceiver kann man alle Frequenzen scannen ohne daß die Netzverbindung abreißt. Hier wird beschrieben, wie man die Scan-Informationen der WLAN Karte auslesen und nutzen kann, um das Netzwerkinterface gezielt zu roamen. 5.5.1 Übertragen der Scan-Informationen Damit der Wechsel des Interfaces von einem Access Point auf den anderen Access Point möglichst schnell geht, müssen die Scan-Informationen von dem Scan-Interface auf das Netzwerkinterface übertragen werden. Eine API Funktion zum Übergeben von Scan-Informationen gibt es nicht. Aber im Treiber selber gibt es die Funktion „ieee80211_add_scan“, die einen Scan-Eintrag in die Tabelle hinzufügt. Diese Funktion benötigt nur einen überschaubaren Eingansdatensatz mit den Scan-Informationen und den ungefilterten WLAN-Header. Die Funktion fügt dann den übergeben Access Point in die Scan-Liste hinzu. 5.5.2 I/O Control Um die Scaninformationen nun in den Treiber zu bekommen, wird ein I/O Control benötigt. Es wurde das I/O Control „w2l2_ioctl_addscan“ angelegt. Als Parameter bekommt es eine Struktur vom Typ „w2l2_setzeAP“. Diese Struktur enthält wiederum die zwei Strukturen: „w2l2_scanparams“ und „ieee80211_frame“. Abbildung 5.2 zeigt ein UML änliches Schema des Aufbaus. Die Struktur „ieee80211_frame“ enthält den unaufbereiteten WLAN-Header, wie dieser empfangen wurde. Die Struktur „w2l2_scanparams“ enthält alle weiteren Werte, die das I/O Control braucht. Zum Beispiel „chan“ - der Kanal, auf dem es gesendet wurde oder „bchan“ - der Kanal, auf dem es empfangen wurde (wie in dem Kapitel 3.3.1, Seite 8, beschrieben, kann man 11g Übertragungen auch in den Nachbarkanälen empfangen). Wichtig sind auch die unterstützen Übertragungsraten (Feld „rates“ und „xrate“, damit die Station weiß, mit welchen Übertragungsraten es arbeiten kann. Diese Werte sind wichtig, damit es sich mit dem Access Point verbinden kann. Alle Felder sind als Array ausgelegt, damit diese direkt in den Kernelspace kopiert werden können. 25 5.5. Umsetzung der Methode A Kapitel 5. Implementierung Abbildung 5.2: Diagramm des struct w2l2_setzeAP Als Präfix wurde „w2l2“ gewählt, da dieser Code im „Wiesbadener Wireless LAN Labor“ entstanden ist. Die Funktion bereitet zuerst die übergebenen Parameter auf: Anlegen der benötigen Struktur, und kopieren von Variablen, bzw. die Zeiger auf die übergebenen Arrays zeigen lassen. Danach wird der Scan-Cache geleert, um zu verhindern, daß ein Speicherleck entsteht. Im Treiber sind Sicherheitsmechanismen eingebaut, um eine falsche Abarbeitungsreihenfolge zu verhindern. Es könnten zum Beispiel schon „Beacon“-Pakete empfangen werden, obwohl der Treiber nicht soweit ist, überhaupt irgendwelche Pakete zu verabeiten, weil zum Beispiel die interne Struktur dafür noch nicht angelegt wurde. Daher ist ein Flag gesetzt, das dafür sorgt, das empfangene Pakete verworfen werden. Dadurch kann es dazu kommen, daß ein Access Point, den das Raoming-Programm setzen will, nicht in die Liste aufgenommen wird. Wenn dann ein Assoziierungsbefehl zu einem Access Point kommt, der nicht in der Liste ist, dann wird der Treiber einen aktiven Scan über alle Kanäle machen. Daher wurde die Funktion „w2l2_no_discard“ eingebaut. Diese sorgt dafür, daß der Treiber diesen Access Point nicht verwirft. Diese Funktion wird nun aufgerufen. Am Ende wird die aufbereitete Datenstruktur an die Madwifi Funktion „ieee80211_add_scan“ 26 Kapitel 5. Implementierung 5.5. Umsetzung der Methode A übergeben, die die Informationen dann in die interne Struktur bringt. Ein weiteres Problem besteht in der ID-Nummernvergabe des Linux-Kernels. Jeder I/O Control wird durch eine Nummer repräsentiert, die systemweit eindeutig sein muss. Diese Nummer wird dem Befehl „ioctl“ übergeben. Für die Privaten I/O Controls hat man ein Bereich von 32 IDs reserviert. Erschwerend kommt hinzu, das in den letzten beiden Bits die Übergaberichtung kodiert ist: [..] 40 #define _IOC_NONE #define _IOC_WRITE 42 #define _IOC_READ [..] 0U 1U 2U Quellcode 5.4: Linux/include/asm-generic/ioctl.h Zur Übergabe von Daten in den Kernel braucht man also eine ID, die hinten mit 102 endet. Dadurch kopiert die Funktion „ioctl“ die Daten vom User-Space in den KernelSpace. Doch es sind beim Madwifi-Treiber alle geraden Nummern vergeben. Um dieses Programm zu testen wurde daher das I/O Control „IEEE80211_IOCTL_KICKMAC“ von der ID 30 auf die 31 gelegt. Dem I/O Control „w2l2_ioctl_addscan“ wurde die freigewordene ID 30 zugeteilt, sodas die Implementierung getestet werden konnte. 5.5.3 Scannen 5.5.3.1 Empfang der Pakete Den WLAN-Header, den die Funktion „ieee80211_add_scan“ aus dem Kapitel „Übertragen der Scan-Informationen“ benötigt, kann man aber nicht aus der vorhanden Struktur aus dem Treiber auslesen. Da ein eigenes Scannen ohnehin geplant war, kann man dieses aus den 802.11 Frames auslesen. Für das Scannen braucht das Programm alle Pakete, wie diese auf dem Interface ankommen. Allerdings sind normalerweise die WLAN-Interfaces in dem „Station“-Modus. In diesem Modus können sich die Interfaces zu Access Points verbinden und normalen Netzwerkverkehr bearbeiten. Die 802.11 Management Pakete (wie zum Beispiel des Beacon-Paket) braucht der Treiber, um diese normale Operationen zu bewerkstelligen. Der Treiber gibt diese Management Pakete aber nicht an das System, oder User-SpaceProgramme, weiter. Um alle Pakete, inklusive der Management Pakete, zu empfangen, 27 5.5. Umsetzung der Methode A Kapitel 5. Implementierung muss man das Interface in den „Monitor“-Modus schalten. So agiert das Interface komplett passiv - es können keine Pakete mehr gesendet werden, aber das System und die User-Space-Programme erhalten alle Pakete, inklusive der Management-Pakete. Diese Pakete sind aber nur Datenpakete der zweiten OSI-Schicht. Eine Verbindung auf einen höheren OSI-Schicht, also Layer 4 (TCP, UDP), wie man diese normalerweise mit den Systemcalls bekommt, ist daher nicht brauchbar, da die Beacons keine IP-Pakete sind. Deswegen öffnet das Programm einen RAW Socket, und bekommt so alle empfangenen Pakete übermittelt. Allerdings bekommt man im RAW Modus zwar alle empfangene Pakete, aber in diesen Paketen stehen keine Informationen zur Empfangsqualität und Übertragungsgeschwindigkeit. Um diese Informationen zu erhalten, schicken die Treiber noch einen Header mit. Standardmäßig schickt der madwifi Treiber einen Prism-Header mit. Prism deshalb, weil dieses zuerst von den Treibern des Prism-Chipsatzes gemacht wurde. Allerdings schickt der madwifi keine Qualitätsinformationen mit, und es wurde keine Konfigurationsmöglichkeit dafür gefunden. Daher baut diese Routine auf den Radiotap-Header auf, den man mit 1 # echo 803 >/proc/sys/net/ath0/dev_type Quellcode 5.5: Radiotap Header für den MadWifi aktivieren aktivieren kann. Der Radiotap-Header hat den Vorteil, daß die Felder, die übergeben werden, in einem 32-Bit Feld markiert werden. Wenn zum Beispiel die Übertragungsrate mit übergeben wird, dann ist das Bit 0x04 gesetzt. Dieses kann man mit einfachen und schnellen BitOperationen abfragen um so schnell den Header durchzuarbeiten. Danach kommt dann das eigentliche Beacon-Paket. In [HM03] (Der Autor verwechselt manchmal „Bit“ und „Byte“) sind alle Management Frames beschrieben. Nach dieser Vorlage wertet das Programm das Frame aus und speichert die wichtigsten Werte. 5.5.3.2 Verwaltung des Scannens Um das Scannen unabhängig vom restlichen Ablauf zu machen, wurde es als separater Thread realisiert. Sobald dieser angestartet wird, wird sofort gescannt. Das Beacon Intervall liegt normalerweise bei 100ms. Daher ist in diesem Programm, wie in der Einleitung mit dem Nyquist-Shannon-Abtasttheorem erklärt, eine Wartezeit von 28 Kapitel 5. Implementierung 5.5. Umsetzung der Methode A 200ms eingebaut. Das Scannen wartet in jedem Kanal 200ms. Falls irgendwelche Pakete aufgefangen werden, werden diese auf Beacons überprüft. Sollten es Beacons sein, wird diese Information gespeichert. Sollte der Access Point aber schon bekannt sein, so wird diese Information geupdatet. Wenn die Zeit abgelaufen ist, wechselt das Programm in den nächsten Kanal, und wartet dort wieder 200ms. Wenn alle Kanäle durch sind, wird analysiert, ob ein Access Point in der Liste ist, der sich aber nicht beim letzten Durchlauf gemeldet hat. Wenn ja, wird dieser aus der Liste entfernt. Zur Zeit ist noch eine Sicherheit von drei Durchläufen eingebaut: Erst wenn der Access Point sich drei Durchläufe hintereinander nicht meldet, wird er entfernt. Um Race Conditions zu vermeiden, werden Zugriffe auf die Liste der Access Points mit Mutexen abgesichert. 5.5.4 Hauptprogramm Das eigentliche Haupt-Programm vergleicht jede Sekunde die Stärke das aktuellen Access Points mit der Stärke des am stärksten empfangenen Access Points. Wie im Konzept beschrieben, wird hier die Stärke des aktuellen Access Points aus den Scan-Informationen ausgelesen. Wenn die Stärke sich um mehr δ Einheiten 1 unterscheidet, dann roamt das Programm. Zuerst deassoziiert sich die Station vom aktuellen Access Point, dann verbindet sich das System mit dem neuen Access Point. Der Kanalwechsel findet bei der Assoziierung automatisch statt. Die Empfangsstärke schwankt im Normalfall um vier Einheiten. Daher wurden empirisch verscheidene δ zwischen acht und zwanig getestet. Bei einem δ von zehn Einheiten war das Optimum von erzwingbaren Roamen (siehe Kapitel 6.1.5.2 auf Seite 46) und stabiler Verbindung, auch wenn eine Person in dem Übertragungsweg steht, erreicht. Für Deassoziieren und Assoziieren wird der private I/O Control „IEEE80211_IOCTL_SETMLME“ genutzt. Dieses ist dazu da verschiedenste Funktionen zu einem I/O Control zusammenzufassen. 1 Alle Treiber geben die Empfangsstärke in einem eigenen Wertesystem wieder. Dieses müsste man zu dBm umrechnen, um absolute Werte zu bekommen. Dieses ist hier aber nicht notwendig, da nur die relativen Werte dieses Interfaces miteinander verglichen werden, und keine Werte aus anderen Quellen reinkommen. 29 5.5. Umsetzung der Methode A Kapitel 5. Implementierung Dieser I/O Control verlangt eine Struktur vom Typ „ieee80211req_mlme“. Im Feld „im_op“ kommt die ID, der Operation: Zum Assoziieren „IEEE80211_MLME_ASSOC“ oder zum Deassoziieren „IEEE80211_MLME_DISASSOC“. 5.5.5 Vorbereitung Am Anfang müssen die Interfaces richtig eingestellt werden. Da dieses eine einmalige Aktion ist, reicht es, vor dem Start des Roamingprogrammes dieses Script auszuführen: 1 #Zuerst alles resetten: ifconfig ath0 down 3 ifconfig ath1 down 5 wlanconfig ath0 destroy wlanconfig ath1 destroy 7 wlanconfig ath2 destroy wlanconfig ath3 destroy 9 #SuSE hat die unangenehme Eigenschaft, die vorigen Einstellungen zu speichern. Daher diese löschen: 11 rm /etc/udev/rules.d/30-net_persistent_names.rules 13 #Etwas warten, damit das System diese Änderungen auch wirklich durchführt. sleep 2 15 #Interfaces anlegen 17 wlanconfig ath1 create wlandev wifi0 wlanmode monitor wlanconfig ath0 create wlandev wifi1 wlanmode sta 19 #Etwas warten, damit das System diese Änderungen auch wirklich durchführt. 21 sleep 2 23 #Interfaces konfigurieren iwconfig ath0 essid w2l2-wrap 25 iwpriv ath0 bgscan 0 iwpriv ath1 bgscan 0 27 iwpriv ath0 hostroaming 2 29 #Etwas warten, damit das System diese Änderungen auch wirklich durchführt. sleep 2 31 #Interfaces aktivieren 33 ifconfig ath1 up ifconfig ath0 up 35 iwlist ath0 scan Quellcode 5.6: Vorbereitungsskript für Methode A 30 Kapitel 5. Implementierung 5.5. Umsetzung der Methode A Neben dem Zerstören und neu Anlegen der virtuellen Interfaces wird hier das Station Interface konfiguriert: 1 Nachdem alle eventuell vorhandenen Interfaces gelöscht worden sind, um alles komplett neu zu initzialisieren, werden die Interfaces angelegt, die gebraucht werden: Ein Monitor Interface, um das oben beschriebene Scannen zu realisiseren und ein Station Interface, um die Verbindung zum Access Point aufzunehmen. Mit „bgscan 0“ (Zeile 24, 25) und „hostroaming 2“ (Zeile 26) wird verhindert, daß der Treiber Hintergrundscans macht und eigenmächtig roamt. Das soll ja dieses Programm übernehmen. Mit „iwlist ath0 scan“ wird dafür gesorgt das das Station-Interface einmal scannt. Dieses ist notwendig, damit die Speicherstruktur für die Scandaten aufgebaut wird, und dann nachher die Scandaten mit dem I/O Control hinzuzufügen. 5.5.6 Ausgabe Die Methode A hat diese Bildschirmausgabe: Current: 0:d:88:94:e1:d3, 1, 59, Best: 0:d:88:94:e1:d3, 1, 59, Current: 0:d:88:94:e1:d3, 1, 60, Best: 0:d:88:8c:9c:ba, 13, 72, 0.010932s Current: 0:d:88:8c:9c:ba, 13, 66, Best: 0:d:88:8c:9c:ba, 13, 66, 2 (2): OK (2): Change.. (2): OK Quellcode 5.7: Ausgabe der Methode A In der ersten Spalte steht, mit welchen Access Point die WLAN Karte Verbunden ist, und auf welchem Kanal. Danach die Empfangsstärke dieses Access Points. Danach steht, welcher Access Point der aktuell stärkste ist, mit dem Kanal und der Empfangsstärke. Am Ende zeigt er an, ob es OK so ist, oder der Roaming Vorgang durchgeführt wird. Die Zahl danach zeigt an, wie lange das Programm in den Systemcalls war - in Sekunden. Diese Zeit ist aber für das Roamen nicht repräsentativ, da das eigentliche Assoziieren asynchron abläuft. 1 Station Interface / Station Modus: Der „normale“ Modus, mit dem sich eine WLAN-Karte zum Access Point verbinden kann und dann als normale Netzwerkkarte agiert. 31 5.6. Umsetzung der Methode B 5.5.7 Kapitel 5. Implementierung Probleme Die Methode A hat zwei Probleme: • Übertragung der Scaninformation Damit die Scan-Information zum Netzwerkinterface übertragen wird, musste der Treiber verändert werden, um ein extra I/O Control einzufügen. Damit ist diese Lösung treiberabhängig. Das Problem, das nur eine der wenigen I/O Control IDs verbraucht und ein anderes ID „verdrängt“ wird, ist hingegen mit Mehraufwand lösbar. • Abwesenheit vom Netz Auch wenn die Zeit, die das Roamen verbraucht, sehr kurz ist, so ist das System kurze Zeit vom Netz getrennt, und verliert unter Umständen wichtige Pakete. 5.6 Umsetzung der Methode B Um die Probleme der Methode A zu umgehen, wird eine andere Roaming-Strategie implementiert: Beide Karten wechseln sich mit dem Scannen und Netzwerk halten ab. Zuerst Hält Interface A das Netzwerk, und Interface B scannt. Sobald geroamt wird, baut Interface B die Verbindung auf, und Interface A lässt die Verbindung fallen. Jetzt scannt Interface A. Weitere Details siehe im Konzept, Abschnitt 4.4 auf Seite 18. 5.6.1 Unterschiede zwischen Variante I und II Im Konzept, Kapitel 4.4, Seite 18 werden zwei verschiedene Varianten betrachtet. Aus Implementationssicht unterscheiden sich beide Varianten nur gering. In der Vorbereitung leicht und im eigentlichem Roaming muss bei der Variante II nur ein weitere Funktion aufgerufen werden, die die IP-Adresse abändert. Daher werden hier beide Varianten zusammen betrachtet. 5.6.2 Scannen Das Scannen wird hier mit den im Treiber eingebauten Methoden realisiert. So muss man nicht die Scan-Informationen übertragen, sondern diese liegen bei Bedarf sofort vor. Außerdem sind keine Änderungen des Treibers notwendig. 32 Kapitel 5. Implementierung 5.6. Umsetzung der Methode B Nachteil ist, daß man sich auf die Scanroutine des Treibers verlassen muss, man hat fast keine Kontrolle über diesen Vorgang. Dazu kommt noch, daß der MadWifi die Scaninformationen sehr zügig (<1/2 Sekunde) rausgibt, obwohl er nicht alle Kanäle gescannt hat. Diese Informationen sind daher unvollständig. Um dieses zu umgehen, wird einmal das Scannen sofort nach dem Assoziieren angestartet, diese Informationen werden aber verworfen. Zusätzlich wird eine fünf-sekündige Pause eingelegt. Damit bekommt man nach jedem Scan zwar teilweise „veraltete“ Informationen, und zwar die Informationen vom vorigen Scan. Da in dieser Arbeit aber nicht davon ausgegangen wird, das sich die mobilen Station sehr schnell bewegen, ist diese Lösung akzeptabel. 5.6.3 Auslesen der Scandaten Das Auslesen und Verarbeiten der Scandaten ist nach den Wireless Extension for Linux [Tou], mit leichten Anpassungen, gemacht worden. Nachdem der Scanauftrag abgeschickt wurde, wird alle 41 Sekunden nachgefragt, ob schon Ergebnisse vorliegen (Polling Betrieb1 ). Sobald Ergebnisse vorliegen, muss man prüfen, ob der Buffer, den man zur Verfügung stellt, ausreicht. Wenn nicht, dann könnte der Treiber zurückgeben, wie groß der Buffer sein muß. Wenn der Treiber diese Information gibt, dann den Buffer mit dieser Größe anlegen. Ansonsten wird der Buffer immer verdoppelt, bis dieser ausreicht. Schlüssel Wert Access Point 00:0D:88:94:E1:D3 ESSID w2l2_wrap Kanal 1 Empfangsstärke 64 Unterstütze Übertragungsraten 48, 56 Access Point 00:0D:88:8C:9C:BA ESSID w2l2_wrap Kanal 13 Empfangsstärke 53 Unterstütze Übertragungsraten 48, 56 1 Der Madwifi schickt auch Events [sca]. Allerdings habe ich bis auf zwei Posts, bei denen dieses erwähnt wird, und den Quellcode vom wpa_supplicant nichts gefunden. Im Quellcode vom wpa_supplicant habe ich es in der zur Verfügung stehenden Zeit nicht gefunden. Anfragen in diversen Chats waren erfolglos. 33 5.6. Umsetzung der Methode B Kapitel 5. Implementierung Tabelle 5.1: Beispiel des logischen Aufbaus der Scan-Daten In Tabelle 5.1 ist ein Beispiel der logische Aufbau der Scan-Daten skizziert. Dieses ist ein flache Tabelle mit einer Menge von Schlüssel-Wert-Paaren. Zu jedem Access Point existieren eine Menge an Schlüsseln. Diese werden für jeden Access Point wiederholt. Die einzige Möglichkeit zu erkennen, wo die Daten eines neuen Access Points anfangen, ist der Schlüssel „Access Point“. In „interpretiere_scan“ wird daher diese Tabelle sequenzell durchgegangen, bis diese leer ist, und jede Zeile einzeln geholt. Wichtige Werte werde in Zwischenvariablen gespeichert. Bei dem Schlüssel „Access Point“ wird ein Gruppenwechsel gemacht, und die zwischengespeicherten Werte ausgewertet, und bei Bedarf gespeichert. 5.6.4 Hauptprogramm Das Hauptprogramm ist ganz einfach. Jede Sekunde wird gescannt und die Daten interpretiert. Wenn ein anderer Access Point deutlich stärker ist, die Empfangsstärke sich also um mehr als zehn Einheiten (Fußnote 1 auf Seite 29) unterscheidet, assoziiert er zuerst das ScanInterface mit dem neuen Accesspoint, und deassoziiert dann das bisherige Netz-Interface. Danach werden beide getauscht. 5.6.4.1 Variante II Sollte Variante II eingesetzt werden, so wird zwischen dem Assoziieren und Deassoziieren die IP-Adresse der Interfaces geändert. Das alte Netz-Interface bekommt eine IP, die nicht im normalem Netz vorhanden ist. Wenn zwei Interfaces die gleiche IP haben, bzw. im gleichen Subnet sind, so kollidieren die Routinginformationen, und es wird nur über ein Interface geroutet, egal ob verbunden ist1 , oder nicht. Auch kann man (unter Linux) diese Route nicht löschen. Daher wird beim Scan-Interface eine nicht vorhandene IP gesetzt, und das Netz-Interface erhält die richtige IP. Beim Roamen wird auch dieses umgeschaltet. 1 LAN: Kabel im Port, WLAN: Verbindung zum Access Point besteht 34 Kapitel 5. Implementierung 5.6.5 5.6. Umsetzung der Methode B Vorbereitung Wie in Kapitel 5.5.5 müssen am Anfang die Interfaces richtig eingestellt werden. Dieses wird durch dieses Script erledigt (je nach Variante die auskommentierten Befehle aktivieren!). 1 #Zuerst alles resetten: ifconfig ath0 down 3 ifconfig ath1 down 5 #Bei Variante I: #ifconfig br0 down 7 #brctl delbr "br0" 9 wlanconfig ath0 destroy wlanconfig ath1 destroy 11 wlanconfig ath2 destroy wlanconfig ath3 destroy 13 wlanconfig ath4 destroy wlanconfig ath5 destroy 15 #SuSE hat die unangenehme Eigenschaft, die vorigen Einstellungen zu speichern. Daher diese löschen: 17 sleep 1 rm /etc/udev/rules.d/30-net_persistent_names.rules 19 #Interfaces konfigurieren 21 #Bei Variante II 23 #ip link set dev wifi0 down #ip link set dev wifi1 down 25 #ip link set addr 00:80:48:3D:EE:67 dev wifi0 #ip link set addr 00:80:48:3D:EE:67 dev wifi1 27 wlanconfig ath create wlandev wifi1 wlanmode sta -bssid 29 wlanconfig ath create wlandev wifi0 wlanmode sta -bssid 31 #Etwas warten, damit das System diese Änderungen auch wirklich durchführt. sleep 1 33 iwpriv ath0 bgscan 0 35 iwpriv ath1 bgscan 0 iwpriv ath0 hostroaming 2 37 iwpriv ath1 hostroaming 2 39 iwconfig ath0 essid w2l2-wrap iwconfig ath1 essid w2l2-wrap 41 #Bei Variante I 43 #brctl addbr "br0" #brctl addif "br0" ath0 45 #brctl addif "br0" ath1 35 5.6. Umsetzung der Methode B Kapitel 5. Implementierung 47 #Etwas warten, damit das System diese Änderungen auch wirklich durchführt. sleep 2 49 #Interfaces aktivieren 51 ifconfig ath0 up ifconfig ath1 up 53 #Bei Variante I #ifconfig br0 192.168.1.100 up Quellcode 5.8: Vorbereitungsskript für Methode B Im Unterschied zur Vorbereitung von Methode A wird hier kein Monitor Interface angelegt. Dafür werden bei Variant I die Brücke angelegt und bei Variante II die MACAdressen der wifi-Interface gleichgesetzt 5.6.6 Ausgabe Die MethodeB hat diese Bildschirmausgabe: 1 3 scannen: (ath0,2) aktuell: 00:0D:88:94:E1:D3(60), best: 00:0D:88:8C:9C:BA(70) OK scannen: (ath0,2) aktuell: 00:0D:88:94:E1:D3(60), best: 00:0D:88:8C:9C:BA(71) roaming OK, warte..scannen: scannen: (ath1,2) aktuell: 00:0D:88:8C:9C:BA(59), best: 00:0D:88:94:E1:D3(68) OK Quellcode 5.9: Ausgabe der Methode B In der ersten Klammer steht das Scan-Interace mit der der Gesamtanzahl der empfangenen Access Points. Danach der Access Point, mit dem der aktuell verbunden ist, mit der Empfangsstärke. Anschließend der beste zu empfangene Access Point, auch mit Empfangsstärke. Am Ende zeigt das Programm an, ob es OK so ist, oder der Roaming-Vorgang durchgeführt wird. Das „scannen“ kommt dadurch, daß das Programm - wie im Kapitel 5.6.2 auf Seite 32 erläutert - direkt nach dem Deassoziieren einen Scan anstartet, und die Ergebnisse verwirft. Die Methode B II wird als erste Zeile dieses ausgeben: 1 scannen: (ath1,2) aktuell: 00:00:00:00:00:00(-1), best: 00:0D:88:8C:9C:BA(67) roaming SIOCSIFNETMASK: Die angeforderte Adresse kann nicht zugewiesen werden Quellcode 5.10: Ausgabe der Methode B II, Fehlermeldung 36 Kapitel 5. Implementierung 5.6. Umsetzung der Methode B Diese Fehlermeldung kommt daher, daß die IP-Adressen zum ersten Mal zugewiesen werden. Da dieses nur einmal und deterministisch kommt, außerdem die Verarbeitung nicht stört, wurde auf eine weitere Analyse und Fehlerbehebung verzichtet. 5.6.7 Probleme Diese Methode hat ein Problem: Dadurch daß es zwei Interfaces sind, hat jedes Interface seine eigene, unabhängige Scantabelle mit eigenen Werten. So kann es vorkommen, daß Interface A der Meinung ist, daß Access Point A stärker ist. Interface B ist aber der Meinung, Access Point B sei stärker. So kann es dazu kommen, daß eine Weile hin und her geschaltet wird, bis bei einem Interface die Werte korrigiert sind. Durch das Fast-Roaming sollte dieses „Fehlverhalten“ nur eine unschöne Eigenschaft sein, und keine Auswirkung auf höhere Protokolle und deren Anwendung haben. Daher ist es das beste, dieses zu ignorieren. Außerdem ist in den Scanroutinen des Treibers eine gewisse „Trägheit“ eingebaut, um grobe Schwankungen auszugleichen. Daher braucht das Programm - im Gegensatz zur Methobe A - länger, bis es erkennt, daß eine Station nur noch sehr schwach sendet. 37 5.6. Umsetzung der Methode B Kapitel 5. Implementierung 38 Kapitel 6 Messung Das Thema in dieser Arbeit ist das schnelle Roamen. Die Station muss also so schnell wie möglich von einem Access Point zum anderen roamen. In der Automatisation ist ein Maximalzeitraum von 10ms gefordert. In [sie] beschreibt Siemens ein Netzwerk, das Antwortzeiten bis 10ms garantiert. Optimale Roamingzeiten für Voice over IP konnten nicht in Büchern gefunden werden. In [Bad04] werden gute Zeiten für eine „Ende-zu-Ende-Verzögerung“ mit maximal 150ms angegeben. Somit ist VoIP unkritischer als Automatisationsanwendungen. 6.1 Erläuterung der Messung 6.1.1 Visualisierung mittels WI-Spy Zur Visualisierung von des Traffics auf dem 2,4 GHz Band wird in diesem Kapitel Screenshots vom WI-Spy eingesetzt. Der WI-Spy ist ein USB-Stick, mit dessen Hilfe die Sendestärken in den einzelnen Frequenzen des 2,4GHz Bandes anzeigt werden können. Der Screenshot vom WI-Spy Abb.: 6.1 ist dreigeteilt: Oben ein Zeitlicher Verlauf: Die Y-Achse der Graphik ist Zeit, die vorbei ist. Also ist y = 0 „jetzt“. Je roter die Farbe, desto stärker wurde gesendet. In der Mitte ist eine Ansicht: Stärke des Signals. Je stärker, desto weiter oben wird gezeichnet. Die Farbcodierung ist hier „Nutzung“: Die Stärken, die rot gezeichnet sind, 39 6.1. Erläuterung der Messung Kapitel 6. Messung Abbildung 6.1: Screenshot WI-Spy. Normale Nutzung des Kanal 6 (g) kommen häufig vor. Daher sehr gut zu erkennen: Es gab zum Aufzeichnungszeitpunkt drei Stationen. Die Kurve, die ganz oben gezeichnet ist, stammt von dem Laptop eines Kommilitonen. Dieser saß im gleichen Raum und surfte zu diesem Zeitpunkt im Internet. Die beiden anderen Kurven sind einmal der Access Point, und eine andere Station. Unten ist die augenblickliche Nutzung (weiße Linie). Wobei man beachten muss, dass der WI-Spy nicht alle Kanäle gleichzeitig misst, sondern in sehr kurzen Abständen zwischen den Kanälen wechselt. Blau ist der Bereich, dessen Stärke in der letzten Zeit erreicht wurde. Grün ist der Bereich, der fast immer überschritten wird, also das „Hintergrundrauschen“. 6.1.2 Ort Diese Messungen werden im w2l2 (Wiesbadener Wireless LAN Labor) durchgeführt. Abbildung 6.2: Logo des w2l2 6.1.3 Methodik, Messverfahren Um die Roaming-Zeit nachzuweisen, werden zwei Messungen vorgenommen: 40 Kapitel 6. Messung 6.1. Erläuterung der Messung • passives monitoren Einer der WRAPs wird zum monitoren des WLAN-Traffics verwendet. Da es zwei Interfaces hat, kann jedes Interface auf einem anderen Kanal monitoren. Dazu wird der ethereal zweimal gestartet, und die empfangenen Pakete für eine spätere Auswertung mit Hilfe des Wireshark 1 gespeichert. Die Leistung der WRAP ist für Kanäle, die nicht unter starker Last (>50% Maximalen Nettotransfervolumen) sind, ausreichend. Obwohl beide Sessions per Script fast gleichzeitig gestartet werden, so ist ein minimaler Versatz in der gemessenen Zeit bei beiden Programminstanzen. Um diesen Versatz zu messen, werden einige Broadcastpaket genommen, die vom Hauptrechner generiert werden und auf das Backbone geschickt werden. Daher ist dieses Paket quasi gleichzeitig in beiden WLAN Kanälen. Um dieses Paket einfach zu generieren, wird ein Ping auf eine nicht-existente IPAdresse (192.168.1.254) abgeschickt. Die ARP-Pakete, die der Ping erzeugt, kann man einfach im Wireshark erkennen. • aktives UDP Senden Um zu messen, wie lange lange das Netz wirklich braucht, bis es die Pakete der siebten Schicht (Anwendungsschicht) wieder richtig leitet, wurde ein spezielles Programm geschrieben. Dieses Programm versendet alle fünf Millisekunden per UDP eine fortaufende Zahl (1, 2, 3, ...). Dieses wird vom gleichen Programm auf der Gegenseite empfangen. Sollten nun Lücken im Zahlen-Strom sein, so gibt das Programm diese Lücken aus. Anhand der Anzahl der verlorenen Pakete kann man auf die Zeit schließen, wie lange das Netz wirklich braucht, bis es das Roaming akzeptiert hat. Weiteres siehe im Anhang Kapitel 9.2, Seite 80. Die Messung wird für jede Methode zweimal gemacht. Der einzige Unterschied ist, in welche Richtung das UDP-Senden gerichtet ist. – Von WLAN an Fest Das Programm wird auf der Roaming-Test-WLAN-Station im Sendemodus gestartet. Es sendet an einem Rechner im WLAN Backbone. – Von Fest an WLAN Das Programm wird auf einem Rechner im WLAN Backbone im Sendemodus 1 ethereal ist eine Konsolenanwendung, daher auf dem WRAP lauffähig. Zur Auswertung wird aber der Wireshark herangezogen, da dieser mit einer GUI übersichtlicher und einfacher zu handhaben ist. 41 6.1. Erläuterung der Messung Kapitel 6. Messung gestartet. Es sendet an die Roaming-Test-WLAN-Station. Aufgrund der Kernel Timingproblematik (wie es im Anhang zu UDP-Test, Kapitel 9.2, Seite 80 beschrieben ist) muss für das Programm UDP-Send im Messteil „Von Fest an WLAN“ ein spezieller Kernel verwendet werden. Um aber nicht die Stabilität des Hauptsystems zu gefährden, wird das Programm für diese Aufgabe von einem dritten WRAP gestartet, der mit diesen Kernel versehen wurde. 6.1.4 Störgrößen An der FH gibt es viele Störgrößen: • andere WLANs Im wl2l kann man mehrere WLANs empfangen, die einen Kanal belegen: – FBI-WLAN Das ist das WLAN des früheren Fachbereichs Informatik, jetzt vom Studiengang allgemeine Informatik des Fachbereichs DCSM (Design, Informatik, Medien). Die Access Points, die im w2l2 zu empfangen sind, senden auf den Kanälen sechs und elf. Wobei der der Access Point auf dem Kanal elf nur sehr schwach zu empfangen ist. – Dopsy Das benachbarte Labor für verteile Systeme (Dopsy) sendet auf Kanal drei. Allerdings ist hier kein Verkehr zu verzeichnen, sodas es nicht stört. – CampusWLAN Das ist ein campusweites WLAN, das erst im Sommersemester 2006 eingerichtet wurde. Der hier zu empfangene Access Point sendet auf Kanal fünf. – Adhoc Netze Auch kann man hin und wieder Adhoc Netze beobachten, die aber nicht so häufig sind. • Mitbenutzer Während der Test verbanden sich einige Leute mit den Test Access Poins. Alle Schutzmaßnahmen, wie zum Beispiel MAC-Filter, sind kein wirkliches Hinderniss, stören aber dafür die Messung, da dieses weitere mögliche Fehlerquellen sind. 42 Kapitel 6. Messung 6.1. Erläuterung der Messung Da aber auf allen Stationen nur notwendige Ports offen sind, war es bisher das beste, diese „Mitbenutzer“ zu ignorieren. • Mikrowellen Es gibt in dem Gebäude eine Mikrowelle, die scheinbar ein kleines Leck hat. Es kommt hin und wieder mal vor, daß eine Verbindung nur möglich ist, wenn man die beiden Stationen in Abstand von wenigen Zentimetern hinstellt. Dieses kommt aber selten vor, sodas es bisher das beste war, einige Minuten zu warten. Die anderen Mikrowellen verschlechtern den Empfang nur unwesentlich, wenn eine aktiv ist. Abbildung 6.3: Screenshot WI-Spy. Störung durch eine Mikrowelle Alle diese Störgrößen sorgen für einen schlechten Empfang, und teilweise viele verlorene Pakete. Die Verlustrate erreicht manchmal ein Prozent. Ein normales Nutzen des WLAN, zum Beispiel um zu surfen, ist immernoch möglich, da das TCP-Protokoll verloren gegangene Pakete neu anfordert. Der Paketverlust hat höchstens in einem etwas langsameren Aufbau der Webseite zur Folge. Messungen sind aber nicht mehr möglich, da das UDPTest-Programm zu viele Lücken ausgibt, die man einem Roaming-Ereignis nicht mehr zuordnen kann. Es wäre zwar möglich, in den Dump-Dateien danach zu suchen, das hat aber gegenüber der Alternative einen zu hohen Aufwand. Alternativ kann man am Freitag Abend messen. Da sind kaum noch Lehrveranstaltungen, und die meisten Leute sind im Wochenende. Daher sind zu diesem Zeitpunkt die Kanäle frei und fast ohne Störungen zu nutzen. 43 6.1. Erläuterung der Messung 6.1.5 Kapitel 6. Messung Messaufbau Abbildung 6.4: Messaufbau Als Access Points kommen zwei DLink DWL-2000AP+ zum Einsatz. Diese wurden in einer Entfernung von einigen Metern zueinander aufgestellt. Mittig davon wird der Roaming-Test-WRAP (WRAP 1) aufgestellt. Ebenso der Monitor-WRAP (WRAP 2). Für die Messung der Methode A kommt der WRAP beta zum Einsatz. Da die Methode A aber einen modifizierten Treiber braucht, wird für die Messung der Methode B der WRAP delta mit einem unmodifizierten madwifi Treiber verwendet. Diese beiden kommen mittig zwischen die Access Points. Von diesen wird der WRAP, der bei der Messung nicht testet, als Scanner eingesetzt. Ein dritter WRAP (WRAP 3), angeschlossen am WLAN-Backbone, sorgt für das UDP-Senden in der Messvariante „Von 44 Kapitel 6. Messung 6.1. Erläuterung der Messung Fest an WLAN“. Der Steuerrechner verbindet sich mittels SSH über das Steuersubnet an die WRAPs. Von dort aus wird alles gesteuert. Um die MAC-Adressen in den Dump-Dateien einzelnen Geräten zuordnen zu können, hier eine Liste aller MAC-Adressen: Gerät MAC-Adresse WRAP alpha LAN WLAN 1 WLAN 2 00:0D:B9:05:4F:F0 00:80:48:3D:5B:77 00:0B:6D:4E:DF:36 WRAP beta LAN WLAN 1 WLAN 1 00:0D:B9:05:45:A4 00:80:48:3F:5B:7E 00:0B:6D:4E:DD:6D WRAP gamma LAN WLAN 1 WLAN 2 00:0D:B9:05:50:08 00:80:48:3D:5B:66 00:0B:6D:4E:DD:51 WRAP delta LAN WLAN 1 WLAN 2 00:0D:B9:05:45:B8 00:80:48:3D:5B:67 00:0b:6D:4E:D9:D0 DLink AP 1 00:0D:88:94:E1:D3 DLink AP 2 00:0D:88:8C:9C:BA Hauptrechner LAN „Backbone“ 00:50:BA:5D:2F:DD „Steuer“ 00:02:B3:1A:66:E9 Virtuelle MAC 1 „Methode B I b“2 „Methode B II“ 00:80:48:3D:EE:67 00:80:48:3D:EE:67 Tabelle 6.1: Liste aller MAC Adressen aller Geräte 1 Bei den Methoden B I b und B II werden die MAC-Adressen der Karten geändert. Dieses sind die geänderten Adressen. 2 Die Methode B I b wird in Kapitel 6.3, Seite 54 näher beschreiben. 45 6.1. Erläuterung der Messung 6.1.5.1 Kapitel 6. Messung Konfiguration Da der Kanal 6 durch das FBI-WLAN belegt und genutzt ist, sowie der Kanal 5 vom Campus-WLAN, wird der Access Point eins auf den Kanal eins und der Access Point zwei auf den Kanal dreizehn gelegt. Als ESSID wird „w2l2_wrap“ verwendet. Eine Nutzung der WRAPs als Access Points hat sich als nicht optimal herausgestellt: Um volle Access Point Funktionalität zu gewährleisten, muss das LAN Interface mittels einer virtuellen Brücke [vBr] mit dem WLAN Interface gekoppelt werden. Die Bridge Software ist aber nicht darauf optimiert, mit ständig wechselnden Stationen zu arbeiten. Daher braucht die Software zu lange, bis sie erkennt, daß eine Station jetzt über einen anderen Weg zu erreichen ist. 6.1.5.2 Erzwingen des Roamings Während der Durchführung der Messung muss erzwungen werden, daß der Roaming-Test WRAP sich mit einem anderen Access Point verbindet. Da aber im Labor nicht genügend Fläche besteht, um ein Roaming mittels „laufen“ auszulösen wird das Roaming mittels „manuellem“ Abschwächen der Signale erzwungen. Zum Beispiel wird die Antenne des Access Points, von dem sich die Station abmelden soll, mit der Hand zugehalten, hinter einem Rechner „versteckt“ oder mit einer Aluminiumfolie abgeschirmt (Abb. 6.5) (Dank an Frank Meffert). Ein Ändern der Sendestärke wie es z.B. bei Linux Access Points möglich wäre, ist bei den DLink Access Poins nicht machbar, da dieser danach das Gerät neu startet. Wenn alles funktioniert, dann sieht die Kanalbelastung wie in der Abb. 6.6 aus. Deutlich ist zu erkennen, daß der Traffic zwischen den Kanälen 1 und 13 wechselt. Auf diese Weise wird mindestens sechs mal ein Roaming erzwungen. 6.1.6 Durchführung Folgende Schritte in dieser Reihenfolge sind notwendig, um eine Messung durchzuführen: 46 Kapitel 6. Messung 6.1. Erläuterung der Messung Abbildung 6.5: Folienabschirmung der Antenne • Vorbereitung Zuerst verbindet man zwei SSH-Session zum WRAP, auf dem das Roaming getestet werden soll. In der ersten Session wird zuerst das entsprechende Start-Skript, wie es in der Einleitung beschrieben ist, ausgeführt. Dieses sorgt dafür, daß die Interfaces im richtigen Modus aktiv sind. Wenn dies die Messung für den Messfall „UDP-Pakete von Fest nach WLAN“ ist, dann wird in der zweiten Session das Programm UDP-Test ohne Parameter gestartet. Wenn dies aber die Messung für den Messfall „UDP-Pakete von WLAN nach Fest“ ist, dann wird das Programm UDP-Test auf dem Hauptrechner ohne Parameter gestartet. • Starten der Aufzeichnung Eine zweite Verbindung wird zu dem anderen Roaming-Test WRAP geöffnet, und darauf dieses Script gestartet: 1 # zuerst alle eventuell vorhandenen Interfaces löschen wlanconfig ath0 destroy 3 wlanconfig ath1 destroy wlanconfig ath2 destroy 5 wlanconfig ath3 destroy wlanconfig ath4 destroy 7 wlanconfig ath5 destroy 47 6.1. Erläuterung der Messung Kapitel 6. Messung Abbildung 6.6: Screenshot WI-Spy, Traffic der Messung: Methode A, UDP-Pakete werden von Festnetz an das WLAN-System gesendet 9 #Etwas warten, damit das System diese Änderungen auch wirklich durchführt. sleep 1 11 # Dump-Dateien des letzten Durchgangs löschen 13 rm kanal1* 15 #SuSE hat die unangenehme Eigenschaft, die vorigen Einstellungen zu speichern. Daher diese löschen: rm /etc/udev/rules.d/30-net_persistent_names.rules 17 19 #Interfaces anlegen wlanconfig ath create wlandev wifi0 wlanmode monitor 21 wlanconfig ath create wlandev wifi1 wlanmode monitor 23 #Etwas warten, damit das System diese Änderungen auch wirklich durchführt. sleep 1 25 #Interfaces konfigurieren 27 iwconfig ath0 channel 1 iwconfig ath1 channel 13 29 #Etwas warten, damit das System diese Änderungen auch wirklich durchführt. 31 sleep 10 33 #Interfaces aktivieren ifconfig ath0 up 35 ifconfig ath1 up 37 #Etwas warten, damit das System diese Änderungen auch wirklich durchführt. sleep 2 39 #Den Dump anstarten 48 Kapitel 6. Messung 6.1. Erläuterung der Messung 41 tcpdump -i ath0 -s 0 -w kanal1 & tcpdump -i ath1 -s 0 -w kanal13 & Quellcode 6.1: Dump des Netzwerkverkehrs auf dem WLAN Dieses Script speichert nun den ganzen Verkehr auf den Kanälen eins und dreizehn. Auf dem Hauptrechner wird noch zusätzlich mit dem Wireshark der Verkehr auf dem WLAN Backbone aufgezeichnet. • Broadcast Pakete generieren Jetzt wird auf dem Hauptrechner ein Ping an 192.168.1.254 gestartet und nach einigen Sekunden abgebrochen. Dieses generiert ARP Pakete, die man wie oben Beschrieben zum Synchronisieren der Zeiten verwenden kann. • UDP-Pakete senden Wenn das der Messfall „UDP-Pakete von Fest nach WLAN“ ist, dann wird das UDP-Senden von dem WRAP 3 aus an die WLAN Station gestartet. Ansonsten von der WLAN-Station an den Hauptrechner. • Roaming starten und durchführen Jetzt wird das eigentliche Roaming auf der WLAN Station angestartet. Anfangs hat diese Station noch keine Verbindung. Daher wird er sich sofort verbinden. Sobald die Station verbunden ist, wird das Programm UDP-Test ausgeben, daß es Pakete empfängt. Jetzt wird das Roamen sechs mal nach Kapitel 6.1.5.2 erzwungen. • Beenden Am Ende werden alle Programme beendet (abgeschossen), und die Ergebnisse gespeichert. Diese Rohdaten sind auf der beiliegenden CD im Verzeichnis „Messung“. 6.1.7 Erläuterung des Vorgehens bei der Auswertung Alle Auswertungen der Messungen sind nach dem gleichen Schema aufgebaut. Zu allen Methoden gibt es wie oben beschrieben zwei Messvariationen: Einmal wird das UDPSenden vom Backbone an das WLAN angestoßen (Netz → WLAN). Das andere Mal von der WLAN-Station an das Backbone (WLAN → Netz). Zu jeder dieser Variante wird die komplette Messreihe durchgeführt. Zuerst wird bei jeder Messung die Ausgabe vom UDP-Test ausgewertet. Wieviele Pakete verloren gegangen sind, und was das für ungefähre Zeiten sind. 49 6.2. Messung der Methode „A“ Kapitel 6. Messung Danach werden die tcp-dump Dateien ausgewertet: Da die Zeiten in den dump Dateien beider Kanäle (eins und dreizehn) nicht syncron sind, muss zuerst ein Korrekturwert gebildet werden. Dazu werden für beide Kanäle die Zeiten der ARP-Pakete, die das „ping 192.168.1.254“ ausgelöst hat, notiert. Dann wird die Differenz der Zeiten ausgerechnet. Zu allen Differenzen wird der arithmetischer Mittelwert gebildet: max P mw = di i=1 max Dieser Wert wird in den folgenden Auswertung zu dieser Messvariante auf die Zeiten des Kanal dreizehn aufaddiert. Als nächstes werden die Dateien nach dem Roaming durchsucht. Um nicht den Überblick zu verlieren, sollte man im Wireshark zumindest die Beacons, Probe-Request und Probe-Response Pakete ausblenden: 1 !(wlan.fc.type_subtype == 8) && !(wlan.fc.type_subtype == 0x04) && !(wlan.fc.type_subtype == 0x05) Quellcode 6.2: Wireshark Filter zum ausblenden der Beacons Zu jedem Roamingvorgang wird notiert, von und zu welchem Kanal er wechselt. Dazu wird der genaue Zeitpunkte vom „Deassoziation“ Paket und vom ACK des „Assoziation Response“ Paketes notiert. Dann wird die Differenz ausgerechnet, wobei die Differenz um den vorher ermittelten Mittelwert bereinigt ist. So hat man die reine Zeit, die das Roamen im Layer zwei braucht. Bei Bedarf werden noch die Nummern des letzten UDP-Pakets und des ersten UDPPakets vor und nach dem Roamen notiert. Anschließend folgt eine kurze Auswertung ohne Beurteilung. Eine Beurteilung ist im nächsten Kapitel verfasst. 6.2 Messung der Methode „A“ Es wird die Methode A „Dezidiertes Scannen“ gemessen. 50 Kapitel 6. Messung 6.2.1 6.2. Messung der Methode „A“ UDP-Versand von Festnetz auf die WLAN-Station Die UDP-Pakete werden von einem Rechner im Festnetz auf das Roaming-WLAN System geschickt. Es wurde sechs Mal das Roamen erzwungen. 6.2.1.1 Auswertung UDP-Test 1 wrap-beta:~ # ./_UDP-test Empfangsmodus 3 Öffne Socket.. Empfange, habe aber die ersten 473 verpasst 5 [..] Bei 14494, Lücken: {[1-472(472)], [4870-4871(2)], [6989-6991(3)], [8287-8289(3)], [9431-9433(3)], [10406-10407(2)], [12685-12686(2)], } Quellcode 6.3: Methode A, Netz → WLAN. Ausgabe UDP-Test Die erste Lücke (1-472) entstand dadurch, daß die Station erst später mit dem WLAN verbunden wurde, nachdem das Senden angestartet wurde. Es gab keine sonstigen Paketverluste wegen der Luftschnittstelle. Alle Paketverluste sind auf das Roamen zurückzuführen. Maximal 3 verlorene Pakete (entspricht 15ms), minimal 2 verlorene Pakete (entspricht 10ms). 6.2.1.2 Auswertung Ethereal Zuerst die Analyse des Versatzes: ARP Paket Zeitpunkt Kanal 1 Zeitpunkt Kanal 13 Differenz 1 1.631064 1.453318 0.177746 2 2.630848 2.453097 0.177751 3 3.630569 3.452967 0.177602 Tabelle 6.2: Messung: Methode A, Netz → WLAN. Versatz der dump Dateien Das arithmetische Mittel ist 0,177700. Dieses wird zur Korrektur der Zeiten bei Kanal 13 verwendet (aufaddiert). 51 6.2. Messung der Methode „A“ Kapitel 6. Messung Nr Kanal Deassoziation Assoziation Differenz 1 13 → 1 36.770743 36.962956 0.014513 2 1 → 13 49.979930 49.816818 0.014588 3 13 → 1 57.824868 58.018091 0.015523 4 1 → 13 65.025919 64.861522 0.013303 5 13 → 1 70.866188 71.059666 0.015778 6 1 → 13 85.075003 84.911742 0.014439 Tabelle 6.3: Messung: Methode A, Netz → WLAN. Roaming Zeiten Layer 2 Minimale Zeit: 13,3ms, Maximale Zeit: 15,7ms. Arithmetisches Mittel: 14,7 ms. 6.2.2 UDP-Versand von der WLAN-Station auf das Festnetz Die UDP-Pakete werden von dem WRAP 3 auf die roamende WLAN-Station gesendet. Es wurde zwölf Mal das Roamen erzwungen. 6.2.2.1 Auswertung UDP-Test Öffne Socket.. 2 Empfange, habe aber die ersten 330 verpasst [..] 4 Bei 26124, Lücken: {[1-329(329)], [2328-2493(166)], [2662-2820(159)], [1] [4372-4536(165)], [5620-5784(165)], [6541-6706(166)], [7664-7820(157)], [13768-13928(161)], [15202-15361(160)], [20998-21146(149)], [22076-22240(165)], [22574-22575(2)], [25221-25385(165)], } Paketverlust: Erwarte 26335, empfange 26499=57824868+177700 Quellcode 6.4: Methode A, WLAN → Netz. Ausgabe UDP-Test Der letzte Paketverlust beträgt 26499 − 26335 + 1 = 165. Es gibt drei Pakete, die durch schlechte Übertragungsqualität verlorengegangen sind. Einmal [1], und dann (2) bei 22574-22575. Minimaler Paketverlust: 149, Maximaler Paketverlust: 165. Das entspricht: 715ms bis 825ms. 52 Kapitel 6. Messung 6.2.2.2 6.2. Messung der Methode „A“ Auswertung Ethereal Zuerst die Analyse der Versatzes: ARP Paket Zeitpunkt Kanal 1 Zeitpunkt Kanal 13 Differenz 1 3.265747 2.831926 0.433821 2 4.265464 3.831790 0.433674 3 5.265249 4.831574 0.433675 Tabelle 6.4: Messung: Methode A, WLAN → Netz. Versatz der dump Dateien Das arithmetische Mittel ist 0,433723. Dieses wird zur Korrektur der Zeiten bei Kanal 13 verwendet (aufaddiert). Nr Kanal Deassoziation Assoziation Differenz 1 13 → 1 22.112006 22.561537 0.015808 2 1 → 13 24.560921 24.141729 0.014531 3 13 → 1 35.156223 35.603783 0.013837 4 1 → 13 43.611333 43.192679 0.015069 5 13 → 1 49.167450 49.645842 0.044669 6 1 → 13 56.652270 56.233086 0.014539 7 13 → 1 95.292152 95.740421 0.014546 8 1 → 13 104.750301 104.330546 0.013968 9 13 → 1 141.381992 141.834541 0.018826 10 1 → 13 148.843611 148.424318 0.014430 11 13 → 1 168.450880 168.899324 0.014721 12 1 → 13 175.904891 175.485517 0.014349 Tabelle 6.5: Messung: Methode A, WLAN → Netz. Roaming Zeiten Layer 2 Da die sonstigen Zeiten bis maximal 18ms gehen, werte ich den Vorgang Nummer fünf, der mit 44ms mehr als das doppelte der Zeiten der anderen Roaming Vorgänge braucht, als Ausreißer. Minimale Zeit: 13,8ms, Maximale Zeit: 18,8ms. Arithmetisches Mittel: 15ms. Diese Werte verblüffen gegenüber der UDP Messung, da die UDP Messung wesentlich 53 6.3. Messung der Methode „B I“ Kapitel 6. Messung schlechter ist. Dieses wird im Kapitel 7.1 „Bewertung“, Seite 63, näher betrachtet. 6.3 Messung der Methode „B I“ 00:80:48:3D:EE:67 Diese Methode B I hat keinen Erfolg gebracht. Abbildung 6.7: Methode B I, Schema Netzverbindung Die virtuelle Brücke bekommt die MAC-Adresse eines seiner Interfaces. In der Abbildung 6.7 hat die Brücke die MAC-Adresse vom Interface 0. Bei den Tests hatte die Brücke und ein Interface die MAC-Adresse 00:0b:6D:4E:D9:D0. Das andere Interface hatte die MAC-Adresse 00:80:48:3D:5B:67. Die IP-Adresse wird auf die virtuelle Brücke gesetzt. Sobald sich das Interface mit der anderen MAC als die Brücke verbindet, können die Pakete nicht mehr versendet werden: Wie in Bild 6.8 zu erkennen, assoziiert sich das Interface mit der MAC 00:80:48:3D:5B:67 mit dem Access Point (2. Zeile). Aber die IP Pakete haben als Absender-MAC-Adresse die 00:0b:6D:4E:D9:D0. Das ist die MAC-Adresse der virtuellen Brücke, und damit logisch. Allerdings kennt der Access Point diese MAC-Adresse nicht, und verwirft dieses Paket folgerichtig. Daher ist die Methode in dieser Art ein Fehlschlag. Um das zu umgehen, und diese Methode doch noch zum Gelingen zu führen, kann man beiden Interfaces die gleiche MAC Adresse geben. Damit hat man fast die gleiche Konstellation, wie bei Methode B II, nur daß kein Wechsel der IP-Adresse stattfinden muss. Dieses Variante wird im folgenden Kapitel unter der Bezeichnung „Methode I b“ gemessen. 54 Kapitel 6. Messung 6.4. Messung der Methode „B I b“ Abbildung 6.8: Methode B I, Screenshot Wireshark 6.4 Messung der Methode „B I b“ Da die Methode „B I“ keinen Erfolg gebracht hat, wird hier die Variante „B I b“: „Abwechselndes Scannen: virtuelle Brücke“ mit der Änderung, daß beide Interfaces die gleiche MAC-Adresse erhalten, gemessen. 6.4.1 UDP-Versand von Festnetz auf die WLAN-Station Die UDP-Pakete werden von einem Rechner im Festnetz auf das Roaming-WLAN System geschickt. Es wurde sechs Mal das Roamen erzwungen. 6.4.1.1 Auswertung UDP-Test 1 Empfangsmodus Öffne Socket.. 3 [...] Empfange, habe aber die ersten 488 verpasst 5 Bei 57494, Lücken: {[1-487(487)], [1] [2974-2977(4)], [3173-3174(2)], [1] [1] [1] [1] [1] [1] [1] [5532-5533(2)], [1] [1] [1] [1] [1] [1] [1] [1] [12378-12379(2)], [12381-12384(4)], [1] [13231-13232(2)], [1] [1] [20919-21692(774)], 55 6.4. Messung der Methode „B I b“ Kapitel 6. Messung [22585-22587(3)], [1] [1] [1] [1] [24373-24374(2)], [25141-25143(3)], [1] [1] [1] [27694-27695(2)], [1] [1] [1] [29405-29406(2)], [1] [1] [31144-31919(776)], [1] [1] [1] [35403-35404(2)], [1] [1] [40522-41291(770)], [1] [1] [44771-44772(2)], [1] [1] [1] [46493-47264(772)], [1] [1] [1] [55016-55787(772)], [1] [1] } Quellcode 6.5: Methode B I b, Netz → WLAN. Ausgabe UDP-Test Trotz einer abendlichen Messung kann man einen relativ hohen Paketverlust verzeichnen. Es gibt zwar größere Lücken, die auf das Roaming schließen lassen, aber um zu erkennen, welche fehlende Pakete auf das Roaming zurückzuführen sind, wird bei der Analyse des Ethereals noch die fehlenden Paketnummern mit angegeben. 6.4.1.2 Auswertung Ethereal Zuerst die Analyse der Versatzes: ARP Paket Zeitpunkt Kanal 1 Zeitpunkt Kanal 13 Differenz 1 2.597022 2.141303 0.455719 2 3.596911 3.141047 0.455864 3 4.596693 4.140828 0.455865 Tabelle 6.6: Messung: Methode B I b, Netz → WLAN. Versatz der dump Dateien Das arithmetische Mittel ist 0,455816. Dieses wird zur Korrektur der Zeiten bei Kanal 13 verwendet (aufaddiert). Bei der Tabelle 6.7 zu den Roaming Zeiten Layer 2 wird zusätzlich notiert, welches das letzte UDP-Paket auf einem Kanal war, und welches das erste UDP Paket auf dem anderen Kanal war. Anhand der Informationen kann man dann mit der Auswertung vom UDP-Test vergleichen, welche Pakete aufgrund des Roaming verlorengegangen sind. Nr Kanal Deassoziation Assoziation Differenz UDP letztes UDP erstes 1 1 → 13 73.295482 72.845339 0.005673 10687 10688 2 13 → 1 135.882813 136.339563 0.000934 20918 20920 3 1 → 13 199.386141 198.931387 0.001062 31143 31144 4 13 → 1 256.717229 257.175945 0.002900 40518 40523 5 1 → 13 293.957166 293.505389 0.004039 46492 46494 6 13 → 1 346.036492 346.495410 0.003102 55015 55017 56 Kapitel 6. Messung Nr Kanal 6.4. Messung der Methode „B I b“ Deassoziation Assoziation Differenz UDP letztes UDP erstes Tabelle 6.7: Messung: Methode B I b, Netz → WLAN. Roaming Zeiten Layer 2 Minimale Zeit: 1ms, Maximale Zeit: 5,6ms. Arithmetisches Mittel: 2,9ms. Dies entspricht den Lücken im UDP-Test: Nr Lücke Anzahl 1 - - 2 20919-21692 774 3 31144-31919 776 4 40522-41291 770 5 46493-47264 772 6 55016-55788 773 Tabelle 6.8: Messung: Methode B I b, Fehlende Pakete dem Roaming-Vorgang zugeordnet Beim ersten Vorgang geht kein Paket verloren, bei den anderen durchschnittlich 773 Pakete. Das entspricht 3,9ms. Obwohl das Umschalten im Layer 2 innerhalb von maximal 6ms geht, und es zu maximal 4 Paketen Verlust auf dem Medium kommt, kommen die Pakete, die auf dem Medium kurz nach dem Roamen übertragen werden, nicht auf der Station an. 6.4.2 UDP-Versand von der WLAN-Station auf das Festnetz Die UDP-Pakete werden von dem Roaming-WLAN System auf einen Rechner im Festnetz geschickt. Es wurde sechs Mal das Roamen erzwungen. 6.4.2.1 Auswertung UDP-Test 1 Empfangsmodus Öffne Socket.. 57 6.4. Messung der Methode „B I b“ Kapitel 6. Messung 3 Empfange, habe aber die ersten 309 verpasst [..] 5 Bei 82977, Lücken: {[1-308(308)], [1] [8204-13022(4819)], [19610-20385(776)], [1] [34945-35713(769)], [43773-44527(755)], [1] [1] [1] [1] [73569-74336(768)], [80804-81566(763)], } Quellcode 6.6: Methode B I b, WLAN → Netz. Ausgabe UDP-Test Es ist nur zu geringen Paketverlusten gekommen. Alle großen Lücken sind dem RoamingVorgängen zuordnenbar. Da die sonstigen Lücken sich im 755 bis 776 Pakete bewegt, werte ich die erste Lücke mit 8419 fehlenden Paketen als Ausreißer. Rest: Minimal 755 fehlende Pakete, Maximal 776 fehlende Pakete. Das entspricht 3,7 bis 3,8 Sekunden. 6.4.2.2 Auswertung Ethereal Zuerst die Analyse der Versatzes: ARP Paket Zeitpunkt Kanal 1 Zeitpunkt Kanal 13 Differenz 1 3.761038 3.678193 0.082845 2 4.760830 4.677987 0.082843 3 5.760693 5.677708 0.082985 Tabelle 6.9: Messung: Methode B I b, WLAN → Netz. Versatz der dump Dateien Das arithmetische Mittel ist 0,082891. Dieses wird zur Korrektur der Zeiten bei Kanal 13 verwendet (aufaddiert). Nr Kanal Deassoziation Assoziation Differenz 1 1 → 13 61.753198 61.671265 958 2 13 → 1 135.214918 135.301447 3638 3 1 → 13 235.120696 235.038688 883 4 13 → 1 292.833597 292.917264 776 5 1 → 13 487.268489 487.189199 3601 6 13 → 1 534.471405 534.557830 3534 Tabelle 6.10: Messung: Methode B I b, WLAN → Netz. Roaming Zeiten Layer 2 58 Kapitel 6. Messung 6.5. Messung der Methode „B II“ Minimale Zeit: 0,8ms, Maximale Zeit: 3,6ms. Da es zwei „Blöcke“ gibt - einmal um 1ms und einmal um 3,5ms, ist ein Arithmetisches Mittel nicht sinnvoll. Diese Werte verblüffen gegenüber der UDP Messung, da die UDP Messung wesentlich schlechter ist. Dieses wird im Kapitel 7.1 „Bewertung“, Seite 63, näher betrachtet. 6.5 Messung der Methode „B II“ Es wird die Methode B II „Abwechselndes Scannen: gleiche MAC-Adresse“ gemessen. 6.5.1 UDP-Versand von Festnetz auf die WLAN-Station Die UDP-Pakete werden von einem Rechner im Festnetz auf das Roaming-WLAN System geschickt. Es wurde sechs Mal das Roamen erzwungen. Aufgrund des in Kapitel 5.6.7 auf Seite 37 erwähnten Problems, wurde beim ersten Roamen einmal hin und hergeschaltet, sodas insgesamt acht Mal geroamt wurde. 6.5.1.1 Auswertung UDP-Test 1 Empfangsmodus Öffne Socket.. 3 Empfange, habe aber die ersten 320 verpasst [..] 5 Bei 51431, Lücken: {[1-319(319)], [1] [1755-1756(2)], [1] [3674-3675(2)], [1] [1] [1] [1] [1] [1] [1] [1] [1] [1] [1] [1] [1] [1] [1] [1] [1] [1] [1] [22536-22537(2)], [1] [1] [1] [1] [1] [1] [1] [1] [1] [33679-33680(2)], [33682-33684(3)], [1] [1] [1] [1] [1] [1] [1] [1] [1] [1] [42268-42273(6)], [1] [1] [1] [1] } Quellcode 6.7: Methode B II, Netz → WLAN. Ausgabe UDP-Send Neben einem erhöhten Paketverlust gibt es eine größere Lücke im Datenstrom: [4226842273(6)]. Das heisst, daß durch das Roaming entweder nur ein Paket verloren gegangen ist, oder keines. Das muss man in der Auswertung zum Ethereal kontrollieren. 6.5.1.2 Auswertung Ethereal Zuerst die Analyse des Versatzes: 59 6.5. Messung der Methode „B II“ Kapitel 6. Messung ARP Paket Zeitpunkt Kanal 1 Zeitpunkt Kanal 13 Differenz 1 2.095689 2.173793 -0.078104 2 3.095406 3.173995 -0.078589 3 4.095586 4.173385 -0.077799 Tabelle 6.11: Messung: Methode B II, Netz → WLAN. Versatz der dump Dateien Das arithmetische Mittel ist 0,078164. Dieses wird zur Korrektur der Zeiten bei Kanal 13 verwendet (subtrahiert). Bei der Tabelle 6.12 zu den Roaming Zeiten Layer 2 wird zusätzlich notiert, welches das letzte UDP-Paket auf einem Kanal war, und welches das erste UDP Paket auf dem anderen Kanal war. Anhand der Informationen kann man dann mit der Auswertung vom UDP-Test vergleichen, welche Pakete aufgrund des Roaming verlorengegangen sind. Nr Kanal Deassoziation Assoziation Differenz UDP letztes UDP erstes 1 13 → 1 23.395035 23.319546 0.002675 1976 1977 2 1 → 13 70.781379 70.862760 0.003217 9677 9678 3 13 → 1 81.539610 81.466944 0.005498 11408 11410 4 1 → 13 92.144482 92.226617 0.003971 13140 13142 5 13 → 1 134.425517 134.351075 0.003722 19984 19988 6 1 → 13 176.550526 176.629481 0.000791 26841 26842 7 13 → 1 229.334973 229.262098 0.005289 35390 35391 8 1 → 13 260.961310 261.040161 0.000687 40543 40544 Tabelle 6.12: Messung: Methode B II, Netz → WLAN. Roaming Zeiten Layer 2 Minimale Zeit: 0,7ms, Maximale Zeit: 5,4ms. Arithmetisches Mittel: 3,2ms. Bei den Roaming Vorgängen vier bis acht ist je ein Paket auf dem Kanal verloren gegangen. Bei den Roaming Vorgängen sechs bis acht ist es jeweils das letzte Paket, was auf den Kanal, von dem weggeroamt wurde, gesendet wurde. Die Analyse mit der UDP-Test Ausgabe zeigt, das zusätzlich die Roamingvorgänge zwei und drei je ein Paketverlust erzeugt haben. 60 Kapitel 6. Messung 6.5. Messung der Methode „B II“ Beim Vorgang Nummer fünf war das letzte Paket das mit der Nummer 19984, die Anwendung hat aber trotzdem die Pakete 19985 und 19986 empfangen. Die massiven Wiederholungen des ACKs zu diesem Zeitpunkt lassen auf eine Störung im Kanal schließen, die dafür gesorgt haben, daß die Scan-Station dieses Pakete nicht einwandfrei empfangen hat. Und so wurden diese Pakete schon im Layer eins oder zwei/MAC verworfen, ohne daß der Treiber dieses zu sehen bekommen hätte. Die ersten beiden Roaming Vorgänge haben also keinen Paketverlust verursacht, die anderen immer nur ein einzelnes Paket. 6.5.2 UDP-Versand von der WLAN-Station auf das Festnetz Die UDP-Pakete werden von dem Roaming-WLAN System auf einen Rechner im Festnetz geschickt. Das Roamen wurde sechs Mal erzwungen. 6.5.2.1 Auswertung UDP-Test 1 Empfangsmodus Öffne Socket.. 3 Empfange, habe aber die ersten 107 verpasst [..] 5 Bei 68016, Lücken: {[1-106(106)], [1] [12361-12386(26)], [20632-20812(181)], [1] [34528-34698(171)], [43595-43765(171)], [53394-53574(181)], [65778-65946(169)], } Quellcode 6.8: Methode B II, WLAN → Netz. Ausgabe UDP-Test Zwei Paketverluste durch Übertragungsfehler. Minimaler Paketverlust: 26, Maximaler Paketverlust: 181. Das entspricht: 130ms bis 905ms. 6.5.2.2 Auswertung Ethereal Zuerst die Analyse der Versatzes: ARP Paket Zeitpunkt Kanal 1 Zeitpunkt Kanal 13 Differenz 1 1.572126 1.469941 0.102185 2 2.571836 2.469802 0.102034 61 6.5. Messung der Methode „B II“ Kapitel 6. Messung ARP Paket Zeitpunkt Kanal 1 Zeitpunkt Kanal 13 Differenz 3 3.571746 3.469515 0.102231 Tabelle 6.13: Messung: Methode B II, WLAN → Netz. Versatz der dump Dateien Das arithmetische Mittel ist 0,102150. Dieses wird zur Korrektur der Zeiten bei Kanal 13 verwendet (addiert). Nr Kanal Deassoziation Assoziation Differenz 1 1 → 13 86.063974 85.962916 0.001092 2 13 → 1 138.661045 138.763239 0.000044 3 1 → 13 228.240721 228.142148 0.003877 4 13 → 1 286.084077 286.188677 0.002450 5 1 → 13 349.397391 349.298072 0.002831 6 13 → 1 428.265753 428.388421 0.020518 Tabelle 6.14: Messung: Methode B II, WLAN → Netz. Roaming Zeiten Layer 2 Die Differenz des Roaming-Vorgangs Nummer zwei ist sehr klein, und nicht reproduzierbar. Daher betrachte ich diese Differenz im weiteren nicht. Bei dem Roaming-Vorgang Nummer sechs wurde das Authentications- und AssociationPaket mehrfach gesendet. Zu diesem Zeitpunkt war scheinbar der Kanal gestört, so das es zu einer extremen Abweichung gegenüber den anderen Zeiten gekommen ist. Daher betrachtet ich diese Differenz bei der weiteren Betrachtung auch nicht. Minimale Zeit: 1,0ms, Maximale Zeit: 3,8ms. Arithmetisches Mittel: 2,6ms. Diese Werte verblüffen gegenüber der UDP Messung, da die UDP Messung wesentlich schlechter ist. Dieses wird im Kapitel 7.1 „Bewertung“, Seite 63, näher betrachtet. 62 Kapitel 7 Bewertung 7.1 Allgemein Die durchweg schlechten Zeiten bei der Messvariante „UDP Versand von der WLANStation auf das Festnetz“ (bis zu einer Sekunde Paketverlust) im Gegensatz zu den guten (3,2ms) bis brauchbaren Zeiten (15ms) bei der Messvariante „UDP Versand von Festnetz auf die WLAN-Station“ lassen darauf schließen, daß im IP-Stack des Kernels der WLANStation etwas nicht wie geplant läuft. Was und wieso konnte aus Zeitgründen nicht geklärt werden. Aus diesen Grund werden die Messergebnisse des UDP-Versands der Messvariante „UDP Versand von der WLAN-Station auf das Festnetz“ nicht beachtet. 7.2 Methode A Die Zeit, die die Station braucht, um sich abzumelden, Kanal zu wechseln, und wieder anzumelden beträgt ungefähr 15 ms. Dieses wird von dem UDP-Versand bestätigt. Damit ist diese Variante eine brauchbare Roaming Lösung. 7.2.1 Nachteile Diese Methode braucht einen geänderten Treiber. Das birgt Probleme mit der Aktualität. Ob und wann die Treiberentwickler die Funktionalität abändern, auf den dieser Ansatz baut, kann man nicht vorhersagen. 63 7.3. Methode B Kapitel 7. Bewertung Das man eine bereits genutzte I/O Control ID verdrängen muss, ist ein weiteres Problem. Man weiß nicht, welche Drittsoftware darauf aufbaut. Dieses dürfte aber mit einigem Aufwand zu lösen sein. Ein Übertragen auf andere Treiber ist auch nicht möglich, da alle Treiber unterschiedliche Interna haben. 7.2.2 Vorteile Ein Vorteil ist, daß aus Netzsicht keine unsauberen Dinge passieren. Wie zum Beispiel, daß die WLAN-Station wie bei Methode B zu einem Zeitpunkt zweimal eingeloggt ist. Auch kann man das Interface ohne Probleme mit DHCP konfigurieren. Das man hier ein eigenes Scannen nutzen kann, ist weiter von Vorteil. 7.3 Methode B Die Methode B I ist fehlgeschlagen. Dafür ist die Methode B I b von gewissem Erfolg. Bei beiden Varianten (B I b und B II) fällt auf, daß der madwifi Treiber einen aktiven Scan macht. Aus diesem Grund sind in den dump-Dateien viele „Probe Request“ Pakete verzeichnet. Dieses ist zwar nicht gut, aber ein passiver Scan war keine Bedingung dieser Arbeit, sodas es ignoriert wurde. Erstaunlich ist auch bei allen Messungen, daß alle Differenzen positiv sind. Man würde negative Differenzen erwarten, da zuerst assoziiert wird, und erst danach deassoziiert wird. Das liegt aber daran, daß die WLAN-Karte die Befehle asynchron ausführt. Es nimmt den „Auftrag“ zum assoziieren entgegen, und leitet die Kommunikation ein. Aber das Programm wird hier nicht blockiert. Daher gibt das Programm fast zeitgleich der anderen WLAN Karte den Deassoziierungsbefehl. Und zusätzlich wird der Zeitpunkt des ersten Paketes beim Deassoziieren und der Zeitpunkt des letzten Paketes beim Deassoziieren notiert. Da zusätzlich das Assoziieren einen höhere Paketanzahl benötigt, ist die Differenz positiv. 7.3.1 Methode B I b Die Roaming Zeiten im Layer zwei von maximal 5,6 sind gut. Aber die UDP-Pakete kommen fast vier weitere Sekunden nicht an, egal, ob diese gesendet oder empfangen 64 Kapitel 7. Bewertung 7.3. Methode B werden. Bei den Messungen der anderen Methoden kommt es zumindest beim Empfang der Pakete nicht zu diesen katastrophalen Zeiten. Das Problem ist die virtuelle Bridge, die nicht dafür ausgelegt ist, schnelle Wechsel der Interfaces zu erkennen und darauf zu reagieren. Zusätzlich ist die virtuelle Bridge darauf ausgelegt, mit STP zu arbeiten. Daher hat die virtuelle Bridge alle dafür notwendigen Zustände (learning, u.s.w.), die zunächst durchlaufen werden, wenn eine Netzwerkänderung erkannt wird. Und das ist bei jedem Roamen gegeben. Man kann zwar das STP bei der Bridge deaktivieren, aber die Bridge läuft dann immer noch durch die einzelnen Stati. Diese könnte man umgehen, indem man die Bridge-Software anpasst und verändert. 7.3.2 Methode B II Die Durchschnittszeit von 3,2ms ist sehr gut. Diese Zeit wird auch vom UDP-Send bestätigt, daß maximal ein Paket Verlust pro Roaming Vorgang hat. 7.3.3 Nachteile Bei der Methode B II ist es nicht möglich, den Standart-DHCP Client zu verwenden. Dieser arbeitet immer nur auf ein Interface, und „kontrolliert“ es. Die Methode B II ändert aber bei jedemn Raoming die IP-Adresse der Interfaces ab, um das Routing richtig zu stellen. Dazu muss es ein Interface mit einer „falschen“ IP belegen, was den DHCP Client aber durcheinander bringen würde. Ein Lösung wäre es, im Roaming Programm selber ein DHCP zu implementieren. 7.3.4 Vorteile Beide Methoden arbeiten mit den originalen madwifi Treibern und der gegeben API. Diese sollte stabil sein, und sich nicht mehr ändern. Wenn doch, so ist der Änderungsaufwand nur minimal. Obwohl das Programm in der aktuellen Version nur mit den madwifi zusammenarbeitet, ist es sehr einfach möglich, das Programm so umzuschreiben, daß es für alle WLANTreiber funktioniert. Mann muss nur an der Stelle, bei dem assoziiert / deassoziiert wird, den API Aufruf einfügen, der hinter iwconfig ifX ap XX:XX:XX:XX:XX:XX steckt. 65 7.4. Andere Ergebnisse 7.4 Kapitel 7. Bewertung Andere Ergebnisse Während der Implementierung und den direkten Tests ist bei der Methode B II eine Besonderheit aufgefallen: Wenn man zwischen dem Assoziieren und Deassoziieren eine Wartezeit einbaut - durch Warten auf die Bestätigung, daß die WLAN-Karte sich zum Access Point assoziiert hat, oder durch ein simples „sleep(1)“, dann gibt es bei der Messvariante „WLAN → Netz“ massiven Paketverlust von 500ms und mehr. Interessant dabei ist, daß beim eigentliche Roamingvorgang kein Paketverlust auftritt, sondern vorher. Und zwar meldet der Access Point, mit dem sich die Station assoziiert hat, mittels eines LLC-Update Frame, daß die WLAN Station jetzt bei diesem Access Point zu finden ist. Der Access Point, der die alte Verbindung noch hält, deassoziiert daraufhin die WLANStation. Gleichzeitig sendet die WLAN-Station noch über die alte Verbindung. Der Treiber stößt also ein Reassoziieren an, und verbindet sich so neu mit dem alten Access Point. Diese Zeit ohne Verbindung sorgt für den Paketverlust. Dadurch, daß bei der aktuellen Variante das Assoziieren und Deassoziieren fast gleichzeitig aufgerufen wird, und es daher nicht mehr zu dem oben beschriebenen Fall kommt, hat die aktuelle Variante dieses Problem nicht. 66 Kapitel 8 Fazit 8.1 Beurteilung der getesteten Methoden Eine angestrebte Zeitdauer für ein Roaming Vorgang im industriellen Bereich liegt bei maximal 10ms [sie]. Für VoIP sind Zeiten besser als 150ms gewünscht. Die Methode A liegt mit 15ms nicht in dem Bereich, der für eine Automatisation notwendig wäre. Die Zeit geht hauptsächlich für den Kanalwechsel verloren. Die Methode B I b ist mit 4 Sekunden komplett unakzeptabel. Die Methode B II liegt bei 3,2ms und erreicht damit die geforderten Werte ohne Probleme. Bei allen Methoden gibt es aber noch das Problem, wie in dem Kapitel 7.1, Seite 63 beschrieben, daß der IP-Stack noch ein effizientes schnelle Roamen verhindert, während die Station unter Sendelast steht. Das Problem muss vorher gefunden und gelöst werden. 8.2 Beurteilung der Infrastruktur Die Methode des Clientseitigen Roamings verlagert ein Teil der Netzintelligenz auf den Client. Dieses ist teilweise in Ordnung: Der Client ist die optimale Stelle, um die aktuelle Lage im Funknetz zu beurteilen, da er ja „mittendrin“ ist. Die Nachteile sind aber, daß das Roaming für das umgebenen Netz zu nicht vorhersagbaren Zeiten stattfindet, und deshalb bei jedem Roamingvorgang Pakete verloren gehen, die die Protokolle der höheren Ebenen erst wieder neu anfordern / schicken müssen. 67 8.2. Beurteilung der Infrastruktur 8.2.1 Kapitel 8. Fazit Vergleich zu „Switched WLAN“ Switched WLAN zeichnet sich durch die vollständige Kontrolle der Clients durch eine zentrale Stelle, den Switch, aus. Dieser Switch hat die gesamte Netzstruktur im Überblick. Das Clientroaming kennt nur das Netz an der aktuellen Stelle. Daher ist das Switched WLAN eher in der Lage, die Clients optimal zu verteilen. Auch sind die Systeme beim Clientroaming unabhängig, und ein Administrator muss jedes System einzeln konfigurieren. Selbst bei kleinen Änderungen muss ein Administrator an jedes System diese Änderung nachziehen. Beim Switched WLAN muss der Administrator diese Änderung nur an dem zentralen Switch machen, der diese an die Clients weiterleitet. Das Switched WLAN hat also einen erheblichen Administrationsvorteil. Obwohl es einen Standard für Switched WLAN gibt, nutzen viele Hersteller noch eigenene, propritäre Protokolle, oder propritäre Erweiterungen zu dem Standard. Daher ist man darauf angewiesen, die gesamte Hardware von einem einzigen Hersteller zu beziehen. Beim Clientseitigen Roaming setzt man aber auf normale Standardkomponenten, und ist daher in der Lage, kostengünstig das Netz aufzubauen oder zu erweitern. Bei mittleren bis großen Installation dürfte daher das Switched WLAN von Vorteil sein, da es die Administrationskosten niedrig hält. Bei kleinen und nicht lebenskritischen Installationen hat das Clientseitige Roaming starke Kostenvorteile. 8.2.1.1 Vergleich der Zeiten Frau Nuray Saracoglu hat 2007 hat in ihrer Diplomarbeit [Sar07] die folgenden Zeiten erhalten: System Zeiten Aruba 76 - 303 Extricom -1 Tabelle 8.1: Roamingzeiten Switched WLAN Systeme [Sar07] Die Ergebnisse dieser Arbeit sind wesentlich besser als die des Aruba-Systems. Das Extricom schafft es allerdings komplett ohne Zeitverlust, aber mit dem Nachteil, das alles 1 Siehe Beschreibung im Konzept, Kapitel 4.1.1, Seite 13 68 Kapitel 8. Fazit 8.3. Energie auf einer Frequenz arbeiten muss. 8.2.2 Vergleich zu „Sync Scan“ Obwohl beim Sync Scan die Scanzeit sehr kurz ist, ist die dennoch vorhanden. Dieses fällt beim Fast-Roaming durch die zwei WLAN-Karten weg, da die Station zum Scannen nicht mit dem Hauptinterface den Kanal verlassen muss. 8.2.3 Vergleich zu „802.11r“ Dieser Standard ist noch nicht verabschiedet, daher kann man nichts Genaues sagen. Aber nach den Berichten, die man liest, liegt das Hauptaugenmerkt beim 11r Standard auf der schnellen Reassoziation bei verschlüsselter Verbindung. Daher ist das Ziel ein anderes als beim Fast-Roaming mittels zwei WLAN -Karten. 8.3 Energie Trotz Powermanagementoptionen ist die WLAN Hardware nicht auf Stromsparsamkeit optimiert. Das ist unter anderen einer der Gründe, wieso sich WLAN in aktuellen PDAs und Handys noch nicht durchgesetzt hat. Mit einem zweiten WLAN Interface ist die Energieversorgung noch kritischer. In kleinen, mobile Systemen wie PDAs, Handys oder Voice-voer-IP Headsets dürfte daher das Fast-Roaming mittels einer zweiten WLAN-Karten keine Option sein. Erst ab Systemen der „Laptop-Klasse“, bei denen die anderen Komponenten wesentlich mehr Energie verbrauchen als eine WLAN-Karte, kann man eine zweite WLAN-Karte verbauen, ohne den Energiehaushalt wesentlich zu beinträchtigen. 8.4 Hardware Ein großer Nachteil des hier vorgestellen Clientseitigen Roamings ist, daß die Ausrichtung und die Lage der Antennen sehr ähnlich sein muss, sonst gibt es erhebliche Falschmessungen. Ein logischer Schritt wäre es, zwei Transceiver auf einem Interface unterzubringen. Allerdings bin ich nachrichtentechnisch nicht in der Lage, das zu beurteilen. 69 8.5. Sonstiges Kapitel 8. Fazit Ein denkbarer Zwischenschritt könnte sein, daß man auf dem WLAN Interface einen zweiten Receiver unterbringt. Entweder direkt mit der Antenne gekoppelt, oder man legt eine zweite Antenne neben die „Hauptantenne“. Mit diesem ist zwar ein Senden nicht möglich, aber dieser Recveiver könnte nonstop einen passiven Scan machen. Mit einem entsprechenden Treiber wären auch diese Informationen direkt im Treiber vorhanden, sodas ein Raoming nach Methode A möglich wäre, ohne aber die Scaninformationen übertragen zu müssen. 8.5 8.5.1 Sonstiges Verschlüsselung Beide Methoden bauen auf einer unverschlüsselten Verbindung auf. Eine WEP Verschlüsselung wäre möglich, aber heutzutage nicht zu empfehlen, da diese binnen Minuten gebrochen werden kann. Eine WPA Verbindung verlangt aber weitere Authentifizierungsschritte. Unter Linux wird die WPA-Verbindung nicht mit den Treiber-Grundfunktionen hergestellt, sondern dazu wird das Programm „wpa_supplicant“ genutzt. Der wpa_supplicant kontrolliert selber die Verbindungen zum Access Point, und steuert diese. Um hier ein Fast-Roamen mittels einer zweiten WLAN-Karte zu ermöglichen, sind die externe Programme nicht zu gebrauchen, da der wpa_supplicant die Kontrolle über die Verbindung zu den Access Points braucht. Daher muss man, um das Roamen zu ermöglichen, hierfür den wpa_supplicant abändern und erweitern. 70 Kapitel 9 Anhang 9.1 Installation von SuSE 10.2 auf einem WRAP Im Internet stehen an vielen Stellen kurze Hinweise, die man für die Installation von SuSE 10.2 auf den WRAP benötigt. Allerdings ist bei jedem Problem eine Suche notwendig, die sich Aufgrund der Falschaussagen etwas ziehen kann. Daher hier ein kurzer Überblick der Installation. Alle Angaben sind Vorschläge, wie Sie im w2l2 genutzt werden. Diese Angaben kann man je nach Bedarf anpassen. 9.1.1 Voraussetzung Dieses ist notwendig, um SuSE 10.2 auf einen WRAP zu installieren: • Eine Compact-Flash Karte. Mindestens mit einem Gigabyte Speicher. • Ein Compact-Flash Kartenleser • Ein laufendes System mit SuSE 10.2, mit zusätzlich: – Kernelquellen • Grundlegende Kenntnisse in Linux und PC Administrationsaufgaben, wie z.B. „Partitionieren“. • Außerdem ist es notwendig, bei diesem Dokument mitzudenken. Zum Beispiel sind alle Pfade Beispielpfade, die sich unterscheiden können. 71 9.1. Installation von SuSE 10.2 auf einem WRAP 9.1.2 Kapitel 9. Anhang Vorbereitung Die Compact-Flash Karte muss zuerst partitioniert werden. Dazu muss die Karte angeschlossen werden. Unter welchem Namen die Karte gemountet wird, bitte mit dmesg nachsehen. Dann fdisk aufrufen, und diese Partitionen als Primärpartitonen anlegen 1 # fdisk /dev/sda Quellcode 9.1: Aufruf von fdisk, wenn die Karte nach sda gemountet wurde • 128 MB für Swap: Typ 82. Mehr sollte man nicht nutzen, eher weniger, da der Speicherplatz auf einer Gigabyte Karte stark beschränkt ist. Außerdem reicht der Arbeitsspeicher von 128MB des WRAP im Normalfall vollkommen aus. • den restlichen Platz mit einer normale Linux-Partition belegen dann die Partitionen formatieren: 1 3 # mkswap /dev/sda1 # mkfs.ext2 /dev/sda2 # tune2fs /dev/sda2 -c 1 Quellcode 9.2: Formatieren der Partitionen Der letzte Aufruf wird benötigt, damit das Betriebssystem diese Partion bei jedem mounten prüft. Dieses ist notwendig, da sich im Laborbetrieb herrausgestellt hat, das die WRAPs gerne zu früh vom Strom getrennt werden, sodaß der Puffer nicht vollständig geleert werden konnte. Sobald die Formatierung erledigt wurde, muss man die zweite Partition einbinden. Dazu hat man zwei Möglichkeiten: a) Automatisch: Die Karte mit 1 # eject /dev/sda Quellcode 9.3: Auswerfen der Karte 72 Kapitel 9. Anhang 9.1. Installation von SuSE 10.2 auf einem WRAP logisch auswerfen (alle Bindungen lösen). Danach einfach die Karte aus dem Leser ziehen und neu einstecken. Sofern das automatische Mounten nicht deaktiviert wurde, erscheint die Karte kurze Zeit später unter /media/disk b) manuell: Die Karte mit 1 # mount /dev/sda2 /mnt Quellcode 9.4: Mounten der Karte nach /mnt mounten. 9.1.3 Software installieren Zum Installieren der Software muss man unter YaST den Menüpunkt „Installation in Verzeichnis“ wählen. Hier gibt man den Pfad der Karte an. In der Softwareauswahl sollte man die folgenden Pakete auf „Tabu“ stellen. Je mehr auf Tabu steht, desto mehr Speicherplatz hat man am Ende zur Verfügung! Aber die YAST Pakete sollte man nicht anfassen, da diese sehr obskure Abhängigkeiten haben, bei denen man das ganze Zielsystem nicht mehr lauffähig machen könnte. • Schema: Apparmor • Schema: ZMD • Schema: XWindows • Paket: qt3 • Pakete: gtk* • Pakete: alsa* • Pakete: cups* Diese Pakete müssen angehakt sein: ssh, vi Dann die Installation laufen lassen. Das kann bis zu einer halben Stunde dauern. Danach löscht man von der Karte die Verzeichnisse: /lib/modules/*-default/, da der WRAP einen eigenen Kernel benötigt. 73 9.1. Installation von SuSE 10.2 auf einem WRAP 9.1.4 Kapitel 9. Anhang Kernel und Module kompilieren In den Kernelquellen (/usr/src/linux) mit 1 # make xconfig Quellcode 9.5: Konfigurieren des Kernels die Kernelkonfiguration starten. Diese Einstellungen müssen gemacht werden: • Als Erweiterung „wrap“ wählen. Wichtig, da es sonst zu Kollisionen mit der Installation des Hauptsystems kommen kann. • Als Modul kompilieren: „scx200“ • Als Modul kompilieren: „sc1200“ • Zielsystem: AMD Geode, Sub: x86. • So viele nicht notwendige Dinge wie z.B. „Framebuffer“ wie möglich abwählen. Allerdings muss man hierbei Vorsicht walten lassen, sonst funktioniert der Kernel nicht. Danach den Kernel mit 1 # make Quellcode 9.6: Kernel kompilieren kompilieren. Dieses dauert SEHR lange! Wenn der Kernel fertig kompiliert wurde, diesen auf die Karte kopieren: 1 # cp /usr/src/linux/arch/i386/boot/bzImage /media/disk/boot/bzImage-wrap Quellcode 9.7: Kernel kopieren Im Anschluss die Module kompilieren: 1 # make modules Quellcode 9.8: Module kompilieren 74 Kapitel 9. Anhang 9.1. Installation von SuSE 10.2 auf einem WRAP Und auf die Karte kopieren: 1 # cp -r /lib/modules/2.6.18.2-34-wrap /media/disk/lib/modules/ Quellcode 9.9: Module kopieren 9.1.5 Die Karte bootfähig machen Jetzt muss die initziale RAM-Disk erzeugt werden: 1 # mkinitrd -k /media/disk/boot/bzImage-wrap -i /media/disk/boot/initrd-wrap -M/usr/src/linux/System.map -m "scx200 sc1200" -s 0 Quellcode 9.10: RAM-Disk generieren Mit „-m“ wird angegeben, daß diese Module in die RAM-Disk aufgenommen werden müssen. Da dieses die Festplatten-Controler Treiber sind, ist dieses zum Booten notwendig. Mit „-s“ Wird der Boot-Splash deaktiviert. Nun muss der Boot-Loader installiert werden: 1 # grub-install --root-directory=/media/disk --no-floppy /dev/sda2 Quellcode 9.11: Boot-Loader (grub) installieren Wenn die Fehlermeldung „/dev/sda2 does not have any corresponding BIOS drive.“ erscheint, liegt es daran, daß /dev/sda in der device.map auskommentiert wurde. Einfach die device.map löschen. Sollte der grub-installer irgendwelche Dateien vermissen, kann man diese einfach von dem Hauptsysten auf die Karte kopieren. Da der WRAP keinen VGA Ausgang hat, sondern nur eine serielle Konsole, muss man die Boot-Meldungen auf die Konsole umleiten. Dazu in der „menu.lst“ vom grub die Zeile „gfxmenu“ auskommentieren und dafür eintragen: 1 serial --unit=0 --speed=38400 --word=8 --parity=no --stop=1 terminal --timeout=1 serial console Quellcode 9.12: Serielle Ausgabe des Grubs aktivieren 75 9.1. Installation von SuSE 10.2 auf einem WRAP Kapitel 9. Anhang Als Boot-Eintrag anlegen, bzw. einen vorhanden überschreiben: title openSUSE 10.2 Wrap root (hd0,1) kernel /boot/bzImage-wrap root=/dev/hda2 resume=/dev/hda1 splash=silent showopts console=tty0 console=ttyS0,38400n8 reboot=bios 4 initrd /boot/initrd-wrap 2 Quellcode 9.13: Serielle Ausgabe des Kernels aktivieren Jetzt das Login über die serielle Schnittstelle erlauben. Dazu auf der Karte in der Datei /media/disk/etc/inittab dieses anfügen: co:2345:respawn:/sbin/agetty ttyS0 38400 vt100 Quellcode 9.14: Seriellen Login aktivieren Man kann in diesem Zuge auch die lokalen Konsolen auskommentieren. Damit man sich als root anmelden kann, muss man in der Datei /etc/securetty folgende Zeile hinzuzufügen: 1 ttyS0 Quellcode 9.15: Login als root Um den Bootvorgang über die serielle Konsole besser verfolgen zu können, muss man in die Datei /etc/sysconfig/init eintragen: 1 BOOTUP=-serial PROMPT=no Quellcode 9.16: Login als root Die Datei /etc/fstab muss noch angepasst werden: /dev/hda1 swap 2 /dev/hda2 / proc /proc proc 4 sysfs /sys sysfs devpts /dev/pts swap defaults 0 0 ext2 acl,user_xattr 1 1 defaults 0 0 noauto 0 0 devpts mode=0620,gid=5 0 0 Quellcode 9.17: fstab 76 Kapitel 9. Anhang 9.1. Installation von SuSE 10.2 auf einem WRAP Der SSH-Deamon muss startbar gemacht werden. Dazu in der Datei /etc/passwd anhängen: 1 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin Quellcode 9.18: damit kann der sshd starten 9.1.6 WRAP verbinden Wenn alle vorigen Arbeiten erledigt sind, kann man die Karte einbauen, und den WRAP zusammenbauen. Um den WRAP steuern zu können, ist ein Terminal Programm, wie z.B. „kermit“, notwendig. Das Problem bei kermit ist es, das Programm unter einem normalen Useraccount zum Laufen zu bekommen. Dazu muss man einige Rechte abändern: 1 # chmod 660 /dev/ttyS0 # chmod 770 /var/locks Quellcode 9.19: Rechtekorrektur, um kermit als normaler User zu nutzen Danach muss der User nur noch zur Gruppe „UUCP“ zugefügt werden. Mit diesen Befehlen kann man sich verbinden: set modem type none 2 set line /dev/ttyS0 set carrier-watch off 4 set speed 38400 connect Quellcode 9.20: kermit Befehle, um sich zu verbinden 9.1.7 Erster Start Beim ersten Start muss das root-Passwort gesetzt werden. Dazu muss Linux in Runmode 1 gestartet werden. Um dieses zu veranlassen drückt man im grub auf der Zeile des WRAP Kernels die Taste „e“. Nun kann man die Boot Parameter ändern. In der Zeile „kernel“ muss „init=/bin/bash“ eingetragen werden. 77 9.1. Installation von SuSE 10.2 auf einem WRAP Kapitel 9. Anhang Nun startet man das System. Bei dem gestarteten System gibt man diese Befehle an: 1 # passwd root # sync 3 # mount -o remount,ro / Quellcode 9.21: Befehle für den ersten Start Mit „passwd root“ ändert man das root-Passwort. Im Anschluss drückt man „STRG+D“ und startet den WRAP neu. 9.1.8 Allgemeine Hinweise Wenn man 1 echo "A"|dd of=/dev/port bs=1 count=1 seek=62466 Quellcode 9.22: LED Steuerung als vorletzen Befehl in /etc/rc.d/halt schreibt, sorgt das dafür, daß die dritte LED kurz vor dem Ende des Herunterfahrens anfängt zu leuchten. 9.1.9 Klonen Wenn man eine Karte erfolgreich zum Laufen bekommen hat, so kann man diese klonen, und sich so viel Arbeit sparen. 9.1.9.1 Karte auslesen Zuerst muss man die Original Karte kopieren. Dazu diese in den Kartenleser schieben. Wenn das autoamtsiche Mounten aktiviert ist, muss man die Karte zuerst unmounten: 1 # umount /media/disk Quellcode 9.23: Unmounten Nun kann man die komplette Karte kopieren: 78 Kapitel 9. Anhang 9.1. Installation von SuSE 10.2 auf einem WRAP 1 # dd if=/dev/sda of=/tmp/dateiname Quellcode 9.24: low-level kopieren: Karte auslesen Danch die Karte mit „eject“ auswerfen. 9.1.9.2 Karte bespielen Wichtig ist, daß die Ziel-Karte genau die gleichen logischen Eigenschaften hat, wie die Original Karte (Sektoren, Zyliner, etc.) Die Ziel-Karte bespielt man mit 1 # dd if=/tmp/dateiname of=/dev/sda Quellcode 9.25: low-level kopieren: Karte beschreiben Danach die Karte mit „eject“ auswerfen, und damit den WRAP booten. 9.1.9.3 Einstellungen korrigieren Wenn das System gebootet ist, einloggen und: • Die Datei „/etc/udev/rules.d/30-net_persistent_names.rules“ löschen, und neu starten. • Bei Bedarf die Bezeichnung in der Datei „/etc/motd“ abändern • Mit 1 # ifconfig eth1 192.168.0.11 netmask 255.255.255.0 Quellcode 9.26: IP Adresse setzen dem Netzwerk die richtige IP geben. Das Interface ist eth1, da eth0 noch an das Interface der Originalkarte gebunden ist. Man sollte schon hier die richtige IP nehmen. Das erleichtert nachher Einiges. • Mit SSH auf das Gerät gehen, und „yast2 lan“ ausführen. Der ist per serieller Konsole nicht nutzbar. Im yast die alte Karte löschen (das ist die, bei der eine IP dabei steht). Die neue Karte „National DP...“ konfigurieren. Dabei den Hostnamen korrigieren. 79 9.2. UDP-Test 9.2 Kapitel 9. Anhang UDP-Test Zur Messung der Geschwindigkeit wurde speziell ein Programm geschrieben, das per UDP fortlaufend aufsteigende Zahlen verschickt. 9.2.1 Hintergrund Eine Messung per Netzwerksniffen, wann die Anmelderoutine gelaufen ist, ist nicht wirklich aussagekräftig. Wichtig ist die Zeit, ab wann das Netzwerk dahinter diesen Wechsel registriert und sich eingestellt hat. Daher muss man richtige Pakete verschicken, und beobachten, ob diese an der Gegenstation ankommen. TCP Pakete haben zur Messung den entscheidenden Nachteil, daß das Protokoll verlorene Pakete nachfordert. Man wird unter TCP außer einem Komplettversagen nichts messen können. Deshalb wurde Versand per UDP gewählt, da diese Pakete nur einmal versendet weden. Und wenn ein Paket verloren geht, dann ist es weg. Als Port wurde der Port 52972 gewählt. Diese Nummer hat keine tiefere Bedeutung. 9.2.2 Arbeitsweise Das Programm besteht aus zwei Teilen: Einem Sende- und einem Empfangsteil. 9.2.2.1 Senden Der Sendeteil sendet im Abstand von fünf Millisekunden eine fortlaufende Zahl (in Networkbyteorder). Wichtig ist aber, daß der Kernel hierzu mit einer Frequenz von 1.000 Hz kompiliert wurde. Standardmäßig wird dieser (in Suse 10.2) mit 250Hz kompiliert, so daß Taskwechsel maximal alle 4 ms oder einem Vielfachen davon stattfinden kann. Aber selbst wenn der Kernel mit 1.000 Hz kompiliert wurde, dann kann man immer noch nicht davon ausgehen, daß man genau eine Millisekunde warten kann. Messungen mit einer Millisekunde Wartezeit haben gezeigt, daß die reale Zeit zwischen den Paketen zwei bis fünf Millisekunden war, nur ganz selten eine Millisekunde. 80 Kapitel 9. Anhang 9.2. UDP-Test Mit einer Wartezeit von 5 Millisekunden auf einem 1.000 Hz Kernel sind die Zeiten zwischen den Paketen aber stabil. 9.2.2.2 Empfangen Das Empfangsteil öffnet den UDP-Socket und wartet auf die Pakete. Es vergleicht immer die aktuell übertragene Nummer mit der vorigen Nummer. Wenn diese nicht fortlaufend ist, gibt das Programm dieses aus. Um dem Effekt „ein Paket überholt ein anderes“ zu erkennen, wurde außerdem eine „Lückenverwaltung“ eingebaut: Das Programm zeigt alle tausend Pakete die fehlenden Pakete (mit der Paketnummer) an. Sollte jetzt dieser Effekt auftreten, so wird das zwar gemeldet, aber die „Lücke“ wird sofort geschlossen, und nicht mehr angezeigt. 9.2.3 Ausgabe Im „Senden“ Teil zeigt das Programm alle 1.000 gesende Pakete an, bei welcher Nummer es gerade ist. Beim Senden hat es z.B. diese Ausgabe: 1 3 5 7 9 wrap-delta:~ # ./_UDP-test Empfangsmodus Öffne Socket.. Empfange, habe aber die ersten 488 verpasst Bei 1488, Lücken: {[1-487(487)], } Paketverlust: Erwarte 2130, empfange 2131 Bei 2490, Lücken: {[1-487(487)], [1] } Paketverlust: Erwarte 2974, empfange 2978 Paketverlust: Erwarte 3173, empfange 3175 Bei 3498, Lücken: {[1-487(487)], [1] [2974-2977(4)], [3173-3174(2)], } Quellcode 9.27: Beispielausgabe UDP-Test, Empfangsmodus Sobald das Programm eine Zahl empfängt, zeigt es an, daß es was empfängt. Sollte es die ersten Zahlen verpasst haben, so zeigt es eine Meldung wie in Zeile 4 an. Bei Paketverlusten zeigt das Programm, wie in den Zeilen sechs, acht und neun, an, welche Nummer es erwartet hat, und welche es empfangen hat. Zusätzlich wird nach 1.000 empfangenen Paketen, wie in den Zeilen fünf, sieben und zehn, eine Übersicht ausgegeben. Zuerst die Zahl, bei der er ist. Dann die Lücken, die aufgetreten sind, mit den genauen vermissten Zahlen. Wenn nur ein Paket vermisst wird, dann wird ganz kurz [1] geschrieben, da einzelne Paketverluste öfter auftreten können. 81 9.2. UDP-Test 9.2.4 Kapitel 9. Anhang Anleitung Zum Senden startet man das Programm mit UDP_test <IP>. In IP kommt die IP-Adresse des Zielsystems. Zur Anzeige der Aktivität wird nach allen 1.000 angezeigt, bei welcher Nummer das Programm ist. Auf dem Zielrechner startet man das Programm nur mit UDP_test. Es wartet nun auf die Pakete. Abbrechen muss man das Programm mit STRG+C. 82 Kapitel 10 Literaturverzeichnis [Ahl02] A HLERS, Ernst: Leinenlos. In: c’t (2002), Nr. 25, S. 200 [Bad04] BADACH, Anatol: Voice over IP - Die Technik. Carl Hanser Verlag, 2004 [EKK04] E VA -K ATHARINA K UNST, Jürgen Q.: Linux-Treiber entwickeln: Gerätetreiber für Kernel 2.6 systematisch eingeführt. dpunkt-Verlag, 2004 [Ger07] G ERGELEIT, Prof. Dr. M.: WLAN Einführung. 2007. – Vorlesungsfolien der Veranstaltung Telekommunikation [HM03] H EIN, Mathias ; M ACIEJEWSKI, Dr. B.: Wireless LAN. Franzis’ Verlag, 2003 [JC02] J ONATHAN C ORBERT, Alessandro R.: Linux-Gerätetreiber: [deckt Kernel 2.4 ab]. O’Reilly, 2002 [Kaf05] K AFKA, Gerhard: WLAN. Carl Hanser Verlag, 2005 [Sar07] S ARACOGLU, Nuray: Vermessung und Vergleich von „Switched-WLANArchitekturen“ mit besonderer Berücksichtigung der Roaming Verzögerung, FH-Wiesbaden, Diplomarbeit, 2007 [Tan03] TANENBAUM, Andrew S.: Computernetze. Bd. 4.Auflage. Pearson Studium, 2003 83 Kapitel 10. Literaturverzeichnis 84 Kapitel 11 Weblinks Verzeichnis [IEE] IEEE 802.11. 11.html http://standards.ieee.org/getieee802/802. [Kap07] K APS, Reik: Linux-WLAN: ath5k löst langfristig MadWifi ab. In: heise newsticker (2007), 09, Nr. 96359. http://www.heise.de/newsticker/ meldung/96359 [Mü05] M ÜLDER, Uwe: Konzept und Implementierung einer offenen Switched WLAN Infrastruktur, FH-Wiesbaden, Diplomarbeit, 2005. http: //www.informatik.fh-wiesbaden.de/~gergelei/Dipl_Uwe_ Muelder.pdf [Rin] Ringmaster von Trapeznetworks. com/products/ringmaster/ http://www.trapezenetworks. [RS05] R AMANI, Ishwar ; S AVAGE, Stefan: SyncScan: Practical Fast Handoff for 802.11 Infrastructure Networks. University of California http://www.cs. ucsd.edu/~iramani/sync_scan.pdf [sca] Post mit ’scan complete event’. http://madwifi.org/ticket/108 [sie] http://www.automation.siemens.com/download/internet/ cache/3/1236966/pub/en/e20001-a11-m116-v1-7600.pdf [Tou] T OURRILHES, Jean: Wireless Extensions for Linux. http://www.hpl.hp. com/personal/Jean_Tourrilhes/Linux/Linux.Wireless. Extensions.html 85 Kapitel 11. Weblinks Verzeichnis [vBr] Virtuelle Bridge für Linux. http://www.linux-foundation.org/en/ Net:Bridge [VWL] WLAN 2,4 GHz Allgemeinzuteilung von Frequenzen im Frequenzbereich 2400,0 - 2483,5 MHz für die Nutzung durch die Allgemeinheit in lokalen Netzwerken; Wireless Local Area Networks (WLAN- Funkanwendungen). Vfg. 89/03. http://www.bundesnetzagentur.de/media/ archive/313.pdf 86