链路状态路由协议-OSPF
开放式最短路径优先OSPF(Open Shortest Path First)协议是IETF定义的一种基于链路状态的内部网关路由协议。
一 OSPF介绍
OSPF是一种先进的链路状态路由协议,其设计机制从根本上杜绝了路由环路的发生。该协议通过以下方式确保网络稳定性:
1. 区域化架构设计:
采用层次化区域划分结构
区域内使用SPF最短路径算法确保无环路
严格的区域间连接规则防止跨区域环路
2. 高效的拓扑更新机制:
支持触发式更新
快速检测并传播网络拓扑变化
确保路由信息及时同步
3. 优秀的扩展能力:
区域划分有效控制路由信息流量
支持大规模网络部署
可与MPLS等协议协同工作,扩展广域覆盖
4. 完善的安全特性:
提供路由器间报文认证机制
确保路由信息交换的安全性
二 工作原理
OSPF协议要求网络中所有运行该协议的路由器掌握完整的链路状态信息,以便计算最优路径。其收敛流程如下:
-
首先通过LSA(链路状态通告)泛洪机制,路由器会广播包含其接口IP、掩码、开销和网络类型等关键信息的LSA报文
-
各路由器接收到LSA后,会据此构建自己的LSDB(链路状态数据库)
-
基于完整的LSDB,路由器使用SPF算法进行计算,生成以自身为根的最短路径树
-
最终,根据最短路径树计算出最优路由,并将这些路由条目更新到IP路由表中
三 OSPF五种报文类型
OSPF直接运行在IP协议之上,使用IP协议号89。 OSPF有五种报文类型,每种报文都使用相同的OSPF报文头。
1. Hello报文:最常用的一种报文,用于发现、维护邻居关系。并在广播和NBMA(None-Broadcast Multi-Access)类型的网络中选举指定路由器DR(Designated Router)和备份指定路由器BDR(Backup Designated Router)。
2. DD报文:两台路由器进行LSDB数据库同步时,用DD报文来描述自己的LSDB。DD报文的内容包括LSDB中每一条LSA的头部(LSA的头部可以唯一标识一条LSA)。LSA头部只占一条LSA的整个数据量的一小部分,所以,这样就可以减少路由器之间的协议报文流量。
3. LSR报文:两台路由器互相交换过DD报文之后,知道对端的路由器有哪些LSA是本地LSDB所缺少的,这时需要发送LSR报文向对方请求缺少的LSA,LSR只包含了所需要的LSA的摘要信息。
4. LSU报文:用来向对端路由器发送所需要的LSA。
5. LSACK报文:用来对接收到的LSU报文进行确认。
四 邻居和邻接关系建立的过程
1. Down:这是邻居的初始状态,表示没有从邻居收到任何信息。
2. Attempt:此状态只在NBMA网络上存在,表示没有收到邻居的任何信息,但是已经周期性的向邻居发送报文,发送间隔为HelloInterval。如果RouterDeadInterval间隔内未收到邻居的Hello报文,则转为Down状态。
3. Init:在此状态下,路由器已经从邻居收到了Hello报文,但是自己不在所收到的Hello报文的邻居列表中,尚未与邻居建立双向通信关系。
4. 2-Way:在此状态下,双向通信已经建立,但是没有与邻居建立邻接关系。这是建立邻接关系以前的最高级状态。
5. ExStart:这是形成邻接关系的第一个步骤,邻居状态变成此状态以后,路由器开始向邻居发送DD报文。主从关系是在此状态下形成的,初始DD序列号也是在此状态下决定的。在此状态下发送的DD报文不包含链路状态描述。
6. Exchange:此状态下路由器相互发送包含链路状态信息摘要的DD报文,描述本地LSDB的内容。
7. Loading:相互发送LSR报文请求LSA,发送LSU报文通告LSA。
8. Full:路由器的LSDB已经同步。
五 Hello报文
OSPF的邻居发现过程是基于Hello报文来实现的,Hello报文中的重要字段解释如下:
1. Network Mask:发送Hello报文的接口的网络掩码。
2. HelloInterval:发送Hello报文的时间间隔,单位为秒。
3. Options:标识发送此报文的OSPF路由器所支持的可选功能。具体的可选功能已超出这里的讨论范围。
4. Router Priority:发送Hello报文的接口的Router Priority,用于选举DR和BDR。 5. RouterDeadInterval:失效时间。如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效;单位为秒,通常为四倍HelloInterval。
6. Designated Router:发送Hello报文的路由器所选举出的DR的IP地址。如果设置为0.0.0.0,表示未选举DR路由器。
7. Backup Designated Router:发送Hello报文的路由器所选举出的BDR的IP地址。如果设置为0.0.0.0,表示未选举BDR。
8. Neighbor:邻居的Router ID列表,表示本路由器已经从这些邻居收到了合法的Hello报文。
六 配置命令
华为设备OSPF配置与实战指南