Sie sind auf Seite 1von 56

Kolloquiumsvortrag

IPv6

Jan Wiebelitz / Christian Grimm

Fachgebiet Distributed Virtual Reality (DVR)

Regionales Rechenzentrum für Niedersachsen


Darum gehts

Protokoll der Vermittlungssschicht

Anwendung Application Application

TCP / UDP TCP / UDP


Betriebssystem
IP IP IP

Data Link Data Link Data Link Data Link


Hardware
Physical Physical Physical Physical
Host Router Switch Host

„ zwischen Transport- (TCP, UDP) und Verbindungsschicht (Ethernet, …)


„ beinhaltet u. a. Adressen von Netzwerkknoten
„ im Betriebssystem implementiert
„ z. Zt. IP Version 4
„ Übergang zu IP Version 6

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 2
Übersicht – IP Version 6

Warum braucht die Welt noch ein neues Protokoll?


„ Gute Gründe ein altes Protokoll abzulösen

Was ist IPv6?


„ Adressen, Header und vieles mehr

Wie geht‘s weiter?


„ Die Entwicklung ist nicht abgeschlossen

Wie funktioniert‘s im Detail?


„ Applikationen für IPv4 und IPv6

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 3
Übersicht – IP Version 6

Warum braucht die Welt noch ein neues Protokoll?


„ Gute Gründe ein altes Protokoll abzulösen

Was ist IPv6?


„ Adressen, Header und vieles mehr

Wie geht‘s weiter?


„ Die Entwicklung ist nicht abgeschlossen

Wie funktioniert‘s im Detail?


„ Applikationen für IPv4 und IPv6

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 4
Zuwachs an Hosts im Internet

240,000,000

CIDR, RFC1519, September 1993

NAT, RFC 1631 , Mai 1994

Quelle: http://www.isc.org/ds

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 5
Zuwachs an Nutzern im Internet

Nutzer (in Millionen)


1.600

1.400

1.200

1.000
2001
800
2004
600 2007

400

200

0
USA Asia-Pacific W . Europe W orldwide

Quelle: Computer Industrie Almanac Inc., Mai 2002

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 6
Vergrößerung der Routingtabellen

CIDR, RFC1519, September 1993

NAT, RFC 1631 , Mai 1994

Thu Dec 4 03:31:38 2003 (Australian Eastern Time) http://www.telstra.net/ops/bgptable.html

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 7
NAT

NAT bricht das Ende-zu-Ende-Paradigma von IP


„ behindert die Entwicklung neuer Applikationen

NAT verhindert die Erreichbarkeit von Hosts


„ zukünftig wird es mehr Geräte geben, die zugleich Client und Server
sind (z.B. Mobiltelefone)
„ zukünftige Anwendungen werden stärker auf Peer-to-Peer-Technologie
aufsetzen

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 8
Übersicht – IP Version 6

Warum braucht die Welt noch ein neues Protokoll?


„ Gute Gründe ein altes Protokoll abzulösen

Was ist IPv6?


„ Adressen, Header und vieles mehr

Wie geht‘s weiter?


„ Die Entwicklung ist nicht abgeschlossen

Wie funktioniert‘s im Detail?


„ Applikationen für IPv4 und IPv6

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 9
IPv6 Timeline

1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003

IETF IPnG 6TAP Cisco IPv6


Uni Hannover
Started Support
Connected to
12.2(t)
the 6WIN
1st Specification
IPv6 Forum
Founded 6WIN
6bone
DFN

RIRs Assigned
DFN-Project IPv6 Spaces
JOIN

Provider based
IPv6 Spaces

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 10
Zuwachs an Hosts im Internet

IPv6, RFC 1883, Dezember 1995


CIDR, RFC1519, September 1993

NAT, RFC 1631, Mai 1994

Quelle: http://www.isc.org/ds

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 11
Adressen

Vergleich von IPv4 und IPv6

„ IPv4: 32 Bit Adressen


† 4.294.967.296 mögliche Adressen
† d.h. 0,0000084 IPv4-Adressen / m2 Erdoberfläche

„ IPv6: 128 Bit Adressen


