1 IPv6&4 Une Architecture Unifiée pour la Coexistence IPv4-IPv6 Rémi Després...
-
Upload
ambre-dumont -
Category
Documents
-
view
105 -
download
0
Embed Size (px)
Transcript of 1 IPv6&4 Une Architecture Unifiée pour la Coexistence IPv4-IPv6 Rémi Després...

RD-IPTECHRD-IPTECH 1
IPv6&4 Une Architecture Unifiée pour la Coexistence IPv4-IPv6
Rémi Després ([email protected])
Avec la participation de l'ENST-B
Mettre en application au mieux l'apport d'IPv6 "adresses globales pour tous les équipements"
dans un monde resté en partie IPv4
Présentation à l'université de Caen le 24 février 2005

22005-02-24
Le contexte: IPv4 est devenu IPv4+NAT !
v4 v4
@4@4
A B
P@4P@4
v4 v4
@4L@4L
A B
@4@4
v4
@4
P@4
@4 @4
DNS : A -> a@ ; B -> b@ DNS : C -> c@
C
X
NAT NAT
• Tous les hôtes peuvent être atteints ( adresse dans le DNS)
• La plupart des hôtes ne peuvent pas être atteints (pas d'adresse dans le DNS)
• La traversée des NAT limite les applications qui restent atteignables
X

32005-02-24
Retour à la normale avec tout IPv6
v6 v6
@4@6
A B
P@6P@6
@6
DNS : A -> a@ ; B -> b@
Tous les hôtes peuvent être atteints à une adresse IPv6 trouvée dans le DNS
Mais futur très lointain !

42005-02-24
Le court terme: aménager la transition
Backbone IPv4 Backbone IPv6
ROUTEURS DE FAI
ROUTEURS DE SITE
HOTES
SITE
ROUTEURS CE
ROUTEURS PE
ROUTEURS BE
FAI
APPLICATIONS
• Avoir des entités v6&4 entre les équipements v4 et v6
• Passer en v6 les entités dont tous les voisins sont v6&4 ou v6
• Choisir avec soin les fonctions des équipements v6&4
• Nombreuses entités indépendantes• Incompatibilité entre voisins v4 et v6• Impossibilité de migration "grand soir"

52005-02-24
Les fonctions des entités v6&4 Conversions v4 -> v6 et v6 -> v4 (6C4 et 4C6) - idéales mais rarement possibles
Changement de format entre v4 et v6
Pas de mémoire d'état de connexion
Applicable seulement là où les adresses sont convertibles entre v4 et v6 en fonction du seul contexte de l'entité qui convertit.
Traductions v6 -> v4 (6T4) - Utiles en dernier ressort
Changement de format entre v4 et v6
L'adresse v6 et le cas échéant le port associé sont traduits, avec mémoire d'état de connexion (variante de NAT-PT dite NAT-6to4)
Encapsulations v6 / v4 - Pour la traversée de zones v4 par des connexions v6
Le paquet v6 est précédé d'un en-tête d'encapsulation de type v4
Pas de mémoire d'état si les adresses v4 sont déductibles des adresses v6 en fonction du seul contexte de l'entité qui convertit.
Plusieurs formats selon les besoins
• Le plus immédiat, avec protocole 41 (6E4)
• Celui qui respecte les filtres sur numéros de port des firewalls v4 (6EF4)
Initialisation automatique pour les stations – Nécessaire pour égaler les solutions classiques v4
Déterminer si v4 et/ou v6 est supporté nativement à l'interface (essayer en parallèle)
Obtenir les adresses v4 et v6 applicables localement (DHCPv4 et RS-RA de NDv6)
Si v6 doit être encapsulé dans v4, déterminer selon quel format (essayer en parallèle les divers formats)

62005-02-24
Les apports spécifiques d'IPv6&4 (1)
v6 v4
@v4L
Les hôtes IPv4 à adresse IPv4
locale (espace privé) sont
appelables en IPv6
NAT-6to4 à l'entrée du site (sur
place ou chez l'ISP)
v6 v6&4
FW4
Les filtres des firewalls IPv4 sur
numéros de ports s'appliquent au
trafic IPv6
Encapsulation 6EF4 chez l'ISP (et
dans la station v6&4)
v6&4
v6&4

