5.3.3 因特网的路由协议(三)OSPF协议

前面我们学习了基于距离向量算法的路由信息协议RIP(5.3.2 因特网的路由协议(二)基于距离向量算法的RIP协议),为了克服RIP协议的局限性于是就有了新的内部网关协议OSPF协议,OSPF是Open Shortest Path First的缩写,又被成为开放式最短路径优先协议,最短路径优先是因为使用了Dijkstra提出的最短路径算法SPF,这个协议在选择路径的时候是基于链路的状态

一、链路状态

链路状态是指链路中一台路由器都和那些路由器相邻,以及该链路的带宽、延时、线路负荷等因素的综合,也就是说他会为每条链路去计算出它的代价,又称为Cost,综合考虑了链路状态以后OSPF将利用Dijkstra算法来选择最佳路径。

二、OSPF路由信息交换

我们知道在RIP中当前路由器只和邻居路由器去交换信息,而OSPF协议则不同,他会把链路的状态信息去通知自治系统中所有的路由器知道。那它又是如何去通知呢?其实OSPF采用的是一种洪泛法,所谓的洪泛法顾名思义就像洪水泛滥一样以当前路由器为中心把消息向四周传递,直到所有的路由器都得知了这个消息。下面我们来演示一下OSPF用洪泛法进行路由器间链路状态信息的交换的过程。

如图

ospf协议划分区域 ospf协议三个要点_链路

我们从图中看到是一个由路由器A、B、C、D四台路由器所连接形成的自治系统,经过初始化之后路由器A作为源路由器,根据洪泛法的规则,A首先将自身的链路状态信息传送给与它相邻的B与C,当然我们并没有把链路状态中所有包含内容写在上面,实际上应该还包含有与A相连的链路Cost(代价)是多少等等,B与C再将A传来的链路状态信息与自己相邻的路由器D,这样的过程就是利用洪泛法进行链路状态信息交换的过程。当网络中路由器全部相互交换过链路状态以后,OSPF会使每台路由器根据链路状态生成本自治系统的一个拓扑结构,并且也知道自己在拓扑结构中的哪个位置。图中每个方框标记的就是每个路由器在自治系统中的位置。

三、OSPF协议特点
  1. OSPF对不同的链路可以根据链路的带宽等因素设置成不同的代价,在选择走那条路的时候它不像RIP一样去选择一条经过路由器数量最少的路,而是选择了一条总的代价最低的路。
  2. 特殊情况是,如果两条路相同的情况下OSPF协议会把数据报平均分配给这两条路径,也就是说OSPF可以实现多路径间的负载平衡。
  3. 当和某个路由器相邻的链路状态发生变化的时候当前路由器会采用洪泛法去通知所有的路由器去知道这个消息。
  4. OSPF规定每隔一段时间比如30分钟就会刷新一次数据库中的链路状态。
  5. OSPF与RIP相比最大的优点就是当互联规模很大的时候由于OSPF是基于链路状态所以他只会涉及到与相邻路由器的连通的状态,而与整个互联网的规模并没有直接的关系,也解决了RIP协议解决不了的难题。

实际上如果说自治系统的规模也就是网络数量比较多的情况下,在OSPF中还可以划分成若干个区域(Area)

如图

ospf协议划分区域 ospf协议三个要点_链路_02

在图中的自治系统中划分了4个区域,其中周围的三个是一般的区域,中间部分是主干区域。这样做的好处是把采用洪泛法去通知链路状态的范围缩小到了一个区域内的所有的路由器。每个区域内的路由器只知道本区域的拓扑结构。区域和区域之间的路由选择是通过区域边界路由器R3、R4、R7和主干区域的路由器来完成的。