Difference between revisions of "La technique 6PE"

From Livre IPv6

(La technique 6PE)
(Exemple de mise en oeuvre de 6PE)
Line 33: Line 33:
 
* Les paquets IPv6 ne sont pas transportés nativement par le réseau, or cela peut être une exigence du client (il est néanmoins possible de masquer les tunnels MPLS au client en ne recopiant pas le TTL des paquets clients dans les datagrammes MPLS).
 
* Les paquets IPv6 ne sont pas transportés nativement par le réseau, or cela peut être une exigence du client (il est néanmoins possible de masquer les tunnels MPLS au client en ne recopiant pas le TTL des paquets clients dans les datagrammes MPLS).
 
* Certaines fonctions peuvent ne pas être disponibles une fois le trafic encapsulé dans MPLS.
 
* Certaines fonctions peuvent ne pas être disponibles une fois le trafic encapsulé dans MPLS.
 
===Exemple de mise en oeuvre de 6PE===
 
 
Dans l'exemple suivant, la mise en oeuvre de la fonctionnalité 6PE est effectué sur une plate-forme comprenant 3 routeurs MPLS : deux PE-routeurs et un P-routeur. La fonctionalité 6PE est introduite de façon incrémentale :
 
 
* mise en oeuvre du routage interne IS-IS,
 
* ajout du protocole de distribution des labels LDP,
 
* ajout des peering BGP,
 
* et finalement activation de la fonctionnalité 6PE.
 
 
Le schéma de la plate-forme est donné dans la figure plateforme MPLS-6PE.
 
 
[[image:CS85.gif]]
 
 
Les routeurs sont de marque Cisco et les versions du système d'exploitation sont donnés dans le See Versions des IOS pour la plate-forme 6PE.
 
 
{|
 
|+Versions des IOS pour la plate-forme 6PE
 
|-
 
!Routeur || version || Note
 
|-
 
|R1 || 12.2(15)T || 6PE aware, DS
 
|-
 
|R2 || 12.3(1) || Juste MPLS
 
|-
 
|R3 || 12.2(15)T || 6PE aware, DS
 
|}
 
 
La première étape consiste à activer les technologies suivantes :
 
 
* routage interne IPv4 avec IS-IS ;
 
* MPLS avec LDP comme protocole de distribution de labels.
 
 
Les configurations des routeurs sont les suivantes :
 
 
6PE-1#'''sh run'''
 
version 12.2
 
hostname 6PE-1
 
boot system disk0:c7200-js-mz.122-15.T.bin
 
ip cef
 
clns routing
 
mpls label protocol ldp
 
mpls ldp logging neighbor-changes
 
!
 
interface Loopback6
 
    ip address 192.168.127.1 255.255.255.255
 
!
 
interface Ethernet0/0
 
    ip address 192.168.12.1 255.255.255.0
 
    ip router isis
 
    mpls label protocol ldp
 
    tag-switching ip
 
!
 
interface GigabitEthernet0/0
 
    ip address 192.168.11.1 255.255.255.0
 
!
 
router isis
 
    net 49.0001.1921.6812.7001.00
 
    is-type level-2-only
 
    metric-style wide
 
    redistribute connected
 
    passive-interface GigabitEthernet0/0
 
    passive-interface Loopback6
 
!
 
ip route 192.168.111.0 255.255.255.0 GigabitEthernet0/0
 
6PE-1#
 
 
6PE-2#'''sh run'''
 
version 12.2
 
hostname 6PE-2
 
boot system disk0:c7200-js-mz.122-15.T.bin
 
ip cef
 
clns routing
 
mpls label protocol ldp
 
no mpls ldp logging neighbor-changes
 
!
 
interface Loopback6
 
    ip address 192.168.127.3 255.255.255.255
 
!
 
interface Ethernet0/0
 
    ip address 192.168.23.2 255.255.255.0
 
    ip router isis
 
    mpls label protocol ldp
 
    tag-switching ip
 
!
 
interface GigabitEthernet0/0
 
    ip address 192.168.33.1 255.255.255.0
 
!
 
router isis
 
    net 49.0001.1921.6812.7003.00
 
    is-type level-2-only
 
    metric-style wide
 
    redistribute connected
 
    passive-interface GigabitEthernet0/0
 
    passive-interface Loopback6
 
!
 
ip route 192.168.133.0 255.255.255.0 GigabitEthernet0/0
 
6PE-2#
 
 
P#'''sh run'''
 
version 12.3
 
hostname P
 
boot system flash:C2600-JS-MZ.123-1.BIN
 