† 340.282.366.920.938.463.463.374.607.431.768.211.456 mögliche Adressen
† mit IPv6 wird der Adressraum von IPv4 96x verdoppelt
† d.h. 665.570.793.348.866.943.898.599 IPv6-Adressen / m2 Erdoberfläche
† Beispiel
– auf das erste Feld eines Schachbretts wird ein Reiskorn gelegt usw.
– die Summe ergibt 264-1 Reiskörner, was 461 Mrd. t Reis entspricht (0,025 g/Korn)
(Anmerkung: die Reisernte des Jahres 2000 betrug weltweit ca. 431 Mio. t)*
– jedem dieser Reiskörner steht in IPv6 ein Adressraum von 264 Adressen zu

* (lt. Wikipedia.de)

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 12
Adressen

Reichweiten von Adressen


„ RFC3515 „IP Version 6 Addressing Architecture“ vom April 2003
† Link-Local scope FE80::/10
† Site-Local scope FEC0::/10
† Global scope

Link-Local Site-Local

Link-Local

Link-Local Site-Local Global-Scope

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 13
Adressen

Reichweiten von Adressen


„ Draft „Deprecating Site Local Address“
† Link-Local scope FE80::/10
† Global scope

Link-Local Site-Local

Link-Local

Link-Local Global-Scope

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 14
Adressen

Adressierungsarten

„ Unicast Adresse
† Identifier für ein einzelnes Interface (1:1)

„ Anycast Adresse
† Identifier für eine Gruppe von Interfaces
† Paket wird an ein Interface gesandt
† nur für Router
† Host-Routen notwendig

„ Multicast Adresse
† Identifier für eine Gruppe von Interfaces
† Paket wird an alle Interfaces übertragen. (1:n)

„ kein Broadcast
† Broadcast wird durch von Multicast ersetzt.

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 15
Adressen

Zusammenfassung der verschiedenen IPV6-Adressen

IPv6 Adressen

Multicast Unicast Anycast

Unspecified
Assigned Loopback Link-Local

Solicited Node Link-Local Aggregatable Global

Aggregatable Global Site-Local

Site-Local

IPv4 Compatible

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 16
Adressen

Darstellung von IPv6-Adressen

„ bevorzugte Darstellung
† acht 16-bit-Teile hexadezimal dargestellt
† durch Doppelpunkt voneinander getrennt
† führende Nullen in einem Feld können weggelassen werden, anhängende
nicht
† Beispiel:
1234:5678:9ABC:DEF0:1234:5678:9ABC:DEF0
1080:0:0:0:8:800:200C:417A

„ vereinfachte Darstellung
† 16-bit-Gruppen von Nullen können einmal zusammengefasst werden
† führende Nullen einer 16-bit-Gruppe können weggelassen werden,
anhängende nicht
† Beispiel:
1080::8:800:200C:417A

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 17
Adressen

Darstellung von IPv6 Adressen

„ Gemischte Darstellung
† in gemischter IPv4/IPv6-Umgebung
† IPv4-compatible IPv6 address fürTunnel durch IPv4-Netze
† IPv4-mapped IPv6 address präsentiert IPv4-Adressen als IPv6-Adressen
† Beispiel:
0000:0000:0000:0000:0000:0000:130.75.3.21 (IPv4 compatible IPv6 address)
0000:0000:0000:0000:0000:FFFF:130.75.3.21 (IPv4 mapped IPv6 address)

„ Nibble-Format
† für Rückwärtsauflösung im DNS
† jeweils 4 Bit werden durch eine Punkt (.) voneinander getrennt
† hexadezimale Schreibweise
† Adresse wird rückwärts geschrieben, Domäne wir angehängt
† Beispiel:
7.F.3.3.0.8.E.F.F.F.A.D.0.5.2.0.1.0.0.0.6.0.6.0.8.3.6.0.1.0.0.2.ip6.int

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 18
Stateless Autoconfiguration

Schritte zur eigenen Adresse (link-local scope)

„ Host generiert provisorische link-local address fe02::<Interface ID>

„ Host sendet neighbor discovery message (duplicate address detection)


† Source: unspecified address (::)
† Destination: solicitation-node address (ff02:0:0:0:0:1:FFxx:xxxx)
† Frage nach der provisorischen link-local adress

„ Antwortet ein Knoten mit einer neighbor advertisement message, so ist


diese Adresse schon vergeben und die Autokonfiguration stoppt.
Manuelle Konfiguration ist notwendig

„ Erhält der Host keine Antwort, so wird die provisorische link-local


address dem Interface zugewiesen

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 19
Stateless Autoconfiguration

