Doymer Consultores

  • Increase font size
  • Default font size
  • Decrease font size
Inicio Blog Varios PPPoE en ADSL con servicios propios
09
Junio
2010

PPPoE en ADSL con servicios propios

Imprimir PDF

Muchas de las conexiones actuales de ADSL que ofrecen los operadores hoy día están basadas en protocolo PPPoE. Cuando usamos la línea exclusivamente para acceder a contenidos externos de internet el cómo está configurada la conexión no es algo que nos importe. Es responsabilidad del proveedor del servicio que es el que tiene que garantizarnos el funcionamiento del conjunto.

Pero cuando además de para navegar por la red usamos nuestra línea ADSL para acceder a servicios que están detrás de ésta la cosa cambia. Es en este instante cuando todos los detalles que anteriormente podíamos ignorar cobran su importancia y tenemos que ser conscientes de ello.

Va siendo cada vez más habitual que pequeñas empresas y empresarios autónomos contraten un circuito ADSL –cuya fiabilidad y ancho de banda son mayores cada día a la par que el precio se mantiene o cae haciéndolos una elección muy competitiva frente al habitual enlace 'profesional'– que no sólo utilizan para acceder a los recursos disponibles en la red sino detrás del cual se sitúan determinados servidores, como pueden ser el servidor DNS del dominio o dominios de la empresa, el servidor de correo que atiende los buzones de la empresa, un servidor FTP para distribuir los documentos generados a sus clientes, etc. Y, aunque estos casos podríamos decir que son los más 'profesionales', hay otros que, aún entrando en el ámbito aficionado, también se comportan a nivel funcional como los servidores anteriormente indicados. Así los programas de descarga como Emule requieren ser considerados como 'servidores' –y tratados como tales– si queremos descargas directas a alta velocidad. También podemos considerar dentro de este grupo a los programas de juegos en línea y un largo etcétera que requerirán de nuestros conocimientos sobre la configuración del sistema si queremos que funcionen de manera óptima.

Uno de los principales síntomas de que algo no está bien ajustado es cuando empezamos a tener problemas raros al acceder a los servicios que están situados detrás de nuestra línea. El servicio parece funcionar, es decir, la conexión se establece y se empiezan a transferir datos, pero la comunicación va muy lenta y/o se detiene temporalmente y, a veces, se cuelga. El ping tradicional funciona correctamente. Los correos pequeños bajan sin problemas pero los grandes tardan una eternidad si es que terminan bajando. Es entonces cuando los detalles de nuestra instalación interesan y uno de estos detalles es si el circuito que nos han asignado es de tipo PPPoE.

Toda comunicación entre dos equipos se realiza fragmentando la información a intercambiar en paquetes de datos. Es como si al mantener una conversación con otra persona, en lugar de soltar de seguido la frase que queremos comunicar, la dividiésemos en grupos de palabras. Así intercambiamos nuestras frases diciendo, por ejemplo, sólo 3 palabras cada vez teniendo nuestro interlocutor que construir la frase completa a base de unir en su memoria esos grupos de palabras. Esto se hace así para garantizar que el mensaje llega correctamente y que no 'largamos' todo un discurso que nadie entiende porque se han perdido algunas partes del mismo por culpa del ruido ambiental.

Cuando se establece una comunicación entre un PC y un servidor web, por ejemplo, ambos equipos negocian el tamaño máximo de los paquetes de datos que van a intercambiar (el llamado MSS o tamaño máximo de segmento) que depende, entre otros factores, del tipo de conexión física que utilizan. Y aquí nos encontramos con el primer elemento determinante: la conexión física habitual de los equipos es de tipo Ethernet por lo que el tamaño máximo de paquete que puede transferirse por la línea (llamado MTU o unidad de transferencia máxima) es de 1500 bytes (en realidad son 1518 bytes menos 18 que el sistema necesita para control de la comunicación). Decimos entonces que la conexión Ethernet tiene una MTU de 1500 bytes.

