¿Qué es la tunelización GRE? | Cómo funciona el protocolo GRE

La Encapsulación de enrutamiento genérico, o GRE, es un protocolo para envolver paquetes de datos dentro de paquetes de datos secundarios, con el fin de establecer una conexión de red directa punto a punto.

Objetivos de aprendizaje

Después de leer este artículo podrás:

  • Entender qué es la GRE
  • Más información sobre cómo funciona la tunelización
  • Más información sobre cómo afecta GRE a los procesos de la red

Contenido relacionado


¿Quieres saber más?

Suscríbase a theNET, el resumen mensual de Cloudflare sobre las ideas más populares de Internet.

Revisa la política de privacidad de Cloudflare para saber más sobre cómo Cloudflare gestiona tus datos personales.

Copiar enlace del artículo

¿Qué es la GRE?

La encapsulación de enrutamiento genérico, o GRE, es un protocolo para encapsular paquetes de datos que utilizan un protocolo de enrutamiento dentro de los paquetes de otro protocolo. "Encapsular" significa envolver un paquete de datos dentro de otro paquete de datos, como poner una caja dentro de otra caja. GRE es una forma de establecer una conexión directa punto a punto a través de una red, con el fin de simplificar las conexiones entre redes distintas. Funciona con una variedad de protocolos de la capa de red.

Paquete encapsulado: paquete compatible con la red dentro de un paquete no compatible

GRE permite el uso de protocolos que no suelen ser compatibles con una red, porque los paquetes están envueltos dentro de otros paquetes que sí utilizan protocolos compatibles. Para entender cómo funciona esto, pensemos en la diferencia entre un coche y un ferry. Un coche se desplaza por carreteras terrestres, mientras que un ferry lo hace por el agua. Normalmente, un coche no puede viajar por el agua, pero sí puede cargarse en un transbordador para hacerlo.

En esta analogía, el tipo de terreno es como la red que es compatible con determinados protocolos de enrutamiento, y los vehículos son como los paquetes de datos. GRE es una forma de cargar un tipo de paquete dentro de otro tipo de paquete para que el primer paquete pueda cruzar una red que normalmente no podría cruzar, al igual que un tipo de vehículo (el coche) se carga en otro tipo de vehículo (el ferry) para cruzar un terreno que de otro modo no podría.

Por ejemplo, supongamos que una empresa necesita establecer una conexión entre las redes de área local (LAN) de dos oficinas suyas diferentes. Ambas LAN utilizan la última versión del protocolo de Internet, IPv6. Pero para ir de la red de una oficina a la otra, el tráfico debe pasar por una red gestionada por un tercero, que está algo anticuada y solo es compatible con el antiguo protocolo IPv4.

Con GRE, la empresa podría enviar tráfico a través de esta red encapsulando paquetes IPv6 dentro de paquetes IPv4. Si volvemos a la analogía anterior, los paquetes IPv6 sería el coche, los paquetes IPv4 serían el ferry y la red de terceros sería el agua.

¿Qué significa la tunelización GRE?

La encapsulación de paquetes dentro de otros paquetes se conoce como "tunelización". Los túneles de GRE suelen configurarse entre dos enrutadores, y cada uno de ellos actúa como un extremo del túnel. Los enrutadores se configuran para enviar y recibir paquetes de GRE directamente entre ellos. Los enrutadores que se encuentren entre esos dos enrutadores no abrirán los paquetes encapsulados; solo harán referencia a los encabezados que rodean los paquetes encapsulados para reenviarlos.

Para entender por qué se llama "tunelización," podemos cambiar ligeramente la analogía. Si un coche necesita pasar del Punto A en un lado de una montaña al Punto B en el otro lado, la forma más eficiente de hacerlo es simplemente atravesando la montaña. Sin embargo, los coches normales no son capaces de atravesar directamente la roca sólida. Por ello, el coche se ve obligado a rodear la montaña para llegar del Punto A al Punto B.

Pero imagina que se construye un túnel para cruzar la montaña. Ahora, el coche puede ir directamente del punto A al punto B, lo que es mucho más rápido, y es algo que no podría hacerse sin el túnel.

Ahora, pensemos en el Punto A como un dispositivo conectado a la red, en el Punto B como otro dispositivo conectado a la red, en la montaña como la red entre los dos dispositivos y en el coche como los paquetes de datos que tienen que ir del Punto A al Punto B. Imaginemos que esta red no es compatible con el tipo de paquetes de datos que los dispositivos de los Puntos A y B necesitan intercambiar. Al igual que un coche que intenta atravesar una montaña, los paquetes de datos no pueden pasar y deben tomar un camino mucho más largo a través de redes adicionales.

Pero GRE crea un "túnel" virtual a través de la red "montaña" para permitir que pasen los paquetes de datos. Al igual que un túnel crea una vía para que los coches crucen, GRE (y otros protocolos de tunelización) crea una vía para que los paquetes de datos atraviesen una red con la que no son compatibles.

¿Qué va en un encabezado de GRE?

Todos los datos enviados a través de una red se dividen en trozos más pequeños llamados paquetes, y todos los paquetes tienen dos partes: la carga útil y el encabezado. La carga útil es el contenido real del paquete, los datos que se envían. El encabezado contiene información sobre la procedencia del paquete y el grupo de paquetes al que pertenece. Cada protocolo de red adjunta un encabezado a cada paquete.

