Cómo Configurar ECMP en un FortiGate

Autor Natanael Calderon Cabrera March 30, 2010 | Imprimir | Agregar a favoritos
How to setup ECMP in FortiGates

FortiOS
4.0
Modelo
Todos los modelos FortiGates
Condición
Tener al menos dos enlaces externos


ECMP (Equal-Cost Multi-Path) es un protocolo utilizado por los equipos FortiGates para hacer distribución de tráfico hacia un mismo destino (Puede ser internet o una red pribada) pero utilizando diferentes rutas o caminos. Utilizando ECMP se puede agregar diversas rutas hacia una misma red destino, asignándoles a cada una la misma distancia y la misma prioridad.

En caso, de que se creen múltiples rutas hacia el mismo destino con la misma distancia pero diferente prioridad, entonces la ruta  con menor prioridad sera usada. Puede darse el caso que tenga la misma prioridad pero diferente distancia; en dicho caso, la de menor distancia será usada. En caso que sean múltiples rutas hacia el mismo destino pero con diferentes distancias y diferentes prioridades, entonces siempre será usada la ruta con menor distancia, ya que la Distancia tiene precedencia sobre las prioridades.

Este protocolo nos permite ademas de balancear las cargas de tráfico por diferentes enlaces, hacer redundancia de enlaces, ya que en caso de que uno falle, el sistema usará las rutas disponibles en el enlace que sí esté operando.

Una vez entendido el concepto, tambien es necesario tener claro las diferentes opciones de ECMP (Cómo queremos que se comporte la distribución de tráfico sobre las rutas.) ya que el sistema utiliza algunas técnicas para hacer dicha distribución y éstas se explican a continuación:
Source Based:    La técnica "Basada en la Fuente" o tambien conocida como Basada en IP Fuente (Source IP Based) permite al FortiGate balancear las sesiones entre las rutas ECMP basándose en la dirección IP fuente de las sesiones. Esta modalidad es la que trae el FortiGate configurada por defecto, por lo tanto no requiere mas configuración dentro de ECMP.
Wieghted:    Tambien conocida como "Basada en peso" (Weight-Based), El fortiGate distribuye la carga, basándose en el peso de las rutas ECMP, por lo tanto mas tráfico sera direccionado por la ruta de mayr peso. Donde será necesario hacer configuración del peso (Weight), para cada una de las rutas a través de la CLI
Spill-Over:    Este método tambien se conoce como "Basado en Uso" (Usage-Based), donde el FortiGate distribuira el tráfico entre las rutas ECMP tomando como criterio el uso de la interface. Si se selecciona este método será necesario configurar los umbrales del Spillover en las interfaces involucradas en los enlaces para los cuales se hará el balanceo por ECMP. En este caso, el FortiGate enviará todas las sesiones del ECMP por la interface con menor numero en el Spillover. Una vez alcance el valor configurado, pasará a enviar las sesiones por la siguiente Interface con menor número en Spill.

Cuando el ECMP selecciona una Ruta para una session, se crea tambien un cache de rutas, para todas las sesiones con la misma IP de destino. Entonces, todas las nuevas sesiones hacia la misma IP de destino usaran la misma ruta hasta que dicha ruta se borre del cache. Estas rutas se borraran automaticamente luego de un periodo de tiempo en el que ya no se generen reciban peticiones de sesiones hacia la misma direccion IP de destino.

En la figura 1, se muestra uun esquema en donde tendremos un FortiGate con una LAN y dos interfaces recibiendo los enlaces de Internet, los cuales son independientes y con ellos haremos ECMP. Para este Lab estamos utilizando un FortiGate FG310B-US, por lo tanto configuraremos el Port1 como "Internal", el Port10 como "WAN1" y el Port9 como "WAN2"
Figura 1:


En esta guía mostraremos los pasos para hacer las configuraciones vía GUI ademas de la CLI.

NOTA: Solo se puede tener un método de ECMP configurado a la vez.

Configuración viá GUI de ECMP Basado en IP Fuente

Para este caso, asumiremos que ambos enlaces de Internet tienen el mismo ancho de banda, por lo tanto queremos que pase el tráfico de forma repartida.

Paso 1:     Configurando las Interfaces WAN
Para la configuración de las interfaces del FortiGate entramos en: System >> Network >> Interface, donde configuraremos las IPs para cada una de las Interfaces externas.
Para la WAN1 vea la Figura 2.
Figura 2:


