Generic Routing Encapsulation is a tunnelling protocol, used to carry network layer protocols through encapsulation inside others.
GRE, defined in RFC1701 & RFC1702, allows the encapsulation of a network layer protocol, such as IPv6 inside another network layer protocol, such as IPv4. The encapsulated protocol is often carried unaware of the outer tunnel it transits in.