OSPF划分区域主要出于以下几点考虑:
1、每台路由器都保留着整个网络中其他所有路由器生成的LSA,这些LSA的集
合组成LSDB,路由器数量的增多会导致LSDB非常庞大,这会占用大量的存
储空间。
2、LSDB的庞大会增加运行SPF算法的复杂度,导致CPU负担很重。
3、由于LSDB很大,两台路由器之间达到LSDB同步会需要很长时间。
4、网络规模增大之后,拓扑结构发生变化的概率也增大,网络会经常处于“动
荡”之中,为了同步这种变化,网络中会有大量的OSPF协议报文在传递,
降低了网络的带宽利用率。更糟糕的是:每一次变化都会导致网络中所有的
路由器重新进行路由计算。
 
划分成区域之后,给OSPF协议的处理带来了很大的变化。
1、每一个网段必须属于一个区域,或者说每个运行OSPF协议的接口必须指名
属于某一个特定的区域,区域用区域号(Area ID)来标识。区域号是一个
从0开始的32位整数。
2、不同的区域之间通过ABR来传递路由信息。
3、只有一个区域内的路由器会保持LSDB同步
4、区域之间的路由计算由ABR完成
5、外部路由计算由ASBR完成
6、由于划分区域后ABR是根据本区域内的路由生成LSA,则可以根据IP地址的
规律先将这些路由进行聚合后再生成LSA,这样做可以大大减少自治系统中
LSA的数量。下文中会讲到路由聚合的概念。
7、划分区域之后,网络拓扑的变化首先在区域内进行同步,如果该变化影响到
聚合之后的路由,则才会由ABR将该变化通知到其他区域。大部分的拓扑结
构变化都会被屏蔽在区域之内了。减少了网络震荡。
 
那么ABR如何计算区域间路由呢?
ABR会首先查找一个区域内的路由表,然后为每一条表项生成一条Type3类型的LSA,内容主要包括该条路由的目的地址、掩码、花费等信息。然后将这些LSA发送到另一个区域中。
在另一个区域中的路由器根据每一条Type3的LSA生成一条路由,由于这些
路由信息都是由ABR发布的,所以这些路由的下一跳都指向该ABR。( 这里有个疑问,难道一个区域内的所有路由器都要和ABR直接相连吗?要不然这些路由的下一跳怎么能都指向ABR呢?请大家帮忙啊!
个人觉得这里应该是翻译错误了,有可能是区域间路由必须通过ABR才能到达的意思,翻译太烂了。应该改为“所以这些区域间路由都要经过ABR”。)
需要注意的是:此时的LSA中包含的已不再是链路状态信息,而是纯粹的路由信息了。或者说,此时的OSPF是基于D-V算法,而不是基于链路状态算法的了。这就涉及到一个很重要的问题:路由自环。因为D-V算法无法保证消除路由自环。如果无法解决这个问题,则区域概念的提出就是失败的。于是提出了骨干区域的概念,所有的区域必须和骨干区域相连(直接相连或者通过虚连接相连),所有的区域间路由必须通过骨干区域。这里不对骨干区域做详细介绍,我了解的也不多:)
总结一下:Type=3的network summary LSA中包含目的地址和通告路由器(就是ABR),收到该消息的路由器会知道,如果要去目的地,必须经过该ABR。
 
另外区域之间路由有一个路由聚合的概念,什么是路由聚合呢?
ABR在计算出一个区域的区域内路由之后,查询路由表,将其中每一条OSPF路由封装成一条Type3类型的LSA发送到区域之外。例如一个区域内有三条区域内路由19.1.1.0/24,19.1.2.0/24,19.1.3.0/24,正常情况下ABR应该将这三条路由生成三条Type3类型的LSA。如果此时配置了路由聚合,即将三条路由聚合成19.1.0.0/16一条,在ABR上就会只生成一条描述聚合后路由的LSA。需要注意的是:路由聚合只有在ABR上配置才会有效。
 
ASBR又如何处理外部路由呢?
ASBR为每一条引入的路由生成一条Type5类型的LSA,主要内容包括该条路由的
目的地址、掩码和花费等信息。这些路由信息将在整个自治系统中传播(STUB
AREA除外)。计算路由时先在最短路径树中找到ASBR的位置,然后将所有由
该ASBR生成的Type5类型的LSA都当作叶子节点挂在ASBR的下面。以上的方法
在区域内部是可行的,但是由于划分区域的原因,与该ASBR不处于同一个区域
的路由器计算路由时无法知道ASBR的确切位置(该信息被ABR给过滤掉了,因
为ABR是根据区域内的已生成的路由再生成Type3类型的LSA)。为了解决这个
问题,协议规定如下:如果某个区域内有ASBR,则这个区域的ABR在向其他区
域生成路由信息时必须单独为这个ASBR生成一条Type 4类型的LSA,内容主要
包括这个ASBR的Router ID和到他所需的花费值。( 这里也有一个疑问:为什么必须单独为ASBR生成一条Type 4类型的LSA?请指教啊!没太看懂:)
答:ASBR告诉域内的路由器,所有外部路由都要经过自己,而ABR则通过Type=4的ASBR summary LSA告诉域内的路由器,如何到达该ASBR。
Type4路由用来指明Type-5发布者在哪个ABR下面,用于SPF计算。因为Type-5中发布者是ASBR,因此其他路由器可能不知道这个ASBR在SPF树中的位置。
 
STUB区域
为了进一步减少区域内路由信息的传递数量,ospf提出了STUP区域的概念。
STUB区域是指那些不传播Type5类型(即引入的外部路由)的LSA的区域。在这
些区域中路由器的路由表规模以及路由信息传递的数量都会大大减少。为了保
证到自治系统外的路由依旧可达,由该区域的ABR生成一条缺省路由(0.0.0.0)
传播到区域内,因为所有到自治系统外部的路由都必须通过ABR才能到达。( 意思就是ABR生成一条默认路由信息发布到域内,域内的路由器会根据该信息生成默认路由,使所有在路由表中找不到的目的都通过ABR到达
STUB区域是一种可选的配置属性,但并不是每个区域都符合配置的条件。通常
的,STUB区域位于自治系统的边界,是那些只有一个ABR的非骨干区域。或者
该区域虽然有多个ABR,但这些ABR之间没有配置虚连接。
配置STUB区域的一些注意事项:
1、骨干区域不能配置成STUB区域,虚连接不能穿过STUB区域。
2、如果想将一个区域配置成STUB区域,则该区域中的所有路由器都必须都配
置该属性。
3、STUB区域不能存在ASBR,就是不能引入外部路由