Das Generic Routing Encapsulation (GRE) ist ein Kapselungsprotokoll, das Datenpakete unterschiedlicher Protokolle in einem IP-Tunnel über fremde Netze transportiert. Entwickelt wurde GRE von Cisco und erstmals 1994 in RFC 1701 beschrieben; die heutige Standardfassung ist RFC 2784 (2000). Es ist damit eines der wichtigsten Werkzeuge, wenn Netze überbrückt oder Protokolle durch ungeeignete Zwischennetze geschickt werden müssen.
Wie GRE funktioniert
Beim Eintritt in den Tunnel wird das komplette Originalpaket — inklusive Header — als Nutzlast übernommen und um einen GRE-Header sowie einen äußeren IP-Header ergänzt. Der äußere Header trägt die Protokollnummer 47 und die Adressen der Tunnelendpunkte; das innere Paket bleibt unverändert erhalten. Dadurch lassen sich auch IPv6-Pakete über IPv4-Netze transportieren oder Routing-Protokolle und Multicast-Verkehr durch ein fremdes Netz führen — ein Vorteil gegenüber dem schlankeren IP-in-IP, das nur IP kapseln kann.
Originalpaket --> [äußerer IP-Header | GRE-Header | Originalpaket] --> Zielnetz
Der Overhead beträgt über IPv4 genau 24 Byte (20 Byte äußerer IP-Header plus 4 Byte GRE-Header). Wer einen GRE-Tunnel einrichtet, muss die MTU des Tunnels deshalb entsprechend absenken, sonst zerbricht der Datenverkehr an der Fragmentierung. Typische GRE-Tunnel sind Punkt-zu-Punkt-Verbindungen; die Multipoint-Variante mGRE nutzt dagegen eine einzige Schnittstelle für viele Ziele und ist die Basis von DMVPN.
GRE verschlüsselt nicht
GRE übernimmt ausschließlich die Kapselung — es bietet weder Vertraulichkeit noch Authentifizierung. Wer sensible Daten durch öffentliche Netze schickt, kombiniert GRE deshalb mit IPsec (GRE-over-IPsec): GRE baut den Tunnel auf, IPsec schützt den Inhalt. Keepalive-Mechanismen erkennen zusätzlich, ob der Tunnelpartner noch erreichbar ist.
Verwandte Grundlagen: GRE-Befehle, IP-Tunnel, IP-in-IP, DMVPN, VPN.