Tienda Wifi

Tienda Wifi
CiudadWireless es la tienda Wifi recomendada por elhacker.NET

Buscador

Entradas Mensuales

Suscripción

¿Quieres recibir las últimas novedades del blog en tu correo?

¡Suscríbete al feed!

Foro de elhacker.net - Noticias

Etiquetas

elhacker.NET en Facebook

Entradas populares

PostHeaderIcon Unir conexiones ADSL-Wifi para sumar el ancho de banda




Introducción

Conceptos previos, conceptos erróneos y funcionamiento del protocolo de Internet

Cuando alguien entra a su casa , generalmente entra por la puerta , o si es medio paranoico, tal vez por la ventana. Pero nunca por las dos a la vez, ya que un cuerpo partido a la mitad no puede sobrevivir.




En el modelo TCP/IP pasa exactamente lo mismo. Un paquete sale (petición) y entra (respuesta) "obligadamente" siempre por la misma gateway y mismo DNS.

Si un paquete saliera por una puerta de enlace "1", deberia volver por la misma, porque sino se perdería. (time to live, traceo , etc)

Resumiendo, se puede sumar y aumentar la velocidad global de descargas, pero no la de un archivo en particular.

Teóricamente no es posible descargar 1 solo archivo con dos conexiones diferentes. La razón de esto, es que cuando uno empieza a descargar un archivo de un servidor, el servidor estable una espiece de "tunel" entre tu direccion IP y el para asi poder comunicarse. Dado que las dos conexiones de internet tienen diferentes direcciones IP, el servidor sólo establecera conexión con alguna de las dos. En teoría es posible hacerle creer al servidor que las dos conexiones estan bajo 1 sola IP, pero eso causaria un caos al tratar de recibir los paquetes de datos, porque no existe ningún protocolo que regule este tipo de transferencia de datos.

Pero si podemos hacer que este archivo se descargue por segmentos y posteariormente unimos los trozos, con lo que al final el resultado que obtendremos será la suma de ambas conexiones.

Por lo tanto no resulta tan sencillo "sumar" dos conexiones a internet, porque el protocolo tcp/ip tiene ciertas limitaciones. Pero si podremos hacerlo por hardware rápidamente tal y como veremos más adelante.

Lo que normalmente se hace es repartir (que no es lo mismo que sumar a la vez dos conexiones) 2+2 = 4, pero a veces es mejor que unos usen 2 y los otros 2 y no que todos usen 4 a la vez.

Podemos repartir el ancho de banda de varias maneras (QoS) (Calidad del servicio)

- Podemos usar una conexión para navegar y otra para bajar ficheros (por el tipo de tráfico, http, ftp, smtp, pop3, skype, youtube, escritorio remoto), por rangos de ip (por departamentos de trabajo, etc) que unas salga por una conexión y otras por otra)

- Podemos configurar cuánto saldrá por cada WAN y cuantó entrará (kbps) así si abres en tu PC youtube saldra por WAN1 y si entras a otras webs por WAN2, igual puedes deperminar dominios que salgan por determinada WAN

- Podemos distrubir las solicitudes procedentes de la LAN a través de una politica "round-robin" (por peso) a través de múltiples pasarelas de Internet. En otras palabras, si en un determinado momento sólo hay un usuario de internet haciendo sólo una conexión TCP (por ejemplo, se ejecuta sólo una descarga desde la web), su tráfico se derivará a traves de una única pasarela, por lo que no habría beneficio en el equilibrado de conexiones. En cambio, si la LAN está repleta de usuarios, cada uno ejecutando múltiples solicitudes al mismo tiempo, como un todo, sus conexiones tendrán acceso a un mayor ancho de banda, lo que equivale a la suma de los anchos de banda de acceso único.

IP Failover (fail over, a prueba de fallas)

