Alta disponibilidad en Capa 3 - HSRP, VRRP y GLBP

HSRP es un protocolo propietario de Cisco para permitir que varios routers o switches multicapa aparezcan como una única puerta de salida (gateway). RFC 2281 para información detallada del mismo.

Cada router que ofrece redundancia para una dirección de gateway se asigna a un grupo HSRP común, de los cuales un router se elige como primario o activo (active), otro como pasivo o secundario (standby) y el resto permanecen en el estado de escucha (listen). Entre los routers se intercambian mensajes hello a intervalos regulares (por defecto cada 3 segundos), a la dirección multicast 224.0.0.2 usando el puerto 1985 UDP, para comprobar la existencia de los otros routers y sobre todo del router activo.

Un grupo HSRP puede asignarse un número de grupo arbitrario de 0 a 255. Si se configuran grupos de HSRP en diferentes interfaces VLAN, suele ser útil hacer coincidir el número de grupo con el de VLAN. Sin embargo la mayoría de switches Catalyst solo soportan hasta 16 únicos grupos HSRP. Por lo que si se tienen más de 16 VLANs no se tendrán suficientes números de grupo. Una alternativa es configurar el mismo número de grupo en cada interface VLAN. Esto es perfectamente posible ya que los grupos HSRP son localmente significativos en una interface, es decir, que el grupo HSRP 1 en la interface VLAN 10 es único e independiente del grupo HSRP 1 en la interface vlan 11.

HSRP solo puede configurarse en interfaces de capa 3 como pueden ser Interface VLAN (SVI), interfaces de routing y etherchannels de capa 3.

Cuando se configuran HSRP y STP es aconsejable configurar ambos en el dispositivo.

Por defecto, el filtrado HSRP de Internet Control Message Protocol (ICMP) redirect messages está habilitado en los dispositivos que ejecutan HSRP.

La elección del router activo HSRP está basado en la prioridad asignada que puede ir de 0 a 255 (siendo 255 la máxima prioridad) que por defecto está en 100. Si todos los routers tienen la misma prioridad entonces se usa el router con la dirección IP más alta. El grupo HSRP puede asignarse con un número que va desde 0 a 255, si no se indica por defecto el grupo es 0.

Para configurar la prioridad usamos el comando:

Switch(config-if)# standby group priority priority

Cuando se configura el HSRP el router pasa por ciertos estados hasta que se vuelve activo, lo que permite al router escuchar a los otros routers del mismo grupo. Los estados por los que debe pasar son:

  1. Disabled
  2. (0) Init
    El router empieza el proceso e indica que HSRP No está corriendo. Se cambia a este estado cambiando la configuración o una interface se levanta.
  3. (1) Learn
    No se ha determinado la dirección IP Virtual y no ha visto aún un mensaje de autenticación hello del router activo. En este estado se está aún esperando oír algo del router activo.
  4. (2) Listen
    El router conoce la dirección IP Virtual pero ni es es router activo ni standby. Escucha mensajes hello de otros routers. Routers que no sean activo o standby están en estado Listen.
  5. (4) Speak
    El router envía mensajes hello periódicos y participa activamente en la elección de un router activo o standby. Cuando un router en standby se convierte en activo (preempted) el que estaba activo pasa a estado Speak. Un router no puede estar en modo Speak a menos que tenga la dirección IP Virtual.
  6. (8) Standby
    El router es candidato a convertirse en el siguiente router activo y envía mensajes hello periodicamente. Por lo general debería haber al menos un router en el grupo en estado Standby.
  7. (16) Active
    El router está actualmente enviando paquetes que son enviados a la dirección MAC Virtual del grupo. Envía mensajes hello periódicos. Por lo general debería haber al menos un router del grupo en estado Activo.

Por defecto los mensajes hello se envían cada 3 segundos, si no se reciben mensajes hello durante el periodo de tiempo indicado por holdtime (por defecto 10 segundos o 3 veces el tiempo de envío de los mensajes hello), se asume que el router activo está caído por lo que el router en standby toma el papel de activo.

Para cambiar los intervalos tanto de los mensajes hello como del holdtime (por defecto en segundos o milisegundos si indicamos msec) podemos usar el comando:

Switch(config-if)# standby group timers [msec] hello [msec] holdtime

El tiempo de hello puede oscilar entre 1 y 254 segundos o entre 15 y 999 milisegundos. holdtime siempre debe ser al menos tres veces el valor de hello y puede oscilar entre 1 y 255 segundos o entre 50 y 3000 milisegundos.

