Generic Routing Encapsulation
GRE ist ein Tunnel Protokoll welches ursprünglich entwickelt wurde um non routable legacy Protokolle (wie bspw. IPX) über ein IP Netzwerk zu transportieren. Heutzutage wird es als Overlay Network für IPv4 und IPv6 eingesetzt und ist Teil der VPN Familie.
Bei dem Versenden von Paketen werden neue Header Informationen dem Paket hinzugefügt (Encapsulation). Dieser Header enthält als Zieladresse den Endpunkt des GRE Tunnels. Dort angekommen wird der GRE Header entfernt und anhand den ursprünglichen Header Informationen weiter geroutet.
GRE wird heutzutage viel in Kombination mit IPsec verwendet um Routing Protokolle verschlüsselt zu übertragen, da es von IPsec nicht unterstützt wird.
Konfiguration
Tunnel Interface
Das Tunnel Interface bildet das Overlay Netzwerk mit einer eigenen Adressierung die nur innerhalb des Overlays gilt. Da kann frei gewählt werden. Da in diese Overlay Netzwerk auch mehrere Tunnel Endpunkte geben kann ist es eventuell nicht immer Ratsam ein /30 Netzwerk zu bilden.
Header & MTU Size
Da für GRE ein Header von 24 bytes dem Paket hinzufügt, muss die MTU Size reduziert werden um Fragmentierung zu vermeiden. Je nach dem welche Tunnel (bspw. IPsec) noch hinzugefügt werden, muss die MTU Size entsprechend angepasst werden. Eine MTU von 1400 kann als Best Practice angesehen werden um Probleme vorzubeugen.
Tunnel Source & Destination
Tunnel Source und Destination gibt die Adressierung für das Underlay Netzwerk vor. In der Regel sind das, wenn man ein Tunnel über das Internet aufbauen möchte, öffentliche IP Adressen von dem ISP zugewiesen.
!
! Overlay Tunnel Interface mit eigener Adressierung
!
interface Tunnel1
ip address 172.16.1.2 255.255.255.0
mtu 1400
tunnel source FastEthernet0/0
tunnel destination 10.0.0.1
!
!
Physikalische Verbindung
Das Underlay Network wird wie jedes übliches Netzwerk Interface eingerichtet.
! -------------------------------
! Underlay / Physikalisches Netzwerk
!
interface FastEthernet0/0
ip address 10.0.0.2 255.255.255.252
duplex auto
speed auto
! -------------------------------
!
! Client Interface / Sonstiges Netzwerk
interface FastEthernet0/1
ip address 192.168.2.1 255.255.255.0
duplex auto
speed auto
!
Routing
Möchte man jetzt das Netzwerk auf der gegenüberlegenden Seite durch den Tunnel erreichen, so muss das Routing über die Zieladresse (alternativ das Tunnel Interface) des Overlay Netzwerk erfolgen.
!
ip route 192.168.1.0 255.255.255.0 Tunnel1
!
ip route 192.168.1.0 255.255.255.0 172.16.1.1
!
Tunnel Status
R1# sh int tunnel1
Tunnel1 is up, line protocol is up (connected)
Hardware is Tunnel
Internet address is 172.16.1.1/24
MTU 17916 bytes, BW 100 Kbit/sec, DLY 50000 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation TUNNEL, loopback not set
Keepalive not set
Tunnel source 10.0.0.1 (FastEthernet0/0), destination 10.0.0.2
Tunnel protocol/transport GRE/IP <-------------------
Key disabled, sequencing disabled
Checksumming of packets disabled
Tunnel TTL 255
Fast tunneling enabled
Tunnel transport MTU 1476 bytes
Tunnel transmit bandwidth 8000 (kbps)
Tunnel receive bandwidth 8000 (kbps)
Last input never, output never, output hang never
Last clearing of "show interface" counters never
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 1
Queueing strategy: fifo
Output queue: 0/0 (size/max)
5 minute input rate 0 bits/sec, 0 packets/sec
5 minute output rate 0 bits/sec, 0 packets/sec
0 packets input, 0 bytes, 0 no buffer
Received 0 broadcasts, 0 runts, 0 giants, 0 throttles
0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
0 input packets with dribble condition detected
0 packets output, 0 bytes, 0 underruns
0 output errors, 0 collisions, 0 interface resets
0 unknown protocol drops
0 output buffer failures, 0 output buffers swapped out