5.1.当一个区域与area0没有物理链路相连时
  前文已经提到,一个骨干区域Area 0必须位于所有区域的中心,其余所有区域必须与骨干区域直接相连。 但是,也存在一个区域无法与骨干区域建立物理链路的可能性,在这种情况下,我们可以采用虚拟链路。 虚拟链路使该区域与骨干区域间建立一个逻辑联接点,该虚拟链路必须建立在两个区域边界路由器之间, 并且其中一个区域边界路由器必须属于骨干区域。
  在上图所示的例子中,区域1与区域0并无物理相连链路,我们可以在路由器A及路由器B之间建立虚拟链路, 这样,将区域2作为一个穿透网络(Transit-network),路由器B作为接入点,区域1就与区域0建立了逻辑联接。
 5.2.当骨干区域不连续时
  OSPF路由协议要求骨干区域area0必须是连续的,但是,骨干区域也会出现不连续的情况,例如, 当我们想把两个OSPF路由域混合到一起,并且想要使用一个骨干区域时, 或者当某些路由器出现故障引起骨干区域不连续的情况,在这些情况下, 我们可以采用虚拟链路将两个不连续的区域0连接到一起。这时,虚拟链路的两端必须是两个区域0的边界路由器, 并且这两个路由器必须都有处于同一个区域的端口。
  在上图的例子中,穿过区域1的虚拟链路将两个分为两半的骨干区域连接到一起, 路由器A与B之间的路由信息作为OSPF域内路由来处理。
  另外,当一个非骨干区域的区域分裂成两半时,不能采用虚拟链路的方法来解决。当出现这种情况时, 分裂出的其中一个区域将被其余的区域作为域间路由来处理。
  残域(Stub area)
  在OSPF路由协议的链路状态数据库中,可以包括AS外部链路状态信息, 这些信息会通过flooding传递到AS内的所有OSPF路由器上。但是,在OSPF路由协议中存在这样一种区域, 我们把它称为残域(stub area),AS外部信息不允许广播进/出这个区域。对于残域来说, 访问AS外部的数据只能根据默认路由(default-route)来寻址。 这样做有利于减小残域内部路由器上的链路状态数据库的大小及存储器的使用,提高路由器计算路由表的速度。
  当一个OSPF的区域只存在一个区域出口点时,我们可以将该区域配置成一个残域,在这时, 该区域的边界路由器会对域内广播默认路由信息。需要注意的是, 一个残域中的所有路由器都必须知道自身属于该残域,否则残域的设置没有作用。另外, 针对残域还有两点需要注意:一是残域中不允许存在虚拟链路;二是残域中不允许存在AS边界路由器。