Normalmente cuando el router activo falla y el router standby se convierte en activo, cuando se recupera el router que era activo no puede volver a ser el router activo inmediatamente. Dicho de otra manera, si un router no es activo, no puede ser activo hasta que el actual router activo falla aunque éste (el que no es activo) tenga mayor prioridad que el router activo actual. Como caso curioso cuando los routers se encienden o se añaden a la red, el primero router que levanta su interface se convierte en el router activo HSRP incluso aunque su prioridad sea la más baja de todos los routers del grupo HSRP.

Podemos cambiar esta situación y que un router asuma el estado de activo (siempre que su prioridad sea la más alta) cuando se recupera o reinicia utilizando el parámetro preempt con este comando:

Switch(config-if)# standby group preempt [delay [minimum seconds] [reload seconds]]

delay: espera X segundos antes de tomar el control. Evita que las interfaces up/down sean miembros de Active HSRP.

reload: espera X segundos después de reiniciar el dispositivo. Da tiempo para que los protocolos de enrutamiento llenen la tabla de enrutamiento.

Los mensajes HSRP son enviados usando una clave en texto plano (que puede ser interceptada fácilmente) de hasta 8 caracteres. Para configurar esta clave usamos el comando:

Switch(config-if)# standby group authentication string

Para reforzar la seguridad podemos usar claves en MD5 que son suficientemente fuertes y configuramos con el comando usando una cadena de hasta 64 caracteres:

Switch(config-if)# standby group authentication md5 key-sting [0 | 7] string

Otro método más flexible es crear una clave en un repositorio de claves y asignando el nombre del repositorio al grupo HSRP, de la siguiente forma:

Switch(config)# key chain chain-name
Switch(config-keychain)# key key-number
Switch(config-keychain-key)# key-string [ 0 | 7 ] string

Switch(config-if)# standby group authentication md5 key-chain chain-name

HSRP tiene un mecanismo para detectar fallos de enlaces que permite cambiar la prioridad del router haciendo de este modo que pueda (o no) cambiar el estado, para ello podemos usar el comando:

Switch(config-if)# standby group track type mod/num [decrementvalue]

El valor por defecto de decrementvalue es de 10. Hay que tener en cuenta que este comando NO hace que cambie el estado del router solo decrementa la prioridad cuando un enlace falla y recupera el valor cuando el enlace vuelve a estar disponible.

NOTA: es importante tener preempt activado para poder reduperar el role de activo

Cada router del grupo HSRP tiene su propia y única dirección IP asignada al interface y además tienen una dirección IP común que es la puerta de salida (gateway) también llamada "dirección virtual del router (virtual router address)". Para asignar esta IP virtual usamos el comando:

Switch(config-if)# standby group ip ip-address [secondary]

Podemos añadir el parámetro "secondary" para agregar una segunda IP y así tener una puerta de salida (gateway) redundado.

Para usar HSRP con IPv6, primero tenemos que habilitar HSRP Versión 2 y luego configurar la dirección IPv6 de HSRP:

Switch(config-if)# standby version 2
Switch(config-if)# standby ipv6 autoconfig

Cada router tiene una única dirección MAC para su interface que es asociada a una dirección IP única. Para la dirección virtual HSRP define una dirección MAC especial con el formato 0000.0c07.acXX, donde XX es el número de grupo HSRP en hexadecimal.

HSRP no soporta balanceo de carga pero se puede usar un truco que es dividir los servidores en 2 grupos y que cada grupo tenga una puerta de salida que ambas se configuran en los dos router pero con prioridad contraria para que así un grupo de servidores sale por un router y el otro por el otro router, si alguno de los dos routers falla el otro router asume ambos grupos que salen por el mismo y único router (al estar el otro caído).

Un ejemplo sería:

SwitchA(config)# interface vlan 69
SwitchA(config-if)# ip address 192.168.69.3 255.255.255.0
SwitchA(config-if)# standby 1 priority 200
SwitchA(config-if)# standby 1 preempt
SwitchA(config-if)# standby 1 ip 192.168.69.1
SwitchA(config-if)# standby 2 priority 100
SwitchA(config-if)# standby 2 ip 192.168.69.2

SwitchB(config)# interface vlan 69
SwitchB(config-if)# ip address 192.168.69.4 255.255.255.0
SwitchB(config-if)# standby 1 priority 100
SwitchB(config-if)# standby 1 ip 192.168.69.1
SwitchB(config-if)# standby 2 priority 200
SwitchB(config-if)# standby 2 preempt
SwitchB(config-if)# standby 2 ip 192.168.69.2

VRRP (Virtual Router Redundancy Protocol) es un estándar que surge como alternativa a HSRP que está definido por IETF en el RFC 2338. Ambos protocolos son similares, aunque una diferencia es que VRRP puede ofrecer como IP virtual una virtual (al igual que HSRP) o la dirección IP del router activo.

