OSPF与自制系统外部学习路由实际上是通过一种叫ASBR(自治系统边界路由器)来完成的。ASBR设备可以获知外部自制系统得路由信息。这台设备位于自制系统与外部自制系统之间,但并不一定是在物理上位于二者之间,可以是网络中任何位置的路由器,只要这台设备引入了外部自制系统的路由,那么它就叫做ASBR。
在ASBR路由器上只是简单的将路由的三个要素网段、掩码,花费描述出来,而不描述外部自制系统的拓扑结构。同时,在ASBR上生成的LSA是第五类LSA。跟Router LSA不同的是,第五类LSA会传送到自制系统内所有的区域,而Router LSA仅仅是在区域内部传送。在这个时候上图区域2中的路由器虽然知道第五类LSA是由ASBR发送给自己的,但它并不知道ASBR在什么位置,从而无法根据生成树来计算路由。所以,在这种与外部自制系统相连的网络拓扑,区域2中的路由器会生成一种第四类LSA,这个LSA只描述ASBR的Router ID和到ASBR的Metric值。因此,虽然区域2中的路由器不知道如何到达ASBR,但它知道通过ABR路由器可以到达ASBR。因此,区域2中的路由器将自己的下一条指向ABR。
那么我们想一下,为什么不采用与区域间路由计算相同的方法呢?(由ASBR生成第三类路由)实际上还是为了解决路由自环的问题。因此在ASBR引入外部路由的时候有可能引入的路由存在自环或者其他问题,而ASBR并不提供检测路由错误机制。ASBR唯一能做的就是将自己引入的路由标示出来,所以采用了第五类LSA。同时,OSPF协议规定了在自制系统内部和通过OSPF协议获知的路由优先级要高于ASBR引入的路由的优先级。通常在路由表中以O_ASE或者O_E表示。在华为设备中OSPF路由优先级缺省为10(数值越小优先级越高,路由越可靠),O_ASE路由优先级缺省为150。
STUB区域与路由聚合
在OSPF提出了区域的概念之后,协议在区域中有很多灵活的应用。接下来我们来看Stub区域与路由聚合。Stub的概念就是说:如果一个区域和它相邻的区域只有一个并且这个区域不是骨干域,我们叫这个区域为Stub区域。对于这种区域的特点是:第一、自制系统内的路由都不传递到这个区域。第二、区域间的路由也不传递到Stub区域。那么Stub区域与外界通信是依靠ABR来传递。Stub中的路由器发送一条缺省路由到相邻的区域中去,这样做是因为Stub区域是不参与路由交换的,所以没有必要了解相邻区域内的路由。从而减小了Stub区域的路由表。所以在Stub区域中只有Stub区域本身内部路由,其他的路由都可以用缺省路由来代替。
下面讲述路由聚合,比如图示中的区域19,三个路由器属于连续的三个网段,这是可以通过路由聚合19.1.1.0/16发布给ABR。这么做也是为了减少区域内和区域外的路由表。当然,这条聚合命令是可选的。在图示中,假设存在一个19.1.5.0/24网段并且不再区域19内,这时就不能以19.1.1.0/16发布了。