研究OSPF数据结构( 二 )


HELLO报文也包括最近已与其联系过的其他路由器列表(使用它们自己惟一的路由器ID) 。这个Neighbor(相邻者)域使邻居发现过程成为可能 。HELLO报文还包括几个其他的域,如DesignatedRouter(指定路由器)、BackupDesignatedRouter(备份指定路由器)和其他一些域 。这些域对于维护连接性,支持OSPF网络的稳定周期和收敛都是有用的 。DesignatedRouter和BackupDesignatedRouter的用处将在本章后面的节中描述 。
2数据库描述报文
当OSPF中的两个路由器初始化连接时要交换数据库描述(DD)报文 。这个报文类型用于描述,而非实际地传送OSPF路由器的链路-状态数据库内容 。由于数据库的内容可能相当长,所以可能需要多个数据库描述报文来描述整个数据库 。实际上,保留了一个域用于标识数据库描述报文序列 。接收方对报文的重新排序使其能够真实地复制数据库描述报文 。
DD交换过程按询问/应答方式进行,在这个过程中,一个路由器作为主路由器 。另一个路由器作为从路由器,主路由器向从路由器发送它的路由表内容 。显然,主从之间的关系会因每个DD交换的不同而不同 。网络中的所有路由器会在不同时刻作用,在这个过程中既可能是主又可能是从 。
3链路-状态请求报文
OSPF报文的第三种类型为链路-状态请求报文 。这个报文用于请求相邻路由器链路-状态数据库中的一部分数据 。表面上讲,在收到一个DD更新报文之后,OSPF路由器可以发现相邻信息不是比自己的更新就是比自己的更完全 。假如是这样,路由器会发送一个或几个链路-状态请求报文给它的邻居(具有更新信息的路由器)以得到更多的链路状态信息 。
请求的信息必须是非常具体的 。它必须使用下面的标准规范指明所要求的数据:
?链路-状态(LS)类型号(1到5) 。
?LS标识 。
?通告路由器 。
这些规范一起指明了一个具体的OSPF数据库子集,而不是它的一个事例 。一个事例是与信息相同的子集,这个子集带有暂时边界(也就是时戳) 。记住,OSPF是一个动态路由协议,它能对网络中链路状态的变化自动作出反应 。因此,LS请求的接收者把对这些特定路由信息解释为最新数据 。
4链路-状态更新报文
链路-状态更新报文用于把LSA发送给它的相邻节点 。这些更新报文是用于对LSA请求的应答 。有5种不同的LSA报文类型 。这些报文类型用从1到5的类型号标识 。
注重由于OSPF通常把链路-状态广播看作LSA,因此会存在潜在的混淆 。然而,实际上用于更新路由表的机制为链路-状态更新报文—简记为LSU 。还有另一个报文结构,链路-状态应答报文,简写为LSA;由于一些不可知的原因,这种报文称为链路-状态应答,而LSA通常是指更新报文 。
这些报文类型及其LSA号,如下所述:
?RauterLSA(路由器LSA)(类型1)—路由器LSA描述了路由器链路到区的状态和耗费 。所有这样的链路必须在一个LSA报文中进行描述 。同时,路由器必须为它属于的每个区产生一个路由器LSA 。所以,区边界路由器将产生多个路由器LSA,而区内的路由器只需产生一个这样的更新 。
?NetworkLSA(网络LSA)(类型2)—网络LSA与路由器LSA相似,它描述的是连接进网络的所有路由器的链路状态和耗费信息 。二者的区别是网络LSA是网络中所有链路-状态和耗费信息的总和 。只有网络的指定路由器记录这个信息,并由它来产生网络LSA 。
?SummaryLSA-IPNetwork(汇总LSA-IP网络)(类型3)—使用汇总LSA-IP这个名字有些不灵活,因此OSPF的设计者采用了编号策略来记LSA!只有OSPF网络中的区边界路由器能产生这种LSA类型 。使用这种LSA类型把一个区的汇总路由信息和OSPF网络中相邻区路由器信息进行交换 。它经常汇总缺省的路由而不是传播汇总的OSPF信息至其他网络 。

推荐阅读