VRRP ofrece dirección de la puerta de salida (gateway) redundante para un grupo de routers. El router activo se llama router maestro (master router) y es el que tiene mayor prioridad, mientras que los otros están en estado de backup (backup state). El número de grupo va de 0 a 255, la prioridad va de 1 a 254 (siendo 254 la más alta) y por defecto es de 100. Si el router "master" falla, anuncia una prioridad de 0 forzando la elección de un nuevo "master" entre los "backups" sin tener que esperar a que el "hold down timer" expire.

La dirección virtual MAC es de la forma 0000.5e00.01XX, donde XX es el número de grupo VRRP en hexadecimal. Los mensajes (hellos) son enviados cada 1 segundo.

Por defecto todos los routers VRRP están configurados para asumir el papel de master (siempre que tenga la mayor prioridad) lo que se llama preempt.

Los anuncios (advertisements = hello) los envía el master (cada segundo por defecto) comunicando la prioridad y el estado del maestro.

Para configurar VRRP usamos el comando:

Switch(config-if)# vrrp group ip virtual-ip [secondary]

Para cambiar la prioridad:

Switch(config-if)# vrrp group priority priority

Los VRRP timers son anuncios o hellos cada segundo (por defecto), el intervalo "master down" es 3 veces el tiempo de los anuncios + el skew (básicamente lo mismo que el hold down timer del HSRP). El tiempo de "skew" es (256-prioridad)/256, se usa para asegurarse que la máxima prioridad del backup se convierte en master. Para configurar los anuncios usamos el comando:

Switch(config-if)# vrrp group timers advertise [msec] interval

Para aprender el intervalo de anuncio del router maestro:

Switch(config-if)# vrrp group timers learn

Para desactivar el preempt:

Switch(config-if)# no vrrp group preempt

Para cambiar el tiempo de espera de preempt:

Switch(config-if)# vrrp group preempt [delay segundos]

Para autenticar anuncios:

Switch(config-if)# vrrp group authentication string

Para monitorizar:

Switch(config-if)# vrrp group track object-number [decrement priority]

Para verificar y mostrar como está VRRP:

Switch# show vrrp

Gateway Load Balancing Protocol (GLBP) es un protocolo propietario de Cisco diseñado para ofrecer balanceo de carga sin la limitaciones de HSRP (o VRRP). Al contrario que HSRP todos los routers están activos con lo cual el balanceo de carga se cumple entre todos los routers del grupo. NOTA: este protocolo no está soportado en los 4500, 6500 o Nexus.

Uno de los routers del grupo GLBP, el que tenga mayor prioridad o en su defecto la IP más alta, es elegido como puerta de salida virtual activa (Active Virtual Gateway - AVG). El cometido del AVG es responder a todas las peticiones ARP de los servidores que llegan a la dirección del router virtual, luego dependiendo del algoritmo que se use, este router AVG responderá con la MAC del router que corresponda al cual se enviarán los paquetes.

El router AVG asigna las direcciones MAC virtuales de cada router que participe en el grupo GLBP hasta un máximo de 4 direcciones MAC. Cada uno de estos 4 routers se llaman Active Virtual Forwarder (AVF). En caso de que haya más routers en el grupo GLBP se mantienen en backup o secundarios por si algún AVF falla y tenga que sustituirlo.

Para asignar la prioridad a un router en un grupo GLBP:

Switch(config-if)# glbp group priority level

El número de grupo GLBP va de 0 a 1023 y la prioridad de 1 a 255 (siendo 255 la máxima prioridad) que por defecto es de 100.

Al igual que el HSRP es necesario configurar el preempt para que un ruoter con mayor prioridad asuma su papel (en este caso de AVG), para ello usamos el comando:

Switch(config-if)# glbp group preempt [delay minimum seconds]

Los mensajes hello se envían cada 3 segundos a la dirección multicast 224.0.0.102 y en caso de que no se reciban durante un periodo de tiempo indicado por holdtime (que por defecto son 10 segundos) se considera que el router está caído. Para ajustar estos valores:

Switch(config-if)# glbp group timers [msec] hellotime [msec] holdtime

Los valores se asignan en segundos a menos que se especifique el parámetro msec entonces se indican en mili segundos. hellotime va de 1 a 60 segundos o de 50 a 60.000 mili segundos. holdtime debe ser mayor que hellotime y puede ir hasta 180 segundos o 180.000 mili segundos. Al igual que HSRP holdtime debe ser al menos tres veces mayor que hellotime.

Cada router que participa en el grupo GLBP puede ser un AVF que tendrá una MAC virtual con formato 0007.b4xx.xxyy, donde xx.xx representan 6 bits con ceros seguidos por 10 bits con el número de grupo del GLBP, yy representan 8 bits con el número de forwarder virtual (AVF).

