Vous êtes sur la page 1sur 54
Présentation IPv6 Patrick Ducrot - Ecole Nationale Supérieure d'Ingénieurs 1 de Caen - Plan du
Présentation
IPv6
Patrick Ducrot
-
Ecole Nationale Supérieure d'Ingénieurs
1
de Caen -
Plan du document
Les limitation d'IPv4………………………………………………………………………………………………………………………………
3
IPv6: un nouveau protocole…………………………………………………………………………………………………………………
8
En tête et extensions IPv6………………………………………………………………………………………………………………… 12
L'adressage IPv6…………………………………………………………………………………………………………………………………………… 31
Quelques services de base…………………………………………………………………………………………………………………… 48
Configuration et commandes………………………………………………………………………………………………………………… 65
La mobilité………………………………………………………………………………………………………………………………………………………… 70
Transition IPv4-IPv6………………………………………………………………………………………………………………………………… 81
Eléments de programmation…………………………………………………………………………………………………………………… 96
-
Ecole Nationale Supérieure d'Ingénieurs
2
de Caen -

Les limitations d'IPv4

Les limitations d'IPv4 - Ecole Nationale Supérieure d'Ingénieurs de Caen - 3 Les limitations d'IPv4

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

3

Les limitations d'IPv4

Adressage sur 32 bits (2^32 = 4,29 milliards d'adresses).

Stock d'adresses très entamé.

Répartition très inégale:

la zone américaine est très favorisée (environ 74%) par rapport à l'Europe (environ 17%) et l'Asie (environ 9%) pourtant de plus en plus active (Chine, Inde, …). Plus de 50% des adresses sont antérieures aux RIR (Regional Internet Registry) et donc non contrôlées.

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

4

Les différents RIR

Les différents RIR afrinic|ipv4|994 afrinic|ipv6|10 apnic|ipv4|12208 apnic|ipv6|427 arin|ipv4|36571 arin|ipv6|240

afrinic|ipv4|994

afrinic|ipv6|10

apnic|ipv4|12208

apnic|ipv6|427

arin|ipv4|36571

arin|ipv6|240

lacnic|ipv4|1633

lacnic|ipv6|54

ripencc|ipv4|20594

ripencc|ipv6|692

chiffres mars 2006 (source: serveur ftp des RIR)

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

5

Les limitations d'IPv4

La pénurie d'adresses a été retardée par:

L'utilisation du NAT mais brise la philosophie de bout en bout (end to end). L'utilisation de DHCP.

Explosion des tables de routage malgré le routage CIDR.

IPv4 n'est pas un protocole adapté pour:

l'auto configuration (plug and play). la mobilité. la gestion de la qualité de service (QoS). la gestion de la sécurité en natif. disposer d'un "always-on environment".

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

6

L'explosion des besoins L'arrivée des services mobiles (gprs, edge, umts). L'électronique connectée.
L'explosion des besoins
L'arrivée des services mobiles (gprs, edge,
umts).
L'électronique connectée.
Les véhicules communicants.
La domotique.
-
Ecole Nationale Supérieure d'Ingénieurs
7
de Caen -
IPv6: un nouveau
protocole
-
Ecole Nationale Supérieure d'Ingénieurs
8
de Caen -

L'apparition d'IPv6

 

Début des travaux au milieu des années 1980 pour améliorer IP: IPng.

IPv6 retenu comme nouveau standard (RFC 1752) et adopté vers la fin des années 1990.

Type Ethernet 86DD (IPv4 = 0800).

-

Ecole Nationale Supérieure d'Ingénieurs

9

de Caen -

Les apports d'IPv6

 

Adresses sur 128 bits (2^128 = 3,4x10^38).

Adressage hiérarchique pour optimiser le routage.

En tête plus simple (8 champs au lieu de 13 en IPv4) et de taille fixe pour améliorer les performances et intégrer de nouvelles fonctionnalités par un mécanisme de liste chaînée d'extensions.

Mécanisme d'auto configuration.

 

Couche IPSec intégrée au protocole.

extension du multicast et abandon du broadcast.

 

Gestion de la mobilité.

-

Ecole Nationale Supérieure d'Ingénieurs

10

de Caen -

Adressage hiérarchique et sécurité - Ecole Nationale Supérieure d'Ingénieurs 11 de Caen -
Adressage hiérarchique et sécurité
- Ecole Nationale Supérieure d'Ingénieurs
11
de Caen -
En tête et extensions IPv6 - Ecole Nationale Supérieure d'Ingénieurs 12 de Caen -
En tête et extensions
IPv6
-
Ecole Nationale Supérieure d'Ingénieurs
12
de Caen -

Entêtes IPv4 vs IPv6

Entêtes IPv4 vs IPv6 champs IPv4 supprimés en IPv6 champs IPv4 maintenus (mais renommés) en IPv6

champs IPv4 supprimés en IPv6Entêtes IPv4 vs IPv6 champs IPv4 maintenus (mais renommés) en IPv6 - Ecole Nationale Supérieure d'Ingénieurs

champs IPv4 maintenus (mais renommés) en IPv6 (mais renommés) en IPv6

en IPv6 champs IPv4 maintenus (mais renommés) en IPv6 - Ecole Nationale Supérieure d'Ingénieurs de Caen

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

13

