¿Por qué este enrutador no puede utilizar múltiples rutas de igual costo desde OSPF?

16

Un enrutador Brocade que ejecuta NetIron 5.2 y una emulación Dynamips que ejecuta IOS 12.4 no pueden utilizar de manera confiable rutas de igual costo en lo que parece ser una configuración muy simple. Digo "confiablemente" porque observé muy brevemente el comportamiento esperado del Brocade, pero fue después de un largo período de inactividad y desapareció tan pronto como perturbé el sistema.

En caso de que sea relevante, estoy configurando un destino de difusión ilimitada para un servicio de red sin estado. Esta será una configuración específica del sitio, con poca o ninguna diversidad de longitud de ruta de red, por lo que el propósito de la capacidad de difusión total es principalmente para la redundancia de conmutación por error y en parte para compartir la carga. Mi pregunta se refiere a la función de carga compartida.

Mi red prototipo se ve así.

R1 <--N1--> Rcore <--N2--> R2

R1y R2anunciar el destino de difusión ilimitada a través de OSPF. Si Rcoretiene coste idéntico al de sus N1e N2interfaces, así como el destino anycast tiene costo idéntica en cada uno de los otros routers, yo esperaría encontrar dos rutas de igual costo en la Rcoretabla de enrutamiento. No lo hago, al menos no siempre, y ni siquiera de manera predecible. Por qué no?

Entre otros, los detalles potencialmente relevantes son los siguientes.

  • Rcorees una conexión ABR N1y N2, que están en áreas NSSA separadas, a la red troncal (no se muestra).
  • La inspección de la RcoreLSDB confirma que los LSA esperados de R1y R2están instalados correctamente, y contienen el destino de difusión ilimitada con la métrica correcta.

He considerado tres posibles explicaciones.

  1. No entiendo cómo configurar y operar ECMP en estas plataformas. Esto es probable, y espero encontrar la iluminación aquí que no pude encontrar en los documentos del proveedor.
  2. No entiendo la interacción entre las áreas OSPF, ECMP, anycast, etc. No creo que esto sea muy probable, pero estoy preparado para aprender algo de todos modos.
  3. Las implementaciones de estos dos proveedores sufren el mismo error, o una característica errónea, o algo así. Supongo que podría suceder.

Editar Ejemplo de configuración agregado y salida para la implementación de Dynamips / Dynagen.

Configuraciones

Enrutador R1

!
version 12.4
!
hostname R1
!
interface Loopback0
 ip address 1.1.1.1 255.255.255.255
 ip ospf cost 1
!
interface FastEthernet0/0
 ip address 10.1.0.2 255.255.255.252
 ip ospf cost 2
!
router ospf 1
 router-id 10.1.0.2
 log-adjacency-changes
 area 0.0.0.1 nssa no-summary
 passive-interface Loopback0
 network 1.1.1.1 0.0.0.0 area 0.0.0.1
 network 10.1.0.0 0.0.0.3 area 0.0.0.1
!
line console 0
 exec-timeout 0 0
!
end

Enrutador R2

!
version 12.4
!
hostname R2
!
interface Loopback0
 ip address 1.1.1.1 255.255.255.255
 ip ospf cost 1
!
interface FastEthernet0/0
 ip address 10.2.0.2 255.255.255.252
 ip ospf cost 2
!
router ospf 1
 router-id 10.2.0.2
 log-adjacency-changes
 area 0.0.0.2 nssa no-summary
 passive-interface Loopback0
 network 1.1.1.1 0.0.0.0 area 0.0.0.2
 network 10.2.0.0 0.0.0.3 area 0.0.0.2
!
line console 0
 exec-timeout 0 0
!
end

Enrutador Rcore

!
version 12.4
!
hostname Rcore
!
interface Loopback0
 ip address 10.0.0.1 255.255.255.255
 ip ospf cost 4
!
interface FastEthernet0/0
 ip address 10.1.0.1 255.255.255.252
 ip ospf cost 2
!
interface FastEthernet0/1
 ip address 10.2.0.1 255.255.255.252
 ip ospf cost 2
!
router ospf 1
 log-adjacency-changes
 area 0.0.0.1 nssa no-summary
 area 0.0.0.2 nssa no-summary
 passive-interface Loopback0
 network 10.0.0.1 0.0.0.0 area 0.0.0.0
 network 10.1.0.0 0.0.0.3 area 0.0.0.1
 network 10.2.0.0 0.0.0.3 area 0.0.0.2
!
line console 0
 exec-timeout 0 0
!
end

Salida

Enrutador Rcore

Router LSA de R1

