AS区域内和区域间路由描述的是AS内部的网络结构。AS外部路由则描述了应该如何选择到AS以外目的地址的路由。OSPF引入的其他路由协议或不同OSPF进程的路由,均属于外部路由。
OSPF引入外部路由,共有两种类型可选:
第一类外部路由的AS外部开销值被认为和AS内部开销值是同一数量级的,因此第一类外部路由的开销值为AS内部开销值(路由器到ASBR的开销)与AS外部开销值之和;
第二类外部路由的AS外部开销值被认为远大于AS内部开销值,因此第二类外部路由的开销值只包含AS外部开销,忽略AS内部开销。
默认情况下,OSPF外部路由采用的是第二类外部路由。对于同一目的地址,第一类的外部路由的优先级要大于第二类外部路由。
OSPF路由选路规则如下:
OSPF区域内路由优于区域间路由
OSPF的区域间路由优于外部路由
OSPF外部路由中type1的路由优于type2的路由
同为type1的外部路由中,优先内部成本和外部成本之和后成本最小的路由,如果路由的成本一样,则负载分担
同为type2的外部路由中,优先外部成本花销小的路由,如果外部成本一致,则优先内部成本小的路由,若外部和内部成本均一致,则负载分担
OSPF主要通过AS-External-LSA和ASBR-Summary-LSA进行外部路由计算
AS External LSA,即Type-5 LSA,当ASBR将外部路由引入OSPF时,会产生Type-5 LSA用于描述这些外部路由,这种类型的LSA一旦被产生后,会在整个OSPF域内传播(除了一些特殊区域)。一条Type-5 LSA只能宣告一条外部路由,其包含的主要信息如下图所示。
Type-5 LSA 中主要包括以下内容:
Ls id:目的网段地址。
Adv rtr:ASBR 的 Router ID。
Net mask:目的网段的网络掩码。
Metric:ASBR到达目的网络的开销值,默认值为1。
Tag:外部路由信息可以携带一个Tag标签,用于传递该路由的附加信息,通常用于路由策略,默认值为1。
ASBR Summary LSA,即Type-4 LSA,由ABR产生,,描述到ASBR的路由信息。四类LSA只能在一个区域内泛洪,五类LSA每泛洪到一个区域,相应区域的ABR都会生成一条新的四类LSA来描述如何到达ASBR。Type-4 LSA包含的主要信息如下图所示。
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路由器用来计算外部路由。
当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的路由。
当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的路由。
如图所示,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计算下一跳。
ASBR上的接口如果满足以下四个规则,则ASBR 上外部路由的下一跳地址就是该外部路由五类LSA的FA,否则该外部路由五类LSA中的FA为0。
该外部路由的下一跳地址所在网段的接口要发布到OSPF中。
该外部路由的下一跳地址所在网段的接口没有被设置成 silent 接口。
下一跳地址所在网段的接口 OSPF网络类型不是Point-to-Point 网络类型
下ー地止所在同段的接口 OSPF 网络类型不是Point-to-Multipoint网络类型.
OSPF路由器需要同时维护域内路由、域间路由、外部路由信息数据库。当网络规模不断扩大时,LSDB规模也不断增长。
虽然OSPF通过划分区域可以减少网络中LSA的数量,但是对于那些位于自治系统边界的非骨干区域的低端路由器来说,可能仍然无法承受。
如下图所示,全网可分为四部分Area 0、Area 1、Area 2、外部网络。四部分之间相互访问的主要流量如图中红线所示。
对于OSPF各区域,可分为两种类型:
传输区域:除了承载本区域发起的流量和访问本区域的流量外,还承载了源IP和目的IP都不属于本区域的流量,即“穿越型流量”,如Area 0。
末端区域:只承载本区域发起的流量和访问本区域的流量,如Area 1。
如果某区域不需要为其他区域提供流量中转服务,那么该区域内的路由器就没有必要维护本区域外的链路状态数据库。在网络部署时,对于末端区域,需要考虑下两个问题:
保存到达其他区域明细路由的必要性:访问其他区域通过单一出口,“汇总”路由相对明细路由更为简洁。
设备性能:网络建设与维护要考虑成本因素。末端区域中可选择部署性能相对较低的路由器。
可以通过OSPF的特殊区域特性,进一步减少末端设备的LSA数量和路由表规模。
Stub区域的ABR不向Stub区域内传播它接收到的自治系统外部路由(对应四类、五类LSA)。为保证Stub区域能够到达自治系统外部,Stub区域的ABR将生成一条缺省路由(对应三类LSA),并发布给Stub区域中的其他路由器。
配置Stub区域后,所有自治系统外部路由均由一条三类的默认路由代替。除路由条目的减少外,当外部网络发生变化后,Stub区域内的路由器是不会直接受到影响的。
Stub区域是一种可选的配置属性,不建议将每个区域都配置为Stub区域。通常来说,Stub区域位于自治系统的末梢,是那些只有一个ABR的非骨干区域。
配置Stub区域时需要注意下列几点:
骨干区域不能被配置为Stub区域。
如果要将一个区域配置成Stub区域,则该区域中的所有路由器必须都要配置成Stub路由器。
Stub区域内不能存在ASBR,自治系统外部路由不能在本区域内传播。
虚连接不能穿越Stub区域建立。
Totally Stub区域既不允许自治系统外部路由(四类、五类LSA)在本区域内传播,也不允许区域间路由(三类LSA)在本区域内传播。
与Stub区域配置的区别在于,在ABR上需要追加no-summary参数。配置为Totally Stub区域后,区域内的路由器对其他区域及自制系统外部的访问需求是通过本区域ABR所产生的三类LSA缺省路由实现的。
如下图所示,配置Totally Stub区域后,所有区域间路由和自治系统外部路由均由一条三类的默认路由代替。
如下图所示,RTD和RTA同时连接到某一外部网络,RTA引入外部路由到OSPF域,RTD所在的Area 1为减小LSDB规模被设置为Stub或Totally Stub区域。RTD访问外部网络的路径是“RTD->RTB->RTA->外部网络”,显然相对于RTD直接访问外部网络而言,这是一条次优路径。
像上图这种既需要引入外部路由又要避免外部路由带来的资源消耗的场景,Stub和Totally Stub区域就不能满足需求了。可以通过将OSPF区域设置为NSSA区域(Not-So-Stubby Area)的方式来解决这个问题。
NSSA区域和Stub区域有许多相似的地方。两者的差别在于,NSSA区域能够将自治域外部路由引入并传播到整个OSPF自治域中,同时又不会学习来自OSPF网络其它区域的外部路由。
NSSA LSA,即七类LSA,由NSSA区域的ASBR产生,描述到AS外部的路由,仅在NSSA区域内传播。
NSSA LSA所有的字段与AS-external-LSA字段均相同,但这两种LSA泛洪的区域不同。AS-external-LSA是在整个AS泛洪,而NSSA LSA仅在NSSA区域中泛洪。
为了使外部路由能被引入到除NSSA区域以外的其他区域,NSSA LSA在ABR上会转换成AS-external-LSA,并且泛洪到骨干区直至整个自治系统中。
七类LSA转换为五类LSA的规则如下:
只有P-bit(Propagate
bit)置位并且FA(Forwarding Address)不为0的NSSA LSA才能转化为AS-external-LSA。
缺省情况下,转化路由器是NSSA区域中Router ID最大的ABR。
说明:
区域边界路由器产生的NSSA LSA缺省路由不会置位P-bit。
与Totally Stub区域类似,为了进一步减少NSSA区域中LSA的数量,OSPF还定义了Totally NSSA区域。Totally NSSA与NSSA区域的配置区别在于ABR上需要追加no-summary参数。配置为Totally NSSA区域后,该区域不允许三类LSA在本区域内泛洪。
当大规模部署OSPF网络时,可能会出现由于OSPF路由表规模过大而降低路由查找速度的现象,为了解决这个问题,可以配置路由聚合,减小路由表的规模,降低管理的复杂度。
路由聚合是指将多条具有相同IP前缀的路由聚合成一条路由。如果被聚合的IP地址范围内的某条链路频繁Up和Down,该变化并不会通告到被聚合的IP地址范围外的设备。因此,路由聚合可以避免网络中的路由振荡,在一定程度上提高了网络的稳定性。
如图所示,Area 0中RTA将8个连续的外部路由引入到OSPF域内,产生8条五类LSA并在OSPF进程域内泛洪。在ASBR(RTA)配置外部路由汇总后,RTA将仅产生1条五类LSA并泛洪至OSPF路由进程域内。
对引入的路由进行路由聚合后,有以下几种情况:
如果本地路由器是ASBR且处于普通区域中,本地路由器将对引入的聚合地址范围内的所有Type-5 LSA进行路由聚合。
如果本地路由器是ASBR且处于NSSA区域中,本地路由器对引入的聚合地址范围内的所有Type-7 LSA进行路由聚合。
如果本地路由器既是ASBR又是ABR且处于NSSA区域中,本地路由器对引入的聚合地址范围内的所有Type-7 LSA进行路由聚合外,还将对由Type-7 LSA转化成的Type-5 LSA也进行路由聚合。