sábado, 31 de octubre de 2009

Cómo usar dos ISPs y sumar el ancho de banda en conexiones ADSL/DSL/Cable

Algunas veces se han planteado las siguientes preguntas:

1) Tengo dos conexiones ADSL, o una ADSL y otra de cable. ¿Cómo puedo "sumar" el ancho de banda y así aprovechar simultáneamente ambas?

2) Tengo dos conexiones ADSL y quiero usar una para navegar y otra para compartir datos con amigos, para lo cual uso algún programa seguro P2P.

3) Tengo dos conexiones ADSL y quiero usar una para Internet y la otra para conectarme a mi empresa en teletrabajo y sólo para ello.

Bien, estos casos, aunque similares, son totalmente diferentes. Empecemos con una introducción al funcionamiento del TCP/IP.
INTRODUCCIÓN: Funcionamiento del TCP/IP

En una máquina, el TCP/IP tiene siempre el mismo comportamiento: en función de la tabla de rutas (visible mediante el comando 'route print'), la capa de red de TCP/IP selecciona por dónde y a quién enviar el paquete de datos. Si existe una ruta específica para una determinada dirección de red, o bien para un rango de direcciones, se enviará al gateway /puerta de enlace que está definida en la tabla de rutas. Si no, se enviará al gateway por defecto, el cual es aquel que en la tabla de rutas está definido como 0.0.0.0. Si existiesen varios con dirección 0.0.0.0 se seleccionará aquel que tenga menor "métrica", y a igualdad de métrica se seleccionará el primero de ellos (leyendo la tabla de rutas de abajo a arriba).

Las capas del TCP/IP ante una tabla estática, una vez que han decidido no cambian su decisión. Y puerta de salida (gateway) activa sólo puede haber una: cuando salimos de una casa lo hacemos por una puerta, no por dos a la vez.

Ante esto, podemos ver que los tres problemas planteados tienen "en principio" las siguientes respuestas:

1) No es posible, o un ISP o bien el otro.

2) No es posible ya que las IP de los destinatarios P2P pueden ser cualquiera. Es similar al caso 1

3) Es posible, siempre y cuando establezcamos la tabla de rutas correctamente, añadiendo una entrada a la dirección o direcciones de la empresa y apuntando al gateway que deseamos. Igualmente, para el resto de direcciones modificaremos si es necesario la tabla de rutas para que apunte al otro gateway. Esto es sencillo de realizar con el comando 'route add' y 'route delete' y con el parámetro 'persistent' si deseamos hacerlas persistentes y no tener que redefinirlas en cada reinicio de la máquina (la 'persistencia' sólo es posible en sistemas NT, XP, W200x y no es posible en sistemas W9X / ME). Pueden verse otros artículos míos de detalle sobre el funcionamiento del TCP/IP y cómo configurar en estos casos.

El punto 1) puede solucionarse mediante el mecanismo de balanceo de carga, el cual sigue cumpliendo la normativa RFC del TCP/IP y, básicamente, y aunque no es real el funcionamiento ya que se utilizan otros mecanismos, podríamos "intuir" que si tenemos un software que va contando los paquetes enviados y va decidiendo en función del número de ellos por qué puerta de enlace enviar -mediante criterios más o menos 'inteligentes'-, simplemente cambiando la tabla de rutas irá el sistema enviando a uno u otro. Aunque realmente se usan otros procedimientos, esta lógica 'intuitiva' puede servirnos.

Hay dos posibles soluciones para el Balanceo de Carga, una software (y me voy a ceñir únicamente a soluciones en el Sistema operativo XP) y otra hardware.

Realmente la descomposición completa, para abordar toda la casuística, sería:

* Balanceo de carga (Load Balancing) por software.
* Balanceo de carga por hardware.
* 'Circuit Bonding' -es solo solución hardware-.

La diferencia entre balanceo de carga y 'circuit bonding' es que, en la primera, si tenemos dos líneas ADSL de 1024 Mbps cada usuario o cada conexión tendrá un máximo de 1024, lo que sucede es que lanzando las dos conexiones a la vez, tendremos un ancho de banda total de 2048, pero por cada conexión, limitado a 1024. En cambio en 'circuit bonding' -sólo hardware y que veremos al final- es una suma real y cada conexión puede alcanzar los 2048.

