IP : Túneles IP

¿Por qué no puedo navegar por Internet cuando utilizo un túnel GRE?

20 Mayo 2008 - Traducción manual
Otras Versiones: PDFpdf | Traducción Automática (31 Julio 2013) | Inglés (10 Agosto 2005) | Comentarios

Contenidos

Introducción
Requisitos previos
     Requisitos
     Componentes utilizados
     Convenciones
Fragmentación de paquetes y mensajes ICMP
Mensajes ICMP bloqueados
     Soluciones
     Soluciones adicionales
Discusiones relacionadas de la comunidad de soporte de Cisco

Introducción

En ocasiones, cuando el tráfico pasa por un túnel de encapsulación de ruteo genérica (GRE), puede utilizar con éxito el comando ping y Telnet, pero no puede descargar páginas de Internet ni transferir archivos utilizando el protocolo de transferencia de archivos (FTP). En este documento se explica un motivo habitual por el que se produce este problema y se brindan varias soluciones alternativas.

Requisitos previos

Requisitos

Este documento requiere una comprensión básica de GRE. Consulte los siguientes documentos para obtener más información acerca de GRE:

Componentes utilizados

Este documento no tiene restricciones específicas en cuanto a versiones específicas de software y hardware.

Para obtener información adicional sobre los comandos que se utilizan en este documento, utilice la Herramienta de búsqueda de comandos (solamente clientes registrados).

Convenciones

Si desea obtener más información sobre las convenciones del documento, consulte las Convenciones de consejos técnicos de Cisco.

Fragmentación de paquetes y mensajes ICMP

En este documento se utiliza el siguiente diagrama de red como ejemplo:

56a.gif

En el diagrama anterior, cuando el cliente desea acceder a una página de Internet, establece una sesión TCP con el servidor Web. Durante dicho proceso, el cliente y el servidor Web anuncian el tamaño de segmento máximo (MSS), y se indican entre si que pueden aceptar segmentos TCP que tengan como máximo el tamaño indicado. Al recibir la opción MSS, cada dispositivo calcula el tamaño del segmento que se puede enviar. Esta operación se denomina Envío del tamaño máximo de segmento (SMSS) y equivale al más pequeño de los dos MSS. Para obtener más información acerca del tamaño máximo de segmento TCP, consulte RFC 879 leavingcisco.com.

Para mayor simplicidad, el servidor Web del ejemplo anterior determina que puede enviar paquetes con un máximo de 1500 bytes de longitud. Por consiguiente, envía un paquete de 1500 bytes al cliente y en el encabezado IP establece el bit "don't fragment" (no fragmentar - DF). Cuando el paquete llega a R2, el router intenta encapsularlo en el paquete de túnel. En el caso de la interfaz del túnel GRE, la unidad de transmisión máxima (MTU) de IP tiene 24 bytes menos que la MTU de IP de la verdadera interfaz de salida. En el caso de una interfaz de salida de Ethernet, esto significa que la MTU de IP de la interfaz de túnel será de 1500 menos 24 ó 1476 bytes.

R2 está intentando enviar un paquete IP de 1500 bytes dentro de una interfaz MTU de IP de 1476 bytes. Dado que esto no es posible, R2 necesita fragmentar el paquete, creando un paquete de 1476 bytes (datos y encabezado IP) y un paquete de 44 bytes (24 bytes de datos y un encabezado IP nuevo de 20 bytes). A continuación, R2 encapsula por GRE ambos paquetes para obtener paquetes de 1500 bytes y 68 bytes, respectivamente. Ahora, estos paquetes se pueden enviar a la interfaz de salida real, la cual tiene una MTU de IP de 1500 bytes.

Sin embargo, recuerde que el paquete recibido por R2 tiene configurado el bit DF. Por lo tanto, R2 no puede fragmentar el paquete y, en su lugar, necesita indicar al servidor Web para que envíe paquetes más pequeños. Esta operación la realiza enviando un paquete de protocolo de mensaje de control de Internet (ICMP) de tipo 3 código 4 (Destino inalcanzable; Fragmentación necesaria y conjunto DF). Este mensaje ICMP contiene la MTU correcta para que la utilice el servidor Web, el cual debe recibir este mensaje y ajustar el tamaño del paquete en consecuencia.

Nota:  Consulte Información importante sobre los Comandos de depuración antes de utilizar comandos debug.

Podemos ver los mensajes ICMP enviados por R2 si habilitamos el comando debug ip icmp:

ICMP: dst (10.10.10.10) frag. needed and DF set unreachable sent to 10.1.3.4

Mensajes ICMP bloqueados

Un problema muy común se produce cuando los mensajes ICMP se bloquean a lo largo del trayecto al servidor Web. Cuando esto ocurre, el paquete ICMP no llega nunca al servidor Web, por lo que los datos no pueden pasar entre el cliente y el servidor.