En la figura 3, se muestra la configuración de la WAN2.
Figura 3:


Conifuración por CLI para las Interfaces:
WAN1:
config system interface
    edit "port10"
        set vdom "root"
        set ip 192.168.2.217 255.255.255.0
        set allowaccess ping https ssh snmp http telnet
        set gwdetect enable
        set detectserver "192.168.2.1"
        set type physical
        set alias "WAN1"
end

WAN2:
config system interface
    edit "port9"
        set vdom "root"
        set ip 192.168.111.217 255.255.255.0
        set allowaccess ping https snmp http telnet
        set gwdetect enable
        set detectserver "192.168.111.1"
        set type physical
        set alias "WAN2"
end

Tal como se muestra en las figuras anteriores, la configuración de las interfaces no tiene grado de dificultad configurar,. Pero se debe notar que hemos habilitado la opción de "Detect Interface Status for Gateway Load Balancing" lo que nos permite configurar un server para detectar "Detect Server", técnica que permitirá al FortiGate detectar cuando un enlace presente problemas de comunicación, de tal forma que si uno de los enlaces con los cuales estamos haciendo ECMP falla, el dispositivo enviará el tráfico por la otra interface, con lo cual ademas del balanceo de las cargas, tendremos tambien redundancia a Fallas. Se recomienda poner como Server una IP de un dispositivo remoto que sea confiable y que nunca falle, pues de lo contrario, podríamos experimentar problemas de conexiones.


Paso 2:    Configurando las rutas.
La creacion de las rutas estáticas las haremos desde: Router >> Static >> Static Route >> Create New.
Debido a que deseamos utilizar por igual los dos enlaces de internet, ambas rutas estáticas tendran igual distancia y prioridad. LA figura 4, muestra la primera ruta creada la cual encaminará el tráfico por la interface WAN1, mientras que la figura 5, encamirá tráfico a traves de la WAN2.
Figura 4:


Figura 5:


Configurando las rutas por la CLI:
Ruta 1:
config router static
    edit 1
        set device "port10"
        set distance 10
        set dst  0.0.0.0 0.0.0.0
        set gateway 192.168.2.1
        set priority 0
        set weight 0
    next
end

Ruta 2:
config router static
    edit 2
        set device "port9"
        set distance 10
        set dst  0.0.0.0 0.0.0.0
        set gateway 192.168.111.1
        set priority 0
        set weight 0
    next
end

Paso 3:   Creación de las Políticas de Firewall.
Ahora nos toca navegar en: Firewall >> Policy >> Policy >> Create New , para crear las politicas desde la LAN hacia la WAN1 y WAN2, para poder permitir tráfico a través de ambos enlaces hacia el Internet, ver figura 6 y 7.
Figura 6:


Figura 7:



Con estos pasos ya tenemos enlaces configurados con ECMP, y que ademas son redundantes entre sí.

Si revisamos las políticas, podremos ver que estamos pasando tráfico por ambas, y el criterio se basa en la IP fuente de usuario. Ver figura 8.
Figura 8:


Ademas podremos monitorear las rutas, donde veremos que ambas tienen igual peso y prioridad en: Router >> Monitor >> Routing Monitor, tal como se muestra en la figura 9.
Figura 9:




Configuración viá GUI de ECMP Basado en Peso (Weight-Based)

Para este método, tomando en cuenta que ya hemos realizado los pasos 1-3, ahora solo nos toca cambiar el peso de las rutas y adicionalmente cambiar el método de ECMP via CLI.

Paso 4:     Cambiando el método de ECMP.
Para esta modalidad será necesario cambiar el método de distribución de ECMP, de tal forma que tome como criterio el parámetro de Peso de cada una de las rutas.
config system settings
    set v4-ecmp-mode weight-based
end


Paso 5:    Cambiando el Peso de las rutas.
Este cambio lo podremos hacer via CLI, de la siguiente manera:
Ruta 1:
config router static
    edit 1
        set device "port10"
        set distance 10
        set dst  0.0.0.0 0.0.0.0
        set gateway 192.168.2.1
        set priority 0
        set weight 10
    next
end

Ruta 2:
config router static
    edit 2
        set device "port9"
        set distance 10
        set dst  0.0.0.0 0.0.0.0
        set gateway 192.168.111.1
        set priority 0
        set weight 20
    next
