Este documento describe la fragmentación y reensamblado sobre los links L2TP y explica cómo el ajuste de la Unidad de Transmisión Máxima (MTU) puede ayudar a paliar algunos de los problemas asociados.
Los lectores de este documento deben tener conocimiento de:
Comandos Generales de Configuración de Virtual Private Dialup Network (VPDN)
Temas generales de IP tales como fragmentación, reensamblado, MTU, encapsulación, encabezados, etc.
La mayoría de las mejoras en la configuración y las funciones descritas aquí están disponibles en Cisco IOS® Software Releases 12.1T o 12.2T y posteriores. Sin embargo, si desea obtener más información, consulte las distintas secciones a continuación.
La información que se presenta en este documento se originó a partir de dispositivos dentro de un ambiente de laboratorio específico. All of the devices used in this document started with a cleared (default) configuration. Si la red está funcionando, asegúrese de haber comprendido el impacto que puede tener un comando antes de ejecutarlo.
For more information on document conventions, refer to the Cisco Technical Tips Conventions.
A veces tiene que fragmentar los paquetes encapsulados en túnel para transmitirlos en el cable. Este es un ejemplo de esto.
En el caso de L2TP sobre UDP, la sobrecarga de todos los protocolos incluye un conjunto adicional de encabezados IP, UDP y L2TP. El encabezado IP es de 20 bytes, el encabezado UDP es de 8 bytes y el encabezado L2TP es generalmente de 12 bytes. Los 12 bytes del encabezado L2TP incluyen:
los campos version y flag (2 bytes)
los campos tunnel id y session id (2 bytes cada uno)
2 bytes de desplazamiento de relleno
4 bytes de encapsulación de protocolo punto a punto (PPP)
Este diagrama muestra más detalles:
Si habilita la secuenciación de datos (está desactivada de forma predeterminada en los dispositivos Cisco), debe agregar 4 bytes adicionales para los campos Ns y Nr. Agregue los encabezados IP, UDP y L2TP para ver que L2TP sobre UDP agrega 40 bytes de encapsulación de protocolo al paquete.
Cuando encapsula un paquete IP de 1500 bytes en L2TP, el paquete encapsulado se convierte en 1540 bytes (1500 + 40 bytes de encabezados IP, UDP y L2TP). Debe fragmentar el paquete para transmitirlo a través de una interfaz de tipo Ethernet estándar (que tiene una MTU de 1500 bytes). El paquete encapsulado se fragmenta en dos. El primer fragmento consta de 1500 bytes (1460 bytes del paquete IP original + 40 bytes de encapsulación L2TP). El segundo fragmento consta de 60 bytes (últimos 40 bytes del paquete IP original + 20 bytes de sobrecarga IP).
Nota: Sólo el primer fragmento contiene el encabezado L2TP; el segundo fragmento sólo contiene un encabezado IP. Esto permite que el par L2TP, ya sea LAC o LNS, reensamble los dos fragmentos en el paquete de túnel encapsulado de 1449 byte original.
Uno de los problemas a los que se enfrentan el protocolo de túnel de capa 2 (L2TP) sobre el protocolo de datagramas de usuario (UDP) y otros protocolos de tunelación basados en IP de capa 2 y capa 3 es que la sobrecarga del protocolo de tunelación aumenta el tamaño del paquete encapsulado en túnel. Cuando el paquete original ya es de tamaño completo, debe fragmentar el paquete encapsulado en túnel para transmitirlo en el cable.
Uno de los problemas provocados por la fragmentación y el reensamblado del paquete L2TP en el concentrador de acceso L2TP (LAC) y en el servidor de red L2TP (LNS) es que la fragmentación y el reensamblado en el software Cisco IOS son realizados en nivel de procesamiento. Al agregar números grandes de sesiones L2TP y flujos de tráfico en un LNS, la conmutación de procesos puede reducir el rendimiento en forma drástica. Por esta razón, es altamente deseable reducir o eliminar la necesidad de fragmentación y reensamblado en la trayectoria de conmutación L2TP.
Utilice uno de los métodos descritos en este documento para ajustar la unidad máxima de transmisión (MTU) para resolver esto.
Se diseñó una variedad de configuraciones y características en el software de Cisco IOS para evitar la fragmentación y el reensamblado en el trayecto de conmutación de L2TP al ajustar la MTU.
Configure una MTU de IP menor en la interfaz de plantilla virtual mediante el comando ip mtu. La configuración de una MTU de IP inferior obliga al router a descartar cualquier paquete IP que exceda la MTU de IP y que tenga el bit DF (No fragmentar) configurado en el encabezado IP. Luego, el router genera un mensaje de fragmentación necesaria de código 4, host inalcanzable de tipo 3 del Protocolo de mensajes de control de Internet (ICMP) en dirección al origen del paquete (el host original). Este mensaje indica la MTU de IP de la interfaz, de modo que el origen pueda reducir el tamaño del paquete y adaptarlo para la interfaz. Este proceso es también conocido como detección MTU de trayecto (PMTUD). Para obtener más información, consulte RFC 1191 . Configure la MTU IP al tamaño de paquete IP más grande que no excederá la PMTU entre el LAC y el LNS cuando se agregue el encabezado L2TP completo. Para una PMTU de 1500 bytes y un encabezamiento L2TP estándar de 40 bytes, configure la MTU de IP en 1460 (encabezamiento de 1500-40 bytes).
Si la PMTU se desconoce (o cambia) entre el LAC y LNS, puede configurar el comando ip pmtu en el grupo vpdn. El comando ip pmtu fue agregado en la Versión 12.2(4)T del software del IOS de Cisco utilizando ID de depurador: CSCds72714 (sin visualización de usuarios externos). La función ip pmtu copia el bit DF del paquete interno al encabezado L2TP externo y activa la PMTUD entre el router y su punto final de túnel L2TP.
Microsoft Windows tiene una configuración de registro que le permite habilitar una característica de retraso para su detección de PMTU. Para obtener información sobre Windows NT, consulte el siguiente artículo en la página Web de Microsoft. Cambios en el algoritmo de detección PMTU Black Hole para Windows NT 3.51 (Q136970).
Para Windows 2000/XP, el artículo de Microsoft Cómo resolver problemas de router de agujero negro (Q314825) describe varios métodos en Windows para evitar este problema. En este artículo se define el término router "agujero negro", se describe un método de localización de routers de agujero negro y se sugieren tres maneras de evitar la pérdida de datos que puede ocurrir debido a un router de agujero negro.
También puede habilitar el ajuste automático de una MTU de IP. Esta función permite que el router ajuste de forma automática la MTU IP en la interfaz de acceso virtual para compensar el tamaño del encabezado L2TP y la MTU de la interfaz de egreso. Se agregó esta función en la versión 12.1(5)T del software del IOS de Cisco. Para hacerlo, se utilizó el ID de error de programación CSCdr01713 (sólo para clientes registrados).
Nota: La MTU IP sólo se ajusta automáticamente si no hay una MTU IP configurada manualmente en la interfaz de plantilla virtual (usando la opción de la sección anterior).
Inicialmente, esta característica se activaba de forma predeterminada sin ningún método para desactivarla. El Id. de error CSCdt67753 (sólo clientes registrados) en Cisco IOS Software Releases 12.2(3) y 12.2(4)T añadió más tarde el comando [no] ip mtu adjust en el vpdn-group para habilitar y deshabilitar la función. La opción predeterminada es que esta función esté habilitada. Esta función no tiene una interfaz de línea de comandos (CLI) para cambiar el valor predeterminado sólo para las conexiones L2X, que no se enlazan a un grupo vpdn (como un túnel L2F o L2TP iniciado por SGBP). Se recibieron muchas quejas de clientes debido a la incapacidad para inhabilitar esta función en topologías PPP multilink de chasis múltiples (MMPPP), en conjunto con los problemas PMTUD que se describen a continuación. Por esta razón, se cambió el predeterminado para tener la función ajuste automático IP MTU desactivada comenzando en las versiones 12.2(6) y 12.2(8)T del IOS de Cisco y luego usando Bug ID CSCdu69834 (sólo para los clientes registrados).
El ajuste manual y automático de la MTU se basa en la PMTUD entre los hosts finales. Si bien es adecuado en teoría, PMTUD no funciona bien en Internet. Consulte RFC 2923 para obtener una descripción detallada de cómo PMTUD se interrumpe en Internet. El mayor problema es la presencia de "agujeros negros" que hacen que las descargas de páginas Web parezcan colgarse en la mitad del proceso. Estos agujeros negros son causados generalmente por firewalls o por routers configurados para separar por filtración los mensajes ICMP. Cuando el origen de los paquetes grandes no puede recibir el mensaje "ICMP Host Unreachable" del router, indicando que se ha excedido la MTU, no puede reducir el tamaño del paquete. En cambio, continúa intentando y retransmitiendo el mismo paquete una y otra vez con el conjunto de bits DF. Estos paquetes son descartados por el LNS ya que exceden la PMTU y la conexión deja de responder.
Debido a los problemas que tiene PMTUD para detectar cuando la MTU de IP es inferior en un túnel L2TP, Cisco agregó la función de ajuste de Tamaño de segmento máximo (MSS) de TCP en la versión 12.2(4)T del software del IOS de Cisco.
La función de Ajuste del tamaño máximo del segmento TCP, agregada mediante el ID de error CSCds69577 (sólo para clientes registrados) disponible en la versión 12.2(4)T y posteriores de software del IOS de Cisco, permite que el router modifique el TCP MSS anunciado en los paquetes de sincronización (SYN) entrantes y salientes enviados por los hosts finales. Al modificar el TCP MSS a un valor inferior al predeterminado habitual de 1460, puede eliminar el TCP como fuente de paquetes de tamaño completo. El MSS de TPC debe ser ajustado a un valor determinado de forma tal que un segmento con un encabezado TCP/IP y encapsulado en L2TP sobre UDP no exceda el MTU IP de la interfaz de egreso. Un encabezado TCP/IP es generalmente 40 bytes y el encabezado L2TP sobre UDP es 40 bytes adicionales. Por lo tanto, en general, el TCP MSS debe ajustarse a 1420 (encabezado TCP/IP de 1500 - 40 bytes - L2TP de 40 bytes sobre el encabezado UDP).
El comando utilizado para esto es ip tcp adjust-mss <mss>, que es un comando de nivel de interfaz.
La última opción para reducir la fragmentación en una red L2TP requiere soporte para negociación de la Unidad de recepción máxima (MRU) en el cliente del Point-to-Point Protocol. La opción MRU en PPP permite que un par anuncie cuál es su unidad máxima de recepción. Por ejemplo, si un peer anuncia una MRU de 1460, ese peer no procesará una trama PPP con una carga útil de más de 1460 bytes de longitud. La implementación de Cisco PPP utiliza la MTU de la interfaz como el valor de MRU que anunció durante la negociación PPP. Si la MTU se establece como el valor predeterminado de 1500 bytes, no se anuncia ninguna MRU, ya que éste es el valor predeterminado estándar para PPP. Sin embargo, si la MTU se configura en 1460, se anuncia una MRU de PPP de 1460. Si el par PPP escucha a la MRU anunciada durante la negociación PPP y ajusta su MTU (e indirectamente la MTU de IP) para ese link PPP, podemos evitar la fragmentación. Con una MRU PPP anunciada de 1460, el peer debe establecer la MTU IP en 1460. Esto, a su vez, modifica el TCP MSS que el peer anuncia al abrir conexiones TCP y evita la fragmentación sobre la red L2TP.
Utilice el comando mtu <bytes> para configurar una MTU inferior en la interfaz de plantilla virtual. Una vez más, esto requiere soporte en el cliente PPP para escuchar la MRU anunciada durante la negociación PPP. Un cliente conocido que escucha la opción MRU es el cliente PPP de Windows XP. Desafortunadamente, otros clientes PPP implementados comúnmente no se adhieren a la MRU PPP anunciada como deberían. Consulte la documentación del cliente PPP para determinar si utiliza correctamente la MRU PPP anunciada. Cuando se ejecuta L2TP con proxy LCP, tiene que ocurrir la renegociación de LCP ya que la opción MRU se negocia durante la fase LCP. Para habilitar la renegociación de LCP, configure lcp renegotiation on-mismatch o lcp renegotiation always bajo el vpdn-group.
Un problema con la reducción de la MTU es que la MTU IP también se reduce automáticamente. Actualmente no es posible configurar una MTU IP mayor que la MTU en una interfaz de plantilla virtual. Se está efectuando un seguimiento de esta limitación en la identificación de problema CSCdx39828 como pedido de función/mejora (no visible por usuarios externos).
Este método requiere que los clientes escuchen la opción MRU durante la negociación LCP. A menudo, existe una combinación de clientes: algunos que escuchan a MRU, otros que no. Los clientes que ignoran la MRU se ejecutan en los problemas de PMTUD descritos en la sección Ajuste Automático de la MTU IP. Para estos clientes, puede emplear una solución alternativa diferente al desactivar de forma efectiva la PMTUD al borrar el bit DF en el paquete IP interno. Podrá hacer esto con la siguiente configuración:
interface virtual-template1 ip policy route-map clear-df ! route-map clear-df permit 10 match ip address 101 set ip df 0 ! access-list 101 permit tcp any any
El software Cisco IOS ofrece muchos modos de maximizar el rendimiento de la conmutación de L2TP. PMTUD es una solución ideal. Sin embargo, debido a problemas en Internet, no siempre es confiable. El software Cisco IOS proporciona algunos mecanismos alternativos para mantener alto el rendimiento de switching L2TP y maximizar la conectividad del usuario.