Métrica EIGRP

eigrp

Para poder establecer la distancia hacia la red de destino, EIGRP utiliza la métrica, donde la más baja es la utilizada para llegar al destino, y la que se instala en la tabla de rutas.

La métrica de este protocolo es una métrica compuesta, la cual está combinada por los siguientes vectores:

  • Ancho de banda (BW): es el ancho de banda más bajo en la ruta hacia el destino (el valor de BW se calcula como [10^7]/[menor BW de la ruta en Kbps]).
  • Carga (Load): corresponde a la peor carga hacia el destino (mayor carga de la ruta), la que se calcula sobre la base de la velocidad de paquetes y el ancho de banda configurado de la interfaz. Si el valor es 255, significa que la interfaz está 100% cargada.
  • Retraso (Delay): la suma de los delay de las interfaces hasta llegar a la red de destino (calculado en decenas de microsegundos [µSeg/10]).
  • Confiabilidad (Reliability): es la peor confiabilidad entre origen y destino, y esta se basa en los keepalives. Si el valor es 255, significa que la interfaz, es 100% confiable.
  • MTU (Maximum Transmission Unit): este valor puede ser 0 o cualquier entero positivo. Se toma en cuenta la MTU más baja.
  • Cantidad de saltos (Hop Count): es la cantidad de redes que debe pasar un paquete para llegar a la red de destino. El valor de este parámetro es acumulativo.
  • Jitter: este se mide en microsegundos y se acumula a lo largo de la trayectoria. En la actualidad, EIGRP no tiene la capacidad de medir el Jitter, y por esto, el valor predeterminado es 0.
  • Energía (Energy): el uso de la energía, da lugar a rutas con el consumo de energía más bajo que se seleccionan de una manera libre de loops y determinista. La cantidad de energía utilizada es acumulativa. Actualmente, EIGRP no informa el uso de energía, y como tal, el valor predeterminado es 0.

NOTA: es necesario dejar como nota, y una muy importante, que la MTU y la cantidad de saltos no son valores que se utilizan para calcular la métrica, solo son usados para establecer una mejor ruta hacia el destino cuando hay dos o más métricas iguales.

La fórmula de la métrica consiste en valores K (coeficientes), estos valores son los que especifican los parámetros a tomar en cuenta para calcular la métrica. Estos valores, en la configuración de router van del 1 al 5, y en la configuración de address-families (cuando se utiliza EIGRP named), los valores K van del 1 al 6.

La fórmula completa de la métrica de EIGRP es:

{([K1*BW] + [K2*BW]/[256- Load] + [K3*Delay])*(K5/[Reliability+K4])} * 256

Por defecto, los valores de los coeficientes se encuentran configurados de la siguiente forma, con el fin de brindar el mejor rendimiento en la mayoría de las redes:

  • K1 == K3 == 1
  • K2 == K4 == K5 == 0
  • K6 == 0

Como solo los valores de K1 y K3 son 1, la fórmula reducida queda de la siguiente forma:

{([1*BW] + [0*BW]/[256- Load] + [1*Delay])*(0/[Reliability+0])} * 256 {([1*BW] + [0] + [1*Delay])*(1)} * 256 ([K1*BW] + [K3*Delay]) * 256

En caso de que K5 sea configurado en 0, el coeficiente de confiabilidad se establece en 1.

Coeficientes K1 y K2

K1 permite que la selección de la ruta hacia la red de destino, sea basada en el ancho de banda, mientras que K2, se usa para simular la congestión y entregar el throughput disponible de la interfaz, basado en la carga reportada por esta, ajustado al rendimiento máximo de la interfaz.

Coeficiente K3

Este coeficiente permite seleccionar la ruta usando la latencia o retardo (delay). EIGRP usa valores basados en un solo sentido.

Coeficientes K4 y K5

Estos dos coeficientes son usados para la selección basada en la calidad del enlace y la pérdida de paquetes.

Como se comentó en la fórmula anteriormente, si K5 se configura en 0, el valor de esa sección de la fórmula se define en 1, para no dejar en 0 el valor final del cálculo final.

Coeficiente K6