Failover es cuando tenemos una o más conexiones y cuando falla una salimos automáticamente por la otra que si que funcione. También llamado conexión redundante. Si una de las líneas falla, el router continua automáticamente la conexión utilizando exclusivamente la segunda.



a) Balanceo de Carga (Load balancing)
¿Qué es?
Repartir ancho de banda

El balanceo no suma, reparte.


b) Sumar ancho de banda (Bonding)
Juntar conexiones, unir conexiones, sumar dos conexiones o más

Bonding: ip network multipathing con LINUX

¿Qué es el bonding? Es un driver que originalmente venía con los parches para clusters beowulf, desde hace un tiempo se puede implementar en un kernel 2.2X, 2.4X y 2.6x ¿Pero qué hace realmente?¿Para que sirve? Es la forma de tener dos tarjetas de red funcionando como una sola y aprovechando el ancho de banda de las dos a la vez En definitiva con bonding (ip network multipathing) tendríamos dos tarjetas de red físicas y por encima una virtual que suministra el servicio.

El bonding es una técnica que permite agregar varios interfaces de red físicos en uno único virtual. A cada interfaz físico se le denominará slave (esclavo). Con esto podemos realizar un balanceo de carga entre las dos interfaces y conseguir un ancho de banda final igual a la suma de los anchos de banda de cada slave.

Necesitamos al menos dos conexiones a internet para hacer bonding.

Tipos de Balanceos de Carga con bonding:

Round Robin balance-rr (modo 0)
Va repartiendo el tráfico (entrante) asignando de forma rotatoria cada conexión a una entrada WAN distinta, es decir, la primera a la WAN 01, la siguiente a la WAN 02, la tercera de nuevo a la WAN 01, ...

Se emplea un algoritmo round robin entre la cola virtual y las de los esclavos. Es algo así como: un paquetillo para un esclavo, otro para otro esclavo, un paquetillo para un esclavo, otro para el otro... etc. Es el algoritmo que se usa por defecto.

active-backup (modo 1):

Realmente no balancea la carga, usa sólo un esclavo y en caso de fallar, usa el siguiente disponible. Si falla el activo, pasa al slave (pasivo)

balance-xor (modo 2):

Para transmitir una trama lo hace basado en el siguiente calculo: (MAC de origen XOR MAC destino)%numero de interfaces slaves. De esta manera para cada MAC de destino se selecciona una interfaz en concreto. Este modo nos ofrece balanceo de carga y tolerancia a fallos.

broadcast (modo 3):

se transmite todo por todas las interfaces. Este método no balancea tampoco, pero provee tolerancia a fallos.

802.3ad (modo 4):

Se trata del estandard IEEE 802.3ad (Dynamic link aggregation) también llamado “port trunking“. Permite la definición de agregados ofreciendo alta disponibilidad

balance-tlb (modo 5):

balancea la carga de transmisión entre los esclavos dependiendo de la velocidad de estos y de la carga total. El tráfico es recibido por un esclavo, en caso de fallar otro esclavo toma su MAC y continúa recibiendo tráfico.

balance-alb (modo 6)

realiza el balanceo anterior además de un balanceo también en la recepción.


Otros tipos de balanceo de carga en aparatos de hardware:

Basado en sesiones
Cada conexión de salida se compone de varias conexiones TCP/IP, el router reparte las conexiones de cada sesión entre los dos puertos WAN. Un ejemplo, una página de Internet tiene una sesión TCP/IP por cada elemento de la misma, cuando un usuario se conecta a esa página Web a través del router XiNCOM, los elementos de la página se descargan paralelamente y a la vez utilizando las dos líneas WAN de forma simultanea, es decir, repartiendo los elementos entre las dos líneas de conexión.

Basado en paquetes
En lugar de repartir las conexiones TCP/IP de una sesión, el balanceo de carga basado en paquetes reparte los paquetes de cada conexión TCP/IP entre los dos puertos WAN.



Funcionamiento

¿Cómo lo hacemos?

- Mediante Software