Interface ID nach IEEE-Guidelines im sog. modifizierten EUI-64 Format

48 Bit MAC-Adresse
cccc ccug cccc cccc cccc cccc xxxx xxxx xxxx xxxx xxxx xxxx

universal/local Bit wird


Von 0 nach 1 invertiert
FF FE
cccc ccug cccc cccc cccc cccc 1111 1111 1111 1110 xxxx xxxx xxxx xxxx xxxx xxxx
64 Bit Interface ID

„ Gilt für alle Unicast Adressen


„ Interface ID einer Netzwerkkarte basiert auf deren MAC-Adresse
„ zwischen company ID (c) und extension ID (x) wird FF FE eingefügt
„ das universal/local Bit im Company-Anteil wird auf 1 gesetzt
„ Ausnahme: alle Adressen die mit 0002 beginnen

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 20
Stateless Autoconfiguration

Schritte zur eigenen Adresse (link-local scope)

„ Duplicate Address Detection


„ Link-Local Adress FE80::<Interface ID>

Zum
Internet

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 21
Stateless Autoconfiguration

Schritte zur eigenen Adresse (global unicast scope)

„ Host sendet router solicitation message an "all-routers" Multicast Gruppe


(FF02:0:0:0:0:0:0:0:2)

„ Router antwortet mit router advertisement message


† managed address flag
† other stateful configuration
† Prefix
† Prefix lifetime

„ Host stellt sich aus Präfix und der Interface ID die IPv6-Adresse zusammen

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 22
Stateless Autoconfiguration

Schritte zur eigenen Adresse (global unicast scope)

„ Router Solicitation

Zum
Internet

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 23
Stateless Autoconfiguration

Schritte zur eigenen Adresse (global unicast scope)

„ Router Advertisement
„ Global Unicast Adresse <präfix>:<interface-id>

Zum
Internet

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 24
Adressen

Global Unicast Adressen

128 Bit

n Bit 64 - n Bit 64 Bit

global routing prefix subnet ID interface ID


network prefix

„ Global Routing Prefix


† identifiziert eine Site
† Beispiel: 2001:0638::/32 ist dem DFN zugewiesen
„ Subnet ID
† identifiziert ein Subnetz innerhalb einer Site
† Beispiel: 2001:0638:0606::/48 ist der Uni Hannover vom DFN
zugewiesen
„ Interface ID
† im modifizierten EUI-64 Format
Regionales Rechenzentrum für Niedersachsen
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 25
Adressen

Multicast Adressen

128 Bit

8 Bit 4 Bit 4 Bit 112 Bit

prefix flags scope group ID

„ Prefix ist immer 1111 11112


„ Flags
† die drei höherwertigen Flags sind reserviert und müssen 0 sein,
† das vierte Flag gibt an, ob die Multicast Adresse permanent (also von der
IANA zugewiesen) ist (0) oder nichtpermanent (1) ist
„ Scope: Reichweite der Multicast-Adresse
† interface-local scope
† link-local und site-local scope
† admin-local scope
† organizational-local scope
† global scope

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 26
Adressen

Anycast Adressen

128 Bit

n Bit 128 - n Bit

subnet prefix interface ID


000..000

„ haben keinen syntaktische Unterschied zu Unicast-Adressen


„ sind mehr als einem Interface zugeordnet
„ dürfen nicht Source-Adressen sein
„ dürfen nur Routern zugewiesen werden, Hosts nicht
„ werden zum nächstgelegenen Interface mit der Anycast-Adresse geroutet
† Auswahl des nächstgelegenen Interface anhand Distanzen aus Routing
Protokollen
† durch Host-Route Einträge auf den Routern

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 27
Header

Vergleich von IPv4- und IPv6-Header

IPv4-Header IPv6-Header
Hdr Type of
Ver. Len Total Length Ver. Traffic Flow Label
Service Class
Identification Flg Fragment Payload Length Next Hop
Offset Header Limit
min. 20 Byte

Time to Protocol Header


Live Checksum

genau 40 Byte
Source Address
Source Address
Destination Address

Options Padding

Feld entfällt in IPv6


Feld in IPv4 und IPv6 enthalten Destination Address
Name und Position in IPv6 verändert
neues Feld in IPv6

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 28
Header

Extension Header
„ IPv4-Option-Feld fällt weg Ver. Traffic Class Flow Label
Payload Length Next Header Hop Limit