En nuestro caso, cuando nos conectamos a un servidor web establecemos una sesión de tipo TCP (es decir, el protocolo usado es TCP) y, como ya dijimos, ambos equipos deciden el tamaño máximo de segmento que van a usar. TCP requiere 40 bytes extra para operar por lo que el MSS queda reducido a 1460 bytes (1500 - 40 = 1460).  A nivel general la MTU puede ser considerada como el tamaño máximo de los datos que el HARDWARE puede transferir (recordemos, 1500 para Ethernet), mientras que el MSS es la cantidad máxima de datos que la APLICACION (o la sesión si preferimos) puede transferir. Vemos que el MSS debe ser menor que la MTU o no podrá ser transmitido por el medio. Como se pretende optimizar las comunicaciones siempre se busca el valor máximo y ese es el valor que se selecciona. La MSS se calcula, exclusivamente, a partir del menor valor de MTU disponible en cada uno de los extremos de la conexión (si uno tiene una MTU de sólo 1000 bytes por cualquier razón ese será el valor de partida usado para calcular el MSS). Pero nuestro equipo tiene una MTU de 1500 y el servidor, que también está conectado a Ethernet tiene otra MTU de 1500 por lo que, independientemente de lo que exista entre ambos, se selecciona una MTU de 1500 bytes para la conexión y se deriva MSS de 1460 bytes para la sesión.

Y aquí viene el problema. La conexión de medios diferentes hace que la MTU –y por tanto el MSS admisible– varíe conforme el paquete de datos va pasando por diferentes circuitos en su tránsito entre el PC y el servidor remoto. Si algún circuito tiene un  MTU que hace que nuestro MSS lo supere el paquete no puede transferirse por ese circuito sin realizar alguna acción correctora. Toda instalación de ADSL incluye un router que está conectado a la línea ADSL (un medio diferente) y que negocia la conexión usando PPPoE. Sin embargo el protocolo PPPoE requiere 8 bytes adicionales para funcionar por lo que la MTU del enlace cae a 1492 bytes (1500 - 8) y la MSS de la sesión a 1452. Si nuestra MSS es de 1460 (y por tanto nuestro paquete es de ese tamaño también) eso significa que va a ser descartado y no va a llegar a su destino. El router que descarta el paquete envía de vuelta un mensaje informando de tal acción usando el protocolo ICMP para que el equipo que ha enviado los datos lo sepa y reduzca el tamaño de la MSS de la sesión.

Así que, ¿Cual es el problema? Pues que, por cuestiones de dejadez, seguridad y otras, los dispositivos que tienen que transmitir esa información al servidor que envió los datos no lo hacen o no permiten el paso de estos paquetes informativos y de control a través suyo. Y entonces el servidor no se entera del problema, detecta que el paquete que acaba de enviar no ha llegado a su destino y vuelve a enviarlo. Pero con el mismo tamaño, por lo que se vuelve a descartar y así sucesivamente hasta que el sistema considera que se ha perdido la comunicación al no recibir confirmación de entrega de ninguno de los datos que envía y corta. ¡¡Finitto!!; se acabó. Vuelta a empezar y nosotros desde nuestro extremo vemos que algo va mal pero no sabemos el qué.

¿Qué podemos hacer en estos casos? La respuesta es evidente: Ajustar nuestra MTU para que la MSS calculada sea la mejor posible para las comunicaciones que tenemos.

Y, ¿Cuál es la MTU óptima para que la MSS calculada sea la mejor posible? Bueno pues esto depende. Depende de los servicios que vayamos a querer tener. Servicios especiales como redes privadas virtuales (VPN) bajo IPSec, túneles GRE y otros consumen bytes extra y sin embargo no los consideraremos aquí ya que suelen establecer la conexión con el propio router y, por tanto, no afectan a la sesión en sí. Pero si la VPN la establecemos contra el mismo servidor entonces tendrán que ser considerados.

Y cuál es el valor óptimo de la MTU. En principio podríamos considerar que 1500 (Ethernet) - 8 (Consumo PPPoE) = 1492 bytes sería lo ideal. Sin embargo este es uno de esos casos en los que la máxima que dicen que aplicamos los hombres de 'cuanto más mejor' no es lo más conveniente. Y es que tenemos que considerar cómo se transmiten nuestros datos por la línea. Detrás de la comunicación ADSL los datos van sobre conexiones ATM. Esto significa que se encapsulan en bloques (celdas) de 53 bytes en las cuales sólo 48 bytes son de datos siendo el resto direccionamiento y otros. Y eso es fijo. Las celdas son de 53 bytes enviemos 1 byte o mil millones de bytes. Todos se meten en celdas de 53 bytes, siempre.

