La technique 6PE

From Livre IPv6

Revision as of 06:48, 26 November 2005 by Laurent Toutain (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

La technique 6PE

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.

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.

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 192.168.127.1/32, le label de sortie sera 17 ;
  • pour la FEC 192.168.12.0/24, 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).

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

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 2001:127::1/128 est appris par MP-BGP via l'adresse IPv6 IPv4 mappée ::FFFF:192.168.127.1. 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 2001:127::1 (cf. figure Capture d'un message "echo request") montre que le flux emprunte le LSP 6PE :

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.

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.

Personal tools