Generic Routing Encapsulation

























Generic Routing Encapsulation
Communication protocol
Purpose Network tunneling
Developer(s) Cisco Systems
Introduced 1994[1]
RFC(s) RFC1701, RFC1702, RFC2784

Generic Routing Encapsulation (GRE) is a tunneling protocol developed by Cisco Systems that can encapsulate a wide variety of network layer protocols inside virtual point-to-point links or point-to-multipoint links over an Internet Protocol network.




Contents






  • 1 Example uses


    • 1.1 Example protocol stack




  • 2 IP as a delivery protocol


  • 3 Packet header


    • 3.1 Standard GRE Packet Header


    • 3.2 PPTP GRE Packet Header




  • 4 Standards


  • 5 References


  • 6 External links





Example uses



  • In conjunction with PPTP to create VPNs.

  • In conjunction with IPsec VPNs to allow passing of routing information between connected networks.

  • In mobility protocols.

  • In A8/A10 interfaces to encapsulate IP data to/from Packet Control Function (PCF).


  • Linux and BSD can establish ad-hoc IP over GRE tunnels which are interoperable with Cisco equipment.


  • Distributed denial of service (DDoS) protected appliance to an unprotected endpoint.



Example protocol stack




































OSI model layer

Protocol
5. Session

X.225
4. Transport

UDP
3. Network (GRE-encapsulated)

IPv6

Encapsulation

GRE
3. Network

IPv4
2. Data Link

Ethernet
1. Physical

Ethernet physical layer

Based on the principles of protocol layering in OSI, protocol encapsulation, not specifically GRE, breaks the layering order. It may be viewed as a separator between two different protocol stacks, one acting as a carrier for another.



IP as a delivery protocol


GRE packets that are encapsulated within IP use IP protocol type 47.[2]



Packet header



Standard GRE Packet Header


A standard GRE packet header structure, as defined by RFC 2784 and RFC 2890, is represented in the diagram below.
























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. Set to 1 if a checksum is present.



K

Key bit. Set to 1 if a key is present.



S

Sequence number bit. Set to 1 if a sequence number is present.



Reserved0

Reserved bits; set to 0.



Version

GRE Version number; set to 0.



Protocol Type

Indicates the ether protocol type of the encapsulated payload. (For IPv4, this would be hex 0800.)



Checksum

Present if the C bit is set; contains the checksum for the GRE header and payload.



Reserved1

Present if the C bit is set; is set to 0.



Key

Present if the K bit is set; contains an application-specific key value.



Sequence Number

Present if the S bit is set; contains a sequence number for the GRE packet.



PPTP GRE Packet Header


The Point-to-Point Tunneling Protocol (PPTP), defined in RFC 2637, uses a variant GRE packet header structure, represented below. PPTP creates a GRE tunnel through which the PPTP GRE packets are sent.





























Bits 0–4
5–7
8
9-12
13–15
16–31
C
R
K
S
s
Recur
A
Flags
Version
Protocol Type
Key Payload Length
Key Call ID
Sequence Number (optional)
Acknowledgement Number (optional)


C


Checksum bit. For PPTP GRE packets, this is set to 0.



R

Routing bit. For PPTP GRE packets, this is set to 0.



K

Key bit. For PPTP GRE packets, this is set to 1. (All PPTP GRE packets carry a key.)



S

Sequence number bit. Set to 1 if a sequence number is supplied, indicating a PPTP GRE data packet.



s

Strict source route bit. For PPTP GRE packets, this is set to 0.



Recur


Recursion control bits. For PPTP GRE packets, these are set to 0.



A

Acknowledgement number present. Set to 1 if an acknowledgement number is supplied, indicating a PPTP GRE acknowledgement packet.



Flags

Flag bits. For PPTP GRE packets, these are set to 0.



Version

GRE Version number. For PPTP GRE packets, this is set to 1.



Protocol Type

For PPTP GRE packets, this is set to hex 880B.



Key Payload Length

Contains the size of the payload, not including the GRE header.



Key Call ID

Contains the Peer's Call ID for the session to which the packet belongs.



Sequence Number

Present if the S bit is set; contains the GRE payload sequence number.



Acknowledgement Number

Present if the A bit is set; contains the sequence number of the highest GRE payload packet received by the sender.



Standards




  • RFC 1701: Generic Routing Encapsulation (GRE) (informational)


  • RFC 1702: Generic Routing Encapsulation over IPv4 networks (informational)


  • RFC 2637: Point to Point Tunneling Protocol (informational)


  • RFC 2784: Generic Routing Encapsulation (GRE) (proposed standard, updated by RFC 2890)


  • RFC 2890: Key and Sequence Number Extensions to GRE (proposed standard)



References





  1. ^ Generic Routing Encapsulation (GRE). IETF. October 1994. doi:10.17487/RFC1701. RFC 1701. https://tools.ietf.org/html/rfc1701. Retrieved May 14, 2018. 


  2. ^ RFC 1702: Generic Routing Encapsulation over IPv4 networks. October 1994.




External links




  • Generic Routing Encapsulation, Subprotocol homepage at Cisco


  • Generic Routing Encapsulation, Entry in Cisco DocWiki (formerly known as the "Internetworking Technology Handbook")




Popular posts from this blog

Florida Star v. B. J. F.

Error while running script in elastic search , gateway timeout

Adding quotations to stringified JSON object values