Este coeficiente es utilizado para permitir atributos extendidos (Extended Attributes), los cuales, se pueden utilizar para reflejar en una métrica agregada mayor que aquellos que tienen menor consumo de energía. Actualmente hay dos de estos atributos, los cuales, son el Jitter y Energía.

Métrica infinita

La métrica que se define como infinita, es aquella que especifica que la red es inalcanzable, y que, por lo tanto, esta ruta no será puesta en la tabla de enrutamiento.

Cuando el valor del delay es 4294967295 (0xFFFFFFFF en hexadecimal), la métrica se considera infinita.

El valor del ancho de banda que es considerado infinito es 281474976710655, lo que corresponde a 0xFFFFFFFFFFFF en hexadecimal.

Compatibilidad de delay en las interfaces de routers Cisco (Según la RFC 7868)

Bandwidth (Kbps) Classic Delay Wide Metrics Delay Interface type
9 500000000 500000000 Tunnel
56 20000000 20000000 56 Kbps
64 20000000 20000000 DS0
1544 20000000 20000000 T1
2048 20000000 20000000 E1
10000 1000000 1000000 Ethernet
16000 630000 630000 TokRing16
45045 20000000 20000000 HSSI
100000 100000 100000 FDDI
100000 100000 100000 FastEthernet
155000 100000 100000 ATM 155 Mbps
1000000 10000 10000 GigaEthernet
2000000 10000 5000 2 GigaEthernet
5000000 10000 2000 5 GigaEthernet
10000000 10000 1000 10 GigaEthernet
20000000 10000 500 20 GigaEthernet
50000000 10000 200 50 GigaEthernet
100000000 10000 100 100 GigaEthernet
200000000 10000 50 200 GigaEthernet
500000000 10000 20 500 GigaEthernet

Verificación de los valores de la interfaz

Para poder ver los valores de los vectores que usa la métrica, con el comando show interfaces es posible saber qué es lo que tiene configurado el router:

R1#show interfaces ethernet 0/0
Ethernet0/0 is up, line protocol is up 
  Hardware is AmdP2, address is aabb.cc00.1000 (bia aabb.cc00.1000)
  Internet address is 192.168.12.1/24
  MTU 1500 bytes, BW 10000 Kbit/sec, DLY 1000 usec, 
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation ARPA, loopback not set
  Keepalive set (10 sec)
  ARP type: ARPA, ARP Timeout 04:00:00
  Last input 00:00:04, output 00:00:03, output hang never
  Last clearing of "show interface" counters never
  Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
  Queueing strategy: fifo
  Output queue: 0/40 (size/max)
  5 minute input rate 0 bits/sec, 0 packets/sec
  5 minute output rate 0 bits/sec, 0 packets/sec
     969 packets input, 94501 bytes, 0 no buffer
     Received 964 broadcasts (0 IP multicasts)
     0 runts, 0 giants, 0 throttles 
     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
     0 input packets with dribble condition detected
     1375 packets output, 119269 bytes, 0 underruns
     0 output errors, 0 collisions, 1 interface resets
     3 unknown protocol drops
     0 babbles, 0 late collision, 0 deferred
     0 lost carrier, 0 no carrier
     0 output buffer failures, 0 output buffers swapped out

Verificación de valores K

Para poder saber los valores asignados a las K, con el comando show ip protocols es posible verlos:

R1#show ip protocols 
*** IP Routing is NSF aware ***

Routing Protocol is "application"
  Sending updates every 0 seconds
  Invalid after 0 seconds, hold down 0, flushed after 0
  Outgoing update filter list for all interfaces is not set
  Incoming update filter list for all interfaces is not set
  Maximum path: 32
  Routing for Networks:
  Routing Information Sources:
    Gateway         Distance      Last Update
  Distance: (default is 4)

