Zum Inhalt springen

„Generic Routing Encapsulation“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
K Einleitung: Typo (Abkürzung in fett)
 
(24 dazwischenliegende Versionen von 12 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Das '''Generic Routing Encapsulation ''' ('''GRE''') ist ein Netzprotokoll welches dazu dient, andere Protokolle [[Datenkapselung (Netzwerktechnik)|einzukapseln]] und so in Form eines [[Tunnel (Rechnernetz)|Tunnels]] über das [[Internet Protocol]] (IP) zu transportieren. GRE wurde von der Firma [[Cisco|Cisco Systems]] entwickelt und
Das '''Generic Routing Encapsulation ''' ('''GRE''') ist ein Netzprotokoll, welches dazu dient, andere Protokolle [[Datenkapselung (Netzwerktechnik)|einzukapseln]] und so in Form eines [[Tunnel (Rechnernetz)|Tunnels]] über das [[Internet Protocol]] (IP) zu transportieren. GRE wurde von [[Cisco|Cisco Systems]] entwickelt und 1994 erstmals im <nowiki>RFC&nbsp;1701</nowiki><ref>{{RFC-Internet |RFC=1701 |Titel=Generic Routing Encapsulation (GRE) |Datum=1994 |Kommentar=informational}}</ref> spezifiziert. 2000 wurde der <nowiki>RFC&nbsp;1701</nowiki> durch <nowiki>RFC&nbsp;2784</nowiki><ref name="rfc2784">{{RFC-Internet |RFC=2784 |Titel=Generic Routing Encapsulation (GRE) |Datum=2000 |Updated=2890 |Kommentar=proposed standard}}</ref> abgelöst und im <nowiki>RFC&nbsp;2890</nowiki><ref>{{RFC-Internet |RFC=2890 |Titel=Key and Sequence Number Extensions to GRE |Datum=2000-09 |Kommentar=proposed standard}}</ref> erweitert. GRE ist bei der [[Internet Engineering Task Force]] im Status eines [[Vorgeschlagener Standard|vorgeschlagenen Standards]].<ref name="rfc2784"/>

1994 erstmals im RFC 1701 standardisiert. 2000 wurde der RFC 1701 durch RFC 2784 abgelöst und im RFC 2890 erweitert.
GRE setzt –&nbsp;wie UDP und TCP&nbsp;– direkt auf IP auf und verwendet die [[Protokoll (IP)|IP-Protokoll]]-Nummer&nbsp;'''47'''.


Beispiele für GRE-Anwendungen:
Beispiele für GRE-Anwendungen:


* [[Virtual Private Network|VPN-Verbindungen]] für [[Point-to-Point Tunneling Protocol|PPTP]],
* [[Virtual Private Network|VPN-Verbindungen]] für [[Point-to-Point Tunneling Protocol|PPTP]]
* Aufbau von Tunneln zwischen [[IPv6]]-fähigen Netzen über [[Internet Protocol|IPv4]]-Infrastruktur (und [[Liste_lateinischer_Phrasen/V#Vice|vice versa]]) oder
* Aufbau von Tunneln zwischen [[IPv6]]-fähigen Netzen über [[Internet Protocol|IPv4]]-Infrastruktur (und [[Liste lateinischer Phrasen/V#Vice versa|vice versa]])
* Tunnel zwischen [[IPsec]]-Endstellen, die die Benutzung dynamischer Routingprotokolle oder [[Multicast]]übertragungen über [[Virtual Private Network|VPN]]-Verbindungen erlauben.
* Tunnel zwischen [[IPsec]]-Endstellen, wenn die Benutzung dynamischer Routingprotokolle oder [[Multicast]]übertragungen über [[Virtual Private Network|VPN]]-Verbindungen benötigt wird
* Tunnel für Mobilitätsprotokolle wie [[Mobile IP]] oder [[Proxy Mobile IPv6]].
* Tunnel für Mobilitätsprotokolle wie [[Mobile IP]] oder [[Proxy Mobile IPv6]]
* Tunnel für die Übertragung des [[Internetwork Packet Exchange|IPX]] oder des [[AppleTalk]]-Protokolls.
* Tunnel für die Übertragung des [[Internetwork Packet Exchange|IPX]]- oder des [[AppleTalk]]-Protokolls


== Header-Aufbau ==
GRE verwendet die IP-[[Protokoll (IP)|Protokoll]]-Nummer '''47'''. Ein GRE-Header hat den folgenden Aufbau:
Ein GRE-Header ist mindestens 4 Byte groß. Da das GRE-Paket zusätzlich noch in ein 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|Maximum Transmission Unit (MTU)]] berücksichtigt werden.

Ein GRE-Header hat den folgenden Aufbau:


{| class="wikitable" style="text-align:center"
{| class="wikitable" style="text-align:center"
|-
|-
! colspan="4" width="13%"| Bits 0–3
!colspan="4"| Bits 0–3
! colspan="9" width="28%"| 4–12
!colspan="9"| 4–12
! colspan="3" width="9%"| 13–15
!colspan="3"| 13–15
! colspan="16" width="50%"| 16–31
!colspan="16"| 16–31
|-
|-
| C
| colspan="1"| C
|
| colspan="1" |
| K
| colspan="1"| K
| S
| colspan="1"| S
| colspan="9"| Reserved0
|colspan="9"| Reserved0
| colspan="3"| Version
|colspan="3"| Version
| colspan="16"| Protocol Type
|colspan="16"| Protocol Type
|-
|-
| colspan="16"| [[Checksum]] ''(optional)''
|colspan="16"| [[Checksum]] ''(optional)''
| colspan="16" | Reserved1 ''(optional)''
|colspan="16" | Reserved1 ''(optional)''
|-
|-
| colspan="32"| Key ''(optional)''
|colspan="32"| Key ''(optional)''
|-
|-
| colspan="32"| Sequence Number ''(optional)''
|colspan="32"| Sequence Number ''(optional)''
|}
|}


; ''C''
; ''C'': [[Checksum]] bit. Wird auf 1 gestetzt wenn das ''Checksum'' eine Checksum enthält.
: [[Checksum]] bit; wird auf 1 gesetzt, wenn eine Checksum enthalten ist.

; ''K'': Key bit. Wird auf 1 gesetzt wenn ein Key vorhanden ist.
; ''K''
: Key bit; wird auf 1 gesetzt, wenn ein Key vorhanden ist.
; ''S''

; ''S'': Sequence number bit. Wird auf 1 gesetzt wenn eine Sequenznummer vorhanden ist.
: Sequence number bit; wird auf 1 gesetzt, wenn eine Sequenznummer vorhanden ist.
; ''Reserved0''

; ''Reserved0'': Reservierte bits; Werden auf 0 gesetzt.
: Reservierte Bits; werden auf 0 gesetzt.
; ''Version''

; ''Version'': GRE Versionsnummer. Wird auf 0 gesetzt.
: GRE Versionsnummer; wird auf 0 gesetzt.
; ''Protocol Type''

; ''Protocol Type'': Enthälte den [[EtherType|ether protocol type]] der übertragenen Nutzlast. (Für [[IPv4]] beträgt der Wert hex 0800.)
: Enthält den [[EtherType|ether protocol type]] der übertragenen Nutzlast. (Für [[IPv4]] beträgt der Wert hex 0800.)
; ''Checksum''

; ''Checksum'': Vorhanden falls das C bit gesetzt ist; Enthält die Prüfsumme für den GRE Header und der Nutzlast.
: Vorhanden, falls das C-Bit gesetzt ist; enthält die Prüfsumme für den GRE Header und die Nutzlast.
; ''Reserved1''

; ''Reserved1'': Vorhanden falls das C bit gesetzt ist; Wird auf 0 gesetzt.
: Vorhanden, falls das C-Bit gesetzt ist; wird auf 0 gesetzt.
; ''Key''

; ''Key'': Vorhanden falls das K bit gesetzt ist; enthält einen Applikationsabhängigen Schlüsselwert.
: Vorhanden, falls das K-Bit gesetzt ist; enthält einen applikationsabhängigen Schlüsselwert.
; ''Sequence Number''

; ''Sequence Number'': Vorhanden falls das S bit gesetzt ist; Enthält die Sequenznummber des GRE-Paketes.
: Vorhanden, falls das S-Bit gesetzt ist; enthält die Sequenznummer 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|Maximum Transmission Unit (MTU)]] berücksichtigt werden.


== Konfiguration ==
== Konfiguration ==


GRE-Tunnel werden in Cisco-Routern als (virtuelle) Interfaces konfiguriert. Im Beispiel die Minimalkonfiguration für einen GRE-Tunnel IPv4 in IPv4:
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)
interface Tunnel0 (lokal eindeutige Nummer von 0 bis 2147483647)
ip address 192.168.0.1 255.255.255.0 (innere Tunneladresse)
ip address 192.168.0.1 255.255.255.0 (innere Tunneladresse)
tunnel source 10.0.0.1 (äußere lokale Tunneladresse)
tunnel source 10.0.0.1 (äußere lokale Tunneladresse)
tunnel destination 10.0.0.2 (äußere Tunneladresse des Zielrouters)
tunnel destination 10.0.0.2 (äußere Tunneladresse des Zielrouters)
end
end


Zeile 76: Zeile 79:
== Übertragung ==
== Übertragung ==


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.
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 (in der Regel ein Router) verwendet.


Am Zielrouter wird nach dem Empfang des IP-Paketes der GRE-Header wieder entfernt. Das eingekapselte Paket wird dann über das Tunnelinterface weitergeleitet.
Am Zielrouter wird nach dem Empfang des IP-Paketes der GRE-Header entfernt und das Paket ohne GRE-Informationen unter Verwendung der Routing-Tabelle weitergeleitet.

== Normen und Standards ==
* {{RFC-Internet |RFC=1701 |Titel=Generic Routing Encapsulation (GRE) |Datum=1994 |Kommentar=informational}}
* {{RFC-Internet |RFC=1702 |Titel=Generic Routing Encapsulation over IPv4 networks |Datum= |Kommentar=informational}}
* {{RFC-Internet |RFC=2637 |Titel=Point to Point Tunneling Protocol |Datum= |Kommentar=informational}}
* {{RFC-Internet |RFC=2784 |Titel=Generic Routing Encapsulation (GRE) |Datum=2000 |Updated=2890 |Kommentar=proposed standard}}
* {{RFC-Internet |RFC=2890 |Titel=Key and Sequence Number Extensions to GRE |Datum=2000-09 |Kommentar=proposed standard}}


== Weblinks ==
== Weblinks ==
* RFC 1701: ''Generic Routing Encapsulation (GRE)'' (informational)
* [https://www.cisco.com/c/en/us/tech/ip/ip-tunneling/tech-configuration-examples-list.html Generic Routing Encapsulation (GRE).] Website von Cisco (englisch).
* [https://www.juniper.net/documentation/en_US/junos/topics/concept/gre-tunnel-services.html Understanding GRE.] Website von Juniper (englisch).
* RFC 1702: ''Generic Routing Encapsulation over IPv4 networks'' (informational)

* RFC 2637: ''Point to Point Tunneling Protocol'' (informational)
== Einzelnachweise ==
* RFC 2784: ''Generic Routing Encapsulation (GRE)'' (proposed standard, updated by RFC 2890)
<references />
* RFC 2890: ''Key and Sequence Number Extensions to GRE'' (proposed standard)


[[Kategorie:Routingprotokoll]]
[[Kategorie:Tunnelprotokoll]]
[[Kategorie:Tunnelprotokoll]]
[[Kategorie:Internet-Anwendungsprotokoll]]
[[Kategorie:Routing]]
[[Kategorie:Netzwerkprotokoll von Cisco Systems]]
[[Kategorie:Internetstandard]]

Aktuelle Version vom 27. Juli 2023, 00:13 Uhr

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 Cisco Systems entwickelt und 1994 erstmals im RFC 1701[1] spezifiziert. 2000 wurde der RFC 1701 durch RFC 2784[2] abgelöst und im RFC 2890[3] erweitert. GRE ist bei der Internet Engineering Task Force im Status eines vorgeschlagenen Standards.[2]

GRE setzt – wie UDP und TCP – direkt auf IP auf und verwendet die IP-Protokoll-Nummer 47.

Beispiele für GRE-Anwendungen:

Ein GRE-Header ist mindestens 4 Byte groß. Da das GRE-Paket zusätzlich noch in ein 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.

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 gesetzt, wenn eine Checksum enthalten ist.
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ält 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 die 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 Sequenznummer des GRE-Paketes.

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 bis 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

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.

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 (in der Regel ein Router) verwendet.

Am Zielrouter wird nach dem Empfang des IP-Paketes der GRE-Header entfernt und das Paket ohne GRE-Informationen unter Verwendung der Routing-Tabelle weitergeleitet.

Normen und Standards

[Bearbeiten | Quelltext bearbeiten]
  • RFC: 1701 – Generic Routing Encapsulation (GRE). 1994 (informational, englisch).
  • RFC: 1702 – Generic Routing Encapsulation over IPv4 networks. (informational, englisch).
  • RFC: 2637 – Point to Point Tunneling Protocol. (informational, englisch).
  • RFC: 2784 – Generic Routing Encapsulation (GRE). 2000 (aktualisiert durch RFC 2890, proposed standard, englisch).
  • RFC: 2890 – Key and Sequence Number Extensions to GRE. September 2000 (proposed standard, englisch).

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. RFC: 1701 – Generic Routing Encapsulation (GRE). 1994 (informational, englisch).
  2. a b RFC: 2784 – Generic Routing Encapsulation (GRE). 2000 (aktualisiert durch RFC 2890, proposed standard, englisch).
  3. RFC: 2890 – Key and Sequence Number Extensions to GRE. September 2000 (proposed standard, englisch).