为什么该路由器无法使用来自OSPF的多个等价路由?


16

运行NetIron 5.2的Brocade路由器和运行IOS 12.4的Dynamips仿真都无法在看上去非常简单的配置中可靠地使用等价路径。我之所以说“可靠”,是因为我确实非常短暂地观察了Brocade的预期行为,但是那是经过了长时间的不活动之后,并在我对系统造成干扰后消失了。

如果相关,我将为无状态网络服务设置一个任播目标。这将是特定于站点的配置,几乎没有网络路径长度差异,因此任播功能的目的主要是为了实现故障转移冗余,而部分则是为了负载共享。我的问题与负载共享功能有关。

我的原型网络看起来像这样。

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

R1R2通过OSPF公布任播目标。如果Rcore在其N1N2接口上具有相同的成本,并且任播目标在其他每个路由器上具有相同的成本,则我希望在Rcore路由表中找到两条相等的成本路径。我不是,至少不是一直如此,甚至不是可以预见的。为什么不?

其中,潜在的相关细节如下。

  • Rcore是ABR,将N1N2分别位于独立的NSSA区域中,并连接到骨干网(未显示)。
  • RcoreLSDB的检查确认了预期的LSA R1R2已正确安装,并且包含具有正确度量的任播目标。

我考虑了三种可能的解释。

  1. 我不了解如何在这些平台上配置和操作ECMP。这是有可能的,我希望在这里能找到我在供应商文档中找不到的启示。
  2. 我不了解OSPF区域,ECMP,Anycast等之间的交互。我认为这不太可能,但是无论如何我都准备学习一些东西。
  3. 这两个供应商的实现遭受相同的错误,功能错误或其他问题。我想这有可能发生。

编辑为Dynamips / Dynagen实现添加了示例配置和输出。

设定档

路由器 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

路由器 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

路由器 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

输出量

路由器 Rcore

来自的路由器LSA 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

来自的路由器LSA 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

路由表摘录

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

任播是哪种路由类型?
尼古丁

@nicotine:任播地址是回送接口上的辅助地址。在此配置的最新排列中,它最终成为路由器LSA中的存根网络。配置摘要和终端抓取。
neirbowj

我试图尽可能减少配置和输出,但不要太多。欢迎提出提高信息密度的建议。
neirbowj

这应该工作。您可以从以下命令中发布输出:show ip protocol show ip ospf rib debug ip routing在Rcore上尝试这些命令。这应该为我们提供一些有关为什么未安装双路由的线索。您的OSPF DB输出对我来说看起来不错。
Daniel Dib

如果退回活动路线的链接,它是否仍喜欢原始路线?例如:在您的CLI输出中,它显示指向10.10.0.2的活动路由。如果您将接口关闭到10.1.0.2的时间足够长,以至于OSPF邻居中断,然后将其重新联机,是否会重新安装指向10.1.0.2的原始路由?
bigmstone

Answers:


7

我首先想到的是OSPF认为它是相同的LSA,而不是简单的相同前缀。我对Brocade的了解不多,但是借助Cisco产品中的LSA输出,我可能会告诉您更多信息。

通常,对于Cisco而言,如果路由在协议中相同,则它们都将显示在路由表中。默认情况下,路由表将安装两个路径并执行ECMP。如果度量标准或协议不同,它们将不会进行ECMP。这也将适用于相同前缀的不同LSA。


是的-数据库条目应该告诉我们-它们是否具有相同的转发地址和广告路由器?
尼古丁

今天下午我将努力获取样本输出。
neirbowj

6

我正在考虑ECMP是否适用于任播。路由应将任播定向到逻辑上最接近的目的地,在该目的地中一台主机将比另一台主机更受青睐。即使在任意播主机是等距的情况下,我仍然希望这仍然适用。至于ECMP负载共享,我认为使用/ 32不可能实现每个目标。也许有考虑到源的负载共享算法。即使对于DNS,每个数据包似乎也有风险。我相信大多数现成的Anycast解决方案都在主机上运行ospf。

进行了一些搜索,但是来自rfc2178的以下摘录确认了原因。

16.8。等价多路径

OSPF协议维护到所有目的地的多个等价路由。这可以在上面用于计算路由表的步骤以及路由表结构的定义中看到。

多个路由中的每条路由都将具有相同的类型(区域内,区域间,类型1外部或类型2外部),成本,并且具有相同的关联区域。但是,每个路由都指定一个单独的下一跳和广告路由器。


1
嗯,我尝试了一个区域,而ECMP位于核心区域。虽然,我仍然会争辩说它用/ 32是没有用的。可能与以下内容有关:morse.colorado.edu/~tlen5710/12s/OSPF.pdf
丹尼斯·奥尔瓦尼

表示该区域是ECMP的标准之一。看起来不同领域可能是交易突破者。
丹尼斯·奥尔瓦尼

主机上的OSPF-是的,这就是目标。/ 32被分配为回送上的辅助地址。我也正在研究负载共享配置,但这首先取决于ECMP。
neirbowj 2013年

5

我无法使用12.4(24)在实验室中复制它。拓扑相同,RCore区域0回送,R1的lo0和区域1的接口,R2的lo0和区域2的接口(均为NSSA),在Rcore上为ECMP选择了重新分配的路由:

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

我可以想到的可能性:取决于路由将其放入OSPF的方式以及所使用的OSPF路由类型,ASBR路由器的成本可能/可能不包括在路由选择过程中(要使ECMP正常工作,这两种路由的成本,并且ASBR的费用必须匹配)。在两者的实际LSA上查看度量标准可能会有所帮助。

通过模仿您的配置,我能够在IOS上重现这一点-将任播消息放置在界面上,然后将界面放置在一个区域中。如果确实需要ECMP,请考虑将路由重新分配到OSPF,因为这确实可行。


FWIW,我的Dynamips实例中的图像在7200上为12.4(25d)。您的结果显示为“已知... NSSA extern 2”,而我的显示为“内部区域”。这是一个很好的线索。
neirbowj

重新分配连接将产生该结果,而不是在接口下使用network命令或ip ospf。
Daniel Dib

@DanielDib我正在用尽正常/末节/ nssa,区域内/外部以及至少Cisco + Dynamips / Brocade的排列。如果有时间的话,我也会尝试Juniper。
neirbowj

3

根据您使用的Brocade硬件(MLX?CER?XMR?),您可能需要更新软件。通过5.3(和5.4,具体取决于您的硬件)软件树修复了多个错误,这些错误的症状与OSPF路由成本没有正确更新有关。我不知道查看这些错误的所有标准,但其中有几个是:如果在1gig端口或运行OSPF的路由器上的回送接口上更改了成本,则该更改未得到处理且成本未更新。

我知道您已经在两个制造商的平台上看到了这一点,因此这很可能是配置问题。我还意识到,旧的技术支持专家“更新您的软件”通常不值一提。也就是说,可能要记住一些事情。


我会牢记这一点。但是,R1 / R2确定成本,Rcore看到成本,并且Rcore表现出ECMP症状。
neirbowj
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.