1 前言
- 开放最短路径优先 OSPF (Open Shortest Path First)是为克服 RIP 的缺点在 1989 年开发出来的,OSPF 的原理很简单,但实现起来却较复杂
- “开放”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的
- “最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法 SPF,采用分布式的链路状态协议 (link state protocol)
2 OSPF协议的三个要点
路由表的更新依赖于路由器之间相互交换信息
- 与谁交换:与本自治系统中所有路由器交换(注意:在RIP协议中只是和相邻路由器交换)
- 交换什么:相邻的所有路由器的链路状态,本路由器和哪些路由器相邻,与相邻路由器的链路的“度量”( metric)
度量:
- 表示费用、距离、带宽、时延等等,这是由网络管理员来决定的,这样用起来灵活很多
- 在RIP协议中的度量,就是”跳数“,就是网络间相隔的路由器的个数
- 何时交换 :只有当链路状态发生变化时才交换(注意:在RIP协议中是定时交换)
3 链路状态路由协议算法
- 图中有A、B、C、D四个路由器分别通过不同的链路相连,通过OSPF协议,他们都会把相邻的路由器的链路状态发送给在本自治系统中的所有其他路由器,那么每台路由器数据库中就保存了在这个自治系统中所有路由器的链路状态,也就是说四个路由器中,都保存了其他三个路由器的链路状态
- 每个路由器根据链路状态数据库,就可以获得本自治系统中的带权有向图
- 以带权有向图为基础,以自己为根节点,来计算到其他节点的最短路径,比如A节点,A节点获取到与各个节点的最短路径后,就得到了A节点的路由表,如图若想到达D路由器,那么要经过C路由器,若想到达B路由器,可直接下一跳到达B路由器
4 区域的概念
- 为了使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干个更小的范围,叫作区域
- 每一个区域都有一个32位的标识符,用点分十进制表示,如下图中
0.0.0.1
就为区域标识符,蓝色部分为整个自治系统,而每个绿色部分就是划分的区域
- 区域不能太大,一个区域内的路由器最好不要超过200个
- 在区域内部可以使用OSPF协议,也就是将原来在整个自治系统中使用OSPF协议生成最短路径图,换成在每个区域内生成最短路径图,各个区域只管自己内部的路由不往外广播链路状态,这样就减少了整个网络的通信量,提高了网络通信效率