En tête IPv6 Traffic class Type of service IPv4 Payload length Total length IPv4 Hop
En tête IPv6
Traffic class
Type of service IPv4
Payload length
Total length IPv4
Hop limit
Time to live IPv4
Next Header
Protocol IPv4
Flow label
Nouveau champ: valeur pouvant être
attribuée par l'expéditeur. Le triplet
(expéditeur, destinataire, étiquette de
flux) peut faciliter le routage.
-
Ecole Nationale Supérieure d'Ingénieurs
14
de Caen -

En têtes d'extension

En têtes d'extension exemples: - Ecole Nationale Supérieure d'Ingénieurs de Caen - 15 Valeurs du champ

exemples:

En têtes d'extension exemples: - Ecole Nationale Supérieure d'Ingénieurs de Caen - 15 Valeurs du champ

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

15

Valeurs du champ "next header" Valeur Extension 0 proche en proche 43 routage Valeur Protocole
Valeurs du champ "next header"
Valeur
Extension
0
proche en proche
43
routage
Valeur
Protocole
44
fragmentation
6
TCP
50
confidentialité
17
UDP
51
authentification
41
IPv6
59
fin des en têtes
58
ICMPv6
60
destination
135
mobilité IPv6
-
Ecole Nationale Supérieure d'Ingénieurs
16
de Caen -
Ordre des en têtes d'extension traité par tous les routeurs traité par les routeurs listés
Ordre des en têtes d'extension
traité par tous les routeurs
traité par les routeurs listés dans l'extension "routing"
liste de routeurs à traverser
exécuté par le destinataire
exécuté après le réassemblage du paquet
chiffrement/déchiffrement de l'information
exécuté uniquement par le destinataire
-
Ecole Nationale Supérieure d'Ingénieurs
17
de Caen -

Type Length V alue

Les extensions "hop by hop" et "destination" transportent un nombre variable de valeurs (TLV). Format d'un TLV:

Option type

Option Data Length

Option Data

Option type: 8 bits, nature de l'option.

Valeurs des 2 bits de poids fort:

00

01

10

saute cette option et continue à parcourir l'entête jette le paquet jette le paquet, et retourne un message ICMP d'erreur jette le paquet, et retourne un message ICMP d'erreur si l'adresse destination n'était pas une adresse multicast

11

Le 3ème bit indique que le routeur peut modifier le contenu de l'option (si 1) ou non (si 0).

Option data length: 8 bits, longueur de la zone donnée. Option data: longueur variable, données.

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

18

Padding (bourrage)

Une option de bourrage peut être utilisée pour aligner une extension sur un multiple de 8 octets.

Deux options de padding:

Pad1

0
0

PadN

1

length

data

Exemple:"0x01 0x03 0x00 0x00 0x00".

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

19

Extension "hop by hop"

next header

length

options

Options: 1 ou plusieurs TLV avec padding

Pad1

PadN

Jumbogramme (194,0xc2) RFC 2675:

Option utilisée quand la taille du paquet IPv6 est supérieure à 65535. Dans ce cas, le "payload length" de l'entête IPv6 est à 0, et la partie "option" de l'extension est la longueur du paquet IPv6 codée sur 32 bits.

Router alert (5) RFC 2711:

Si cette option est utilisée, chaque routeur (mais pas la destination) va analyser le paquet. Si la valeur de l'extension vaut:

0: le datagramme contient un message "Multicast Listener Discovery"

1: le datagramme contient un message "ReSerVation Protocol" 2: le datagramme contient un message "Active Networks" 3-65535: réservé pour des usages futurs par le IANA

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

20

 

Extension "destination"

Même format que l'extension "hop by hop".

Cette extension est interprétée par tous les relais traversés si elle suit l'option "hop by hop" ou uniquement par la destination si elle est située après l'extension de sécurité.

Option utilisée pour Pad1 et PadN et la mobilité.

 

-

Ecole Nationale Supérieure d'Ingénieurs

21

 

de Caen -

 

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.

Cette extension permet d'influer sur le choix de la route.

Seul le routage par la source (type=0) est supporté.

Seul le routage libéral (loose) est supporté: un routeur peut utiliser sa table de routage pour atteindre le prochain relais spécifié.

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 -

Extension "fragmentation" en tête suivant réservé offset de fragmentation Rés P
Extension "fragmentation" en tête suivant réservé offset de fragmentation Rés P
Extension "fragmentation" en tête suivant réservé offset de fragmentation Rés P
Extension "fragmentation" en tête suivant réservé offset de fragmentation Rés P
Extension "fragmentation" en tête suivant réservé offset de fragmentation Rés P

Extension "fragmentation"

en tête suivant

réservé

offset de fragmentation

Rés

P

suivant réservé offset de fragmentation Rés P Identification En tête suivant: 8 bits Réservé: 8
suivant réservé offset de fragmentation Rés P Identification En tête suivant: 8 bits Réservé: 8
suivant réservé offset de fragmentation Rés P Identification En tête suivant: 8 bits Réservé: 8
suivant réservé offset de fragmentation Rés P Identification En tête suivant: 8 bits Réservé: 8
suivant réservé offset de fragmentation Rés P Identification En tête suivant: 8 bits Réservé: 8
suivant réservé offset de fragmentation Rés P Identification En tête suivant: 8 bits Réservé: 8
suivant réservé offset de fragmentation Rés P Identification En tête suivant: 8 bits Réservé: 8
suivant réservé offset de fragmentation Rés P Identification En tête suivant: 8 bits Réservé: 8
suivant réservé offset de fragmentation Rés P Identification En tête suivant: 8 bits Réservé: 8
suivant réservé offset de fragmentation Rés P Identification En tête suivant: 8 bits Réservé: 8
suivant réservé offset de fragmentation Rés P Identification En tête suivant: 8 bits Réservé: 8

