概述
OSPF(Open Shortest Path First 开放式最短路径优先)协议是IETF为IP网络开发的IGP路由选择协议。它是一种典型的链路状态(link-state)路由协议。在同一个OSPF自 制系统内每一台运行OSPF协议的路由器总是将本地网络的连接状态用LSA描述,并广播到整个自制系统中去。这样,每台路由器都收到了自制系统中所有路由 器生成的LSA,这些LSA的集合组成了LSDB,这样所有的OSPF路由器都维护一个相同的描述自治系统内部结构的数据库。
OSPF路由器在邻居之间并不直接传递路由信息,而是共享“链路状态信息(Link State Advertisement,简称LSA)”(包括接口IP网段、掩码、开销、状态等),而且不只会给邻居发送自己的直连链路链路状态信息,而且还从其他邻居收到的信息进行转发。最后达到区域全部OSPF路由器掌握的链路状态信息同步(一致)。
这些链路状态信息会存放到每个OSPF路由器的数据库中,这个数据库叫Link State Database简称LSDB。
基于LSDB的LSA信息,通过SPF算法(最短路劲优先算法,也叫Djkstra算法)计算出从本地路由器去往网络中各个目的网络的最短无环路劲,简称SPF Tree(SPF树,从树根到树梢,体现的就是最短无环路劲)。
这些最短路劲指向的方向和下一跳地址,就是去往各个目的网段的路由。最终,把这些路由提交到路由器的路由表中。
特征
OSPF属于链路状态路由协议-基于整个网络拓扑的协议,不同于距离矢量(DV)是道听途说的协议。
共有标准(RFC 2328)-OSPF属于开放协议,不同网络设备厂家均可支持。
不依赖于TCP/IP传输层,它有自己独立的传输机制-基于IP协议号89。
高可扩展性、快速收敛-理论上支持一万条路由,单区域30台全网500台左右,收敛速度达到秒级,远远快于RIP。
更高的路由更新机制-触发更新,增量同步,每30分钟才定时更新一次。
属于无类路由协议,支持可变长子网掩码(目前只有RIPv1才不支持)。
支持手动路由汇总(目前只有RIPv1才不支持)。
路由协议认证,防止恶意路由协议欺骗攻击(目前只有RIPv1才不支持)。
层次化区域结构
OSPF采用层次化设计,用AREA来分隔路由器。区域中的路由器保存该区域中的所有链路和路由器的详细信息,但只保存其他区域路由器和链路的摘要信息。
区域分为两类:
骨干区域(也叫传输区域或者区域0):为快速、高效地传输数据包,通常不直接接用户。
非骨干区域:分普通区域和特殊区域,主要是连接用户,而且所有数据都必须经过Area 0中转。
特殊区域:Stub、Totally Stubby、NSSA、Totally NSSA
采用分区域设计能带来如下好处:
可以在区域边界做汇总,减少路由表的条目数量。
只有一个区域内的路由器才会同步LSDB,LSA的泛洪止于区域边界,减少了LSA的泛洪范围,加速收敛。
减小网络的不稳定性,一个区域的路由问题不会影响其他区域。
区域是基于链路的,边界在路由器上。(也就是说一条链路整体属于一个区域,而一台OSPF路由器可以同时连接多个区域)
ABR(Area Border Router区域边界路由器):至少有一个接口位于Area0,同时至少一个接口位于非Area0区域。
注意:并不是说连接两个区域的路由器就一定是ABR,如连接连个普通区域的路由器就不是ABR。
ASBR(Autonomous System Border Router自治系统边界路由器):具有映入外部路由能力的路由器。
注意:ASBR不一定要在Area0。
区域设计限制:
OSPF网络设计要求:普通区域必须要连接到骨干区域,这样设计便于防止环路和次优路径。因此,如果有超过一个区域存在,则其中必然有一个是Area0。
Area0必须连续,既不能有两个独立的Area0。
如果存在某普通区域无法连接到Area0的情况(例如,公司网络融合,地理区域限制等因素),虚链路(Virtual Link)是一种波不得已的不就措施,解决没有连接到区域0的区域问题。尽量不要使用,可能会带来次优路径等问题。
OSPF报文类型
Hell-发现、建立和维持 邻接关系。
DBD-数据库描述,包含路由的摘要信息。由于OSPF用于大中型网络,路由条目太多,因此发送LSA header相当于路由的目录。
LSR-向另一台路由器请求特定路由的完整信息。
LSU-用于LSA的泛洪或回应LSR该条路由的完整信息。只有LSU需要显示确认。
LSAck-对LSU做确认。