„ Extension Header

genau 40 Byte
Source Address
† Hop-by-Hop Header
† Destination Option Header
† Routing Header
† Fragment Header Destination Address

† Authentication Header
† Encapsulating Security Next Header

var.
Payload Header Extension Header #1
Next Header

var.
Extension Header #2
„ Reihenfolge wichtig
Payload

var.
(TCP, UDP Paket)

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 29
DNS (proposed standard) I

Neuer Address Record: AAAA-Record


„ Beispiel
$ORIGIN rvs.uni-hannover.de
dns1 IN AAAA 2001:638:606:1:202:e3ff:fe1d:b750

Neue Domäne: ip6.int


„ IPv6 Adressen werden im "Nibble"-Format dargestellt
„ Beispiel
0.5.7.b.d.1.e.f.f.f.3.e.2.0.2.0.1.0.0.0.6.0.6.0.8.3.6.0.1.0.0.2.ip6.int
IN PTR dns1.rvs.uni-hannover.de

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 30
DNS (proposed standard) II

Neue Konzepte kommen zum Einsatz


„ Adresse wird in mehreren Teilen aufgelöst

DNAME-Resource-Record
„ Aufbau von Chains innerhalb des DNS-Systems
„ ähnlich dem CNAME-Resource-Record
„ für IPv4 und IPv6
„ Beispiel
$ORIGIN new-style.in-addr.arpa
189.190 DNAME in-addr.example.net.
$ORIGIN in-addr.example.net
188 DNAME in-addr.customer.example.
$ORIGIN in-addr.customer.example.
1 PTR www.customer.example.
2 PTR mail.customer.example.

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 31
DNS (experimental) I

A6-Resource-Records
„ konkurrierend zu den AAAA-Records
„ haben jedoch z.Zt. den Status „experimental“
„ für die Vorwärtsauflösung
„ nur einen Teil der IPv6-Adresse auflösen
„ Verweis auf einen symbolischen Namen für den Rest
„ Beispiel 1
$ORIGIN rvs.uni-hannover.de
dns1 IN A6 0 2001:638:606:1:202:e3ff:fe1d:b750

„ Beispiel 2
$ORIGIN uni-hannover.de.
IN A6 0 2001:638:606::
$ORIGIN rvs.uni-hannover.de.
IN A6 48 0:0:0:1 rvs.uni-hannover.de.
dns1 IN A6 64 ::202:e3ff:fe1d:b750 rvs.uni-hannover.de.
dns2 IN A6 64 ::a00:20ff:fe21:5b92 rvs.uni-hannover.de.

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 32
DNS (experimental) II

Neue Domäne ip6.arpa


„ konkurrierend zur Domäne ip6.int
„ die den Status „experimental“ hat

Neues Darstellungsformat für die Rückwärtsauflösung


„ bitstring label für die neue Domäne ip6.arpa
„ teilweise Auflösung von IP-Adressen ist möglich
„ Beispiel 1
\[x20010638060600010202e3fffe1db750/128].ip6.arpa IN PTR dns1.rvs.uni-hannover.de

„ Beispiel 2 mit DNAME


\[x200106380606/48].ip6.arpa. IN PTR uni-hannover.de
\[x0001/16].uni-hannover.de. IN DNAME rvs.uni-hannover.de
\[x0202e3fffe1db750/64].rvs.uni-hannover.de. IN DNAME dns1.rvs.uni-hannover.de

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 33
Renumbering

Renumbering
„ hilfreich z.B. beim Wechsel des ISP‘s
„ „strict aggregation“: ein Präfix nicht weitergegeben darf

IPv6 Präfix ändern


„ stateless autoconfiguration der Knoten ist notwendig
„ Zeitparameter im „router advertisement“ werden genutzt
† Lebenszeit des alten Präfixes wird reduziert
† Neuer Präfix wird verkündet
„ während der Übergangszeit haben die Knoten zwei Unicast Adressen

DNS Einträge ändern


„ durch DNAME-Resource-Records kann der Präfix ganzer Netze schnell
und einfach geändert werden

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 34
Routing

Wachstum der Routingtabellen kontrollierbar


„ durch Clusterbildung
† „strict aggregation“
† „renumbering“