ip cef
 
clns routing
 
mpls label protocol ldp
 
mpls ldp logging neighbor-changes
 
!
 
interface Loopback0
 
    ip address 192.168.127.2 255.255.255.255
 
!
 
interface FastEthernet0/0
 
    ip address 192.168.12.2 255.255.255.0
 
    ip router isis
 
    mpls label protocol ldp
 
    tag-switching ip
 
!
 
interface FastEthernet0/1
 
    ip address 192.168.23.1 255.255.255.0
 
    ip router isis
 
    mpls label protocol ldp
 
    tag-switching ip
 
!
 
router isis
 
    net 49.0001.1921.6812.7002.00
 
    is-type level-2-only
 
    metric-style wide
 
    redistribute connected
 
    passive-interface Loopback0
 
!
 
P#
 
 
Pour vérifier que les configurations des routeurs sont correctes, il est possible de tester l'apprentissage des routes par IS-IS. Sur le routeur 6PE-2, la commande suivante permet de vérifier que les routes sont bien apprises :
 
 
6PE-2#'''sh ip route'''
 
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
 
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
 
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
 
E1 - OSPF external type 1, E2 - OSPF external type 2
 
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
 
* - candidate default, U - per-user static route, o - ODR
 
P - periodic downloaded static route
 
Gateway of last resort is not set
 
i L2 192.168.12.0/24 [115/20] via 192.168.23.1, Ethernet0/0
 
S 192.168.133.0/24 is directly connected, GigabitEthernet0/0
 
192.168.127.0/32 is subnetted, 3 subnets
 
C 192.168.127.3 is directly connected, Loopback6
 
i L2 192.168.127.2 [115/10] via 192.168.23.1, Ethernet0/0
 
i L2 192.168.127.1 [115/20] via 192.168.23.1, Ethernet0/0
 
i L2 192.168.11.0/24 [115/20] via 192.168.23.1, Ethernet0/0
 
C 192.168.23.0/24 is directly connected, Ethernet0/0
 
C 192.168.33.0/24 is directly connected, GigabitEthernet0/0
 
6PE-2#
 
 
De même, pour l'apprentissage des labels MPLS par LDP. Sur le routeur P la commande suivante permet de vérifier l'activation du protocole LDP sur les interfaces :
 
 
P#sh mpls interfaces detail
 
Interface FastEthernet0/0:
 
IP labeling enabled (ldp)
 
LSP Tunnel labeling not enabled
 
BGP tagging not enabled
 
Tagging operational
 
Fast Switching Vectors:
 
IP to MPLS Fast Switching Vector
 
MPLS Turbo Vector
 
MTU = 1500
 
Interface FastEthernet0/1:
 
IP labeling enabled (ldp)
 
LSP Tunnel labeling not enabled
 
BGP tagging not enabled
 
Tagging operational
 
Fast Switching Vectors:
 
IP to MPLS Fast Switching Vector
 
MPLS Turbo Vector
 
MTU = 1500
 
P#
 
 
Enfin sur le routeur 6PE-2, la commande suivante permet d'afficher la table de commutation MPLS :
 
 
6PE-2#'''sh mpls forwarding-table'''
 
Local Outgoing Prefix Bytes tag Outgoing Next Hop
 
tag tag or VC or Tunnel Id switched interface
 
16 Pop tag 192.168.12.0/24 0 Et0/0 192.168.23.1
 
17 Pop tag 192.168.127.2/32 0 Et0/0 192.168.23.1
 
18 17 192.168.127.1/32 0 Et0/0 192.168.23.1
 
19 18 192.168.11.0/24 0 Et0/0 192.168.23.1
 
6PE-2#
 
 
Ainsi :
 
* pour la FEC <tt>192.168.127.1/32</tt>, le label de sortie sera 17 ;
 
* pour la FEC <tt>192.168.12.0/24</tt>, 6PE-2 fait un POP du label (car il est le PHP pour le next-hop de ce préfixe, i.e. le router P).
 
 
La commande traceroute vers 192.168.127.1 montre que le flux passe sur MPLS et que le tag de sortie est effectivement 17 :
 
 
6PE-2#'''traceroute 192.168.127.1'''
 
Tracing the route to 192.168.127.1
 
1 192.168.23.1 [MPLS: Label 17 Exp 0] 0 msec 4 msec 0 msec
 
2 192.168.12.1 0 msec * 0 msec
 
