GRE
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
- Împreună cu PPTP pentru a crea VPN-uri.
- În VPN-uri cu IPsec permite transmiterea informațiilor de rutare între retelele 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
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 cealalată.
IP ca protocol de rețea
Pachetele GRE care sunt încapsulate în IP folosesc tipul de protocol 47.[1]
Antetul pachetului
Antetului pachetului GRE standard
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
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
- RFC 1701: GRE (informațional)
- RFC 1702: GRE în rețele IPv4 (informațional)
- RFC 2637: PPTP (informațional)
- RFC 2784: Propunere pentru standardul GRE, actualizat de RFC 2890
- RFC 2890: Extensii pentru chei și numere de secvență în GRE (standard propus)
Note
Legături externe
- Generic Routing Encapsulation pe site-ul Cisco
- Generic Routing Encapsulation, în wikiul Cisco DocWiki