IPv6 Routing
„ Modifikation von Unicast-Routing(OSPF, RIP, BGP)
„ Modifikation Multicast-Routing Protokollen (PIM, DVMRP, MOSPF)
„ „longest prefix match“ wie bei IPv4 CIDR
„ Routing-Header um Pakete mit Hilfe von Anycast-Adressen durch
bestimmte Regionen zu leiten
† Auswahl von Internet Service Providern
† Policy-Aspekte
† Leistungsaspekte

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 35
6bone - Backbone

http://www.cs-ipv6.lancs.ac.uk/ftp-archive/6Bone/Maps/backbone.gif

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 36
6bone – Site connectivity

http://www.cs-ipv6.lancs.ac.uk/ftp-archive/6Bone/Maps/all6bone.gif

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 37
Anschluss an den 6bone
Übersichtsbild

http://www.join.uni-muenster.de/6bone/uebersichtskarte.php

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 38
6WIN des DFN

http://www.6win.de/

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 39
Anschluss des RRZN an den 6bone

e
6bon
DNS DNS
IPv6
Tunnel- Tunnel-
IPv6 endpunkt endpunkt
Uni Paderborn JOIN - Uni Münster
IPv4
DNS Tunnel- Tunnel-
endpunkt endpunkt
IPv6

IPv6 Tunnel-
DNS DNS
endpunkt
DFN Hamburg
Uni Hannover Tunnel-
endpunkt
TU Clausthal

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 40
Übersicht – IP Version 6

Warum braucht die Welt noch ein neues Protokoll?


„ Gute Gründe ein altes Protokoll abzulösen

Was ist IPv6?


„ Adressen, Header und vieles mehr

Wie geht‘s weiter?


„ Die Entwicklung ist nicht abgeschlossen

Wie funktioniert‘s im Detail?


„ Applikationen für IPv4 und IPv6

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 41
Was geht‘s weiter?

Adressierung
„ Site-local scope fällt wohl demnächst weg

DNS
„ Dynamic DNS mit stateless autoconfiguration
„ Dynamic DNS mit DHCPv6

DHCPv6
„ Time Configuration Options
„ NIS Configuration Options
„ Prefix Options

IPv6 Mobility
„ Insgesamt erst Draft-Status

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 42
Übersicht – IP Version 6

Warum braucht die Welt noch ein neues Protokoll?


„ Gute Gründe ein altes Protokoll abzulösen

Was ist IPv6?


„ Adressen, Header und vieles mehr

Wie geht‘s weiter?


„ Die Entwicklung ist nicht abgeschlossen

Wie funktioniert‘s im Detail?


„ Applikationen für IPv4 und IPv6

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 43
Client/Server-Applikationen in IPv4 und IPv6

Verbindungsmatrix für Hosts mit TCP/IP-Stack für IPv4 und IPv6


„ Frage: welche Kombinationen von Host unter IPv4 und IPv6 können
miteinander kommunizieren?
„ Ziel: alle!

Server

IPv4 IPv6

IPv4 ? ?
Client
IPv6 ? ?

„klassische“ Client/Server-Applikationen sind für IPv4 programmiert


„ die Erfahrung zeigt: Hosts können über IPv4 miteinander kommunizieren
„ der Kombination „ IPv4-Client “ auf „ IPv4-Server “ ist also erledigt

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 44
Anpassung einer IPv4-Applikation an IPv6

Applikationen nutzen im Allgemeinen die Socket-Schnittstelle


„ Sockets sind Schnittstelle (API) zum Transport Layer (TCP / UDP)
„ IP befindet sich erst im Network Layer, d. h. unterhalb des Transport Layer
„ Folgerung: die Version von IP bleibt der Applikation – beinah – verborgen

Application Application
Sockets Sockets
TCP / UDP TCP / UDP

IP IP IP IP

Data Link Data Link Data Link Data Link


Physical Physical Physical Physical

Anpassung bestehender IPv4-Applikationen an IPv6


„ im Wesentlichen muss lediglich die Adressierung angepasst werden
„ d. h. Anpassung von Datenstrukturen und Funktionen für Adressierung
„ der Aufwand ist gering, s. Beispiele

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 45
Client/Server-Applikation – TCP über IPv4
#include <...> #include <...>