En Windows con el programa WinGate, Double surfer, mobile net switch
virtualwifi, BVRP Connection Manager, MultiNetwork Manager, WiFi Hopper 1.2
Midpoint Internet LoadBalancer, etc

Con el comando "route" (modificando la tabla de rutas, la ruta de encaminamiento, cambiando la puerta de enlace (gateway))

En Linux con pfsense (una distrbución liviana basada en FreeBSD derivada de m0n0wall), Brazilfw, o Mikrotik

pfSense permite balanceo de carga (load balancing) con detección de fallo (fail-over)
con fail-over. Permite además añadir un Portal Cautivo o captivo (hotspot), OpenVPN, gestión del ancho de banda (limitar y repartir ancho de banda) (Traffic Shape), tráfico por prioridades, etc

Con los comandos iproute2

Ejemplos

________
+------------+ /
| | |
+-------------+ Provider 1 +-------
__ | | | /
___/ \_ +------+-------+ +------------+ |
_/ \__ | if1 | /
/ \ | | |
| Local network -----+ Linux router | | Internet
\_ __/ | | |
\__ __/ | if2 | \
\___/ +------+-------+ +------------+ |
| | | \
+-------------+ Provider 2 +-------
| | |
+------------+ \________

Datos previos

Si suponemos los siguientes datos:

Citar
eth0: Interfaz conectado a un ADSL
eth1: Interfaz conectado a otro ADSL
IP0: Dirección IP de la máquina en eth0
IP1: Dirección IP de la máquina en eth1
GW0: Dirección IP del gateway en el interfaz eth0
GW1: Dirección IP del gateway en el interfaz eth1
NET0: Subred de la salida ADSL 0
NET1: Subred de la salida ADSL 1

Definir tablas de rutas

Definir dos tablas de routing auxiliares en el
fichero /etc/iproute2/rt_tables, simplemente añade estas dos lí­neas:

Código:
2 T0
3 T1

Añadir rutas de encaminamiento

Añadir información a las dos tablas auxiliares con información de
routing de cada una de las dos salidas:

Código:
ip route add default via GW0 dev table T0
ip route add NET0 dev eth0 src IP0 table T0
ip route add default via GW1 dev table T1
ip route add NET1 dev eth1 src IP1 table T1

Añadir las reglas de encaminamiento

Añadir las reglas necesarias para utilizar cada una de las dos tablas
auxiliares:

Código:
ip rule add from IP0/32 table T0
ip rule add from IP1/32 table T1

Añadir la ruta por defecto

Añadir la ruta por defecto en la tabla principal, que se encarga de
repartir la carga. Puedes cambiar el peso de cada enlace después del
parámetro weight:

Código:
ip route add default scope global nexthop via GW0 dev eth0 weight 1
nexthop via GW1 dev eth1 weight 1

Ejemplo 2:

Cómo juntar dos ADSL

Nomenclatura:

Citar
eth0 -> primer interfaz conectado a la ADSL1
192.168.1.1 -> IP asociada a eth0
192.168.1.2 -> IP del router ADSL1
192.168.1.0/24 -> subred donde hay ADSL1

eth1 -> primer interfaz conectado a la ADSL2
192.168.2.1 -> IP asociada a eth1
192.168.2.2 -> IP del router ADSL2
192.168.2.0/24 -> subred donde hay ADSL2

Primero:
Crear dos tablas de rutas adicionales al fichero /etc/iproute2/rt_#tables/.
Es tan sencillo como abrir el fichero con un editor de texto y añadir las dos líneas siguientes:
200 ADSL1
201 ADSL2

Segundo:
Asignamos cada subred a la tabla e interfaz correspondiente.
Desde el prompt del sistema:
Código:
# ip route add 192.168.1.0/24 dev eth0 src 192.168.1.1 table ADSL1
# ip route add default via 192.168.1.2 table ADSL1
# ip route add 192.168.2.0/24 dev eth1 src 192.168.2.1 table ADSL2
# ip route add default via 192.168.2.2 table ADSL2