6.OSPF协议路由器及链路状态数据包分类
6.1 OSPF路由器分类
当一个AS划分成几个OSPF区域时,根据一个路由器在相应的区域之内的作用, 可以将OSPF路由器作如下分类:
内部路由器:当一个OSPF路由器上所有直联的链路都处于同一个区域时,我们称这种路由器为内部路由器。 内部路由器上仅仅运行其所属区域的OSPF运算法则。
区域边界路由器:当一个路由器与多个区域相连时,我们称之为区域边界路由器。 区域边界路由器运行与其相连的所有区域定义的OSPF运算法则,具有相连的每一个区域的网络结构数据, 并且了解如何将该区域的链路状态信息广播至骨干区域,再由骨干区域转发至其余区域。
AS边界路由器:AS边界路由器是与AS外部的路由器互相交换路由信息的OSPF路由器, 该路由器在AS内部广播其所得到的AS外部路由信息;这样AS内部的所有路由器都知道至AS边界路由器的路由信息。 AS边界路由器的定义是与前面几种路由器的定义相独立的,一个AS 边界路由器可以是一个区域内部路由器或是一个区域边界路由器。
指定路由器-DR:在一个广播性的、多接入的网络(例如Ethernet、TokenRing及FDDI环境)中, 存在一个指定路由器(Designated Router),指定路由器主要在OSPF协议中完成如下工作:
指定路由器产生用于描述所处的网段的链路数据包-network link, 该数据包里包含在该网段上所有的路由器,包括指定路由器本身的状态信息。
指定路由器与所有与其处于同一网段上的OSPF路由器建立相邻关系。 由于OSPF路由器之间通过建立相邻关系及以后的flooding来进行链路状态数据库是同步的,因此, 我们可以说指定路由器处于一个网段的中心地位。
需要说明的是,指定路由器DR的定义与前面所定义的几种路由器是不同的。 DR的选择是通过OSPF的Hello数据包来完成的,在OSPF路由协议初始化的过程中, 会通过Hello数据包在一个广播性网段上选出一个ID最大的路由器作为指定路由器DR, 并且选出ID次大的路由器作为备份指定路由器BDR,BDR在DR发生故障后能自动替代DR的所有工作。 当一个网段上的DR和BDR选择产生后,该网段上的其余所有路由器都只与DR及BDR建立相邻关系。在这里, 一个路由器的ID是指向该路由器的标识,一般是指该路由器的环回端口或是该路由器上的最小的IP地址。
6.2 OSPF链路状态广播数据包种类
随着OSPF路由器种类概念的引入,OSPF路由协议又对其链路状态广播数据包(LSA)作出了分类。
OSPF将链路状态广播数据包共分成5类,分别为:
类型1:又被称为路由器链路信息数据包(Router Link),所有的OSPF路由器都会产生这种数据包,
用于描述路由器上联接到某一个区域的链路或是某一端口的状态信息。
路由器链路信息数据包只会在某一个特定的区域内广播,而不会广播至其它的区域。
在类型1的链路数据包中,OSPF路由器通过对数据包中某些特定数据位的设定, 告诉其余的路由器自身是一个区域边界路由器或是一个AS边界路由器。并且, 类型1的链路状态数据包在描述其所联接的链路时,会根据各链路所联接的网络类型对各链路打上链路标识, Link ID。表一列出了常见的链路类型及链路标识。
链路类型 具体描述 链路标识
1 用于描述点对点的网络 相邻路由器的路由器标识
2 用于描述至一个广播性网络的链路 DR的端口地址
3 用于描述至非穿透网络,即stub网络的链路 stub网络的网络号码
4 用于描述虚拟链路 相邻路由器的路由器标识
表格1: 链路类型及链路标识
类型2:又被称为网络链路信息数据包(Network Link)。网络链路信息数据包是由指定路由器产生的, 在一个广播性的、多点接入的网络,例如以太网、令牌环网及FDDI网络环境中, 这种链路状态数据包用来描述该网段上所联接的所有路由器的状态信息。
指定路由器DR只有在与至少一个路由器建立相邻关系后才会产生网络链路信息数据包, 在该数据包中含有对所有已经与DR建立相邻关系的路由器的描述,包括DR路由器本身。 类型2的链路信息只会在包含DR所处的广播性网络的区域中广播,不会广播至其余的OSPF路由区域。
类型3和类型4:类型3和类型4的链路状态广播在OSPF路由协议中又称为总结链路信息数据包(Summary Link), 该链路状态广播是由区域边界路由器或AS边界路由器产生的。Summary Link描述的是到某一个区域外部的路由信息, 这一个目的地地址必须是同一个AS中。Summary Link也只会在某一个特定的区域内广播。 类型3与类型4两种总结性链路信息的区别在于,类型3是由区域边界路由器产生的, 用于描述到同一个AS中不同区域之间的链路状态;而类型4是由AS边界路由器产生的, 用于描述不同AS的链路状态信息。
值得一提的是,只有类型3的Summary Link才能广播进一个残域,因为在一个残域中不允许存在AS边界路由器。 残域的区域边界路由器产生一条默认的Summary Link对域内广播,从而在其余路由器上产生一条默认路由信息。 采用Summary Link可以减小残域中路由器的链路状态数据库的大小,进而减少对路由器资源的利用, 提高路由器的运算速度。
类型5:类型5的链路状态广播称为AS外部链路状态信息数据包。类型5的链路数据包是由AS边界路由器产生的, 用于描述到AS外的目的地的路由信息,该数据包会在AS中除残域以外的所有区域中广播。一般来说, 这种链路状态信息描述的是到AS外部某一特定网络的路由信息,在这种情况下, 类型5的链路状枋数据包的链路标识采用的是目的地网络的IP地址;在某些情况下, AS边界路由器可以对AS内部广播默认路由信息,在这时, 类型5的链路广播数据包的链路标识采用的是默认网络号码0.0.0.0。
7.OSPF协议工作过程
  OSPF路由协议针对每一个区域分别运行一套独立的计算法则,对于ABR来说, 由于一个区域边界路由器同时与几个区域相联,因此一个区域边界路由器上会同时运行几套OSPF计算方法, 每一个方法针对一个OSPF区域。下面对OSPF协议运算的全过程作一概括性的描述。