Routing Protocol is "eigrp 10"
  Outgoing update filter list for all interfaces is not set
  Incoming update filter list for all interfaces is not set
  Default networks flagged in outgoing updates
  Default networks accepted from incoming updates
  EIGRP-IPv4 Protocol for AS(10)
    Metric weight K1=1, K2=0, K3=1, K4=0, K5=0
    NSF-aware route hold timer is 240
    Router-ID: 192.168.1.1
    Topology : 0 (base) 
      Active Timer: 3 min
      Distance: internal 90 external 170
      Maximum path: 4
      Maximum hopcount 100
      Maximum metric variance 1

  Automatic Summarization: disabled
  Maximum path: 4
  Routing for Networks:
    192.168.1.0
    192.168.12.1/32
    192.168.13.1/32
  Routing Information Sources:
    Gateway         Distance      Last Update
    192.168.12.2          90      01:09:36
    192.168.13.2          90      01:09:36
  Distance: internal 90 external 170

Si se desea cambiar estos valores, es posible hacerlo en la configuración de router:

R1(config)#router eigrp 10
R1(config-router)#metric weights ?
  <0-8>  Type (Only TOS 0 supported)

R1(config-router)#metric weights 0 ?
  <0-255>  K1

R1(config-router)#metric weights 0 1 ?
  <0-255>  K2

R1(config-router)#metric weights 0 1 0 ?
  <0-255>  K3

R1(config-router)#metric weights 0 1 0 1 ?
  <0-255>  K4

R1(config-router)#metric weights 0 1 0 1 0 ?
  <0-255>  K5

R1(config-router)#metric weights 0 1 0 1 0 

El valor de Type of Service siempre se configura en 0, y como se puede ver, los valores de las K no solo pueden ser 1, pueden ser un valor entero entre 0 y 255.

Es necesario tener en cuenta que, si los valores K son diferentes entre dos vecinos, no se establece la adyacencia entre estos:

R1(config-router)#metric weights 0 1 1 1 0 0
R1(config-router)#end
R1#
*Jul 20 01:38:47.776: %DUAL-5-NBRCHANGE: EIGRP-IPv4 10: Neighbor 192.168.13.2 (Serial1/0) is down: metric changed
*Jul 20 01:38:47.777: %DUAL-5-NBRCHANGE: EIGRP-IPv4 10: Neighbor 192.168.12.2 (Ethernet0/0) is down: metric changed
*Jul 20 01:38:48.511: %DUAL-5-NBRCHANGE: EIGRP-IPv4 10: Neighbor 192.168.12.2 (Ethernet0/0) is down: K-value mismatch
*Jul 20 01:38:49.687: %DUAL-5-NBRCHANGE: EIGRP-IPv4 10: Neighbor 192.168.13.2 (Serial1/0) is down: K-value mismatch
R1#show ip prot | in Metric weight
    Metric weight K1=1, K2=1, K3=1, K4=0, K5=0

Modificación del valor de ancho de banda de la interfaz

Para poder ajustar la métrica, es posible modificar el valor del ancho de banda en la interfaz, gracias al comando bandwidth (este valor no es el valor físico real del BW de la interfaz):

R1(config)#do sh int e0/0 | in BW
  MTU 1500 bytes, BW 10000 Kbit/sec, DLY 1000 usec, 
R1(config)#int e0/0 
R1(config-if)#bandwidth ?
  <1-10000000>   Bandwidth in kilobits
  inherit        Specify how bandwidth is inherited
  qos-reference  Reference bandwidth for QOS test
  receive        Specify receive-side bandwidth

R1(config-if)#bandwidth 5000
R1(config-if)#do sh int e0/0 | in BW
  MTU 1500 bytes, BW 5000 Kbit/sec, DLY 1000 usec,

NOTA: no se recomienda modificar el valor del ancho de banda, porque este afecta a otros componentes como, por ejemplo: QoS o si se tiene también habilitado OSPF. Por esto, Cisco especifica que es mejor modificar el delay.

Modificación del valor de delay de la interfaz

La modificación de este valor, es similar al del BW, se utiliza el comando delay. Recordar que en la configuración el valor está en decenas de segundos:

R1(config)#do sh int e0/0 | in DLY
  MTU 1500 bytes, BW 10000 Kbit/sec, DLY 1000 usec, 
R1(config)#int e0/0               
R1(config-if)#delay ?
  <1-16777215>  Throughput delay (tens of microseconds)

R1(config-if)#delay 500
R1(config-if)#do sh int e0/0 | in DLY
  MTU 1500 bytes, BW 10000 Kbit/sec, DLY 5000 usec,