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
R1
y R2
anunciar el destino de difusión ilimitada a través de OSPF. Si Rcore
tiene coste idéntico al de sus N1
e N2
interfaces, 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 Rcore
tabla 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.
Rcore
es una conexión ABRN1
yN2
, que están en áreas NSSA separadas, a la red troncal (no se muestra).- La inspección de la
Rcore
LSDB confirma que los LSA esperados deR1
yR2
están instalados correctamente, y contienen el destino de difusión ilimitada con la métrica correcta.
He considerado tres posibles explicaciones.
- 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.
- 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.
- 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
Respuestas:
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.
fuente
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.
fuente
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:
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.
fuente
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.
fuente