6PE-2#
 
 
La capture d'un PING vers 192.168.127.1 confirme également que le trafic emprunte le LSP (cf. figure Capture d'un paquet de ping).
 
 
[[image:CS86.gif]]
 
 
La seconde étape consiste à ajouter de la fonction 6PE. Le routeur P n'est pas concerné par cette fonction, par contre les routeurs 6PE-1 et 6PE-2 doivent établir une session i-BGP entre eux afin de pouvoir s'échanger les préfixes IPv6 avec MP-BGP. Les configurations des routeurs sont alors les suivantes (seuls les éléments nouveaux par rapport aux configurations précédentes sont listés) :
 
 
6PE-1#sh run
 
[..]
 
ipv6 unicast-routing
 
mpls ipv6 source-interface Loopback6
 
!
 
interface Loopback6
 
    ip address 192.168.127.1 255.255.255.255
 
    ipv6 address 2001:127::1/128
 
!
 
interface Ethernet0/0
 
!
 
interface GigabitEthernet0/0
 
    ipv6 address 2001:11::1/48
 
    ipv6 enable
 
!
 
router isis
 
[..]
 
!
 
router bgp 106
 
[..]
 
    neighbor 192.168.127.3 remote-as 106
 
    neighbor 192.168.127.3 update-source Loopback6
 
!
 
address-family ipv6
 
    neighbor 192.168.127.3 activate
 
    neighbor 192.168.127.3 soft-reconfiguration inbound
 
    neighbor 192.168.127.3 send-label
 
    redistribute connected
 
    redistribute static
 
    exit-address-family
 
!
 
address-family ipv4
 
    redistribute connected
 
    redistribute static
 
    neighbor 192.168.127.3 activate
 
    neighbor 192.168.127.3 soft-reconfiguration inbound
 
    exit-address-family
 
!
 
ipv6 route 2001:111::/32 GigabitEthernet0/0
 
6PE-1#
 
 
 
6PE-2#sh run
 
[..]
 
ipv6 unicast-routing
 
mpls ipv6 source-interface Loopback6
 
!
 
interface Loopback6
 
    ip address 192.168.127.3 255.255.255.255
 
    ipv6 address 2001:127::3/128
 
!
 
interface Ethernet0/0
 
[..]
 
!
 
interface GigabitEthernet0/0
 
[..]
 
    ipv6 address 2001:33::1/48
 
    ipv6 enable
 
!
 
router isis
 
[..]
 
!
 
router bgp 106
 
[..]
 
    neighbor 192.168.127.1 remote-as 106
 
    neighbor 192.168.127.1 update-source Loopback6
 
!
 
    address-family ipv6
 
        neighbor 192.168.127.1 activate
 
        neighbor 192.168.127.1 soft-reconfiguration inbound
 
        neighbor 192.168.127.1 send-label
 
        redistribute connected
 
        redistribute static
 
        exit-address-family
 
!
 
    address-family ipv4
 
        redistribute connected
 
        redistribute static
 
        neighbor 192.168.127.1 activate
 
        neighbor 192.168.127.1 soft-reconfiguration inbound
 
        exit-address-family
 
!
 
ipv6 route 2001:133::/32 GigabitEthernet0/0
 
6PE-2#
 
 
La commande suivante permet de vérifier cette configuration en testant le peering BGP sur 6PE-2 :
 
 
6PE-2#'''sh bgp ipv6 neighbor'''
 
BGP neighbor is 192.168.127.1, remote AS 106, internal link
 
BGP version 4, remote router ID 192.168.127.1
 
BGP state = Established, up for 00:34:04
 
Last read 00:00:04, hold time is 180, keepalive interval is 60 seconds
 
Neighbor capabilities:
 
Route refresh: advertised and received(old & new)
 
Address family IPv4 Unicast: advertised and received
 
Address family IPv6 Unicast: advertised and received
 
ipv6 MPLS Label capability: advertised and received
 
[..]
 
For address family: IPv6 Unicast
 
BGP table version 3, neighbor version 3
 
Index 1, Offset 0, Mask 0x2
 
Inbound soft reconfiguration allowed
 
Sending Prefix & Label
 
Sent Rcvd
 
Prefix activity: ---- ----
 
Prefixes Current: 1 1 (Consumes 72 bytes)
 
Prefixes Total: 2 2
 
[..]
 
6PE-2#'''sh bgp ipv6 2001:127::1/128'''
 
BGP routing table entry for 2001:127::1/128, version 3
 