#define BUFFERSIZE
#define PORT
20
7923
Client #define BUFFERSIZE
#define PORT
20
7923
Server
int main ( int argc, char *argv[] ) { int main ( void ) {
int sockfd; int sockfd, newsockfd;
int sendlen; int clielen, recvlen;
char sendbuf[BUFFERSIZE]; char recvbuf[BUFFERSIZE];
struct sockaddr_in saddr; struct sockaddr_in saddr, caddr;

if ( ( sockfd = socket ( AF_INET, SOCK_STREAM, 0 ) ) < 0 ) { if ( ( sockfd = socket ( AF_INET, SOCK_STREAM, 0 ) ) < 0 ) {
perror ( "socket" ); return -1; perror ( "socket" ); return -1;
} }

bzero ( ( char * ) &saddr, sizeof ( saddr ) ); bzero ( ( char * ) &saddr, sizeof ( saddr ) );
saddr.sin_family = AF_INET; saddr.sin_family = AF_INET;
saddr.sin_port = htons ( PORT ); saddr.sin_port = htons ( PORT );
if ( inet_pton ( AF_INET, argv[1], &saddr.sin_addr ) <= 0 ) { saddr.sin_addr.s_addr = htonl ( INADDR_ANY );
perror ( "inet_pton" ); return -1;
}

strcpy ( sendbuf, "Hi there !!" ); if ( bind ( sockfd, (struct sockaddr *) &saddr, sizeof ( saddr ) ) < 0 ) {
sendlen = strlen ( sendbuf ); perror ( "bind" ); return -1;
}

listen ( sockfd, 5 );

clielen = sizeof ( caddr );


if ( connect ( sockfd, (struct sockaddr *) &saddr, sizeof (saddr) ) < 0 ) { newsockfd = accept ( sockfd, (struct sockaddr *) &caddr, &clielen );
perror ( "connect" ); return -1; if ( newsockfd < 0 ) {
} perror ( "accept" ); return -1;
}

if ( send ( sockfd, sendbuf, strlen ( sendbuf ), 0 ) < 0 ) { recvlen = recv ( newsockfd, recvbuf, BUFFERSIZE, 0 );
perror ( "send" ); return -1; if ( recvlen < 0 ) {
} perror ( "recv" ); return -1;
}
recvbuf[recvlen] = 0;
printf ( "Empfangen: %s\n", recvbuf );

close ( sockfd ); close ( sockfd );


close ( newsockfd );

return 0; return 0;
} }

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 46
Client/Server-Applikation – TCP über IPv6
#include <...> #include <...>

#define BUFFERSIZE
#define PORT
20
7923
Client #define BUFFERSIZE
#define PORT
20
7923
Server
int main ( int argc, char *argv[] ) { int main ( void ) {
int sockfd; int sockfd, newsockfd;
int sendlen; int clielen, recvlen;
char sendbuf[BUFFERSIZE]; char recvbuf[BUFFERSIZE];
struct sockaddr_in6 saddr; struct sockaddr_in6 saddr, caddr;

if ( ( sockfd = socket ( AF_INET6, SOCK_STREAM, 0 ) ) < 0 ) { if ( ( sockfd = socket ( AF_INET6, SOCK_STREAM, 0 ) ) < 0 ) {
perror ( "socket" ); return -1; perror ( "socket" ); return -1;
}
}
Initialisierung
bzero ( ( char * ) &saddr, sizeof ( saddr ) ); anpassen bzero ( ( char * ) &saddr, sizeof ( saddr ) );
saddr.sin6_family = AF_INET6; saddr.sin6_family = AF_INET6;
saddr.sin6_port = htons ( PORT ); saddr.sin6_port = htons ( PORT );
if ( inet_pton ( AF_INET6, argv[1], &saddr.sin6_addr ) <= 0 ) { saddr.sin6_addr.s_addr = in6addr_any;
perror ( "inet_pton" ); return -1;
}

strcpy ( sendbuf, "Hi there !!" ); if ( bind ( sockfd, (struct sockaddr *) &saddr, sizeof ( saddr ) ) < 0 ) {
sendlen = strlen ( sendbuf ); perror ( "bind" ); return -1;
Programmablauf }

nicht anpassen listen ( sockfd, 5 );

clielen = sizeof ( caddr );


if ( connect ( sockfd, (struct sockaddr *) &saddr, sizeof (saddr) ) < 0 ) { newsockfd = accept ( sockfd, (struct sockaddr *) &caddr, &clielen );
perror ( "connect" ); return -1; if ( newsockfd < 0 ) {
} perror ( "accept" ); return -1;
}

if ( send ( sockfd, sendbuf, strlen ( sendbuf ), 0 ) < 0 ) { recvlen = recv ( newsockfd, recvbuf, BUFFERSIZE, 0 );
perror ( "send" ); return -1; if ( recvlen < 0 ) {
} perror ( "recv" ); return -1;
}
recvbuf[recvlen] = 0;
printf ( "Empfangen: %s\n", recvbuf );

close ( sockfd ); close ( sockfd );


close ( newsockfd );

return 0; return 0;
} }

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 47
Client/Server-Applikationen in IPv4 und IPv6

