Introduction
Ce document décrit comment résoudre les problèmes d'interface GRE (Generic Routing Encapsulation) dans un environnement SD-WAN.
Informations générales
Dans la solution Cisco Viptela, les exemples d'utilisation des interfaces GRE incluent :
- Envoyer le trafic à ZScaler (HTTP-Proxy) via vSmart Data-Policy ou localement.
- Interface GRE de service principal avec sauvegarde par défaut vers le data center.
- Chaînage de service
Il y a des cas où l'interface GRE ne s'active pas et/ou ne fonctionne pas.
Dans ces situations, vérifiez
- L'interface GRE est activée via : show interface gre*
- Keepalives GRE via : show tunnel gre-keepalives
Méthodologie
En cas de problème, configurez une liste de contrôle d'accès (ACL ou access-list) pour voir si les paquets GRE (47) sortent/entrent.
Vous ne pouvez pas voir les paquets GRE via TCP Dump, car les paquets sont générés par le chemin rapide.
Parfois, en raison de la traduction d'adresses réseau (NAT), les keepalives GRE peuvent être supprimés. Dans ce cas, désactivez le keepalive et vérifiez si le tunnel s'active.
En outre, si le tunnel GRE est constamment en train de basculer et de désactiver des keepalives, cela maintient l'interface en état de marche.
Toutefois, il présente un inconvénient, car s'il y a une question légitime, il est difficile de savoir que le GRE ne fonctionne pas.
Voir ici dans le document qui montre un exemple.
Ceci est une configuration d'interface GRE qui fonctionne
IN VPN0
vpn 0
interface gre1
ip address 192.0.2.1/30
tunnel-source
tunnel-destination
tcp-mss-adjust 1300
no shutdown
!
interface gre2
ip address 192.0.2.5/30
tunnel-source
tunnel-destination
tcp-mss-adjust 1300
no shutdown
!
!
Côté service
vpn
service FW interface gre1 gre2
Dans la solution Cisco SD-WAN basée sur les routes vEdge, les interfaces GRE fonctionnent en mode actif en veille et non actif-actif.
À tout moment, seule l'interface GRE est à l'état Up/Up.
Pratique
Créer une stratégie pour les listes d'accès
vEdge# show running-config policy access-list
policy
access-list GRE-In
sequence 10
match
protocol 47
!
action accept
count gre-in
!
!
default-action accept
!
access-list GRE-Out
sequence 10
match
protocol 47
!
action accept
count gre-out
!
!
default-action accept
!
!
vEdge#
Créez des compteurs gre-in et gre-out puis vous devez appliquer la liste de contrôle d'accès à l'interface (nos trajets de tunnel sur ge0/0).
La liste de contrôle d’accès ci-dessus peut être appliquée avec l’adresse source de l’interface physique et l’adresse de destination du point de terminaison GRE.
vEdge# show running-config vpn 0 interface ge0/0
vpn 0
interface ge0/0
ip address 198.51.100.1/24
tunnel-interface
encapsulation ipsec
max-control-connections 1
allow-service all
no allow-service bgp
allow-service dhcp
allow-service dns
allow-service icmp
no allow-service sshd
no allow-service netconf
no allow-service ntp
no allow-service ospf
no allow-service stun
!
no shutdown
access-list GRE-In in
access-list GRE-Out out
!
!
vEdge#
Vous pouvez maintenant voir les compteurs des paquets GRE entrants et sortants, car ils sont dans le chemin rapide, on ne peut pas voir avec l'utilitaire tcpdump.
vEdge# show policy access-list-counters
COUNTER
NAME NAME PACKETS BYTES
----------------------------------
GRE-In gre-in 176 10736
GRE-Out gre-out 88 2112
vEdge#
Voici notre tunnel GRE.
vEdge# show interface gre1
IF IF IF TCP
AF ADMIN OPER TRACKER ENCAP PORT SPEED MSS RX TX
VPN INTERFACE TYPE IP ADDRESS STATUS STATUS STATUS TYPE TYPE MTU HWADDR MBPS DUPLEX ADJUST UPTIME PACKETS PACKETS
---------------------------------------------------------------------------------------------------------------------------------------------------------
0 gre1 ipv4 192.0.2.1/30 Up Up NA null service 1500 05:05:05:05:00:00 1000 full 1420 0:07:10:28 2968 2968
vEdge#
vEdge# show running-config vpn 0 interface gre1
vpn 0
interface gre1
ip address 192.0.2.1/30/30
tunnel-source-interface ge0/0
tunnel-destination 192.0.2.5/30
no shutdown
!
!
vEdge#
Vous pouvez vérifier si le trafic est en cours sur l'interface GRE via la commande show app cflow.
Voici un exemple de trafic bidirectionnel (en entrée et en sortie) :
vEdge# show app cflowd flows
TCP TIME EGRESS INGRESS
SRC DEST IP CNTRL ICMP TOTAL TOTAL MIN MAX TO INTF INTF
VPN SRC IP DEST IP PORT PORT DSCP PROTO BITS OPCODE NHOP IP PKTS BYTES LEN LEN START TIME EXPIRE NAME NAME
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
10 203.0.113.1 203.0.113.11 61478 443 0 6 16 0 203.0.113.254 3399 286304 60 1339 Sun Apr 8 10:23:05 2018 599 gre1 ge0/6
10 203.0.113.11 203.0.113.1 443 61478 0 6 24 0 203.0.113.1262556 192965 40 1340 Sun Apr 8 10:23:05 2018 592 ge0/6 gre1
Exemple de désactivation des keepalives (KA) sur l'interface GRE :
KA par défaut est 10 (intervalle Hello) et 3 (tolérance)
Un KA de 0 0 désactive le KA sur l'interface GRE.
vEdge# show running-config vpn 0 interface gre* | details
vpn 0
interface gre1
description "Primary ZEN"
ip address <ip/mask>
keepalive 0 0
tunnel-source
tunnel-destination
no clear-dont-fragment
mtu 1500
tcp-mss-adjust 1300
no shutdown
!
Une interface GRE UP/Down s'affiche comme UP/UP (en passant la vérification KA).
Voyez, compteur TX ici quand il augmente quand KA est désactivé. Cela signifie que vEdge est TX les paquets, mais vous ne voyez pas l'augmentation du compteur RX, qui pointe sur un problème distant.
vEdge# show interface gre*
IF IF TCP
ADMIN OPER ENCAP PORT SPEED MSS RX TX
VPN INTERFACE IP ADDRESS STATUS STATUS TYPE TYPE MTU HWADDR MBPS DUPLEX ADJUST UPTIME PACKETS PACKETS
---------------------------------------------------------------------------------------------------------------------------------------------------
### With KA ON
0 gre1 192.0.2.1/30 Up Down null service 1500 cb:eb:98:02:00:00 - - 1300 - 413218129 319299248
### With KA OFF
0 gre1 192.0.2.1/30 Up Up null service 1500 cb:eb:98:02:00:00 100 half 1300 0:00:01:19 413218129 319299280