72005-02-24
ISP v6
IPv4 global Des stations de sites sans adresse v4
globale peuvent accéder aux serveurs
IPv4 à adresse IPv4 globale.
Traduction 6T4 entre le réseau v6 de
l'ISP et le réseau v4 global
v6&4
v4
v6&4
v4v6&4
v4 v6&4 v6
@v4 et @v6 fixes
Les apports spécifiques d'IPv6&4 (2)
IPv6 natif
Les adresses des stations mixtes
v6&4 sont indépendantes de ce
que le routage local soit évolutif
de v4 à v6&4 et/ou à v6
v6
v6&4
v6&4
Site privé
Évolution du routage

82005-02-24
Le projet de démonstrateur de l'ENST-B
BackboneIPv4
BackboneIPv6
v6
Relais 6to4
v4 v4 v6&4
v6&4
v4
v6v4
v4 v6
v6
2002:
2002:660:7301:
2002:660:7301:77:
FWv4 sans NAT
v6&4
2002:660:7301:88:
-X.X.X.X
2002:660:7301:77:1::2192.168..2
2002:660:7301:77::3192.168..3
2002:660:7301:77::110..1
Y.Y.Y.Y.Y.Y.Y.Y -

92005-02-24
v6
v4
Aiguillage IPv6&4
L6
6C4, 6E4, 6EF4, 6T4
L6
4C6
L4
4C6L4
InterfaceDriver
Pile v6
6E4, 6EF4, 6T4
v6
v4Pile v4
Architecture possible d'un aiguillage IPv6&4

102005-02-24
ENCAPSULATION HEADER GENERAL FORMAT
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-------+-------+---------------+-------------------------------+ | IP | IHL |Type of service| Total Length | \ |Version| = 5 | = IPv6 | = adjusted from IPv6 Length | | | = 4 | | Traffic class | | | +-------+-------+---------------+-+-+-+-------------------------+ | | Identification | |D| | Fragment Offset = (if | | |.+.............................| |F|M| IPv6 frag. Offset ≠ 0, | | |M| if MF = 1 or FO ≠ 0, then |0|=|F| then adjusted from it, | | |F| bits-17-31 of IPv6 Ident. | |1| | else 0) | | |D| else incremented at each pkt| | | | | | IPv4 header +-+-------------+---------------+-+-+-+-------------------------+ | |TTL, set to the| Protocol = | Header Checksum = | | |IPv6 hop count | idem IPv6 | computed as usual | | +---------------+---------------+-------------------------------+ | | Source Address = | | | locally derived from the IPv6 Source address | | +---------------------------------------------------------------+ | | Destination Address = | | | locally derived from the IPv6 Destination address | / +---------------------------------------------------------------+ . Different for TCP packets, for UDP or ICMP first fragments, . \ Pseudo . and for UDP or ICMP continuation fragments (see below) . / Header +---------------------------------------------------------------+
MFD = if the datagram is multi-fragment, then 1, otherwise 0
MF = if the IPv6 has a fragmentation extension, then its bit M, otherwise = 0
The encapsulated IPv6 packet immediately follows this encapsulation header

112005-02-24
PSEUDO HEADER FOR A TCP PACKET
1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-------------------------------+-------------------------------+ | Source Port = idem IPv6 | Destination Port = idem IPv6 | +-------------------------------+-------------------------------+ | Sequence Number = idem IPv6 (SN) | +---------------------------------------------------------------+ | Acknowledgement Number = idem IPv6 | +-------+-----------+-----------+-------------------------------+ | Data | Reserved | Flags | Window | | Offset| = 0 (as |= idem IPv6| = idem IPv6 | | = 7 | in IPv6) | | | +-------+-----------+-----------+-------------------------------+ | TCP Checksum | Urgent Pointer = 0 | +---------------+---------------+-------------------------------+ | Option kind 1|Option length 1| C1 = O | | = 255 | = 7 | | +---------------+---------------+---------------+---------------+ | C2 = 0 | Option Kind 2 | | | = 0 | +-----------------------------------------------+---------------+ Checksum = that of IPv6 TCP plus the 1's complement of added fields Option length = 7 for the encapsulation header to be multiple of 64 bits