Verbindungsmatrix für Hosts mit TCP/IP-Stack für IPv4 und IPv6


„ Frage: welche Kombinationen von Host unter IPv4 und IPv6 können
miteinander kommunizieren?
„ Ziel: alle!

Server

IPv4 IPv6

IPv4 der „klassische“ Fall ?


Client
IPv6 ? einfache Anpassung

Frage: was ist mit heterogenen Applikationen?


„ IPv4-Client kommuniziert mit IPv6-Server
„ IPv6-Client kommuniziert mit IPv4-Server

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 48
Dual Stack – IPv4 und IPv6 in einem Host

Eigenschaften eines Dual Stack Host


„ im TCP/IP-Stack des Betriebssystems sind IPv4 und IPv6 implementiert
„ der Host verfügt über mindestens je eine IPv4- und IPv6-Adresse
„ im DNS sind A- und AAAA-Records für den Host eingetragen

Server auf Dual Stack Hosts können generell IPv4- und IPv6-Clients bedienen
„ Voraussetzung: Server-Applikation ist für IPv6 implementiert

Konventionen für Server-Applikation auf Dual Stack Host


„ auf IPv4-Socket gebundener Server kann nur IPv4-Pakete empfangen
„ auf IPv6-Socket gebundener Server kann nur IPv6-Pakete empfangen
† wenn der Socket auf eine „reguläre“ IPv6-Adresse gebunden ist
„ auf IPv6-Socket gebundener Server kann nur IPv4-Pakete empfangen
† wenn der Socket auf eine IPv4-mapped Adress gebunden ist
„ auf IPv6-Socket gebundener Server kann IPv4- und IPv6-Pakete empfangen
† wenn der Socket auf die Unspecified Address (0::0) gebunden ist

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 49
Anpassung der IP-Adressen im Dual Stack Server

Übergabe der IP-Adresse des Client an Server-Applikation

Server Server Server Server


Port Number 1234 1235 1236 1237

Socket Socket Socket Socket


TCP/IPv4 TCP/IPv6 UDP/IPv4 UDP/IPv6

TCP UDP
IPv6 IPv4
IPv4-Paket ist an IPv4- IPv4-
Applikation auf mapped mapped IPv6
IPv4
IPv6-Socket gerichtet

IPv4 IPv6

IPv4 Paket IPv6 Paket

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 50
Dual Stack Server

Frage: woher weiß Host, ob IPv4- oder IPv6-Paket kommt?

Antwort
„ anhand unterschiedlicher Protocol-IDs im Data Link Layer
„ Protocol-ID 0x0800 für IPv4 und 0x86dd für IPv6

Frage: wie kann IPv6-Server Daten an IPv4-Client zurücksenden?


„ Anmerkung: Client sendet Daten in IPv4-Paketen

Antwort
„ TCP/IP-Stack übergibt IPv6-Server die IPv4-mapped Address des Client
„ IPv6-Server sendet Daten an die IPv4-mapped Address des Client
„ TCP/IP-Stack auf IPv6-Server erkennt IPv4-mapped Address des Client
† löst IPv4-mapped Address in tatsächliche IPv4-Adresse des IPv4-Client auf
† weitere Bearbeitung der Daten durch IPv4-Stack

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 51
Datenfluss im Dual Stack Server für TCP
Socket IPv6
local IP address 0::0
Client IP address local port 7923 Client IP address
0000:0000: 2001:0638:
0000:0000: Server 0606:0001:
0000:FFFF: 7923 0a00:20ff:
130.75.3.232 fe8e:8156

Socket IPv6 Socket IPv4


local IP address local IP address TCP
2001:0638:0606:0001: 130.75.3.232 6
0a00:20ff:fe8e:8156
2001:0638:
IPv4 IPv6 0606:0001:
130.75.3.234
2e0:7dff:
0800 86dd
fe82:d4a5

