Grundlagen der Rechnernetze
Internetworking
Übersicht
• Grundlegende Konzepte
• Internet‐Routing
• Limitierter Adressbereich
Grundlegende Konzepte
H6 R3
R1 H1
Erinnerung: Internet und IP
N1
N3 N2
R1
H1 H2
H3
R3
R2 H4
H5 H6
H9
H8
H7 TCP
IP ETH
IP
ETH FDDI
IP
FDDI ETH
TCP IP ETH
IP‐Service‐Model
Das IP‐Service‐Model muss so definiert sein, dass es auch von allen potentiell darunter liegenden Protokollen umgesetzt werden kann.
Beispielsweise wäre „jedes Paket wird mit höchstens 1ms
Verzögerung garantiert ausgeliefert“ ein nicht einhaltbares Service‐
Versprechen.
Das Service‐Model von IP ist einfach:
• Ein eindeutiges Addressierungsschema
• Ein „Best‐Effort“ Datagram‐Delivery‐Service
• Datagramme können verloren gehen (fehlerhafte
Datagramme werden beispielsweise von einem Router einfach verworfen)
• Folge von Datagrammen muss nicht in derselben Reihenfolge empfangen werden
• Datagramme können mehrfach ausgeliefert werden
Grundlegende Konzepte
Datagram‐Delivery‐Service
IP‐Datagram
Version HLen TOS Length
Ident Flags Offset
TTL Protocol Checksum
SourceAdr DestinationAdr
Options (variable) Pad (variable) Data
0 4 8 16 19 32
Fragmentierung und Reassembly
H1 R1
R2 R3 H2
ETH IP (1400) FDDI IP (1400) PPP IP (512) PPP IP (512) PPP IP (376)
ETH IP (512) ETH IP (512) ETH IP (376)
Beispiel:
• H1 sendet Daten der Größe 1400 Bytes an H2
• MTU von ETH = 1500 Bytes
• MTU von FDDI = 4500 Bytes
• MTU von PPP = 532 Bytes
(Die Path‐MTU in diesem Beispiel = 532 Bytes)
(Dargestellt ist die Payload, also Payload + 20‐Byte‐Header = MTU) Reassembly findet nur auf dem Empfänger‐Host H2 statt
Fragmentierung und Reassembly
Start des Headers
UnfragmentiertesIP‐Paket Fragmentiertes IP‐Paket
Bemerkung: durch Speichern eines Offsets anstatt einer ID ist weitere Fragmentierung eines schon fragmentierten Paketes
unmittelbar möglich.
Ident = x 0 Offset = 0 Rest des Headers
1400 Bytes Daten
Start des Headers
Ident = x 1 Offset = 0 Rest des Headers
512 Bytes Daten Start des Headers
Ident = x 1 Offset = 64 Rest des Headers
512 Bytes Daten Start des Headers
Ident = x 0 Offset = 128 Rest des Headers
376 Bytes Daten
• Original IP‐Paket und dessen Fragmente lassen sich durch eine eindeutige Ident‐
Nummer zueinander zuordnen.
• Offset*8 = Byte‐Position in den Originaldaten
Grundlegende Konzepte
Adressierung
IP‐Adresse:
Netzklassen:
Subnetting
Erinnerung: Adressierung und Forwarding
Class A 0 Netz Host
7 24
1 0 Netz Host
14 16
Class B
1 1 0 Netz Host
21 8
Class C
10101011 01000101 11010010 11110101
171.69.210.245
1 0 Netz Host
14 16
Zum Beispiel Class B Adresse
11111111 11111111 11111111 (255.255.255.0)
Subnetz Maske 00000000
Netznummer
Ergebnis Subnetz Host
Erinnerung: Adressierung und Forwarding
Supernetting (CIDR)
Internet‐Anbieter Advertise
128.112.128/21
128.112.128/24
128.112.135/24
…
Kunden‐Netze
Host Configuration (DHCP)
• IP‐Adressen haben einen Netz‐ und Host‐Anteil
• Im Gegensatz zu Ethernet‐Adressen kann die IP‐Adresse damit nicht fest mit der Netzhardware „verdrahtet“ sein. Warum?
• Es muss zumindest eine Möglichkeit bestehen, die IP‐Adressen manuell zu konfigurieren. Umständlich!
• Besser: dynamische Zuweisung von IP‐Adressen.
• Bei der Gelegenheit kann man dem DHCP‐Client auch gleich den Default‐Router mitteilen.
N S DHCP‐Server
DHCP Relay H
IP‐Broadcast DHCPDISCOVER
IP‐Unicast
DHCPDISCOVER
Beispiel:
ICMP‐Redirect
Error‐Reporting (ICMP)
ICPM (Internet Control Message Protocol) definiert eine Sammlung von Fehler‐ und Kontrollnachrichten.
Beispiel für Fehlernachrichten, die an den sendenden Host verschickt werden:
• Unerreichbarer Ziel‐Host
• Reassembly‐Prozess fehlerhaft
• TTL=0 erreicht
• IP‐Header‐Checksumme falsch Beispiel für Control‐Nachricht:
ICMP‐Redirect
H1
H2
R2 R1
Nachricht an H2 Default‐Router: R1
IP‐Tunneling und Anwendungen
• Security in Kombination mit Verschlüsselung (z.B. Virtual‐Private‐Networks (VPN))
• Router R1 und R2 haben besondere Features (z.B. Multicast‐fähige Router)
• Verbinden von Nicht‐IP‐Netzen über ein IP‐Netz (z.B. global verteilte Sensornetze)
• Auslieferung an bestimmter Stelle erzwingen, obwohl Zieladresse eine andere ist (z.B.
Mobile‐IP)
R2
Netz 1.x R1 Internet Netz 2.x
IP‐Header,
Destination = 2.x IP‐Payload
IP‐Header,
Destination = 2.x IP‐Payload
IP‐Header,
Destination = 18.5.0.1 IP‐Header,
Destination = 2.x IP‐Payload
18.5.0.1 Netz‐Nummer Next‐Hop
1 Interface 0
2 Virtual Interface 0
Default Interface 1
Internet‐Routing
Forwarding und Routing
H3 H2
H1
H5
H4 H6 H7
R1
R3 R2
H7
1 2
Forwarding‐Tabelle
Adresse Interface MAC‐Adr.
Host H1 3 Adr(H1) Host H2 3 Adr(H2) Host H3 3 Adr(H3) Netz N2 1 Adr(R2) Netz N3 2 Adr(R3) 3
Woher bekommt man die Forwarding‐Tabelle?
Netz N1
Netz N2 Netz N3
Routing
Wir betrachten zunächst Routing als Graph‐Problem.
Gegeben sei ein Graph mit gewichteten Kanten
(hier der Einfachheit halber ein ungerichteter Graph):
Finde die kürzesten Pfade zwischen den einzelnen Knoten.
B D
C
F
A E
12
1 3
3
1
1
4
4 7
Was wäre wohl „per draufgucken“ der kürzeste Pfad P von A nach F?
Was ist das Gesamtgewicht w(P) dieses Pfades?
Routing Algorithmen
Link‐State‐Routing Distanzvektor‐Routing
Von allen Nachbarinformation an alle (zentraler Routing‐Algorithmus) Globale Information an Nachbarn
(verteilter Routing‐Algorithmus)
R
R1 R2
Ziel Distanz
H1 5
H2 3
H3 7
H4 2
… …
R
Ziel Distanz
H1 7
H2 4
H3 4
H4 1
… …
Internet‐Routing
Distanzvektor‐Routing (aka. Bellman‐Ford)
Stetiger Austausch und Aktualisierung dieser Tabellen
(Routing‐Update)
Neue Tabelle von A
Tabelle von B Tabelle von C
B C
A
Grundidee
Initiale Distanzvektortabellen
A
C B
D E Ziel Next Dist
A A 1
B ‐‐ 0
C C 1
D D 1
E ??
Ziel Next Dist
A A 1
B B 1
C ‐‐ 0
D D 1
E E 1
Ziel Next Dist
A ‐‐ 0
B B 1
C C 1
D B 2
Initiale Tabelle von A Ziel Next Dist
A ‐‐ 0
B B 1
C C 1
D ??
Kantengewichte hier verein‐
facht alle auf 1 gesetzt.
Details zu Routing‐Updates
Generelle Regel für Knoten u:
1. Aktualisiere iteTabellenzeile (xi, yi, di), wenn für die von Knoten v empfangene Tabellenzeile (xi, zi, ci) gilt: di > ci + 1
2. Die aktualisierte Tabellenzeile ist dann (xi, v, ci + 1)
(Erweiterung auf gewichtete Kanten offensichtlich: ersetze „+1“ mit Kantengewicht für Kante uv)
u v
Ziel Next Dist
… … …
xi zi ci
… … …
Ziel Next Dist
… … …
xi vi di
… … …
xi v ci+1
Wann versendet ein Knoten ein Routing‐Update?
Periodic‐Update: Tabellen werden regelmäßig an Nachbarn geschickt
• Damit wissen die Nachbarknoten, dass es den Link und Knoten noch gibt.
• Werden über einen bestimmten Zeitraum keine Updates mehr empfangen, so wird der Link als ausgefallen interpretiert
Triggered‐Update: Wann immer ein Knoten seine Routing‐Tabelle geändert hat
• Nach lokal festgestelltem Link‐Ausfall
• Nach Empfang eines Routing‐Updates von einem Nachbarn
• Das kann wiederum eine Änderung in den Nachbarknoten und damit Routing‐Updates von den Nachbarn bewirken (usw.)
Forwarding anhand der Routing‐Tabellen
A
C B
D E
Ziel Next Dist
A ‐‐ 0
B B 1
C C 1
D B 2
E C 2
Ziel Next Dist
A A 1
B B 1
C ‐‐ 0
D D 1
E E 1
Randbemerkung
• Routing‐Tabelle: speichert alles was man für das Routing benötigt.
• Forwarding‐Tabelle: speichert alles was man für das Forwarding
benötigt
• Kann ein und dieselbe Tabelle sein;
muss es aber nicht.
Beispiel eines Link‐Ausfalls
B
D C
F A
E
G
Dst Next Hops
G F 2
Dst Next Hops
G G 1
Tabelleneinträge
bzgl. Knoten G: Dst Next Hops
G D 2
Stabilisiert sich das Netz immer in dieser Form?
Count‐to‐Infinity‐Problem
A B
C
A
B
C
D
Lösungsansatz 1: ignorieren. Am Ende wird sowieso bis hoch gezählt.
Lösungsansatz 2: Split‐Horizon.
Routing‐Updates nur zu Nachbarn, die nicht selber der nächste Hop sind.
Lösungsansatz 3: Split‐Horizon with Poison Reverse. Routing‐Updates zu allen Nachbarn. Allerdings Routing‐
Update zu denen, die selber der nächste Hop sind.
Funktioniert das immer?