Upload
jomeah
View
1.167
Download
0
Tags:
Embed Size (px)
Citation preview
Regionales Rechenzentrum für Niedersachsen
Kolloquiumsvortrag
IPv6
Jan Wiebelitz / Christian Grimm
Fachgebiet Distributed Virtual Reality (DVR)
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 2Regionales Rechenzentrum für Niedersachsen
Darum gehts
Protokoll der Vermittlungssschicht
zwischen Transport- (TCP, UDP) und Verbindungsschicht (Ethernet, …)beinhaltet u. a. Adressen von Netzwerkknoten
im Betriebssystem implementiertz. Zt. IP Version 4
Übergang zu IP Version 6
TCP / UDP
Application
IP
Data Link
Physical
Host
IP
Data Link
Physical
Router
TCP / UDP
Application
IP
Data Link
Physical
Host
Data Link
Physical
Switch
Anwendung
Betriebssystem
Hardware
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 3Regionales Rechenzentrum für Niedersachsen
Ü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
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 4Regionales Rechenzentrum für Niedersachsen
Ü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
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 5Regionales Rechenzentrum für Niedersachsen
Zuwachs an Hosts im Internet
Quelle: http://www.isc.org/ds
CID
R, R
FC
1519
, Sep
tem
ber
1993
NA
T, R
FC
163
1 , M
ai 1
994
240,000,000
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 6Regionales Rechenzentrum für Niedersachsen
Zuwachs an Nutzern im Internet
Nutzer (in Millionen)
0
200
400
600
800
1.000
1.200
1.400
1.600
USA Asia-Pacific W. Europe Worldwide
2001
2004
2007
Quelle: Computer Industrie Almanac Inc., Mai 2002
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 7Regionales Rechenzentrum für Niedersachsen
Vergrößerung der Routingtabellen
Thu Dec 4 03:31:38 2003 (Australian Eastern Time) http://www.telstra.net/ops/bgptable.html
CID
R, R
FC
1519
, Sep
tem
ber
1993
NA
T, R
FC
163
1 , M
ai 1
994
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 8Regionales Rechenzentrum für Niedersachsen
NAT
NAT bricht das Ende-zu-Ende-Paradigma von IPbehindert die Entwicklung neuer Applikationen
NAT verhindert die Erreichbarkeit von Hostszukü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-Technologieaufsetzen
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 9Regionales Rechenzentrum für Niedersachsen
Ü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
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 10Regionales Rechenzentrum für Niedersachsen
6bone
IPv6 Timeline
1993 1994 1995 1999199819971996 2000 2001
IETF IPnGStarted
1st Specification
Provider basedIPv6 Spaces
6TAP
IPv6 ForumFounded
RIRs AssignedIPv6 Spaces
Cisco IPv6Support12.2(t)
2002 2003
Uni HannoverConnected to
the 6WIN
DFN-ProjectJOIN
6WIN DFN
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 11Regionales Rechenzentrum für Niedersachsen
Zuwachs an Hosts im Internet
Quelle: http://www.isc.org/ds
CID
R, R
FC
1519
, Sep
tem
ber
1993
NA
T, R
FC
163
1, M
ai 1
994
IPv6
, RF
C 1
883,
Dez
embe
r 19
95
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 12Regionales Rechenzentrum für Niedersachsen
Adressen
Vergleich von IPv4 und IPv6
IPv4: 32 Bit Adressen4.294.967.296 mögliche Adressend.h. 0,0000084 IPv4-Adressen / m2 Erdoberfläche
IPv6: 128 Bit Adressen340.282.366.920.938.463.463.374.607.431.768.211.456 mögliche Adressenmit 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)
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 13Regionales Rechenzentrum für Niedersachsen
Adressen
Reichweiten von AdressenRFC3515 „IP Version 6 Addressing Architecture“ vom April 2003
Link-Local scope FE80::/10
Site-Local scope FEC0::/10Global scope
Link-Local Site-Local Global-Scope
Link-Local
Link-Local Site-Local
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 14Regionales Rechenzentrum für Niedersachsen
Adressen
Reichweiten von AdressenDraft „Deprecating Site Local Address“
Link-Local scope FE80::/10
Global scope
Link-Local Global-Scope
Link-Local
Link-Local Site-Local
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 15Regionales Rechenzentrum für Niedersachsen
Adressen
Adressierungsarten
Unicast AdresseIdentifier für ein einzelnes Interface (1:1)
Anycast AdresseIdentifier für eine Gruppe von InterfacesPaket wird an ein Interface gesandtnur für RouterHost-Routen notwendig
Multicast AdresseIdentifier für eine Gruppe von InterfacesPaket wird an alle Interfaces übertragen. (1:n)
kein BroadcastBroadcast wird durch von Multicast ersetzt.
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 16Regionales Rechenzentrum für Niedersachsen
Adressen
Zusammenfassung der verschiedenen IPV6-Adressen
IPv6 Adressen
Multicast Unicast Anycast
Solicited Node
Assigned
IPv4 Compatible
UnspecifiedLoopback
Link-Local
Aggregatable Global
Site-Local
Link-Local
Aggregatable Global
Site-Local
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 17Regionales Rechenzentrum für Niedersachsen
Adressen
Darstellung von IPv6-Adressen
bevorzugte Darstellungacht 16-bit-Teile hexadezimal dargestelltdurch Doppelpunkt voneinander getrennt
führende Nullen in einem Feld können weggelassen werden, anhängende nichtBeispiel:
1234:5678:9ABC:DEF0:1234:5678:9ABC:DEF0
1080:0:0:0:8:800:200C:417A
vereinfachte Darstellung16-bit-Gruppen von Nullen können einmal zusammengefasst werdenführende Nullen einer 16-bit-Gruppe können weggelassen werden, anhängende nicht
Beispiel: 1080::8:800:200C:417A
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 18Regionales Rechenzentrum für Niedersachsen
Adressen
Darstellung von IPv6 Adressen
Gemischte Darstellungin gemischter IPv4/IPv6-UmgebungIPv4-compatible IPv6 address fürTunnel durch IPv4-Netze
IPv4-mapped IPv6 address präsentiert IPv4-Adressen als IPv6-AdressenBeispiel:
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-Formatfür Rückwärtsauflösung im DNSjeweils 4 Bit werden durch eine Punkt (.) voneinander getrennt
hexadezimale SchreibweiseAdresse 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
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 19Regionales Rechenzentrum für Niedersachsen
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-localaddress dem Interface zugewiesen
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 20Regionales Rechenzentrum für Niedersachsen
Stateless Autoconfiguration
Interface ID nach IEEE-Guidelines im sog. modifizierten EUI-64 Format
Gilt für alle Unicast AdressenInterface ID einer Netzwerkkarte basiert auf deren MAC-Adressezwischen company ID (c) und extension ID (x) wird FF FE eingefügt
das universal/local Bit im Company-Anteil wird auf 1 gesetztAusnahme: alle Adressen die mit 0002 beginnen
cccc ccug cccc cccc cccc cccc xxxx xxxx xxxx xxxx xxxx xxxx
cccc ccug cccc cccc cccc cccc xxxx xxxx xxxx xxxx xxxx xxxx1111 1111 1111 1110FF FE
48 Bit MAC-Adresse
64 Bit Interface ID
universal/local Bit wirdVon 0 nach 1 invertiert
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 21Regionales Rechenzentrum für Niedersachsen
Stateless Autoconfiguration
Schritte zur eigenen Adresse (link-local scope)
Duplicate Address Detection
Link-Local Adress FE80::<Interface ID>
ZumInternet
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 22Regionales Rechenzentrum für Niedersachsen
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 messagemanaged address flagother stateful configuration
PrefixPrefix lifetime
Host stellt sich aus Präfix und der Interface ID die IPv6-Adresse zusammen
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 23Regionales Rechenzentrum für Niedersachsen
Stateless Autoconfiguration
Schritte zur eigenen Adresse (global unicast scope)
Router Solicitation
ZumInternet
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 24Regionales Rechenzentrum für Niedersachsen
Stateless Autoconfiguration
Schritte zur eigenen Adresse (global unicast scope)
Router Advertisement
Global Unicast Adresse <präfix>:<interface-id>
ZumInternet
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 25Regionales Rechenzentrum für Niedersachsen
Adressen
Global Unicast Adressen
Global Routing Prefixidentifiziert eine SiteBeispiel: 2001:0638::/32 ist dem DFN zugewiesen
Subnet IDidentifiziert ein Subnetz innerhalb einer SiteBeispiel: 2001:0638:0606::/48 ist der Uni Hannover vom DFN zugewiesen
Interface IDim modifizierten EUI-64 Format
128 Bit
global routing prefix interface ID
n Bit
subnet ID
64 - n Bit 64 Bit
network prefix
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 26Regionales Rechenzentrum für Niedersachsen
Adressen
Multicast Adressen
Prefix ist immer 1111 11112Flags
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-Adresseinterface-local scopelink-local und site-local scopeadmin-local scopeorganizational-local scopeglobal scope
128 Bit
8 Bit 4 Bit 4 Bit 112 Bit
prefix flags scope group ID
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 27Regionales Rechenzentrum für Niedersachsen
Adressen
Anycast Adressen
haben keinen syntaktische Unterschied zu Unicast-Adressensind mehr als einem Interface zugeordnet
dürfen nicht Source-Adressen seindürfen nur Routern zugewiesen werden, Hosts nichtwerden zum nächstgelegenen Interface mit der Anycast-Adresse geroutet
Auswahl des nächstgelegenen Interface anhand Distanzen aus RoutingProtokollendurch Host-Route Einträge auf den Routern
128 Bit
subnet prefix interface ID000..000
n Bit 128 - n Bit
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 28Regionales Rechenzentrum für Niedersachsen
Header
Vergleich von IPv4- und IPv6-Header
IPv4-Header IPv6-Header
Feld entfällt in IPv6
Feld in IPv4 und IPv6 enthalten
Name und Position in IPv6 verändert
neues Feld in IPv6
Ver. TrafficClass
Source Address
Payload Length NextHeader
HopLimit
Destination Address
Flow LabelFlow Label
gen
au 4
0 B
yte
Ver.
Time toLive
Source Address
Total LengthType ofService
HdrLen
Identification FragmentOffsetFlg
Protocol HeaderChecksum
Destination Address
HdrLen
Identification FragmentOffsetFlg
HeaderChecksum
Options Padding
min
. 20 Byte
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 29Regionales Rechenzentrum für Niedersachsen
Header
Extension HeaderIPv4-Option-Feld fällt weg
Extension HeaderHop-by-Hop HeaderDestination Option Header
Routing HeaderFragment Header
Authentication HeaderEncapsulating SecurityPayload Header
Reihenfolge wichtig
Ver. Traffic Class
Source Address
Payload Length Next Header Hop Limit
Destination Address
Flow Label
Extension Header #1Next Header
Extension Header #2Next Header
Payload(TCP, UDP Paket)
gena
u 40
Byt
eva
r.va
r.va
r.
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 30Regionales Rechenzentrum für Niedersachsen
DNS (proposed standard) I
Neuer Address Record: AAAA-RecordBeispiel$ORIGIN rvs.uni-hannover.de
dns1 IN AAAA 2001:638:606:1:202:e3ff:fe1d:b750
Neue Domäne: ip6.intIPv6 Adressen werden im "Nibble"-Format dargestellt
Beispiel0.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
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 31Regionales Rechenzentrum für Niedersachsen
DNS (proposed standard) II
Neue Konzepte kommen zum EinsatzAdresse wird in mehreren Teilen aufgelöst
DNAME-Resource-RecordAufbau von Chains innerhalb des DNS-Systems
ähnlich dem CNAME-Resource-Recordfü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.
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 32Regionales Rechenzentrum für Niedersachsen
DNS (experimental) I
A6-Resource-Recordskonkurrierend zu den AAAA-Recordshaben jedoch z.Zt. den Status „experimental“
für die Vorwärtsauflösungnur einen Teil der IPv6-Adresse auflösen
Verweis auf einen symbolischen Namen für den RestBeispiel 1$ORIGIN rvs.uni-hannover.dedns1 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.
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 33Regionales Rechenzentrum für Niedersachsen
DNS (experimental) II
Neue Domäne ip6.arpakonkurrierend 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.arpateilweise 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
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 34Regionales Rechenzentrum für Niedersachsen
Renumbering
Renumberinghilfreich z.B. beim Wechsel des ISP‘s„strict aggregation“: ein Präfix nicht weitergegeben darf
IPv6 Präfix ändernstateless autoconfiguration der Knoten ist notwendigZeitparameter im „router advertisement“ werden genutzt
Lebenszeit des alten Präfixes wird reduziertNeuer Präfix wird verkündet
während der Übergangszeit haben die Knoten zwei Unicast Adressen
DNS Einträge änderndurch DNAME-Resource-Records kann der Präfix ganzer Netze schnell und einfach geändert werden
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 35Regionales Rechenzentrum für Niedersachsen
Routing
Wachstum der Routingtabellen kontrollierbardurch Clusterbildung
„strict aggregation“
„renumbering“
IPv6 RoutingModifikation 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-AspekteLeistungsaspekte
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 36Regionales Rechenzentrum für Niedersachsen
6bone - Backbone
http://www.cs-ipv6.lancs.ac.uk/ftp-archive/6Bone/Maps/backbone.gif
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 37Regionales Rechenzentrum für Niedersachsen
6bone – Site connectivity
http://www.cs-ipv6.lancs.ac.uk/ftp-archive/6Bone/Maps/all6bone.gif
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 38Regionales Rechenzentrum für Niedersachsen
Anschluss an den 6bone
http://www.join.uni-muenster.de/6bone/uebersichtskarte.php
Übersichtsbild
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 39Regionales Rechenzentrum für Niedersachsen
6WIN des DFN
http://www.6win.de/
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 40Regionales Rechenzentrum für Niedersachsen
Anschluss des RRZN an den 6bone
IPv4
IPv6
DNS Tunnel-endpunkt
6bone
Uni HannoverDFN Hamburg
IPv6
DNS
Tunnel-endpunkt
Tunnel-endpunkt
JOIN - Uni MünsterIPv6
Uni Paderborn
TU Clausthal
DNS DNS
DNS
IPv6Tunnel-
endpunkt
Tunnel-endpunkt
Tunnel-endpunkt
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 41Regionales Rechenzentrum für Niedersachsen
Ü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
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 42Regionales Rechenzentrum für Niedersachsen
Was geht‘s weiter?
AdressierungSite-local scope fällt wohl demnächst weg
DNSDynamic DNS mit stateless autoconfiguration
Dynamic DNS mit DHCPv6
DHCPv6Time Configuration Options
NIS Configuration OptionsPrefix Options
IPv6 MobilityInsgesamt erst Draft-Status
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 43Regionales Rechenzentrum für Niedersachsen
Ü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
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 44Regionales Rechenzentrum für Niedersachsen
Client/Server-Applikationen in IPv4 und IPv6
Verbindungsmatrix für Hosts mit TCP/IP-Stack für IPv4 und IPv6Frage: welche Kombinationen von Host unter IPv4 und IPv6 können
miteinander kommunizieren?Ziel: alle!
„klassische“ Client/Server-Applikationen sind für IPv4 programmiertdie Erfahrung zeigt: Hosts können über IPv4 miteinander kommunizieren
der Kombination „ IPv4-Client “ auf „ IPv4-Server “ ist also erledigt
Client
Server
??IPv6
??IPv4
IPv6IPv4
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 45Regionales Rechenzentrum für Niedersachsen
Anpassung einer IPv4-Applikation an IPv6
Applikationen nutzen im Allgemeinen die Socket-SchnittstelleSockets 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
Anpassung bestehender IPv4-Applikationen an IPv6im Wesentlichen muss lediglich die Adressierung angepasst werden
d. h. Anpassung von Datenstrukturen und Funktionen für Adressierungder Aufwand ist gering, s. Beispiele
TCP / UDP
Application
TCP / UDP
Application
IP IPIPIP
Data Link Data LinkData LinkData Link
Physical PhysicalPhysicalPhysical
Sockets Sockets
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 46Regionales Rechenzentrum für Niedersachsen
Client/Server-Applikation – TCP über IPv4
#include <...>
#define BUFFERSIZE 20#define PORT 7923
int main ( int argc, char *argv[] ) {int sockfd;int sendlen;char sendbuf[BUFFERSIZE];struct sockaddr_in saddr;
if ( ( sockfd = socket ( AF_INET, SOCK_STREAM, 0 ) ) < 0 ) {perror ( "socket" ); return -1;
}
bzero ( ( char * ) &saddr, sizeof ( saddr ) );saddr.sin_family = AF_INET;saddr.sin_port = htons ( PORT );if ( inet_pton ( AF_INET, argv[1], &saddr.sin_addr ) <= 0 ) {
perror ( "inet_pton" ); return -1;}
strcpy ( sendbuf, "Hi there !!" );sendlen = strlen ( sendbuf );
if ( connect ( sockfd, (struct sockaddr *) &saddr, sizeof (saddr) ) < 0 ) {perror ( "connect" ); return -1;
}
if ( send ( sockfd, sendbuf, strlen ( sendbuf ), 0 ) < 0 ) {perror ( "send" ); return -1;
}
close ( sockfd );
return 0;}
Client Server
#include <...>
#define BUFFERSIZE 20#define PORT 7923
int main ( void ) {int sockfd, newsockfd;int clielen, recvlen;char recvbuf[BUFFERSIZE];struct sockaddr_in saddr, caddr;
if ( ( sockfd = socket ( AF_INET, SOCK_STREAM, 0 ) ) < 0 ) {perror ( "socket" ); return -1;
}
bzero ( ( char * ) &saddr, sizeof ( saddr ) );saddr.sin_family = AF_INET;saddr.sin_port = htons ( PORT );saddr.sin_addr.s_addr = htonl ( INADDR_ANY );
if ( bind ( sockfd, (struct sockaddr *) &saddr, sizeof ( saddr ) ) < 0 ) {perror ( "bind" ); return -1;
}
listen ( sockfd, 5 );
clielen = sizeof ( caddr );newsockfd = accept ( sockfd, (struct sockaddr *) &caddr, &clielen );if ( newsockfd < 0 ) {
perror ( "accept" ); return -1;}
recvlen = recv ( newsockfd, recvbuf, BUFFERSIZE, 0 );if ( recvlen < 0 ) {
perror ( "recv" ); return -1;}recvbuf[recvlen] = 0;printf ( "Empfangen: %s\n", recvbuf );
close ( sockfd );close ( newsockfd );
return 0;}
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 47Regionales Rechenzentrum für Niedersachsen
Client/Server-Applikation – TCP über IPv6
#include <...>
#define BUFFERSIZE 20#define PORT 7923
int main ( int argc, char *argv[] ) {int sockfd;int sendlen;char sendbuf[BUFFERSIZE];struct sockaddr_in6 saddr;
if ( ( sockfd = socket ( AF_INET6, SOCK_STREAM, 0 ) ) < 0 ) {perror ( "socket" ); return -1;
}
bzero ( ( char * ) &saddr, sizeof ( saddr ) );saddr.sin6_family = AF_INET6;saddr.sin6_port = htons ( PORT );if ( inet_pton ( AF_INET6, argv[1], &saddr.sin6_addr ) <= 0 ) {
perror ( "inet_pton" ); return -1;}
strcpy ( sendbuf, "Hi there !!" );sendlen = strlen ( sendbuf );
if ( connect ( sockfd, (struct sockaddr *) &saddr, sizeof (saddr) ) < 0 ) {perror ( "connect" ); return -1;
}
if ( send ( sockfd, sendbuf, strlen ( sendbuf ), 0 ) < 0 ) {perror ( "send" ); return -1;
}
close ( sockfd );
return 0;}
Client Server
Initialisierunganpassen
Programmablaufnicht anpassen
#include <...>
#define BUFFERSIZE 20#define PORT 7923
int main ( void ) {int sockfd, newsockfd;int clielen, recvlen;char recvbuf[BUFFERSIZE];struct sockaddr_in6 saddr, caddr;
if ( ( sockfd = socket ( AF_INET6, SOCK_STREAM, 0 ) ) < 0 ) {perror ( "socket" ); return -1;
}
bzero ( ( char * ) &saddr, sizeof ( saddr ) );saddr.sin6_family = AF_INET6;saddr.sin6_port = htons ( PORT );saddr.sin6_addr.s_addr = in6addr_any;
if ( bind ( sockfd, (struct sockaddr *) &saddr, sizeof ( saddr ) ) < 0 ) {perror ( "bind" ); return -1;
}
listen ( sockfd, 5 );
clielen = sizeof ( caddr );newsockfd = accept ( sockfd, (struct sockaddr *) &caddr, &clielen );if ( newsockfd < 0 ) {
perror ( "accept" ); return -1;}
recvlen = recv ( newsockfd, recvbuf, BUFFERSIZE, 0 );if ( recvlen < 0 ) {
perror ( "recv" ); return -1;}recvbuf[recvlen] = 0;printf ( "Empfangen: %s\n", recvbuf );
close ( sockfd );close ( newsockfd );
return 0;}
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 48Regionales Rechenzentrum für Niedersachsen
Client/Server-Applikationen in IPv4 und IPv6
Verbindungsmatrix für Hosts mit TCP/IP-Stack für IPv4 und IPv6Frage: welche Kombinationen von Host unter IPv4 und IPv6 können
miteinander kommunizieren?Ziel: alle!
Frage: was ist mit heterogenen Applikationen?IPv4-Client kommuniziert mit IPv6-Server
IPv6-Client kommuniziert mit IPv4-Server
Client
Server
einfache Anpassung?IPv6
?der „klassische“ FallIPv4
IPv6IPv4
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 49Regionales Rechenzentrum für Niedersachsen
Dual Stack – IPv4 und IPv6 in einem Host
Eigenschaften eines Dual Stack Hostim TCP/IP-Stack des Betriebssystems sind IPv4 und IPv6 implementiertder 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 bedienenVoraussetzung: Server-Applikation ist für IPv6 implementiert
Konventionen für Server-Applikation auf Dual Stack Hostauf IPv4-Socket gebundener Server kann nur IPv4-Pakete empfangen
auf IPv6-Socket gebundener Server kann nur IPv6-Pakete empfangenwenn der Socket auf eine „reguläre“ IPv6-Adresse gebunden ist
auf IPv6-Socket gebundener Server kann nur IPv4-Pakete empfangenwenn der Socket auf eine IPv4-mapped Adress gebunden ist
auf IPv6-Socket gebundener Server kann IPv4- und IPv6-Pakete empfangenwenn der Socket auf die Unspecified Address (0::0) gebunden ist
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 50Regionales Rechenzentrum für Niedersachsen
Anpassung der IP-Adressen im Dual Stack Server
Übergabe der IP-Adresse des Client an Server-Applikation
IPv4 Paket IPv6 Paket
SocketTCP/IPv4
SocketTCP/IPv6
IPv6
IPv4
Server
IPv6
SocketUDP/IPv4
SocketUDP/IPv6
IPv4IPv4-
mappedIPv4-Paket ist anApplikation auf
IPv6-Socket gerichtet
IPv4-mapped
Server
TCP
IPv6IPv4
UDP
Server Server1236 123712351234Port Number
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 51Regionales Rechenzentrum für Niedersachsen
Dual Stack Server
Frage: woher weiß Host, ob IPv4- oder IPv6-Paket kommt?
Antwortanhand unterschiedlicher Protocol-IDs im Data Link LayerProtocol-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
AntwortTCP/IP-Stack übergibt IPv6-Server die IPv4-mapped Address des Client
IPv6-Server sendet Daten an die IPv4-mapped Address des ClientTCP/IP-Stack auf IPv6-Server erkennt IPv4-mapped Address des Client
löst IPv4-mapped Address in tatsächliche IPv4-Adresse des IPv4-Client aufweitere Bearbeitung der Daten durch IPv4-Stack
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 52Regionales Rechenzentrum für Niedersachsen
Datenfluss im Dual Stack Server für TCP
Server
TCP
Data Link
IPv6IPv4
00:E0:7D:82:D4:A5| ... | 86dd6 | ... | 6 | ... | 2001:...:8156 | 2001:...:d4a5 | ...
... | 7923 | ......
EthIP
TCPData
00:E0:7D:82:D4:A5| ... | 08004 | ... | 6 | ... | 130. 75.3.232 | 130.75.3.234 | ...
... | 7923 | ......
EthIP
TCPData
130.75.3.23486dd0800
00:E0:7D:82:D4:A5
6
7923
2001:0638:0606:0001:2e0:7dff:fe82:d4a5
Socket IPv6local IP address
2001:0638:0606:0001:0a00:20ff:fe8e:8156
Socket IPv4local IP address
130.75.3.232
Socket IPv6local IP address 0::0
local port 7923 Client IP address2001:0638:0606:0001:0a00:20ff:fe8e:8156
Client IP address0000:0000:0000:0000:0000:FFFF:
130.75.3.232
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 53Regionales Rechenzentrum für Niedersachsen
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 abDual 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 DNSDual Stack Client erhält reguläre IPv6-Adresse
Fall 2: Ziel ist ein IPv4-Server mit A-Record im DNSDual 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 HostsDNS enthält sowohl A- als auch AAAA-Record des ServersClient erhält auf DNS Request den AAAA-Record des Servers
Client sendet Daten an IPv6-Adresse des Servers
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 54Regionales Rechenzentrum für Niedersachsen
Senden von IP-Paketen auf Dual Stack Client
IPv4 Paket IPv6 Paket
SocketTCP/IPv4
SocketTCP/IPv6
IPv6
IPv4
Client
IPv6
SocketUDP/IPv4
SocketUDP/IPv6
IPv4
Client
TCP
IPv6IPv4
UDP
Client Client
IPv4-mapped
IPv4-mapped
DNS-Auflösung ergibtlediglich A-Record, d. h.
Ziel ist IPv4-Server
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 55Regionales Rechenzentrum für Niedersachsen
Client/Server-Applikationen in IPv4 und IPv6
Verbindungsmatrix für Hosts mit TCP/IP-Stack für IPv4 und IPv6Frage: welche Kombinationen von Host unter IPv4 und IPv6 können
miteinander kommunizieren?Ziel: alle!
Praxisfast alle relevanten Fälle können miteinander kommunizieren
nur in einer der relevanten Kombinationen wird tatsächlich IPv6 genutzt
reine IPv6-Stacks, in der Praxis nicht relevant
A und AAAA
A
AAAA
A
DNS
Dual
Dual
IPv6
IPv4
TCP/IP-Stack DualDualIPv6IPv4
IPv6–IPv6IPv4IPv6
IPv4IPv4–IPv4IPv4
IPv6–IPv6–IPv6
IPv4IPv4–IPv4IPv4
Client
A und AAAAA und AAAAAAAAA
IPv6IPv4IPv6IPv4Socket
Server
J.Wiebelitz, C. Grimm | 11.Dezember 2003 | Folie 56Regionales Rechenzentrum für Niedersachsen
Literatur
RFCsRFC 2460: Internet Protocol, Version 6 (IPv6) SpecificationRFC 2461: Neighbor Discovery for IP Version 6 (IPv6)RFC 2462: IPv6 Stateless Address AutoconfigurationRFC 2463: Internet Control Message Protocol (ICMPv6) for the Internet
Protocol Version 6 (IPv6) SpecificationRFC 3513: Internet Protocol Version 6 (IPv6) Addressing Architecture
BücherR. Desmeules, Cisco Self-Study Implementing IPv6 Networks (IPv6)Cisco Press, 2003H. P. Dittler, IPv6, 2.Auflage, dpunkt.verlag, 2002H. Wiese, Das neue Internetprotokoll IPV6, Hanser Verlag, 2002N. Hagen, IPv6 Essentials, O'Reilly, 2002P. Albitz, C. Liu, DNS und Bind, 4. Auflage, O'Reilly, 2002W. R. Stevens, UNIX Network Programming – Volume 1: NetworkingAPIs: Sockets and XTI, Prentice Hall, 1998