2008年12月31日星期三

OSPF路由协议(二)

一、SPF算法
SPF路由算法是OSPF的基础。当一个SPF路由器加电以后,它首先引导自己的路由协议数据组件,然后等待来自底层协议的信息。
当一个路由器确认它的接口正常工作以后,它使用OSPF的Hello协议来获取邻居信息。这些邻居是指有接口在同一网络中的路由器。路由器将hello包发送给它的邻居,并从邻居哪里接收hello包。为了帮助发现邻居,hello包也设置了保持生存计时器,来让路由器知道其他路由器是否可用。

在多播网络中(网络支持两个以上的路由器),Hello协议推选一个指定路由器和一个备用指定路由器。在其他事情中,指定路由器负责为整个多播访问网络产生LSA。指定路由器的存在也是为了缩减网络流量以及缩减拓扑数据库的大小。
当两个邻居的链路状态数据库同步了以后,我们就可以说这两个路由器是邻接状态。在多播访问网络中,指定路由器决定那些路由器应该变成邻接状态。拓扑数据库在邻接路由器之间是同步的。邻接控制了路由协议数据包的发布,这些数据包只能在处于邻接状态的路由器之间发布。
每一个路由器周期性的发送LSA来为它们邻接提供信息或者在一个路由器状态改变的时候通知其他路由器。通过已经确定的邻接和链路状态两者之间的比较(已经确定的邻接即拓扑数据库与最新的链路状态不相同,这样我们就可以判定网络发生了变化),失效的路由器能够迅速的被检测出来,并且网络拓扑也可以被正确的修正。通过从LSA的产生的拓扑数据库,每个路由器能够构建出一个最短路径树,每个路由器本身是这个树的根。这个最短路径树依次产生一个路由表(即这个最短路径树中的到达每个节点的一条路径就是路由表的一个条目)。


二、数据包格式
所有的OSPF数据包都以一个24字节的包头开始,如上图所示
1、版本号:用于标识OSPF的使用版本
2、类型:用于标识OSPF数据报的类型,具体类型如下:
Hello:确定和管理邻居关系
Database description:描述拓扑数据库的内容,这些信息会在一个邻接关系初始化的时候进行交换。
Link-state request:从邻居路由器哪里请求部分拓扑数据库。在一个路由器发现它的拓扑数据库以及过时以后,这些信息会被交换(通过测试数据库描述数据包)
Link-state update:回应一个链路状态请求数据包,这些信息也被用于LSA平常的发布。在一个链路状态更新数据包中可以包含多个LSA。
Link-state acknowledgment:一个链路状态更新数据包的确认(可靠传输)
3、路由器ID:标识包的源路由器
4、区域ID:标识这个包属于那个区域。所有的OSPF数据包属于一个单独的区域
5、校验和:校验整个数据报的内容有没有在传输过程中被损坏
6、认证类型:包含认证类型,所有的OSPF协议交换是被认证的。认证类型是基于每个区域的。每个区域之间可以不同
7、认证:包含认证信息
8、数据:包含封装了的上层的信息
三、其他的一些OSPF功能
这些功能包括:花费等价(equal-cost)、多路径路由和基于上层服务类型的路由请求。基于服务类型(TOS)的路由支持许多上层协议。例如,某一个应用可能需要特定的数据是紧急数据,如果OSPF在它进行传输的时候有高优先级的链路,我们就可以用高优先级的链路来传输这个应用的这些紧急数据。
OSPF支持一个或多个度量,如果只有一个度量被使用,那个会被认为是专有的,并且TOS不会被支持。如果有多于一个度量被使用,三个IP TOS位(延迟、吞吐量throughput、可靠性位)可以产生的八种组合,通过为每个组合使用一个单独的度量(即使用单独的路由表)TOS可以选择性的支持每种组合。例如:如果IP TOS位定义了一个低延迟、低吞吐量但是高可靠性的组合,那么OSPF会基于这个TOS设定,来计算一个通向所有目的地的路由。
IP子网掩码包含在每次目的地的发布中,并且也支持变长子网掩码。通过使用变长子网掩码,一个IP网络可以被分成不同大小的子网。这为网络管理提供了额外的网络配置扩展性。

没有评论:

发表评论