Identification

Identification En tête suivant: 8 bits Réservé: 8 bits Offset de fragmentation: 13 bits Réservé: 2
Identification En tête suivant: 8 bits Réservé: 8 bits Offset de fragmentation: 13 bits Réservé: 2

En tête suivant: 8 bits

Réservé: 8 bits

Offset de fragmentation: 13 bits

Réservé: 2 bits

P: 1 bit (0 = dernier fragment, 1 sinon)

Identification: repérage des fragments

13 bits Réservé: 2 bits P: 1 bit (0 = dernier fragment, 1 sinon) Identification: repérage
13 bits Réservé: 2 bits P: 1 bit (0 = dernier fragment, 1 sinon) Identification: repérage
13 bits Réservé: 2 bits P: 1 bit (0 = dernier fragment, 1 sinon) Identification: repérage

La fragmentation permet d'envoyer une information plus grande que le MTU.

Seul l'expéditeur est autorisé à fragmenter.

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

23

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.

La sécurité permet de se prémunir du "sniffing", du "spoofing", des attaques "man in the middle",

La couche IPSec est intégrée à IPv6 sous la forme de deux extensions:

extension d'authentification (Authentification Header) garantissant l'authentification et l'intégrité (RFC 2402). extension de confidentialité (Encapsulating Security Payload) garantissant la confidentialité, l'intégrité et l'authentification (RFC 2406).

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

24

IPSec mode transport ou tunnel - Ecole Nationale Supérieure d'Ingénieurs 25 de Caen -
IPSec mode transport ou tunnel
- Ecole Nationale Supérieure d'Ingénieurs
25
de Caen -
IPSec mode tunnel - Ecole Nationale Supérieure d'Ingénieurs 26 de Caen -
IPSec mode tunnel
- Ecole Nationale Supérieure d'Ingénieurs
26
de Caen -
IPSec mode intermédiaire - Ecole Nationale Supérieure d'Ingénieurs 27 de Caen -
IPSec mode intermédiaire
- Ecole Nationale Supérieure d'Ingénieurs
27
de Caen -

Association de sécurité

Négociation du type de sécurité à utiliser (algorithmes et clés de chiffrement, de hachage, …).

Une SA est identifiée par un indice de paramètre de sécurité (Security Parameters Index), l'adresse IP du destinataire et le protocole de sécurité (AH ou ESP).

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).

Le SPI doit toujours être mentionné dans les extensions de sécurité.

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

28

Extension "Authentification"

Positionnement de l'extension AH:

En tête IPv6

hop by hop

routing

destination

AH

destination

données

mode transport

mode tunnel

Contenu de l'extension AH:

En tête suivant

lg extension

réservé

indice des paramètres de sécurité

numéro de séquence

données d'authentification nombre variable de mots de 32 bits

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

29

En tête IPv6 + nouvelles extensions

AH

en tête IPv6 + extensions originales

données

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 + nouvelles extensions

ESP

en tête IPv6 + extensions originales

données

queue ESP

auth. ESP

 

mode tunnel

Contenu de l'extension ESP

- Ecole Nationale Supérieure d'Ingénieurs de Caen - 30

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

30

