Generic Routing Encapsulation Protocol

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Das Generic Routing Encapsulation (GRE) ist ein Netzprotokoll welches dazu dient, andere Protokolle einzukapseln und so in Form eines Tunnels über das Internet Protocol (IP) zu transportieren. GRE wurde von der Firma Cisco Systems entwickelt und 1994 erstmals im RFC 1701 standardisiert. 2000 wurde der RFC 1701 durch RFC 2784 abgelöst und im RFC 2890 erweitert.

Beispiele für GRE-Anwendungen:

GRE verwendet die IP-Protokoll-Nummer 47. Ein GRE-Header hat den folgenden Aufbau:

Bits 0–3 4–12 13–15 16–31
C K S Reserved0 Version Protocol Type
Checksum (optional) Reserved1 (optional)
Key (optional)
Sequence Number (optional)
C
Checksum bit. Wird auf 1 gestetzt wenn das Checksum eine Checksum enthält.
K
Key bit. Wird auf 1 gesetzt wenn ein Key vorhanden ist.
S
Sequence number bit. Wird auf 1 gesetzt wenn eine Sequenznummer vorhanden ist.
Reserved0
Reservierte bits; Werden auf 0 gesetzt.
Version
GRE Versionsnummer. Wird auf 0 gesetzt.
Protocol Type
Enthälte den ether protocol type der übertragenen Nutzlast. (Für IPv4 beträgt der Wert hex 0800.)
Checksum
Vorhanden falls das C bit gesetzt ist; Enthält die Prüfsumme für den GRE Header und der Nutzlast.
Reserved1
Vorhanden falls das C bit gesetzt ist; Wird auf 0 gesetzt.
Key
Vorhanden falls das K bit gesetzt ist; enthält einen Applikationsabhängigen Schlüsselwert.
Sequence Number
Vorhanden falls das S bit gesetzt ist; Enthält die Sequenznummber des GRE-Paketes.

GRE-Header sind mindestens 4 Byte groß. Da das GRE-Paket zusätzlich noch in einem neuen IP-Paket eingepackt wird, werden im GRE-Tunnel übertragene Pakete mindestens 24 Byte größer. Dies muss bei der Festlegung der maximalen Paketgröße Maximum Transmission Unit (MTU) berücksichtigt werden.

Konfiguration[Bearbeiten | Quelltext bearbeiten]

GRE-Tunnel werden in Cisco-Routern als (virtuelle) Interfaces konfiguriert. Im Beispiel die Minimalkonfiguration für einen GRE-Tunnel IPv4 in IPv4:

[...]
!
interface Tunnel0   (lokal eindeutige Nummer von 0-2147483647)
 ip address 192.168.0.1 255.255.255.0   (innere Tunneladresse)
 tunnel source 10.0.0.1  (äußere lokale Tunneladresse)
 tunnel destination 10.0.0.2  (äußere Tunneladresse des Zielrouters)
end

Adressierung[Bearbeiten | Quelltext bearbeiten]

GRE-Tunnel haben eigene Tunnel-Adressen, die aber nur innerhalb der beteiligten Router genutzt werden. Diese Adressen entsprechen den Anforderungen des einzukapselnden Protokolls und werden am Tunnelinterface konfiguriert.

Um Pakete durch den Tunnel hindurch zu transportieren, benötigt der Tunnel zusätzlich äußere Adressen, die im Transportnetz, das die Tunnelendpunkte verbindet, geroutet werden. Diese Adressen entsprechen den Anforderungen des Internetprotokolls.

Übertragung[Bearbeiten | Quelltext bearbeiten]

Ein zu übertragendes Paket wird am Quellrouter zuerst mit einem GRE-Header versehen. Dann wird das resultierende Paket als Nutzlast in einem neuen Unicast-IP Paket eingepackt, dessen Quelladresse die lokale äußere Tunneladresse ist. Als Zieladresse wird die äußere Tunneladresse des Zielsystems verwendet.

Am Zielrouter wird nach dem Empfang des IP-Paketes der GRE-Header wieder entfernt. Das eingekapselte Paket wird dann über das Tunnelinterface weitergeleitet.

Weblinks[Bearbeiten | Quelltext bearbeiten]

  • RFC 1701: Generic Routing Encapsulation (GRE) (informational)
  • RFC 1702: Generic Routing Encapsulation over IPv4 networks (informational)
  • RFC 2637: Point to Point Tunneling Protocol (informational)
  • RFC 2784: Generic Routing Encapsulation (GRE) (proposed standard, updated by RFC 2890)
  • RFC 2890: Key and Sequence Number Extensions to GRE (proposed standard)