El ejemplo clásico es si nos estamos bajando un archivo grande, un ISO por ejemplo, en Load Balancing, (sin usar gestores de descargas que realizan conexiones múltiples), sólo estaremos bajando a 1024 -y nos quedan los otros 1024 libres para cualquier otra cosa. En cambio en 'circuit bonding' tendremos realmente los 2048 de bajada disponibles para dicha conexión.
BALANCEO DE CARGA POR SOFTWARE (XP)

Necesitaremos al menos dos NIC's (tarjetas de red) si tenemos un PC únicamente, o bien 3 NIC's si tenemos una red: dos de las NIC's una a cada router ADSL, y la tercera NIC a la red local.

Únicamente hay en la actualidad dos programas capaces de hacerlo: Intergate www.vicomsoft.com y surfdoubler de midpoint software www.midpoint.com. Esta última Web está cerrada en la actualidad -no sé si transitoriamente-, pero su software, al menos de demo, puede todavía encontrarse en muchos sitios de Internet.

La solución de midpoint, aunque es un software un poco antiguo y para W95 / NT con una interface un poco 'cutre', es una solución sencilla de configurar, rápida de instalar, estable y de un funcionamiento correcto. Sus mecanismos de balanceo y toma de decisión de la interface es correcta y rapidísima. En este sentido me parece mejor que la solución de Intergate.

En Intergate, existe actualmente la versión 9.02 en su Web, la cual puede bajarse para probarla. Esta versión, he sido incapaz de que funcionase, ni en XP-SP2 ni en W2000, ni en W2003. Entiendo que sólo es problema de la versión demo y no de la definitiva. El problema es que elimina el TCP/IP de Microsoft en las interfaces a Internet y lo sustituye por un servicio suyo que da la salida IP. Este servicio no arranca en ningún caso en sistemas limpios y recién instalados.

Leyendo documentación en Google, encontré buenas criticas de la versión anterior (8.60) y, ante la imposibilidad de obtenerla de Intergate, decidí bajarla de la red con el consiguiente peligro que esto conlleva (25 spyware y 7 virus). Aislada en una máquina virtual, a pesar de la infección, conseguí extraer los ejecutables reales limpios para prueba en otra instalación. Una vez instalado, -los manuales de la 9.02 sirven perfectamente para la versión anterior 8.60- su funcionamiento es totalmente correcto. Únicamente la matización, a nivel particular, de que no me gusta la desactivación del TCP de Microsoft y el uso de su stack IP independiente para este caso.

En las medidas realizadas, parece mas "ágil" la solución de Midpoint que por desgracia ya está sin soporte.
BALANCEO DE CARGA POR HARDWARE

El tema es más simple: un router con dos entradas WAN y 'n' salidas LAN. Cada router ADSL a una entrada WAN y el sistema hardware se encarga del balanceo en función de las peticiones de la LAN.

Los routers que he localizado en la actualidad y que cumplen estas características son:

Netgear FVS124G
Xincom XC-DPG402
Xincom XC-DPG502
Xincom XC-DPG602
OvisLink MN200
HotBrick Firewall VPN 600/2
HotBrick Firewall VPN 1200/2
ZyXEL ZyWALL 35
ZyXEL ZyWALL 70
Linksys RV082
Linksys RV016
Linksys RV042
Edimax BR-6104K
Xterasys XR-4106
Pheenet BIG-02/4
Symantec VPN 200
Nexland Pro800
BroDigit NFR3024
Hawking FR24

Esta lista no es exhaustiva y, aunque está actualizada en el momento de escribir este artículo, no estará de más una búsqueda en Internet de este tipo de routers si nos decantamos por una solución hardware.
CIRCUIT BONDIGN

Es una solución únicamente hardware (llamada también Bonding/muxing), en la cual los clientes tienen realmente la capacidad total, suma de ambas. Al contrario del Balanceo de Carga, en el cual dos líneas de 1024 equivalen a 2 x 1024 y limitada cada conexión a un máximo de 1024, esta solución da realmente los 2048 -suma de ambos- en este ejemplo.

Se necesitan varias condiciones en este caso:

1) Se requieren dos routers y otros dos dispositivos llamados MUXS.
2) Un router y un mux deben estar colocados en el ISP, y el otro router y mux en nuestro punto final de conexión.
3) El ISP, por tanto,debe ser único y no dos ISPs diferentes.
4) El ISP debe soportar, por supuesto, esta configuración. En la actualidad solo está soportado en líneas T1.

No hay comentarios:

Publicar un comentario