GRE añade dos encabezados a cada paquete: el encabezado GRE, de 4 bytes, y un encabezado IP, de 20 bytes. El encabezado GRE indica el tipo de protocolo utilizado por el paquete encapsulado. El encabezado IP encapsula la cabecera y la carga útil del paquete original. Esto significa que un paquete GRE suele tener dos encabezados IP: uno para el paquete original y otro añadido por el protocolo GRE. Solo los enrutadores de cada extremo del túnel GRE harán referencia al encabezado IP original, que no es GRE.

¿Cómo afecta el uso de GRE a los requisitos de MTU y MSS?

MTU y MSS son medidas que limitan el tamaño de los paquetes de datos que viajan por una red, como un límite de peso para los automóviles que cruzan un puente. La MTU mide el tamaño total de un paquete, incluyendo los encabezados; el MSS solo mide la carga útil. Los paquetes que superan la MTU se fragmentan, o se dividen en trozos más pequeños, para que quepan en la red.

Como cualquier protocolo, el uso de GRE añade algunos bytes al tamaño de los paquetes de datos. Esto debe tenerse en cuenta en los ajustes de MSS y MTU de los paquetes. Si la MTU es de 1500 bytes y la MSS es de 1460 bytes (teniendo en cuenta el tamaño de los encabezados IP y TCP necesarios), la adición de los encabezados GRE de 24 bytes hará que los paquetes superen la MTU:

1460 bytes [carga útil] + 20 bytes [encabezado TCP] + 20 bytes [encabezado IP] + 24 bytes [encabezado GRE + encabezado IP] = 1524 bytes

Como resultado, los paquetes se fragmentarán. La fragmentación ralentiza los tiempos de entrega de los paquetes y aumenta la potencia informática utilizada, ya que los paquetes que superan la MTU deben dividirse y volver a ensamblarse.

Esto se puede evitar si se reduce el MSS para acomodar los encabezados GRE. Si el MSS se establece en 1436 en lugar de 1460, los encabezados GRE se tendrán en cuenta y los paquetes no superarán la MTU de 1500:

1436 bytes [carga útil] + 20 bytes [encabezado TCP] + 20 bytes [encabezado IP] + 24 bytes [encabezado GRE + encabezado IP] = 1500 bytes

Aunque se evita la fragmentación, el resultado es que las cargas útiles son ligeramente más pequeñas, lo que significa que se necesitarán paquetes adicionales para entregar los datos. Por ejemplo, si el objetivo es entregar 150 000 bytes de contenido (o unos 150 kB), y si la MTU se establece en 1500 y no se utilizan otros protocolos de capa 3, compara cuántos paquetes son necesarios cuando se utiliza GRE que cuando no se utiliza:

  • Sin GRE, MSS 1460: 103 paquetes
  • Con GRE, MSS 1436: 105 paquetes

Los dos paquetes adicionales añaden milisegundos de retraso a la transferencia de datos. Sin embargo, el uso de GRE puede permitir que estos paquetes tomen rutas de red más rápidas de las que podrían tomar de otro modo, lo cual puede compensar el tiempo perdido.

¿Cómo se utiliza el GRE en los ataques DDoS?

En un ataque de denegación de servicio distribuido (DDoS), un atacante intenta sobrecargar un servidor o red objetivo con tráfico de red basura, algo así como bombardear un restaurante con pedidos falsos hasta que no pueda dar servicio a los clientes legítimos.

GRE puede utilizarse para realizar ataques DDoS, como cualquier protocolo de red. Uno de los mayores ataques DDoS registrados se produjo en septiembre de 2016. Fue contra el sitio web de un investigador de seguridad y se llevó a cabo utilizando la botnet Mirai. Se sobrecargó al sitio web con paquetes que utilizaban el protocolo GRE.

A diferencia de otros protocolos, la fuente de los paquetes GRE no puede ser falsificada o suplantada. (Ver nuestros artículos sobre ataques de inundación SYN y de amplificación de DNS para ejemplos de protocolos, para los que este no es el caso). Para llevar a cabo un gran ataque DDoS de GRE de importancia, el atacante debe controlar una gran cantidad de dispositivos informáticos reales en una botnet.

¿Cómo protege Cloudflare contra los ataques DDoS de GRE?

Cloudflare protege contra los ataques DDoS de la capa de red de todo tipo, incluidos los ataques que utilizan GRE. Cloudflare Magic Transit protege las redes locales, en la nube e híbridas al extender las capacidades de mitigación de DDoS de la red global de Cloudflare a la infraestructura de red. Cualquier tráfico de red del ataque se filtra sin ralentizar el tráfico legítimo.

¿Cómo utiliza Cloudflare la tunelización GRE?

Para que Magic Transit pueda proteger y acelerar el tráfico de red de los clientes, la red de Cloudflare tiene que estar conectada de forma segura a las redes internas de los clientes. Para ello, la tunelización GRE es extremadamente útil. Mediante la tunelización GRE, Magic Transit es capaz de conectarse directamente a las redes de los clientes de Cloudflare de forma segura a través de la Internet pública.

Magic Transit está incorpardo en la red Anycast de Cloudflare. Esto significa que cualquier servidor de Cloudflare puede servir como punto de conexión de un túnel GRE utilizando una única dirección IP, eliminando los puntos de fallo únicos para las conexiones de túneles GRE (Cloudflare también utiliza este enfoque para conectar a los clientes de Magic WAN). Para más información sobre cómo funciona Magic Transit, consulta nuestra página de producto de Magic Transit.