end

Este es un escenario perfecto para el caso de tener enlaces de Internet con anchos de banda diferentes, por lo tanto, con esta configuración estamos forzando a que un tercio del tráfico pase a través del enlace conectado a la WAN1 y los otros dos tercios pasen a través del enlace conectado a la WAN2.

Podemos ahora minitorear las políticas de Firewall, tal como lo hicimos en la sección anterior para ver la distribución de tráfico que ha atravesado por cada una de ellas.

Ademas, si monitoreamos las rutas via CLI veremos que los Pesos de las rutas hacia el mismo destino tiene pesos diferentes.
get router info routing-table static
S*      0.0.0.0/0 [10/0] via 192.168.111.1, port9, [0/20]
                  [10/0] via 192.168.2.1, port10, [0/10]

Por lo tanto el ECMP utilizará como primera ruta la de mayor peso. El Parámetro del Peso (weight) solo es utilizado al momento de enviar la primera sesión hacia una Ip destino. Una vez se decide por qué camino enviar el tráfico, las nuevas sesiones que vayan hacia esa misma IP serán enviadas por esa misma ruta mientras dure la tabla de cache de sesiones, tal como se explicó al inicio de esta guía.



Configuración viá GUI de ECMP Basado en Uso (Spillover)

Si deseamos trabajar con el método de Spillover, antes debemos ejecutar los pasos del 1-3, con la única diferencia que en la configuración de las interfaces, hemos configurado el parámtro de Spillover, tal como lo muestra la figura 10 para la WAN1 y en la figura 11 para la WAN2.

Paso 6:   Configurando el Umbral de Spillover en las Interfaces.
Navegando desde System >> Network >> Interface, donde configuraremos los umbrales de Spill para cada una de las Interfaces.
Figura 10:



Figura 11:



Paso 7:   Cambiando el método de ECMP.
config system settings
    set v4-ecmp-mode usage-based
end

Si navegamos en Router >> Monitor >> Routing Monitor veremos que las rutas hacia el mismo destino (en este caso, las que apuntan a la red 0.0.0.0 0.0.0.0) son idénticas en cuanto amétrica y distancia. ver figura 12.
Figura 12:


Por lo tanto, el FortiGate enviará todas las sesiones a través de la ruta 1 por el gateway 192.168.2.1 y solo hasta que la interface port10 (WAN1) haya excedido el Umbral de Spillover de 128KBps pasará todas las nuevas sesiones a través de la siguiente ruta que seria por el gateway 192.168.111.1 y la interface Port9 (WAN2)

A traves de la linea de comando (CLI), se puede determinar si una interface está excediendo el umbral de desbordamiento (Spillover Threshold), de la siguiente manera:
diagnose netlink dstmac list
dev=lo mac=00:00:00:00:00:00 rx_tcp_mss=0 tx_tcp_mss=0 overspill-threshold=0 bytes=0 over_bps=0 sampler_rate=0
dev=port10 mac=00:00:00:00:00:00 rx_tcp_mss=0 tx_tcp_mss=0 overspill-threshold=128000 bytes=1179 over_bps=0 sampler_rate=0
dev=port9 mac=00:00:00:00:00:00 rx_tcp_mss=0 tx_tcp_mss=0 overspill-threshold=256000 bytes=132 over_bps=0 sampler_rate=0


Nota: No debes olvidarte que en caso de utilizar ECMP, solo se puede seleccionar un Método a la vez, por lo tanto, se recomienda tener muy claro los conceptos sobre la funcionalidad del protocolo para hacer una buena elección del método a utilizar.

Para conocer sobre otros protocolos de ruteo tales como: OSPF , RIP , IS-IS , BGP puede ver las guías relacionadas


Relacionados :
Cómo Configurar Ruteo Estático en un FortiGate
Cómo Configurar Políticas de Ruteo en un FortiGate
Cómo Configurar OSPF en un FortiGate
Cómo Configurar RIP en un FortiGate
Cómo Configurar IS-IS en un FortiGate
Cómo Configurar BGP en un FortiGate



Referencias:
http://kb.fortinet.com
http://docs.fortinet.com/

¿Encuentras este artículo de utilidad?

Si No

Categoría: FortiGates

Última actualización June 21, 2010 with 12774 views