Facharbeit Physik - Arnold-Gymnasium Neustadt bei Coburg: Home
Facharbeit Physik - Arnold-Gymnasium Neustadt bei Coburg: Home
Facharbeit Physik - Arnold-Gymnasium Neustadt bei Coburg: Home
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>Arnold</strong>–<strong>Gymnasium</strong> Abiturjahrgang 2010<br />
<strong>Neustadt</strong> <strong>bei</strong> <strong>Coburg</strong><br />
<strong>Fachar<strong>bei</strong>t</strong><br />
aus dem Fach<br />
<strong>Physik</strong><br />
Thema: Lateration via Wireless Local Area Network<br />
Verfasser: Alexander Bleitner<br />
Kursleiter: Arno Hoffmann<br />
Themenstellung: 2. März 2009 Abgabetermin: 29. Januar 2010<br />
Bewertung: Notenpunkte für die schriftliche Ar<strong>bei</strong>t:<br />
Notenpunkte für die mündliche Prüfung:<br />
Gesamtleistung [(3 * s + m)]:<br />
Gesamtleistung (einfache Wertung):<br />
[(3 * s + m) : 4 gerundet]<br />
Gesamtleistung (doppelte Wertung):<br />
[(3 * s + m) : 2 gerundet]<br />
Notenpunkte eingetragen am Unterschrift des Kursleiters<br />
Datum Unterschrift des Kollegstufenbetreuers
Inhaltsverzeichnis<br />
I Einleitung 4<br />
II Theorie 5<br />
1 Verfahren zur Positionsbestimmung 5<br />
1.1 (Tri–)Angulation . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />
1.2 (Tri–/Multi–)Lateration . . . . . . . . . . . . . . . . . . . . . . 6<br />
1.2.1 Trilateration . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />
1.2.2 Multilateration . . . . . . . . . . . . . . . . . . . . . . . 7<br />
2 Verfahren zur Entfernungsbestimmung 7<br />
2.1 Direktes Messen . . . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />
2.2 Indirektes Messen . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />
2.2.1 Laufzeitmessung . . . . . . . . . . . . . . . . . . . . . . 8<br />
2.2.2 Messung der Signalstärke . . . . . . . . . . . . . . . . . . 9<br />
2.3 Relevanz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />
2.4 Laufzeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />
III Praxis 12<br />
3 Implementierung 12<br />
3.1 Plattform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />
3.2 Messung von Zeitintervallen im ns–Bereich . . . . . . . . . . . . 12<br />
3.3 Berechnung der Entfernung x . . . . . . . . . . . . . . . . . . . 12<br />
3.4 Genauigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />
3.5 Softwaretechnische Implementierung . . . . . . . . . . . . . . . 14<br />
4 Messungen 15<br />
4.1 Versuchsaufbau und Durchführung . . . . . . . . . . . . . . . . 15<br />
4.2 Auswertung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />
4.2.1 Analyse und graphische Darstellung . . . . . . . . . . . . 15<br />
4.2.2 Deutung . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />
IV Schluss 19<br />
2
V Anhang 20<br />
5 Herleitungen 20<br />
5.1 zu 1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />
5.2 zu 2.2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />
5.3 zu 2.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />
5.4 zu 3.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />
5.5 zu 3.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />
6 Source–Code 22<br />
6.1 Kernel–Anpassung . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />
6.2 Kernel–Modul . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />
6.3 Messung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24<br />
6.4 Datentransfer und Durchführung der Messung . . . . . . . . . . 25<br />
6.5 Auswertung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26<br />
VI Literaturverzeichnis 28<br />
3
Teil I<br />
Einleitung<br />
Stellen Sie sich vor, sie befinden sich in einem fremden Bürogebäude. Sie su-<br />
chen ein Zimmer, in dem Sie noch nie waren. Wie wäre es jetzt, eine Art<br />
Navigationssystem innerhalb des Hauses zu besitzen?<br />
Ich habe mir als <strong>Fachar<strong>bei</strong>t</strong>sthema vorgenommen, die Laufzeit von WLAN–<br />
Signalen zu messen, um damit die Position von z.B. einem Laptop bestimmen<br />
zu können. Damit wäre dann ein solches Positionierungssystem realisierbar,<br />
denn aus der Entfernung von genügenden Referenzpunkten ließe sich dann<br />
die Position bestimmen. Es fehlte nur noch ein Name für das Projekt: ” tri-<br />
via“, TRIangulation VIA Wireless Local Area Network (WLAN), wie ich die<br />
<strong>Fachar<strong>bei</strong>t</strong> zuerst betiteln wollte. Die Bezeichnung ist zwar, wie sich später<br />
herausstellen sollte, nicht ganz korrekt, fasst aber das Thema in weitestem<br />
Sinne auf.<br />
Zum Aufbau der Ar<strong>bei</strong>t ist noch zu sagen, dass alle Formeln, die nicht von<br />
anderen Quellen übernommen wurden, im Anhang zu finden sind.<br />
4
Teil II<br />
Theorie<br />
1 Verfahren zur Positionsbestimmung<br />
1.1 (Tri–)Angulation<br />
Das Prinzip der Triangulation beruht auf dem Messen zweier Winkel α und<br />
β zwischen der Verbindungsstrecke von zwei Fixpunkten F1 und F2 und den<br />
jeweils zugehörigen Strecken zu Punkt P, dessen Position bestimmt werden<br />
soll, sowie der Entfernung F1F2 der <strong>bei</strong>den Fixpunkte. Das gesamte Messsy-<br />
stem lässt sich durch das Dreieck ∆F1F2P (lat. triangulare: dreieckig machen<br />
[1]) beschreiben (Abb. 1):<br />
Abb. 1:<br />
Triangulation<br />
F2<br />
F1<br />
β<br />
α<br />
Nun lassen sich mit Hilfe des aus der Dreiecksinnenwinkelsumme erhaltenen<br />
Winkels<br />
γ<br />
P<br />
γ = 180 ◦ − α − β (1)<br />
und des Sinussatzes die übrigen Strecken F1P und F2P nach der Formel<br />
bzw.<br />
berechnen.<br />
F2P = F1F2 ∗ sin(α)<br />
sin(γ)<br />
F1P = F1F2 ∗ sin(β)<br />
sin(γ)<br />
5<br />
(2)<br />
(3)
Übertragen auf das Orten im WLAN werden demnach zwei Access–Points<br />
benötigt, um ein Laptop zu lokalisieren. Da es nun aber eine elementare Ei-<br />
genschaft von elektromagnetischen Wellen, aus denen WLAN–Signale beste-<br />
hen, ist, dass sie sich orthogonal zum Senderdipol (Antenne) ausbreiten (Abb.<br />
2), die Abstrahlung also in alle Richtungen senkrecht zur Antenne erfolgt, ist<br />
die Triangulation auf Basis dieses Systems nicht möglich, da die dazu nötigen<br />
Winkel α und β nicht bestimmbar sind.<br />
Abb. 2:<br />
Ausbreitung<br />
elektroma-<br />
gnetischer<br />
Wellen<br />
Um eine solche Messung trotzdem durchführen zu können, muss der Abstrahl-<br />
winkel, der <strong>bei</strong> normalen Antennen eben 360 ◦ beträgt, eingeschränkt werden.<br />
Dadurch wird die Antenne zu einer Richtfunkantenne. Diese hat ihr Sende–<br />
/Empfangsmaximum, wenn sie direkt auf ihr Gegenüber zeigt und dadurch in<br />
einem bestimmten Winkel zum zweiten Fixpunkt steht.<br />
Dieses Verfahren hat zwei große Nachteile. Zum einen muss die Antenne auf ih-<br />
ren Kommunikationspartner ausgerichtet sein. Dazu ist eine mechanische Vor-<br />
richtung nötig, was wiederum Verschleiß und einen hohen technischen Aufwand<br />
bedeutet. Zum anderen hat die Antenne eben nur einen bestimmten Abstrah-<br />
lungsbereich, weshalb andere WLAN–Geräte, die sich nicht in diesem befin-<br />
den, nicht mit diesem Access–Point kommunizieren können. Eine verläßliche<br />
WLAN–Infrastruktur ist also mit dieser Technik nicht vereinbar.<br />
1.2 (Tri–/Multi–)Lateration<br />
Die Tri– bzw. Multi–Lateration stellt ein Lokalisationsverfahren dar, das im<br />
Gegensatz zur Triangulation nicht auf dem Messen von Winkeln, sondern auf<br />
dem Ermitteln von Entfernungen zu den jeweiligen Fixpunkten aufbaut.<br />
6
1.2.1 Trilateration<br />
Um den Ort eines Punktes P in einer Ebene zu bestimmen, sind mit dieser<br />
Methode drei Fixpunkte Fi nötig. Dazu zieht man Kreise mit den entsprechen-<br />
den Radien PFi um die Fixpunkte, um deren Schnittpunkt zu ermitteln, der<br />
dann dem gesuchten Punkt P entspricht (vgl. Abb. 3).<br />
Abb. 3:<br />
Trilateration<br />
F2<br />
1.2.2 Multilateration<br />
F1<br />
P<br />
Ist eine Lokalisierung im dreidimensionalen Raum gewünscht, so benötigt man<br />
vier Fixpunkte und anstelle des Schnittpunktes dreier Kreise ist der der ent-<br />
sprechenden Kugeln zu bestimmen. Ansonsten sind die Verfahren identisch.<br />
Des Weiteren kann man, um Ungenauigkeiten <strong>bei</strong> der Entfernungsmessung<br />
auszugleichen, zusätzliche Bezugspunkte verwenden und dann die erhaltenen<br />
Schnittpunkte mitteln.<br />
2 Verfahren zur Entfernungsbestimmung<br />
2.1 Direktes Messen<br />
Das direkte Messen einer Entfernung, z.B. den Abstand zwischen zwei Punkten<br />
auf einem Blatt Papier mit einem Lineal oder ähnlichen, ist in diesem Fall<br />
sicher die geläufigste und einfachste Methode, Entfernungen zu messen. Sie ist<br />
jedoch nicht auf jede Situation anwendbar. Ist z.B. die Entfernung zwischen<br />
zwei Schiffen, Kontinenten oder gar Planeten gefragt, stößt dieses Verfahren<br />
schnell an seine Grenzen. Hier sind indirekte Messmethoden effizienter.<br />
7<br />
F3
2.2 Indirektes Messen<br />
Im Gegensatz zur direkten Messung wird <strong>bei</strong> der indirekten Messung erst eine<br />
andere Größe als die Gesuchte gemessen, die jedoch im Zusammenhang mit der<br />
gesuchten Größe steht und deshalb Rückschlüsse auf diese ermöglicht. Diese<br />
Art der Messung wird vorwiegend dort eingesetzt, wo das direkte Messen zu un-<br />
genau oder wie bereits oben beschrieben unpraktisch bzw. nicht durchführbar<br />
ist. Da<strong>bei</strong> ist wichtig, dass die <strong>bei</strong>den Messgrößen in einem möglichst simplen<br />
Verhältnis zueinander stehen, um Fehler <strong>bei</strong> der Umrechnung gering zu halten.<br />
Geradezu prädestiniert für diese Methode sind Größen, die direkt oder indi-<br />
rekt proportional zueinander sind. Zur Lokalisierung sind folgende 7 indirekte<br />
Messverfahren bekannt [3]:<br />
• COO: engl. Cell of Origin: Abstammungszelle (Gebiet, in dem das Signal<br />
empfangen wird)<br />
• AOA: engl. Angel of Arival: Eingangswinkel (Triangulation)<br />
• RSS: engl. Received Signal Strength: Eingangssignalstärke<br />
• SNR: engl. Signal to Noise Ratio: Signal–Rausch–Verhältnis (ähnlich<br />
RSS)<br />
• TOA: engl. Time of Arival: Ankunftszeit (Laufzeit)<br />
• RTOF: engl. Round Trip Time of Flight: Signalumlaufzeit (siehe 2.4)<br />
• TDOA: engl. Time Difference of Arival: Unterschied zwischen Ankufts-<br />
zeiten (siehe 2.2.1)<br />
Im Detail werden die Laufzeit– und die Signalstärkemessung vorgestellt.<br />
2.2.1 Laufzeitmessung<br />
Die Laufzeitmessung bezeichnet ein Verfahren zur Entfernungsmessung, <strong>bei</strong><br />
dem die Zeit t, die ein Signal zum Zurücklegen der Strecke vom Sender zum<br />
Empfänger benötigt, gemessen und aus diesem Wert mit Hilfe der Ausbrei-<br />
tungsgeschwindigkeit v des Signals die Entfernung zwischen <strong>bei</strong>den berechnet<br />
wird. Ist diese Geschwindigkeit, wie z.B. <strong>bei</strong> elektromagnetischen Wellen kon-<br />
stant, so besteht die Beziehung<br />
⇒ s = v ∗ t (4)<br />
mit der die gesuchte Entfernung s berechnet werden kann.<br />
8
2.2.2 Messung der Signalstärke<br />
Elektromagnetische Wellen werden <strong>bei</strong> ihrer Ausbreitung im Raum sowohl<br />
durch Freiraumdämpfung[4] als auch durch Absorption[5] des Mediums ab-<br />
geschwächt. Ein entsprechendes WLAN–Signal verliert demnach je nach Ent-<br />
fernung zwischen Sender und Empfänger einen entsprechenden Energiebetrag.<br />
Im Falle von WLAN spricht man, wenn es um die Signalstärke geht, meist<br />
vom RSSI (Maß für die RSS), dessen Berechnung aus der Eingangsenergie<br />
der WLAN–Antenne, die wiederum von oben genannter Freiraumdämpfung<br />
und Absorption abhängt, in [6] beschrieben wird. Auf die Darstellung und Er-<br />
klärung der diese Phänomene beschreibenden Formeln wird hier verzichtet, da<br />
sie nur von geringer Bedeutung für diese <strong>Fachar<strong>bei</strong>t</strong> sind. Das Ergebnis der<br />
Messung hängt da<strong>bei</strong> stark von äußeren Einflüssen, wie z.B. baulichen Gege-<br />
benheiten, die Veränderungen des Absorptionskoeffizienten zufolge haben, ab,<br />
weshalb <strong>bei</strong> derartigen Verfahren häufig spezielle Karten (sog. Fingerprint–<br />
Maps, Abb. 4 (jede der drei Grundfarben steht für einen Access–Point)) von<br />
der Umgebung erstellt werden, in denen der RSSI graphisch dargestellt ist,<br />
um entsprechende Stellen konkreten Empfangsstärken zuzuordnen. Damit wird<br />
rückwirkend jedem vorkommenden RSSI–Wert ein konkretes Gebiet im Emp-<br />
fangsbereich des Access–Point zugeordnet.<br />
Abb. 4:<br />
Fingerprint–<br />
Map[7]<br />
2.3 Relevanz<br />
Jedes der vorgestellten Verfahren hat seine Vor– und Nachteile. Das direkte<br />
Messen der Entfernung zwischen Objekten ist zwar relativ genau, jedoch sind<br />
mechanische Hindernisse wie z.B. Mauern, die in Gebäuden durchaus vorkom-<br />
men könnten, nur mit sehr hohem Aufwand überwindbar. Deswegen scheidet<br />
sie von vorne herein aus.<br />
9
Lokalisierungsverfahren via Signalstärkemessung wurden bereits mehrfach im-<br />
plementiert (z.B. ” RADAR“ von Microsoft TM [8] und [9]). Das Erstellen und<br />
Betreuen der oben beschriebenen Fingerprint–Maps ist sehr zeitaufwendig.<br />
Will man eine hohe Genauigkeit erreichen, muss die Karte ständig an bau-<br />
liche Veränderungen und andere Einflüße angepasst werden.<br />
Im Gegensatz dazu ist die Laufzeitmessung von äußeren Einflüssen, wenn man<br />
über wenige, in der Praxis sehr gering schwankende Faktoren, wie z.B. der<br />
Abhängigkeit der Lichtgeschwindigkeit von der Dichte des Medium, hinweg-<br />
sieht, weitgehend unabhängig. Die Schwierigkeit da<strong>bei</strong> stellen hingegen die<br />
extrem hohe Ausbreitungsgeschwindigkeit elektromagnetischer Wellen und die<br />
damit verbundenen sehr kurzen Zeitintervalle dar.<br />
2.4 Laufzeit<br />
Bereits aus der Tatsache, dass man die Lichtgeschwindigkeit nicht überholen<br />
kann, dass also keine größeren Geschwindigkeiten als die des Lichts existie-<br />
ren, ergibt sich die Unmöglichkeit der direkten Messbarkeit der Laufzeit von<br />
elektromagnetischen Wellen. Man kann eben nicht am Ort S (Sender) auf eine<br />
Stoppuhr drücken, ein elektromagnetisches Signal aussenden, vor diesem an<br />
Ort E (Empfänger) ankommen und <strong>bei</strong> dessen Ankunft die Laufzeit stoppen.<br />
Wohl kann man aber in S bleiben, das Signal in E reflektieren lassen und <strong>bei</strong>m<br />
Zurückkehren desselbigen in S die Messung beenden. Da<strong>bei</strong> sind die ermittelte<br />
Zeit (RTOF), sowie die vom Signal zurückgelegte Strecke doppelt so groß wie<br />
die Gesuchten, aber die Messung möglich.<br />
Im Fall von WLAN–Signalen handelt es sich da<strong>bei</strong> um Datenpakete, die hin–<br />
und hergeschickt werden. Die entsprechende Spezifikation [10] schreibt fest,<br />
dass eingehende Datenpakete, soweit sie korrekt empfangen wurden, mit einem<br />
Acknowledgement–Paket (engl. Acknowledgement: Bestätigung) beantwortet<br />
werden müssen. Durch diese Prozedur ist es nicht erforderlich, explizit eine<br />
Antwort anzufordern, was die Implementierung vereinfacht. Da<strong>bei</strong> ist zu be-<br />
achten, dass die Eingangsprüfung und Antwortgenerierung in E weitere Zeit tG<br />
in Anspruch nehmen. Außerdem hat jedes Paket eine gewisse Länge. Es dauert<br />
also eine entsprechende Zeit tV , bis der jeweilige Sende– bzw. Empfangsprozess<br />
abgeschlossen ist. Soweit zur Laufzeitmessung nur Pakete der gleichen Länge<br />
verwendet werden, ist tV konstant. Die oben beschriebene Antwort übernimmt<br />
die Firmware der WLAN–Karte. Somit ist die dafür benötigte Zeit tG weitge-<br />
hend unabhängig vom verwendeten (Betriebs–)System und dessen Auslastung.<br />
Daher werde auch tG als konstant angesehen. Beginnt man die Zeitmessung<br />
10
direkt vor dem Senden des Pakets in S und beendet sie gleich nach dem Ab-<br />
schluss der Empfangstätigkeit, ergibt sich folgende Formel für die gesuchte<br />
Signallaufzeit (vgl. Abb. 5)<br />
tSignal + 2 ∗ tV + tG = t ′ S = tS<br />
(5)<br />
⇒ tSignal = tS − (2 ∗ tV + tG) (6)<br />
Dies entspricht in Abbildung 5 einem Verschieben von t ′ V um tV +tG auf t ′′ V . Da<br />
die Steigung der gestrichelten Linie der Geschwindigkeit des Signals entspricht<br />
und diese für den Bereich tSignal nun konstant ist, lässt sich nach<br />
⇒ x = vSignal<br />
2 ∗ tSignal<br />
aus der Signallaufzeit die Entfernung zwischen E und S berechnen. Da tV und<br />
tG konstant sind, steht tS also in unmittelbarem Zusammenhang mit x. Die<br />
Konstatante 2 ∗ tV + tG ist noch empirisch zu bestimmen. D.h. in WLAN–<br />
Netzen kann die Entfernung zwischen zwei Geräten allein durch Zeitmessung<br />
an einem der <strong>bei</strong>den mit Hilfe obiger Formel bestimmt werden.<br />
Abb. 5:<br />
Signal-<br />
Strecke<br />
übertragung<br />
S<br />
S ′<br />
E<br />
s<br />
tV<br />
tSignal<br />
tV<br />
11<br />
t ′′ t<br />
V<br />
′ S<br />
tG<br />
tS<br />
tV<br />
t ′ G<br />
t ′ V<br />
tV<br />
x ′<br />
x<br />
(7)<br />
Zeit
Teil III<br />
Praxis<br />
3 Implementierung<br />
3.1 Plattform<br />
Als Plattform für das Projekt habe ich mich für die OpenSource Firmware DD–<br />
WRT entschieden. Sie ist quelloffen und damit wesentlich einfacher anpass–<br />
und erweiterbar als proprietäre Systeme. Die Hardware–Basis bildet der Buf-<br />
falo WHR–G300N Router/Access–Point. Dieser besitzt das RaLink RT3052<br />
SoC[11] (engl. System on a Chip: Ein–Chip–System [12]) mit MIPS–CPU und<br />
RaLink RT2860 Netzwerkkarte.<br />
3.2 Messung von Zeitintervallen im ns–Bereich<br />
Gewöhnliche Zeitmessungen am PC bedürfen keiner Genauigkeit, die 1µs un-<br />
terschreitet. Um doch genauere Ergebnisse erzielen zu können, bieten viele<br />
CPU–Architekturen einen Time Stamp Counter, der <strong>bei</strong> jedem CPU–Zyklus<br />
inkrementiert (um eins erhöht) wird. Dieser besteht im Falle der 384Mhz<br />
MIPS24KEc CPU[11] des RT3052 SoC aus dem Register 9 des Co–Prozes-<br />
sors[13], das mit dem Assembler–Befehl<br />
mfc0 $t, 9;<br />
ausgelesen werden kann. Man ließt nun dieses Register am Anfang und am<br />
Ende der Messung aus und zählt die vergangenen CPU–Takte. Die Abweichung<br />
beträgt dann maximal 1 Takt pro Auslesevorgang, d.h. insgesamt 2 Takte.<br />
Beim MIPS24KEc entsprechen diese ca. 5, 208ns. Die Zeitmessung ist also<br />
sehr genau.<br />
3.3 Berechnung der Entfernung x<br />
Definition<br />
8 m<br />
Ausbreitungsgeschwindigkeit[15]: vSignal = c = 2, 99792458 ∗ 10 s<br />
CPU–Frequenz[11]: fCPU = 3.84 ∗ 108hz Entfernung: x<br />
Anzahl der vergangenen CPU–Takte: k (∼ tS)<br />
12
Formel<br />
x =<br />
c ∗ k<br />
2 ∗ fCPU<br />
= 0, 39035476m ∗ k (8)<br />
c und fCPU sind konstant. Lediglich k schwankt um die Messungenauigkeit ∆k.<br />
Damit beträgt der Fehler:<br />
3.4 Genauigkeit<br />
c ∗ ∆k<br />
⇒ ∆x = = 0, 39035476m ∗ ∆k (9)<br />
2 ∗ fCPU<br />
Das Messen von Zeitintervallen im ns–Bereich ist, wie bereits in 3.2 beschrie-<br />
ben, mit PC–Hardware nur mit hohem Aufwand möglich. Außerdem kommt es<br />
<strong>bei</strong> der Kommunikation zwischen CPU und Netzwerkkarte wegen der im Ver-<br />
gleich zum CPU–Takt geringen Geschwindigkeit zu Verzögerungen und Un-<br />
genauigkeiten. Deshalb gab es nach meinem Kenntnisstand bisher nur einen<br />
Versuch, die Laufzeitmessung von WLAN–Paketen auf dieser Plattform durch-<br />
zuführen [14]. Es existieren jedoch mathematische Algorithmen, die dieses Pro-<br />
blem minimieren.<br />
Jede Messung hat einen gewissen Fehler. Führt man eine Messung mehrmals<br />
jeweils unabhängig voneinander (z.B. unter immer gleichen Ausgangsbedin-<br />
gungen) durch, so erhält man Ergebnisse, die um einen Mittelwert schwanken.<br />
Nimmt man nun an, E(M) sei der Erwartungswert der Zufallsgröße<br />
M := ” Messung“<br />
mit den Einzelmessungen mi und den relativen Häufigkeiten der Einzelmes-<br />
sungen HR(mi) (= 1 , da alle Einzelmessungen die gleiche Wahrscheinlichkeit<br />
n<br />
haben), so gilt:<br />
E(M) = m (10)<br />
Damit entspricht der Erwartungswert dem arithmetischen Mittel m der Ein-<br />
zelmessungen. Die Zufallsgröße M hat die Standardabweichung σ, die nach der<br />
Formel ([16] Seite 109)<br />
σ = σ √ n<br />
(11)<br />
mit wachsendem n abnimmt. Das bedeutet, dass E(M) und damit auch m<br />
<strong>bei</strong> steigender Anzahl von Messungen immer genauer wird. Damit kann das<br />
Messergebnis, sofern keine systematischen Fehler bestehen, unabhängig vom<br />
Messverfahren durch n–fache Wiederholung weit präzisiert werden.<br />
13
Angewandt auf (9) wird dadurch aus dem Fehler ∆x der Entfernung:<br />
∆x =<br />
c ∗ ∆k<br />
2 ∗ fCPU ∗ √ n<br />
= 0, 39035476m ∗ ∆k<br />
√ n<br />
(12)<br />
Um zu erreichen, dass die maximale Abweichung ∆x ≤ 1m ist, der berechne-<br />
te Wert also um weniger als 1m vom tatsächlichen Wert abweicht, muss ∆k<br />
weniger als<br />
√ n<br />
0,39035476 betragen.<br />
3.5 Softwaretechnische Implementierung<br />
Das Betriebssystem eines Computers dient anderen Programmen hauptsächlich<br />
zum Zugriff auf die Hardware des PCs. Dazu stellt es den Programmen Funk-<br />
tionen bereit, die sie ausführen können, um mit der Hardware zu kommu-<br />
nizieren. Dieser abstrahierte Zugriff bedeutet jedoch, dass Zeitverzögerungen<br />
eintreten. Da diese <strong>bei</strong> Laufzeiten im ns–Bereich einen erheblichen Fehler ver-<br />
ursachen würden, muss die Zeitmessung direkt im Betriebssystem verankert<br />
werden. Das in 3.2 beschriebene Auslesen des Time Stamp Counters ist auf-<br />
grund sicherheitstechnischer Aspekte auch nur dem Betriebssystem möglich.<br />
Die Implementierung muss also im Betriebssystem selbst erfolgen.<br />
Das hat weitreichende Folgen für den Aufbau des Programmcodes, deren Er-<br />
klärung den Rahmen einer <strong>Fachar<strong>bei</strong>t</strong> sprengen würde, da solche Anpassungen<br />
des Betriebssystems einen tiefen Eingriff in die Struktur desselbigen bedeuten.<br />
Wichtig für den physikalischen Hintergrund der Messung ist, dass die An-<br />
zahl der vergangenen CPU–Takte <strong>bei</strong> der Ausführung der Sendefunktion des<br />
Betriebssystems, die die Netzwerkkarte direkt anspricht, gemessen wird. Die<br />
eigentliche Übermittlung eines Netzwerk–Pakets und die Überprüfung einge-<br />
hender Pakete übernimmt die Firmware der Netzwerkkarte, weshalb <strong>bei</strong> Netz-<br />
werkkarten, mit Chipsätzen, wie dem RT2860 von RaLink, für die keine quell-<br />
offene Firmware verfügbar ist, keine softwareseitige Möglichkeit besteht, noch<br />
näher am Sendevorgang selbst zu messen.<br />
Abgesehen davon, dass meiner Kenntniss nach keine quelloffene Firmware für<br />
irgendeine WLAN–Karte existiert, würde man durch die Verlagerung der Mes-<br />
sung in die Firmware, Messung auf Netzwerkkarten mit exakt diesem Chipsatz<br />
begrenzen.<br />
14
4 Messungen<br />
4.1 Versuchsaufbau und Durchführung<br />
Der Versuchsaufbau besteht aus einem Access–Point (in diesem Fall dem WHR–<br />
G300N Router/Access–Point von Buffalo) und einem Laptop (IBM Thinkpad<br />
X30) bzw. einem Standard–PC (Eigenbau), die im Abstand x vom Access–<br />
Point aufgestellt werden (vgl. Abb. 6). Da<strong>bei</strong> ist darauf zu achten, potentielle<br />
Fehlerquellen wie z.B. Interferenzen, die durch zwischen den Geräten stehende<br />
Objekte zustande kommen können, auf ein Minimum zu reduzieren, um eine<br />
möglichst hohe Genauigkeit zu erreichen.<br />
Abb. 6:<br />
Versuchs-<br />
aufbau<br />
S<br />
x<br />
Der Abstand x wird in 30cm–Schritten bis auf 15m erhöht. Da<strong>bei</strong> erfolgt jeweils<br />
eine Entfernungsmessung mit 10000 Paketen mit dem Programmaufruf:<br />
./trivia_measure 10000 <br />
Zur Überprüfung ermittelt man die Daten mit jeweils 100000 Paketen <strong>bei</strong><br />
einem gröberen 3m–Raster mit dem entsprechend abgewandelten Befehl.<br />
4.2 Auswertung<br />
4.2.1 Analyse und graphische Darstellung<br />
Zur Analyse der Messung ruft man<br />
./trivia_data <br />
auf und erhält die Datei:<br />
.dat<br />
15<br />
E
In dieser befindet sich nun die Verteilung der relativen Häufigkeiten HR(ki) der<br />
Laufzeiten ki (in CPU–Takten) für die Messung, die sich mit einem Datenplot-<br />
ter, wie gnuplot, graphisch darstellen lässt. Für die folgende Verteilung (Abb.<br />
7) wurden ca. 600000 Einzelmessungen mit einem IBM Thinkpad X30 Laptop<br />
(WLAN–Chipsatz Cisco Aironet Wireless 802.11b) und einem Abstand von<br />
8m zum Access–Point durchgeführt.<br />
Abb. 7:<br />
Cisco<br />
600000<br />
Häufigkeit<br />
3500<br />
3000<br />
2500<br />
2000<br />
1500<br />
1000<br />
500<br />
0<br />
2500 7500 12500 17500 22500 27500 32500<br />
Vergangene CPU–Takte<br />
Im Vergleich dazu eine Verteilung (Abb. 8) mit ca. 1800000 Einzelmessungen<br />
und einem Standard–PC mit dem WLAN–Chipsatz RaLink RT2500 802.11g<br />
<strong>bei</strong> 0, 5m Entfernung.<br />
Abb. 8:<br />
RaLink<br />
1800000<br />
Häufigkeit<br />
3500<br />
3000<br />
2500<br />
2000<br />
1500<br />
1000<br />
500<br />
0<br />
2500 7500 12500 17500 22500 27500 32500<br />
Vergangene CPU–Takte<br />
16
4.2.2 Deutung<br />
Man stellt fest, dass <strong>bei</strong>de Verteilungen ihr Hauptmaximum <strong>bei</strong> ca. 12400 auf-<br />
weisen. Jedoch liegt ihr Nebenmaximum <strong>bei</strong> verschiedenen Werten. Beim PC<br />
mit RaLink–Chipsatz liegt es <strong>bei</strong> ca. 9000. Das der Messung des Laptops mit<br />
Cisco–WLAN–Karte ist <strong>bei</strong> ca. 4000 erkennbar, auch wenn es wegen der gerin-<br />
geren Anzahl an Messungen weniger stark ausgeprägt ist. Der Erwartungswert<br />
der Verteilungen, der ein Maß dafür ist, welchen Wert die durchschnittliche<br />
Laufzeit hat, beträgt im Falle der Messung mit Cisco–Netzwerk–Karte ca.<br />
11948; der der anderen Messung ca. 12054. Man könnte nun annehmen, dass<br />
der größere Erwartungswert der RaLink–Messung trotz geringerer Entfernung<br />
zum Access–Point durch die unterschiedliche Hardware zu erklären ist. Doch<br />
weitere Messungen mit verschiedenen Abständen mit <strong>bei</strong>den Systemen zeig-<br />
ten, dass der Unterschied der Erwartungswerte zwar hardwarebedingt ist, aber<br />
kein Zusammenhang zwischen Erwartungswert und dem tatsächlichen Abstand<br />
nachweisbar ist.<br />
Auch die Annahme, das Hauptmaximum entspräche der Timeout–Zeit, also<br />
der Zeit, nach der die Sendefunktion das Warten auf eine Bestätigung oh-<br />
ne erfolgreiche Antwort (vgl. Acknowledgement–Verfahren <strong>bei</strong> 2.4) abbricht,<br />
erwies sich als falsch, da einerseits die (wenn auch geringen) Messergebnis-<br />
se im Bereich zwischen 17500 und 20000 (Abb. 9) nicht erklärbar wären und<br />
andererseits die Erwartungswerte der Verteilungen im Bereich unterhalb des<br />
Hauptmaximums in weiterhin keinem Verhältnis zur Entfernung stünden.<br />
Abb. 9:<br />
Ausschnitt 800<br />
aus Abb. 8<br />
600<br />
Häufigkeit<br />
1000<br />
400<br />
200<br />
0<br />
11250 12500 13750 15000 16250 17500 18750 20000<br />
Vergangene CPU–Takte<br />
Eine weitere Theorie, die das Zustandekommen von Haupt– und Nebenma-<br />
17
xima in Abbildung 8 bzw. 9 erklärt, besagt, dass das Senden der Netzwerk-<br />
pakete, die erfolgreich <strong>bei</strong>m Empfänger ankommen, das 1. Nebenmaximum<br />
(links vom Hauptmaximum) erzeugten und die anderen Maxima durch das<br />
wiederholte Senden der restlichen Pakete aufgrund des in 2.4 beschriebenen<br />
Prüfverfahrens entstünden. Da sich die Informationen dann bereits im Cache<br />
(Zwischenspeicher) der WLAN–Karte befänden und nicht noch über die PCI–<br />
Bus–Anbindung zur Netzwerkkarte übertragen und dort aufbereitet werden<br />
müssten, dauerte das erneute Versenden der Pakete weniger lang, wodurch die<br />
Maxima dann näher zusammenrückten. Auf Abbildung 7 lässt sich diese These<br />
jedoch nicht anwenden und ist damit falsifiziert. Eine Lösung des Problems ist<br />
mir nicht ersichtlich.<br />
Warum die Messung letztenendes keinen Erfolg zeigt, kann nur vermutet wer-<br />
den. Ich nehme an, dass die Interna der Netzwerkkarte und ihre Verbindung<br />
zum Prozessor eine zu große unbekannte Zeitverzögerung und damit auch zu-<br />
viel Ungenauigkeit in die Messung bringen. Vielleicht ist auch die Art der<br />
Auswertung für das Problem ungeeignet.<br />
18
Teil IV<br />
Schluss<br />
Auch wenn die Laufzeitmessung zu keinem brauchbaren Ergebnis kam, heißt<br />
das nicht, das es prinzipiell unmöglich ist. Da durch [14] gezeigt wurde, dass<br />
das Verfahren, wenn auch anders implementiert, durchaus funktioniert, bin<br />
ich zuversichtlich, in nächster Zeit von weiteren Forschungsergebnissen in die-<br />
sem Bereich zu hören. Durch die Komplexität, die mit der Implementierung<br />
und Auswertung verbunden ist, wäre das Projekt wahrscheinlich an einer Uni-<br />
versität besser aufgehoben, und lässt somit noch Spielraum für kommende<br />
Verbesserungen.<br />
Für mich selbst bleibt neben den vielem Know–How, das ich mir im Rahmen<br />
dieser <strong>Fachar<strong>bei</strong>t</strong> angeeignet habe, die Erkenntnis, dass Software stets gut<br />
dokumentiert werden sollte, um anderen die Mitar<strong>bei</strong>t an diversen Projekten<br />
zu ermöglichen, oder um selbst aus fremdem Code zu lernen.<br />
19
Teil V<br />
Anhang<br />
5 Herleitungen<br />
5.1 zu 1.1<br />
Dreiecksinnenwinkelsumme<br />
Sinussatz<br />
Aus [16] Seite 27<br />
5.2 zu 2.2.1<br />
Berechnung von s<br />
Aus [15] Seite 11<br />
5.3 zu 2.4<br />
Berechnung von x<br />
Vgl. Abbildung 4<br />
Mit 5.2<br />
α + β + γ = 180 ◦<br />
⇒ γ = 180 ◦ − α − β<br />
F2P<br />
sin(α)<br />
= F1P<br />
sin(β)<br />
= F1F2<br />
sin(γ)<br />
⇒ F2P = F1F2 ∗ sin(α)<br />
sin(γ)<br />
⇒ F1P = F1F2 ∗ sin(β)<br />
sin(γ)<br />
vSignal = s<br />
t<br />
v = s<br />
t<br />
⇒ s = v ∗ t<br />
x = x ′<br />
= x + x′<br />
tSignal<br />
20<br />
= 2 ∗ x<br />
tSignal
5.4 zu 3.3<br />
Zusammenhang zwischen x und k<br />
⇒ x = vSignal ∗ tSignal<br />
2<br />
k ist die Anzahl der vergangen CPU–Takte während einer Signallaufzeit.<br />
Aus [15] Seite 18<br />
Mit 5.3<br />
x = s<br />
2 = vSignal ∗ tSignal<br />
2<br />
Einsetzen der Konstanten aus 3.3<br />
Einheitenprobe<br />
5.5 zu 3.4<br />
Beweis E(M) = m<br />
Aus [16] Seite 108<br />
Vgl. 3.4<br />
q.e.d.<br />
x =<br />
⇒ tSignal = k ∗ tCPU–Takt<br />
c ∗ k<br />
2 ∗ fCPU<br />
[x] =<br />
E(M) =<br />
=<br />
n<br />
i=1<br />
f = 1<br />
t<br />
⇒ t = 1<br />
f<br />
= vSignal ∗ k ∗ tCPU–Takt<br />
2<br />
m<br />
s<br />
hz<br />
= 0, 39035476m ∗ k<br />
= m<br />
s ∗ 1<br />
s<br />
= m<br />
n<br />
mi ∗ HR(mi)<br />
i=1<br />
mi ∗ 1<br />
n =<br />
21<br />
n<br />
mi<br />
i=1<br />
n<br />
= m<br />
= vSignal ∗ k<br />
2 ∗ fCPU–Takt
6 Source–Code<br />
6.1 Kernel–Anpassung<br />
Wie in 3.5 beschrieben, müssen Teile des Linux–Kernel angepasst werden, um<br />
die Messung durchführen zu können. Die Version des von mir verwendeten<br />
Kernels ist 2.6.23. Die Anpassungen beschränken sich auf die Datei:<br />
net/core/dev.c<br />
Um zu prüfen, ob eine Messung stattfinden soll, wird die globale Kernel–<br />
Variable trivia capture direkt nach dem Einbinden der Header–Files eingeführt<br />
und exportiert.<br />
i n t t r i v i a c a p t u r e = 0 ;<br />
EXPORT SYMBOL( t r i v i a c a p t u r e ) ;<br />
Nun die Zeitmessung selbst. Dazu definiert man am Anfang der Funktion<br />
dev hard start xmit die lokale Variablen ticks pre, ticks post und return value<br />
mit<br />
l o n g i n t t i c k s p r e ;<br />
l o n g i n t t i c k s p o s t ;<br />
i n t r e t u r n v a l u e ;<br />
und ersetzt<br />
r e t u r n dev−>h a r d s t a r t x m i t ( skb , dev ) ;<br />
durch:<br />
/∗ Time Stamp Counter a u s l e s e n ∗/<br />
a s m v o l a t i l e ( ” mfc0 %0, $9 ; nop ” : ”=r ” ( t i c k s p r e ) ) ;<br />
/∗ S e n d e f u n k t i o n ∗/<br />
r e t u r n v a l u e = dev−>h a r d s t a r t x m i t ( skb , dev ) ;<br />
/∗ e r n e u t Time Stamp Counter a u s l e s e n ∗/<br />
a s m v o l a t i l e ( ” mfc0 %0, $9 ; nop ” : ”=r ” ( t i c k s p o s t ) ) ;<br />
/∗ p r u e f e n , ob Messung e r f o l g t ∗/<br />
i f ( t r i v i a c a p t u r e == 1 ) {<br />
}<br />
/∗ D i f f e r e n z d e r b e i d e n Time Stamp Counter zusammen mit dem ∗/<br />
/∗ Name d e s N e t z w e r k i n t e r f a c e s i n den Kernel −Log s c h r e i b e n ∗/<br />
p r i n t k (KERN INFO ”:% s :% l i : \ n” , dev−>name , t i c k s p o s t − t i c k s p r e ) ;<br />
/∗ Rueckgabewert d e r S e n d e f u n k t i o n u e b e r g e b e n und F u n k t i o n beenden ∗/<br />
r e t u r n r e t u r n v a l u e ;<br />
Damit ist die Modifikation des Kernels, der jetzt neu compiliert werden kann,<br />
abgeschlossen.<br />
6.2 Kernel–Modul<br />
Das Initiieren und Beenden von Messungen wird vom Kernel–Modul trivia<br />
erledigt. Es muss daher geladen sein, um eine Messung durchzuführen.<br />
22
∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗\<br />
∗ f i l e : t r i v i a . c ∗<br />
∗ ∗<br />
∗ d e s c r i p t i o n : Kernel −Modul zum I n i t i i e r e n und Beenden d e r Z e i t m e s s u n g ∗<br />
∗ ∗<br />
∗ a u t h o r : A l e x a n d e r B l e i t n e r ∗<br />
∗ ∗<br />
∗ c o p y r i g h t : 2010 by A l e x a n d e r B l e i t n e r ∗<br />
∗ ∗<br />
∗ l i c e n s e : GPL ∗<br />
∗ I t i s f r e e s o f t w a r e . You can r e d i s t r i b u t e i t and / o r modify i t ∗<br />
∗ under t h e terms o f t h e GNU G e n e r a l P u b l i c L i c e n s e a s p u b l i s h e d ∗<br />
∗ by t h e F r e e S o f t w a r e Foundation , e i t h e r v e r s i o n 3 o f t h e ∗<br />
∗ l i c e n s e , o r ( a t your own o p i n i o n ) any l a t e r v e r s i o n . ∗<br />
∗ ∗<br />
∗ T h i s code i s d i s t r i b u t e d i n t h e hope t h a t i t w i l l be u s e f u l , ∗<br />
∗ but WITHOUT ANY WARRANTY, w i t h o u t even t h e i m p l i e d w a r r a n t y o f ∗<br />
∗ MERCHANTABILITY o f FITNESS FOR A PARTICULAR PURPOSE. See t h e ∗<br />
∗ GNU G e n e r a l P u b l i c L i c e n s e f o r more d e t a i l s . ∗<br />
∗ ∗<br />
∗ You s h o u l d have r e c e i v e d a copy o f t h e GNU G e n e r a l P u b l i c ∗<br />
∗ L i c e n s e a l o n g w i t h t h i s f i l e . I f not , s e e ∗<br />
∗ . ∗<br />
∗ ∗<br />
\∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗/<br />
#i n c l u d e <br />
#i n c l u d e <br />
#i n c l u d e <br />
#i n c l u d e <br />
MODULE LICENSE( ”GPL” ) ;<br />
MODULE AUTHOR( ” A l e x a n d e r B l e i t n e r ” ) ;<br />
MODULE DESCRIPTION( ”En−/ d i s a b l e o u t p u t o f t r i v i a ’ s t i c k c o u n t e r ” ) ;<br />
s t r u c t p r o c d i r e n t r y ∗ t r i v i a ;<br />
e x t e r n i n t t r i v i a c a p t u r e ;<br />
s t a t i c c h a r p r o c f s b u f f e r [ 2 0 4 8 ] ;<br />
i n t t r i v i a r e a d ( c h a r ∗ b u f f e r , c h a r ∗∗ b u f f e r l o c a t i o n , o f f t o f f s e t ,<br />
i n t b u f f e r l e n g t h , i n t ∗ e o f , v o i d ∗ d a t a ) {<br />
i f ( o f f s e t > 0 ) {<br />
r e t u r n 0 ;<br />
}<br />
e l s e {<br />
r e t u r n s p r i n t f ( b u f f e r , ” S t a t u s : %i \n” , t r i v i a c a p t u r e ) ;<br />
}<br />
}<br />
i n t t r i v i a w r i t e ( s t r u c t f i l e ∗ f i l e , c o n s t c h a r ∗ b u f f e r , u n s i g n e d l o n g count ,<br />
v o i d ∗ d a t a ) {<br />
i n t v a l u e ;<br />
}<br />
i f ( c o u n t > 2 0 4 8 ) {<br />
c o u n t = 2 0 4 8 ;<br />
}<br />
i f ( c o p y f r o m u s e r ( p r o c f s b u f f e r , b u f f e r , c o u n t ) ) {<br />
r e t u r n −EFAULT ;<br />
}<br />
v a l u e = s i m p l e s t r t o l ( b u f f e r , &b u f f e r , 1 0 ) ;<br />
i f ( v a l u e == 0 ) {<br />
p r i n t k (KERN INFO ” D i s a b l i n g t r i v i a ’ s t i c k c o u n t e r \n” ) ;<br />
t r i v i a c a p t u r e = 0 ;<br />
}<br />
e l s e i f ( v a l u e == 1 ) {<br />
p r i n t k (KERN INFO ” E n a b l i n g t r i v i a ’ s t i c k c o u n t e r \n” ) ;<br />
t r i v i a c a p t u r e = 1 ;<br />
}<br />
r e t u r n c o u n t ;<br />
i n t i n i t m o d u l e ( v o i d ) {<br />
23
}<br />
p r i n t k (KERN INFO ”Module t r i v i a l o a d e d . \ n” ) ;<br />
t r i v i a = c r e a t e p r o c e n t r y ( ” t r i v i a ” , 0 6 4 4 , NULL ) ;<br />
i f ( t r i v i a == NULL) {<br />
r e m o v e p r o c e n t r y ( ” t r i v i a ” , NULL ) ;<br />
p r i n t k (KERN ALERT ” E r r o r : Could not i n i t i a l i z e / p r o c / t r i v i a \n” ) ;<br />
r e t u r n −ENOMEM;<br />
}<br />
t r i v i a −>r e a d p r o c = t r i v i a r e a d ;<br />
t r i v i a −>w r i t e p r o c = t r i v i a w r i t e ;<br />
t r i v i a −>owner = THIS MODULE ;<br />
t r i v i a −>mode = S IFREG | S IRUGO ;<br />
t r i v i a −>u i d = 0 ;<br />
t r i v i a −>g i d = 0 ;<br />
t r i v i a −> s i z e = 8 0 ;<br />
r e t u r n 0 ;<br />
v o i d c l e a n u p m o d u l e ( v o i d ) {<br />
r e m o v e p r o c e n t r y ( ” t r i v i a ” , NULL ) ;<br />
}<br />
p r i n t k (KERN INFO ”Module t r i v i a u n l o a d e d . \ n” ) ;<br />
6.3 Messung<br />
Die Messung an sich erfolgt durch das Senden von ICMP–Paketen durch<br />
den ping–Befehl. Aus Performancegründen werden 10 Instanzen dieses Befehls<br />
(fast) parallel ausgeführt. Somit entfällt das Warten auf eine Antwort, bevor<br />
das nächste Paket gesendet wird.<br />
#! / b i n / sh<br />
################################################################################<br />
# f i l e : t r i v i a p i n g #<br />
# #<br />
# d e s c r i p t i o n : S h e l l −S c r i p t zum Senden von Datenpaketen #<br />
# #<br />
# a u t h o r : A l e x a n d e r B l e i t n e r #<br />
# #<br />
# c o p y r i g h t : 2010 by A l e x a n d e r B l e i t n e r #<br />
# #<br />
# l i c e n s e : GPL #<br />
# I t i s f r e e s o f t w a r e . You can r e d i s t r i b u t e i t and / o r modify i t #<br />
# under t h e terms o f t h e GNU G e n e r a l P u b l i c L i c e n s e a s p u b l i s h e d #<br />
# by t h e F r e e S o f t w a r e Foundation , e i t h e r v e r s i o n 3 o f t h e #<br />
# l i c e n s e , o r ( a t your own o p i n i o n ) any l a t e r v e r s i o n . #<br />
# #<br />
# T h i s code i s d i s t r i b u t e d i n t h e hope t h a t i t w i l l be u s e f u l , #<br />
# but WITHOUT ANY WARRANTY, w i t h o u t even t h e i m p l i e d w a r r a n t y o f #<br />
# MERCHANTABILITY o f FITNESS FOR A PARTICULAR PURPOSE. See t h e #<br />
# GNU G e n e r a l P u b l i c L i c e n s e f o r more d e t a i l s . #<br />
# #<br />
# You s h o u l d have r e c e i v e d a copy o f t h e GNU G e n e r a l P u b l i c #<br />
# L i c e n s e a l o n g w i t h t h i s f i l e . I f not , s e e #<br />
# . #<br />
# #<br />
################################################################################<br />
# p s e u d o p a r a l l e l e s Senden von 10 Paketen<br />
# −> Performance<br />
p i n g $3 −c $2 $1 > / dev / z e r o &<br />
p i n g $3 −c $2 $1 > / dev / z e r o &<br />
p i n g $3 −c $2 $1 > / dev / z e r o &<br />
p i n g $3 −c $2 $1 > / dev / z e r o &<br />
p i n g $3 −c $2 $1 > / dev / z e r o &<br />
p i n g $3 −c $2 $1 > / dev / z e r o &<br />
p i n g $3 −c $2 $1 > / dev / z e r o &<br />
24
p i n g $3 −c $2 $1 > / dev / z e r o &<br />
p i n g $3 −c $2 $1 > / dev / z e r o &<br />
p i n g $3 −c $2 $1 > / dev / z e r o<br />
6.4 Datentransfer und Durchführung der Messung<br />
Solange sich die Daten auf dem Access–Point befinden, haben sie noch keinen<br />
Nutzen. Der Transfer auf einen anderen Computer sowie die Durchführung der<br />
Messung erfolgen durch das Perl–Script trivia measure mit den Parametern<br />
, , , und .<br />
#! / u s r / b i n / p e r l<br />
################################################################################<br />
# f i l e : t r i v i a m e a s u r e #<br />
# #<br />
# d e s c r i p t i o n : P e r l −S c r i p t zum A u s f u e h r e n d e r Messung und T r a n s f e r e n #<br />
# d e r Daten #<br />
# #<br />
# a u t h o r : A l e x a n d e r B l e i t n e r #<br />
# #<br />
# c o p y r i g h t : 2010 by A l e x a n d e r B l e i t n e r #<br />
# #<br />
# l i c e n s e : GPL #<br />
# I t i s f r e e s o f t w a r e . You can r e d i s t r i b u t e i t and / o r modify i t #<br />
# under t h e terms o f t h e GNU G e n e r a l P u b l i c L i c e n s e a s p u b l i s h e d #<br />
# by t h e F r e e S o f t w a r e Foundation , e i t h e r v e r s i o n 3 o f t h e #<br />
# l i c e n s e , o r ( a t your own o p i n i o n ) any l a t e r v e r s i o n . #<br />
# #<br />
# T h i s code i s d i s t r i b u t e d i n t h e hope t h a t i t w i l l be u s e f u l , #<br />
# but WITHOUT ANY WARRANTY, w i t h o u t even t h e i m p l i e d w a r r a n t y o f #<br />
# MERCHANTABILITY o f FITNESS FOR A PARTICULAR PURPOSE. See t h e #<br />
# GNU G e n e r a l P u b l i c L i c e n s e f o r more d e t a i l s . #<br />
# #<br />
# You s h o u l d have r e c e i v e d a copy o f t h e GNU G e n e r a l P u b l i c #<br />
# L i c e n s e a l o n g w i t h t h i s f i l e . I f not , s e e #<br />
# . #<br />
# #<br />
################################################################################<br />
u s e Net : : SSH : : P e r l ;<br />
my ( $command out , $command err , $command exit , $ a p i p , $ a p u s e r , $ap passwd ,<br />
$ t a r g e t , $count , $ f i l e ) ;<br />
i f ($#ARGV != 4 ) {<br />
p r i n t ”\ n u s a g e : \ n\ t . / t r i v i a m e a s u r e <br />
\n\n” ;<br />
}<br />
$ t a r g e t = $ARGV [ 0 ] ;<br />
# pro A n f r a g e werden 10 Messungen Access −Point − s e i t i g a u s g e f u e h r t<br />
# −> b e s s e r e Performance<br />
$ c o u n t = $ARGV [ 1 ] / 1 0 ;<br />
$ a p i p = $ARGV [ 2 ] ;<br />
$ap passwd = $ARGV [ 3 ] ;<br />
$ f i l e = $ARGV [ 4 ] ;<br />
my $ m e a s u r e i n i t = ”dmesg −c > / dev / z e r o && echo \”1\” > / p r o c / t r i v i a ” ;<br />
my $measure = ” / u s r / b i n / t r i v i a p i n g $ t a r g e t 1 ” ;<br />
my $ m e a s u r e o u t p u t = ”dmesg −c | g r e p r a 0 ” ;<br />
my $ m e a s u r e c l e a n = ” echo \”0\” > / p r o c / t r i v i a ” ;<br />
my $command = $measure . ” && ” . $ m e a s u r e o u t p u t ;<br />
# Verbindung zum Access −P o i n t a u f b a u e n<br />
my $ s s h = Net : : SSH : : P e r l −>new ( $ a p i p ) ;<br />
25
# L o g i n<br />
$ s s h −>l o g i n ( ” r o o t ” , $ap p a s s w d ) ;<br />
# K e r n e l m i t t e i l e n , d a s s Messung e r f o l g t<br />
$ s s h −>cmd ( $ m e a s u r e i n i t ) ;<br />
# Messungen d u r c h f u e h r e n<br />
f o r (my $ i = 1 ; $ i cmd ( $command ) ;<br />
chomp ( $command out ) ;<br />
i f ( $command exit ) {<br />
p r i n t ”ERROR r e s e n d i n g P a c k a g e s \n” ;<br />
$ i −−;<br />
}<br />
e l s e {<br />
system ” echo \” $command out \” > $ f i l e \ $ i ” ;<br />
}<br />
}<br />
# K e r n e l m i t t e i l e n , d a s s Messung b e e n d e t i s t<br />
$ s s h −>cmd ( $ m e a s u r e c l e a n ) ;<br />
# E r g e b n i s s e zu EINER D a t e i zusammenfuegen<br />
system ” c a t $ f i l e \ ∗ > $ f i l e ” ;<br />
system ”rm $ f i l e \ ∗” ;<br />
6.5 Auswertung<br />
Das folgende Perl–Script berechnet aus der Datei , die die<br />
Messdaten enthält (vgl. 6.4) die relative Häufigkeits–Verteilung der Messung<br />
und schreibt sie in .dat. Zusätzlich wird der Erwartungswert<br />
berechnet. Der Datenbereich, der für diese Berechnung verwendet werden soll,<br />
kann durch weitere Parameter und <br />
übergeben werden.<br />
#! / u s r / b i n / p e r l<br />
################################################################################<br />
# f i l e : t r i v i a d a t a #<br />
# #<br />
# d e s c r i p t i o n : P e r l −S c r i p t zum A n a l y s i e r e n d e r Daten #<br />
# #<br />
# a u t h o r : A l e x a n d e r B l e i t n e r #<br />
# #<br />
# c o p y r i g h t : 2010 by A l e x a n d e r B l e i t n e r #<br />
# #<br />
# l i c e n s e : GPL #<br />
# I t i s f r e e s o f t w a r e . You can r e d i s t r i b u t e i t and / o r modify i t #<br />
# under t h e terms o f t h e GNU G e n e r a l P u b l i c L i c e n s e a s p u b l i s h e d #<br />
# by t h e F r e e S o f t w a r e Foundation , e i t h e r v e r s i o n 3 o f t h e #<br />
# l i c e n s e , o r ( a t your own o p i n i o n ) any l a t e r v e r s i o n . #<br />
# #<br />
# T h i s code i s d i s t r i b u t e d i n t h e hope t h a t i t w i l l be u s e f u l , #<br />
# but WITHOUT ANY WARRANTY, w i t h o u t even t h e i m p l i e d w a r r a n t y o f #<br />
# MERCHANTABILITY o f FITNESS FOR A PARTICULAR PURPOSE. See t h e #<br />
# GNU G e n e r a l P u b l i c L i c e n s e f o r more d e t a i l s . #<br />
# #<br />
# You s h o u l d have r e c e i v e d a copy o f t h e GNU G e n e r a l P u b l i c #<br />
# L i c e n s e a l o n g w i t h t h i s f i l e . I f not , s e e #<br />
# . #<br />
# #<br />
################################################################################<br />
my ( $r0 , $r1 , $b , @t , @d , @v , $e , $ i , $o ) ;<br />
# Daten e i n l e s e n<br />
open (DATA, ”< $ARGV [ 0 ] ” ) ;<br />
f o r e a c h () {<br />
26
chomp ( ) ;<br />
@t = s p l i t ( / : / , $ ) ;<br />
push (@d , $ t [ 2 ] ) ;<br />
}<br />
c l o s e (DATA) ;<br />
# a u f r i c h t i g e Verwendung p r u e f e n<br />
i f ($#ARGV == 2 ) {<br />
$ r 0 = $ARGV [ 1 ] ;<br />
$ r 1 = $ARGV [ 2 ] ;<br />
$b = ” d e r Daten im B e r e i c h $ r 0 b i s $ r 1 ” ;<br />
}<br />
e l s i f ($#ARGV == 0 ) {<br />
$ r 0 = 1 ;<br />
$ r 1 = $#d ;<br />
}<br />
e l s e {<br />
d i e ”\ n u s a g e : \ n\ t . / t r i v i a d a t a [< range1> ]\n\n” ;<br />
}<br />
# V e r t e i l u n g b e r e c h n e n<br />
map { $v [ $ ]++} @d ;<br />
# f a l l s b e n o e t i g t Werte im I n t e r v a l l z a e h l e n<br />
i f ( $b ) {map { i f ( $ ) { i f ( $r0
Teil VI<br />
Literaturverzeichnis<br />
[1] Ugur Teker:<br />
” Realisierung und Evaluation eines Indoor–<br />
Lokalisierungssystems mittels WLAN“, 2005, Seite 17.<br />
http://www.sfbtr8.uni-bremen.de/project/r1/theses/<br />
diplomar<strong>bei</strong>t_ugur_teker.pdf<br />
(Letzter Zugriff: 10.01.2010, 22:43 Uhr)<br />
[2] Peter Dornbusch, Max Zündt: ” Realisierung von Positionsortungen in<br />
WLAN“, 2002, Seite 3.<br />
http://www4.in.tum.de/publ/papers/RvPiWLAN_final.pdf<br />
(Letzter Zugriff: 10.01.2010, 22:03 Uhr)<br />
[3] Stephan Müller: ” Positionierung im WLAN“, 2004, Seite 9ff.<br />
http://wwwcs.uni-paderborn.de/cs/ag-kao/de/teaching/ws04/pg_<br />
lbs/Seminarausar<strong>bei</strong>tungen/M%C3%BCller.pdf<br />
(Letzter Zugriff: 28.01.2010, 14:39 Uhr)<br />
[4] Wikipedia: Freiraumdämpfung.<br />
http://de.wikipedia.org/wiki/Freiraumd%C3%A4mpfung<br />
(Letzter Zugriff: 29.01.2010, 01:16 Uhr)<br />
[5] Christian Gerthsen, Dieter Meschede: ” Gerthsen <strong>Physik</strong>“, 23. Auflage,<br />
2006, Seite 556.<br />
[6] Choongill Yeh, Hyoungsoo Lim, Dongseung Kwon: ” RSSI Measurements“,<br />
2003.<br />
http://www.ieee802.org/16/tgd/contrib/C80216d-03_92.pdf<br />
(Letzter Zugriff: 28.01.2010, 14:46 Uhr)<br />
[7] Hendrik Lemelson: ” In– und Outdoor Positionierungssysteme“, 2005,<br />
Seite 9.<br />
http://pi4.informatik.uni-mannheim.de/pi4.data/content/<br />
courses/2005-ws/seminar/Vortrag_Positionierung-Uebersicht_<br />
Indoor_und_Outdoor_Positionierungssysteme.pdf<br />
(Letzter Zugriff: 28.01.2010, 20:56 Uhr)<br />
28
[8] Paramvir Bahl, Venkata N. Padmanabhan: ” RADAR: An In-Building<br />
RF-based User Location and Tracking System“, 2000.<br />
http://research.microsoft.com/en-us/um/people/padmanab/<br />
papers/infocom2000.pdf<br />
(Letzter Zugriff (nur mit Microsoft TM Windows R○ Internet Explorer R○<br />
möglich): 20.01.2010, 19:37Uhr)<br />
[9] Paramvir Bahl, Venkata N. Padmanabhan, Anand Balachandran: ” En-<br />
hancements to the RADAR User Location and Tracking System“, 2000.<br />
http://research.microsoft.com/pubs/69861/tr-2000-12.pdf<br />
(Letzter Zugriff (nur mit Microsoft TM Windows R○ Internet Explorer R○<br />
möglich): 20.01.2010, 20:06 Uhr)<br />
[10] IEEE Standard for Information Technology: ” IEEE 802.11r“, 2008 .<br />
Download unter http://standards.ieee.org/getieee802/download/<br />
802.11r-2008.pdf<br />
(Letzter Zugriff: 28.01.2010, 14:50 Uhr)<br />
[11] Ralink: RT3052 802.11n Wireless Single Chip AP/Router SoC.<br />
Download unter http://www.ralinktech.com/product.php?s=32<br />
(Letzter Zugriff: 25.01.2010, 14:54 Uhr)<br />
[12] Wikipedia: System on a Chip.<br />
http://de.wikipedia.org/wiki/System_on_a_Chip<br />
(Letzter Zugriff: 25.01.2010, 14:45 Uhr)<br />
[13] Massachusetts Institute of Technology: ” MIPS-6371 Processor Specifica-<br />
tion“, 2002, Seite 3, Tabelle 1.<br />
http://6004.csail.mit.edu/6.371/handouts/mips6371.pdf<br />
(Letzter Zugriff: 25.01.2010, 15:36 Uhr)<br />
[14] Andre Günther, Christian Hoene: ” Measuring Round Trip Times to<br />
Determine the Distance between WLAN Nodes“, 2005.<br />
http://ics2.cs.uni-tuebingen.de/publications/papers/hoene_<br />
paper2.pdf<br />
(Letzter Zugriff: 29.01.2010, 00:20 Uhr)<br />
[15] Hammer, Hammer: ” <strong>Physik</strong>alische Formeln und Tabellen“, 8. Auflage,<br />
2002, Seite 80f.<br />
[16] Barth, Mühlbauer, Nikol, Wörle: ” Mathematische Formeln und Definitio-<br />
nen“, 8. Auflage, 2004.<br />
29
[17] Andreas Biesdorf, Andreas Kurtz: ” <strong>Fachar<strong>bei</strong>t</strong>en in LaTeX“, Deckblatt<br />
und Einverständniserklärung<br />
Download unter http://www.skg-world.de/content/kollegstufe/<br />
fachar<strong>bei</strong>t/index.php<br />
(Letzter Zugriff: 25.01.2010, 17:04 Uhr)<br />
30
<strong>Arnold</strong>–<strong>Gymnasium</strong> Abiturjahrgang 2010<br />
<strong>Neustadt</strong> <strong>bei</strong> <strong>Coburg</strong><br />
Ich erkläre hiermit, dass ich die <strong>Fachar<strong>bei</strong>t</strong> ohne fremde Hilfe angefertigt und<br />
nur die im Literaturverzeichnis angeführten Quellen und Hilfsmittel benutzt<br />
habe.<br />
, den<br />
Ort Datum<br />
Unterschrift des Kollegiaten