Tercero:
Ahora hace falta asegurar que el servidor contesta por la misma interfaz que se ha hecho la petición.
Código:
# ip route add 192.168.1.0/24 dev eth0 src 192.168.1.1
# ip route add 192.168.2.0/24 dev eth1 src 192.168.2.1

Quarto:
Sólo hace falta crear la ruta por defecto balanceada.
Código:
# ip route add default scope global netxhop via 192.168.1.2 dev eth0 weight 1 nexthop via 192.168.2.2 dev eth1 weight 1


- Mediante Hardware

Routers de doble Wan (Dual Wan) "Multihomed" o "Multiwan".

Balanceador de carga con el protocolo CARP (Common Address Redundancy Protocol), básicamente es proporciona redundancia. Es decir que si tu internet falla, el software lo detecta en decimas de segundo y te hace el switch hacia el enlace bueno, el usuario nunca se da cuenta cuando falla el servicio.

Muxing, multiplexar líneas ADSL.

Sólo es posible por hardware.


Limitar y Repartir ancho de banda

Palabras claves: Traffic Shapper o Traffic Shapping, QoS, fair queuing

QoS (Quality of Service o Calidad de Servicio) es un conjunto de protocolos y tecnologías que garantizan la entrega de datos a través de la red en un momento dado. Una de las principales metas de QoS es la priorización.

Por defecto, cuando enviamos información por una interfaz (tarjeta de red en este caso) las tramas de datos se encolan en una pila FIFO: la primera trama en entrar, es la primera en salir.

Configurar QoS (Quality of Service) en el router.

Los routers Zyxel llevan la opción "Media Bandwidth Management"
http://www.adslzone.net/tutorial-20.18.html

Los routers CT Comtrend para configurar el QoS debes ir a Advanced Setup => Quality of Service dentro de la configuración del router.

Con Mikrotik PCQ (Queues)

Con PfSense y su opción de Traffic Shape.

Con un router que acepte firmware dd-wrt

Programas para Windows como el NetPeeker que permite repartir el ancho de banda (tanto de subida como de bajada) para cada aplicación.

Más programas:

El NetLimiter o el DU Super Controler, o el WebScout, y el Bandwidth Speed Balancer, el Bandwidth Controller, WinTC, DU Meter, Net Peeker,

Para limitar el ancho de banda en Linu hace bastante tiempo que se puede usar:

- iproute2 (TC, traffic control)
- cbq.init

Y para controlar el ancho de banda no, pero para medirlo y controlar el ancho de banda de la red con mucha más información está el ntopng entre otros:


Con interfaz web:



Referencias, fuentes
http://www.zeroshell.net/eng/net-balancer-spanish/
http://multingles.net/docs/jmt/2isps.htm
http://crysol.org/es/node/811
http://www.openbsd.org/faq/pf/es/queueing.html
http://www.openbsd.org/faq/pf/index.html
http://bulma.net/body.phtml?nIdNoticia=1759
http://redesteleco.com/balanceo_de_carga
http://guifi.net/es/node/10643
http://gnulinuxtips.blogspot.com/2010/10/balanceo-de-carga-con-pfsense.html
http://doc.pfsense.org/index.php/MultiWanVersion1.2
http://www.openbsd.org/faq/pf/es/queueing.html
http://www.bellera.cat/josep/pfsense/cabal_cs.html



En el foro:

conectarse a varias Wifi a la vez
http://foro.elhacker.net/hacking_wireless/conectarse_a_varias_wifi_a_la_vez-t195713.0.html

Slurpr casero?
http://foro.elhacker.net/hacking_wireless/slurpr_casero-t171149.0.html

¿ PC con varias tarjetas pci Wireless ?
http://foro.elhacker.net/hacking_wireless/iquest_pc_con_varias_tarjetas_pci_wireless-t132517.0.html

