- 开放最短路径优先OSPF(Open Shortest Path First)是为克服RIP的缺点在1089年开发出来的。
- 开放表明OSPF协议不是受某一家厂商控制,而是公开发表的。
- 最短路径优先是因为使用了Dijkstra提出的最短路径算法SPF
- OSPF是基于链路状态的,而不像RIP那样基于距离向量
- OSPF采用SPF算法计算你路有个,从算法上保证不会出现路由环路。
- OSPF不限制网络规模,更新效率高,收敛速度快。
链路状态是指本路由器都和哪些路由器相邻,以及相应链路的代价。
- “代价是”用来表示费用、距离、时延、带宽,等等。这些都是由网络管理人员来决定。
举例:
思科路由器中OSPF计算代价的方法:100Mbps/链路带宽
计算结果小于1的值仍记为1;大于1且有小数的,舍去小数。OSPF相邻路由器之间通过交互问候(Hello)分组,建立和维护邻居关系。
- Hello分组封装在IP数据报中,发往组播地址 224.0.0.5;
IP数据报字段的取值应为89,来表明IP数据报的数据载荷为OSPF分组
- Hello分组发送周期为10秒
- 40秒未收到来自邻居路由器的Hello分组,则认为该邻居路由器不可达。
- 每一个路由器都会维护一张邻居表:
R1收到R2的Hello分组,重启40秒死亡倒计时,若到计时未0时,则判定该邻居路由器不可达
- 使用OSPF的每个路由器都会产生链路状态通告LSA。LSA中包含以下内容:
- 直连网络的链路状态信息
- 邻居路由器的链路状态信息
- LSA被封装在链路状态更新分组LSU中,采用洪泛法发送。
- 使用OSPF的每个路由器都有一个链路状态数据库LSDB,用于存储LSA。
- 通过各路由器洪泛发送封装有自己LSA的LSU分组,各路由器的LSDB最终将达到一致
- 使用OSPF的个路由器基于LSDB进行最短路径优先SPF计算,构建出各自到达其他各路由器的最短路径,即构建各自的路由表。
- OSPF有以下五种分组类型:
- 类型1,问候分组
用来发现和维护邻居路由器的可达性。
- 类型2,数据库描述分组
向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息
- 类型3,链路状态请求分组
向邻居路由器请求发送某些链路状态项目的详细信息。
- 类型4,链路状态更新分组
路由器使用这种分组将其链路状态进行洪泛发送,即用洪范法对全网更新链路状态。
- 类型4,链路状态确认分组
这是对链路状态更新分组的确认分组。
- OSPF的基本工作过程
- 周期性发送问候分组:建立和维护邻居关系
- 建立邻居关系后,给邻居路由器发送数据库描述分组:将自己的链路状态数据库中的所有链路状态摘要信息发送给邻居路由器。
- 收到邻居的数据库描述分组后,若发现自己缺少其中的某些链路状态项目,于是给邻居发送链路状态请求分组 ,邻居收到后,将缺少的链路状态详细信息封装在链路状态更新分组中发送给对方。
- 收到链路状态更新分组后,将自己缺少的链路状态详细信息添加到自己的链路状态数据库中,并给对方发哦是那个链路状态确认分组。
- 通过以上过程,链路状态数据库会达到一致
- 新情况下的链路状态数据库同步同步:
- 每30分钟或链路状态发生变化,路由器都会发送链路状态更新分组,收到给分组的路由器进行洪泛转发,并给该路由器发回链路状态确认分组
- OSPF在多点接入网络中路由器邻居关系的建立
- 在这种网络里,任何两台路由器都是邻居,这样每台路由器都要发巨多问候分组
- 于是,选举指定路由器DR(Designated router)和备用的指定路由器BDR(Bachup Designated router)
- 所有非DR/BDR只与DR/BDR建立邻居关系
- 非DR/BDR之间只能通过DR/BDR交换信息
- DR坏了,BDR顶上
- 为了使OSPF能够用于规模很大的网络OSPF把一个自治系统再划分为若干个更小的范围,叫做区域
- 每个区域都有一个32比特的区域标识符
- 主干区域标识符比喻为0即0.0.0.0
- 主干区域用于联通其它区域
- 其他区域标识符不能为0且互不相同
- 每个区域的规模不应太大
- 把利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个自治系统
- 区域内路由器:路由器所有接口都在一个区域
- 区域边界路由器:一个接口用于连接自身所在区域,另一个接口用于连接主干区域
- 主干路由器:主干区域内的路由器,也可以把区域边界路由器看作主干路由器
- 自治系统边界路由器:主干区域中,专门和本自治系统外的其他自治系统交换路由信息