Data Link
00:E0:7D:82:D4:A5

Eth 00:E0:7D:82:D4:A5| ... | 0800


IP 4 | ... | 6 | ... | 130. 75.3.232 | 130.75.3.234 | ...
TCP ... | 7923 | ...
Data ...

Eth 00:E0:7D:82:D4:A5| ... | 86dd


IP 6 | ... | 6 | ... | 2001:...:8156 | 2001:...:d4a5 | ...
TCP ... | 7923 | ...
Data ...

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 52
Dual Stack Client

Frage: wie entscheidet Client, ob Daten über IPv4 oder IPv6 gesendet werden?
„ Annahme: es ist nicht bekannt, ob Ziel ein IPv4- oder IPv6-Server ist

Antwort: Entscheidung hängt von DNS-Auflösung ab


„ Dual Stack Client fragt DNS nach A- und AAAA-Record des Servers
† in jedem Fall erwartet Applikation eine Adresse für IPv6-Datenstrukturen
„ Fall 1: Ziel ist ein IPv6-Server mit AAAA-Record im DNS
† Dual Stack Client erhält reguläre IPv6-Adresse
„ Fall 2: Ziel ist ein IPv4-Server mit A-Record im DNS
† Dual Stack Client erhält IPv4-mapped Address des IPv4-Servers
„ Betriebssystem entscheidet anhand Adresstyp über IPv4- oder IPv6-Paket

Problem: IPv6-Client und IPv4-Server auf Dual Stack Hosts


„ DNS enthält sowohl A- als auch AAAA-Record des Servers
„ Client erhält auf DNS Request den AAAA-Record des Servers
„ Client sendet Daten an IPv6-Adresse des Servers

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 53
Senden von IP-Paketen auf Dual Stack Client

Client Client Client Client

Socket Socket Socket Socket


TCP/IPv4 TCP/IPv6 UDP/IPv4 UDP/IPv6

TCP UDP
IPv6 IPv4
DNS-Auflösung ergibt IPv4- IPv4-
lediglich A-Record, d. h. mapped mapped IPv6
IPv4
Ziel ist IPv4-Server

IPv4 IPv6

IPv4 Paket IPv6 Paket

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 54
Client/Server-Applikationen in IPv4 und IPv6

Verbindungsmatrix für Hosts mit TCP/IP-Stack für IPv4 und IPv6


„ Frage: welche Kombinationen von Host unter IPv4 und IPv6 können
miteinander kommunizieren?
„ Ziel: alle!
„ Praxis
† fast alle relevanten Fälle können miteinander kommunizieren
† nur in einer der relevanten Kombinationen wird tatsächlich IPv6 genutzt

Server
Socket IPv4 IPv6 IPv4 IPv6
TCP/IP-Stack IPv4 IPv6 Dual Dual
DNS A AAAA A und AAAA A und AAAA
IPv4 IPv4 A IPv4 – IPv4 IPv4
IPv6 IPv6 AAAA – IPv6 – IPv6
Client
IPv4 Dual A IPv4 – IPv4 IPv4
IPv6 Dual A und AAAA IPv4 IPv6 – IPv6
reine IPv6-Stacks, in der Praxis nicht relevant

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 55
Literatur

RFCs
„ RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
„ RFC 2461: Neighbor Discovery for IP Version 6 (IPv6)
„ RFC 2462: IPv6 Stateless Address Autoconfiguration
„ RFC 2463: Internet Control Message Protocol (ICMPv6) for the Internet
Protocol Version 6 (IPv6) Specification
„ RFC 3513: Internet Protocol Version 6 (IPv6) Addressing Architecture

Bücher
„ R. Desmeules, Cisco Self-Study Implementing IPv6 Networks (IPv6)
Cisco Press, 2003
„ H. P. Dittler, IPv6, 2.Auflage, dpunkt.verlag, 2002
„ H. Wiese, Das neue Internetprotokoll IPV6, Hanser Verlag, 2002
„ N. Hagen, IPv6 Essentials, O'Reilly, 2002
„ P. Albitz, C. Liu, DNS und Bind, 4. Auflage, O'Reilly, 2002
„ W. R. Stevens, UNIX Network Programming – Volume 1: Networking
APIs: Sockets and XTI, Prentice Hall, 1998

Regionales Rechenzentrum für Niedersachsen


J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 56