Rcore#sh ip ospf database router 10.1.0.2

            OSPF Router with ID (10.0.0.1) (Process ID 1)

        Router Link States (Area 0.0.0.1)

  LS age: 1618
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 10.1.0.2
  Advertising Router: 10.1.0.2
  LS Seq Number: 80000002
  Checksum: 0x726F
  Length: 48
  Number of Links: 2

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 1.1.1.1
     (Link Data) Network Mask: 255.255.255.255
      Number of TOS metrics: 0
       TOS 0 Metrics: 1

    Link connected to: a Transit Network
     (Link ID) Designated Router address: 10.1.0.2
     (Link Data) Router Interface address: 10.1.0.2
      Number of TOS metrics: 0
       TOS 0 Metrics: 2

Router LSA de R2

Rcore#sh ip ospf database router 10.2.0.2

            OSPF Router with ID (10.0.0.1) (Process ID 1)

        Router Link States (Area 0.0.0.2)

  LS age: 1766
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 10.2.0.2
  Advertising Router: 10.2.0.2
  LS Seq Number: 80000002
  Checksum: 0x8A53
  Length: 48
  Number of Links: 2

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 1.1.1.1
     (Link Data) Network Mask: 255.255.255.255
      Number of TOS metrics: 0
       TOS 0 Metrics: 1

    Link connected to: a Transit Network
     (Link ID) Designated Router address: 10.2.0.2
     (Link Data) Router Interface address: 10.2.0.2
      Number of TOS metrics: 0
       TOS 0 Metrics: 2

Extracto de la tabla de enrutamiento

Rcore#sh ip route 1.1.1.1
Routing entry for 1.1.1.1/32
  Known via "ospf 1", distance 110, metric 3, type intra area
  Last update from 10.1.0.2 on FastEthernet0/0, 00:30:54 ago
  Routing Descriptor Blocks:
  * 10.1.0.2, from 10.1.0.2, 00:30:54 ago, via FastEthernet0/0
      Route metric is 3, traffic share count is 1
neirbowj
fuente
¿Qué tipo de ruta es el anycast?
nicotina
@nicotine: la dirección anycast es una dirección secundaria en la interfaz de bucle invertido. En la última permutación de esta configuración, termina como una red auxiliar en un enrutador LSA. Fragmentos de configuración y capturas de terminal a seguir.
neirbowj
Traté de eliminar la configuración y la salida tanto como sea posible, pero no demasiado. Sugerencias para mejorar la densidad de información son bienvenidas.
neirbowj
Esto debería funcionar. ¿Puede publicar la salida de los siguientes comandos: muestre los protocolos ip muestre el enrutamiento ip de la depuración de la costilla del ospf del ip Pruebe estos comandos en Rcore. Esto debería darnos algunas pistas de por qué las rutas duales no están instaladas. Su salida OSPF DB me parece bien.
Daniel Dib
Si rebota el enlace de la ruta activa, ¿sigue prefiriendo la ruta original? Por ejemplo: en su salida CLI muestra la ruta activa apuntando hacia 10.1.0.2. Si cierra la interfaz a 10.1.0.2 el tiempo suficiente para que el vecindario OSPF se rompa, vuelva a conectarla. ¿Se reinstala la ruta original hacia 10.1.0.2?
bigmstone

Respuestas:

7

Mi primer pensamiento sería que OSPF está pensando que es el mismo LSA en lugar de simplemente el mismo prefijo. No sé mucho sobre brocado, pero con las salidas LSA de la caja de Cisco, probablemente podría decirle más.

En general, para Cisco, si las rutas son iguales en el protocolo, ambas se presentarán en la tabla de enrutamiento. La tabla de enrutamiento, por defecto, instalará ambas rutas y realizará ECMP. Si las métricas o protocolos difieren, no serán ECMP. Esto también se aplicaría a diferentes LSA para el mismo prefijo.

Pete Lumbis
fuente
Sí, las entradas de la base de datos deberían decirnos: ¿tienen la misma dirección de reenvío y enrutador publicitario?
nicotina
Trabajaré para obtener resultados de muestra esta tarde.
neirbowj
6

Estoy considerando si ECMP tiene sentido para anycast. El enrutamiento debe dirigir cualquier difusión al destino lógicamente más cercano en el que un host se vea favorecido sobre el otro. Incluso en el caso de que los hosts de difusión ilimitada sean equidistantes, todavía esperaría que esto siga siendo cierto. En cuanto a la carga compartida ECMP, creo que por destino es imposible con un / 32. Quizás haya algoritmos de carga compartida que consideren la fuente. Por paquete parece arriesgado, incluso para DNS. Creo que la mayoría de las soluciones Anycast listas para usar ejecutan ospf en el host.

