La documentazione per questo prodotto è stata redatta cercando di utilizzare un linguaggio senza pregiudizi. Ai fini di questa documentazione, per linguaggio senza di pregiudizi si intende un linguaggio che non implica discriminazioni basate su età, disabilità, genere, identità razziale, identità etnica, orientamento sessuale, status socioeconomico e intersezionalità. Le eventuali eccezioni possono dipendere dal linguaggio codificato nelle interfacce utente del software del prodotto, dal linguaggio utilizzato nella documentazione RFP o dal linguaggio utilizzato in prodotti di terze parti a cui si fa riferimento. Scopri di più sul modo in cui Cisco utilizza il linguaggio inclusivo.
Cisco ha tradotto questo documento utilizzando una combinazione di tecnologie automatiche e umane per offrire ai nostri utenti in tutto il mondo contenuti di supporto nella propria lingua. Si noti che anche la migliore traduzione automatica non sarà mai accurata come quella fornita da un traduttore professionista. Cisco Systems, Inc. non si assume alcuna responsabilità per l’accuratezza di queste traduzioni e consiglia di consultare sempre il documento originale in inglese (disponibile al link fornito).
In questo documento viene descritto cosa sono i pacchetti keepalive GRE (Generic Routing Encapsulation) e come funzionano.
Un tunnel GRE è un'interfaccia logica usata sui router Cisco per incapsulare i pacchetti in un protocollo di trasporto. Si tratta di un'architettura progettata per fornire i servizi e implementare uno schema di incapsulamento point-to-point.
I tunnel GRE sono progettati per essere completamente privi di stato. Ciò significa che ogni endpoint del tunnel non mantiene alcuna informazione sullo stato o sulla disponibilità dell'endpoint del tunnel remoto. Di conseguenza, il router dell'endpoint del tunnel locale non è in grado di disattivare il protocollo di linea dell'interfaccia del tunnel GRE se l'estremità remota del tunnel non è raggiungibile. La possibilità di contrassegnare un'interfaccia come inattiva quando l'estremità remota del collegamento non è disponibile viene usata per rimuovere tutte le route (in particolare le route statiche) nella tabella di routing che usano quell'interfaccia come interfaccia in uscita. In particolare, se il protocollo di linea di un'interfaccia viene modificato in inattivo, tutte le route statiche che puntano all'esterno dell'interfaccia vengono rimosse dalla tabella di routing. In questo modo, è possibile installare un percorso statico alternativo (mobile) o un percorso PBR (Policy Based Routing) per selezionare un hop o un'interfaccia alternativi.
In genere, un'interfaccia del tunnel GRE viene visualizzata non appena configurata e rimane attiva finché è presente un indirizzo di origine del tunnel valido o un'interfaccia attiva. Anche l'indirizzo IP di destinazione del tunnel deve essere instradabile. Ciò vale anche se l'altro lato del tunnel non è stato configurato. Ciò significa che un percorso statico o l'inoltro PBR dei pacchetti tramite l'interfaccia del tunnel GRE rimane attivo anche se i pacchetti del tunnel GRE non raggiungono l'altra estremità del tunnel.
Prima che i pacchetti keepalive GRE venissero implementati, c'erano solo modi per determinare i problemi locali sul router e non c'era modo di determinare i problemi sulla rete in uso. Ad esempio, il caso in cui i pacchetti del tunnel GRE vengono inoltrati correttamente, ma vengono persi prima di raggiungere l'altra estremità del tunnel. Questi scenari provocherebbero un "buco nero" dei pacchetti di dati che passano attraverso il tunnel GRE, anche se era disponibile un percorso alternativo che usa il PBR o un percorso statico mobile tramite un'altra interfaccia. I pacchetti keepalive sull'interfaccia del tunnel GRE vengono usati per risolvere questo problema allo stesso modo in cui i pacchetti keepalive vengono usati sulle interfacce fisiche.
Nota: in nessun caso i pacchetti keepalive GRE sono supportati insieme alla protezione del tunnel IPsec. In questo documento viene descritto questo problema.
Il meccanismo keepalive del tunnel GRE è simile ai pacchetti keepalive PPP in quanto consente a un dispositivo di originare e ricevere pacchetti keepalive da e verso un router remoto anche se il router remoto non supporta i pacchetti keepalive GRE. Poiché GRE è un meccanismo di tunneling dei pacchetti per il tunneling IP all'interno dell'IP, è possibile creare un pacchetto del tunnel GRE IP all'interno di un altro pacchetto del tunnel GRE IP. Per i pacchetti keepalive GRE, il mittente precostruisce il pacchetto di risposta keepalive all'interno del pacchetto di richiesta keepalive originale in modo che l'estremità remota debba solo eseguire la decapsulamento GRE standard dell'intestazione IP GRE esterna e quindi restituire il pacchetto GRE IP interno al mittente. Questi pacchetti spiegano i concetti del tunneling IP con protocollo di incapsulamento GRE e protocollo di trasporto IP. Il protocollo passeggeri è sempre IP, anche se può essere un altro protocollo, ad esempio Decnet, Internetwork Packet Exchange (IPX) o Appletalk.
Pacchetto normale:
Intestazione IP |
Intestazione TCP |
Telnet |
Pacchetto tunneling:
GRE IP Header |
GRE |
|
Di seguito è riportato un esempio di pacchetto keepalive proveniente dal router A e destinato al router B. La risposta keepalive che il router B restituisce al router A è già all'interno dell'intestazione IP interna. Il router B decapsula il pacchetto keepalive e lo invia nuovamente all'interfaccia fisica (S2). Elabora il pacchetto GRE keepalive come qualsiasi altro pacchetto di dati GRE IP.
GRE Keepalives:
GRE IP Header |
GRE |
|
|||||||
Origine A | Destinazione B | PT=IP |
Questo meccanismo fa sì che la risposta keepalive venga inoltrata sull'interfaccia fisica anziché sull'interfaccia del tunnel. Ciò significa che il pacchetto di risposta GRE keepalive non è influenzato da alcuna funzionalità di output sull'interfaccia del tunnel, ad esempio 'protezione del tunnel ...', QoS, Virtual Routing and Forwarding (VRF), e così via.
Nota: se è configurato un ACL (Access Control List) in entrata sull'interfaccia del tunnel GRE, il pacchetto keepalive del tunnel GRE inviato dal dispositivo opposto deve essere autorizzato. In caso contrario, il tunnel GRE del dispositivo opposto si blocca. (access-list <numero> allow gre host <origine-tunnel> host <destinazione-tunnel>)
Un altro attributo dei pacchetti keepalive del tunnel GRE è che i timer keepalive su entrambi i lati sono indipendenti e non devono corrispondere, in modo simile ai pacchetti keepalive PPP.
Suggerimento: il problema con la configurazione dei pacchetti keepalive solo su un lato del tunnel è che solo il router con i pacchetti keepalive configurati contrassegna l'interfaccia del tunnel come inattiva se il timer keepalive scade. L'interfaccia del tunnel GRE sull'altro lato, dove non sono configurati i pacchetti keepalive, rimane attiva anche se l'altro lato del tunnel è inattivo. Il tunnel può diventare un buco nero per i pacchetti diretti nel tunnel dal lato in cui non è stato configurato il supporto dei pacchetti keepalive.
Suggerimento: in una rete di tunnel GRE hub e spoke di grandi dimensioni, è possibile configurare i pacchetti keepalive GRE solo sul lato spoke e non sul lato hub. Questo perché è spesso più importante che lo spoke scopra che l'hub è irraggiungibile e quindi passa a un percorso di backup (ad esempio, Dial Backup).
Con il software Cisco IOS® versione 12.2(8)T, è possibile configurare i pacchetti keepalive su un'interfaccia del tunnel GRE point-to-point. Con questa modifica, l'interfaccia del tunnel viene chiusa in modo dinamico se i pacchetti keepalive si interrompono per un determinato periodo di tempo.
Per ulteriori informazioni sul funzionamento di altre forme di pacchetti keepalive, consultare la panoramica dei meccanismi keepalive su Cisco IOS.
Nota: i pacchetti keepalive del tunnel GRE sono supportati solo sui tunnel GRE point-to-point. I pacchetti keepalive del tunnel sono configurabili sui tunnel GRE (Multipoint GRE), ma non hanno effetto.
Nota: in generale, i pacchetti keepalive del tunnel non possono funzionare quando i VRF vengono utilizzati sull'interfaccia del tunnel e sull'fVRF ("tunnel vrf ...e iVRF ("inoltro ip vrf ...’ sull'interfaccia del tunnel) non corrispondono. Questa condizione è critica sull'endpoint del tunnel che "riflette" il keepalive restituito al richiedente. Quando si riceve la richiesta keepalive, questa viene ricevuta nella fVRF e decapsulata. Ciò rivela la risposta keepalive predefinita, che deve essere inoltrata nuovamente al mittente, MA che l'inoltro si trova nel contesto del VRF sull'interfaccia del tunnel. Pertanto, se il VRF e il VRF non corrispondono, il pacchetto di risposta keepalive non viene inoltrato indietro al mittente. Ciò è vero anche se si sostituisce iVRF e/o fVRF con "global".
Questo output mostra i comandi utilizzati per configurare i pacchetti keepalive sui tunnel GRE.
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.
Per comprendere meglio il funzionamento del meccanismo keepalive del tunnel, prendere in considerazione questo esempio la topologia e la configurazione del tunnel:
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 questo scenario, il router A esegue i seguenti passaggi:
Intestazione IP |
GRE |
|
Fonte:192.168.1.2 | Destinazione:192.168.1.1 | PT=0 |
GRE IP Header |
GRE |
|
|||||||
Fonte: 192.168.1.1 | Destinazione: 192.168.1.2 | PT=IP |
Intestazione IP |
GRE |
|
Fonte:192.168.1.2 | Destinazione:192.168.1.1 | PT=0 |
Se il router B non è raggiungibile, il router A continua a costruire e inviare pacchetti keepalive e il normale traffico. Se i pacchetti keepalive non tornano, il protocollo della linea del tunnel rimane attivo finché il contatore keepalive del tunnel è inferiore al numero di tentativi, che in questo caso è quattro. Se questa condizione non è vera, al successivo tentativo del router A di inviare un pacchetto keepalive al router B, il protocollo di linea viene interrotto.
Nota: nello stato attivo/inattivo, il tunnel non inoltra né elabora alcun traffico di dati. Tuttavia, continua a inviare pacchetti keepalive. Alla ricezione di una risposta keepalive, con la conseguenza che l'endpoint del tunnel è nuovamente raggiungibile, il contatore keepalive del tunnel viene reimpostato su 0 e viene visualizzato il protocollo di linea sul tunnel.
Per verificare che i pacchetti keepalive siano in azione, abilitare debug tunnel ed eseguire il debug tunnel keepalive.
Esempi di debug dal 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) è una funzione di sicurezza che permette di rilevare ed eliminare il traffico IP oggetto di spoofing con una convalida dell'indirizzo di origine del pacchetto sulla tabella di routing. Quando si esegue RPF unicast in modalità strict (ip verify unicast source reachable-via rx), il pacchetto deve essere ricevuto sull'interfaccia che il router utilizzerebbe per inoltrare il pacchetto restituito. Se l'RPF unicast in modalità rigorosa o libera è abilitato sull'interfaccia tunnel del router che riceve i pacchetti keepalive GRE, i pacchetti keepalive vengono scartati dall'RPF dopo la decapsulazione del tunnel, in quanto il percorso all'indirizzo di origine del pacchetto (indirizzo di origine del tunnel del router) non passa attraverso l'interfaccia tunnel. Le perdite di pacchetti RPF possono essere osservate nell'output del traffico show ip come segue:
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
Di conseguenza, l'iniziatore del tunnel keepalive scarta il tunnel a causa della mancanza dei pacchetti keepalive di ritorno. Pertanto, per il corretto funzionamento dei pacchetti keepalive del tunnel GRE, non è necessario configurare il protocollo RPF unicast in modalità rigorosa o libera. Per ulteriori informazioni su RPF unicast, vedere Informazioni su Inoltro percorso inverso unicast.
I tunnel GRE vengono talvolta combinati con IPsec perché IPsec non supporta pacchetti IP multicast. Per questo motivo, non è possibile eseguire correttamente i protocolli di routing dinamico su una rete VPN IPsec. Poiché i tunnel GRE supportano il multicast IP, è possibile eseguire un protocollo di routing dinamico su un tunnel GRE. I pacchetti unicast IP GRE risultanti possono essere crittografati da IPsec.
IPsec può crittografare i pacchetti GRE in due modi diversi:
Entrambi i metodi specificano che la crittografia IPsec viene eseguita dopo l'aggiunta dell'incapsulamento GRE. Esistono due differenze fondamentali tra quando si utilizza una mappa crittografica e quando si utilizza la protezione del tunnel:
Dati i due modi per aggiungere la crittografia ai tunnel GRE, sono disponibili tre modi diversi per configurare un tunnel GRE crittografato:
La configurazione descritta negli scenari 1 e 2 viene spesso eseguita in una struttura hub e spoke. La protezione del tunnel è configurata sul router hub per ridurre le dimensioni della configurazione e viene utilizzata una mappa crittografica statica su ciascun spoke.
Prendere in considerazione ognuno di questi scenari con i pacchetti keepalive GRE abilitati sul peer B(spoke) e in cui la modalità tunnel viene utilizzata per la crittografia.
Impostazione:
—
In questo scenario, poiché i pacchetti keepalive GRE sono configurati sul peer B, gli eventi di sequenza quando viene generato un pacchetto keepalive sono i seguenti:
Intestazione IP |
Intestazione ESP |
GRE IP Header |
Intestazione GRE |
|
trailer ESP |
|||||||
OrigineB | Destinazione A | OrigineB | Destinazione A | PT=IP |
GRE IP Header |
GRE |
|
|||||||
OrigineB | Destinazione A | PT=IP |
Intestazione IP |
GRE |
|
OrigineA | DestinazioneB | PT=0 |
Intestazione IP |
GRE |
|
OrigineA | DestinazioneB | PT=0 |
Nota: keepalive non è crittografato.
Pertanto, anche se il peer A risponde ai pacchetti keepalive e il router Peer B riceve le risposte, non le elabora mai e alla fine modifica il protocollo di linea dell'interfaccia del tunnel in stato di inattività.
Risultato:
—
Se i pacchetti keepalive sono abilitati sul peer B, lo stato del tunnel sul peer B diventa attivo/inattivo.
Impostazione:
—
In questo scenario, poiché i pacchetti keepalive GRE sono configurati sul peer B, la sequenza di eventi generata da un pacchetto keepalive è la seguente:
Intestazione IP |
Intestazione ESP |
GRE IP Header |
Intestazione GRE |
|
trailer ESP |
|||||
OrigineB | Destinazione A | OrigineB | Destinazione A | PT=IP |
GRE IP Header |
GRE |
|
|||||||
OrigineB | Destinazione A | PT=IP |
Intestazione IP |
GRE |
|
OrigineA | DestinazioneB | PT=0 |
Intestazione IP |
Intestazione ESP |
|
trailer ESP |
|||||||
OrigineB | Destinazione A |
Nota: la risposta keepalive è crittografata.
Intestazione IP |
GRE |
|
OrigineA | DestinazioneB | PT=0 |
Risultato:
—
I pacchetti keepalive abilitati sul peer B determinano correttamente lo stato del tunnel in base alla disponibilità della destinazione del tunnel.
Impostazione:
—
Questo scenario è simile allo scenario 1 in quanto, quando il peer A riceve il pacchetto keepalive crittografato, lo decapsula e lo decapsula. Tuttavia, quando la risposta viene inoltrata indietro, non viene crittografata in quanto il peer A usa la protezione del tunnel sull'interfaccia del tunnel. Pertanto, il peer B rifiuta la risposta keepalive non crittografata e non la elabora.
Risultato:
—
Se i pacchetti keepalive sono abilitati sul peer B, lo stato del tunnel sul peer B diventa attivo/inattivo.
In queste situazioni in cui i pacchetti GRE devono essere crittografati, sono possibili tre soluzioni:
Revisione | Data di pubblicazione | Commenti |
---|---|---|
2.0 |
19-Dec-2022 |
Testo alternativo aggiunto.
Introduzione, argomenti, requisiti di stile e formattazione aggiornati. |
1.0 |
31-Oct-2014 |
Versione iniziale |