122005-02-24
PSEUDO HEADER FOR A UDP FIRST FRAGMENT 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-------------------------------+-------------------------------+ | Source Port = idem IPv6 | Destination Port = idem IPv6 | +-------------------------------+-------------------------------+ | Length | Checksum = 0 | +-------------------------------+-+-----------------------------+ | C3 = 0xFFFFFFFF | +-------------------------------+-+-----------------------------+ | Checksum Adjuster 1 |C| Truncated IPv4 Ident. 2 | | (CkA-2) |4| (TI4-2) | +-------------------------------+-+-----------------------------+
Length = UDPL6 + HL6 + 16 + (HL6 + 8) x [UDPL6 ÷ (1280 - L6) ], WHERE:
o UDPL6 = IPv6 UDP length
o HL6 = IPv6 header length, extensions included
o 16 = length of the pseudo header
o 8 = length of the IPv6 UDP header
o [UDPL6 ÷ (1280 - L6) ] is the number of continuation fragments
o 1280 = the length of each packet but the last one in a multi-packet datagram
CkA-2 = so that the computed IPv4 layer-4 checksum be 0
C4 = 1
TI4-2 = Bits 1-15 of the IPv4 Identification

132005-02-24
PSEUDO HEADER FOR AN ICMP FIRST FRAGMENT
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +---------------+---------------+-------------------------------+ | Type | Code = 0 | Checksum = 0 | +---------------+---------------+-------------------------------+ | Next Word = idem IPv6 (type dependent) | +---------------------------------------------------------------+ | C5 = 0xFFFFFFFF | +-------------------------------+-------------------------------+ | Checksum Adjuster 3 | IPv4 Identification Copy 1 | | (CkA-3) | (I4C-1) | +-------------------------------+-------------------------------+ Type = if IPv6 ICMP type < 128, then 3 (unreachable destination) if IPv6 ICMP type = 128, then 8 (echo request) if IPv6 ICMP type = 129, then 0 (echo response) if IPv6 ICMP type = 133, then 10 (router solicitation) if IPv6 ICMP type = 134, then 9 (router advertisement)
CkA-3 = so that the computed IPv4 layer-4 checksum be 0
I4C-1 = IPv4 Identification
PSEUDO HEADER FOR AN ICMP OR UDP CONTINUATION FRAGMENT 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-------------------------------+-------------------------------+ | Checksum Adjuster 4 | IPv4 Identifier | | (CkA-4) | (I4C-2) | +-------------------------------+-------------------------------+ CkA-4 = so that the layer-4 checksum contribution of added layer 4 fields be 0
IPv4 = the IPv4 header Identification

142005-02-24
Correspondances entre adresses v6 et v4 à une interface i (1)
Si l'adresse X est sur le lien IPv6, qui n'est pas le réseau IPv4 global
<----------------64--------------><----------------64------------> <--- L(iP6) --> <-- 16 --> < 32 - L(P4)> +---//--------+-----//------------+---------+---//---+-----//-----+ v6 | = iP6 | = 0 | HP | = 0 | xS | +---//--------+-----//------------+---------+---//---+-----//-----+ HP = "v6" = 0 ou "v4" = 1 selon que le protocole d'hôte est IPv6 ou IPv4 < L(P4)>< 32 - L(P4)> +--//---+-----//-----+ v4 | iP4 | xS | +--//---+-----//-----+ Les adresses IPv6 unicast lien-local (préfixe FE80:/16) sont aussi traitées comme si des adresses sur le lien.
Si l'adresse X est sur le lien IPv6, qui est le réseau IPv4 global
<----------------64--------------><----------------64-------------> <-- 16 --><---- 32 ----><-- 16 --><-- 16 --><-- 16--><---- 32 ----> +---------+-------------+---------+---------+--------+-------------+ v6 | = iP6 | xA4 | = 0 | HP | = 0 | xA4 | | (0x2002)| | | | | | +---------+-------------+---------+---------+--------+-------------+ HP = "v6" = 0 ou "v4" = 1 selon que le protocole d'hôte est IPv6 ou IPv4 <--------- 32 --------> +----------------------+ v4 | xA4 | +----------------------+ Note : la répétition de xA4 dans la 1ère partie assure la compatibilité avec les routeurs et relais 6to4.

