IP : 开放最短路径优先 (OSPF)

在不同的OSPF进程中的OSPF再分配

2015 年 8 月 28 日 - 机器翻译
其他版本: PDFpdf | 英语 (2015 年 4 月 22 日) | 反馈


目录


简介

本文为开放最短路径优先(OSPF)的再分配区别进程之间的提供指南。区别进程之间的再分配是困难,并且特殊测量为网络的正常操作是必要的。本文也突出显示在思科IOS�软件方面介绍的一些更改。

为什么重新分配在两个OSPF进程之间?

可以有再分配的几个原因在多个进程之间。这些是一些示例:

  • 过滤从一部分的OSPF路由的域

  • 分离不同的OSPF域

  • 移植在独立的域之间

虽然区别进程之间的再分配也许在某些情况下是必要的,一备选设计解决方案(若可能)是一更加适当的选择,和在此部分的小节讨论。

过滤OSPF路由

域间路由

在OSPF中,在区域内的IP前缀没有交换直接地在路由器之间。他们是林克状态广告(LSA)的一部分也宣布网络的拓扑;因此,没有办法过滤在区域内的路由。

注意: 在的本地过滤在一个给的路由器可以执行防止一些路由安装)的路由器(没有认为实际路由过滤。这用distribute-list命令下面router ospf通常完成。

一解决方案将使用一不同的进程和过滤在重新分配的路由器的希望的路由;然而,执行此实际上分离区域到两个域。更好的设计是分离区域到不同的区域和使用Cisco IOS type3过滤特性,解释的以后。

区域间路由

在OSPF中,在区域内的所有路由器有确切同样拓扑。区域不了解另一个区域拓扑;因此,它依靠连接的区域边界路由器宣布的信息(ABR)。

信息通告在区域里面由ABR (作为type3 LSA)实际上是从远程区域了解或为其他连接的区域计算的IP前缀。

ABR产生这些路由:

  • 非骨干网域间路由到骨干网里

  • 骨干网区域内和区域间路由到非骨干区域

所以,在区域之间有可以被有效利用过滤在区域之间的路由的距离矢量行为。

Cisco IOS软件实现一个域间过滤特性。关于此功能的更多信息,参考SPF ABR类型3 LSA过滤

外部路由过滤

由于外部路由通告作为类型5 LSA并且是被充斥的域宽,除了到末节区域和次末节区域(NSSAs),现在没有办法过滤类型5 LSA。一解决方案将有一不同的进程和过滤在进程之间,当重新分配时。

保持不同的OSPF域分离

被看到,惯例使用不同的OSPF进程为了为管理分离不同的IP路由域,或分段路由域和控制在再分配点的路由信息。

然而,它应该是要注意的在一个域的不稳定性可能影响另一个域。例如,如果有在OSPF网络上的一个变化(类型1和2)自治系统边界路由器(ASBR)的地方驻留在两个域之间,所有类型5 LSA将再产生并且被充斥在远程域中。因此,如果有在一网络的不变不稳定性,这可能导致不变射入和撤退在另一个域的类型5 LSA。

更好的设计选择是使用区别域之间的边界网关协议(BGP)。在这种情况下,区别域之间的OSPF交换虽则去BGP;并且,因为BGP有减弱的功能,在一个域的不稳定性将是较不可视在另一个域。

重新分配区别OSPF进程之间

如被提及以前,可以有其它方案到重新分配在多个进程之间。部分根据再分配点数量显示如何应该仔细计划区别进程之间的再分配。

OSPF路由首选规则

OSPF路由选择规则是域间路由在区域间路由更喜欢,在外部路由被偏好。然而,此规则应该适用到获知的路由通过同一进程。换句话说,没有在外部路由之间的首选从一进程与其他进程比较内部路由。

在一给的OSPF程序和任何其他之间的首选规则处理(假如是OSPF或另一个路由协议)应该遵从管理距离规则。然而,因为默认情况下不同的OSPF进程将有同一管理距离,应该为不同的OSPF进程明确地配置OSPF距离,达到所需的行为。

注意: 在Cisco Bug ID CSCdi7001 —修复在Cisco IOS软件版本11.1及以上版本—前进程之间的管理距离没有适当地运作和一进程内部路由在另一进程外部路由被偏好了。

再分配点

当有一个再分配点时,在域之间的所有交换发生在单点,和没有办法再分配环路能形成。以下为配置示例:

图 1

http://www.cisco.com/c/dam/en/us/support/docs/ip/open-shortest-path-first-ospf/4170-ospfprocesses-01.gif

路由器 A 配置
router ospf 1
redistribute ospf 2 subnet

router ospf 2
redistribute ospf 1 subnet

两再分配点

当有两个问题的再分配时,它是更加复杂的。如果再分配在网络的两个点完成,不用任何特别注意,可能有意外的结果。

考虑下拓扑,路由器A和路由器B相互再分布在两个域之间。此配置不工作,和被展示的以后在此部分。

图 2

http://www.cisco.com/c/dam/en/us/support/docs/ip/open-shortest-path-first-ospf/4170-ospfprocesses-02.gif

路由器A和B配置
router ospf 1
redistribute ospf 2 subnet

router ospf 2
redistribute ospf 1 subnet

给在Domain1的网络N,路由器A和B学习网络N作为在Domain1的内部路由。由于他们重新分配进程1到进程2,同一网络N在Domain2了解作为外部路由。

现在,在每个路由器,通过一进程了解的内部网络竞争另一进程外部网络。如前所提及,没有区别进程之间的首选规则;因此,结果是indeterministic,两个处理有同一管理距离。

注意: 这能导致不变射入和撤退类型5从一进程其他。

在Cisco Bug ID CSCdw10987 (在Cisco IOS软件版本)前(集成的仅限注册用户12.2(07.04)S, 12.2(07.04)T和以后),做最短路径第一种算法的最后进程(SPF)在路由表里将赢取和两进程覆盖其他路由。现在,如果路由通过一进程安装,它没有由与同一管理域(AD)的另一OSPF程序覆盖,除非路由从路由表首先删除由在路由表里最初安装路由的进程。

管理距离

当您使用在多个进程之间时的再分配,您能使用管理距离更喜欢在另一进程的一进程,因为OSPF路由首选在同一进程内仅应用。然而,这不是足够为在网络的正常操作,如解释的以后在此部分。

图 3

http://www.cisco.com/c/dam/en/us/support/docs/ip/open-shortest-path-first-ospf/4170-ospfprocesses-03.gif

路由器A和B配置
router ospf 1
redistribute ospf 2 subnet
distance ospf external 200

router ospf 2
redistribute ospf 1 subnet
distance ospf external 200

没有网络故障的网络操作

考虑在Domain1的网络N, N将是公认的在Domain1的内部路由,并且请重新分配由路由器A和由路由器B。由于管理距离外部路由增加,路由器A和路由器B选择OSPF程序1到达网络N。

在更多一般方式,所有网络内部对Domain1通过Domain1将到达,并且所有网络内部对Domain2通过Domain2将到达,由路由器A和路由器B。每个域的其他路由器拾起最接近的ASBR (如果使用量度的第二类型)或最短路径通过一个ASBRs (如果使用量度的第一类型)。

如果有前缀外部对来自一些其他再分配点)的两个域(同一问题将发生,因为那些外部路由的管理距离是相同的在两进程。如果区别外部进程的管理距离,不会解决问题。示例如下:

图 4

http://www.cisco.com/c/dam/en/us/support/docs/ip/open-shortest-path-first-ospf/4170-ospfprocesses-04.gif

路由器C (ASBR)通告外部N到Domain1。此前缀由路由器A和路由器B重新分配到Domain2,并且到达其中每一路由器;因此, N将是外部在两个域。要有正常操作,管理距离外部路由需要是不同的为两进程,因此一个域在其他更喜欢。假设, Domain1的管理距离比Domain2集合降低。

现在,如果路由器D (ASBR)通告外部M到Domain2,然后此前缀由路由器A重新分配,并且路由器B到Domain1里和它将到达其中每一路由器。因此, M将是外部在两个域,并且,因为管理距离为Domain1是更低, M通过Domain1将是可及的。此事件顺序能出现:

  1. 路由器A (路由器B)重新分配M到Domain1,并且外部M将到达路由器B (路由器A)。

  2. 由于管理距离Domain1比Domain2更低,路由器A (路由器B)通过Domain1将安装M并且集对maxage其上一个产生的LSA (事件1)到Domain1里。

  3. 由于M设置为在Domain2的maxage,路由器A (路由器B)将安装M,虽然Domain2,并且,因此,重新分配M到Domain2。

  4. 同event1一样。

此周期继续,并且方式修理它将有Domain2前缀可及的通过Domain2。然而,如果管理距离Domain2的是集合更低,然后同一问题将发生为Domain1和为前缀N。

解决方案将设置根据前缀的管理距离。欲知更多信息,请参阅thePrefix-Based过滤基于前缀的过滤和基于前缀的管理距离部分。

与网络故障的网络操作

万一一个域是不可得到的,您希望一个域备份另一个域。

例如,请设想路由器A丢失连接对网络N通过Domain1的案件。一旦路由器A通过Domain1丢失其连接,将冲洗其通告在Domain2的以前生成的LSA网络N并且安装路径对网络N通过Domain2通过从B.接收的外部网络。由于进程2在进程1重新分配,路由器A也将注入外部网络N Domain1。

注意: 当路由器A有连接对网络N,使用了进程1由于更加好的管理距离,并且进程2保持对于备份信息。一旦路径穿过进程1变得不可得到,进程2使用连接。

图 5

http://www.cisco.com/c/dam/en/us/support/docs/ip/open-shortest-path-first-ospf/4170-ospfprocesses-05.gif

现在, Domain2的所有路由器将使用路由器B到达网络N;并且路由器A (或丢失连接对网络N通过域1) Domain1的部分将使用Domain2连接对网络N。此方案依然是有效,如果路由器B丢失连接对网络N,而不是路由器A。

如果路由器A和路由器B两松散连接对网络N (例如,如果路由器C断开),然后此事件顺序可能发生:

  1. 在网络N变得不可得到前,路由器A和路由器B了解网络N虽则处理1和重新分配它到进程2作为外部。

  2. 路由器A和路由器B检测(几乎同时)该网络N通过Domain1是不可得到的;因此,他们将冲洗他们的在Domain2的以前外部N。

  3. 在路由器A前(路由器B)接收从路由器B (路由器A)的被冲洗的LSA,通过Domain2 (更高的管理距离)将安装外部N作为备份路由。

  4. 自从路由器A (路由器B)通过进程2安装N,它将生成外部N到Domain1。

  5. 路由器A (路由器B)接收被冲洗的LSA (从路由器B (路由器A)的事件1)。它通过进程2将删除网络N,并且,因此,冲洗外部N到域1.网络N通过Domain2了解并且重新分配到Domain1。

  6. 在路由器A前(路由器B)接收从路由器B (路由器A)的被冲洗的LSA,通过Domain1将安装外部网络N,因为N是虽则被冲洗的Domain2。

  7. 自从路由器A (路由器B)通过进程1安装网络N,它将生成外部N到Domain2。

您能看到有可能从一个域出现到另一个域的竞争状态。在事件1, 4和7,路由器A生成外部网络N到Domain2;并且在事件2和5,路由器A提取前缀。因为获知的路由通过一个域重新分配回到同一个域,问题发生。

建议方案

此部分显示如何防止属于从重新分配的一个域回到同一个域的路由,避免路由环路。

使用distance 255命令

前面部分显示路由环路如何创建,如果从一个域了解的前缀重新分配回到同一个域。由于再分配从路由表发生,您可以防止属于Domain1,并且从在Domain2的远程路由器在路由表里了解从安装的路由。所以,路由器不会再分布那些路由回到Domain1。

执行此,发出distance 255 router_ID inverse_mask access-list命令。此命令通知路由器拒绝由有指定的路由器ID的一个远程路由器接收,并且匹配从路由表的访问控制表(ACL)的所有前缀。

注意: distance 255命令给距离255到那些路由,并且,因此,防止他们的安装到路由表。

在表6,路由器A使用access-list 1命令匹配在Domain1的所有路由并且使用distance 255命令下面进程1拒绝匹配前缀属于Domain1从路由器接收的路由B。

当您使用distance 255命令时,拒绝从属于Domain1的路由器接收的所有路由B。由于路由器B再分布在Domain1的所有路由到Domain2,路由器A不会安装那些路由,并且,因此,不再再分布回到Domain1。

注意: 应该从ACL排除路由器B连接的接口在Domain1的。

图 6

http://www.cisco.com/c/dam/en/us/support/docs/ip/open-shortest-path-first-ospf/4170-ospfprocesses-03.gif

路由器 A 配置 路由器 B 配置
router ospf 1
redistribute ospf 2 subnet
distance 255 <Router B> 0.0.0.0 2
!
access-list 1

!--- Matches the router in Domain 2.


router ospf 2
redistribute ospf 1 subnet
distance 255 <Router B> 0.0.0.0 1
!
access-list 2

!--- Matches the route in Domain 1.

router ospf 1
redistribute ospf 2 subnet
distance 255 <Router A> 0.0.0.0 2
!
access-list 1

!--- Matches the router in Domain 2.


router ospf 2
redistribute ospf 1 subnet
distance 255 <Router A> 0.0.0.0 1
!
access-list 2

!--- Matches the route in Domain 1.

因为从远程路由器的获知的路由通过其中一进程没有安装,上一个distance ospf external 200命令不再必要。

此配置适当地工作,在两路由器疏松连接对网络处(正如没有网络故障的与网络故障的网络操作网络操作所描述)。然而,因为前缀从路由表拒绝,域不能互相备份。

注意: 您必须明确地列出所有每个域前缀在ACL的。这样ACL维护可以是非常困难。

过滤根据标记的路由

有一新特性在允许您过滤路由根据标记的Cisco IOS软件方面(从Cisco Bug ID CSCdt43016 (仅限注册用户))。要防止路由的再分配一个域回到同一个域,路由器能标记属于域的路由,当重新分配时,并且您能过滤在根据同一标记的远程路由器的那些路由。由于路由不会安装到路由表,他们不会重新分配回到同一个域。

图 7

http://www.cisco.com/c/dam/en/us/support/docs/ip/open-shortest-path-first-ospf/4170-ospfprocesses-03.gif

路由器A和B配置
router ospf 1
redistribute ospf 2 subnet tag 1
distribute-list 1 route-map filter_domain2 in
!
route-map filter_domain2 deny 10
match tag 2
route-map filter_domain2 permit 20

router ospf 2
redistribute ospf 1 subnet tag 2
distribute-list 1 route-map filter_domain1 in
!
route-map filter_domain1 deny 10
match tag 1
route-map filter_domain1 permit 20

当您从Domain1时重新分配,路由用标记1在根据同一标记的远程路由器标记和被过滤。当您从Domain2时重新分配,路由用标记2在根据同一标记的远程路由器标记和被过滤。

注意: 因为从远程路由器了解的路由通过其中一进程没有安装,上一个distance ospf external 200命令不再必要。

此配置适当地工作,在两路由器疏松连接对网络处(正如没有网络故障的与网络故障的网络操作网络操作所描述)。然而,因为前缀从路由表拒绝,域不能互相备份。

使用匹配内部关键字,当重新分配时

当您从域时重新分配,您能使用匹配内部关键字再分布属于一个域到另一个域仅的内部路由。这防止已经是外部回到同一个域前缀的再分配。

图 8

http://www.cisco.com/c/dam/en/us/support/docs/ip/open-shortest-path-first-ospf/4170-ospfprocesses-03.gif

路由器A和B配置
router ospf 1
redistribute ospf 2 subnet match internal
distance ospf external 200
!

router ospf 2
redistribute ospf 1 subnet match internal
distance ospf external 200
!

此配置适当地工作,在两路由器疏松连接对网络处(正如没有网络故障的与网络故障的网络操作网络操作所描述)。一个域能备份另一个域。

如果已经有在域之一的外部前缀(例如通过另一份协议重新分配)的外部前缀,则那些前缀不会重新分配对其他域,因为仅内部前缀重新分配。并且,没有对外部前缀的控制,并且所有外部前缀将阻塞。

基于前缀的过滤

当您从域时重新分配,前缀可以匹配ACL避免属于一个域回到同一个域前缀的再分配。

图 9

http://www.cisco.com/c/dam/en/us/support/docs/ip/open-shortest-path-first-ospf/4170-ospfprocesses-03.gif

路由器A和B配置
router ospf 1
redistribute ospf 2 subnet route-map filter_domain2
distance ospf external 200
!
route-map filter_domain2 permit 10
match ip address 1
!
access-list 1

!--- Matches the prefix in Domain 1.


router ospf 2
redistribute ospf 1 subnet route-map filter_domain1
distance ospf external 200
!
route-map filter_domain1 permit 20
match ip address 2
!
access-list 2

!--- Matches the prefix in Domain 2.

此配置适当地工作,在两路由器疏松连接对网络处(正如没有网络故障的与网络故障的网络操作网络操作所描述)。一个域能备份另一个域。

注意: 您必须明确地列出每个域所有前缀在ACL的。这样ACL维护可以是非常困难。另一解决方案将标记前缀在分配时然后过滤对应的标签。

图 10

http://www.cisco.com/c/dam/en/us/support/docs/ip/open-shortest-path-first-ospf/4170-ospfprocesses-03.gif

路由器A和B配置
router ospf 1
redistribute ospf 2 subnet tag 1 route-map filter_domain2
distance ospf 2 external 200
!
route-map filter_domain2 deny 10
match tag 2
route-map filter_domain2 permit 20

router ospf 2
redistribute ospf 1 subnet tag 2 route-map filter_domain1
distance ospf 1 external 200
!
route-map filter_domain1 deny 10
match tag 1
route-map filter_domain1 permit 20

基于前缀的过滤和基于前缀的管理距离

按照Administrative Distance部分所述,有需要对于其他ASBRs产生的外部前缀于每个域的基于前缀的管理距离。在下拓扑示例里, ASBR1和ASBR2重新分配网络x和Y到Domain1和Domain2,分别。

此示例使用ACL匹配属于域的所有前缀(内部和外部),并且使用distance命令增加最初不属于对应的域的管理距离前缀。

图 11

http://www.cisco.com/c/dam/en/us/support/docs/ip/open-shortest-path-first-ospf/4170-ospfprocesses-06.gif

路由器A和B配置
router ospf 1
redistribute ospf 2 subnet route-map filter_domain2
distance 200 0.0.0.0 255.255.255.255 2
!
route-map filter_domain2 permit 10
match ip address 1
!
access-list 1

!--- Matches the prefixes in Domain 1.

access-list 2

!--- Matches the prefixes in Domain 2.


router ospf 2
redistribute ospf 1 subnet route-map filter_domain1
distance 200 0.0.0.0 255.255.255.255 1
!
route-map filter_domain1 permit 10
match ip address 2
!
access-list 1

!--- Matches the prefixes in Domain 1.

access-list 2

!--- Matches the prefixes in Domain 2.

距离200 0.0.0.0 255.255.255.255 2命令在进程1下设置属于Domain2到200的管理距离所有前缀;因此,路由器A和B使用Domain1到达属于Domain1的前缀。

注意: 您必须明确地列出每个域所有外部前缀在ACL的。这样ACL维护可以是非常困难。

摘要

当有超过在OSPF域之间时的一再分配点,路由环路能容易地出现。要防止路由环路,属于域的前缀不应该重新分配回到同一个域。并且,应该正确地设置OSPF进程的管理距离。这五个方法在本文报价:

  • 请使用distance 255命令

  • 过滤基于标记。

  • 在再分配时请使用匹配内部关键字。

  • 在再分配时请使用基于前缀的过滤。

  • 请使用基于前缀的过滤和基于前缀的管理距离。

前两解决方案防止在路由表里属于从安装的一个域,防止他们的再分配回到同一个域的路由。

注意: 由于前缀从路由表拒绝,域不能互相备份。

若需要您能使用最后三解决方案备份与另一个域的一个域。然而,您应该注释这些警告:

  • 匹配内部解决方案不允许您掌握前缀,并且所有外部前缀从再分配将阻塞。换句话说,如果有从其他ASBRs,然后那些LSA的外部前缀不会从一个域重新分配到其他。

  • “使用基于前缀的过滤在再分配时”解决方案允许域备份另一个域。然而,当没有从另一个ASBR时的外部路由备份正确地只运作。

  • “使用基于前缀的过滤和基于前缀的管理距离”解决方案是允许域在从其他ASBRs的外部路由面前备份另一个域的唯一的解决方案。

本文重复是指使用一个域备份另一个域。值得注意的是, “备份”意味着,如果路由器A通过一个给的域疏松其对一部分的连接的域(例如域1),然后它可能使用另一个域(正确地路由的域2)对不可能通过Domain1到达的那些目的地。

然而,如果域分成,因为前缀没有重新分配回到原始域,然后另一个域不可能备份分成的域,除非前缀重新分配回到原始域。然而,在管理距离网络操作中注明与网络故障部分,这将引入其他问题。

相关的思科支持社区讨论

思科支持社区是您提问、解答问题、分享建议以及与工作伙伴协作的论坛。


相关信息


Document ID: 4170