Unir 2 adsl
http://foro.elhacker.net/redes/unir_2_adsl_balanceo_de_carga-t319418.0.html

Juntar 2 redes wifi con 2 tarjetas en un mismo ordenador
http://foro.elhacker.net/hacking_wireless/juntar_2_redes_wifi_con_2_tarjetas_en_un_mismo_ordenador-t318331.0.html

wireless router con WDS
http://foro.elhacker.net/redes/wireless_router_con_wds-t309788.0.html

2 o mas cabldemodems en un pc..!!! se pude....!!!
http://foro.elhacker.net/redes/2_o_mas_cabldemodems_en_un_pc_se_pude-t145261.0.html

Manual: balanceo carga PCC con FAILover
http://foro.elhacker.net/materiales_y_equipos/manual_balanceo_carga_pcc_con_failover-t322997.0.html

Balanceo de carga entre dos ISP con Ubuntu 10.04
http://foro.elhacker.net/redes/balanceo_de_carga_entre_dos_isp_con_ubuntu_1004-t311359.0.html

Temas viejos (2005-06-07)

Conectarse a dos redes inalámbricas a la vez
http://foro.elhacker.net/index.php/topic,145048.0.html

Ayuda limitación de ancho de banda
http://foro.elhacker.net/index.php/topic,122243.0.html

como sumar ancho de banda de una o mas redes distintas
http://foro.elhacker.net/index.php/topic,109496.0.html

Varias redes disponibles = varias conexiones distintas??
http://foro.elhacker.net/index.php/topic,68065.0.html

Conectar dos redes con dos tarjetas?
http://foro.elhacker.net/index.php/topic,98696.0.html

software para crear redes vecinales
http://foro.elhacker.net/index.php/topic,145512.0.html

6 comentarios:

erick dijo...

muy buen aporte aunque casi no entendí mucho por mi falta de informacion con respecto al tema pero me gustaría saber más de como hacer bonding, programas, configuracion etc.

Rogerth Mejias dijo...

Excelente aporte mil gracias por aclarar dudas al respecto

ismael dijo...

hola muy bien post trato entender algo pero es bastante complicado, solo una pregunta cual de los programas que mencionaste para unir redes mediante software en windows es el mejor o cual recomiendas?`

Espero tu respuesta...
que este bien.

JOHN dijo...

NO LEÍ UN CARAJO! ¡sabes mucho man! por eso lo guardo en favorito. porque de un dia pa otro no se puede hay que leerlo con calma.. si no se me sale to el cobre.

MiguelEduard0 dijo...

Buena info pero deberia estar mas orientada, o deberia haber una guia mas simple de como hacer esto en windows y siguiendo ciertos pasos de manera mecanica sin tener que enrrollarse en toda la teoria de los terminos, se que es pecar de flojo pero yo quiero tener 2 conexiones corriendo al mismo tiempo, no me interesa las distros de linux ni saber los comandos, en la parte donde dice que con windows se usa wingate etc es demasiado trivial porque configurar wingate es un coñazo y yo al menos no he encontrado nada de info sobre configurarlo para hacer funcionar dos conexiones a la vez, siento ser sincero pero la guia esta orientada a personas con un alto conocimiento en redes y que usan linux

Sandra Arias dijo...

Muy interesante y completo el artículo a pesar de que no comprendí muchas cosas, no obstante si logré captar algunas ideas principales sobre la uníón de conexiones wifi para poder sumar más ancho de banda. Mi pregunta es: ¿Es también posible sumar conexiones de fibra óptica como estas de adsl que explicas en el artículo? Tengo dos conexiones diferentes de fibra en casa y me vendría mucho mejor poderlas sumar, no se hasta que punto desde la óptica técnica sea esto posible? Gracias por cualquier información que me puedas brindar al respecto y felicitaciones por la excelente página!

Publicar un comentario en la entrada

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.