152005-02-24
Correspondances entre adresses v6 et v4 à une interface i (2)
Si X partage le préfixe du lien IPv6 mais n'est pas sur le lien
<---------------------------------128-------------------------------> <-- L(iP6) -->< 32 - L(iP4)> +----//-------+-----//------+-----//---------------------------------+ v6 | = iP6 |xSs ≠ 0, ≠ iS | | +----//-------+-----//------+-----//---------------------------------+ < L(iP4)>< 32 - L(iP4)> +---//---+-----//------+ v4 | iP4 | xSs | +---//---+-----//------+
Si X ne partage pas le préfixe du lien IPv6
<-------L(iP6)----><---------------- 128 - L(iP6)----------------> +---//-------------+----------------------------------------------+ v6 | ≠ iP6 | | +---//-------------+----------------------------------------------+ +---+---+---+---+ v4 |192| 88| 99| 1| (C058:7301) l'adresse IPv4 anycast des relais 6to4, ref. RFC 3068 +---+---+---+---+
Exceptions : L'adresse IPv6 multicast "tous les routeurs du lien", à savoir FF02::2, est traduite en l'adresse IPv4 multicast réservée à cet usage. Sa valeur provisoire est 224.0.1.20, réservée par l'IANA pour les expérimentations en multicast IPv4.
L'adresse multicast "tous les hôtes du lien", à savoir FF02::1, est traduite en l'adresse IPv4 de diffusion limitée 255.255.255.255.

162005-02-24
IPv6(V6S)
IPv4(V4S)
Adresse(DA6)
Protocole de l'hôteHP(DA6)
= L6 ≠ iP6::/64,,,
= L6 = iP6::/64 … = v6
= FF02::2
= 6E4 ≠ iP6::/64,,,
= 6E4 = iP6 … = v6
≠ L6 = FF02::2
=6EF4 = iP6::/64 … = v6
= 6EF4 ≠ iP6::/64,,,
≠ L6et
≠ 6E4= FF02::2
= L4 ≠ 0./0 = 2002:<32 bits>:0:1:: = iP6::/64 … = v4
= L4 = 0./0 = 2002:<32 bits>:0:,,, = v4
= L4 ≠ 0./0 = 2002:<32 bits>:0:,,, = iP6::/64 … = v4
Elimination
L6
Le support d'IPv6 sur le lien IPv6 est natif ET la destination n'est pas sur le lien IPv6 OU la destination est sur le lien IPv6 et a IPv6 comme protocole d'hôteOU la destination est "tous les routeurs du lien IPv6"
Le support d'IPv6 sur le lien IPv6 est l'encapsulation simple ET la destination n'est pas sur le lien IPv6 OU la destination est sur le lien IPv6 mais n'a pas IPv4 comme protocole d'hôteOU le support d'IPv6 sur le lien IPv6 n'est pas natif ET la destination est "tous les routeurs du lien IPv6" ET l'interface a une adresse IPv4
Conversion en IPv4
6C4
Le lien IPv6 supporte IPv4 ET la destination est sur le lien IPv6 avec IPv4 comme protocole d'hôteET la source a une adresse IPv4 globale avec IPv4 comme protocole d'hôte (le lien IPv6 ne devant donc pas être le réseau IPv4 global)
Aiguillage IPv6&4 à partir de la pile IPv6
Encapsulation respectant les pare-feux IPv4
6EF4
Le support d'IPv6 sur le lien IPv6 est l'encapsulation respectant les pare-feux IPv4 ET la destination n'est pas sur le lien IPv6 OU la destination est sur le lien IPv6 mais n'a pas IPv4 comme protocole d'hôteOU le support d'IPv6 sur le lien n'est ni natif ni l'encapsulation simple ET la destination est "tous les routeurs du lien IPv6" ET l'interface a une adresse IPv4
Fonction de l'aiguillage 4to6 Conditions
DestinationPréfixe IPv4 de sous-
réseau de l'interface
(iP4)
Description
Support de protocoles sur le
lien
Toutes les autres conditions
Adresse de source(SA6)
Abbéviation
Encapsulation simple dans
IPv46E4
Description
Transmission sur le lien en
IPv6
Traduction en IPv4
(NAT6to4)6T4
Le lien IPv6 supporte IPv4 ET la destination est sur le lien IPv6 avec protocole d'hôte IPv4,ET le lien est le réseau IPv4 global OU Le lien n'est pas le réseau IPv4 global ET la source est sur le réseau IPv4 global
Exemple de tests de l'aiguillage : à partir de la pile v6

