接下来,就要隆重介绍下动态路由协议中的当红炸子鸡—OSPF(Open Shortest Path First,开放最短路径优先)啦!
与RIP不同,OSPF是一种链路状态路由协议,它可以收集路由器周边的拓扑变化,并形成一个靠谱的路由结构。
如果说RIP提供的是路标,只告诉你下一步该怎么走,转来转去还是容易迷路(产生环路)。那么OSPF提供的就是地图了,每个运行OSPF协议的路由器上都有一张完整的网络图。地图在手,迷路不再有!
OSPF的花费(cost)可以是路由距离、链路的吞吐量或链路的可靠性,这种路由度量相比于RIP协议的跳数更加灵活和准确,并且适用于更大更复杂的网络。
以下图所示的网络为例,说明OSPF计算出路由的过程。
下图是由四台路由器组成的网络,连线旁边标注了从一台路由器到另一台路由器所需要的花费(cost)。为简化问题,我们假定同一链路连接的两台路由器之间互相发送报文所需花费是相同的。
首先,每台路由器都根据自己周围的网络拓扑结构生成一条LSA(链路状态广播),并通过相互之间发送OSPF协议报文将这条LSA发送给网络中其他所有的路由器。这样每台路由器都收到了其他路由器的LSA。将所有的LSA放在一起称作LSDB(链路状态数据库)。显然,这四台路由器的LSDB都是相同的。
其次,由于一条LSA是对一台路由器周围网络拓扑结构的描述,那么LSDB则是对整个网络拓扑结构的描述。路由器将LSDB转换成一张矢量权重图,这张图便是对整个网络拓扑结构的真实反映。那么,这四台路由器得到的是一张完全相同的图。
最后也是最重要的是,每台路由器都会以自己为根节点,使用最短路径优先(SPF)算法计算出一颗最短路径树(选择cost值最小的那条路径),通过最短路径树生成到网络中其他路由器的最短路由,形成路由表。这4台路由器各自得到的路由表是不同的。
从上面的分析可以得出,OSPF协议计算出路由主要有以下3个主要步骤。
- 描述本路由器周边的网络拓扑结构,并生成LSA。
- 将自己生成的LSA在自治系统里传播,并同时收集所有的其他路由器生成的LSA。