Ajustar los temporizadores:

Switch(config-if)# glbp group timers redirect redirect timeout

Para definir la interface a comprobar:

Switch(config)# track object-number interface type mod/num {line-protocol | ip routing}

Para ajustar los pesos:

Switch(config-if)# glbp group weighting maximum [lower lower] [upper upper]

Indicar el objeto para que se ajuste los pesos:

Switch(config-if)# glbp group weighting track object-number [decrement value]

Cuando el objeto comprobado falla se decrementa la cantidad indicado por value (que va de 1 a 254 y por defecto es 10).

Se pueden configurar uno de estos métodos de balanceo de carga:

  • Round robin: cada nueva petición ARP se asigna la siguiente dirección de MAC disponible a modo circular, con esto se consigue distribuir la carga de igual forma a cada AVF asumiendo que los clientes envían y reciben la misma cantidad de tráfico. Este método es usado por defecto.
  • Weighted: el peso asignado a la interface del grupo GLBP determina la proporción de tráfico que se envía a cada AVF, cuanto mayor sea el peso más tráfico se envía a ese router. Si la comprobación de interface no se ha configurado, el valor máximo de peso se utiliza para establecer las proporciones relativas entre los AVFs.
  • Host dependent: cada petición ARP de los clientes se le asigna la misma dirección MAC con lo que cada cliente siempre tiene la misma dirección MAC de salida (la del AVF asignado). Se usa para servicios o servidores que deben mantener la misma salida..

Para configurar el método de balanceo:

Switch(config-if)# glbp group load-balancing [round-robin | weighted | host-dependent]

Para activar GLBP se debe asignar una dirección IP virtual al grupo con el comando:

Switch(config-if)# glbp group ip [ip-address [secondary]]

Si no se indica la dirección IP se aprende de otro router del grupo. Si por el contrario este router va a ser el AVG se debe configurar la IP explícitamente.

  • HSRP:
    • Propietario de Cisco
    • multicast 224.0.0.2 puerto 1985 UDP
    • MAC virtual: 0000.0c07.acXX, donde XX es el número de grupo HSRP (en hexadecimal)
    • grupo HSRP de 0 a 255, máximo 16 grupos
    • prioridad entre 0 y 255
      por defecto 100
    • hello entre 1 y 254 segundos o entre 15 y 999 milisegundos
      por defecto 3 segundos
      solo los HSRP standby escuchan hellos
    • holdtime entre 1 y 255 segundos o entre 50 y 3000 milisegundos (al menos tres veces el valor de hello)
      por defecto 10 segundos
    • estados: Disabled - Init -> Listen -> Speak -> Standby -> Active
    • preempt por defecto esta DESACTIVADO
    • autenticación: texto plano y MD5
    • HSRP solo puede configurarse en interfaces de capa 3 como pueden ser SVIs, interfaces de routing y etherchannels de capa 3.
    • primario = active, secundario = standby y resto estado = listen
  • VRRP:
    • estándar alternativo a HSRP
    • activo = master, pasivo = Backup
    • MAC virtual: 0000.5e00.01XX, donde XX son los 3 dígitos en hexadecimal del número de grupo VRRP.
    • grupo entre 0 a 255
    • prioridad entre 1 a 255 (siendo 255 la más alta)
      por defecto es de 100.
    • hellos
      por defecto cada 1 segundo.
    • preempt por defecto ACTIVADO
    • Track: por route y por interface status
    • multicast: 224.0.0.18 (en versión 3 IPv6 es FF02::12)
    • Los anuncios (advertisements = hello) los envía el master comunicando la prioridad y el estado del maestro
  • GLBP:
    • Propietario de Cisco
    • grupo entre 0 a 1023
    • UDP 3222
    • prioridad entre 1 a 255 (siendo 255 la más alta)
      por defecto es de 100.
    • AVG = Active Virtual Gateway
      • mayor prioridad o en su defecto la IP más alta
      • responder a todas las peticiones ARP
      • solo 1 AVG es elegido
      • hello, 1 a 60 segundos o de 50 a 60.000 mili segundos
        por defecto cada 3 segundos
      • multicast 224.0.0.102
      • holdtime,
        por defecto 10 segundos
    • AVF = Active Virtual Forwarder
      • MAC virtual: 0007.b4xx.xxyy
        xx.xx representan 6 ceros seguidos por 10 bits con el número de grupo del GLBP
        yy representan 8 bits con el número de forwarder virtual (AVF).s
      • máximo 4 AVFs (MACs), el resto backup
    • metodos de balanceo:
      Round robin: Default, uno detrás de otro
      Weighted: reparte las peticiones según el peso
      Host dependent: un host siempre va al mismo AVF

Retro

Lugares

Redes

Sistemas

Varios