Generic Routing Encapsulation (prescurtat GRE, în românăÎncapsulare Generică pentru Rutare) este un protocol de tunelare dezvoltat de Cisco Systems care poate încapsula numeroase protocoale de nivel rețea în legături punct-la-punct virtuale peste o rețea IP.
Exemple de utilizare
[modificare | modificare sursă]- Împreună cu PPTP pentru a crea VPN-uri.
- În VPN-uri cu IPsec permite transmiterea informațiilor de rutare între rețelele conectate.
- În protocoalele din rețelele mobile.
- În interfețele A8/A10 încapsulează informația IP de la/către PCF (Packet Control Function).
- Linux și BSD pot stabilit tunele IP peste GRE ad-hoc care sunt interoperabile cu echipamentele Cisco.
- Tunelare de la un dispozitiv protejat împotriva DDoS către un echipament neprotejat.
Exemple de stivă de protocoale
[modificare | modificare sursă]| Nivel OSI | Protocol |
|---|---|
| 5. Sesiune | X.225 |
| 4. Transport | UDP |
| 3. Rețea (încapsulat în GRE) | IPv6 |
| Încapsulare | GRE |
| 3. Rețea | IPv4 |
| 2. Legătură de date | Ethernet |
| 1. Fizic | Nivelul fizic Ethernet |
Protocoalele de încapsulare, cum este și GRE, strică stivuirea protocoalelor din OSI. Ele pot fi văzute ca separatoare între 2 stive diferite de protocoale, una din acestea transportând-o pe cealaltă.
IP ca protocol de rețea
[modificare | modificare sursă]Pachetele GRE care sunt încapsulate în IP folosesc tipul de protocol 47.[1]
Antetul pachetului
[modificare | modificare sursă]Antetului pachetului GRE standard
[modificare | modificare sursă]Antetul unui pachet GRE standard, așa cum este el definit în RFC 2784 și RFC 2890, este reprezentat în figura de mai jos.
| Biți 0–3 | 4–12 | 13–15 | 16–31 | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| C | K | S | Rezervat0 | Versiune | Tip de protocol | ||||||||||||||||||||||||||
| Sumă de control (opțional) | Rezervat1 (opțional) | ||||||||||||||||||||||||||||||
| Cheie (opțional) | |||||||||||||||||||||||||||||||
| Număr de secvență (opțional) | |||||||||||||||||||||||||||||||
- C
- Bitul pentru sumă de control. Setat dacă este prezentă suma de control.
- K
- Bitul pentru cheie. Setat dacă este prezentă o cheie.
- S
- Bitul pentru numărul de secvența. Setat dacă este prezent un număr de secvență.
- Rezervat0
- Biți rezervați; setați la 0.
- Versiune
- Versiunea de GRE; în prezent, setat la 0.
- Tip de protocol
- Indică tipul de protocol al pachetului încapsulat. Este tipul folosit de Ethernet (Pentru IPv4, acesta ar fi 0x0800.)
- Sumă de control
- Prezent dacă bitul C este setat; conține suma de control pentru antetul GRE și payload.
- Rezervat1
- Prezent dacă bitul C este setat; valoarea este 0.
- Cheie
- Prezent dacă bitul K este setat; conține o cheie specifică aplicației curente.
- Număr de secvență
- Prezent dacă bitul S este setat; conține numărul de secvență al pachetului GRE.
Antetul pachetului GRE pentru PPTP
[modificare | modificare sursă]Protocolul PPTP, definit în RFC 2637, folosește o variantă a antetului GRE preentată mai jos. PPTP creează un tunel GRE prin care sunt trimise pachetele PPP.
| Biți 0–4 | 5–7 | 8 | 9-12 | 13–15 | 16–31 | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| C | R | K | S | s | Recur | A | Flaguri | Versiune | Tip de protocol | ||||||||||||||||||||||
| Lungimea cheii pentru conținut | Cheie Call ID | ||||||||||||||||||||||||||||||
| Număr de secvență (opțional) | |||||||||||||||||||||||||||||||
| Număr de confirmare (opțional) | |||||||||||||||||||||||||||||||
- C
- Sumă de control. Pentru PPTP, este setat la 0.
- R
- Bit de rutare. Pentru PPTP, este setat la 0.
- K
- Bit pentru cheie. Pentru PPTP, este setat la 1 (toate pachetele GRE de PPTP au o cheie)
- S
- Identificatorul pentru numărul de secvență. Setat la 1 pentru pachetele de date, unde există un număr de secvență.
- s
- Bitul pentru rutarea strictă după sursă. Pentru pachetele de PPTP, este setat la 0.
- Recur
- Biți pentru controlul recursivității. Sunt setați la 0.
- A
- Setat la 1 când este prezent un număr de confirmare, ceea ce indică un pachet GRE de confirmare.
- Flaguri
- Setate la 0.
- Versiune
- Versiunea protocolului GRE. Pentru pachete PPTP, versiunea este 1.
- Tip de protocol
- Pentru PPTP valoarea este 0x880B.
- Lungimea payloadului
- Conține mărimea payloadului, fără antetul GRE.
- Call ID
- Conține identificatorul de sesiune al partenerului pentru conexiunea curentă.
- Număr de secvență
- Prezent dacă este setat bitul S; conține numărul de secvență al pachetului GRE.
- Număr de confirmare
- Prezent dacă este setat bitul A; conține numărul de secvență al ultimului pachet GRE primit de transmițător.
Standarde
[modificare | modificare sursă]Note
[modificare | modificare sursă]Legături externe
[modificare | modificare sursă]- Generic Routing Encapsulation pe site-ul Cisco
- Generic Routing Encapsulation Arhivat în , la Wayback Machine., în wikiul Cisco DocWiki
