Layer 2 Forwarding Protokoll

Werbung
Layer 2 Forwarding Protokoll
Im Rahmen der Veranstaltung
Communication Technologies I
SS 2005
Ausgearbeitet von: Dominik Bossdorf, Mirko Schäfer
Inhalt:
1. Layer 2 Forwarding Protokoll
a. Motivation und Ziele
2. Exkurs OSI Layer 2
a. Netze mit Punkt-zu-Punkt Verbindungen
b. Netze mit Vielfachzugriff
3. Exkurs
a. PPP Protokoll
b. SLIP
c. PAP / CHAP Authentifizierung
4. Detailansicht L2F Paket
a. L2F Header
b. L2F Management Pakete
5. Einsatz und Praxisbeispiele
a. Serverseitige Erweiterung von Netzten
b. L2F Protokoll Verbindungshandshake
6. Fazit und Bewertung
a. Vergleich VPN Protokolle
b. Stärken und Schwächen
7. Quellenangaben und Worterläuterungen
1. Layer Two Forwarding Protokoll
Das in dieser Ausarbeitung behandelte Datenprotokoll wird in der RFC2341 beschrieben und
spezifiziert. Das Layer Two Forwarding Protokoll (im weiteren Text als L2F bezeichnet) ist
eine Entwicklung entstanden in einem Kooperationsprojekt von unter anderem Cisco
Systems,AT&T und Northern Telecom, und war eines der ersten Protokollansätze zur
Erstellung von Virtuellen Netzwerken in einer bestehenden Infrastruktur. Mittlerweile ist das
L2F Protokoll auf Grund der fortgeschrittenen technischen Entwicklung und der bestehenden
Probleme durch das L2TP (Layer Two Tunneling Protokoll) abgelöst worden.
a. Motivation und Ziele
Motivation bzw. Ziel der Implementierung war es unter anderem den ISPs* eine
Möglichkeit zu schaffen ein physikalisches Einwahlinterface vom eigentlichen NAS* zu
trennen und somit eine höhere Flexibilität und Sicherheit im ISP Einwahlnetz zu schaffen
ohne die verwendeten PPP Datenpakte entpacken zu müssen.
Des Weiteren sollte es möglich sein mehrere PPP Verbindungen zu einem Datenstrom
zusammenzufassen bzw. einen Tunnel zu erzeugen den dann mehrere Verbindungen
gleichzeitig nutzen können.
Dabei sollten diese Eigenschaften möglichst Protokollneutral dem Enduser zur Verfügung
gestellt werden ohne das dieser Änderungen an seiner Hard oder Software durchzuführen
hat.
Diese Anforderungen und Eigenschaften wurden daraufhin im L2F implementiert.
Eine Möglichkeit dieses zu erreichen ist nötigen Datenpakete bereits auf einem
niedrigeren OSI* Layer zu modifizieren, zu kapseln bzw. weiterzuleiten.
2. Exkurs OSI Layer 2
Der OSI Layer 2 wird als Sicherungsschicht oder Data Link Layer bezeichnet. Hauptaufgabe
der Sicherungsschicht ist es der Vermittlungsschicht (Layer 3) einen Datenkanal frei von
Übertragungsfehlern zur Verfügung zu stellen. Dazu werden die zu übertragenden Daten in
Daten Rahmen (Data Frames) aufgeteilt und dann sequenziell übertragen. War die
Übertragung des Frames erfolgreich erfolgt die „Rück“ Übertragung eines
Bestätigungsrahmens (Acknowledgement Frame) durch den Empfänger. Häufig sind auch
Techniken zur Flusskontrolle und Fehlerbehebung in diese Teilschicht implementiert.
Netzwerke können in der Sicherungsschicht in 2 Gruppen aufgeteilt werden.
a. Netze mit Punkt-zu-Punkt Verbindungen
Bei Punkt-zu-Punkt Verbindungen besteht eine direkte und exklusive Verbindung
zwischen zwei Stationen so das bei Duplex - Übertragungen eine Kollision von
Datenpaketen auf Grund von vielfach Zugriffen auf den Übertragungskanal
ausgeschlossen werden kann. Protokolle die auf dieser Ebene zum Einsatz kommt sind das
HDLC* oder SLIP* Protokoll. Bekannter und immer noch im Einsatz ist jedoch das
Point-To-Point (PPP) Protokoll. Dieses Protokoll baut über ein geeignetes
Übertragungsmedium eine Kommunikationsverbindung mit zwei Teilnehmern auf. Dabei
werden Authentifizierung, Flusskontrolle, Fehlererkennung bzw. Korrektur und
Datenkompressionsmechanismen durch das Protokoll zwischen den Teilnehmern
verhandelt und angewandt. Es ermöglicht so eine Interoperabilität der verschiedensten
Netzwerkstrukturen. Dabei können durch das gleiche Medium mehrere PPP
Verbindungen zur gleichen Zeit existieren.
b. Netze mit Vielfachzugriff
Bei Netzwerken mit Vielfach Medienzugriffen z.B. Ethernet, Token Ring muss das
eingesetzte Netzwerkprotokoll vor allem den Medienzugriff durch die teilnehmenden
Stationen überwachen und regulieren. Zu diesem Zweck wurde eine extra Teilschicht in
der Sicherungsschicht implementiert. Der als MAC-Teilschicht* bezeichnete Sub-Layer
beinhaltet sämtliche Mechanismen zur „Verkehrs, Sende und Empfangsregulierung“.
Exemplarisch eingesetzte Verfahren zur Kanalzuteilung in einem solchen Netz sind z.B.
das CSMA,CSMA/CD (Ethernet, WLAN) FDMA, TDMA (GSM), Token (TokenRing
Netz).
Der grossteil der heutzutage eingesetzten LANs arbeiten nach dem Mehrfachzugriffs
Verfahren während in WANs mehrheitlich Punkt-zu-Punkt Verbindungen zum Einsatz
kommen.
3. Exkurs PPP-Protokoll, SLIP und PAP / CHAP
Da das L2F-Paket in seiner Payload entweder PPP- oder aber SLIP-Pakete aufnehmen kann,
folgt nun eine kurze Erläuterung der wichtigsten Protokolleigenschaften.
a. PPP-Protokoll
Beim Point-to-Point Protokoll handelt es sich um ein Protokoll der Sicherungsschicht ,
welches , wie der Name schon sagt , über eine Punkt-zu-Punkt-Verbindung arbeitet und 2
Endpunkte miteinander verbindet. Das Protokoll arbeitet über verschiedene Arten von
Wählleitungen und ist heutzutage ein bevorzugtes Protokoll zur Einwahl von privaten
Nutzern bei ihren Internet-Service-Provider über Wählleitungen (z.B. ISDN oder
Modem).
Für statische Verbindungen wird meist eine abgewandelte Form, wie zum Beispiel PPPoE
(Point-to-Point over Ethernet) bei DSL benutzt.
Das PPP ist in der Lage verschiedenste Protokolle der Vermittlungsschicht ( z.B. IP, IPX,
AppleTalk , DECnet ..) in sich zu kapseln und so von einem Verbindungspunkt zum
anderen zu transportieren .
Das Format des PPP-Rahmens
Flag : Jeder PPP-Frame beginnt und endet jeweils mit einem Flag mit dem Wert
01111110.
Adresse: Der Wert dieses Feldes ist immer 11111111
Kontrolle: Auch hier ist der einzige mögliche Wert mit 00000011 vorgegeben. Sowohl der
Kontroll-, als auch der Adress-Wert werden laut Spezifikation [RFC 1662] zu einem
späteren Zeitpunkt definiert, was aber bis heute noch nicht geschehen ist. Somit sind diese
beiden Werte entweder mit den festgelegten Werten zu besetzten, oder der Sender braucht
diese Werte nicht zu senden, was dann natürlich 2 Byte Overhead erspart.
Protokoll:
Hier wird angegeben welches höhere Protokoll der Vermittlungsschicht im PPP gekapselt
ist.
Beispiele sind IP ( hexadezimal 21), AppleTalk (hexadezimal 29 ) oder auch DECnet
(hexadezimal 27). Eine ausführliche Aufstellung aller Protokollcodes findet sich in der
RFC1700.
Payload:
Dieses Feld enthält die eigentlichen gekapselten Daten, die von einem Protokoll der
Vermittlungsschicht über die PPP-Verbindung gesendet werden.
Prüfsumme:
Dieses Feld enthält die Prüfsumme um eventuelle Bitfehler in einem übertragenem
Rahmen zu erkennen.
b. SLIP (Serial Line Internet Protocol)
Das SLIP wird verwendet um eine IP-Verbindung zwischen 2 Computer herzustellen, die
über eine Serielle Schnittstelle miteinander verbunden sind.
Mit SLIP sind sehr einfache Verbindungen möglich, indem einfach die Oktets eines IPPaketes über ein serielles Kabel gesendet werden.
SLIP besitzt weder eine Fehlererkennung, noch eine Adressierung. Das muss durch ein
höherschichtiges Protokoll übernommen werden.
c. PAP (Password Authentication Protocol) und
CHAP (Challenge Handshake Authtentication Protocol)
Das Layer 2 Forwarding Protkoll benutzt zur Authentifizierung beim Aufbau eines
Tunnels entweder das CHAP- oder das PAP-Protokoll.
Sowohl das CHAP-, als auch das PAP-Protokoll wurden ursprünglich entwickelt, um eine
Authentifizierung von Einwahlen via PPP zu ermöglichen.
Das PAP-Protokoll benutzt zur Authentifizierung ein Passwort welches allerdings im
Klartext übertragen wird, was das Protokoll natürlich anfällig für das Mitlauschen des
Passwortes durch potentielle Angreifer macht.
Diese Schwachstelle versucht das CHAP-Protokoll durch Verschlüsselung zu korrigieren.
Es benutzt zur Authentifizierung zwischen Server und Client einen 3-Wege Handshake.
Wenn eine Verbindung besteht, kann jede Seite eine Anforderung zur Authentifizierung
der Gegenseite stellen. Hierzu wird eine zufällig erzeugte Nummer oder String zusammen
mit dem eigenem Hostnamen an die sich zu authentifizierende Seite geschickt.
Die Gegenseite sucht anhand des Hostnamens in einer internen Datei nach dem zum
jeweiligen Passwort für die Gegenseite und bildet über dieses, zusammen mit der
Zufallszahl einen Hashwert. Dieser wird dann zur Gegenstelle übertragen. Die
Gegenstelle vergleicht diesen Hashwert mit einem Hashwert, den sie selbst aus dem
eigenem Passwort und der Zufallszahl gebildet hat.
Stimmen beide Werte überein, dann wird die Verbindung akzeptiert, andernfalls wird sie
verworfen.
Der Vorteil dieser Authentifizierungsmethode ist der, das keine Passwörter übertragen
werden, sondern nur Hashwerte, aus denen der Schlüssel nicht wieder errechnet werden
kann. (Einweg-Hashfunktionen)
4. Detailansicht L2F Paket
Das durch das L2F erstellte und übertragene Datenpaket lässt sich in 3 Teile separieren, in
den L2F Header, die Payload und eine optionale Checksumme.
a. der L2F Header
Flags:
Diese Felder geben die Nutzung der optionalen Felder an.
Sind sie auf 1 gesetzt, wird das jeweilige Feld genutzt.
Sie stehen für Payload Offset (F), Key (K), Sequence (S) und Checksum (C).
P steht für Priority und gibt an, ob der jeweilige Empfänger der Payload
bevorzugt behandelt werden soll.
Version: Dieses Feld definiert die Version der L2F-Software die dieses Packet erzeugt
hat. Das Feld muss den Wert 001 enthalten.
Protocol: Hier wird definiert, welches Protokoll innerhalb des L2F Paketes transportiert
wird.
Mögliche Werte sind:
0x00 für Illegales Paket
0x01 für L2F Management Pakete zum Auf- und Abbau eines Tunnels bzw.
zur Verwaltung der darin geführten Verbindung.
0x02 für PPP Pakete
0x03 für SLIP Pakete
Wenn ein Paket mit einem anderen Wert empfangen wird, so wird es als
ungültiges Paket angesehen.
Sequence: Das Sequence Feld wird benutzt, falls das S Bit am Anfang des Headers auf
1 gesetzt ist. Bei Paketen vom Typ L2F Management muss, bei allen anderen
kann es gesetzt werden. Durch die Sequence Nummer kann auf verlorene
oder doppelt gesendete Pakete reagiert werden.
Jede Sequenz von Paketen beginnt mit einer Sequence Nummer von 0.
Jedes folgende Paket erhält die um 1 erhöhte Nummer.
Die Fenstergröße für sequenzierte Pakete beträgt 127, das bedeutet wenn ein
Paket kleiner oder gleich der Sequenz-Nummer des vorher empfangenen
Paketes ist, bzw. um 127 größer ist, wird es verworfen.
Multiplex ID: Dieser Wert definiert und identifiziert eine einzelne Verbindung innerhalb
eines Tunnels. Dieses Feld kann jeden 16-bit Wert annehmen, außer dem
Wert 0 , welcher für den Tunnel an sich steht.
Client ID :Hier bekommt jeder einzelne Tunnel einen Wert.
Lenght: In diesem Feld wird die Größe des gesamten L2F Paketes angegeben.
Ist das empfangene Paket kleiner als der übermittelte Wert in diesem
Feld, wird es verworfen, ist es länger werden die restlichen Bytes ignoriert.
Offset: Dieses Feld ist vorhanden, wenn das F Bit gesetzt ist. Hier wird angegeben
wie viele Bits nach dem L2F Header die eigentliche Payload beginnt.
Ist der Wert z.B. 0 , dann beginnt die Payload sofort nach dem Header.
Key: Auch dieses Feld wird nur genutzt, falls das entsprechende Bit (K) gesetzt
ist. Dieser Schlüssel wird am Anfang der Verbindung zwischen den beiden
Punkten ausgehandelt. Wenn ein empfangenes Paket nicht den erwarteten
Schlüssel hat, wird es verworfen.
Payload: Hier sind die eigentlichen Nutzdaten ( also PPP- oder SLIP-Frames)
enthalten.
Checksum:Wenn das C Bit gesetzt ist , steht hier eine 16-bit CRC Checksumme, die über
das gesamte Paket inklusive Header und Flags berechnet wird.
b. L2F Management Pakete
Wenn im Feld Protocol des Headers L2F steht, bedeutet das, dass L2F Management
Pakete in der Payload des Paketes gesendet werden.
Die L2F Management Pakete werden z.B. benutzt um einen Tunnel aufzubauen oder zu
schließen.
Einige Beispiele für solche Management Pakete sind:
L2F_CONF: Diese Nachricht wird gesendet, um einen Tunnel zwischen NAS
und Home Gateway aufzubauen.
L2F_OPEN: Diese Message steht , falls die MultiplexID auf 0 steht ,für die Beendigung
der Setup-Phase des Tunnels und für den eigentlichen Tunnelaufbau.
Falls die MultiplexID auf einen Wert größer als 0 gesetzt ist, steht sie für
eine weitere Verbindung in einem schon bestehendem Tunnel.
L2F_ECHO: Hiermit wird die Erreichbarkeit eines Clients überprüft.
L2F_ClOSE: Zum Schließen eines Tunnels kann diese Message zu jeder Zeit von beiden
Seiten der Verbindung gesendet werden.
Falls die MultiplexID 0 ist, wird der ganze Tunnel geschlossen, ist sie
größer steht sie für die Beendigung einer einzelnen Verbindung im Tunnel
Dies waren die wichtigsten Management Messages .Von diesen vier Messages gibt es jeweils
noch abgewandelte Formen, auf die wir aber hier nicht näher eingehen werden, da diese Vier
das Prinzip der Management Messages im Großen und Ganzen erklären.
5. Einsatz und Praxisbeispiel
Motivation bzw. Ziel der Implementierung war es unter anderem ein beliebiges OSI Layer 3
Protokoll z.B. (TCP/IP, IPX/SPX, Apple-Talk....) ,über eine bereits bestehende (Internet)
Standart-Verbindung (z.B. PPP und TCP/IP über ISDN) , zwischen zwei bestimmten
Netzwerken ohne zusätzliche Hard oder Software zu benutzen. Speziell wollte man mit Hilfe
des L2F einzelne, externe Rechner in ein bestehendes Netzwerk integrieren ohne das
Netzwerkprotokoll ändern zu müssen.
[Einsatzbeispiel 1]
a.
Serverseitige Erweiterung von Netzwerken
Einen Grossteil dieser Arbeit erledigt zwar schon das PPP Protokoll aber mit Hilfe des
L2F sollte es möglich sein den Einwahlserver mit dem physikalischen
Verbindungsinterface vom Server dessen Dienste man nutzen möchte zu trennen ohne die
übertragenen Datenpakete erneut routen oder modifizieren zu müssen.
L2F
Intra Net
1
ung
d
n
i
erb
P Verbindung 2
PP
P
PP V
PPP
Ver
bind
Network Access Server
ung
3
PPP Verbindung 1
Client 1
PPP Verbindung 2
Client 2
ISP
Einwahlserver 1
L2F
PPP Verbindung 3
ISP
Einwahlserver 2
Client 3
Hier ist auch eine weitere Eigenschaft des L2F zu erkennen. Durch das den Einsatz von
L2F Verbindungen (schwarz markiert) können im ISP Netz eine Vielzahl von PPP
Verbindungen (blau markiert) zur selben Zeit durch den gleichen Tunnel geleitet werden.
Dies spart in den ISP Backbonenetzen wertvolle Ressourcen und ermöglicht eine
flexiblere Skalierung.
b. L2F Verbindungshandshake am
Beispiel einer virtuellen Wählverbindung
eines Remote-Users in ein Firmennetzwerk.
Der Network Acces Server des ISP des Remote Users muss L2F unterstützen und die
notwendigen Daten für den Tunnel haben.
Der Remote User wählt sich z.B. via ISDN bei seinem ISP ein und authentifiziert sich für
den Internetzugang. Anhand des Usernamens und der im NAS gespeicherten Einträge
erkennt der NAS das Ziel der Verbindung und stellt einen Tunnel zwischen sich und dem
Home Gateway des Remote Users her. Nun fordert das Home Gateway noch eine weitere
Authentifizierung des Nutzers, falls diese gelingt, besteht nun eine virtuelle Verbindung
zwischen Remote-User und Home Gateway.
Als erstes wählt sich der Remote User z.B. per ISDN beim NAS seines ISP ein.
Der NAS weiß nun anhand des Usernamens und seiner gespeicherten Daten, dass ein
Tunnel zum Home Gateway des Users gewünscht wird.
Nun beginnt der Tunnelaufbau zwischen Network Access Server und Home Gateway,
falls noch keiner besteht.
Die Verbindung wird mit Hilfe der L2F-Management-Pakete aufgebaut.
Der Verbindungsaufbau beginnt mit einer L2F-Request Configuration Nachricht
(L2F_CONF). Hier wird der Name des NAS ( NAS_name) sowie eine Zufallszahl
(Challenge) zur Authentifizierung des NAS beim Gateway übergeben. Die Client-ID
(CLID) ist auf 0 gesetzt, da zurzeit noch keine Verbindung existiert. Im Proto Feld steht
L2F, was für gekapselte L2F Management Pakete in der Payload der L2F Pakete steht. Im
Feld Assigned_CLID steht die erwartete Client-ID , die die Verbindung später hat.
IP-Netz
NAS
Home Gateway
L2F_CONF
Proto=L2F ,Seq=0 ,MID=0,CLID=55,Key=0
Name: Gateway_name
Challenge: Rnd2
Assigned_CLID: 66
Als nächstes antwortet der Home Gateway dem NAS. Die Nachricht enthält jetzt als
Client-ID den vom NAS vorgegebenen Wert, den Namen des Home-Gateways, eine
zweite Zufallszahl zur Authentifizierung des Gateways beim NAS , sowie seine erwartete
Client-ID.
Im 3. Schritt wird die L2F öffnet nun der NAS den Tunnel mit einer Accept Configuration
Nachricht (L2F_OPEN). Die Sequence Nummer wird jeweils um eins erhöht und die
Client-ID wird mit dem von der Gegenseite gegebenen Wert besetzt. Die Antwort besteht
aus einem MD5 Hashwert der vorher vom Gateway gesendeten Zufallszahl und Passwort
des Gateway, welches auch intern im NAS gespeichert ist.
Dieser Wert wird auch im Feld Key übermittelt.
Nun antwortet der Home Gateway ebenfalls mit einer Accept Configuration Nachricht mit
seiner jeweiligen Client Id und seinem Key aus der zuvor übermittelten Zufallszahl und
seinem Passwort .
Wenn sich nun beide Seiten mittels der übermittelten Schlüssel bei ihrem jeweiligem
Gegenüber authentifiziert haben, besteht nun ein Tunnel zwischen Gateway und NAS.
Für den Remote User besteht allerdings immer noch nur eine Verbindung zum NAS des
ISP.
Jetzt muss sich der Remote User noch bei seinem Home Gateway für einen direkten
Zugang authentifizieren.
Wenn sich der Remote User mittels CHAP bei seinem ISP authentifiziert hat, kennt der
ISP somit die Response des eigenen CHAP-Handshakes.
Über den Tunnel wird nun eine L2F_OPEN Nachricht mit den vom Client empfangenen
Daten sowie die Zufallszahl der Challenge an das Gateway gesendet.
Dieses überprüft nun die Legitimität des Users anhand der lokal gespeicherten Daten und
gibt den Tunnel frei oder lehnt die Verbindung ab.
Nun ist die Verbindung zwischen Client und Home Gateway offen für PPP- oder SLIPPakete.
Wird der Tunnel nicht mehr benötigt, kann er mittels L2F_CLOSE geschlossen werden.
5. Fazit und Bewertung
Im folgenden Teil sollen nun die bisher beschriebenen Kernpunkte des Layer Two
Forwarding Protokolls noch einmal kurz zusammengefasst und bewertet werden.
Schon der Status „historic“ der RFC macht deutlich das es sich beim Layer Two Forwarding
Protokoll um eine Technik handelt die heute nicht mehr zum Einsatz kommt. Jedoch sind
zentrale Grundsätze und dort entwickelte Techniken noch in heutigen Protokollen im Einsatz
so das das Wissen um das Layer Two Forwarding Protokoll hilft die momentan eingesetzten
Techniken zu verstehen.
a. Vergleich gängiger VPN Protokolle
Die folgende Tabelle stellt noch einmal die gängigsten VPN Protokolle in zentralen
Eigenschaften gegenüber und erleichtert somit die technische Einordnung des L2F.
Eigenschaft / Protokoll
Authentifizierung des Nutzers
Unterstützung von NAT
Multiprotokollfähigkeit
Nutzdatenverschlüsselung
Public Key Infrastruktur
Authentizitätsprüfung von Datenpaketen
L2F
Ja
Ja
Ja
Nein
Nein
Nein
PPTP
Ja
Ja
Ja
Ja *
Nein
Nein
* unsicher, RC4-Verfahren mit 40-128 Bit Schlüsseln
L2TP
Ja
Ja
Ja
Nein
Nein
Nein
IPSec
Nein
Ja
Nein
Ja
Ja
Ja
Dazu sei gesagt das L2F das älteste der dargestellten Protokolle ist. Das dort mit L2TP
angegebene Layer Two Tunneling Protokoll stammt aus der Fusion von L2F und PPTP
und vereint deren Vorteile in sich. Es ist noch bis heute Bestandteil aller gängigen
Betriebssysteme. So ist z.B. Microsoft Windows 2000 ab Werk zwar mit L2TP bzw.
PPTP Clients ausgestattet jedoch nicht mit dem deutlich sichereren IPSec...
b. Stärken und Schwächen
Als Stärken für das L2F lassen sich die folgenden Aspekte feststellen:
-
Unveränderte Übertragung, Transport von Datenprotokollen höherer Layer
Mehrere parallele Verbindungen innerhalb eines Tunnels sind möglich
Hohe Performance da wenig Overhead
Hohe Transparenz aus Sicht der Anwendungen
Jedoch geben sich aus der heutigen Sicht auch die folgenden Schwächen zu erkennen.
-
Fehlende Unterstützung durch aktuelle Betriebssysteme
Keine Nutzdatenverschlüsselung möglich
Schwache , unsichere Authentifizierung der User
Keine Authentifizitätsprüfung der übertragenen Daten
Worterklärungen und Erläuterungen:
HDCL = High Level Data Link Control
ISP = Internet Service Provider
L2F = Layer 2 Forwarding
L2FP = Layer 2 Forwarding Protokoll
MAC = Medium Access Control
NAS = Network Access Server
PPP = Point to Point Protokoll
OSI = Open Systems Interconnection
Quellenangaben:
www.ietf.org/rfc
www.wikipedia.de
J.F.Kurose,K.W.Ross Computernetze, PearsonStudium 2002
Herunterladen