10 sept 2010

CCPN ROUTER 2: EIGRP - Balanceo de Carga EIGRP

EIGRP permite el balanceo de carga en enlaces con igual y diferente costo.
EIGRP automáticamente realiza balanceo de carga a enlaces de cargas iguales, para enlace de cargas desiguales se utiliza el comando variance [multiplicador]

Escenario de Pruebas
Nube conformada por dos Router los cuales se conectan por 3 enlaces 2 enlaces seriales de 1024Kbps y un enlace Ethernet a 768 Kbps.


Configuración de balanceo de carga en enlaces con igual costo EIGRP
Se configura los anchos de bandas enunciados con el comando Bandwidth. El proceso de EIGRP escoje la mejor ruta de acuerdo a la métrica, en nuestro caso los dos enlace Seriales  tienen la misma métrica [90/3139840]  debido a su común ( Delay, bandwidth).

Configuracion R1
Configuracion R2
interface Loopback10
 ip address 192.168.10.1 255.255.255.252
!
interface FastEthernet0/0
 bandwidth 768
 ip address 192.168.1.1 255.255.255.252
 speed auto
!
interface Serial0/0
 bandwidth 1024
 ip address 192.168.2.1 255.255.255.252
!
interface Serial0/1
 bandwidth 1024
 ip address 192.168.3.1 255.255.255.252
!
router eigrp 10
 network 192.168.1.0 0.0.0.3
 network 192.168.2.0 0.0.0.3
 network 192.168.3.0 0.0.0.3
 network 192.168.10.0 0.0.0.3
 auto-summary
!
interface Loopback20
 ip address 192.168.20.1 255.255.255.252
!
interface FastEthernet0/0
 bandwidth 768
 ip address 192.168.1.2 255.255.255.252
 speed auto
!
interface Serial0/0
 bandwidth 1024
 ip address 192.168.2.2 255.255.255.252
!
interface Serial0/1
 bandwidth 1024
 ip address 192.168.3.2 255.255.255.252
!
router eigrp 10
 network 192.168.1.0 0.0.0.3
 network 192.168.2.0 0.0.0.3
 network 192.168.3.0 0.0.0.3
 network 192.168.20.0 0.0.0.3
 auto-summary
!

Tabla de enrrutamiento.

Show ip router eigrp
     192.168.10.0/24 is variably subnetted, 2 subnets, 2 masks
D       192.168.10.0/24 is a summary, 00:55:38, Null0
D    192.168.20.0/24 [90/3139840] via 192.168.3.2, 00:55:38, Serial0/1
                     [90/3139840] via 192.168.2.2, 00:55:38, Serial0/0

     192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
D       192.168.1.0/24 is a summary, 00:55:41, Null0
     192.168.2.0/24 is variably subnetted, 2 subnets, 2 masks
D       192.168.2.0/24 is a summary, 00:55:38, Null0
     192.168.3.0/24 is variably subnetted, 2 subnets, 2 masks
D       192.168.3.0/24 is a summary, 00:55:38, Null0
R1#

Revisando la topologia podemos ver los diferentes enlaces.

show ip eigrp topology
IP-EIGRP Topology Table for AS(10)/ID(192.168.20.1)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
       r - reply Status, s - sia Status

P 192.168.10.0/24, 2 successors, FD is 3139840
        via 192.168.3.1 (3139840/128256), Serial0/1
        via 192.168.2.1 (3139840/128256), Serial0/0
        via 192.168.1.1 (3463680/128256), FastEthernet0/0
P 192.168.1.0/24, 1 successors, FD is 28160
        via Summary (5002496/0), Null0
P 192.168.1.0/30, 1 successors, FD is 5002496
        via Connected, FastEthernet0/0
P 192.168.2.0/24, 1 successors, FD is 2169856
        via Summary (3011840/0), Null0
P 192.168.2.0/30, 1 successors, FD is 3011840
        via Connected, Serial0/0
P 192.168.3.0/30, 1 successors, FD is 3011840
        via Connected, Serial0/1
P 192.168.3.0/24, 1 successors, FD is 2169856
        via Summary (3011840/0), Null0
