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

Cómo usar dos ISPs y sumar el ancho de banda en conexiones ADSL/DSL/Cable
Muchas veces nos habremos planteado lo siguiente:

1. Tengo dos conexiones ADSL o una ADSL y otra de cable. ¿como puedo sumar el ancho de banda y así aprovechar simultáneamente ambas?

2. Tengo dos conexiones ADSL y quiero usar una navegar y otra para mis programas para compartir datos con amigos para los cuales 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 solo para ello.

Bien, cada caso, aunque similares es totalmente diferente. Empecemos con una introducción al funcionamiento del TCP/IP.

INTRODUCCIÓN: Funcionamiento del TCP/IP

En una maquina, 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 donde y a quien enviar el paquete de datos. Si existe una ruta especifica, para una determinada dirección de red, o bien para un rango de direcciones, se enviará al ateway /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 solo 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 maquina (la persistencia solo es posible en sistemas NT, XP, W200x y no es posible en sistemas W9X / ME).

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 numero de ellos por que puerta de enlace enviar -mediante criterios mas o menos inteligentes-, simplemente cambiando la tabla de rutas ira 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 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 -solo 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), solo estaremos bajando a 1024 -y nos queda 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 diferente, y la tercera NIC a la red local.

Únicamente hay en la actualidad dos programas capaces de hacerlo:

Intergate
http://www.vicomsoft.com y surfdoubler de midpoint software http://www.midpoint.com. Esta ultima Web está cerrada en la actualidad -no se 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 solo 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 maquina virtual, a pesar de la infección, conseguí extraer los ejecutable 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, 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 mas simple: un router con dos entradas WAN y n salidas LAN. Cada router ADSL a una entrada WAN y el sistema hardware se encarga de balanceo en función de las peticiones de la LAN.

Los routers actuales 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 articulo, 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 a Balanceo de Carga, la 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 debe ser único por tanto, 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