Soluciones

Una de estas cuatro soluciones debería resolver el problema.

  • Averigüe en qué punto del trayecto se bloquea el mensaje ICPM y vea si puede autorizarlo.

  • Establezca la MTU de la interfaz de red del cliente en 1476 bytes, lo que obligará al SMSS a ser más pequeño, por lo que no será preciso fragmentar los paquetes cuando lleguen a R2. No obstante, si cambia la MTU del cliente, también deberá cambiar la MTU de todos los dispositivos que comparten la red con este cliente. En un segmento Ethernet, esto puede significar un gran número de dispositivos.

  • Utilice un servidor proxy (o mejor aún, un cache engine de la Web) entre R2 y el router de la gateway, y permita que el servidor proxy solicite todas las páginas de Internet.

  • Si el túnel GRE se ejecuta sobre enlaces que pueden tener una MTU superior a 1500 bytes más el encabezado del túnel, otra solución puede ser aumentar la MTU a 1524 (1500 más 24 para la sobrecarga de GRE) en todas las interfaces y enlaces entre los routers de punto extremo de GRE.

Soluciones adicionales

Si las opciones anteriores no son factibles, las opciones que indicamos a continuación pueden resultar útiles.

  • Use el ruteo por políticas para borrar y establecer el bit de DF en el paquete IP (disponible en la versión 12.1(6) Cisco IOS® y versiones superiores).

    interface ethernet0 
    ... 
    ip policy route-map clear-df 
    
    !--- Este comando se utiliza para identificar un mapa de ruta 
    
    !--- para utilizarlo para ruteo por políticas en una interfaz, 
    
    !--- use el comando ip policy route-map en 
    
    !--- modo de configuración de la interfaz.
    
    route-map clear-df permit 10 
    match ip address 101 
    set ip df 0 
    
    !--- Este comando se utiliza para cambiar el valor del bit Don't Fragment (DF) 
    
    !--- en el encabezado de IP, utilice este comando 
    
    !--- en el modo de configuración de mapa de ruta.
    
    access-list 101 permit tcp 10.1.3.0 0.0.0.255 any

    Esto permitirá que el paquete IP de datos se fragmente antes de la encapsulación GRE. Luego, el host final de recepción debe reensamblar los paquetes IP de datos. Esto no suele ser un problema.

  • Cambie el valor de la opción TCP MSS de los paquetes SYN que atraviesan el router (disponible en IOS 12.2(4)T y versiones superiores). Esto reduce el valor de la opción MSS en el paquete TCP SYN, de modo que es más pequeño que el valor del comando ip tcp adjust-mss value en este caso 1436 (MTU menos el tamaño de los encabezados IP, TCP y GRE). Ahora, los host finales envían paquetes TCP/IP que no son superiores a este valor.

    interface tunnel0 
    ... 
    ip tcp adjust-mss 1436 
    
    !--- Este comando se utiliza para ajustar el valor del tamaño de segmento máximo (MSS) 
    
    !--- de los paquetes TCP SYN que atraviesan el router. 
    
    !--- El tamaño de segmento máximo se encuentra en el rango comprendido entre 500 y 1460.
  • Una última opción consiste en incrementar la MTU de IP en la interfaz de túnel a 1500 (disponible en 1500 IOS 12.0 y versiones superiores). No obstante, si se incrementa la MTU de IP los paquetes de túnel se fragmentarán, ya que el bit de DF del paquete original no se copiará en el encabezado del paquete de túnel. En este caso, el router del otro final del túnel GRE debe volver a montar el paquete de túnel GRE antes de poder sacar el encabezado de GRE y reenviar el paquete interno. El reensamblado de paquetes IP se realiza en modo de switch de proceso y utiliza memoria. Por consiguiente, esta opción puede reducir en gran medida la tasa de transferencia de paquetes a través del túnel GRE.

    interface tunnel0   
    ...
    ip mtu 1500
    
    !--- Este comando se utiliza para establecer el tamaño de la unidad de transmisión máxima (MTU)
    
    !--- de los paquetes IP enviados en una interfaz. El tamaño mínimo
    
    !--- que se puede configurar es de 128 bytes; el máximo dependerá del medio de la interfaz.

Para finalizar, la causa más habitual de no poder explorar Internet en un túnel GRE se debe al problema de fragmentación mencionado anteriormente. La solución es admitir los paquetes ICMP o resolver el problema ICMP con cualquiera de las soluciones alternativas previamente mencionadas.


Discusiones relacionadas de la comunidad de soporte de Cisco

La Comunidad de Soporte de Cisco es un foro donde usted puede preguntar y responder, ofrecer sugerencias y colaborar con colegas.


Document ID: 13725