P 192.168.20.0/24, 1 successors, FD is 128256
        via Summary (128256/0), Null0
P 192.168.20.0/30, 1 successors, FD is 128256
        via Connected, Loopback20


Podemos observar  que  se escoje el FS  en este caso 3 sucesores de acuerdo a la menor FD.

Configuración de balanceo de carga en enlaces con desigual costo EIGRP
EIGRP  permite balancear carga en enlaces de diferentes costo, esto es posible gracias al comando Variance [multiplicador]. La variance es un numero que multiplicado por el Costo menor iguala o supera al costo mayor del grupo de enlaces a balancear.

En este laboratorio tenemos dos enlaces de 1024kbps y un enlace de 512kbps.
router eigrp 10
variance 2


El comando traffic-share balanced  permite que el router balance equitativamente las cargas dependiendo del costo en EIGRP, permitiendo enviar mas paquetes por el enlace de menor costo.

router eigrp 10
variance 2
traffic-share balanced


CEF (Cisco Express Forwarding) en el Balanceo de Carga
Esta caracteristica de cisco permite un a conmutación avanzada y rápida en equipos L3. Trabaja con Network Based Application Recognition (NBAR), permitiendo definir el próximo sato (next-hop) del flujo  analizando solo el primer paquete IP.

CEF crea una nueva tabla de ruteo rapido FIB(Forwarding information base) que se utiliza para conmutar el flujo de datos luego de decidir por ruteo el próximo salto con el primer paquete.

Balanceo de Carga
Es la habilidad del router de enviar paquetes pro diferentes enlaces. el router puede escojer el enlace de salida dependiendo del destino o por paquete.

Balanceo de carga por destino: Cuando el router enviá paquetes a un mismo destino el router siempre por la misma interfaz de salida.
R2#sh ip cef 192.168.10.1
192.168.10.0/24, version 17, epoch 0, per-destination sharing
0 packets, 0 bytes
  via 192.168.3.1, Serial0/1, 0 dependencies
    traffic share 1
    next hop 192.168.3.1, Serial0/1
    valid adjacency
  via 192.168.2.1, Serial0/0, 0 dependencies
    traffic share 1
    next hop 192.168.2.1, Serial0/0
    valid adjacency
  0 packets, 0 bytes switched through the prefix
  tmstats: external 0 packets, 0 bytes
           internal 0 packets, 0 bytes
R2#


Balanceo de carga por paquete
:  El router decide con cada paquete por que interfaz salir. Alterna los enlaces de salida.
R1#sh ip cef 192.168.20.1
192.168.20.0/24, version 19, epoch 0, per-packet sharing
0 packets, 0 bytes
  via 192.168.3.2, Serial0/1, 0 dependencies
    traffic share 1, current path
    next hop 192.168.3.2, Serial0/1
    valid adjacency
  via 192.168.2.2, Serial0/0, 0 dependencies
    traffic share 1
    next hop 192.168.2.2, Serial0/0
    valid adjacency
  0 packets, 0 bytes switched through the prefix
  tmstats: external 0 packets, 0 bytes
           internal 0 packets, 0 bytes
R1#


Observamos el comportamiento de los paquetes en R2
R2#debug ip packet 10
R2(config)#ip cef
R2(config)#access-list 10 permit 192.168.20.0 0.0.0.255


desde R1 generamos un ping hacia 192.168.20.1

Balanceo de Carga/ R(config-if)
Cisco express forwarding
Fast switching
Por destino
per-destination
ip cef
ip load-sharing per-destination
no ip cef
ip router-cache
Por paquete
per-packet
ip cef
ip load-sharing per-packet 
no ip cef
no ip router-cache

