In dit document wordt beschreven wat Generic Routing Encapsulation (GRE)-levenden zijn en hoe ze werken.
Een GRE-tunnel is een logische interface op een router die een manier biedt om netwerkprotocolpakketten in een transportprotocol in te kapselen. Het is een mechanisme om netwerkverkeer via een point-to-point-inkapselingssysteem te vervoeren.
GRE-tunnels zijn ontworpen om volledig staatloos te zijn. Dit betekent dat elk tunneleindpunt geen informatie bijhoudt over de status of beschikbaarheid van het externe tunneleindpunt. Een gevolg hiervan is dat de router voor het eindpunt van de lokale tunnel niet in staat is om het lijnprotocol van de GRE Tunnel-interface naar beneden te brengen als het externe uiteinde van de tunnel onbereikbaar is. De mogelijkheid om een interface te markeren als down wanneer het externe uiteinde van de link niet beschikbaar is, wordt gebruikt om routes (met name statische routes) in de routeringstabel te verwijderen die die interface gebruiken als de uitgaande interface. Specifiek, als het lijnprotocol voor een interface wordt gewijzigd in down, worden statische routes die erop wijzen dat de interface wordt verwijderd uit de routeringstabel. Dit maakt de installatie van een alternatieve (zwevende) statische route of voor Policy Based Routing (PBR) mogelijk om een alternatieve next-hop of interface te selecteren.
Normaal gesproken komt een GRE Tunnel-interface naar boven zodra deze is geconfigureerd en blijft deze omhoog zolang er een geldig tunnelbronadres of een tunnelbroninterface is die zich in een up-status bevindt. Het IP-adres van de tunnelbestemming moet ook routeerbaar zijn. Dit is zelfs het geval als de andere kant van de tunnel niet is geconfigureerd. Dit betekent dat een statische route of PBR-verzending van pakketten via de GRE-tunnelinterface van kracht blijft, ook al kunnen de GRE-tunnelpakketten het andere uiteinde van de tunnel niet bereiken.
Voordat GRE keepalives werden geïmplementeerd, waren er alleen manieren om een tunnelinterface neer te halen vanwege lokale problemen op de router, en niet vanwege problemen in het transportnetwerk. Bijvoorbeeld het geval waarin de GRE-tunnelpakketten met succes worden doorgestuurd, maar verloren gaan voordat ze het andere uiteinde van de tunnel bereiken. Dergelijke scenario's zouden ertoe leiden dat gegevenspakketten die door de GRE-tunnel gaan "zwarte gaten" zijn, hoewel een alternatieve route die PBR gebruikt of een zwevende statische route via een andere interface beschikbaar is. Keepalives op de GRE-tunnelinterface worden gebruikt om dit probleem op dezelfde manier op te lossen als keepalives worden gebruikt op fysieke interfaces.
Het GRE-tunnelkeepalive-mechanisme is vergelijkbaar met PPP keepalives, omdat het de mogelijkheid biedt voor één zijde om keepalive-pakketten van en naar een externe router te ontvangen, zelfs als de externe router GRE keepalives niet ondersteunt. Aangezien GRE een pakkettunnelmechanisme is voor het tunnelen van IP binnen IP, kan een GRE IP-tunnelpakket worden gebouwd in een ander GRE IP-tunnelpakket. Voor GRE keepalives bouwt de afzender het keepalive-antwoordpakket vooraf op in het oorspronkelijke keepalive-verzoekpakket, zodat het externe einde alleen de standaard GRE-decapsulatie van de buitenste GRE IP-header hoeft te doen en vervolgens het binnenste IP GRE-pakket naar de afzender terugstuurt. Deze pakketten illustreren de IP tunneling concepten waarbij GRE het inkapselingsprotocol is en IP het transportprotocol. Het passagiersprotocol is ook IP (hoewel het een ander protocol kan zijn zoals NHRP ).
Normaal pakket:
| IP-header |
TCP-header |
Telnet |
Pakket met tunnel:
| GRE IP-header |
GRE |
|
Hier is een voorbeeld van een keepalive-pakket dat afkomstig is van Router A en bestemd is voor Router B. De keepalive-reactie die Router B terugkeert naar Router A bevindt zich al in de Inner IP-header. Router B decapsuleert eenvoudig het keepalive-pakket en stuurt het terug naar de fysieke interface (S2). Het verwerkt het GRE keepalive-pakket net als elk ander GRE IP-gegevenspakket.
GRE Keepalives:
| GRE IP-header |
GRE |
|
|||||||
| Bron A | Bestemming B | PT=IP | |||||||
Dit mechanisme zorgt ervoor dat de keepalive-respons wordt doorgestuurd naar de fysieke interface in plaats van de tunnelinterface. Dit betekent dat het GRE keepalive-responspakket niet wordt beïnvloed door outputfuncties op de tunnelinterface, zoals "tunnelbescherming ..." QoS, Virtual Routing and Forwarding (VRF), enzovoort.
Een ander kenmerk van GRE tunnel keepalives is dat de keepalive timers aan elke kant onafhankelijk zijn en niet hoeven te matchen, vergelijkbaar met PPP keepalives.
Met Cisco IOS® Software Release 12.2(8)T is het mogelijk om keepalives te configureren op een point-to-point GRE-tunnelinterface. Met deze verandering wordt de tunnelinterface dynamisch afgesloten als de keepalives gedurende een bepaalde periode uitvallen.
Voor meer informatie over hoe andere vormen van keepalives werken, raadpleegt u Overzicht van Keepalive Mechanisms op Cisco IOS.
Deze uitvoer toont de opdrachten die u gebruikt om keepalives te configureren in GRE-tunnels.
Router#configure terminal
Router(config)#interface tunnel0
Router(config-if)#keepalive 5 4
!--- The syntax of this command is keepalive [seconds [retries]].
!--- Keepalives are sent every 5 seconds and 4 retries.
!--- Keepalives must be missed before the tunnel is shut down.
!--- The default values are 10 seconds for the interval and 3 retries.
Om beter te begrijpen hoe het tunnelkeepalive-mechanisme werkt, kunt u dit voorbeeld van tunneltopologie en -configuratie bekijken:

Router A:
interface loopback 0
ip address 192.168.1.1 255.255.255.255
!
interface tunnel 0
ip address 10.10.10.1 255.255.255.252
tunnel source loopback0
tunnel destination 192.168.1.2
keepalive 5 4
Router B:
interface loopback 0
ip address 192.168.1.2 255.255.255.255
!
interface tunnel 0
ip address 10.10.10.2 255.255.255.252
tunnel source loopback0
tunnel destination 192.168.1.1
keepalive 5 4
In dit scenario voert router A de volgende stappen uit:
| IP-header |
GRE |
|
| Bron: 192 168 1 2 | Bestemming: 192 168 1 1 1 | PT=0 |
Verzendt dat pakket uit de tunnelinterface, wat resulteert in de inkapseling van het pakket met de buitenste IP-header waarbij:
| GRE IP-header |
GRE |
|
|||||||
| Bron: 192 168 1 1 1 | Bestemming: 192 168 1 2 | PT=IP | |||||||
| IP-header |
GRE |
|
| Bron: 192 168 1 2 | Bestemming: 192 168 1 1 1 | PT=0 |
Als Router B onbereikbaar is, blijft Router A keepalive-pakketten en normaal verkeer maken en verzenden. Als de keepalives niet terugkomen, blijft het tunnellijnprotocol overeind zolang de tunnel keepalive-teller kleiner is dan het aantal pogingen, dat in dit geval vier is. Als die voorwaarde niet waar is, wordt de volgende keer dat Router A probeert een keepalive naar Router B te sturen, het lijnprotocol naar beneden gehaald.
Om keepalives in actie te zien, schakelt u debug tunnel en debug tunnel keepalive in.
Voorbeeldfouten van router A:
debug tunnel keepalive
Tunnel keepalive debugging is on
01:19:16.019: Tunnel0: sending keepalive, 192.168.1.1->192.168.1.2
(len=24 ttl=0), counter=15
01:19:21.019: Tunnel0: sending keepalive, 192.168.1.1->192.168.1.2
(len=24 ttl=0), counter=16
01:19:26.019: Tunnel0: sending keepalive, 192.168.1.1->192.168.1.2
(len=24 ttl=0), counter=17
Unicast RPF (Unicast Reverse Path Forwarding) is een beveiligingsfunctie die helpt bij het detecteren en laten vallen van vervalst IP-verkeer met een validatie van het pakketbronadres tegen de routeringstabel. Wanneer Unicast RPF in de strikte modus wordt uitgevoerd (ip verifieert unicast-bron bereikbaar via rx), moet het pakket worden ontvangen op de interface die de router zou gebruiken om het retourpakket door te sturen. Als de strikte modus of de losse modus Unicast RPF is ingeschakeld op de tunnelinterface van de router die de GRE-pakketten ontvangt, worden de keepalives-pakketten na tunneldecapsulatie door RPF gedropt omdat de route naar het bronadres van het pakket (eigen tunnelbronadres van de router) niet via de tunnelinterface loopt. RPF-pakketdruppels kunnen als volgt worden waargenomen in de uitvoer van het weergegeven ip-verkeer:
Router#show ip traffic | section Drop
Drop: 0 encapsulation failed, 0 unresolved, 0 no adjacency
0 no route, 156 unicast RPF, 0 forced drop
0 options denied
Als gevolg hiervan haalt de initiatiefnemer van de tunnel keepalives de tunnel naar beneden vanwege gemiste keepalives-retourpakketten. Dus Unicast RPF mag niet worden geconfigureerd in strikte of losse modus voor GRE tunnel houdt levenden om te werken. Voor meer informatie over Unicast RPF, zie Inzicht in Unicast omgekeerde pad doorsturen.
GRE-tunnels worden soms gecombineerd met IPsec omdat IPsec geen IP-multicastpakketten ondersteunt. Hierdoor kunnen dynamische routeringsprotocollen niet succesvol worden uitgevoerd via een IPsec VPN-netwerk. Aangezien GRE-tunnels IP-multicast ondersteunen, kan een dynamisch routeringsprotocol over een GRE-tunnel worden uitgevoerd. De GRE IP-unicastpakketten die daaruit voortvloeien, kunnen worden gecodeerd door IPsec.
Er zijn twee verschillende manieren waarop IPsec GRE-pakketten kan coderen:
Beide methoden specificeren dat IPsec-codering wordt uitgevoerd na de toevoeging van de GRE-inkapseling. Er zijn twee belangrijke verschillen tussen wanneer u een cryptografische kaart gebruikt en wanneer u tunnelbescherming gebruikt:
Gezien de twee manieren om encryptie toe te voegen aan GRE-tunnels, zijn er drie verschillende manieren om een gecodeerde GRE-tunnel in te stellen:
De configuratie beschreven in scenario's 1 en 2 wordt vaak gedaan in een hub-and-spoke ontwerp. De tunnelbeveiliging is geconfigureerd op de hub-router om de configuratie te verkleinen en op elke spaak wordt een statische cryptografische kaart gebruikt.
Overweeg elk van deze scenario's met GRE-keepalives ingeschakeld op Peer B (spoke) en waar de tunnelmodus wordt gebruikt voor codering.
Configuratie:
In dit scenario, aangezien de GRE-keepalives zijn geconfigureerd op Peer B, zijn de sequentiegebeurtenissen wanneer een keepalive wordt gegenereerd als volgt:
| IP-header |
ESP-koptekst |
GRE IP-header |
GRE-koptekst |
|
ESP-aanhangwagen |
|||||||
| Bron B | Bestemming A | Bron B | Bestemming A | PT=IP | ||||||||
| GRE IP-header |
GRE |
|
|||||||
| Bron B | Bestemming A | PT=IP | |||||||
| IP-header |
GRE |
|
| Bron A | Bestemming B | PT=0 |
| IP-header |
GRE |
|
| Bron A | Bestemming B | PT=0 |
Daarom, hoewel de Peer A reageert op de keepalives en de router Peer B de antwoorden ontvangt, verwerkt het ze nooit en verandert het uiteindelijk het lijnprotocol van de tunnelinterface in de staat down.
Resultaat:
Keepalives ingeschakeld op Peer B omdat de tunnelstatus op Peer B verandert in omhoog/omlaag.
Configuratie:
In dit scenario, aangezien de GRE-keepalives zijn geconfigureerd op Peer B, zijn de sequentiegebeurtenissen wanneer een keepalive wordt gegenereerd als volgt:
| IP-header |
ESP-koptekst |
GRE IP-header |
GRE-koptekst |
|
ESP-aanhangwagen |
|||||
| Bron B | Bestemming A | Bron B | Bestemming A | PT=IP |
| GRE IP-header |
GRE |
|
|||||||
| Bron B | Bestemming A | PT=IP | |||||||
| IP-header |
GRE |
|
| Bron A | Bestemming B | PT=0 |
| IP-header |
ESP-koptekst |
|
ESP-aanhangwagen |
|||||||
| Bron B | Bestemming A | |||||||||
| IP-header |
GRE |
|
| Bron A | Bestemming B | PT=0 |
Resultaat:
Keepalives ingeschakeld op Peer B bepalen met succes wat de tunnelstatus kan zijn op basis van de beschikbaarheid van de tunnelbestemming.
Configuratie:
Dit scenario is vergelijkbaar met Scenario 1 in die zin dat wanneer Peer A de gecodeerde keepalive ontvangt, deze wordt ontcijferd en gedecapsuleerd. Wanneer het antwoord echter weer wordt doorgestuurd, wordt het niet gecodeerd omdat Peer A tunnelbescherming gebruikt op de tunnelinterface. Peer B laat dus de niet-versleutelde keepalive-respons vallen en verwerkt deze niet.
Resultaat:
Keepalives ingeschakeld op Peer B omdat de tunnelstatus op Peer B verandert in omhoog/omlaag.
In dergelijke situaties waarin de GRE-pakketten moeten worden gecodeerd, zijn er drie mogelijke oplossingen:
| Revisie | Publicatiedatum | Opmerkingen |
|---|---|---|
4.0 |
15-Jun-2026
|
hercertificering |
3.0 |
18-Apr-2025
|
Opmaak bijgewerkt en enkele grammatica- en spellingsfouten gecorrigeerd. |
2.0 |
19-Dec-2022
|
Alt-tekst toegevoegd.
Bijgewerkte inleiding, achtergronden, stijlvereisten en opmaak. |
1.0 |
31-Oct-2014
|
Eerste vrijgave |