Chapter 2: Data Link Layer – OSI Schicht 2 Ziel des Data Link Layers - Auffinden und Korregieren von Fehlern - Bereitstellen eines Broadcast channels - Adressierung aufm Link Layer - Verlässlichen Datenverkehr Stichpunkte - unstrukturiert nach Buch Es gibt link layer protocols (Ethernet, 802.11 WIFI, token ring, PPP) zum übertragen der frames. Frames bezeichnen die Einheiten von Daten, die auf dem Link Layer ausgetauscht werden. Ein Link layer protokoll kümmert sich um Fehlerfindung, retransmission, flow control, und random access (463). Framing: Bevor das Paket übertragen wird, bekommt es einen Rahmen. Wieder kommt ein neuer Header hinzu. Der Frame hängt davon ab, welches link-layer protocol verwendet wird Link access Ein medium access control (MAC) protocol beschreibt die Regeln für die Übertragung auf dem Link. Wenn sich mehrere Nodes einen Link teilen, dann muss MAC ganze Arbeit leisten. Reliable delivery Hier wird garantiert, dass jedes Paket fehlerfrei übermittelt wird. Analog zu TCP warden auch hier ACKs und retransmission eingesetzt, um dieses Ziel zu erreichen. Flow control Um einen Bufferoverflow zu vermeiden ist Flow control unbedingt notwendig. Die Frage ist nur, welcher Layer Flow control anbietet/übernimmt. Error detection Im Frame Header kann das Error detection Bit auf 1 gesetzt werden. Dann werden nur Pakete weitergeleitet, die fehlerfrei sind. Die auf Link Layer eingesetzten Mechanismen sind fest in der Hardware kodiert und meistens leistungsfähiger als die auf anderen Schichten. Verschiedene Methoden: Parity Checks, Checksums and CRC (cyclic redundancy checks) Parity Checks: Es gibt einen geraden und einen ungeraden Paritätscheck. Wenn der gerade angewendet wird, dann wird das angehängte Bit so gesetzt, dass die Anzahl der vorkommenden 1 gerade/even ist. Error correction Wenn ein Fehler gefunden wurde, sollten es auch Mechanismen geben, diese wieder zu korregieren. Half-duplex and full duplex Bei Half-duplex kann nur ein Node ein Paket senden. Bei Full duplex können zwei gleichzeitig senden. (Für einen Node gilt dann, dass er gleichzeitig Senden und Empfangen kann) Implementierung des Link Layers Gewöhnlich ist das ganze in einem Netzwerkadapter (network adapter) implementiert. Diesen Adapter bezeichnet man auch als NIC (Network interface card). Ein Controller übernimmt die implementierung der ganzen Services. D.h. die Funktinionalität des Link Layers ist in Hardware implementiert. Es gibt aber auch Software: Z.B. der Empfang von Paketen aus höhreren Layern wird über Software gelöst. Kombination aus Soft – und Hardware. Zusammenfassung der Folien Die folgenden Begriffe sollten klar sein: Node, Link und Frame. In einem Frame wird ein datagram transportiert. Das Daten-Link-Layer hat zur Aufgabe, ein Datagram von einem Node zum nächsten über einen Link zu transportieren. Auf den verschiedenen Hops können verschiedene Protokolle verwendet werden, die wiederum verschiedene Services anbieten. Folgende Services werden unterschieden: - Framing o Verpackt ein Datagramm in einem Frame und fügt Header hinzu o MAC Adresse wird verwendet, um das Ziel zu identifizieren - Link access: MAC Protokoll regelt die Übertragung auf dem Link - Verlässliche Übertragung zwischen zwei Knoten: Dazu braucht man ein stateful Protokoll. Wird sehr wenig eingesetzt - Flow Control: Um einen Bufferoverflow zu vermeiden - Error detection: Fehler wird erkannt und eine Retransmission angefordert - Error correction: Fehler wird nicht nur erkannt, sondern auch korregiert. - Half-duplex, Flull duplex: Mit „half-duplex“ können zwar beide Seiten eines Links übertragen, aber nicht zur selben Zeit. Die Frage der Implementierung: Dabei stellt die Implementation eine Kombination aus Hard und Software dar. NIC ist der Hardware Netzwerkadapter und die Weiterleitung in höhere Protokollschichten wird mittels Software realisiert. Es gibt zwei verschiedene Links: Point – to – Point Links und Broadcast Links (broadcast deshalb, weil jeder Host der mit dem Link verbunden ist, eine Kopie des Pakets erhält). Bei den gemeinsam benutzten Broadcast Links muss auf Kollisionen geachtet werden. Dazu braucht man das Multiple Access Control Protocol. Dieses Protokoll findet heraus, wie die Nodes sich den Link teilen herausfinden, wann ein Node übertragen kann. Dazu muss es aber selber Nachrichten über den gleichen Link schicken. Das „ideale MAC Protokoll sieht wie folgt aus: - Wenn nur einer sendet, bekommt er die volle Übertragungsgeschwindigkeit R - Wenn M nodes senden dann bekommt jeder durchschnittlich R/M - Das Protokoll ist nicht an einen zentralen Router gebunden - Das Protokoll ist einfach Es werden 3 Gruppen von MAC Protokolls unterschieden: channel partitioning protocols, random access protocols und taking-turns protocols. Channel partitioning protocols Time-division multiplexing (TDM) und frequency division multiplexing (FDM) sind zwei Techniken, die zum aufteilen von broadcast Kanälen verwendet warden kann. Bei TDM bekommt jeder Node ein Zeitintervall zugewiesen, indem er dann seine Pakete senden kann. Bei FDM eine Frequenz unter der er ständig mit R/N Geschwindigkeit senden kann. Als dritter Vertreter dieser Gruppe kommt CDMA (Code division multiple access) hinzu. Jeder Node bekommt hier einen anderen Code. Wenn die Codes richtig ausgewählt wurden und wenn der Empfänger den Code kennt, dann können alle senden und die Empfänger können ihre Pakete entschlüsseln. Bei Random access protocols sind Kollisionen erlaubt. Wird sie durch einen Sender festgestellt, wählt dieser eine zufällige Wartezeit aus, bis er erneut sein Paket überträgt. Alle an der Kollision machen das gleiche aber mit einer anderen Wartezeit. Es wird gehofft, dass irgendwann alle ohne Kollision übertragen haben. Vertreter dieser Gattung ist zum Beispiel ALOHA oder CSMA (Wenn andere sprechen störe nicht, Stoppe, wenn andere zur gleichen Zeit anfangen Collision detection) Taking – turn protocols versuchen nun die beiden Eigenschaften 1) wenn nur einer sendet, kann der mit R senden (wird auch von random access protocols erfüllt) 2) wenn M nodes senden dann alle mit R/M Umzusetzen. Das klappt aber nur bedingt. Es wird eine RoundRobin Table (vgl Datenbanken) verwendet und in diesem Kreis geben die beteiligten Nodes einen Token weiter, der zum Senden berechtigt. Hat jemand Daten zum Senden, kann er dies bis zu einem vereinbarten Maximum tun, dann gibt er die Berechtigung an den nächsten weiter. Nachteil: Auch wenn ein Node nicht senden will, verliert man durch die Weitergabe des Tokens Zeit. Weiter gehts mit Link Layer Adressing: Warum braucht man eigentlich zwei verschiedene Adressen? Das ist wie im reellen Leben. Jeder hat eine Sozialversicherungsnummer, die nie wechselt (=MAC Adress) und jeder hat eine Anschrift die immer wechseln kann, je nach dem wo man sich befindet (=IP Adress) Warum sind sie sogar unvermeidbar? Jeder Adapter eines Nodes hat eine LAN address, physical address oder MAC Address… (ist alles das gleiche) Um die Übersetzung von Netzwerk-Layer Adressen (IP) und Link-Layer Adressen (MAC) kümmert sich das ARP (Adress Resolution Protocol). Ein Node führt dazu eine ARP Table. Wenn ein Paket an eine IP gesendet werden soll, und die dazugehörige MAC unbekannt ist, sendet der Node eine Broadcast Message (FF:FF:FF:FF:FF:FF) ins Netzwerk. Der Node mit der dazugehörigen IP Adresse Antwortet direkt mit seiner MAC. Die Antwort wird in der ARP Table für ca. 20 min gespeichert, dann wieder vergessen (= soft state). Ethernet Ethernet ist das am weitesten verbreitete Protokoll. Früher wurde eine Bus Topologie verwendet, heute Star, mit Switch. Wichtig ist der Ethernet Frame. Hier vor allem das Preamble Feld. Das besteht aus 8 Bytes: 7 mal 10101010 und einmal 10101011. Preamble wird verwendet und die Taktfrequenz der Übertragung zu synchronisieren. Darüber hinaus werden noch der Type des transportierten Protokolls angegeben, sowie die Ziel und Absender Adresse, CRC Eigenschaften von Ethernet - Connectionless: Kein Handshake Protocol - Unreliable: No ACKs - Verwendet CSMA (carrier sense multiple access = Random Access Protocol) Link Layer Switches Hubs: Eingehende Pakete warden dupliziert und an alle Ausgänge weitergeleitet. Switch: (intelligente Hubs) Ein Switch ist tranparent (d.h. er wird von den Nodes nicht beachtet) und leitet Pakete nur an ausgewählte Empfänger weiter. Filtering überprüft, ob das Paket weitergeleitet werden soll, oder ob es einfach gelöscht werden soll. Forwarding sucht das richtige Interface zum Weiterleiten. Um diese beiden Funktionen zu realisieren werden switch tables verwendet. Diese dürfen aber nicht mit den Tabellen von Routern zum Forwarding verwechselt werden. Wenn ein Paket mit einer Ziel-MAC Adresse ankommt dann können folgende Fälle auftreten Die Ziel Adresse ist nicht in der Switch Tabelle enthalten Boradcast Paket Die Ziel Adresse ist enthalten. Das dazugehörige Interface wird fürs forwarding verwendet Die Ziel Adresse ist enthalten, aber das spezifizierte Interface ist das gleiche über das das Paket gekommen ist Forget about the paket. Wie kommt ein Switch zu seiner Tabelle? Die Tabelle baut sich in einem self learning prozess selbst auf. 1. Zuerst ist die Tabelle leer. 2. Wenn ein Paket kommt wird die MAC der Quelle und das Interface über das das Paket kam gespeichert (und die Zeit) 3. Wenn über längere Zeit nichts von der gespeicherten Adresse kommt, wird der Eintrag entfernt Durch die Switch Buffer sind gleichzeitige Übertragungen möglich, da jeder Node seine eigene Kollisionszone hat (Star Topologie) Der Unterschied zu Routern ist, dass Router network layer Geräte sind und switches sind link layer Geräte! Für große Netzwerke sind Router besser für kleine Switches.