Trust-by-Wire in paketvermittelnden IP

Werbung
Universität Rostock
Fakultät für Informatik und Elektrotechnik
Institut für Angewandte Mikroelektronik und Datentechnik
Großer Beleg
Trust-by-Wire in paketvermittelnden
IP-Netzen: Migration des
IPclip-Mechanismus von IPv4 nach
IPv6
Bearbeiter:
cand. ing. Grit Rhinow
8. September 2008
Betreuer
Dipl.-Ing. Jens Rohrbeck
Prof. Dr. Dirk Timmermann
Inhaltsverzeichnis
Abbildungsverzeichnis
IV
Abkürzungsverzeichnis
VI
Literaturverzeichnis
VII
1 Einleitung
1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Aufbau der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1
1
2 Grundlagen
2.1 IPv6 - das neue Internet Protokoll . . . .
2.1.1 Optionen in Erweiterungsheadern
2.2 Der IPclip Mechanismus . . . . . . . . .
2.3 Vorbereitende Aufgaben . . . . . . . . .
.
.
.
.
3
3
4
6
8
3 MTU Adaptation Module
3.1 Konzept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Umsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3 Verifikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
9
13
14
4 PPPoE MTU Adaptation Module
4.1 Konzept und Umsetzung . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Verifikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
16
17
5 Parser
5.1 Konzept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Umsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3 Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
19
21
21
6 Option Verification Module
6.1 Konzept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2 Umsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3 Verifikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
22
25
27
7 Additional Information Adder
28
II
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Inhaltsverzeichnis
7.1
Konzept und Umsetzung . . . . . . . . . . . . . . . . . . . . . . . . .
28
8 Additional Information Remover
8.1 Konzept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
32
9 Zusammenfassung und Ausblick
9.1 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
34
III
Abbildungsverzeichnis
2.1
2.2
2.3
2.4
Struktur des IPv6 Headers . . . . .
Aufbau einer IP-Option . . . . . .
Zieloptionsheader mit IPclip-Option
IPclip Modul . . . . . . . . . . . .
.
.
.
.
4
5
6
7
3.1
3.2
3.3
Syntaxdiagramm MAM . . . . . . . . . . . . . . . . . . . . . . . . . .
ICMP Fehlernachricht . . . . . . . . . . . . . . . . . . . . . . . . . .
Pseudoheader zur Berechnung der ICMP Prüfsumme . . . . . . . . .
10
11
12
4.1
4.2
4.3
Syntaxdiagramm PAM . . . . . . . . . . . . . . . . . . . . . . . . . .
Aufbau der PPPoE Session Phase Nachricht . . . . . . . . . . . . . .
Aufbau und Blockschaltbild des PAM . . . . . . . . . . . . . . . . . .
16
17
17
5.1
5.2
5.3
Blockschaltbild des Parsers . . . . . . . . . . . . . . . . . . . . . . . .
Syntaxdiagramm des Parsers . . . . . . . . . . . . . . . . . . . . . . .
Aufbau des Parsers . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
19
20
6.1
6.2
6.3
6.4
Syntaxdiagramm des OVM . . . . . . . . . . . . . . . . . . . . . .
Zustandsautomat des OVM - Suche nach einem Zieloptionsheader
Aufbau des OVM . . . . . . . . . . . . . . . . . . . . . . . . . . .
Von IPclip unterstützte Ortsinformationen . . . . . . . . . . . . .
.
.
.
.
23
24
25
27
7.1
7.2
7.3
. . . . . . . .
. . . . . . . .
Ortsinforma. . . . . . . .
. . . . . . . .
28
29
7.4
Blockschaltbild von AIA . . . . . . .
Syntaxdiagramm AIA . . . . . . . .
Zustandsautomat für das Hinzufügen
tionen . . . . . . . . . . . . . . . . .
Aufbau des AIA . . . . . . . . . . . .
30
31
8.1
8.2
Syntaxdiagramm des AIR . . . . . . . . . . . . . . . . . . . . . . . .
Aufbau des AIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
33
IV
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . .
. . . . . . . . . .
von zusätzlichen
. . . . . . . . . .
. . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Abkürzungsverzeichnis
ADSL . . . . . . . . .
AIA . . . . . . . . . . .
AIR . . . . . . . . . . .
BRAS . . . . . . . . .
DSLAM . . . . . . .
EOF . . . . . . . . . . .
FIFO . . . . . . . . . .
FPGA . . . . . . . . .
FSM . . . . . . . . . . .
GPS . . . . . . . . . . .
IANA . . . . . . . . .
ICMP . . . . . . . . .
IP . . . . . . . . . . . . .
IPclip . . . . . . . . . .
IPoE . . . . . . . . . .
IPv4 . . . . . . . . . . .
IPv6 . . . . . . . . . . .
IPv6CP . . . . . . . .
LAN . . . . . . . . . . .
LCP . . . . . . . . . . .
MAC . . . . . . . . . .
MAM . . . . . . . . . .
MRU . . . . . . . . . .
MTU . . . . . . . . . .
NSN . . . . . . . . . . .
OVM . . . . . . . . . .
PAM . . . . . . . . . .
PMTUD . . . . . . .
PPP . . . . . . . . . . .
PPPoE . . . . . . . .
RFC . . . . . . . . . . .
RSM . . . . . . . . . .
SOF . . . . . . . . . . .
SSM . . . . . . . . . . .
TCP/IP . . . . . . .
Asymmetric Digital Subscriber Line
Additional Information Adder
Additional Information Remover
Broadband Remote Access Server
DSL Access Multiplexer
End of Frame
First In First Out
Field Programmable Gate Array
FIFO State Machine
Global Positioning System
Internet Assigned Numbers Authority
Internet Control Message Protocol
Internet Protocol
Internet Protocol Calling Line Identification Presentation
Internet Protocol over Ethernet
Internet Protocol Version 4
Internet Protocol Version 6
IPv6 Control Protocol
Local Area Network
Link Control Protocol
Medium Access Control
MTU Adaptation Module
Maximum Receive Unit
Maximum Transfer Unit
Nokia Siemens Networks
Option Verification Module
PPPoE MTU Adaptation Module
Path MTU Discovery
Point to Point Protocol
PPP over Ethernet
Request For Comment
Read State Machine
Start of Frame
Send State Machine
Transmission Control Protocol/Internet Protocol
V
TLV . . . . . . . . . . .
UDP . . . . . . . . . .
VLAN . . . . . . . . .
VoIP . . . . . . . . . .
Type - Length - Value
User Data Protocol
Virtual LAN
Voice over IP
VI
Literaturverzeichnis
[1] RFC 1332 - IPCP, 1992.
[2] RFC 2460 - IPv6 Specification, 1998.
[3] RFC 2472 - IPv6 over PPP, 1998.
[4] RFC 4443 - ICMPv6 für IPv6, 2006.
[5] Hans Peter Dittler. IPv6 - das neue Internet-Protokoll Technik, Anwendung,
Migration. dpunkt - Verlag, 1998.
[6] Grit Rhinow. Trust-by-Wire in paketvermittelnden IP-Netzen: Analyse und Konzept zur Migration des IPclip Mechanismus von ipv4 nach ipv6. Technical Report,
Universität Rostock, Institut für Angewandte Mikroelektronik und Datentechnik,
2008.
[7] Harald Widiger, Stephan Kubisch, Peter Danielis, Jens Schulz, and Universität
Rostock. Ip-clip. Technical Report, Universität Rostock, Fakultät für Informatik
und Elektrotechnik, Institut für Angewandte Mikroelektronik und Datentechnik,
2007.
VII
1 Einleitung
Das Internet, wie es heute genutzt wird, hat sich in den vergangenen Jahren zu einem
Massenmedium entwickelt. Bei dem heute gebräuchlichen Internet Protokoll Version
4, kurz IPv4, werden 32-Bit Adressen verwendet, mit dem etwas mehr als 4 Milliarden
logische Adressen vergeben werden können. Doch es zeigte sich sehr schnell, dass
durch den Zuwachs des Internets diese 4 Milliarden Adressen bald ausgeschöpft sein
werden. Ein weiterer Gesichtspunkt ist, dass diese Adressen innerhalb eines Netzwerks
sehr willkürlich vergeben werden. Eine IP-Adresse ist keine eindeutige Adresse wie
zum Beispiel eine Telefonnummer, die für einen Benutzer immer gleich bleibt. Bedingt
durch die Adressen-Knappheit des IPv4 werden Adressen deswegen in einem Netz
dynamisch vergeben. Dies betrifft hauptsächlich die privaten Anwender, der seine
IP-Adresse vom Provider zugeteilt bekommt. Deswegen wurde in den vergangenen
Jahren an einem neuen Internet-Protokoll mit einem größeren Adressbereich und
erweiterten Funktionen gearbeitet, dem Internet Protokoll Version 6. Mit diesem
neuen Protokoll ist es möglich, etwas mehr als 340 Sextillionen, also 340·1036 , logische
Adressen zu vergeben. In einigen Ländern der Welt, vor allem im asiatischen Raum,
wurde das Internet bereits auf IPv6 umgestellt.
1.1 Motivation
Zur Erhaltung der Sicherheit im Internet wurde an der Universität Rostock in Zusammenarbeit mit Nokia Siemens Networks (NSN) ein IPclip (Internet Protocol Calling
Line Identification Presentation) Mechanismus entwickelt, der Internet-Paketen eine
zusätzliche Ortsinformation hinzufügt oder eine bestehende Ortsinformation auswertet, um dem Empfänger des Datenpakets eine Bestätigung über die Vertrauenswürdigkeit des Paketes zu liefern. Dieser IPclip Mechanismus ist bereits für IPv4 implementiert. Da ein Wechsel von IPv4 auf IPv6 in den nächsten Jahren stattfinden wird,
wurde im Rahmen eines Kleinen Beleges [6] eine Analyse zur Migration durchgeführt.
Im Rahmen dieser Arbeit soll das Konzept entsprechend umgesetzt und verifiziert
werden.
1.2 Aufbau der Arbeit
Dieser Beleg baut auf der Arbeit des Kleinen Beleges von mir und erläutert zunächst
die Grundlagen von IPv6 und die wesentlichen Neuerungen, die Einfluß auf das Kon-
1
zept dieser Arbeit haben. Dabei wird auf die Verwendung von Erweiterungsheadern
hingewiesen und wie Optionen unter IPv6 integriert werden können.
Danach wird das System IPclip vorgestellt und das Zusammenwirken der einzelnen Module kurz vorgestellt. Nach dieser kurzen Einführung werden in den Kapiteln
die Module einzeln vorgestellt. Dabei wird zunächst die prinzipielle Wirkungsweise
der Module erklärt und im Anschluss werden die Änderungen von IPv4 auf IPv6
vorgestellt. Am Ende jeden Kapitels soll eine Auswertung für die einzelnen Module
erfolgen.
Nachdem alle Module erarbeitet wurden, erfolgt eine kurze Zusammenfassung der
Ergebnisse und es erfolgt ein Ausblick auf die Anwendbarkeit des Systems für die
Zukunft.
2
2 Grundlagen
2.1 IPv6 - das neue Internet Protokoll
Durch die explosionsartige Verbreitung des Internets als Massenmedium werden die
IPv4-Adressen in wenigen Jahren nicht mehr ausreichen. Doch die Adressen-Knappheit
ist nicht der einzige ausschlaggebende Punkt, der zur Einführung des neuen InternetProtokolls IPv6 geführt hat. Zunehmend wurden neue Sicherheitsaspekte interessant
oder Funktionen des alten IPv4 erwiesen sich als unpraktisch und zu überladen. So
wurde der ursprüngliche IPv4 Header überarbeitet.
Während der IPv4 Header aufgrund von Optionen noch eine variable Größe besaß,
zeichnet sich der IPv6 Header nun durch eine feste Länge aus. Die IP-Optionen dienen zur Steuerung oder Priorisierung eines IP-Frames. Da viele Optionen allerdings
nicht verwendet wurden, da die Frames durch ihre Sonderbehandlung in den Routern
mitunter nicht schnell genug verarbeitet werden konnten, wurde das Optionsfeld des
alten IPv4 Headers nicht mehr in IPv6 implementiert. Da aber die Verwendung von
Optionen nicht vollständig außen vorgelassen werden sollte, wurden Erweiterungsheader eingeführt. Diese Erweiterungsheader übernehmen einige der wichtigsten Optionen. So gibt es z.B. unter IPv6 einen Routingheader, der die Routingoption von
IPv4 übernimmt und die Route des Frames genau vorgibt. Weiterhin gibt es einen
Fragmentierungsheader, der bei übergroßen IP-Frames vorgibt, an welcher Stelle der
Frame in kleinere Abschnitte geteilt werden soll. Gibt es weitere Benutzer spezifische Optionen, können diese in einen Optionsheader gepackt werden. Es gibt zwei
Arten von Optionsheadern. Den Hop-by-Hop-Optionsheader und den Zieloptionsheader. Beim Hop-by-Hop-Optionsheader sind die Optionen in jedem Router, den sie
passieren von Bedeutung und müssen auch in jedem Router angewandt werden. Jedoch in einen Zieloptionsheader direkt vor den Nutzdaten verpackt, sind die Optionen
nur für den letzten Router von Bedeutung. Zunächst folgt eine genauere Betrachtung
des IPv6-Headers.
3
Abbildung 2.1: Struktur des IPv6 Headers
Das einzige Feld, mit der gleichen Position und Bedeutung wie im IPv4-Header,
ist das Versionsfeld. Bei IPv6 steht hier eine 6. Danach folgt ein 8 Bit breites Klassen
Feld, in dem die Priorisierung des IP-Paketes angegeben wird. Dieses Feld hat die
gleiche Bedeutung wie das Traffic Class Feld bei IPv4. Im Anschluss an das Klassenfeld folgt das Flusslabelfeld, welches 20 Bit breit ist. Dieses Feld dient der Identifizierung von mehreren IP-Paketen, wenn diese IP-Pakete zusammengehören und an
einen Empfänger gesendet werden. Dies findet vor allem in der Übertragung von Videostreams Anwendung. Danach folgt die 16 Bit breite Nutzdatenlänge. Im Vergleich
zu IPv4 wird hier nur die Länge der Nutzdaten angegeben und nicht die Länge des
gesamten Pakets, da bei IPv6 bereits die Header Länge bekannt ist. Die Nutzdatenlänge ergibt sich aus der Länge aller Erweiterungsheader und dem Folgeprotokoll. Im
Next Header Feld wird angezeigt, ob dem IPv6 Header Erweiterungsheader oder das
Folgeprotokoll folgen. Das letzte Feld vor den 128-Bit Adressen ist die Hop-Grenze.
Dieser Wert zeigt an, nach wie vielen Hops das IPv6-Paket von einem Router gelöscht
werden kann. In jedem Router wird dieser Wert um eins dekrementiert, damit das
Paket bei zu langer Verweildauer im Netzwerk verworfen werden kann. Damit soll
vor allem der Überlastung des Kanals vorgebeugt werden.
2.1.1 Optionen in Erweiterungsheadern
Wie bereits in Abschnitt 2.1 erwähnt, werden Optionen aus IPv4 unter IPv6 in Erweiterungsheader gepackt. Das hat zum einen den Vorteil, dass der Header unabhängig
4
von den Optionen immer die gleiche Länge hat. Als nächster Vorteil sei erwähnt,
dass die Optionen mehr Platz haben als im IPv4 Header, wo die Optionen in 40
Byte rein passen mussten. Doch der wahrscheinlich wichtigste Aspekt ist, dass die
Optionen im Zweifelsfall vom Router nicht beachtet werden müssen. Dabei spielt
auch die Reihenfolge der Erweiterungsheader eine wichtige Rolle. Laut Spezifikation
ist die Reihenfolge der Erweiterungsheader frei vom Sender wählbar, es wird jedoch
eine Reihenfolge empfohlen.
1. IPv6 Header
2. Hop-by-Hop Optionsheader
3. Zieloptionsheader (1)
4. Routingheader
5. Fragmentheader
6. Authentifizierungsheader
7. Zieloptionsheader (2)
8. Header der höheren Schicht, z.B. TCP oder UDP
Der Zieloptionsheader ist dabei der einzige Header, der mehr als einmal in einem
IP-Paket vorkommen kann. Die Position des Zieloptionsheaders gibt dabei vor, welche
Router die Erweiterungsheader beachten müssen. Befindet sich der Zieloptionsheader zum Beispiel direkt vor den Nutzdaten, so soll nur der letzte Router vor dem
Empfänger die Optionen bearbeiten, während die Optionen in einem Hop-by-HopOptionsheader von jedem Router, also bei jedem Hop, die Optionen verwerten muss.
Für das Einbringen von bereits bekannten Optionen dienen der Hop-by-Hop-Optionsheader
und der Zieloptionsheader. Der Aufbau der Optionen kann auf zwei Arten erfolgen.
Bei der ersten Art der Option handelt es sich um 1 Byte und dieses Byte stellt die
gesamte Option dar. Die jedoch weiter verbreitete Art ist nach dem Type-LengthValue-Format (TLV) aufgebaut.
Abbildung 2.2: Aufbau einer IP-Option
In Abbildung 2.2 ist der Aufbau solch einer Option dargestellt. Das erste Byte ist
das Type Feld und gibt Auskunft über die Art von IP-Option. Im nächsten Byte
befindet sich die Länge der IP-Option und wird in Byte angegeben. Danach folgen
5
dann die Optionsdaten. Für IPclip werden die Ortsinformationen in einen Zieloptionsheader nach dem TLV-Format untergebracht. Eine genau Diskussion über die
Auswahl eines geeigneten Erweiterungsheaders bietet in [6]. Der Aufbau eines Zieloptionsheaders mit der IPclip-Option ist in Abbildung 2.3 dargestellt.
Abbildung 2.3: Zieloptionsheader mit IPclip-Option
Im Abschnitt 2.2 soll der IPclip Mechanismus erklärt werden.
2.2 Der IPclip Mechanismus
Der IPclip Mechanismus wurde entwickelt, um IP-Paketen, die ins Internet gesendet werden, eine Ortsinformation hinzuzufügen oder bestehende Ortsinformationen
auszuwerten. Unter IPv4 geben die IP-Adressen keinen Aufschluss darüber, wo das
Paket herkommt. Bedingt durch die Adressen-Knappheit werden IP-Adressen durch
den Provider dynamisch vergeben. Der Internetbenutzer bekommt somit keine feste
Nummer, wie er z.B. eine feste Telefonnummer besitzt. Damit kann der Empfänger
nichteindeutig feststellen, woher das Paket kommt. Der IPclip Mechanismus soll dem
IP-Paket eine feste Ortsinformation hinzufügen. Somit weiß der Empfänger genau,
wo das Paket herkommt. Einsatzmöglichkeiten für IPclip gibt es mehrere. So sollen
z.B. bei Notrufen über das Internet jedem versendeten Paket eine feste GPS Ortsinformation hinzugefügt werden, damit der Rettungsdienst die genauen Koordinaten
des Hilferufenden erhält und somit schnellstmöglich am Einsatzort eintreffen kann.
Eine andere Möglichkeit für den Einsatz ist die Verhinderung vom sogenannten Phishing oder Spam. Damit der Empfänger weiß, ob er wirklich von seiner Bank Daten
erhält oder vielleicht von einem Hacker, der seine Bankdaten ausspionieren möchte,
kann IPclip eine Aussage über den Aufenthaltsort des Senders geben. Der Empfänger bekommt die Bestätigung, dass sich der Empfänger wirklich dort befindet, wo
er vorgibt zu sein oder dass das Paket nicht vertrauenswürdig ist. Somit kann der
Empfänger entscheiden, ob er diesem Paket vertrauen möchte.
6
Das IPclip-System befindet sich direkt am Zugangspunkt des Nutzers für das Zugangsnetzwerk, das ist in den meisten Fällen auf den Linecards eines DSLAM (Digital Subscriber Line Access Multiplexer), weil diese genauere Angaben über Access-ID
und Port der jeweils angeschlossenen Teilnehmer besitzen. Dargestellt wird das Gesamtsystem in der Abbildung 2.4.
Abbildung 2.4: IPclip Modul
Das IPclip Modul setzt sich zusammen aus dem MTU Adaptation Module, welches
überprüft, ob die Maximale Transfer Unit (MTU) eines Ethernet-Netzwerkes durch
das Hinzufügen von zusätzlichen Informationen überschritten wird. MAM hat die
Aufgabe, die MTU bei einer IP over Ethernet (IPoE) Verbindung anzupassen. Soll
das Internet-Paket über eine Point-to-Point-Protocol Verbindung über Ethernet, also PPPoE, verschickt werden, übernimmt das PPPoE MTU Adaptation Module die
Anpassung der MTU eines Datenpakets. Nachdem die MTU des Datenpakets angepasst wurde, wird der Frame an den Parser übergeben, der aus dem Internet-Paket
eine Schlüsselinformation herausfiltert. Die Schlüsselinformation setzt sich aus einem
VLAN-Tag und der Quelladresse des IP-Pakets zusammen. Das VLAN-Tag ist 12Bit lang und markiert die Zugehörigkeit eines Teilnehmers zu einem virtuellen lokalen
Netzwerk innerhalb eines größeren Netzwerkes. Der Parser sucht im Datenframe nach
solchen VLAN-Tags, wovon es bis zu 2 Stück geben kann. Findet der Parser mehr
als 1 VLAN-Tag, so benutzt der Parser das erste VLAN-Tag. Aufgrund der 128Bit breiten Quelladresse des IPv6-Headers und des 12-Bit breiten VLAN-Tags ergibt
sich eine Schlüsselinformation von 140 Bit. Diese 140-Bit breite Schlüsselinformation wird im Parser mit einem bestehenden Schlüsselsatz aus einem Speicher, der
aus RAM-Blöcken besteht, verglichen. Wenn ein Schlüssel mit einem Schlüssel aus
dem Speicher identifiziert werden kann, so wird eine 16-Bit breite Portinformation an
den Additional Information Adder (AIA) übergeben. Danach wird der Frame an das
Option Verification and Identification Module weiter gegeben. Das OVM durchsucht
dann den Frame nach IP-Optionen mit Ortsinformationen und kennzeichnet diese
als vertrauenswürdig oder nicht vertrauenswürdig. Die Position der letzten gültigen
Ortsinformation wird in der Variablen Valid IP Option gespeichert. Wenn in ein IPPaket keine weiteren Optionen hinzugefügt werden können, dann setzt das OVM
das discard-Signal, welches dem AIA mitteilt, dass dieser Frame verworfen werden
7
kann. Der Additional Information Adder soll dem Paket, sofern keine gültige Ortsinformation vorhanden ist, eine IPclip Option hinzufügen und ungültige Optionen
löschen. Danach kann das IP-Paket versendet werden. Im Downstream soll IPclip
bestehende Ortsinformationen gegebenenfalls entfernen. Der Empfänger bekommt
danach nur eine Bestätigung, ob dieses Paket vertrauenswürdig ist oder nicht. Die
reine Ortsinformation ist meist jedoch für den Empfänger uninteressant. Der Additional Information Remover (AIR) entfernt alle IPclip Orstinformationen, sofern er
in das System integriert ist.
2.3 Vorbereitende Aufgaben
Bevor die einzelnen Module angepasst werden konnten, musst zu Testzwecken die
utils pack.vhd an IPv6 angepasst werden. In dieser Datei wurde eine Prozedur entwickelt, mit der für die Simulation der einzelnen Module ein IPv6-Frame generiert
werden sollte. In dieser Datei wird ein IPv6-Frame generiert und der Nutzer soll
in der Testbench vorgeben können, ob dieser Frame die MTU erreicht und ob dieser
Frame bereits Erweiterungsheader mit Optionen besitzt. Dazu musste auch die Funktion generate frame() an IPv6 angepaßt werden. Dafür wurden die neue Variablen
num ext, zo vec und opt zo hd eingeführt. Die Variable num ext gibt die Anzahl
der vorhandenen Erweiterungsheader an und der Vektor zo hd gibt an, welcher der
Erweiterungsheader ein Zieloptionsheader ist. Die Variable opt zo hd gibt dann an,
welcher der Zieloptionsheader für den Fall, dass es mehrere Zieloptionsheader gibt,
die IPclip Optionen enthält.
8
3 MTU Adaptation Module
Das MTU Adaptation Module (MAM) ist für die Anpassung der Maximum Transfer
Unit an das zu übertragende Netzwerk verantwortlich. Bei einer Ethernet Verbindung
soll MAM überprüfen, ob durch das Hinzufügen einer zusätzlichen Ortsinformation
die MTU des Ethernet-Netzwerkes durch die Größe des Pakets überschritten wird.
Dabei wird das Datenpaket zunächst eingelesen. Sobald MAM die Größe der Nutzdaten hat, berechnet MAM die neue Paketgröße. Diese neue Paketgröße ergibt sich
aus 40 Byte für den Header, die Nutzdatenlänge und die hinzugefügten Ortsinformationen. Stellt MAM fest, dass durch die neue Paketgröße die MTU überschritten
wird, so soll das Datenpaket nicht weitergeleitet werden und MAM generiert eine
ICMP-Fehlernachricht an den Absender mit der neuen MTU für das Paket.
3.1 Konzept
Durch die Umstellung auf IPv6 muss zunächst sichergestellt werden, dass MAM ankommende IPv6 Pakete im Upstream und ICMP Fehlernachrichten im Downstream
erkennt. Abbildung 3.1 zeigt das Syntaxdiagramm des Programmablaufs von MAM
für den Upstream. Der Ethertype für IPv6 Pakete ist 0x86DD. Es ändert sich auch
die Versionsnummer im IP-Paket von 4 auf 6.
Nachdem sichergestellt ist, dass die ankommenden Pakete IPv6 Pakete sind, muss
die Struktur des Headers untersucht werden. Da sich der IPv6 Header zum IPv4
Header wesentlich geändert hat, werden auch die Zustände für die State Machines
anders definiert. Dies ist vor allem für die Generierung des ICMP-Frames wichtig,
da MAM nun einen anderen IP-Header zusammenstellen muss. Der Aufbau des IPv6
Headers wurde bereits unter Abschnitt 2.1 in Abbildung 2.1 dargestellt.
Besonders wichtig zu beachten ist, dass bei IPv6 nicht mehr die Gesamtlänge des
Paketes angezeigt wird, sondern die Länge der Nutzdaten. Dazu zählen auch die
Erweiterungsheader. Weiterhin wird keine Header Länge mehr angegeben, da dies
aufgrund der festen IPv6 Headergröße unnötig geworden ist. Unter IPclip sollen die
Ortsinformationen in einen Zieloptionsheader verpackt werden. So wird unter IPv6
die Länge der Optionen nicht mehr im IP-Header deklariert. Die Länge der einzelnen Erweiterungsheader befindet sich jeweils im 2. Byte des Erweiterungsheader,
ausgenommen dabei ist der Fragmentierungsheader. Die Nutzdatenlänge eines IPv6Paketes wird im 5. und 6. Byte des IP-Headers angezeigt.
9
Abbildung 3.1: Syntaxdiagramm MAM
Nachdem die Länge der Nutzdaten eingelesen wurde, muss MAM überprüfen, ob
durch das Hinzufügen der zusätzlichen Informationen die MTU des Netzwerkes überschritten wird. Ist dies der Fall, so soll MAM die IPv6 Nachricht nicht weiter senden,
sondern eine ICMP Fehlernachricht generieren und diese an den Sender zurückschicken mit der neuen zulässigen MTU. Die neue MTU berechnet sich aus der Summe der
Nutzdatenlänge, 40 Byte für den IPv6-Header und der zusätzlichen Ortsinformation.
Die zusätzliche Ortsinformation ist in einem Zieloptionsheader untergebracht, dessen
Länge immer ein Vielfaches von 8 Bytes sein muss. Nachdem die Nutzdatenlänge aus
dem IP-Header eingelesen wurde, kann MAM eine ICMP-Nachricht generieren, falls
die MTU durch das Hinzufügen der Orstinformation überschritten wird. Der Aufbau
dieser ICMP-Nachricht ist in Abbildung 3.2 dargestellt.
10
Abbildung 3.2: ICMP Fehlernachricht
Bei der Generierung einer ICMP-Nachricht wird der Header des IPv6 Paketes teilweise übernommen, da der ICMP-Nachricht ein IPv6-Header vorangestellt wird. Das
Klassenfeld des IPv6-Headers wird mit 0 deklariert und die Quelladresse wird zur Zieladresse, sowie die ursprüngliche Zieladresse die neue Quelladresse des Fehlerpaketes
wird. Das Flusslabel hat den gleichen Wert wie das urspüngliche IPv6-Paket, damit
der eigentliche Sender das IP Paket anhand des Labels erkennt. Dem IPv6 Header
des Fehlerpaketes folgt die eigentliche ICMP Nachricht, welche im Next Header Feld
des IPv6-Headers durch den Wert 58 gekennzeichnet wird. Die ICMP Nchricht hat
im Type Feld den Wert 2, das Code Feld wird mit 0 deklariert. Zur Berechnung der
Prüfsumme muss das Prüfsummenfeld auf 0 gesetzt und ein Pseudoheader generiert
werden, der nicht mitgesendet wird, aber der Prüfsummenberechnung von ICMP zusätzliche Sicherheit gewährleistet. Die Prüfsumme einer ICMP-Nachricht beschränkt
sich auf die gesamte ICMP-Nachricht, die allerdings keine Quell- und Zieladressen
angibt. Ein Pseudoheader enthält eine Quell- und eine Zieladresse, welche dem IPv6
Header entnommen werden, die Länge der ICMP Nachricht und ein Next Header
Feld, welches identisch dem Next Header Feld der vorangestellten IPv6-Nachricht
ist, also den Wert 58 besitzt. Die Prüfsumme ist das Einerkomplement der Summe
aller Einerkomplemente der gesamten ICMP-Nachricht. Der Pseudoheader ist in der
unten stehenden Abbildung 3.3 dargestellt.
11
Abbildung 3.3: Pseudoheader zur Berechnung der ICMP Prüfsumme
Ab dem 5. Byte der ICMP Nachricht wird die 4 Byte lange neue MTU eingetragen.
Die neue MTU wird die alte MTU plus die Ortsinformation plus zwei obligatorischen
Byte für einen zu generierenden Zieloptionsheader sein, da die zusätzlichen Optionen
unter IPv6 in einen Zieloptionsheader untergebracht werden und MAM nicht gesondert nach einem Zieloptionsheader sucht. Ab dem 9. Byte der ICMP Nachricht soll
soviel wie möglich des fehlerhaften IP-Pakets versendet werden. Dabei muss beachtet werden, dass die ICMP Nachricht nach der neuen IPv6 Spezifikation [2] nicht
größer als die Minimale Link MTU von IPv6 ist. Das heißt, dass die gesamte ICMP
Nachricht nicht größer als 1280 Byte sein darf.
Minimum Link MTU Die minimale Link MTU ergibt sich aus dem kleinsten gemeinsamen Nenner aller Netzwerke, die IPv6 übertragen können. Dabei soll die Minimum Link MTU sicherstellen, dass keins der betreffenden Netzwerke nicht in der
Lage ist, eine MTU von mindestens 1280 Byte zu gewährleisten. Da der Header der
ICMP Nachricht bereits 8 Byte beträgt, werden vom IP-Paket die ersten 1272 Byte
der IPv6 Nachricht in die ICMP Nachricht übernommen. Dadurch, dass 1272 Byte
der ursprünglichen IP Nachricht zwischengespeichert werden müssen, muss die Puffer
FIFO auf eine Größe von 2048 Byte angepasst werden.
12
3.2 Umsetzung
Für die Umstellung des MAM von IPv4 nach IPv6 muss die gesamte Header Struktur
an IPv6 angepasst werden. Zunächst werden die Zustände für den Ethernet Header
und die VLAN Tags definiert. Hier ändert sich zunächst einmal nicht viel, außer
dass MAM nun nach IPv6-Paketen suchen soll. Dafür ändert sich nur der Ethertype von 0x0800 auf 0x86DD. Danach müssen sich aber die Zustände für IPv6, die
von der Puffer-FIFO eingelesen werden, ändern. Nachdem der Header vollständig
eingelesen ist, sollen noch 1232 Byte Daten eingelesen werden, damit MAM eine
ICMP Nachricht generieren kann, falls die MTU durch das Einfügen von Ortsinformationen überschritten wird. Die zusätzlichen Daten werden in einer zusätzlichen
Puffer-FIFO eingelesen. Die Daten sollen nun nicht mehr geschaufelt werden, sondern mit der FIFO eingelesen und bei Bedarf ausgelesen werden. Nach dem Einlesen
der Daten wird überprüft, ob die Nutzdatenlänge plus 40 Byte für den Header plus
der Ortsinformationen die MTU überschreiten. Dabei wurde aus Effizienzgründen
darauf verzichtet, bereits bei MAM nach einem Zieloptionsheader zu suchen. Es ist
anzunehmen, dass bei jeder Überprüfung der einzelnen Erweiterungsheader die Geschwindigkeit abnimmt. So sollen von vornherein 2 Byte für einen Zieloptionsheader
reserviert werden und die Optionslänge um die 2 Byte vergrößert werden.
Weiterhin muss die Länge der Ortsinformationen so geändert werden, dass die
Länge der zusätzlichen Informationen im Zieloptionsheader an einer 8 Byte Grenze
enden. Das heißt, die Länge der Ortsinformationen, das können auch mehrere sein,
wird nun auf ein 8-faches erweitert. Von diesem achtfachen Wert werden noch 2 Byte
für die ersten beiden Byte des Zieloptionsheader abgezogen. So ergibt sich die neue
Größe der IP-Optionen.
Noch während der Frame eingelesen wird, wird entschieden, ob der Frame durch
die Send State Machine weitergelassen wird, oder ob der Frame verworfen werden
soll und der Absender eine ICMP Nachricht bekommen soll. Nachdem die Payload
Length in die Read State Machine eingelesen wurde, soll nun überprüft werden, ob
der Frame nach dem Hinzufügen der IPclip Option die MTU überschreitet. Dafür
muss die Summe aus der Payload Length, 40 Byte für den Header und die Größe der
IPclip Option innerhalb eines neu generierten Zieloptionsheaders ermittelt werden.
Wenn diese Summe die MTU überschreitet, soll die Send State Machine das Auslesen
des Frames aus der FIFO stoppen und statt dessen eine ICMP Nachricht generieren,
welche dann an den Sender zurück geschickt wird.
13
3.3 Verifikation
Das Modul konnte bei der Synthese eine Geschwindigkeit von 172 MHz erreicht werden und somit eine Verwendung im GigaByte Betrieb ermöglicht werden. Das MAM
verwendet derzeit 504 Slices. MAM arbeitet derzeit nur im Upstream, für die Verwendung im Downstream müssen noch weitere Änderungen an diesem Modul vorgenommen werden.
14
4 PPPoE MTU Adaptation Module
Das PPPoE MTU Adaptation Module hat die Funktion, beim Verbindungsaufbau einer Point-to-Point-Protokoll Verbindung die Maximum Receive Unit mit dem Broadband Remote Access Server, BRAS, auszuhandeln. Damit die MRU durch das zusätzliche Einbringen der Optionen nicht überschritten wird, soll PAM die ursprüngliche
MRU um die IP-Option vergrößern bzw. im Downstream von der MRU die IP-Option
abziehen. Beim Verbindungsaufbau soll mit Hilfe des Link Control Protocols LCP die
Verbindung zwischen dem Rechner und dem BRAS ausgehandelt werden. Das PPPoE
ist in 3 Verbindungsphasen eingeteilt. In der PPPoE Discovery Phase werden die ersten Verbindungsparameter einer Verbindung zwischen dem Client und einem Server
ausgehandelt. Hier werden die MAC Adressen ausgetauscht und dem Verbindungspartner eine Identifikation zugeteilt. In der PPPoE Session Phase werden dann die
wichtigsten Paramter zur Übermittlung von Datenpaketen, wie die Aushandlung der
MRU oder die Authentifizierung des Nutzers, ausgehandelt. Diese Phase ist besonders
wichtig für die Implementierung des PAM Moduls auf IPclip, da zur Aushandlung
der MRU der Rechner eine PPPoE Session Phase Nachricht sendet, in der ein LCP
Configure Request eingebaut ist. In dieser LCP Configure Request Nachricht wird die
MRU mitgesendet. Hier soll PAM der MRU die Größe der IPclip Option hinzuaddieren. Danach wartet PAM auf eine LCP Acknowledge oder eine LCP Not Acknowledge
Antwort des BRAS. Das Syntaxdiagramm für PAM wird in Abbildung 4.1 dargestellt.
15
Abbildung 4.1: Syntaxdiagramm PAM
Sendet der BRAS nun eine LCP Acknowledge oder LCP Not Acknowledge zurück,
so muss PAM der vom BRAS übermittelten MRU die Größe der Option abziehen.
Der Empfänger erhält nun die ihm zur Verfügung stehende MRU.
4.1 Konzept und Umsetzung
Durch den Umstieg auf IPv6 ändert sich am LCP Verbindungsaufbau nichts. Zur
Aushandlung der MRU bleibt die Prozedur des LCPs erhalten. Dem LCP wird lediglich eine weiteres Protokoll, also IPv6, zugeordnet. Dementsprechend muss die Größe
der IP-Optionen auf ein Vielfaches von 8 Byte vergrößert werden, wovon 2 Byte für
den Zieloptionsheader reserviert werden müssen. Der Aufbau einer PPPoE Session
Phase Nachricht ist in Abbildung 4.2 zu sehen. Für IPv6 muss die neue MRU als
Summe der Größe des IPv6-Headers, die Payload Länge und die IPclip Option gebildet werden. Wie bei MAM, 3.1, muss auch bei PAM die IPclip Option in einen
Zieloptionsheader untergebracht werden, wofür 2 Byte für den Zieloptionsheader reserviert werden müssen. Für die Aushandlung von IPv6 Optionen ist dann das IPv6
Control Protocol, [3] verantwortlich, welches hier aber keine Anwendung findet und
analog dem IP Control Protocol von IPv4 ([1]) entspricht.
16
Abbildung 4.2: Aufbau der PPPoE Session Phase Nachricht
4.2 Verifikation
Anhand des Aufbau und des Blockschaltbildes von PAM wird ersichtlich, dass sich
an der Struktur von PAM im Vergleich zu IPv4 nichts geändert hat.
(a) Aufbau
(b) Blockschaltbild
Abbildung 4.3: Aufbau und Blockschaltbild des PAM
Nach der Synthese des Moduls kann eine Geschwindigkeit von 177 MHz erreicht
werden. Mit dieser Geschwindigkeit kann auch der Betrieb im GBit-Ethernet garantiert werden, wofür nur 125 MHz benötigt werden. Das PAM benötigt 163 Slices. Bei
funktionalen Test, tauschte PAM die alte MRU gegen die neu berechnete MRU aus.
PAM arbeitet sowohl im Upstream als auch im Downstream.
17
5 Parser
Der Parser dient dem Extrahieren der Schlüsselinformationen aus einem IP-Paket.
Das Blockschaltbild des Parsers ist in Abbildung 5.1 dargestellt.
Abbildung 5.1: Blockschaltbild des Parsers
Anhand eines VLAN-Tags und der IP-Adresse des Senders kann der Parser eine Schlüsselinformation zusammensetzen, welche mit einem Schlüsselsatz im Parser
verglichen wird. Findet der Parser einen bekannten Schlüssel, so wird eine Portinformation an den Additional Information Adder übergeben. Ein Überblick über den
Programmablauf bietet das Syntaxdiagramm in Abbildung 5.2.
18
Abbildung 5.2: Syntaxdiagramm des Parsers
5.1 Konzept
Um den Parser für IPv6 zu implementieren, muss zunächst gesagt sein, dass der
Schlüssel sich wesentlich geändert hat. Bei IPv4 war der Schlüssel 44 Bit groß und
er setzte sich aus der 12-Bit großen Information des VLAN-Tags und der 32-Bit
Adresse der Quell-IP zusammen. Da bei der Umstellung auf IPv6 sich die Größe der
IP-Adressen auf 128 Bit vergrößert hat, die Größe des VLAN-Tags jedoch nicht, wird
sich die Schlüsselinformation auf 140 Bit vergrößern. Wie unter IPv4 wird im Falle, dass zwei VLAN-Tags existieren, das erste VLAN-Tag zur Schlüsselinformation
verwendet. Findet der Parser dagegen keinen VLAN-Tag, so sollen die 12 Bits für
das VLAN-Tag mit Nullen gefüllt werden. Weiterhin befindet sich die Quell-IP bei
IPv6 an anderer Stelle als bei IPv4. Bei IPv4 begann die Quell-IP beim 97. Bit und
daher begann der Parser ab dem 26. Byte des Datenframes die Adresse einzulesen.
Unter IPv6 befindet sich die Quelladresse schon ab dem 65. Bit im IPv6-Header. Somit ergibt sich im Ethernet-Frame eine Startposition für die IP-Quelladresse ab dem
22. Byte. Dies lässt sich durch eine Betrachtung des neuen IP-Headers, siehe Abbildung 2.1, begründen und die Startposition ergibt sich aus dem Ethernet-Datenframe
ohne PPPoE und ohne VLAN-Tag. Je nachdem, ob der Ethernetframe ein VLANTag besitzt, verschiebt sich die Startposition um 4 Byte, da pro VLAN-Tag 4 Byte
im Ethernetframe reserviert werden. Befinden sich zwei VLAN-Tags im Ethernetframe verschiebt sich somit die Startposition der IPv6 Quelladresse um 8 Byte. Soll
das Internet-Paket über PPPoE übertragen werden, verschiebt sich die Position der
19
IP-Adresse ebenfalls um 8 Byte, da sich zwischen dem Ethernet-Header und dem
IPv6-Header noch ein PPPoE-Header befindet.
Abbildung 5.3: Aufbau des Parsers
Ein kurzer Überblick über den Aufbau des Parser ist in Abbildung 5.3 zu sehen.
Für die Umstellung auf IPv6 müssen jeweils auch die einzelnen Komponenten des
Parsers überarbeitet werden. Zunächst soll der Framebuffer betrachtet werden. Der
Framebuffer liest den Frame bei einem SOF=’1’ ein und extrahiert hier bereits die
Schlüsselinformation mittels eines Data Parsers. Der Data Parser bekommt die Information, ob es sich um eine PPPoE Übertragung handelt und ob und wie viele
VLAN-Tags vorhanden sind. Anhand dieser Information berechnet der Data Parser
die genaue Startposition der IPv6 Quelladresse. Nachdem die neue Startposition zum
Herauslesen der Informationen bekannt ist, muss noch die Größe der Parsebreite festgelegt werden. Die Parsebreite gibt die Größe der Schlüsselinformation in Byte an
und unter IPv4 war diese Parsebreite 6 Byte groß. Aufgrund der größeren Quelladresse muss die Parsebreite unter IPv6 auf 18 Byte vergrößert werden.
Nachdem die Information eingelesen wurde, wird die Schlüsselinformation an einen
Memory Arbiter übergeben, der die Information an den Memory weitergibt. Im Memory befindet sich ein Schlüsselsatz, der aus RAM-Speicherblöcken besteht. Hier
wird die herausgelesene Schlüsselinformation mit dem Schlüsselsatz verglichen. Befindet sich zu der Schlüsselinformation ein passender Schlüsselsatz, so wird eine 16-Bit
breite Portinformation an den Additional Information Adder übergeben.
20
5.2 Umsetzung
Wie bereits in Abbildung 5.3 zu sehen ist, ist der Parser ein Modul, welches sich
aus mehreren Einzelkomponenten zusammensetzt. In allen Einzelmodulen muss die
Größe der Schlüsselinformation an IPv6 angepasst werden, so dass die Schlüsselinformation nicht mehr 44 Bit sondern 140 Bit groß ist.
Im Framebuffer wird zunächst die Größe der Schlüsselinformation angepasst. Danach wird eine neue Startposition für den Data Parser festgelegt, da sich, wie unter
5.1 bereits erwähnt wurde, die Startposition für das Herauslesen der Schlüsselinformation anhand des neuen IP-Headers geändert hat. Bei IPv6 soll der Data Parser
nun ab dem 22. Byte beginnen, die Daten heraus zu lesen. Diese Daten werden dann
an den Memory Arbiter übergeben. Gibt es kein VLAN-Tag, so werden die ersten 12
Bit des Schlüssel mit Nullen definiert. Bei zwei VLAN-Tags soll der Parser das erste
VLAN-Tag zur Auswertung der Schlüsselinformation nutzen.
Desweiteren wurden im Memory Arbiter und im Memory die Größe der Schlüsselinformation an IPv6 angepasst. Die Datenbreite, die vom Parser eingelesen wird,
bleibt 16 Bit groß. Unter Ipv4 musste die Größe mit 16 Bit definiert werden, da der
Parser sonst nicht im G-Bit Ethernet hätte arbeiten können.
5.3 Verification
Der Parser erreicht bei der Synthese eine Geschwindigkeit von 139 MHz, sodass die
Datenbreite von 16 Bit nicht geändert werden muss. Der Parser verwendet derzeit
einen 140 Bit Schlüssel zur Generierung der Schlüsselinformationen.
21
6 Option Verification Module
6.1 Konzept
Das Option Verification Module dient zur Überprüfung, bereits vorhandener Ortsinformationen in einem IPv6 Frame. Das OVM erhält die Portinformation vom Parser
und untersucht einen eingehenden IP-Frame auf Ortsinformationen. Abbildung 6.1
zeigt das Syntaxdiagramm des OVM. In der IPv6 Version muss das OVM zunächst
prüfen, ob der Frame zusätzliche Erweiterungsheader besitzt. Die Information dazu
findet der OVM im Next Header Feld des IP-Headers. Steht dort nur eine ’6’, so weiß
OVM, dass dem IP-Header das TCP Protokoll folgt. In diesem Fall besitzt der Frame
keine zusätzlichen Optionen und das OVM kann den Frame durchlassen.
22
Abbildung 6.1: Syntaxdiagramm des OVM
Wenn das OVM einen Erweiterungsheader gefunden hat, so soll OVM überprüfen,
ob es sich um einen Zieloptionsheader handelt. Beim ersten überhaupt vorhandenen Erweiterungsheader, findet das OVM die nötige Information im IPv6-Header.
Der Wert des Next Headers muss dementsprechend zwischengespeichert werden. Der
Zieloptionsheader hat den Wert 60. Handelt es sich also um einen anderen Erwei-
23
terungsheader, so kann OVM diesen Header überspringen. Das kann das OVM wie
folgt tun. Der Wert des nächsten Erweiterungsheader wird in eine Registervariable
r.nxt gespeichert. Im nächsten Byte befindet sich die Längenangabe dieses Erweiterungsheaders. Ein zusätzliche Zählvariable soll nun die entsprechende Länge an
Bytes durchlassen. Da die Zählvariable sich aber schon um 2. Byte befindet, müssen
von der Länge des Headers 2 Byte abgezogen werden. Wurde der Erweiterungsheader übersprungen, so soll noch mal geschaut werden, ob im vorangegangenen Header
bereits ein Zieloptionsheader angezeigt wird. Ist dies nicht der Fall, so soll OVM
weiter nach einem Zieloptionsheader suchen. Die Prozedur für die Suche nach einem
Zieloptionsheader wird in einem Zustandsautomaten in Abbildung 6.2 dargestellt.
Abbildung 6.2: Zustandsautomat des OVM - Suche nach einem Zieloptionsheader
Der Wert des nächsten Headers wird wieder gespeichert, da es sich auch beim
nächsten Erweiterungsheader um einen Zieloptionsheader handeln kann. Sobald ein
Zieloptionsheader gefunden wurde, soll OVM den Erweiterungsheader auf Ortsinformationen zu durchsuchen. Dafür wird die Länge des Zieloptionsheaders wieder
24
genommen als Zähler. Es wird jedes Byte durchsucht. Da sich an dem Aufbau der
IP-Optionen nichts geändert hat, wird die Prozedur zum Durchsuchen der Optionen
so ähnlich sein, wie bei IPv4. Das OVM überprüft alle Optionen im Header auf Ortsinformationen. Die jeweils letzte wird in der Variablen valid ip option gespeichert,
die für IPv6 von 5 Bit auf 11 Bit vergrößert wurde. Diese Vergrößerung kommt dadurch zustande, da unter IPv6 rein theoretisch nach dem IP-Header nur ein einziger
Erweiterungsheader mit maximaler Länge stehen kann. Bei IPv6 kann dieser Erweiterungsheader durchaus eine Länge von 1460 Byte annehmen. Aber damit die MTU
nicht überschritten wird, der Zieloptionsheader aber noch eine gültige Länge mit dem
Vielfachen von 8 Byte hat, kann der Zieloptionsheader maximal 1456 Byte groß sein.
Nachdem noch 2 Byte für die Zieloptionsheader Kopfdaten abgezogen wurden, erhält man eine maximale Größe von 1454 Bytes. Da es auch 1 Byte IP-Optionen gibt,
können theoretisch 1454 IP-Optionen existieren, die in einem IPv6 Paket vorhanden
sind. So ermittelt sich die Größe der Variablen valid ip option wie folgt:
valid ip option = log 1456/ log 2
Da der IP-Frame allerdings mehr als einen Zieloptionsheader besitzen kann, soll
OVM auch die folgenden Erweiterungsheader untersuchen, bis keine mehr gefunden
werden und TCP oder UDP als nächstes Protokoll angezeigt werden.
6.2 Umsetzung
Wie unter MAM, müssen auch bei OVM die Zustände für die Header Daten neu
definiert werden. Die Kernstruktur des OVM bleibt unter IPv6 weitgehend erhalten.
Der Aufbau des OVM ist in Abbildung 6.3 zu sehen.
Abbildung 6.3: Aufbau des OVM
25
Bei OVM werden die Werte des Headers nicht gespeichert. Die Ausnahme dabei
bildet allerdings der Next Header Wert. Dieser Wert wird in einem Register gespeichert, da OVM die Erweiterungsheader durchsuchen muss. Nachdem der Header
eingelesen wurde, entscheidet sich, ob der Frame vom OVM durchgelassen werden
kann oder nicht. Steht im Next Header Feld nämlich eine 6 für TCP oder eine 17 für
UDP, so kann das OVM den Frame durchlassen und die Variable valid ip opt erhält
den Wert ’00000000000’. Befinden sich jedoch Erweiterungsheader im Datenframe, so
muss OVM in den Zustand NXT gehen. In diesem Zustand wird der neue Wert des
nächsten Headers gespeichert. Im nächsten Byte steht die Länge des Erweiterungsheaders. Dieser Wert muss auch in der Registervariablen r.len zwischengespeichert
werden, damit OVM die entsprechende Länge des Headers überspringen bzw. durchsuchen kann. Dabei ist zu beachten, dass die Länge in einem Erweiterungsheader
die Anzahl der 8 Byte Wörter angibt und der Wert 0 deklariert immer die ersten
8 Bytes eines solchen Headers. Das heißt, dass das OVM solange in einem Header
suchen muss, bis die Länge erreicht wurde. Da das OVM aber an dieser Stelle bereits
im 2. Byte des Headers ist, müssen jeweils 2 Byte von der noch zu zählenden Länge
abgezogen wird. Die Abbruchsbedingung in einem Zustand ergibt sich wie folgt:
r.rsm cnt = (r.len + 1) ∗ 8 − 2
Der Wert r.len+1 gibt dabei den realen Wert der Länge an, da wie bereits oben
erwähnt, der Wert 0 die ersten 8 Byte eines Erweiterungsheaders angibt. Diese Abbruchbedingung muss nach jedem Byte ausgeführt werden. Findet OVM keine IPclipOptionen und es können jedoch keine Optionen mehr hinzugefügt werden, da die
Header bereits das gesamte Datenpaket ausfüllen, so muss OVM das ’discard’-Signal
für den AIA setzen, damit AIA den Frame verwerfen kann. Sobald aber noch Platz
für weitere Optionen besteht und keine Ortsinformationen vorhanden sind, so soll
OVM das ’add’-Signal setzen. Dieses Signal wird ebenfalls an AIA übergeben. Findet OVM jedoch gültige Ortsinformationen, so wird nach jeder Option die Variable
valid ip opt um 1 erhöht. Diese Variable gibt an, welche Option die letzte gültige
Ortsinformation besitzt.
Weiterhin müssen die Variablen r.total opt length, r.rsm cnt und r.good li an IPv6
angepasst werden. Die Variablen r.total opt length und r.rsm cnt müssen nun mindestens 1460 sein, damit im worst case 1460 Byte gelesen werden können. Die Variable
r.good li wird wie der Wert valid ip opt von 5 auf 11 Bit vergrößert.
Wie unter IPv4 soll das OVM nach den Ortsinformationen suchen, die in den
folgenden Abbildungen dargestellt sind.
26
(a) GPS Ortsinformation
(b) GPS Ortsinformation mit Access-Node und Port-ID
(c) Ortsinformation nach RFC 3825
(d) Ortsinformation nach RFC 3825 mit Access-Node/Port-ID
(e) Ortsinformation nach RFC 4776
Abbildung 6.4: Von IPclip unterstützte Ortsinformationen
6.3 Verifikation
Der OVM ist bislang noch nicht funktional lauffähig, da die Zählervariable r.rsm cnt
weit aus ihrem Definitionsbereich läuft. Wahrscheinlich liegt hier noch ein Fehler
in der Abbruchbedingung vor, so dass die Zählvariable unkontrolliert weiter zählt.
Der Fehler tritt im Zustand IP OPT Type auf. Somit kann auch keine Aussage über
die Laufzeitgeschwindigkeit und die Ressourcen Auslastung auf dem Chip getroffen
werden. Es läßt sich jedoch vermuten, dass der OVM knapp die Grenze zum G-Bit
Betrieb erreichen wird.
27
7 Additional Information Adder
7.1 Konzept und Umsetzung
Der Additional Information Adder soll dem IP-Datenpaket zusätzliche Ortsinformationen hinzufügen, sofern das Paket keine gültigen Ortsinformationen besitzt.
Abbildung 7.1: Blockschaltbild von AIA
Der AIA erhält vom OVM die Signale ’discard’, ’add’ und die Variable valid ip opt.
Mit diesen Werten soll AIA herausfinden, ob ein Frame verworfen werden kann (’discard’ = 1), zusätzliche Informationen hinzugefügt werden sollen (’add’ = 1) und
an welcher Stelle sich die letzte gültige Ortsinformation befindet (valid ip opt). Ein
genauer Programmablauf befindet sich im Syntaxdiagramm 7.2.
28
Abbildung 7.2: Syntaxdiagramm AIA
Für IPv6 muss die Variable valid ip opt daher auch bei AIA von 5 Bit auf 11 Bit
vergrößert werden. Weiterhin muss eine Prozedur zum Auffinden des richtigen Erweiterungsheaders eingeführt werden bzw. es muss ein zusätzlicher Zieloptionsheader
generiert werden, für den Fall, dass es bislang im IP-Paket keinen Zieloptionsheader
gibt, AIA jedoch zusätzliche Ortsinformationen hinzufügen soll. Ein grober Ablauf
dieser Prozedur ist im Zustandsautomaten 7.3 dargestellt.
29
Abbildung 7.3: Zustandsautomat
Ortsinformationen
für
das
Hinzufügen
von
zusätzlichen
Der Zustandsautomat beschreibt, unter welchen Bedingungen lediglich Informationen hinzugefügt werden sollen oder wann ein kompletter Erweiterungsheader generiert werden muss. Dafür müssen einige Werte neu definiert werden. Zum Weitersenden des Frames nach dem Hinzufügen wurde eine Value-FIFO eingefügt, die die
Werte, die sich im AIA ändern, zwischenspeichert und im Anschluss daran, die neuen
Werte anstelle der alten Werte im Frame einfügt. Zu den Werten, die in die ValueFIFO eingefügt werden sollen, gehört die neue Payload Length des IPv6 Header, das
neue Nxt Hd des IPv6 Headers für den Fall, dass sich vorher gar kein Erweiterungsheader im Frame befand (der alte Wert darf jedoch nicht verworfen werden, da der
neue Header auf das alte Folgeprotokoll verweisen soll) und die neuen Zählerstände.
30
Abbildung 7.4: Aufbau des AIA
Abbildung 7.4 zeigt das Zusammenspiel der einzelnen Komponenten im AIA. Aufgrund der neu definierten Werte, muss die Datenbreite der Value-FIFO angeglichen
werden.
Weiterhin soll AIA ungültige Ortsinformationen löschen. Dies kann AIA auf ähnliche Weise vornehmen wie das Hinzufügen. Dafür muss sich AIA die alten Zählerstände, die Länge der IPv6 Payload und die Länge des Erweiterungsheaders merken.
Fällt ein Zieloptionsheader vollständig aus, muss der Wert des Nxt Feldes in das Nxt
Feld des vorherigen Erweiterungsheaders bzw. des IPv6-Headers eingegliedert werden.
Für den AIA wurden bereits erste Änderungen im Header Aufbau vorgenommen,
aber es gibt bislang noch keinen funktionierenden Prototypen.
31
8 Additional Information Remover
8.1 Konzept
Der Additional Information Remover soll im Downstream von ankommenden IPFrames die zusätzlichen Ortsinformationen entfernen, damit der Absender diese Ortsinformationen nicht erhält. Wenn eine zusätzliche Information gelöscht wurde, gibt
AIR die Information, dass das Paket vertrauenswürdig ist oder nicht, an den Empfänger weiter. Nach welchem Schema AIR dabei vorgehen muss, ist in Abbildung 8.1
dargestellt.
Abbildung 8.1: Syntaxdiagramm des AIR
Genau wie AIA benötigt der AIR eine Value-FIFO zum Zwischenspeichern von
32
kritischen Werten, die beim Löschen der Informationen abhanden kommen könnten
und somit das Paket unbrauchbar machen würden. Auch hier muss die neue Payload
Length und die Next Header Werte zwischengespeichert werden. Abbildung ?? zeigt
hier deutlich, dass die Struktur des AIR der Struktur des AIA sehr ähnlich ist.
Abbildung 8.2: Aufbau des AIR
An AIR konnten bislang noch keine Änderungen vorgenommen werden, der Programmablauf des AIR sollte aber ähnlich dem Programmablauf des AIA sein.
33
9 Zusammenfassung und Ausblick
Während dieser Arbeit wurde ein Konzept zur Migration des IPclip Mechanismus
von IPv4 nach IPv6 entworfen und teilweise konnten die Änderungen an den Modulen vorgenommen werden. Bislang sind MAM, PAM und der Parser lauffähig. Um
das OVM lauffähig zu bekommen, benötigt es einer genaueren Fehleranalyse bei der
Simulation, da es bislang noch einen Fehler mit den Zählvariablen gibt. Sobald OVM
fertiggestellt ist, kann an AIA weitergearbeitet werden. Bei AIA wurden die ersten
Änderungen vorgenommen, aber es fehlen noch wichtige Zustände zur Generierung
von zusätzlichen Zieloptionsheader.
Für MAM muss noch eine Prozedur zur Verwendung im Downstream erarbeitet
werden, weiterhin bedarf es bei allen Modulen, die die Auswertung der Erweiterungsheader vornehmen, also OVM, AIA und AIR einer genaueren Betrachtung der
jeweiligen Erweiterungsheader. Der Bis jetzt folgen sie dem Aufbau eines normalen
Erweiterungsheaders mit Next Header Feld und Länge des aktuellen Erweiterungsheaders. Aber nicht alle Folgeprotokolle weisen die gleiche Struktur auf. Es muss
auf alle unterschiedlichen Folgeprotokolle genau eingegangen werden. Besonders soll
auf die Verwendung eines Fragmentierungsheaders eingegangen werden. Dieser Erweiterungsheader hat eine feste Länge und somit wird keine Länge dieses Headers
vorgegeben. Der aktuelle Stand des Konzepts sieht diese Ausnahme bis jetzt nicht
vor.
9.1 Ausblick
Die Verwendung eines IPclip Mechanismus ist vielversprechend. Durch die eindeutige Zuweisung von Ortsinformationen kann der Absender eines Datenpaketes genau ermittelt werden. Besonders wichtig erscheint dieser Vorteil bei Notrufen über
Internet-Telefonie. Es gibt immer mehr Angebote von Providern, die ihren Kunden
nicht nur einen Internetanschluss bereit stellen, sondern auch die Möglichkeit von
Internet-Telefonie anbieten. Viele Kunden schätzen dieses Angebot und wählen es
als Alternative zum herkömmlichen Telefonanschluss der Telekom. Durch die Verwendung von IPclip könnte den Teilnehmern der Internet-Telefonie eine feste Ortsinformation anbieten. Für Notrufe über das Internet ist dies klar von Vorteil.
Bei der Verwendung gegen Phishing und Spam ist der IPclip Mechanismus genauso
34
überzeugend wie bei der Verwendung bei Notrufen. Die Empfänger von InternetPaketen erhalten eine zusätzliche Absicherung darüber, ob das Paket manipuliert
wurde. Da bereits IPv6 mehrere Sicherheitsaspekte aufweist, wie die Verwendung
eines Authentifizierungsheaders, wird sich zeigen, inwieweit sich IPclip in Bezug auf
Phishing und Spam Vorbeugung behaupten kann. Es bietet jedoch eine vernünftige
Alternative zu bekannten Mechanismen und kann dem Nutzer so zusätzlich Sicherheit
bieten.
35
Erklärung
Hiermit erkläre ich, Grit Rhinow (Matrikelnummer 3202581), dass der vorliegende
Große Beleg mit dem Thema “Trust-by-Wire in paketvermittelnden IP-Netzen:
Migration des IPclip-Mechanismus von IPv4 nach IPv6”von mir in allen Teilen
selbstständig verfasst wurde. Dafür wurden keine anderen als die angegebenen
Quellen und Hilfsmittel benutzt. Alle wörtlich oder sinngemäß übernommenen
Textstellen habe ich als solche kenntlich gemacht.
Rostock, 8. September 2008
cand. ing. Grit Rhinow
Herunterladen