L'adressage IPv6 - Ecole Nationale Supérieure d'Ingénieurs 31 de Caen - Format des adresses IPv6
L'adressage IPv6
-
Ecole Nationale Supérieure d'Ingénieurs
31
de Caen -
Format des adresses IPv6
Adresse sur 128 bits découpée en 8 mots de 16 bits.
Exemple :
FEDC :0000 :0000 :0210 :EDBC :0000 :6543 :210F
ou
FEDC:0:0:210:EDBC:0:6543:210F (compression des 0 d'en tête)
ou
FEDC::210:EDBC:0:6543:210F (suppression d'une succession de 0)
FEDC::210:EDBC::6543:210F est incorrect
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
-
Ecole Nationale Supérieure d'Ingénieurs
32
de Caen -

Adressage IPv6

Types d'adresse:

Unicast (un à un) Multicast (un à plusieurs) Anycast (un à un parmi plusieurs)

(un à plusieurs) Anycast (un à un parmi plusieurs) Plan d'adressage: Préfixe de routage global ID

Plan d'adressage:

Préfixe de routage global

ID Sous réseau

ID Interface

n bits

m bits

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

128-n-m bits

33

Plan d'adressage Allocation Préfixe binaire Préfixe hexa Réservé 0000 0000 ::0/128 Réservé NSAP 0000
Plan d'adressage
Allocation
Préfixe binaire
Préfixe hexa
Réservé
0000
0000
::0/128
Réservé NSAP
0000
001
0200::/7
Global Unicast
001
2000::/3
Adresse lien local
1111
1110 10
FE80::/10
Adresse site local
1111
1110 11
FEC0::/10
Adresse multicast
1111
1111
FF00::/8
-
Ecole Nationale Supérieure d'Ingénieurs
34
de Caen -

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

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

35

Adresse "lien local"

Une adresse "lien local" n'est valide que sur un lien (elle ne traverse pas les routeurs).

Tout équipement dispose automatiquement d'une adresse lien-local qui va permettre de découvrir les voisins.

Ce type d'adresse permet à 2 machines sur le même lien de communiquer et peut aussi être utilisée pour une connexion PPP ou pour les extrémités d'un tunnel.

Construction d'une adresse lien local (préfixe FE80::/64):

FE8

0

Identifiant d'Interface

10 bits

54 bits

64 bits

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

36

Construction d'un identifiant d'interface

Un identifiant d'interface est construit à partir de l'adresse physique

24 bits

 

16 bits

24 bits

u

g

constructeur

FFFE

numéro série

7 8

u (Universal) vaut 1 si l'identifiant est unique ou 0 si l'adresse a été générée par un algorithme. g (Groupe) vaut 0 si l'adresse est individuelle ou 1 si c'est une adresse de groupe (multicast).

Exemple:

adresse MAC ethernet = 00:30:48:2E:3D:7D adresse lien local: FE80::0230:48FF:FE2E:3D7D

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

37

Adresse "U nique Local A ddress"

Anciennement adresse de site local.

Une adresse ULA est routée à l'intérieur d'un périmètre donné (tel un site ou un ensemble de sites) mais pas à l'extérieur.

Préfixe d'une adresse ULA: FC00::/7

l'extérieur. Préfixe d'une adresse ULA: FC00::/7 - Ecole Nationale Supérieure d'Ingénieurs de Caen - 38

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

38

Adresse "U nique Local A ddress"

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 ULA assignée officiellement (L=0):

FC00::/8 Préfixe global attribué par une autorité. Unicité de l'adresse garantie.

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

39

Adresse Unicast

topologie publique

3 bits

13 bits

8 bits

24 bits

16 bits

64 bits

Format Prefix

FP

TLA

Réserve

NLA

SLA

Interface ID

Top Level Aggregator

Next Level Aggregator

Site Level Aggregator

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

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

40

Allocation adresse unicast le IANA délègue des blocs d'adresses IPv6 aux RIR en /23 Les
Allocation adresse unicast
le IANA délègue des blocs d'adresses IPv6 aux
RIR en /23
Les RIR délèguent aux LIR des blocs d'adresses
IPv6 en /32
Les LIR assignent des préfixes aux utilisateurs en
/48
Exemple:
RIPE NCC
RENATER TLA
ENSICAEN
2001:0600::/23
2001:0660::/32
2001:0660:7105::/48
-
Ecole Nationale Supérieure d'Ingénieurs
41
de Caen -
Adresses unicast particulières
Adresse locale (localhost):
0:0:0:0:0:0:0:1
ou ::1
Adresse non spécifiée (utilisée pendant
des processus d'initialisation):
0:0:0:0:0:0:0:0
ou
::
-
Ecole Nationale Supérieure d'Ingénieurs
42
de Caen -

Adresses Multicast

Une adresse multicast désigne un ensemble d'interfaces.

Le préfixe d'une adresse multicast est FF00::/8

Format d'une adresse multicast:

8 bits

4 bits

4 bits

112 bits

FF

flags

scope

Identifiant de groupe

flags: 3 premiers bits à 0; dernier bit à 0 indique une validité permanente (exemple: routeur) ou 1 pour une validité temporaire (exemple: visioconférence). scope: portée de la diffusion:

0: réservé

1: nœud

2: lien (FF02::/8)

3: sous-réseau

5: site

8: organisation

E: global

F: réservé

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

43

Quelques préfixes multicast

ff02::1

ff02::2

ff02::3

ff05::2

Liste complète:

Tous les nœuds du lien

Tous les routeurs du lien

Toutes les machines du lien

Tous les routeurs du site

http://www.iana.org/assignments/ipv6-multicast-addresses

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

44

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

Ces adresses peuvent être utilisées par les protocoles d'adresses dupliquées (DAD) et de découverte de voisins.

Au démarrage, un nœud IPv6 s'abonne au groupe multicast FF02::/1 et au groupe multicast sollicité FF02::1:FFxx:xxxx

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

45

Adresse Anycast

Une adresse destination de type anycast désigne une interface parmi un ensemble de machines bien défini.

Format d'une adresse anycast (RFC 2526):

Adresses de type EUI-64

64 bits

préfixe du réseau

57 bits

11111101…11

7 bits

id. anycast

Autre type d'adresses

n bits

préfixe du réseau

121 - n bits

11111….1111

7 bits

id. anycast

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

46

Exemple adresse anycast Recherche des machines "Home Agent" (utilisées dans la mobilité) au sein du
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
-
Ecole Nationale Supérieure d'Ingénieurs
47
de Caen -
Quelques services de
base
-
Ecole Nationale Supérieure d'Ingénieurs
48
de Caen -
Le protocole ICMPv6 Protocole redéfini par la RFC 2463. Il permet: gestion des erreurs test
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
-
Ecole Nationale Supérieure d'Ingénieurs
49
de Caen -
Format ICMPv6
type : nature du paquet ICMPv6
<= 127 message d'erreur
> 127
message d'information
code: cause du message ICMPv6
cheksum: somme de contrôle
-
Ecole Nationale Supérieure d'Ingénieurs
50
de Caen -
Messages d'erreur ICMPv6 1 Destination inaccessible : 0 * aucune route vers la destination 1
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
-
Ecole Nationale Supérieure d'Ingénieurs
51
de Caen -
Messages d'information ICMPv6
128 Demande d'écho
129 Réponse d'écho
-
Ecole Nationale Supérieure d'Ingénieurs
52
de Caen -

Messages de gestion de groupe multicast

130 Requête d'abonnement

 

131 Rapport d'abonnement

132 Fin d'abonnement

-

Ecole Nationale Supérieure d'Ingénieurs

53

de Caen -

Messages de découverte de voisins

133 Sollicitation du routeur

 

134 Annonce du routeur

135 Sollicitation d'un voisin

136 Annonce d'un voisin

137 Redirection

-

Ecole Nationale Supérieure d'Ingénieurs

54

de Caen -

Messages de gestion de mobilité

144 Découverte d'agent mère (requête)

145 Découverte d'agent mère (réponse)

146 Sollicitation de préfixe mobile

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

55

Quelques nouveaux protocoles

Auto Configuration

mode "stateless": l'équipement va s'efforcer de récupérer le préfixe du site pour construire son adresse (RFC 2462). mode "stateful": les informations sont envoyées par un serveur DHCP (RFC 3315).

Découverte du Maximum Transmission Unit (RFC 1981).

Découverte des voisins (RFC 2461).

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

56

 

Auto configuration "stateless"

L'équipement s'attribue une adresse "lien local".

Vérification de l'unicité de cette adresse:

 
 

Envoi d'une trame ICMPv6 "sollicitation d'un voisin" (type 135) sur l'adresse multicast ff02::1

Aucune réponse après un temps déterminé (1 seconde par défaut), l'adresse est valide. Retour d'un message ICMPv6 "annonce d'un voisin en retour d'une sollicitation (bit S)" (type 136), l'adresse est déjà utilisée.

Envoi d'une trame ICMPv6 "sollicitation d'un routeur" (type 133) sur l'adresse multicast ff02::2

Réception d'une trame ICMPv6 "annonce de routeur" (type 134), le préfixe du site est retourné.

 

-

Ecole Nationale Supérieure d'Ingénieurs

57

 

de Caen -

 

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.

Un serveur DHCP maintient une liste d'associations entre un client et les paramètres attribués.

Un client est identifié par un DUID (DHCP Unique IDentifier) généré et fonction de l'adresse de lien local (pas nécessairement unique sur 2 liens distincts) et une variable (qui peut être fonction du temps).

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.

-

Ecole Nationale Supérieure d'Ingénieurs

58

 

de Caen -

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).

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

59

Fonctionnement DNS - Ecole Nationale Supérieure d'Ingénieurs 60 de Caen -
Fonctionnement DNS
- Ecole Nationale Supérieure d'Ingénieurs
60
de Caen -
Serveur de noms Support de IPv6 par les DNS (RFC1886) Enregistrement de type AAAA pour
Serveur de noms
Support de IPv6 par les DNS (RFC1886)
Enregistrement de type AAAA pour la résolution
nom adresse (RFC 1886)
Nouveau domaine ip6.arpa pour la résolution
adresse nom (anciennement ip6.int).
-
Ecole Nationale Supérieure d'Ingénieurs
61
de Caen -
Configuration DNS
acl permit-transfer {
::ffff:192.93.101.14 ;
::ffff:193.49.200.16 ;
};
options {
version "unknown";
directory "/etc/dns";
listen-on-v6 { any;
// Pour eviter d'indiquer la version utilisee
// Emplacement des fichiers de zone
}
;
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" ;
};
-
Ecole Nationale Supérieure d'Ingénieurs
62
de Caen -
 

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

 

-

Ecole Nationale Supérieure d'Ingénieurs

63

 

de Caen -

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.

1.0.0.0.0.0.0.0.0.0.0.0.1.0.0.0

IN

PTR

routeuripv6.ecole.ensicaen.fr.

2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0

IN

PTR

ns.ensicaen.fr.

 

-

Ecole Nationale Supérieure d'Ingénieurs

64

 

de Caen -

Configuration et commandes - Ecole Nationale Supérieure d'Ingénieurs 65 de Caen - Configuration sous Linux
Configuration et
commandes
-
Ecole Nationale Supérieure d'Ingénieurs
65
de Caen -
Configuration sous Linux
Ajout d'une adresse IPv6 sur l'interface eth0:
ifconfig eth0 add 2001:660:7105:1000::10/64
Ajout d'une route
route add 2000::/3 dev eth0
Visualisation des routes:
route -A inet6 (ou route -6)
-
Ecole Nationale Supérieure d'Ingénieurs
66
de Caen -

Commandes Linux

Visualisation des routes

route -A inet6 (ou route -6)

Visualiser les voisins (équivalent du cache arp

IPv4):

ip -f inet6 neigh

Commandes de bon fonctionnement du réseau:

ping6, traceroute6, tracepath6

filtrage de paquets

ipv6tables

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

67

Configurations sous Windows

Ajout d'une adresse IPv6:

ipv6 adu 4/2001:660:7105:1000::11

Ajout d'une route

ipv6 rtu 2000::/3 4/2001:660:7105:1000::1

Configuration "conviviale"

netsh > interface ipv6

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

68

Commandes Windows Visualisation des interfaces IPv6: ipv6 if Visualisation des routes ipv6 rt Commandes de
Commandes Windows
Visualisation des interfaces IPv6:
ipv6 if
Visualisation des routes
ipv6 rt
Commandes de bon fonctionnement du réseau:
ping6 tracert6
-
Ecole Nationale Supérieure d'Ingénieurs
69
de Caen -
La mobilité
-
Ecole Nationale Supérieure d'Ingénieurs
70
de Caen -

La mobilité

Concept important notamment avec le

développement des terminaux mobiles (téléphone, pda, …).

Un mobile doit conserver la même adresse IP quel que soit le réseau auquel il est connecté afin de:

pouvoir communiquer être joignable pouvoir se déplacer sans interruption de la connexion.

Standard IETF: MIPv6 (Mobile IP)

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

71

 

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").

Le mobile doit toujours pouvoir communiquer.

Les connexions établies (au niveau 4) doivent être maintenues même si le mobile change de réseau.

L'association (adresse temporaire, adresse primaire) est envoyée à un routeur du réseau d'origine (Home Agent).

Le Home Agent doit être capable d'intercepter toutes les informations destinées au mobile et de les retransmettre dans un tunnel sur l'adresse temporaire (proxy).

Le Home Agent doit être capable de faire du "reverse tunneling" du mobile vers le correspondant.

 

-

Ecole Nationale Supérieure d'Ingénieurs

72

de Caen -

La mobilité source de l'image: http://livre.point6.net - Ecole Nationale Supérieure d'Ingénieurs 73 de Caen
La mobilité
source de l'image: http://livre.point6.net
- Ecole Nationale Supérieure d'Ingénieurs
73
de Caen -
Communication en double tunneling (1/2) - Ecole Nationale Supérieure d'Ingénieurs 74 de Caen -
Communication en double tunneling
(1/2)
- Ecole Nationale Supérieure d'Ingénieurs
74
de Caen -
Communication en double tunneling (2/2) - Ecole Nationale Supérieure d'Ingénieurs 75 de Caen -
Communication en double tunneling
(2/2)
- Ecole Nationale Supérieure d'Ingénieurs
75
de Caen -
Envoi d'un message d'association au correspondant - Ecole Nationale Supérieure d'Ingénieurs 76 de Caen -
Envoi d'un message d'association au
correspondant
- Ecole Nationale Supérieure d'Ingénieurs
76
de Caen -

Fonctionnalités nécessaires pour la mobilité

Chaque nœud IPv6 doit pouvoir mémoriser des associations ("binding cache").

Un Home Agent doit être capable de:

 

maintenir une liste d'associations de mobiles. Intercepter les paquets à destination d'un mobile distant. Encapsuler et de transférer les paquets à destination d'un mobile distant et de son correspondant. Retourner des messages "Acquittement de l'association".

Un mobile doit être capable de:

Décapsuler des paquets. Envoyer des messages "Mise à jour de l'association" et réceptionner des messages "Acquittement de l'association". Maintenir une liste de messages "Mise à jour de l'association" contenant l'adresse IPv6 du correspondant auquel ce message a été envoyé. Effectuer une découverte d'agent mère.

-

Ecole Nationale Supérieure d'Ingénieurs

77

de Caen -

 

La mobilité

Utilisation de:

L'extension "destination".

 

L'autoconfiguration "stateless"

Protocole "découverte des voisins"

Mécanismes de chiffrement et d'authentification pour sécuriser les messages "Binding Update".

-

Ecole Nationale Supérieure d'Ingénieurs

78

de Caen -

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.

Si elle n'existe pas:

Adresse destination = adresse dans le réseau mère. Interception par l'agent mère et envoi au mobile dans un tunnel. Réception du paquet par le mobile et envoi d'un message "mise à jour de l'association" vers le correspondant.

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

79

Extension "destination" pour la mobilité Options: 198 (0xC6) Mise à jour de l'association (Binding
Extension "destination" pour la mobilité
Options:
198
(0xC6)
Mise à jour de l'association (Binding Update)
7
Acquittement de l'association (Binding Acknowledgement)
8
Demande de mise à jour de l'association (Binding Request)
201
(0xC9)
Adresse principale (Home Address)
Sous options:
0
Pad1
1
PadN
2 Identificateur Unique (Unique Identifier)
3 Adresse temporaire alternative (Alternate Care of Address)
4 Données d'authentification (Authentication Data)
-
Ecole Nationale Supérieure d'Ingénieurs
80
de Caen -
Transition IPv4 Ipv6 - Ecole Nationale Supérieure d'Ingénieurs 81 de Caen - Transition IPv4 Ipv6
Transition IPv4 Ipv6
-
Ecole Nationale Supérieure d'Ingénieurs
81
de Caen -
Transition IPv4 Ipv6
Excepté les limitations techniques d'IPv4,le passage à IPv6
n'est pas encore considéré comme indispensable.
Cependant, tout investissement lourd doit être pensé avec
cette perspective afin d'être pérenne.
Peu d'offres commerciales actuellement au niveau des
Fournisseurs d'Accès Internet:
nerim
wanadoo (en test)
http://www.nerim.fr
http://www.ipv6.wanadoo.fr
Pendant la phase de transition, IPv6 doit cohabiter avec
IPv4 (pas de jour J pour basculer en IPv6).
-
Ecole Nationale Supérieure d'Ingénieurs
82
de Caen -

Double pile IPv4/IPv6

Les systèmes d'exploitation modernes supportent une double pile IPv4/IPv6 (dual stack).

Les machines possèdent une adresse IPv6

et une adresse IPv4 mappée (::FF:xx:xx:xx:xx).

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

83

Renater: architecture IPv6 - Ecole Nationale Supérieure d'Ingénieurs 84 de Caen -
Renater: architecture IPv6
- Ecole Nationale Supérieure d'Ingénieurs
84
de Caen -

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:

des routeurs co nnectés entre eux par une adresse IPv4: - Ecole Nationale Supérieure d'Ingénieurs de

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

85

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.

Les mécanismes d'auto configuration (voisins, routeurs) seront encapsulés dans des messages multicast IPv4 (exemple:

239.XX.0.2 pour atteindre tous les routeurs IPv4 supportant ce mécanisme).

atteindre tous les routeurs IPv4 supportant ce mécanisme). - Ecole Nationale Supérieure d'Ingénieurs de Caen -

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