Balance de Carga por Destino (per-destination)
R2#
*Mar  1 00:45:23.599: %SYS-5-CONFIG_I: Configured from console by console
*Mar  1 00:45:30.403: IP: tableid=0, s=192.168.10.1 (Serial0/0), d=192.168.20.1 (Loopback20), routed via RIB
*Mar  1 00:45:30.407: IP: s=192.168.10.1 (Serial0/0), d=192.168.20.1, len 100, rcvd 4
*Mar  1 00:45:30.439: IP: tableid=0, s=192.168.10.1 (Serial0/0), d=192.168.20.1 (Loopback20), routed via RIB
*Mar  1 00:45:30.443: IP: s=192.168.10.1 (Serial0/0), d=192.168.20.1, len 100, rcvd 4
*Mar  1 00:45:30.479: IP: tableid=0, s=192.168.10.1 (Serial0/0), d=192.168.20.1 (Loopback20), routed via RIB
*Mar  1 00:45:30.479: IP: s=192.168.10.1 (Serial0/0), d=192.168.20.1, len 100, rcvd 4
*Mar  1 00:45:30.483: IP: tableid=0, s=192.168.10.1 (Serial0/0), d=192.168.20.1 (Loopback20), routed via RIB
*Mar  1 00:45:30.487: IP: s=192.168.10.1 (Serial0/0), d=192.168.20.1, len 100, rcvd 4
*Mar  1 00:45:30.523: IP: tableid=0, s=192.168.10.1 (Serial0/0), d=192.168.20.1 (Loopback20), routed via RIB
*Mar  1 00:45:30.523: IP: s=192.168.10.1 (Serial0/0), d=192.168.20.1, len 100, rcvd 4
*Mar  1 00:45:30.559: IP: tableid=0, s=192.168.10.1 (Serial0/0), d=192.168.20.1 (Loopback20), routed via RIB
*Mar  1 00:45:30.563: IP: s=192.168.10.1 (Serial0/0), d=192.168.20.1, len 100, rcvd 4
*Mar  1 00:45:30.599: IP: tableid=0, s=192.168.10.1 (Serial0/0), d=192.168.20.1 (Loopback20), routed via RIB
*Mar  1 00:45:30.603: IP: s=192.168.10.1 (Serial0/0), d=192.168.20.1, len 100, rcvd 4
*Mar  1 00:45:30.643: IP: tableid=0, s=192.168.10.1 (Serial0/0), d=192.168.20.1 (Loopback20), routed via RIB

Balanceo de carga por Paquete (per-packet)
*Mar  1 00:51:17.139: IP: s=192.168.10.1 (Serial0/1), d=192.168.20.1, len 100, rcvd 4
*Mar  1 00:51:17.143: IP: tableid=0, s=192.168.10.1 (Serial0/0), d=192.168.20.1 (Loopback20), routed via RIB
*Mar  1 00:51:17.143: IP: s=192.168.10.1 (
Serial0/0), d=192.168.20.1, len 100, rcvd 4
*Mar  1 00:51:17.147: IP: tableid=0, s=192.168.10.1 (Serial0/1), d=192.168.20.1 (Loopback20), routed via RIB
*Mar  1 00:51:17.147: IP: s=192.168.10.1 (
Serial0/1), d=192.168.20.1, len 100, rcvd 4
*Mar  1 00:51:17.147: IP: tableid=0, s=192.168.10.1 (Serial0/0), d=192.168.20.1 (Loopback20), routed via RIB
*Mar  1 00:51:17.147: IP: s=192.168.10.1
(Serial0/0), d=192.168.20.1, len 100, rcvd 4
*Mar  1 00:51:17.151: IP: tableid=0, s=192.168.10.1 (Serial0/1), d=192.168.20.1 (Loopback20), routed via RIB
*Mar  1 00:51:17.155: IP: s=192.168.10.1 (
Serial0/1), d=192.168.20.1, len 100, rcvd 4
*Mar  1 00:51:17.187: IP: tableid=0, s=192.168.10.1 (Serial0/0), d=192.168.20.1 (Loopback20), routed via RIB
*Mar  1 00:51:17.191: IP: s=192.168.10.1 (
Serial0/0), d=192.168.20.1, len 100, rcvd 4
*Mar  1 00:51:17.191: IP: tableid=0, s=192.168.10.1 (Serial0/1), d=192.168.20.1 (Loopback20), routed via RIB
*Mar  1 00:51:17.195: IP: s=192.168.10.1 (
Serial0/1), d=192.168.20.1, len 100, rcvd 4
*Mar  1 00:51:17.199: IP: tableid=0, s=192.168.10.1 (Serial0/0), d=192.168.20.1 (Loopback20), routed via RIB
*Mar  1 00:51:17.199: IP: s=192.168.10.1 (
Serial0/0), d=192.168.20.1, len 100, rcvd 4
*Mar  1 00:51:17.203: IP: tableid=0, s=192.168.10.1 (Serial0/1), d=192.168.20.1 (Loopback20), routed via RIB
*Mar  1 00:51:17.203: IP: s=192.168.10.1 (
Serial0/1), d=192.168.20.1, len 100, rcvd 4
*Mar  1 00:51:17.203: IP: tableid=0, s=192.168.10.1 (Serial0/0), d=192.168.20.1 (Loopback20), routed via RIB
*Mar  1 00:51:17.207: IP: s=192.168.10.1 (
Serial0/0), d=192.168.20.1, len 100, rcvd 4
*Mar  1 00:51:17.239: IP: tableid=0, s=192.168.10.1 (Serial0/1), d=192.168.20.1 (Loopback20), routed via RIB
*Mar  1 00:51:17.239: IP: s=192.168.10.1 (
Serial0/1), d=192.168.20.1, len 100, rcvd 4