172005-02-24
Adresses, Routes et paramètres du démonstrateur
F G H I
J
K M
N192.168../162002:c:c:77::/64
2002:c:c:88::/64
192.168.128.1
192.168..2 192.168..3
192.168..1
0./0 0::/0 ; 0./0
0::/0
C.C.C.CJ.J.J../24 0::/0 distance mini
0../02002::/160::/0 distance maxi
Relais 6to4
J.J.J.254
Réseau IPv4
2002:c:c::/48
i:i:i:i:i:i:i:i
i:i:i:i:i:i:i:i
FE80::2
192.168.0.2 2002:c:c:77::3192.168..3
2002:c:c:88::110..1
i:i:i:i:i:i:i:i
0::/0 ; 0./0
iP6 = 2002::/16 ; iP4 = 0::/0 ;V6S = 6E4 ; V4S = L4
iP6 = 2002:c:c:77::/64iP4 = 192.168./16V6S = 6EF4V4S = L4
iP6 = 2002:c:c:77::/64iP4 = 192.168./16V6S = L6V4S = L4
IPv4
IPv6 IPv4 et IPv6 Aiguillage IPv6&4
FE80::1
B
0./0
B.B.B.B
B.B.B.B
B.B.B.B
192.168.128.2
192.168.0../17
0./0
192.88.99../24 2002::/16
Réseau IPv6 natif
NAT- PT 0::/96J.J.J../25

182005-02-24
Relation avec les outils existants Utilisée tel quel
Le protocole 41 (encapsulation directe IPv6 dans IPv4)
Utilisés en étendant son application 6to4 (automatisation de "tunnels" sur le réseau IPv4)
Utilisés en restreignant leur application puis en l'étendant NAT-PT devient NAT-6to4, sans fragmentation ni ALG
Pouvant coexister mais plus nécessaires ISATAP
A domaine d'application disjoint (et plus nécessaires en 4to6) Teredo A étudier en vue d'en ajouter une partie dans le modèle
4to6
Dont une partie pourrait être ajoutée à v6&4 DSTM (Le but serait d'étendre à des applications non compatibles
NAT-v4 les connexions de site v6 à serveur à protocole et adresse v4).

192005-02-24
État d'avancement
Les grands principes ont été finalisés vers mi 2004 (deux
demandes de brevet)
La démarche est soutenue par le Ministère de la
Recherche et l'ANVAR (concours 2004).
Des premiers échanges en France (à l'ENST-B
notamment), et à l'IETF, ont conduit à améliorer de façon
importante les choix de réalisation.
L'implémentation en Q1 2005 d'un démonstrateur par
l'équipe de Laurent Toutain (pôle de compétence IPv6 de
la région Bretagne) est engagée.

202005-02-24
FIN