86

Tunnel 6to4 Le paquet IPv6 est encapsulé dans un paquet IPv4 (type 41). 6to4 attribue
Tunnel 6to4
Le paquet IPv6 est encapsulé dans un paquet IPv4 (type
41).
6to4 attribue automatiquement une adresses IPv6 dans le
réseau 2002::/16 et qui est fabriquée directement à partir
de l'IPv4 publique.
-
Ecole Nationale Supérieure d'Ingénieurs
87
de Caen -
Exemple de tunnel 6to4
Machine Linux connectée à un tunnel
6to4 au réseau Vikman:
#!/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
-
Ecole Nationale Supérieure d'Ingénieurs
88
de Caen -

ISATAP

Intra-Site Automatic Tunnel Addressing Protocol.

Fournit la connectivité IPv6 au dessus des intranets

IPv4.

IPv6 est encapsulé dans IPv4.

Les adresses ISATAP sont de la forme

XXXX::0:5EFE:xx.xx.xx.xx

où XXXX représente le préfixe (FE80 en local ou obtenu auprès d'un routeur) xx.xx.xx.xx représente l'adresse IPv4

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

89

Schéma ISATAP - Ecole Nationale Supérieure d'Ingénieurs 90 de Caen -
Schéma ISATAP
- Ecole Nationale Supérieure d'Ingénieurs
90
de Caen -

Teredo

Tunnel automatique de Microsoft (RFC 4380).

Teredo permet à un hôte relié à un réseau IPv4 derrière un nat IPv4 de communiquer en IPv6, sans routeur particulier sur son LAN.

Teredo est disponible dans Windows XP SP2, SP1 avec le pack Advanced Server, Windows Server 2003, Windows Vista et Windows Server Longhorn.

Les paquets IPv6 sont envoyés dans des paquets UDP (port 3544) et possède le préfixe 2001::/32 (anciennement

3ffe:831f::/32).

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

91

Composition de TEREDO

Teredo est composé de trois composants:

Client TEREDO: un nœud qui dispose d'un accès IPv4 et souhaite obtenir un accès IPv6.

Serveur TEREDO: un nœud qui a un accès Internet à travers une adresse IPv4 publique et qui va fournir une connectivité IPv6 aux clients TEREDO.

Relais TEREDO: un routeur IPv6 qui reçoit et retransmet le trafic IPv6 au client TEREDO.

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

92

Architecture TEREDO http://www.ipv6tf.org/using/connectivity/teredo.php - Ecole Nationale Supérieure d'Ingénieurs
Architecture TEREDO
http://www.ipv6tf.org/using/connectivity/teredo.php
- Ecole Nationale Supérieure d'Ingénieurs
93
de Caen -

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

On n'utilise pas TEREDO quand:

On dispose d'une connexion IPv6 native. on dispose d'une adresse IPv4 publique (on utilise plutôt 6to4).

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

94

Tunnel Broker Création d'un tunnel chez un ISP. Exemple: - Ecole Nationale Supérieure d'Ingénieurs 95
Tunnel Broker
Création d'un tunnel chez un ISP.
Exemple:
-
Ecole Nationale Supérieure d'Ingénieurs
95
de Caen -
Eléments de
Programmation
-
Ecole Nationale Supérieure d'Ingénieurs
96
de Caen -

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).