10 comentarios:

  1. para variar un muy buen articulo y muy bien explicado.
    Te tengo de los preferidos en mis RSS y ya he pasado la voz de este excelente blog, sigue asi amigo !!!
    Gracias por compartir tus conocimientos.

    ResponderBorrar
  2. amigo esta muy buena la explicación, pero tenia entendido que el balanceo de carga no existe, si no que el equilibrio de carga.

    Saludos, y gracias por compartir

    ResponderBorrar
  3. Hola Skydbg gracias por tu cometario.
    Bueno esto es cuestión de palabras.
    puedes configurar para que algún trafico utilice un enlace y otro trafico otro, eso podría definirse como equilibro de cargas de acuerdo a unas reglas.
    pero cuando se realice balanceo por paquete donde un enlace envía un Paquete por un enlace y luego aleatoriamente por el otro podríamos definirlo como un balanceo ya que ambos enlaces subirán de manera paralela el consumo de ambos estará balanceado, recordando que esta forma consume mas recurso y añade delay ya que para cada paquete el router toma la decisión por donde enviarlo como si fuese el primer paquete de todo el mensaje.

    Bueno lo importante es que sepamos que hace cada configuracion.
    saludos,

    ResponderBorrar
  4. Estimados una consulta, en principio soy nuevo en el tema de comunicacion sin embargo quiero consultar lo siguiente. Si se tienen dos proveedores de enlaces de datos un principal y otro de respaldo, ambos con el mismo ancho de banda, uno de ellos presenta la ruta mas corta y por ende EIGRP direccionara el la conexion por el mismo proveedor A, sin embargo se ha detectado inestabilidad con uno de los proveedores siendo el de la ruta mas corta, solo si se detecta caida total automaticamente se realiza el cambio de enlace pero si hay intermitencia no. Mi consulta es como podria definir como enlace primario el proveedor B no importando que sea la ruta mas corta. Cual seria el procedimiento de configuracion en el router. saludos y agradezco su apoyo

    ResponderBorrar
  5. Amigo, muy buen articulo y muy bien explicado, solo tengo una duda en el primer ejemplo de balanceo con igual costo, segun entiendo en tu ejemplo no estas balanceando ya que solo escoges la mejor ruta, para esto deberías de aplicar un comando tal como "maximun-patch (numero)" para que te balance entre varios caminos, en cualquier caso corrijeme si me he equivocado.

    saludos

    ResponderBorrar
    Respuestas
    1. Hola Don_Bur es tas en lo correcto se sa Maximum-patch para que balance, yo no lo use por que EIGRP el maximum-patch es 4 por defecto, lo puede configurar de 1( no balancea) a 16.

      Saludos.

      Borrar
  6. Me parece que quiso decir a un maximo de 6

    ResponderBorrar