|
|
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.
| |
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 :
Le mode 6PE a toutefois quelques inconvénients par rapport à un réseau entièrement double pile :