Académique Documents
Professionnel Documents
Culture Documents
IPv6
Patrick Ducrot
Plan du document
Les limitation d'IPv4……………………………………………………………………………………………………………………………… 3
L'adressage IPv6…………………………………………………………………………………………………………………………………………… 31
Configuration et commandes………………………………………………………………………………………………………………… 65
La mobilité………………………………………………………………………………………………………………………………………………………… 70
Transition IPv4-IPv6………………………………………………………………………………………………………………………………… 81
Eléments de programmation…………………………………………………………………………………………………………………… 96
1
Les limitations d'IPv4
2
Les différents RIR
3
L'explosion des besoins
L'arrivée des services mobiles (gprs, edge,
umts).
L'électronique connectée.
La domotique.
…
- Ecole Nationale Supérieure d'Ingénieurs 7
de Caen -
IPv6: un nouveau
protocole
4
L'apparition d'IPv6
Début des travaux au milieu des années
1980 pour améliorer IP: IPng.
Gestion de la mobilité.
5
Adressage hiérarchique et sécurité
En tête et extensions
IPv6
6
Entêtes IPv4 vs IPv6
En tête IPv6
Traffic class Type of service IPv4
7
En têtes d'extension
exemples:
8
Ordre des en têtes d'extension
chiffrement/déchiffrement de l'information
9
Padding (bourrage)
Une option de bourrage peut être utilisée
pour aligner une extension sur un multiple
de 8 octets.
10
Extension "destination"
Même format que l'extension "hop by hop".
Extension "routing"
- longueur = nombre de mots de 64 bits composant
l'extension.
-Type = 0.
- segments restants: nombre d'équipements à
traverser.
-réservé: pour maintenir l'alignement.
- listes des adresses.
Fonctionnement:
Le champ destination dans l'entête IPv6 contient l'adresse du premier relais.
Lorsque le premier relais est atteint, il remplace l'adresse de destination par
l'adresse du prochain relais et son adresse est retirée de la liste des relais à
traverser.
- Ecole Nationale Supérieure d'Ingénieurs 22
de Caen -
11
Extension "fragmentation"
en tête suivant réservé offset de fragmentation Rés P
Identification
La sécurité
La mise en œuvre de la sécurité permet de garantir:
la confidentialité des données.
L'intégrité des données.
L'authentification de l'origine des données.
La protection contre le rejeu.
12
IPSec mode transport ou tunnel
13
IPSec mode intermédiaire
Association de sécurité
Négociation du type de sécurité à utiliser (algorithmes et
clés de chiffrement, de hachage, …).
Une SA contient:
en fonction du type de sécurité: les algorithmes
d'authentification, de chiffrement, les clés de chiffrement.
la durée de vie de l'association.
Le mode IPSec utilisé (transport, tunnel).
14
Extension "Authentification"
Positionnement de l'extension AH:
En tête IPv6 hop by hop routing destination AH destination données
mode transport
mode tunnel
Extension "sécurité"
Positionnement de l'extension ESP authentifié
chiffré
en tête IPv6 hop by hop destination ESP destination données queue ESP auth. ESP
mode transport
en tête IPv6 + ESP en tête IPv6 + données queue ESP auth. ESP
nouvelles extensions extensions originales
mode tunnel
15
L'adressage IPv6
Exemple :
Exemple d’utilisation:
http://[2001:1234:12::1]:8080
Cohabitation v4/v6
0:0:0:0:0:FFFF:192.168.16.1 ou ::FFFF:192.168.16.1
16
Adressage IPv6
Types d'adresse:
Unicast (un à un)
Multicast (un à
plusieurs)
Anycast (un à un parmi
plusieurs)
Plan d'adressage:
Préfixe de routage global ID Sous réseau ID Interface
n bits m bits 128-n-m bits
Plan d'adressage
Allocation Préfixe binaire Préfixe hexa
17
Adresse IPv6
Un équipement dispose en général de plusieurs adresses IPv6
(contrairement à IPv4).
# ifconfig
eth1 Link encap:Ethernet HWaddr 00:30:48:2E:3D:7D
inet addr:193.49.200.59 Bcast:193.49.200.255 Mask:255.255.255.0
inet6 addr: 2001:660:7105::10/0 Scope:Global
inet6 addr: fe80::230:48ff:fe2e:3d7d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3684332 errors:0 dropped:0 overruns:0 frame:0
TX packets:2395860 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:460322611 (438.9 Mb) TX bytes:2578239647 (2458.8 Mb)
Base address:0x3040 Memory:fc220000-fc240000
18
Construction d'un identifiant d'interface
Un identifiant d'interface est construit à partir de
l'adresse physique
24 bits 16 bits 24 bits
19
Adresse "Unique Local Address"
Adresse ULA auto assignée (L=1):
FD00::/8
Préfixe global pseudo aléatoire généré localement:
trunc ( SHA-1 (local time, local EUI 64), 40 bits )
probablement unique mais pas de garantie.
Adresse Unicast
topologie publique
http://www.iana.org/assignments/ipv6-tla-assignments
IPv6 Prefix FP TLA Binary Value TLA Hex Assignment
----------- --- ---------------- ------- ------------------
2000::/16 001 0 0000 0000 0000 0x0000 Reserved
2001::/16 001 0 0000 0000 0001 0x0001 Sub-TLA Assignments [RFC2450]
2002::/16 001 0 0000 0000 0010 0x0002 "6to4" [RFC3056]
2003::/16 001 0 0000 0000 0011 0x0003 Global Unicast [RFC3513]
3FFE::/16 001 1 1111 1111 1110 0x1FFE 6bone Testing [RFC2471] To be phased out 06/06/2006
3FFF::/16 001 1 1111 1111 1111 0x1FFF Reserved
20
Allocation adresse unicast
le IANA délègue des blocs d'adresses IPv6 aux
RIR en /23
Exemple:
RIPE NCC 2001:0600::/23
RENATER TLA 2001:0660::/32
ENSICAEN 2001:0660:7105::/48
- Ecole Nationale Supérieure d'Ingénieurs 41
de Caen -
21
Adresses Multicast
Une adresse multicast désigne un ensemble d'interfaces.
Liste complète:
http://www.iana.org/assignments/ipv6-multicast-addresses
22
Adresses multicast sollicité
Une adresse multicast sollicité est construite en
concaténant le préfixe FF02::1:FF00:0/104 aux derniers 24
bits de l'adresse IPv6 de la machine.
Exemple:
Adresse IPv6:
2001:660:7105:1000:20e:cff:fe30:7b3a
Adresse multicast sollicité:
FF02::1:FF30:7b3a
Adresse Anycast
Une adresse destination de type anycast désigne une
interface parmi un ensemble de machines bien défini.
23
Exemple adresse anycast
Recherche des machines "Home Agent"
(utilisées dans la mobilité) au sein du
réseau 2001:660:7105:1000::/64
Identifiant anycast: 7e
Adresse anycast:
2001:660:7105:1000:FDFF:FFFF:FFFF:FFFE
Quelques services de
base
24
Le protocole ICMPv6
Protocole redéfini par la RFC 2463.
Il permet:
gestion des erreurs
test (ping)
configuration automatique des équipements
découverte des voisins ("neighbour discovery")
gestion de groupes multicast (Multicast
Listener Discovery)
reprise des fonctionnalités de arp v4
Format ICMPv6
25
Messages d'erreur ICMPv6
1 Destination inaccessible :
0 * aucune route vers la destination
1 * la communication avec la destination est
administrativement interdite
2 * hors portée de l'adresse source
3 * l'adresse est inaccessible
4 * le numéro de port est inaccessible
2 Paquet trop grand
3 Temps dépassé :
0 * limite du nombre de sauts atteinte
1 * temps de réassemblage dépassé
4 Erreur de paramètre :
0 * champ d'en-tête erroné
1 * champ d'en-tête suivant non reconnu
2 * option non reconnue
26
Messages de gestion de groupe multicast
130 Requête d'abonnement
137 Redirection
- Ecole Nationale Supérieure d'Ingénieurs 54
de Caen -
27
Messages de gestion de mobilité
28
Auto configuration "stateless"
L'équipement s'attribue une adresse "lien local".
Autoconfiguration "stateful"
Un serveur DHCP peut proposer plus d'informations que par
l'autoconfiguration sans état (exemple: serveur DNS).
Un serveur DHCP peut gérer plusieurs liens; un client DHCP converse soit
directement avec le serveur DHCP soit à travers un proxy DHCP.
Les requêtes DHCP sont envoyées sur UDP/547, les réponses sont reçues
sur UDP/546.
La découverte d'un serveur DHCP est réalisée par un envoi d'un message
multicast à l'adresse FF02::1:2.
29
Découverte du Path MTU
Protocole TCP:
Envoi d'une demande connexion avec le MTU du lien.
Si le MTU est trop grand, réception d'un message
ICMPv6 "paquet trop grand" (type 2 contenant une
nouvelle valeur de MTU).
On essaye à nouveau jusqu'à établissement de la
connexion.
Protocole UDP:
La segmentation doit être assurée par une couche
supérieure. Il y a souvent nécessité de fragmenter
(extension IPv6).
Fonctionnement DNS
30
Serveur de noms
Support de IPv6 par les DNS (RFC1886)
Configuration DNS
acl permit-transfer {
::ffff:192.93.101.14 ;
::ffff:193.49.200.16 ;
};
options {
version "unknown"; // Pour eviter d'indiquer la version utilisee
directory "/etc/dns"; // Emplacement des fichiers de zone
listen-on-v6 { any; } ;
allow-transfer { permit-transfer ; } ;
………
};
zone "ensicaen.fr" {
type master;
file "db.ensicaen.fr";
};
zone "5.0.1.7.0.6.6.0.1.0.0.2.ip6.arpa" {
type master ;
file "db.ipv6.ensicaen.fr.reverse" ;
};
zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" {
type master ;
file "db.ipv6.localhost.reverse" ;
};
31
Fichier db.ensicaen.fr
$TTL 86400
@ IN SOA ns.ensicaen.fr. dp.ensicaen.fr. (
2006032302 ; Serial
21600 ; Refresh every 3 hours
3600 ; Retry every hour
604800 ; Expire after a week
86400 ) ; Minimum ttl of 1 day
IN NS ns.ensicaen.fr.
IN NS ns1.syrhano.net.
IN NS caeau2.in2p3.fr.
IN MX 3 debian-mx1.ensicaen.fr.
localhost IN A 127.0.0.1
IN AAAA ::1
ns IN A 193.49.200.14
IN AAAA 2001:660:7105::2
;
; serveur www de l'etablissement
;
serv2 IN A 193.49.200.59
www IN CNAME serv2.ecole.ensicaen.fr.
www6 IN AAAA 2001:660:7105::10
Fichier db.ipv6.ensicaen.fr.reverse
$TTL 86400
;$ORIGIN 0.0.0.0.5.0.1.7.0.6.6.0.1.0.0.2.IP6.ARPA.
@ IN SOA ns.ensicaen.fr. dp.ensicaen.fr. (
2005032901 ; Serial
10800 ; Refresh every 3 hours
3600 ; Retry every hour
604800 ; Expire after a week
86400 ) ; Minimum ttl of 1 day
IN NS ns.ensicaen.fr.
$ORIGIN 0.0.0.0.5.0.1.7.0.6.6.0.1.0.0.2.IP6.ARPA.
32
Configuration et
commandes
33
Commandes Linux
Visualisation des routes
route -A inet6 (ou route -6)
filtrage de paquets
ipv6tables
…
- Ecole Nationale Supérieure d'Ingénieurs 67
de Caen -
Configuration "conviviale"
netsh
> interface ipv6
34
Commandes Windows
Visualisation des interfaces IPv6:
ipv6 if
…
La mobilité
35
La mobilité
Concept important notamment avec le
développement des terminaux mobiles
(téléphone, pda, …).
Principe de la mobilité
Un mobile connecté sur un réseau étranger dispose:
une adresse temporaire au sein du réseau étranger ("Care Of Address") obtenue
par auto configuration.
une adresse mère provenant de son réseau d'origine ("Home Address").
36
La mobilité
37
Communication en double tunneling
(2/2)
38
Fonctionnalités nécessaires pour la
mobilité
Chaque nœud IPv6 doit pouvoir mémoriser des associations
("binding cache").
La mobilité
Utilisation de:
L'extension "destination".
L'autoconfiguration "stateless"
Mécanismes de chiffrement et
d'authentification pour sécuriser les messages
"Binding Update".
- Ecole Nationale Supérieure d'Ingénieurs 78
de Caen -
39
Envoi de paquets à un mobile
Avant d'envoyer un paquet, un nœud recherche une
association dans son cache.
Si elle existe:
Adresse destination = adresse temporaire du mobile
En tête de routage contenant l'adresse du mobile dans son réseau
mère.
Le mobile échange l'adresse de destination et l'adresse de routage
puis délivre le paquet aux couches supérieures. Le paquet est ainsi
adressé à l'adresse du mobile dans son réseau mère.
Sous options:
0 Pad1
1 PadN
40
Transition IPv4 Æ Ipv6
41
Double pile IPv4/IPv6
Les systèmes d'exploitation modernes
supportent une double pile IPv4/IPv6
(dual stack).
42
Tunnels IPv6 dans IPv4
UN tunnel est créé à la frontière de deux zones
IPv6 par des routeurs connectés entre eux par une
adresse IPv4:
Tunnel 6over4
Ce type de tunnel permet à des machines IPv6 qui ne sont pas
directement connectées à un routeur IPv6 d'utiliser néanmoins ce
protocole.
43
Tunnel 6to4
Le paquet IPv6 est encapsulé dans un paquet IPv4 (type
41).
#!/bin/sh
modprobe ipv6
ifconfig eth0 add 2001:0660:7105::1/48
ip tunnel add tunnelIPv6 mode sit ttl 64 remote 195.220.17.254 local 193.49.200.2
ifconfig tunnelIPv6 add fec0:0:0:1::2/64
ip link set dev tunnelIPv6 up
ip -6 route add 2000::/3 dev tunnelIPv6 metric 1
44
ISATAP
Intra-Site Automatic Tunnel Addressing Protocol.
Schéma ISATAP
45
Teredo
Tunnel automatique de Microsoft (RFC 4380).
Les paquets IPv6 sont envoyés dans des paquets UDP (port
3544) et possède le préfixe 2001::/32 (anciennement
3ffe:831f::/32).
Composition de TEREDO
Teredo est composé de trois composants:
46
Architecture TEREDO
http://www.ipv6tf.org/using/connectivity/teredo.php
Intérêt de TEREDO
On peut utiliser TEREDO si:
on souhaite un accès IPv6
on ne dispose que d'un accès IPv4
les machines sont derrière un NAT
47
Tunnel Broker
Création d'un tunnel chez un ISP.
Exemple:
Eléments de
Programmation
48
Programmation IPv6
Pas de changement pour les langages qui utilisent des
couches d'abstraction et qui ne référencent pas des
adresses IPv4 directement (exemple: java).
Java et IPv6
Support de l'IPv6 par java depuis la
version 1.4 sous Linux et Solaris et depuis
la version 1.5.0 pour Windows.
Programmation "transparente".
49
Java: Client/Serveur IPv4/IPv6
ServerSocket server = void client(String name)
new ServerSocket(8080); {
Socket s; Socket s = new Socket(name,
while (true) 8080);
{ InputStream in =
s = server.accept(); s.getInputStream();
doClientStuff(s) //…
} in.close () ;
}
java.net.Inet4Address java.net.Inet6Address
try {
InetAddress www = InetAddress.getByName ("www.ensicaen.fr") ;
InetAddress www6 = InetAddress.getByName ("www6.ensicaen.fr") ;
System.out.println (www + " " + www6) ;
if (www6 instanceof Inet6Address)
{
Inet6Address addr = (Inet6Address) www6 ;
System.out.println (addr.isLinkLocalAddress ()) ;
}
} catch (UnknownHostException e) {}
50
Langage C et IPv6
Les sockets BSD ont été étendues à l'IPv6 (RFC 2553):
Nouveau protocole: PF_INET6
Nouvelle famille: AF_INET6
Nouvelle structure d'adresse: (struct sockaddr_storage)
Programmation
L'adresse wildcard:
struct in6_addr any_addr = IN6ADDR_ANY_INIT;
L'adresse de bouclage:
struct in6_addr loopback_addr = IN6ADDR_LOOPBACK_INIT;
51
Conversion nom <-> adresse
Equivalent de gethostbyname (), gethostbyaddr (), getservbyname (), getservbyport ():
#include <sys/socket.h>
#include <netdb.h>
int getaddrinfo (
const char *nodename,
const char *servname,
const struct addrinfo *hints,
struct addrinfo **res /* Liste chainee d'adresses IPv4 & IPv6 */
);
void freeaddrinfo(struct addrinfo *res);
const char *gai_strerror(int errcode);
struct addrinfo {
int ai_flags; /* AI_PASSIVE, AI_CANONNAME,AI_NUMERICHOST ... */
int ai_family; /* PF_xxx ou PF_UNSPEC*/
int ai_socktype; /* SOCK_xxx */
int ai_protocol; /* 0 ou IPPROTO_xxx pour IPv4 et IPv6 */
size_t ai_addrlen; /* la taille de l'adresse binaire ai_addr */
char *ai_canonname; /* le nom complètement qualifié */
struct sockaddr *ai_addr; /* l'adresse binaire */
struct addrinfo *ai_next; /* structure suivante de la liste chaînée */
};
et non plus
socket (AF_INET,SOCK_XXXX,0)
gethostbyname (…)
connect (…)
52
Exemple
struct addrinfo *res ;
struct addrinfo hints = {
0,
PF_UNSPEC,
SOCK_STREAM,
0,
0,
NULL,
NULL,
NULL
};
#include <sys/socket.h>
#include <netdb.h>
int getnameinfo (
const struct sockaddr *sa,
socklen_t salen,
char *host,
size_t hostlen, /* Taille réservée (NI_MAXHOST = 1025) */
char *serv,
size_t servlen, /* Taille réservée (NI_MAXSERV = 32) */
int flags /* NI_NUMERICHOST, NI_NUMERICSERV, NI_NDGRAM… */
);
53
Conversion numérique d'adresses
Equivalent de inet_addr() et inet_ntoa ():
#include <sys/socket.h>
#include <arpa/inet.h>
int inet_pton(
int af, /* AF_INET ou AF_INET6 */
const char *src, /* l'adresse (chaine de caract.) à traiter */
void *dst /* le tampon où est rangé le résultat */
);
char * inet_ntop(
int af, /* AF_INET ou AF_INET6 */
const void *src, /* l'adresse binaire à traiter */
char *dst, /* le tampon où est rangé le résultat */
size_t size /* INET_ADDRSTRLEN=16 ou
INET6_ADDRSTRLEN=46 */
);
Quelques références
IPv6 théorie et pratique,
Gisèle Cizault, O'Reilly
http://www.point6.net
http://groupe.g6.asso.fr
http://www.6diss.org
http://www.kame.net
http://www.ipv6.org
http://www.6bone.net
54