Así que si usamos una MTU de 1492 bytes necesitaremos 1492 / 48 = 32 celdas para enviar nuestros datos (31 celdas llenas y nos sobrarán 4 bytes que irán en la celda 32 la cual se rellenará con 36 bytes nulos y 8 bytes adicionales de control para la reconstrucción de la secuencia o SAR). Es decir, estamos teniendo un desperdicio de (36 / 1492) * 100 = 2,4%.

Por el contrario, si reducimos la MTU en 12 bytes (los 4 sobrantes y los 8 del SAR) dejando una MTU de 1480 bytes) habremos conseguido un múltiplo exacto de la capacidad de la celda (48 bytes) optimizando, por tanto, el uso del canal de enlace. Ese 2,4% adicicional puede significar un incremento en el rendimiento de la comunicación de unos 245Kbps adicionales considerando 1Mbps como la velocidad de subida del circuito (1024 * 2,4 / 100). Es como llenar cubos de agua: cuanto más apuremos los cubos más agua seremos capaz de transportar. Hay que tener en cuenta que el número de celdas que el circuito puede transportar es fijo y está limitado por nuestro ancho de banda. Así, si nos aseguramos de llenar al máximo todas las celdas el resultado es que meteremos más bytes por la tubería que si dejamos los cubos finales a medio llenar. La eficiencia de la comunicación se incrementará.

 

Y ¿Donde hemos de aplicar este dato? Lo sensato sería realizarlo en el dispositivo que congrega todo el tráfico a enviar, es decir, en nuestro router. Sin embargo a veces esto no es posible por dos razones:

  1. El router no tiene capacidad para ajustar el MSS en sus interfaces
  2. El router no es capaz de fragmentar los paquetes recibidos.

Hay que tener en cuenta que si el router recibe paquetes con una MSS de 1460 bytes y tiene que enviarlos a un circuito con menor MSS va a tener que realizar una labor de fragmentación adicional para garantizar la entrega de los mismos. Algunos routers no tienen esa capacidad o no se configuran para ello para evitar sufrir ataques por fragmentación.

En estos casos el lugar donde debemos aplicar la MTU es el servidor o servidores que generan los datos. A lo largo de esta exposición hemos dicho que la MSS se calculaba a partir de los valores de la MTU de los equipos que intervienen en la comunicación seleccionando, como punto de partida, la menor de ambas. Así que si nuestro servidor tiene una MTU reducida la MMS calculada lo será en base a ese valor y garantizaremos la comunicación extremo a extremo. El lado oscuro de este sistema es que hemos de realizar esta labor en todos los servidores instalados que tengan que ser accedidos desde el circuito ADSL y además ese valor se va a aplicar también a las comunicaciones internas por lo que el rendimiento de la red local se va a ver levemente reducido.

Para más información se puede visitar http://www.cisco.com/en/US/tech/tk827/tk369/technologies_white_paper09186a00800d6979.shtml (en inglés).

Share
Última actualización el Martes 15 de Junio de 2010 20:08  

Escribir un comentario

El propietario de esta página no se hace responsable de las opiniones de sus lectores en los comentarios, así como puede o no estar de acuerdo con lo que en ellos se diga.

Usa el juego limpio en tus comentarios

Por favor, no realices comentarios ofensivos o insultantes. Tampoco generes comentarios con publicidad o Spam. No utilices los comentarios para 'enchufar' tu sitio. Los enlaces que pongas podrán ser eliminados. Pretendemos crear un espacio de comunicación entre el autor y los lectores.

Todos agradeceremos el correcto uso de la ortografía, pues no todos somos capaces de entender mensajes 'codificados' tipo SMS. Además te rogamos uses signos de puntuación, si puede ser, para mejorar la comprensión de tu mensaje.
No escribas sólo en mayúsculas ya que en Internet escribir con mayúsculas equivale a GRITAR y no por gritar se te va a hacer más caso sino, probablemente, al contrario.

Reserva de Edición

Nos reservamos el derecho de no incluir comentarios que sean ofensivos, desagradables, que ataquen a terceros (racistas, homófobos, etc) o que no tengan que ver con el sitio o con el tema de que se trata.
Los datos suministrados al emitir tu comentario son privados y de tu propiedad y no serán usados para ningúna acción comercial ni de otro tipo.


Código de seguridad
Refescar


Archivo

Powered by ArtTree