OSPF基础知识详解(一)
1、OSPF简介
开放式最短路径优先OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol)。
目前针对IPv4协议使用的是OSPF Version 2(RFC2328);针对IPv6协议使用OSPF Version 3(RFC2740)。如无特殊说明,本文中所指的OSPF均为OSPF Version 2。
在OSPF出现前,网络上广泛使用RIP(Routing Information Protocol,路由信息协议)作为内部网关协议。
由于RIP是基于距离矢量算法的路由协议,存在着收敛慢、路由环路、可扩展性差等问题,所以逐渐被OSPF取代。
RIP的特点:基于距离矢量算法,以跳数作为度量方式,忽略带宽的影响;RIP的跳数限制为15个,限制了RIP的网络规模; 按照路由通告进行路由更新和选择,路由器不了解整个网络拓扑,容易产生路由环路; 收敛速度慢,路由更新会经历一段抑制和垃圾收集期,容易导致路由器之间的路由不一致; 不能处理可变长子网掩码(VLSM)。
OSPF采用组播形式收发报文,这样可以减少对其它不运行OSPF路由设备的影响。
OSPF支持无类型域间选路(CIDR)。
OSPF支持对等价路由进行负载分担。
OSPF支持报文加密。
由于OSPF具有以上优势,使得OSPF作为优秀的内部网关协议被快速接受并广泛使用。
2、OSPF特点
OSPF协议具有以下特点:
1、OSPF把自治系统AS(Autonomous System)划分成逻辑意义上的一个或多个区域;
2、OSPF通过LSA(Link State Advertisement,链路状态通告)的形式发布路由;
3、OSPF依靠在OSPF区域内各设备间交互OSPF报文来达到路由信息的统一;
4、OSPF报文封装在IP报文内,可以采用单播或组播的形式发送。
OSPF基于链路状态,以链路开销作为度量方式,并把带宽作为参考值,度量方式更科学;没有跳数限制,适用的网络规模更大;每台路由器都能够掌握全网拓扑,通过最短路径优先算法SPF(Shortest Path First)计算路由,不会产生路由环路;收敛速度快,因为路由更新是及时的,并且能够快速传递到整个网络;能够处理VLSM,灵活进行IP地址分配。
在OSPF网络中,每台路由器根据自己周围的网络拓扑结构生成链路状态通告LSA(Link State Advertisement),并通过更新报文将LSA发送给网络中的其它路由器。
与RIP不同,OSPF交互的是链路状态信息,RIP交互的是路由。也就是说,RIP中,路由器的选路依赖于邻居路由器的路由信息,不管邻居路由器传达的信息是否正确;而OSPF中,路由器的选路是一种“自主行为”,LSA只是一种选路的参考信息。
图1 通过LSDB掌握全网的拓扑结构
每台路由器都通过链路状态数据库LSDB(Link State DataBase)掌握全网的拓扑结构。如图1所示,每台路由器都会收集其它路由器发来的LSA,所有的LSA放在一起便组成了链路状态数据库LSDB。LSA是对路由器周围网络拓扑结构的描述,LSDB则是对整个自治系统的网络拓扑结构的描述。
路由器将LSDB转换成一张带权的有向图,这张图便是对整个网络拓扑结构的真实反映。在网络拓扑稳定的情况下,各个路由器得到的有向图是完全相同的。
图2 根据SPF计算到达目的网络的路径
路由器根据最短路径优先(Shortest Path First)算法计算到达目的网络的路径,而不是根据路由通告来获取路由信息。如图2所示,每台路由器根据有向图,使用SPF算法计算出一棵以自己为根的最短路径树,这棵树给出了到自治系统中各节点的路由。相对于RIP,这种机制极大地提升了路由器的自主选路能力,使得路由器不再依靠路由通告进行选路
1、Hello报文
周期性发送,用来发现和维持OSPF邻居关系。
邻居发现:使能了OSPF功能的接口会周期性地发送Hello报文,与网络中其他收到Hello报文的路由器协商报文中的指定参数,决定是否建立邻居关系。
建立双向通信:如果路由器发现收到的Hello报文的邻居列表中有自己Router ID,则认为已经和对端建立了双向通信,邻居关系建立。
指定DR和BDR:Hello报文包含DR优先级和Router ID等信息,每台路由器将自己选出的DR和BDR写入Hello报文的DR和BDR字段中,然后进行DR和BDR的选举。
保活:在建立邻居关系后,使能OSPF功能的接口仍周期性地发送Hello报文维护邻居关系,如果在一定的时间间隔内没有收到邻居发来的Hello报文,则中断邻居关系。
2、DD报文(DatabASe Description packet)
描述本地LSDB(Link State DatabASe)的摘要信息,用于两台设备进行数据库同步。
两台路由器在邻接关系初始化时,DD报文(Database Description packet)用来协商主从关系,此时报文中不包含LSA的Header。在两台路由器交换DD报文的过程中,一台为Master,另一台为Slave。由Master规定起始序列号,每发送一个DD报文序列号加1,Slave方使用Master的序列号作为确认。
邻接关系建立之后,路由器使用DD报文描述本端路由器的LSDB,进行数据库同步。DD报文里包括LSDB中每一条LSA的Header(LSA的Header可以唯一标识一条LSA),即所有LSA的摘要信息。LSA Header只占一条LSA的整个数据量的一小部分,这样可以减少路由器之间的协议报文流量。对端路由器根据LSA Header就可以判断出是否已有这条LSA。
3、LSR报文(Link State Request packet)
用于向对方请求所需的LSA。设备只有在OSPF邻居双方成功交换DD报文后才会向对方发出LSR报文。LSR报文里包括所需要的LSA的摘要信息。
4、LSU报文(Link State Update packet)
LSU报文(Link State Update packet)用来向对端路由器发送其所需要的LSA或者泛洪本端更新的LSA,其报文内容是多条完整的LSA的集合。为了实现泛洪的可靠性传输,需要LSAck报文对其进行确认,对没有收到确认报文的LSA进行重传,重传的LSA是直接发送到邻居的。
5、LSAck报文(Link State Acknowledgment packet)
用来对收到的LSA进行确认,内容是需要确认的LSA的Header。一个LSAck报文可对多个LSA进行确认。
4、OSPF基本概念
1、路由ID
一台运行OSPF协议的路由中每个OSPF进程必须指定一个用于标识本地路由设备的Router ID,是一个32比特无符号的整数。在一个AS中必须唯一,但在同一台路由设备的不同进程(不同进程可以理解为不同的路由协议路由)中可以相同。
2、路由域(AS或自治系统)
路由域(Routing Domain),由运行同一种路由协议并且被同一组织机构管理的一组路由设备组成。同一个AS中的所有路由设备必须运行相同的路由协议,且彼此相连(中间不能被其他协议、路由域所间断),分配相同的AS号。
在OSPF网络中,只有在同一个AS中的路由设备才会相互交换链路状态信息,所有的OSPF路由设备都维护一个相同的AS结果描述(AS中各区域间的连接关系)的数据库。该数据库中存放的是路由域中相应的链路状态信息,OSPF通过该数据库来计算路由表。
3、区域(Area)
随着网络规模日益扩大,当一个大型网络中的路由器都运行OSPF路由协议时,会出现以下问题:
网络拓扑发生变化概率增大,LSA泛洪严重,降低网络带宽利用率;路由器数量增多,LSDB庞大,占用大量存储空间,并使得运行SPF算法的复杂度增加;每台路由器需要维护的路由表越来越大。
在大中型网络中,路由设备可能非常多,如果不进行Area划分的话,则整个网络中的所有设备都要彼此学习路由信息,最终生成的路由信息库可能非常庞大,这样会大大消耗设备的存储空间,更不利于进行高效的路由选择。
OSPF协议通过将自治系统划分成不同的区域,将LSA泛洪限制在一个区域内,提高网络的利用率和路由的收敛速率;每个区域内的路由器数量减少,维护的LSDB规模降低,SPF计算也仅限于区域内的LSA;每台路由器需要维护的路由表也越来越小。 此外,多区域提高了网络的扩展性,有利于组建大规模的网络。
区域是从逻辑上将路由器划分为不同的组,Area是在一个AS内部划分的多个不同位置或者不同角色的一组路由设备单元,每个OSPF路由设备只能在Area内部学习到完整的链路状态信息。
每个区域用区域号(Area ID)来标识。
OSPF的区域边界是设备接口(IS-IS是链路),即一个网段只能属于同一个区域,即路由设备之间直接相连的链路两端接口必须属于同一区域(IS-IS两端属于不同区域),或者说每个运行OSPF的接口必须指明属于哪一个区域。。
划分区域后,可以在区域边界路由设备上进行路由聚合,不同区域之间仅向外通告其聚合路由,这样可大大减少LSA(链路状态通告)数量以及最小化网络拓扑变化带来的影响。
在OSPF中,除了普通区域外还可以设置多种特殊区域,如骨干区域(固定为Area0)、Stub(末梢)区域、Totally Stub(完全末梢)区域、NSSA(非纯末梢)区域、Totally NSSA(完全非纯)区域,这些特殊区域将在后面一一介绍。
在了解OSPF区域之前,需要先了解与区域相关的两个概念:路由设备类型和路由类型。
OSPF基础知识详解(二)https://www.wlgly.net/post-194.html
发表评论