Pour les autres, les changements sont minimisés.

Les API restent identiques:

socket () bind () accept ()

utilise PF_INET6

connect ()

recvfrom ()

sendto ()

Il faut désormais programmer "compatible IPv6".

et "V6ifier" les applications existantes (sous Windows, on peut s'aider de checkv4.exe).

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

97

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".

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

98

Java: Client/Serveur IPv4/IPv6 ServerSocket server = new ServerSocket(8080); void client(String name) {
Java: Client/Serveur IPv4/IPv6 ServerSocket server = new ServerSocket(8080); void client(String name) {

Java: Client/Serveur IPv4/IPv6

ServerSocket server = new ServerSocket(8080);

void client(String name)

{

Java: Client/Serveur IPv4/IPv6 ServerSocket server = new ServerSocket(8080); void client(String name) {
Java: Client/Serveur IPv4/IPv6 ServerSocket server = new ServerSocket(8080); void client(String name) { }

}

-En cas d'adresses multiples, IPv4 est privilégié. -On peut choisir le protocole grâce aux propriétés:

java.net.preferIPv4Stack=true

(false par défaut)

java.net.preferIPv6Addresses=true

(false par défaut)

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

99

Socket s;

while (true)

{

s = server.accept(); doClientStuff(s)

}

while (true) { s = server.accept(); doClientStuff(s) } Socket s = new Socket(name, 8080); InputStream in

Socket s = new Socket(name,

8080);

InputStream in = s.getInputStream();

//… in.close () ;

Java et la gestion des adresses java.net.InetAddress java.net.Inet4Address java.net.Inet6Address try { InetAddress
Java et la gestion des adresses
java.net.InetAddress
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) {}

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

100

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)

struct sockaddr_in6 struct in6_addr { { SOCKADDR_COMMON (sin6_); union in_port_t sin6_port; /* Transport layer
struct sockaddr_in6
struct in6_addr
{
{
SOCKADDR_COMMON
(sin6_);
union
in_port_t sin6_port;
/* Transport layer port */
{
uint32_t sin6_flowinfo;
/* IPv6 flow information */
uint8_t u6_addr8[16];
struct in6_addr sin6_addr; /* IPv6 address */
uint16_t u6_addr16[8];
sin6_addr; /* IPv6 address */ uint16_t u6_addr16[8]; uint32_t sin6_scope_id; }; /* IPv6 scope-id */
sin6_addr; /* IPv6 address */ uint16_t u6_addr16[8]; uint32_t sin6_scope_id; }; /* IPv6 scope-id */

uint32_t sin6_scope_id;

};

/* IPv6 scope-id */

uint32_t u6_addr32[4];

} in6_u;

#define s6_addr

in6_u.u6_addr8

#define s6_addr16

in6_u.u6_addr16

#define s6_addr32

in6_u.u6_addr32

};

de Caen -

101

- Ecole Nationale Supérieure d'Ingénieurs

in6_u.u6_addr16 #define s6_addr32 in6_u.u6_addr32 }; de Caen - 101 - Ecole Nationale Supérieure d'Ingénieurs

Programmation

L'adresse wildcard:

struct in6_addr any_addr = IN6ADDR_ANY_INIT;

L'adresse de bouclage:

struct in6_addr loopback_addr = IN6ADDR_LOOPBACK_INIT;

- Ecole Nationale Supérieure d'Ingénieurs

de Caen -

102

Conversion nom <-> adresse Equivalent de gethostbyname (), gethostbyaddr (), getservbyname (), getservbyport ():
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;
*/
int ai_family;
int ai_socktype;
int ai_protocol;
size_t ai_addrlen;
char *ai_canonname;
/* AI_PASSIVE, AI_CANONNAME,AI_NUMERICHOST
/* PF_xxx ou PF_UNSPEC*/
/* SOCK_xxx */
/* 0 ou IPPROTO_xxx pour IPv4 et IPv6 */
/* la taille de l'adresse binaire ai_addr */
/* le nom complètement qualifié */
struct sockaddr *ai_addr; /* l'adresse binaire */
struct addrinfo *ai_next;
/* structure suivante de la liste chaînée */
};
-
Ecole Nationale Supérieure d'Ingénieurs
103
de Caen -
Résolution des noms
On résout le nom avant la création de la
socket:
getaddrinfo (…)
socket (res->ai_family,res->ai_socktype,res->ai_protocol)
connect (…)
et non plus
socket (AF_INET,SOCK_XXXX,0)
gethostbyname (…)
connect (…)
-
Ecole Nationale Supérieure d'Ingénieurs
104
de Caen -
Exemple struct addrinfo *res ; struct addrinfo hints = { 0, PF_UNSPEC, SOCK_STREAM, 0, 0,
Exemple
struct addrinfo *res ;
struct addrinfo hints = {
0,
PF_UNSPEC,
SOCK_STREAM,
0,
0,
NULL,
NULL,
NULL
}
;
if ( (status = getaddrinfo ("www6.ensicaen.fr","http",&hints,&res)) != 0)
{
fprintf (stderr,"getaddrinfo: %s\n",gai_strerror (status)) ;
return -1 ;
}
sock = socket (res->ai_family,res->ai_socktype,res->ai_protocol) ;
if (sock == -1)
{
freeaddrinfo (res) ;
perror ("socket") ;
return -1 ;
}
-
Ecole Nationale Supérieure d'Ingénieurs
105
de Caen -
Conversion nom <-> adresse
Equivalent de gethostbyaddr () et getservbyport ():
#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… */
);
-
Ecole Nationale Supérieure d'Ingénieurs
106
de Caen -
Conversion numérique d'adresses Equivalent de inet_addr() et inet_ntoa (): #include <sys/socket.h>
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 */
)
;
-
Ecole Nationale Supérieure d'Ingénieurs
107
de Caen -
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
-
Ecole Nationale Supérieure d'Ingénieurs
108
de Caen -