Tomó un poco de búsqueda, pero el siguiente extracto de rfc2178 confirma la causa.

16.8. Ruta múltiple de igual costo

El protocolo OSPF mantiene múltiples rutas de igual costo a todos los destinos. Esto se puede ver en los pasos utilizados anteriormente para calcular la tabla de enrutamiento y en la definición de la estructura de la tabla de enrutamiento.

Cada una de las rutas múltiples será del mismo tipo (intra-área, inter-área, tipo 1 externo o tipo 2 externo), costo y tendrá la misma área asociada . Sin embargo, cada ruta especifica un enrutador de próximo salto y publicidad independiente.

Dennis Olvany
fuente
1
Hmm, dibujé un área única y ECMP está presente en el núcleo. Aunque, todavía afirmaría que es inútil con un / 32. Quizás lo siguiente sea relevante: morse.colorado.edu/~tlen5710/12s/OSPF.pdf
Dennis Olvany
Esto dice que el área es uno de los criterios para ECMP. Parece que diferentes áreas pueden ser el factor decisivo.
Dennis Olvany
OSPF en el host: sí, este es el objetivo. / 32 asignado como una dirección secundaria en el bucle invertido. También estoy investigando la configuración de carga compartida, pero eso depende de ECMP en primer lugar.
neirbowj
5

No puedo reproducir esto en mi laboratorio, usando 12.4 (24). Misma topología, RCore área 0 loopback, R1 con lo0 e interfaz en el área 1, R2 con lo0 e interfaz en el área 2 (ambos NSSA), la ruta redistribuida se recoge para ECMP en Rcore:

Routing entry for 10.20.0.0/16
  Known via "ospf 1", distance 110, metric 20, type NSSA extern 2, forward metric 6477
  Last update from 2.2.2.6 on Serial1/1, 00:02:23 ago
  Routing Descriptor Blocks:
    2.2.2.6, from 2.2.2.21, 00:02:23 ago, via Serial1/1
      Route metric is 20, traffic share count is 1
  * 1.1.2.1, from 1.1.1.1, 00:06:31 ago, via Serial1/0
      Route metric is 20, traffic share count is 1

Posibilidades en las que puedo pensar: Dependiendo de cómo la ruta se está convirtiendo en OSPF, y qué tipo de ruta OSPF se utiliza, el costo para el enrutador ASBR puede / no factorizarse en el proceso de selección de ruta (para que ECMP funcione, ambos costos de ruta , y el costo para ASBR tiene que coincidir). Ver la métrica en el LSA real para ambos puede ayudar.

Pude reproducir esto en IOS imitando su configuración, colocando el anycast en una interfaz y colocando la interfaz en un área. Si necesita ECMP, considere redistribuir la ruta en OSPF, ya que parece funcionar.

nicotina
fuente
FWIW, la imagen en mi instancia de Dynamips es 12.4 (25d) en un 7200. Sus resultados muestran "Conocido a través de ... NSSA extern 2" pero el mío muestra "intra area". Esa es una buena pista.
neirbowj
Redistribuir conectado produciría eso en lugar de usar el comando de red o ip ospf en la interfaz.
Daniel Dib
@DanielDib Estoy en el proceso de agotar las permutaciones de normal / stub / nssa, intra-área / externa, y al menos Cisco + Dynamips / Brocade. También intentaré Juniper, si tengo tiempo.
neirbowj
3

Dependiendo de qué hardware Brocade esté utilizando (MLX? CER? XMR?), Es posible que desee actualizar el software. Se corrigieron varios errores a través de los árboles de software 5.3 (y 5.4 dependiendo de su hardware) cuyos síntomas estaban relacionados con los costos de ruta OSPF que no se actualizaban correctamente. No conozco todos los criterios para ver los errores, pero algunos de ellos fueron: si el costo se cambió en un puerto de 1 giga o una interfaz de bucle invertido en un enrutador que ejecuta OSPF, el cambio no se procesó y el costo no se actualizó .

Me doy cuenta de que estás viendo esto en las plataformas de dos fabricantes, por lo que es más probable que sea un problema de configuración. También me doy cuenta de que la vieja técnica de soporte técnico "actualizar su software" a menudo puede valer nada más que un vistazo. Dicho esto, podría ser algo a tener en cuenta.

Cabra en el trabajo
fuente
Voy a tener esto en cuenta. Sin embargo, R1 / R2 estableció el costo, Rcore ve el costo y Rcore exhibe los síntomas de ECMP.
neirbowj