Paths: (1 available, best #1, table Global-IPv6-Table)
 
Not advertised to any peer
 
Local, (received & used)
 
::FFFF:192.168.127.1 (metric 20) from 192.168.127.1 (192.168.127.1)
 
Origin incomplete, metric 0, localpref 100, valid, internal, best
 
6PE-2#
 
 
Sur le routeur 6PE-2, les labels utilisés par MP-BGP pour le transport d'IPv6 sur MPLS peuvent être visualisés :
 
 
6PE-2#'''sh bgp labels'''
 
Network Next Hop In label/Out label
 
2001:111::/32 ::FFFF:192.168.127.1
 
nolabel/22
 
2001:127::1/128 ::FFFF:192.168.127.1
 
nolabel/21
 
2001:127::3/128 :: 21/nolabel
 
2001:133::/32 :: 22/nolabel
 
2003::/16 ::FFFF:192.168.127.1
 
nolabel/23
 
2005:1234::/32 ::FFFF:192.168.127.1
 
nolabel/24
 
6PE-2#
 
 
Pour cet exemple, des routes statiques IPv6 supplémentaires a été ajoutées sur le routeur 6PE-1 afin de montrer que chaque préfixe se voit attribué un nouveau label. La capture (cf. figure Capture d'une annonce MP-BGP) décode l'annonce MP-BGP qui résulte de l'ajout de la route statique IPv6 2005 :1234 ::/32 (message BGP UPDATE). Ce message BGP UPDATE annonce à la fois le préfixe IPv6 (2005:1234::/32) et le label MPLS associé (18 en hexadécimal, soit 24 en décimal, avec le bit S positionné à 1) (RFC 3107).
 
 
[[image:CS87.gif]]
 
 
Sur le routeur 6PE-2, il est possible de visualiser comment sont apprises les routes :
 
 
6PE-2#sh ipv6 route
 
IPv6 Routing Table - 4 entries
 
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
 
U - Per-user Static route
 
I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea
 
O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
 
B 2001:127::1/128 [200/0]
 
via ::FFFF:192.168.127.1, IPv6-mpls
 
LC 2001:127::3/128 [0/0]
 
via ::, Loopback6
 
L FE80::/10 [0/0]
 
via ::, Null0
 
L FF00::/8 [0/0]
 
via ::, Null0
 
6PE-2#
 
 
Le préfixe IPv6 <tt>2001:127::1/128</tt> est appris par MP-BGP via l'adresse IPv6 IPv4 mappée <tt>::FFFF:192.168.127.1</tt>. L'indication IPv6-mpls montre que le flux IPv6 correspondant est acheminé sur MPLS (c'est la fonction 6PE).
 
 
Sur le routeur 6PE-2, la table de commutation MPLS peut être affichée :
 
 
6PE-2#'''sh mpls forwarding-table'''
 
Local Outgoing Prefix Bytes tag Outgoing Next Hop
 
tag tag or VC or Tunnel Id switched interface
 
16 Pop tag 192.168.12.0/24 0 Et0/0 192.168.23.1
 
17 Pop tag 192.168.127.2/32 0 Et0/0 192.168.23.1
 
18 17 192.168.127.1/32 0 Et0/0 192.168.23.1
 
19 18 192.168.11.0/24 0 Et0/0 192.168.23.1
 
21 Aggregate IPv6 1040
 
6PE-2#
 
 
Le label attribué à la fonction 6PE possède la valeur 21. La capture d'un ECHO REQUEST vers <tt>2001:127::1</tt> (cf. figure Capture d'un message "echo request") montre que le flux emprunte le LSP 6PE :
 
 
[[image:CS88.gif]]
 
 
On remarque qu'il y a deux labels :
 
 
* le label « normal » qui assure la commutation MPLS (et l'on voit alors que le routeur P ignore qu'il commute de l'IPv6) ;
 
* le label 6PE qui permet ensuite d'établir la correspondance avec IPv6 sur le routeur PE de sortie.
 
 
La capture de la figure Capture de la réponse est la réponse à cette requête.
 
 
[[image:CS89.gif]]
 
 
On remarquera qu'il n'y a que le label 6PE car le routeur précédent (routeur P) a déjà décapsulé le label « normal » de commutation MPLS.
 

Revision as of 07:51, 26 November 2005

La technique 6PE (cf. figure Architecture 6PE) permet de connecter des îlots IPv6 entre eux au travers d'un coeur de réseau IPv4 MPLS. L'architecture utilisée est la suivante :

CS83.gif

  • tunnels MPLS dans le coeur;
  • utilisation de MP-iBGP pour annoncer les préfixes IPv6.

Ce mode, décrit dans le draft IETF 6PE [NGF-id], est nommé ainsi en référence à IPv6 et aux PE des VPN MPLS (RFC 2547), mais contrairement à ces derniers, la technique 6PE ne permet pas de faire des VPN. Ainsi, les préfixes IPv6 annoncés par les routeurs CE sont placés dans la table de routage globale du routeur 6PE. La technique 6PE décrit un mode de transition vers IPv6 pour un réseau IPv4 /MPLS dans lequel :

  • Comme dans un mode tunnel, les routeurs de coeur ne sont pas double pile. Ils restent en IPv4 sans aucune modification;
  • Les routeurs de périphérie raccordant des clients ou des sous réseaux IPv6 sont double pile. Ils utilisent MP-iBGP pour s'échanger les préfixes de leurs clients avec eux même comme next hop ;
  • Les paquets IPv6 des clients sont reçus nativement par les 6PE, encapsulés par le routeur 6PE d'entrée (ingress), décapsulés par le routeur 6PE de sortie (egress) puis envoyés aux clients sur une interface IPv6 native (ou double pile). Les tunnels sont des LSP MPLS21 (cf. figure Plan de transfert 6PE entre deux clients IPv6).

CS84.gif

  • Aucun IGP IPv6 n'est utilisé sur les routeurs de coeur, ni sur les routeurs de périphérie. En effet, le next-hop des routes IPv6 est une route IPv6 (obligatoire en MP-BGP) mais cette adresse code en fait une adresse IPv4. Pour cela, une adresse IPv6 de type IPv4-mapped est utilisée permettant de représenter une adresse IPv4 avec une syntaxe IPv6 (le cas d'application ci-dessous en montre un exemple). Finalement, le next-hop des routes IPv6 est l'adresse IPv4 du routeur 6PE de sortie. Cette adresse IPv4 est routable grâce à l'IGP IPv4 existant.

Ce mode nécessite un maillage complet (full mesh) de tunnels entre les routeurs 6PE et donc un nombre de tunnels conséquent. Pour éviter la lourdeur et le coût de configuration de tout ces tunnels, le protocole MP-iBGP est utilisé : à chaque route IPv6 cliente annoncée dans MP-BGP, est associé un next-hop qui indique le point de sortie du tunnel et donc le tunnel à utiliser.

Le mode 6PE combine les avantages des modes tunnels :

  • Aucun impact sur les routeurs de coeur : pas de nouveau code, pas de nouvelles fonctionnalités (commutation IPv6, ISIS MT ou IS-ISv6, MP-BGP), pas de nouvelles routes (IPv6 internes et externes), aucune dégradation des performances de commutation aussi bien pour les flux IPv4 que IPv6. Des débits IPv6 agrégés de 10G sont possibles dès maintenant. Pas de risques pris sur les routeurs et le réseau de coeur qui ne savent même qu'ils commutent de l'IPv6 (ni de l'IPv4 d'ailleurs);
  • Introduction rapide : pour interconnecter deux îlots IPv6, seules deux routeurs sont à mettre à jour pour les passer en double pile (pour les interfaces natives IPv6 des clients) et configurer MP-BGP afin d'échanger les routes clientes IPv6. Or ces deux opérations sont de toutes façons indispensables, quel que soit le mode utilisé (double pile, tunnels statiques IPv4, 6PE) ;
  • En cas de panne de liens ou de routeurs de coeur de réseau, les flux IPv6 peuvent utiliser l'intégralité des liens et des routeurs du réseau et donc être re-routés facilement grâce à MPLS.

Tout en supprimant de nombreux inconvénients des tunnels IPv4 statiques :

  • Performance du plan de transfert: MPLS permet une encapsulation très rapide quelque soit le débit de l'interface. C'est l'interface cliente qui peut limiter les débits si les interfaces ne sont pas encore assez rapide, mais elle est à plus faible débit qu'une interface backbone. A priori, le surcoût d'encapsulation est plus faible d'où un coût de transport moins élevé pour l'opérateur et une MTU moins réduite pour le client ;
  • Lourdeur de configuration des tunnels: aucun tunnel n'est à configurer manuellement. Ils sont établis automatiquement et re-routés dynamiquement en cas de panne.

Le mode 6PE a toutefois quelques inconvénients par rapport à un réseau entièrement double pile :

  • Les paquets IPv6 ne sont pas transportés nativement par le réseau, or cela peut être une exigence du client (il est néanmoins possible de masquer les tunnels MPLS au client en ne recopiant pas le TTL des paquets clients dans les datagrammes MPLS).
  • Certaines fonctions peuvent ne pas être disponibles une fois le trafic encapsulé dans MPLS.
Personal tools