天天看点

OSPF的外部路由

作者:阿豪的笔记

AS区域内和区域间路由描述的是AS内部的网络结构。AS外部路由则描述了应该如何选择到AS以外目的地址的路由。OSPF引入的其他路由协议或不同OSPF进程的路由,均属于外部路由。

外部路由类型

OSPF引入外部路由,共有两种类型可选:

  • 第一类外部路由的AS外部开销值被认为和AS内部开销值是同一数量级的,因此第一类外部路由的开销值为AS内部开销值(路由器到ASBR的开销)与AS外部开销值之和;
  • 第二类外部路由的AS外部开销值被认为远大于AS内部开销值,因此第二类外部路由的开销值只包含AS外部开销,忽略AS内部开销。

默认情况下,OSPF外部路由采用的是第二类外部路由。对于同一目的地址,第一类的外部路由的优先级要大于第二类外部路由。

OSPF路由选路规则如下:

  1. OSPF区域内路由优于区域间路由
  2. OSPF的区域间路由优于外部路由
  3. OSPF外部路由中type1的路由优于type2的路由
  4. 同为type1的外部路由中,优先内部成本和外部成本之和后成本最小的路由,如果路由的成本一样,则负载分担
  5. 同为type2的外部路由中,优先外部成本花销小的路由,如果外部成本一致,则优先内部成本小的路由,若外部和内部成本均一致,则负载分担

外部路由计算

OSPF主要通过AS-External-LSA和ASBR-Summary-LSA进行外部路由计算

AS-External-LSA

AS External LSA,即Type-5 LSA,当ASBR将外部路由引入OSPF时,会产生Type-5 LSA用于描述这些外部路由,这种类型的LSA一旦被产生后,会在整个OSPF域内传播(除了一些特殊区域)。一条Type-5 LSA只能宣告一条外部路由,其包含的主要信息如下图所示。

OSPF的外部路由

Type-5 LSA 中主要包括以下内容:

  • Ls id:目的网段地址。
  • Adv rtr:ASBR 的 Router ID。
  • Net mask:目的网段的网络掩码。
  • Metric:ASBR到达目的网络的开销值,默认值为1。
  • Tag:外部路由信息可以携带一个Tag标签,用于传递该路由的附加信息,通常用于路由策略,默认值为1。

ASBR-Summary-LSA

ASBR Summary LSA,即Type-4 LSA,由ABR产生,描述到ASBR的路由信息。四类LSA只能在一个区域内泛洪,五类LSA每泛洪到一个区域,相应区域的ABR都会生成一条新的四类LSA来描述如何到达ASBR。Type-4 LSA包含的主要信息如下图所示。

OSPF的外部路由

Type-4 LSA中主要包括以下内容:

  • Ls id:该ASBR的Router ID。
  • Adv rtr:该产生此四类LSA的ABR的Router ID。
  • Metric:从该ABR到达此ASBR的OSPF开销值。

路由计算过程

如下图所示,RTA上配置了一条静态路由,目的网络是10.1.60.0/24,下一跳是RTF。在RTA的OSPF进程下,将配置的静态路由重发布到A公司的OSPF网络中。

RTA会生成一条AS-External-LSA(五类LSA),用于描述如何从ASBR到达外部目的地;RTB和RTC会生成一条ASBR-Summary-LSA(四类LSA),用于描述如何从ABR到达ASBR。四类LSA和五类LSA,将被OSPF路由器用来计算外部路由。

OSPF的外部路由

当ASBR在本区域内时,以Area 0中RTB的外部路由计算为例:RTB收到五类LSA后,根据Adv rtr字段1.1.1.1发现,ASBR与自己同属于一个区域(Area 0),便根据Ls id、Net mask、Metric字段最终生成目的网络10.1.60.0/24 cost=1,下一跳为RTA的路由。

OSPF的外部路由

当ASBR没有在本区域内时,以Area 1中RTD的外部路由计算为例:RTD收到五类LSA后,根据Adv rtr字段1.1.1.1发现,ASBR与自己不同属于一个区域,便查找Ls id为1.1.1.1的四类LSA,发现此四类LSA的Adv rtr为2.2.2.2。它根据五类LSA中的LS id、Net mask、Metric字段和四类LSA信息最终生成目的网络10.1.60.0/24 cost=1,下一跳为RTB的路由。

OSPF的外部路由

Forwarding Address

如图所示,RTA、RTB、RTC同处于一个MA网络,RTA和RTB之间运行OSPF,RTB和RTC之间运行RIP。RTB将通过RIP学来的路由重发布到OSPF,RTA通过OSPF学习到RIP中192.168.3.0/24的外部路由,但是下一跳是RTB。所以RTA访问192.168.3.0/24的流量先发送给RTB,RTB收到后又转发给RTC。在RTA上这条路由是次优的,最优的下一跳应当为RTC。

OSPF通过设置Forwarding Address来解决这个问题。

通常情况下,ASBR引入外部路由产生的五类LSA中Forwarding Address字段设置为0.0.0.0。对于上图中的场景,RTB路由表中到达192.168.3.0/24的下一跳地址为10.1.123.3。10.1.123.3所属网段10.1.123.0/24运行OSPF,所以RTB生成的五类LSA中,Forwarding Address被设置为10.1.123.3。

当RTA收到五类LSA时,发现Forwarding Address字段非0,其值为10.1.123.3,所以RTA按照Forwarding Address计算下一跳。

OSPF的外部路由

ASBR上的接口如果满足以下四个规则,则ASBR 上外部路由的下一跳地址就是该外部路由五类LSA的FA,否则该外部路由五类LSA中的FA为0。

  1. 该外部路由的下一跳地址所在网段的接口要发布到OSPF中。
  2. 该外部路由的下一跳地址所在网段的接口没有被设置成 silent 接口。
  3. 下一跳地址所在网段的接口 OSPF网络类型不是Point-to-Point 网络类型
  4. 下ー地止所在同段的接口 OSPF 网络类型不是Point-to-Multipoint网络类型.

外部路由聚合

当大规模部署OSPF网络时,可能会出现由于OSPF路由表规模过大而降低路由查找速度的现象,为了解决这个问题,可以配置路由聚合,减小路由表的规模,降低管理的复杂度。

路由聚合是指将多条具有相同IP前缀的路由聚合成一条路由。如果被聚合的IP地址范围内的某条链路频繁Up和Down,该变化并不会通告到被聚合的IP地址范围外的设备。因此,路由聚合可以避免网络中的路由振荡,在一定程度上提高了网络的稳定性。

如图所示,Area 0中RTA将8个连续的外部路由引入到OSPF域内,产生8条五类LSA并在OSPF进程域内泛洪。在ASBR(RTA)配置外部路由汇总后,RTA将仅产生1条五类LSA并泛洪至OSPF路由进程域内。

OSPF的外部路由

对引入的路由进行路由聚合后,有以下几种情况:

  • 如果本地路由器是ASBR且处于普通区域中,本地路由器将对引入的聚合地址范围内的所有Type-5 LSA进行路由聚合。
  • 如果本地路由器是ASBR且处于NSSA区域中,本地路由器对引入的聚合地址范围内的所有Type-7 LSA进行路由聚合。
  • 如果本地路由器既是ASBR又是ABR且处于NSSA区域中,本地路由器对引入的聚合地址范围内的所有Type-7 LSA进行路由聚合外,还将对由Type-7 LSA转化成的Type-5 LSA也进行路由聚合。