链路类型 具体描述 链路标识 1 用于描述点对点的网络 相邻路由器的路由器标识 2 用于描述至一个广播性网络的链路 DR的端口地址 3 用于描述至非穿透网络,即stub网络的链路 stub网络的网络号码 4 用于描述虚拟链路 相邻路由器的路由器标识
——类型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协议运算的全过程作一概括性的描述。
7.1 区域内部路由
——当一个OSPF路由器初始化时,首先初始化路由器自身的协议数据库,然后等待低层次协议(数据链路
层)提示端口是否处于工作状态。
——如果低层协议得知一个端口处于工作状态时,OSPF会通过其Hello协议数据包与其余的OSPF路由器建
立交互关系。一个OSPF路由器向其相邻路由器发送Hello数据包,如果接收到某一路由器返回的Hello数据
包,则在这两个OSPF路由器之间建立起OSPF交互关系,这个过程在OSPF中被称为adjacency。在广播性网
络或是在点对点的网络环境中,OSPF协议通过Hello数据包自动地发现其相邻路由器,在这时,OSPF路由
器将Hello数据包发送至一特殊的多点广播地址,该多点广播地址为ALLSPFRouters。在一些非广播性的网
络环境中,我们需要经过某些设置来发现OSPF相邻路由器。在多接入的环境中,例如以太网的环境,
Hello协议数据包还可以用于选择该网络中的指定路由器DR。
——一个OSPF路由器会与其新发现的相邻路由器建立OSPF的adjacency,并且在一对OSPF路由器之间作链
路状态数据库的同步。在多接入的网络环增中,非DR的OSPF路由器只会与指定路由器DR建立adjacency,
并且作数据库的同步。OSPF协议数据包的接收及发送正是在一对OSPF的adjacency间进行的。
——OSPF路由器周期性地产生与其相联的所有链路的状态信息,有时这些信息也被称为链路状态广播LSA
(Link State Advertisement)。当路由器相联接的链路状态发生改变时,路由器也会产生链路状态广播
信息,所有这些广播数据是通过Flood的方式在某一个OSPF区域内进行的。Flooding算法是一个非常可靠
的计算过程,它保证在同一个OSPF区域内的所有路由器都具有一个相同的OSPF数据库。根据这个数据库,
OSPF路由器会将自身作为根,计算出一个最短路径树,然后,该路由器会根据最短路径树产生自己的OSPF
路由表。
7.2 建立OSPF交互关系adjacency
——OSPF路由协议通过建立交互关系来交换路由信息,但是并不是所有相邻的路由器会建立OSPF交互关系
。下面将OSPF建立adjacency的过程简要介绍一下。
——OSPF协议是通过Hello协议数据包来建立及维护相邻关系的,同时也用其来保证相邻路由器之间的双
向通信。OSPF路由器会周期性地发送Hello数据包,当这个路由器看到自身被列于其它路由器的Hello数据
包里时,这两个路由器之间会建立起双向通信。在多接入的环境中,Hello数据包还用于发现指定路由器
DR,通过DR来控制与哪些路由器建立交互关系。
——两个OSPF路由器建立双向通信这后的第二个步骤是进行数据库的同步,数据库同步是所有链路状态路
由协议的最大的共性。在OSPF路由协议中,数据库同步关系仅仅在建立交互关系的路由器之间保持。
——OSPF的数据库同步是通过OSPF数据库描述数据包(Database Description Packets)来进行的。OSPF
路由器周期性地产生数据库描述数据包,该数据包是有序的,即附带有序列号,并将这些数据包对相邻路
由器广播。相邻路由器可以根据数据库描述数据包的序列号与自身数据库的数据作比较,若发现接收到的
数据比数据库内的数据序列号大,则相邻路由器会针对序列号较大的数据发出请求,并用请求得到的数据
来更新其链路状态数据库。
——我们可以将OSPF相邻路由器从发送Hello数据包,建立数据库同步至建立完全的OSPF交互关系的过程
分成几个不同的状态,分别为:
——Down:这是OSPF建立交互关系的初始化状态,表示在一定时间之内没有接收到从某一相邻路由器发送
来的信息。在非广播性的网络环境内,OSPF路由器还可能对处于Down状态的路由器发送Hello数据包。
——Attempt:该状态仅在NBMA环境,例如帧中继、X.25或ATM环境中有效,表示在一定时间内没有接收到
某一相邻路由器的信息,但是OSPF路由器仍必须通过以一个较低的频率向该相邻路由器发送Hello数据包
来保持联系。
——Init:在该状态时,OSPF路由器已经接收到相邻路由器发送来的Hello数据包,但自身的IP地址并没
有出现在该Hello数据包内,也就是说,双方的双向通信还没有建立起来。
——2-Way:这个状态可以说是建立交互方式真正的开始步骤。在这个状态,路由器看到自身已经处于相
邻路由器的Hello数据包内,双向通信已经建立。指定路由器及备份指定路由器的选择正是在这个状态完
成的。在这个状态,OSPF路由器还可以根据其中的一个路由器是否指定路由器或是根据链路是否点对点或
虚拟链路来决定是否建立交互关系。
——Exstart:这个状态是建立交互状态的第一个步骤。在这个状态,路由器要决定用于数据交换的初始
的数据库描述数据包的序列号,以保证路由器得到的永远是最新的链路状态信息。同时,在这个状态路由
器还必须决定路由器之间的主备关系,处于主控地位的路由器会向处于备份地位的路由器请求链路状态信
息。
——Exchange:在这个状态,路由器向相邻的OSPF路由器发送数据库描述数据包来交换链路状态信息,每
一个数据包都有一个数据包序列号。在这个状态,路由器还有可能向相邻路由器发送链路状态请求数据包
来请求其相应数据。从这个状态开始,我们说OSPF处于Flood状态。
——Loading:在loading状态,OSPF路由器会就其发现的相邻路由器的新的链路状态数据及自身的已经过
期的数据向相邻路由器提出请求,并等待相邻路由器的回答。
——Full:这是两个OSPF路由器建立交互关系的最后一个状态,在这时,建立起交互关系的路由器之间已
经完成了数据库同步的工作,它们的链路状态数据库已经一致。
7.3 域间路由
——前面一节描述了OSPF路由协议的单个区域中的计算过程。在单个OSPF区域中,OSPF路由协议不会产生
更多的路由信息。为了与其余区域中的OSPF路由器通讯,该区域的边界路由器会产生一些其它的信息对域
内广播,这些附加信息描绘了在同一个AS中的其它区域的路由信息。具体路由信息交换过程如下:
——在OSPF的定义中,所有的区域都必须与区域0相联,因此每一个区域都必须有一个区域边界路由器与
区域0相联,这一个区域边界路由器会将其相联接的区域内部结构数据通过Summary Link广播至区域0,也
就是广播至所有其它区域的边界路由器。在这时,与区域0相联的边界路由器上有区域0及其它所有区域的
链路状态信息,通过这些信息,这些边界路由器能够计算出至相应目的地的路由,并将这些路由信息广播
至与其相联接的区域,以便让该区域内部的路由器找到与区域外部通信的最佳路由。
7.4 AS外部路由
——一个自治域AS的边界路由器会将AS外部路由信息广播至整个AS中除了残域的所有区域。为了使这些AS
外部路由信息生效,AS内部的所有的路由器(除残域内的路由器)都必须知道AS边界路由器的位置,该路
由信息是由非残域的区域边界路由器对域内广播的,其链路广播数据包的类型为类型4。
8.OSPF路由协议验证
——在OSPF路由协议中,所有的路由信息交换都必须经过验证。在前文所描述的OSPF协议数据包结构中,
包含有一个验证域及一个64位长度的验证数据域,用于特定的验证方式的计算。
——OSPF数据交换的验证是基于每一个区域来定义的,也就是说,当在某一个区域的一个路由器上定义了
一种验证方式时,必须在该区域的所有路由器上定义相同的协议验证方式。另外一些与验证相关的参数也
可以基于每一个端口来定义,例如当采用单一口令验证时,我们可以对某一区域内部的每一个网络设置不
同的口令字。
——在OSPF路由协议的定义中,初始定义了两种协议验证方式,方式0及方式1,分别介绍如下:
——验证方式0:采用验证方式0表示OSPF对所交换的路由信息不验证。在OSPF的数据包头内64位的验证数
据位可以包含任何数据,OSPF接收到路由数据后对数据包头内的验证数据位不作任何处理。
——验证方式1:验证方式1为简单口令字验证。这种验证方式是基于一个区域内的每一个网络来定义的,
每一个发送至该网络的数据包的包头内都必须具有相同的64位长度的验证数据位,也就是说验证方式1的
口令字长度为64bits,或者为8个字符。
9.小结
——前文介绍了OSPF路由协议的概念及该协议的工作原理。OSPF路由协议定义于RFC1247及RFC1583,该协
议提供了一个不同的网络通过同一种TCP/IP协议交换网络信息的途径。作为一种链路状态的路由协议,
OSPF具备许多优点:快速收敛,支持变长网络屏蔽码,支持CIDR以及地址summary,具有层次化的网络结
构,支持路由信息验证等。所有这些特点保证了OSPF路由协议能够被应用到大型的、复杂的网络环境中 |