CCNA学习指南 -开放最短路径优先OSPF(单区域)
在上个世纪九十年代撰写的《TCP/IP协议详解 卷一:协议》的动态选路中,内容大部分还是介绍 RIP路由选择信息协议,在互联网络如此发达的今天,RIP因为它的局限性逐步被OSPF取代。
在思科的这本教材中,大篇幅的介绍了OSPF -开放最短路径优先协议,它也和RIP一样,是内部网关协议IGP的一种,但是它也和RIP非常不一样:RIP是距离向量协议,OSPF则是链路状态协议等。
RIP的局限性
RIP,路由信息选择协议,通过定时(一般为30s)向外界传播和获取路由选择表,来更新路由表。
它是一个典型的距离向量协议:根据跳数来确定前往目的网络的路径。
它的局限性也非常的明显,由于要定时向外界传播路由选择表,导致 RIP更新报文 的数量非常之多,这很容易对原本就十分拥塞的网络“火上浇油”。
因此,RIP在低速网络(比如WAN)或者存在大量路由器的网络里 效率极低;在链路速度不相同的网络中,RIP根本不管用。
如今,我们很少能够看到RIP的身影。教材上提及了 重分发,大致上说,重分发就是在 路由选择协议之间 交换路由:比如你可以在老式路由器上使用RIP,在网络其他部分则可以使用OSPF,EIGRP等其他性能好的多的 路由选择协议。
单区域OSPF
OSPF这一块内容,分为 单区域OSPF 和 多区域OSPF,本文主要介绍单区域OPSF(也会提到分层,但是不会细化)。
OSPF(open shortest path first,开放最短路径优先),是一种标准的开发路由选择协议。目前被包括思科在内的众多网络厂商所实现。它灵活而深受欢迎,原因正是因为它开放和标准特征。
工作原理:
思科路由器首先通过Hello报文 和 数据库同步 与邻接路由器建立邻居关系,这种关系允许它们进行路由信息的交换。随后从邻居处获取LSA,得到链路信息状态,存入拓扑数据库。使用Dijkstra算法创建一个最短路径树:从拓扑数据库中获取输入;计算得到最短路径,利用最短路径更新路由表。
它的工作原理使得它汇聚速度非常之快。汇聚:路由选择协议 更新路由表的一部分,所有路由器根据信息更新路由表项完毕,汇聚就结束了。
另外两个重要的优点:和EIGRP一样,支持多条到同一个目的网络的等cost路由(负载均衡);被路由的协议方面,支持IPv4,IPv6。
一些重要的特色:
- 允许创建区域及自主系统AS(在多区域的OSPF中会提到)。
- 最大限度的减少了路由选择更新流量。
- 高度灵活,功能多样,可拓展性极强。
- 支持 VLSM/CIDR 。
- 对跳数没有任何限制(使用cost/带宽作为度量)。
- 属于开放标准,让你能够在网络中部署多个厂商的设备。
说明:OSPF最大的优点是由它的分层决定的:上面提到的 汇聚快,可拓展性极强,减少了路由选择更新。
教材的P265的表格,列举了OSPF和RIP的比较,特征中需要注意的几点:
- OSPF支持VLSM,RIP不支持。
- 度量值:OSPF为cost,或者说是带宽,而RIPv1,RIPv2是距离向量协议,采用的度量是跳数。
- OSPF没有跳数限制。
- OSPF汇聚速度极快。
- OSPF要求把网络分层。
- 如何触发 路由表项的更新:OSPF使用事件触发,RIP是定期(30s)触发。
- 路由算法:OPSF -Dijkstra,RIP -Bellman-Ford。
OSPF最重要的特征就是对分层的支持,这意味着他能够让我们将大型网络划分为多个部分,称为区域。
为什么要采用分层呢?
1)降低路由选择的开销。2)提高汇聚的速度。3)将网络不稳定性限制在单个区域内。
为了实现这些优点,需要付出代价,这也是 OSPF配置起来如此困难的原因。
单区域顾名思义,就是只划分了一个区域,多区域就是划分了多个区域。不管对于多区域还是单区域的OSPF来说,主干区域 -区域0必不可少。
将其他区域连接到主干区域0的路由器:区域边界路由器ABR。这些路由器至少需要一个接口和区域0相连。
将AS连接起来的路由器:自主系统边界路由器 ASBR
注:比如该图中,R2和R3就是 ABR。
理想情况:创建区域 最大限度地减少路由更新,这在大型网络中很重要,这样做的话,可以将问题限制在单个区域内,避免它影响整个网络。
OSPF术语
参考:OSPF的一些重要术语
注意点:
1.文中的邻接关系,即书中的full状态,邻居关系是2WAY状态。
2.OSPF在共享路由方面非常的挑剔,只与与它建立邻居关系的路由器进行共享路由。与哪些邻居建立邻居关系取决于网络类型和路由器的配置。
3.DR的选举:使用route命令手动配置的最优先 -> 启动时活动的loopback环回接口的IP地址中最大的那一个 -> 启动时处于活动状态的最大的物理接口的IP地址
4.流程:建立邻接关系 -> 交换链路信息LSA -> 存入LADB(拓扑数据库) -> Dijkstra算法 -> 得到最短路 -> 更新路由表项。
5.LSA分组用于更新和维护拓扑数据库。
OSPF的工作原理
OSPF工作分为三类:
- 初始化邻居关系
- LSA洪泛
- 计算SPF(shortest path first)树
第一个阶段就是建立邻居关系,这是OSPF操作重要的组成部分,初始化OSPF的时候,路由器给它分配内存,并分配维护邻居表和拓扑表的内存。
确定配置了OSPF的接口之后,路由器将检查这些接口是否处在活跃状态。如果是的话,开始发送Hello报文分组。
Hello协议用于发现邻居,建立邻居关系,以及维护与其他的OSPF路由器的关系。在支持组播的环境中,定期的通过每个启用了OSPF的接口向外发送Hello分组。
OSPF通过使用 LSA泛洪 来交换和共享路由信息。发送LSU分组,在区域内所有OSPF的路由器之间共享包含链路状态数据的LSA信息。
LSA更新创建了网络拓扑图,而泛洪保证所有的OSPF路由器都拥有相同的网络拓扑图。
为实现高效的泛洪,使用了保留的组播地址224.0.0.5(ALLSPFRouters),用于发送更新的组播地址取决于网络类型。
LSA更新泛洪到整个网络之后,每个接收方都必须确认它收到了更新,另外还必须对它进行验证。
计算SPF树,每台路由器都计算前往当前区域中的每个网络的最佳/最短路径。流程:从LSDB获取输入 -> Dijkstra算法 -> 从输出结果获取最短路。
这棵树只包含路由器所属区域的网络,选择最佳路由的时候,OSPF考虑的一个重要指标是:前往网络的每条潜在路径的metric度量和cost成本。SPF不计算前往其他区域的路由。
OSPF度量值,称为成本,思科利用带宽计算成本:10^8/带宽。SPF树的每一个出站接口都有相关联的成本。
注意:让链路两端的路由器上的成本相同,这样OSPF才能运行。
2016/8/28