O GRE (Generic Routing Encapsulation) é um protocolo de tunelamento que pode encapsular diversos protocolos dentro de tuneis IP, criando links ponto-a-ponto virtuais entre roteadores remotos.
O protocolo é extremamente funcional em diversos cenários, pois foi desenvolvido para permitir que redes remotas pareçam estar diretamente conectadas. Como o GRE não faz a criptografia, o GRE pode trabalhar em conjunto com IPsec para garantir a integridade das informações quando necessário.
Abaixo podemos observar a representação do encapsulamento de um pacote IP pelo GRE como também a inclusão de um novo cabeçalho.

O interessante é que o protocolo de transporte poderia ser o IPv6 e o protocolo encapsulado poderia ser o IPX, tráfego Multicast, etc; E ao ser entregue ao roteador de destino, o novo cabeçalho é removido e o pacote é entregue intacto.
Segue abaixo um exemplo de configuração de um túnel GRE para Roteadores com o Comware 7, fechando a adjacência OSPF entre 2 roteadores separados por uma rede MPLS. Nos testes usamos o roteador HP VSR1000.

Tabela de Rotas e tracert do Roteador R2
[R2]disp ip routing-table | inc O 192.168.1.0/24 O_INTRA 10 1563 192.168.13.1 Tun0 <R2>tracert 192.168.13.1 traceroute to 192.168.13.1 (192.168.13.1), 30 hops at most, 52 bytes each packet, press CTRL_C to break 1 192.168.23.2 (192.168.23.2) 0.488 ms 0.523 ms 1.668 ms 2 192.168.13.1 (192.168.13.1) 0.962 ms 5.463 ms 0.881 ms <R2>tracert 192.168.1.1 traceroute to 192.168.1.1 (192.168.1.1), 30 hops at most, 52 bytes each packet, press CTRL_C to break 1 192.168.1.1 (192.168.1.1) 1.116 ms 2.588 ms 1.731 ms