Generic Routing Encapsulation
# Generic Routing Encapsulation

In informatica e telecomunicazioni il Generic Routing Encapsulation, in sigla GRE, è un protocollo di rete progettato nel 1994 (documentato con RFC 1701).

## Caratteristiche

Il GRE è in grado di incapsulare fino a 20 tipi di protocolli. Si fa carico, inoltre, di tre altri tipi di protocolli: - passenger protocol - carrier protocol - protocollo di trasporto; in quest'ultimo si occupa del trasporto dei due precedenti protocolli.

Le fasi di lavoro sono le seguenti:

* Il computer host sorgente crea su una LAN un pacchetto, utilizzando un proprio protocollo nativo e lo spedisce sulla rete.
* Il router di default, poiché il computer di destinazione non è locale, prende il pacchetto e lo incapsula usando il carrier protocol per creare il tunnel GRE: in questo modo si stabilisce una connessione virtuale punto a punto con un router presente all'altro capo di Internet.
* Quando giunge a destinazione, il pacchetto viene spogliato dell'header IP e lasciato con il protocollo nativo nella LAN di destinazione.

## Header del pacchetto

L'header del pacchetto GRE è rappresentato nel diagramma sottostante. RFC 2784 e RFC 2890

| Bits 0–3 | Bits 0–3 | Bits 0–3 | Bits 0–3 | 4–12 | 4–12 | 4–12 | 4–12 | 4–12 | 4–12 | 4–12 | 4–12 | 4–12 | 13–15 | 13–15 | 13–15 | 16–31 | 16–31 | 16–31 | 16–31 | 16–31 | 16–31 | 16–31 | 16–31 | 16–31 | 16–31 | 16–31 | 16–31 | 16–31 | 16–31 | 16–31 | 16–31 |
| - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| C | | K | S | Reserved0 | Reserved0 | Reserved0 | Reserved0 | Reserved0 | Reserved0 | Reserved0 | Reserved0 | Reserved0 | Version | Version | Version | Protocol Type | Protocol Type | Protocol Type | Protocol Type | Protocol Type | Protocol Type | Protocol Type | Protocol Type | Protocol Type | Protocol Type | Protocol Type | Protocol Type | Protocol Type | Protocol Type | Protocol Type | Protocol Type |
| Checksum (optional) | Checksum (optional) | Checksum (optional) | Checksum (optional) | Checksum (optional) | Checksum (optional) | Checksum (optional) | Checksum (optional) | Checksum (optional) | Checksum (optional) | Checksum (optional) | Checksum (optional) | Checksum (optional) | Checksum (optional) | Checksum (optional) | Checksum (optional) | Reserved1 (optional) | Reserved1 (optional) | Reserved1 (optional) | Reserved1 (optional) | Reserved1 (optional) | Reserved1 (optional) | Reserved1 (optional) | Reserved1 (optional) | Reserved1 (optional) | Reserved1 (optional) | Reserved1 (optional) | Reserved1 (optional) | Reserved1 (optional) | Reserved1 (optional) | Reserved1 (optional) | Reserved1 (optional) |
| Key (optional) ||||||||||||||||||||||||||||||||
| Sequence Number (optional) ||||||||||||||||||||||||||||||||
