Ce document propose des exemples de configurations pour mettre en œuvre un VPN à Commutation multiprotocole par étiquette (MPLS) dans des tunnels d'ingénierie de trafic (TE) dans un réseau MPLS. Pour bénéficier des avantages d'un VPN MPLS sur les tunnels TE, les deux doivent coexister dans le réseau. Ce document illustre différents scénarios qui expliquent pourquoi le transfert de paquets dans un VPN MPLS sur des tunnels TE peut échouer. Il propose également une solution possible.
Les lecteurs de ce document devraient avoir connaissance des sujets suivants :
Ce document n'est pas limité à des versions de matériel et de logiciel spécifiques.
Pour plus d'informations sur les conventions utilisées dans ce document, reportez-vous à Conventions relatives aux conseils techniques Cisco.
Comme indiqué dans cette topologie, dans une configuration VPN MPLS simple, Provider Edge 1 (PE1) apprend directement l'étiquette VPN (Label 1 [L1]) pour le préfixe VPN 172.16.13.0/24 via le protocole MPBGP (Border Gateway Protocol) multiprotocole de PE2, avec le tronçon suivant comme adresse de bouclage PE2. PE1 apprend également l’étiquette (L2) de l’adresse de bouclage PE2 via le protocole LDP (Label Distribution Protocol) à partir de son prochain saut P1.
Lors du transfert de données vers le préfixe VPN 172.16.13.13, PE1 utilise une pile d'étiquettes {L2 L1} avec L2 comme étiquette externe. L2 est remplacé par le routeur LSR (transit label switch router), P1. P2 affiche la couche 2 externe et transfère le paquet à PE2 avec une seule couche 1. Pour mieux comprendre pourquoi P2 fait apparaître L2, référez-vous à la section 3.16 sur l'avant-dernier saut popping (PHP) dans RFC 3031 . Ainsi, les paquets vers le préfixe IP version 4 (IPv4) du VPN 172.16.13.0/24 sont des étiquettes commutées sur un réseau MPLS.
L'opération de transfert VPN MPLS échoue si un routeur P reçoit le paquet avec L1 (étiquette VPN) comme seule étiquette externe au lieu de la pile d'étiquettes {L2 L1}. Cela se produit parce qu’aucun des routeurs P n’a L1 dans sa base d’informations de transfert d’étiquette (LFIB) pour commuter le paquet.
Un TE MPLS utilise le protocole RSVP (Resource Reservation Protocol) pour échanger des étiquettes. Lorsqu’un routeur est configuré pour les protocoles TE et TDP (Tag Distribution Protocol)/LDP, le routeur reçoit des étiquettes différentes du protocole LDP et du protocole RSVP pour un préfixe donné. Les étiquettes du protocole LDP et du protocole RSVP ne doivent pas nécessairement être identiques dans toutes les situations. Le routeur installe une étiquette LDP dans la table de transfert si le préfixe est appris via une interface LDP et il installe l'étiquette RSVP dans la table de transfert si le préfixe est appris sur une interface de tunnel TE.
Dans le cas d’un tunnel TE ordinaire (sans LDP/TDP activé sur le tunnel), le LSR d’entrée (le LSR sur la tête de réseau du tunnel TE) utilise la même étiquette que celle utilisée pour atteindre le bout arrière du tunnel TE pour toutes les routes apprises via un tunnel TE.
Par exemple, un tunnel TE de PE1 à P2 apprend le préfixe 10.11.11.11/32 sur le tunnel. La queue du tunnel sur P2 est 10.5.5.5, et l'étiquette pour atteindre 10.5.5.5 dans PE1 est L3. PE1 utilise ensuite L3 pour atteindre la destination 10.11.11.11/32, apprise via le tunnel TE.
Dans le scénario ci-dessus, lorsqu'il existe un tunnel TE entre PE1 et P2, considérez que PE1 transfère les données à Customer Edge 2 (CE2). Si L4 est l'étiquette VPN, PE1 transmet les données avec la pile d'étiquettes {L3 L4}. P1 fait appel à L3 et P2 reçoit le paquet avec L4. PE2 est le seul LSR capable de transférer correctement le paquet avec l'étiquette externe L4. P2 n'ayant pas de session MPBGP avec PE2, il ne reçoit pas la couche 4 de PE2. Par conséquent, P2 n'a aucune connaissance de L2 et abandonne le paquet.
Les configurations et les résultats qui suivent le démontrent et illustrent une solution possible à ce problème.
Seules les parties pertinentes des fichiers de configuration sont incluses ici :
PE1 |
---|
hostname PE1 ip cef ! ip vrf aqua rd 100:1 route-target export 1:1 route-target import 1:1 ! mpls traffic-eng tunnels ! interface Loopback0 ip address 10.2.2.2 255.255.255.255 no ip directed-broadcast ! interface Ethernet2/0/1 ip vrf forwarding aqua ip address 172.16.1.2 255.255.255.0 ! interface Ethernet2/0/2 ip address 10.7.7.2 255.255.255.0 ip router isis mpls traffic-eng tunnels tag-switching ip ! router isis passive-interface Loopback0 net 47.1234.2222.2222.2222.00 is-type level-1 metric-style wide mpls traffic-eng router-id Loopback0 mpls traffic-eng level-1 ! router bgp 1 bgp log-neighbor-changes neighbor 10.11.11.11 remote-as 1 neighbor 10.11.11.11 update-source Loopback0 ! address-family vpnv4 neighbor 10.11.11.11 activate neighbor 10.11.11.11 send-community extended exit-address-family ! address-family ipv4 neighbor 10.11.11.11 activate no auto-summary no synchronization exit-address-family ! address-family ipv4 vrf aqua redistribute connected no auto-summary no synchronization exit-address-family |
PE2 |
---|
hostname PE2 ! ip vrf aqua rd 100:1 route-target export 1:1 route-target import 1:1 ! mpls traffic-eng tunnels ! interface Loopback0 ip address 10.11.11.11 255.255.255.255 ! interface POS0/1 ip address 10.12.12.10 255.255.255.0 ip router isis mpls traffic-eng tunnels tag-switching ip crc 16 clock source internal ! interface POS5/1 ip vrf forwarding aqua ip address 172.16.13.11 255.255.255.0 crc 32 clock source internal ! router isis passive-interface Loopback0 mpls traffic-eng router-id Loopback0 mpls traffic-eng level-1 net 47.1234.1010.1010.1010.00 is-type level-1 metric-style wide ! router bgp 1 bgp log-neighbor-changes neighbor 10.2.2.2 remote-as 1 neighbor 10.2.2.2 update-source Loopback0 no auto-summary ! address-family vpnv4 neighbor 10.2.2.2 activate neighbor 10.2.2.2 send-community extended exit-address-family ! address-family ipv4 vrf aqua redistribute connected no auto-summary no synchronization exit-address-family ! |
PE2 apprend le préfixe IPv4 VPN PE1 172.16.1.0/24 sur l'appairage MPBGP entre PE1 et PE2. Ceci est illustré ici :
PE2# show ip route vrf aqua Codes: C - connected, S - static, I - IGRP, 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, E - EGP 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 Gateway of last resort is not set 10.0.0.0/24 is subnetted, 2 subnets B 172.16.1.0 [200/0] via 10.2.2.2, 16:09:10 C 172.16.13.0 is directly connected, POS5/1
De même, PE1 apprend le préfixe IPv4 VPN PE2 172.16.13.0/24 sur l'appairage MPBGP entre PE1 et PE2. Ceci est illustré ici :
PE1# show ip route vrf aqua Codes: C - connected, S - static, I - IGRP, 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, E - EGP 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 Gateway of last resort is not set 10.0.0.0/24 is subnetted, 2 subnets B 172.16.13.0 [200/0] via 10.11.11.11, 16:09:49 C 172.16.1.0 is directly connected, Ethernet2/0/1 PE1# show ip route vrf aqua 172.16.13.13 Routing entry for 172.16.13.0/24 Known via "bgp 1", distance 200, metric 0, type internal Last update from 10.11.11.11 16:13:19 ago Routing Descriptor Blocks: * 10.11.11.11 (Default-IP-Routing-Table), from 10.11.11.11, 16:13:19 ago Route metric is 0, traffic share count is 1 AS Hops 0, BGP network version 0 PE1# show ip cef vrf aqua 172.16.13.13 172.16.13.0/24, version 11, cached adjacency 10.7.7.7 0 packets, 0 bytes tag information set local tag: VPN route head fast tag rewrite with Et2/0/2, 10.7.7.7, tags imposed {17 12308} via 10.11.11.11, 0 dependencies, recursive next hop 10.7.7.7, Ethernet2/0/2 via 10.11.11.11/32 valid cached adjacency tag rewrite with Et2/0/2, 10.7.7.7, tags imposed {17 12308} !--- The label stack used to reach 172.16.13.13 is !--- {17 12308}, where 17 is the outer label to reach next hop 10.11.11.11 !--- and 12308 is the VPN IPv4 label for 172.16.13.0/24. PE1# show ip cef 10.11.11.11 10.11.11.11/32, version 31, cached adjacency 10.7.7.7 0 packets, 0 bytes tag information set local tag: 21 fast tag rewrite with Et2/0/2, 10.7.7.7, tags imposed {17} via 10.7.7.7, Ethernet2/0/2, 1 dependency next hop 10.7.7.7, Ethernet2/0/2 valid cached adjacency tag rewrite with Et2/0/2, 10.7.7.7, tags imposed {17} !--- Outer label 17 is used to reach next hop 10.11.11.11.
Ainsi, CE1 peut atteindre 172.16.13.13 sur le réseau CE2 via l'instance de routage et de transfert VPN (VRF) « aqua », qui est configurée sur PE1 à l'aide de la pile d'étiquettes {17 12308}, comme indiqué ci-dessus.
Cette sortie ping confirme la connectivité :
CE1# ping 172.16.13.13 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 172.16.13.13, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/4 ms
Lorsque le tunnel TE est construit entre les routeurs PE avec l'annonce d'autoroute utilisée, le prochain saut PE de sortie BGP est accessible via l'interface de tunnel TE. Par conséquent, PE1 utilise l’étiquette TE pour atteindre PE2.
Remarque : MPLS TE est indépendant du protocole LDP, ce qui signifie que, si vous disposez d'un maillage complet de tunnels de PE à PE, vous pouvez effectivement désactiver le protocole LDP dans les routeurs et n'avez pas besoin d'exécuter le protocole LDP sur les interfaces de tunnel TE. Cependant, vous devez construire tous les tunnels au prochain saut BGP des routes VPN version 4 (VPNv4). Dans l'exemple de cette configuration, vous pouvez voir que ce tronçon suivant BGP est le bouclage Loopback0 sur PE2, 10.11.11.11. Ce même bouclage est également la destination du tunnel pour le tunnel de PE1 à PE2. Ceci explique pourquoi, dans cet exemple, s'il existe également un tunnel entre PE2 et PE1 pour le trafic de retour, vous pouvez désactiver le protocole LDP dans le coeur. Ensuite, le transfert de CE à CE fonctionne avec tout le trafic VPNv4 transporté sur les tunnels TE. Si le saut suivant BGP n'est pas identique à la destination du tunnel TE, le protocole LDP doit être exécuté dans le coeur et sur le tunnel TE.
La configuration supplémentaire sur PE1 pour établir un tunnel PE est présentée ici :
PE1 |
---|
PE1# show run interface tunnel 0 ! interface Tunnel0 ip unnumbered Loopback0 no ip directed-broadcast no ip route-cache distributed tunnel destination 10.11.11.11 tunnel mode mpls traffic-eng tunnel mpls traffic-eng autoroute announce tunnel mpls traffic-eng path-option 10 dynamic end |
PE1# show ip cef vrf aqua 172.16.13.13 172.16.13.0/24, version 11 0 packets, 0 bytes tag information set local tag: VPN route head fast tag rewrite with Tu0, point2point, tags imposed {19 12308} via 10.11.11.11, 0 dependencies, recursive next hop 10.11.11.11, Tunnel0 via 10.11.11.11/32 valid adjacency tag rewrite with Tu0, point2point, tags imposed {19 12308} !--- The label stack to reach 172.16.13.13 is {19 12308}. !--- BGP next hop for the VPNv4 prefix is 10.11.11.11, which is !--- the same as the TE tunnel destination. PE1# show ip route 10.11.11.11 Routing entry for 10.11.11.11/32 Known via "isis", distance 115, metric 40, type level-1 Redistributing via isis Last update from 10.11.11.11 on Tunnel0, 00:02:09 ago Routing Descriptor Blocks: * 10.11.11.11, from 10.11.11.11, via Tunnel0 !--- The route is via Tunnel0. Route metric is 40, traffic share count is 1
Maintenant, confirmez l'étiquette externe utilisée pour atteindre le prochain saut 10.11.11.11 via Tunnel0.
PE1# show mpls traffic-eng tunnels tunnel 0 Name: PE1_t0 (Tunnel0) Destination: 10.11.11.11 Status: Admin: up Oper: up Path: valid Signalling: connected path option 10, type dynamic (Basis for Setup, path weight 30) Config Parameters: Bandwidth: 0 kbps (Global) Priority: 7 7 Affinity: 0x0/0xFFFF Metric Type: TE (default) AutoRoute: enabled LockDown: disabled Loadshare: 0 bw-based auto-bw: disabled InLabel : - OutLabel : Ethernet2/0/2, 19 !--- Label 19 from RSVP is used to reach destination 10.11.11.11/32. RSVP Signalling Info: Src 10.2.2.2, Dst 10.11.11.11, Tun_Id 0, Tun_Instance 31 RSVP Path Info: My Address: 10.7.7.2 Explicit Route: 10.7.7.7 10.8.8.7 10.8.8.5 10.12.12.10 10.11.11.11 Record Route: NONE Tspec: ave rate=0 kbits, burst=1000 bytes, peak rate=0 kbits RSVP Resv Info: Record Route: NONE Fspec: ave rate=0 kbits, burst=1000 bytes, peak rate=Inf Shortest Unconstrained Path Info: Path Weight: 30 (TE) Explicit Route: 10.7.7.2 10.7.7.7 10.8.8.7 10.8.8.5 10.12.12.10 10.11.11.11 History: Tunnel: Time since created: 17 hours, 17 minutes Time since path change: 32 minutes, 54 seconds Current LSP: Uptime: 32 minutes, 54 seconds Prior LSP: ID: path option 10 [14] Removal Trigger: tunnel shutdown
Une autre façon d'afficher rapidement ces informations consiste à utiliser les modificateurs de sortie dans les commandes show, comme illustré ici :
PE1# show mpls traffic-eng tunnels tunnel 0 | include Label InLabel : - OutLabel : Ethernet2/0/2, 19 !--- This is the label to reach 10.11.11.11.
Regardez la pile de balises. Il s'agit de 19, qui est l'étiquette TE, utilisée pour transférer des paquets au prochain saut 10.11.11.0 sur Tunnel0.
PE1# show tag forwarding-table 10.11.11.11 detail Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 21 Pop tag 10.11.11.11/32 0 Tu0 point2point MAC/Encaps=14/18, MTU=1500, Tag Stack{19}, via Et2/0/2 00603E2B02410060835887428847 00013000 No output feature configured Per-packet load-sharing, slots: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 PE1#
Par conséquent, PE1 envoie un paquet destiné à 172.16.13.13 avec la pile d’étiquettes {19 12308}. P1 échange l'étiquette 19. Le paquet atteint P2, qui affiche cette étiquette externe. Ensuite, le paquet est transféré à PE2 avec uniquement l'étiquette 12308.
Sur PE2, le paquet portant l’étiquette 12308 est reçu et commuté conformément aux informations de la table de transfert. Ceci est illustré ici :
PE2# show tag for tags 12308 detail Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 12308 Aggregate 172.16.13.0/24[V] 12256 MAC/Encaps=0/0, MTU=0, Tag Stack{} VPN route: aqua No output feature configured Per-packet load-sharing, slots: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 PE2#
Remarque : Aucune interface sortante n'est affichée car la balise sortante est Aggregate. En effet, le préfixe associé à l'étiquette est la route directement connectée.
Les requêtes ping de CE1 vers un hôte sur CE2 confirment la connectivité VPN sur le tunnel TE :
CE1# ping 172.16.13.13 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 172.16.13.13, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 4/13/36 ms CE1#
La configuration TE supplémentaire sur la configuration de base sur PE1 est présentée ici :
PE1 |
---|
PE1# show run interface tunnel 0 ! interface Tunnel0 ip unnumbered Loopback0 no ip directed-broadcast no ip route-cache distributed tunnel destination 10.5.5.5 tunnel mode mpls traffic-eng tunnel mpls traffic-eng autoroute announce tunnel mpls traffic-eng path-option 10 dynamic end ! |
Vérifiez la route vers le préfixe 172.16.13.13 sur l'aqua VRF de PE1. Il pointe vers le tronçon suivant 10.11.11.11/32 (sur Tunnel0) à l'aide de la pile d'étiquettes {19 12308}.
PE1# show ip cef vrf aqua 172.16.13.13 172.16.13.0/24, version 11 0 packets, 0 bytes tag information set local tag: VPN route head fast tag rewrite with Tu0, point2point, tags imposed {19 12308} via 10.11.11.11, 0 dependencies, recursive next hop 10.5.5.5, Tunnel0 via 10.11.11.11/32 valid adjacency tag rewrite with Tu0, point2point, tags imposed {19 12308} PE1#
L'étiquette 19, l'étiquette externe, est utilisée pour atteindre le tronçon suivant 10.11.11.11/32, comme indiqué ici :
PE1# show ip cef 10.11.11.11 10.11.11.11/32, version 37 0 packets, 0 bytes tag information set local tag: 21 fast tag rewrite with Tu0, point2point, tags imposed {19} via 10.5.5.5, Tunnel0, 1 dependency next hop 10.5.5.5, Tunnel0 valid adjacency tag rewrite with Tu0, point2point, tags imposed {19} PE1# show mpls traffic-eng tunnels tunnel 0 Name: PE1_t0 (Tunnel0) Destination: 10.5.5.5 Status: Admin: up Oper: up Path: valid Signalling: connected path option 10, type dynamic (Basis for Setup, path weight 20) Config Parameters: Bandwidth: 0 kbps (Global) Priority: 7 7 Affinity: 0x0/0xFFFF Metric Type: TE (default) AutoRoute: enabled LockDown: disabled Loadshare: 0 bw-based auto-bw: disabled InLabel : - OutLabel : Ethernet2/0/2, 19 RSVP Signalling Info: Src 10.2.2.2, Dst 10.5.5.5, Tun_Id 0, Tun_Instance 33 RSVP Path Info: My Address: 10.7.7.2 Explicit Route: 10.7.7.7 10.8.8.7 10.8.8.5 10.5.5.5 Record Route: NONE Tspec: ave rate=0 kbits, burst=1000 bytes, peak rate=0 kbits RSVP Resv Info: Record Route: NONE Fspec: ave rate=0 kbits, burst=1000 bytes, peak rate=Inf Shortest Unconstrained Path Info: Path Weight: 20 (TE) Explicit Route: 10.7.7.2 10.7.7.7 10.8.8.7 10.8.8.5 10.5.5.5 History: Tunnel: Time since created: 17 hours, 31 minutes Time since path change: 8 minutes, 49 seconds Current LSP: Uptime: 8 minutes, 49 seconds Selection: reoptimation Prior LSP: ID: path option 10 [31] Removal Trigger: path verification failed PE1# PE1# show mpls traffic-eng tunnels tunnel 0 | i Label InLabel : - OutLabel : Ethernet2/0/2, 19 PE1#
Le paquet de PE1 est envoyé via le tunnel TE avec la pile d'étiquettes {19 12308}. Une fois que P1 reçoit le paquet, il affiche (PHP) la balise 19 et envoie le paquet avec la pile d'étiquettes {12308}. La commande show confirme ceci :
P1> show tag for tag 19 Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 19 Pop tag 10.2.2.2 0 [33] 2130 Et2/0 10.8.8.5 P1> P1> show tag for tag 19 detail Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 19 Pop tag 10.2.2.2 0 [33] 2257 Et2/0 10.8.8.5 MAC/Encaps=14/14, MTU=1504, Tag Stack{} 006009E08B0300603E2B02408847 No output feature configured P1>
Lorsque P2 reçoit le paquet avec la pile d'étiquettes {12308}, il vérifie sa LFIB et abandonne le paquet car il n'existe aucune correspondance. Voici la sortie de la commande show sur P2 :
P2# show tag forwarding-table tags 12308 detail Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface P2# P2# 7w4d: TAG: Et0/3: recvd: CoS=0, TTL=253, Tag(s)=12308 7w4d: TAG: Et0/3: recvd: CoS=0, TTL=253, Tag(s)=12308 7w4d: TAG: Et0/3: recvd: CoS=0, TTL=253, Tag(s)=12308 7w4d: TAG: Et0/3: recvd: CoS=0, TTL=253, Tag(s)=12308 P2# P2#
La solution à ce problème est d'activer le protocole TDP/LDP sur le tunnel TE et d'en faire une interface à commutation de balises. Dans l'exemple présenté dans la solution, le protocole TDP est activé sur le tunnel0 de PE1. P2 est configuré pour accepter les HELLO dirigés et former des voisins TDP dirigés. Par conséquent, PE1 reçoit l'étiquette 10.11.11.11 de P2 via le protocole LDP. Maintenant que Tunnel0 est devenu une interface à commutation de balises et que le protocole TDP a été activé pour le trafic vers 10.11.11.11, PE1 utilise les deux étiquettes ; il utilise l'étiquette RSVP pour atteindre l'extrémité TE et l'étiquette TDP pour atteindre 10.11.11.11.
Dans ce scénario, PE1 utilise la pile d'étiquettes {L2 L3 L1} pour transférer des données à CE2 si ces éléments sont vrais :
L1 est l'étiquette VPN.
L2 est l'étiquette RSVP permettant d'atteindre le terminal TE.
L3 est l'étiquette TDP pour atteindre 10.11.11.11 (reçue de P2).
La solution consiste à activer le protocole TDP sur le tunnel TE.
Voici la configuration du tunnel TE sur PE1 avec le protocole TDP activé dessus. Les ajouts sont en caractères gras.
PE1 |
---|
PE1# show run interface tunnel 0 ! interface Tunnel0 ip unnumbered Loopback0 no ip directed-broadcast no ip route-cache distributed tag-switching ip !--- This enables TDP. tunnel destination 10.5.5.5 tunnel mode mpls traffic-eng tunnel mpls traffic-eng autoroute announce tunnel mpls traffic-eng path-option 10 dynamic end ! |
Il s'agit de la configuration supplémentaire sur la périphérie du tunnel TE pour accepter les paquets TDP dirigés :
P2# show run | i directed-hello tag-switching tdp discovery directed-hello accept !--- This configures P2 to accept directed TDP hellos. P2#
PE1# show tag tdp neighbor | i Peer Peer TDP Ident: 10.7.7.7:0; Local TDP Ident 10.2.2.2:0 Peer TDP Ident: 10.5.5.5:0; Local TDP Ident 10.2.2.2:0 PE1# PE1# show ip cef vrf aqua 172.16.13.13 172.16.13.0/24, version 11 0 packets, 0 bytes tag information set local tag: VPN route head fast tag rewrite with Tu0, point2point, tags imposed {19 18 12308} via 10.11.11.11, 0 dependencies, recursive next hop 10.5.5.5, Tunnel0 via 10.11.11.11/32 valid adjacency tag rewrite with Tu0, point2point, tags imposed {19 18 12308} PE1# PE1# show mpls traffic-eng tunnels tunnel 0 | i Label InLabel : - OutLabel : Ethernet2/0/2, 19 !--- This is the TE label learned via RSVP. PE1# PE1# show tag tdp bind 10.11.11.11 32 tib entry: 10.11.11.11/32, rev 20 local binding: tag: 21 remote binding: tsr: 10.7.7.7:0, tag: 17 remote binding: tsr: 10.5.5.5:0, tag: 18 !--- This is the TDP label from P2.
Lorsque P1 reçoit le paquet avec la pile d'étiquettes {19 18 12308}, il affiche la balise 19 et envoie le paquet avec la pile d'étiquettes {18 12308} à P2. P2 recherche l’étiquette 18 dans sa LFIB, puis l’affiche et l’envoie sur l’interface sortante PO2/0/0 vers PE1. PE1 reçoit le paquet portant l’étiquette 12308 et le commute correctement vers CE2.
P2# show tag for tag 18 Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 18 Pop tag 10.11.11.11/32 117496 POS2/0/0 point2point P2# show tag tdp discovery Local TDP Identifier: 10.5.5.5:0 Discovery Sources: Interfaces: Ethernet0/3 (tdp): xmit/recv TDP Id: 10.7.7.7:0 POS2/0/0 (tdp): xmit/recv TDP Id: 10.11.11.11:0 Directed Hellos: 10.5.5.5 -> 10.2.2.2 (tdp): passive, xmit/recv TDP Id: 10.2.2.2:0 P2# show tag tdp neighbor 10.2.2.2 Peer TDP Ident: 10.2.2.2:0; Local TDP Ident 10.5.5.5:0 TCP connection: 10.2.2.2.711 - 10.5.5.5.11690 State: Oper; PIEs sent/rcvd: 469/465; Downstream Up time: 01:41:08 TDP discovery sources: Directed Hello 10.5.5.5 -> 10.2.2.2, passive Addresses bound to peer TDP Ident: 10.7.7.2 172.16.47.166 10.2.2.2 PE1# show tag tdp neighbor 10.5.5.5 Peer TDP Ident: 10.5.5.5:0; Local TDP Ident 10.2.2.2:0 TCP connection: 10.5.5.5.11690 - 10.2.2.2.711 State: Oper; PIEs sent/rcvd: 438/441; Downstream Up time: 01:35:08 TDP discovery sources: Directed Hello 10.2.2.2 -> 10.5.5.5, active !--- This indicates the directed neighbor. Addresses bound to peer TDP Ident: 10.5.5.5 10.12.12.5 10.8.8.5 PE1# show ip route 10.11.11.11 Routing entry for 10.11.11.11/32 Known via "isis", distance 115, metric 40, type level-1 Redistributing via isis B Last update from 10.5.5.5 on Tunnel0, 01:52:21 ago Routing Descriptor Blocks: * 10.5.5.5, from 10.11.11.11, via Tunnel0 Route metric is 40, traffic share count is 1
Une commande ping de CE1 vers un hôte sur CE2 confirme la solution.
CE1# ping 172.16.13.13 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 172.16.13.13, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/4 ms CE1#
La configuration du tunnel sur PE1 est présentée ici :
PE1 |
---|
P1# show run interface tunnel 0 Building configuration... Current configuration : 255 bytes ! interface Tunnel0 ip unnumbered Loopback0 no ip directed-broadcast ip route-cache distributed tunnel destination 10.5.5.5 tunnel mode mpls traffic-eng tunnel mpls traffic-eng autoroute announce tunnel mpls traffic-eng path-option 10 dynamic end |
Vérifiez ici comment les paquets destinés à CE2 172.16.13.13 sont commutés. La sortie de commande show ip cef montre que les paquets vers la destination 172.16.13.13 sont commutés avec la pile d'étiquettes {17 12308} :
PE1# show ip cef vrf aqua 172.16.13.13 172.16.13.0/24, version 18, cached adjacency 10.7.7.7 0 packets, 0 bytes tag information set local tag: VPN route head fast tag rewrite with Et2/0/2, 10.7.7.7, tags imposed {17 12308} via 10.11.11.11, 0 dependencies, recursive next hop 10.7.7.7, Ethernet2/0/2 via 10.11.11.11/32 valid cached adjacency tag rewrite with Et2/0/2, 10.7.7.7, tags imposed {17 12308}
Lorsque P1 reçoit ce paquet, il supprime l’étiquette externe 17 et le commute après avoir examiné la table de routage IP sur Tunnel0. Notez la valeur implicit-null OutLabel dans cette sortie ; cela signifie que l'interface sortante n'est pas commutée par étiquette.
P1# show ip cef 10.11.11.11 detail 10.11.11.11/32, version 52 0 packets, 0 bytes tag information set local tag: 17 fast tag rewrite with Tu0, point2point, tags imposed {} via 10.5.5.5, Tunnel0, 0 dependencies next hop 10.5.5.5, Tunnel0 valid adjacency tag rewrite with Tu0, point2point, tags imposed {} P1# show mpls traffic-eng tunnel tunnel 0 | i Label InLabel : - OutLabel : Ethernet2/0, implicit-null P1# show tag for 10.11.11.11 detail Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 17 Untagged 10.11.11.11/32 882 Tu0 point2point MAC/Encaps=14/14, MTU=1500, Tag Stack{}, via Et2/0 006009E08B0300603E2B02408847 No output feature configured Per-packet load-sharing, slots: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 P1# show ip route 10.11.11.11 Routing entry for 10.11.11.11/32 Known via "isis", distance 115, metric 30, type level-1 Redistributing via isis Last update from 10.5.5.5 on Tunnel0, 00:03:20 ago Routing Descriptor Blocks: * 10.5.5.5, from 10.11.11.11, via Tunnel0 Route metric is 30, traffic share count is 1
Une fois que P2 reçoit le paquet portant l’étiquette 12308, il examine sa table de transfert. Comme il n'y a aucun moyen que P2 puisse connaître la balise VPN 12308 de CE2, il abandonne le paquet.
P2# show tag for tag 12308 detail Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface
Cela casse le chemin des paquets VPN destinés à CE2. Elle est confirmée par la requête ping à CE2 172.16.13.13/32.
PE1# CE1# ping 172.16.13.13 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 172.16.13.13, timeout is 2 seconds: ..... Success rate is 0 percent (0/5) CE1#
La solution consiste à activer le protocole LDP/TDP sur le tunnel. La section suivante traite de cette solution.
Lorsque le protocole LDP est activé sur le tunnel, les configurations de P1 apparaissent comme indiqué ici. Les ajouts sont en caractères gras.
PE1 |
---|
P1# show run interface tunnel 0 Building configuration... Current configuration : 273 bytes ! interface Tunnel0 ip unnumbered Loopback0 no ip directed-broadcast ip route-cache distributed mpls label protocol ldp tunnel destination 10.5.5.5 tunnel mode mpls traffic-eng tunnel mpls traffic-eng autoroute announce tunnel mpls traffic-eng path-option 10 dynamic end ! |
PE1 envoie des paquets au préfixe 172.16.13.13/32 avec la pile d’étiquettes {17 12308}.
PE1# PE1# show tag for 10.11.11.11 detail Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 21 17 10.11.11.11/32 0 Et2/0/2 10.7.7.7 MAC/Encaps=14/18, MTU=1500, Tag Stack{17} 00603E2B02410060835887428847 00011000 No output feature configured Per-packet load-sharing, slots: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 PE1# PE1# show ip cef 10.11.11.11 detail 10.11.11.11/32, version 60, cached adjacency 10.7.7.7 0 packets, 0 bytes tag information set local tag: 21 fast tag rewrite with Et2/0/2, 10.7.7.7, tags imposed {17} via 10.7.7.7, Ethernet2/0/2, 1 dependency next hop 10.7.7.7, Ethernet2/0/2 valid cached adjacency tag rewrite with Et2/0/2, 10.7.7.7, tags imposed {17} PE1# show ip cef vrf aqua 172.16.13.13 172.16.13.0/24, version 18, cached adjacency 10.7.7.7 0 packets, 0 bytes tag information set local tag: VPN route head fast tag rewrite with Et2/0/2, 10.7.7.7, tags imposed {17 12308} via 10.11.11.11, 0 dependencies, recursive next hop 10.7.7.7, Ethernet2/0/2 via 10.11.11.11/32 valid cached adjacency tag rewrite with Et2/0/2, 10.7.7.7, tags imposed {17 12308}
P1 reçoit le paquet avec la pile d'étiquettes {17 12308} et recherche son LFIB pour l'étiquette 17.
P1# show tag for tag 17 detail Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 17 18 10.11.11.11/32 1158 Tu0 point2point MAC/Encaps=14/18, MTU=1496, Tag Stack{18}, via Et2/0 006009E08B0300603E2B02408847 00012000 No output feature configured Per-packet load-sharing, slots: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 P1# P1# show ip cef 10.11.11.11 detail 10.11.11.11/32, version 52 0 packets, 0 bytes tag information set local tag: 17 fast tag rewrite with Tu0, point2point, tags imposed {18} via 10.5.5.5, Tunnel0, 0 dependencies next hop 10.5.5.5, Tunnel0 valid adjacency tag rewrite with Tu0, point2point, tags imposed {18}
Il indique que l'étiquette 17 doit être remplacée par l'étiquette 18. Par conséquent, ce paquet est commuté sur l'interface de tunnel avec la pile d'étiquettes {18 12308}.
P2 reçoit le paquet sur son interface de tunnel avec la pile d'étiquettes {18 12308}. Il affiche la balise 18 (car il s’agit de l’avant-dernier routeur de saut) et transmet le paquet à PE2 avec l’étiquette 12308.
P2# show tag for tag 18 detail Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 18 Pop tag 10.11.11.11/32 127645 PO2/0/0 point2point MAC/Encaps=4/4, MTU=4474, Tag Stack{} 0F008847 No output feature configured Per-packet load-sharing, slots: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 P2#
PE2 reçoit le paquet portant l’étiquette 12308, qui le transfère vers CE2 avec succès.
PE2# show tag forwarding tags 12308 detail Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 12308 Aggregate 172.16.13.0/24[V] 12256 MAC/Encaps=0/0, MTU=0, Tag Stack{} VPN route: aqua No output feature configured Per-packet load-sharing, slots: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 PE2# CE1# ping 172.16.13.13 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 172.16.13.13, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms CE1#
PE1 |
---|
P1# show run interface tunnel 0 Building configuration... Current configuration : 258 bytes ! interface Tunnel0 ip unnumbered Loopback0 no ip directed-broadcast ip route-cache distributed tunnel destination 10.11.11.11 tunnel mode mpls traffic-eng tunnel mpls traffic-eng autoroute announce tunnel mpls traffic-eng path-option 10 dynamic end |
PE1 envoie un paquet destiné à 172.16.13.13 à son prochain saut 10.11.11.11 avec la pile d’étiquettes {17 12308}.
PE1# show ip cef vrf aqua 172.16.13.13 172.16.13.0/24, version 18, cached adjacency 10.7.7.7 0 packets, 0 bytes tag information set local tag: VPN route head fast tag rewrite with Et2/0/2, 10.7.7.7, tags imposed {17 12308} via 10.11.11.11, 0 dependencies, recursive next hop 10.7.7.7, Ethernet2/0/2 via 10.11.11.11/32 valid cached adjacency tag rewrite with Et2/0/2, 10.7.7.7, tags imposed {17 12308}
P1 reçoit le paquet avec la pile d'étiquettes {17 12308}. P1 examine sa table LFIB et vérifie la pile de balises {17} et bascule le paquet portant l'étiquette {17} vers P2.
P1# show tag for 10.11.11.11 detail Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 17 Untagged 10.11.11.11/32 411 Tu0 point2point MAC/Encaps=14/18, MTU=1500, Tag Stack{17}, via Et2/0 006009E08B0300603E2B02408847 00011000 No output feature configured Per-packet load-sharing, slots: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 P1# show tag for tag 17 detail Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 17 Untagged 10.11.11.11/32 685 Tu0 point2point MAC/Encaps=14/18, MTU=1500, Tag Stack{17}, via Et2/0 006009E08B0300603E2B02408847 00011000 No output feature configured Per-packet load-sharing, slots: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 P1# P1# show ip cef 10.11.11.11 10.11.11.11/32, version 67 0 packets, 0 bytes tag information set local tag: 17 fast tag rewrite with Tu0, point2point, tags imposed {17} via 10.11.11.11, Tunnel0, 0 dependencies next hop 10.11.11.11, Tunnel0 valid adjacency tag rewrite with Tu0, point2point, tags imposed {17}
P2 reçoit le paquet avec la pile d'étiquettes {17 12308}. P2, étant l’avant-dernier routeur de saut, pops label 17.
P2# show tag for tag 17 detail Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 17 Pop tag 10.7.7.7 0 [5] 535 PO2/0/0 point2point MAC/Encaps=4/4, MTU=4474, Tag Stack{} 0F008847 No output feature configured P2#
PE2 reçoit ensuite le paquet portant l’étiquette 12308. P2 sait que la destination de l'étiquette 12308 est directement connectée. Par conséquent, la requête ping de CE1 à CE2 est 10.
PE2# show tag for tag 12308 detail Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 12308 Aggregate 172.16.13.0/24[V] 12776 MAC/Encaps=0/0, MTU=0, Tag Stack{} VPN route: aqua No output feature configured Per-packet load-sharing, slots: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 PE2#
Remarque : Aucune interface sortante n'est affichée car la balise sortante est Aggregate. En effet, le préfixe associé à l'étiquette est la route directement connectée.
CE1# ping 172.16.13.13 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 172.16.13.13, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/4 ms CE1#
Référez-vous aux notes de terrain : MPLS VPN avec conseil interAS TE et MPLS sur le logiciel Cisco IOS® pour plus de détails.
Lorsque le tunnel TE est terminé sur le PE de sortie, le VPN MPLS et le TE fonctionnent ensemble sans configuration supplémentaire. Lorsque le tunnel TE est terminé sur n'importe quel routeur P (avant le PE dans le coeur), le transfert du trafic VPN MPLS échoue car les paquets arrivent avec des étiquettes VPN comme étiquettes externes, qui ne sont pas dans les LFIB de ces périphériques. Par conséquent, ces routeurs intermédiaires ne sont pas en mesure de transférer des paquets vers la destination finale, le réseau du client VPN. Dans ce cas, le protocole LDP/TDP doit être activé sur le tunnel TE pour résoudre le problème.
Révision | Date de publication | Commentaires |
---|---|---|
1.0 |
10-Aug-2005 |
Première publication |