OSPF简介
定义
开放式最短路径优先OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol)。
目的
在OSPF出现前,网络上广泛使用RIP(Routing Information Protocol)作为内部网关协议。
由于RIP是基于距离矢量算法的路由协议,存在着收敛慢、路由环路、可扩展性差等问题,所以逐渐被OSPF取代。
OSPF作为基于链路状态的协议,能够解决RIP所面临的诸多问题。此外,OSPF还有以下优点:
OSPF采用组播形式收发报文,这样可以减少对其它不运行OSPF路由器的影响。
OSPF支持无类型域间选路(CIDR)。
OSPF支持对等价路由进行负载分担。
OSPF支持报文加密。
OSPF基础
OSPF协议具有以下特点:
OSPF把自治系统AS(Autonomous System)划分成逻辑意义上的一个或多个区域;
OSPF通过LSA(Link State Advertisement)的形式发布路由;
OSPF依靠在OSPF区域内各设备间交互OSPF报文来达到路由信息的统一;
OSPF报文封装在IP报文内,可以采用单播或组播的形式发送。
报文类型
OSPF报文直接采用IP封装,在报文的IP头部中,协议号为89。

| 报文类型 |
报文作用 |
| Hello报文 |
周期性发送,用来发现和维持OSPF邻居关系。 |
| DD报文(Database Description packet) |
描述本地LSDB(Link State Database)的摘要信息,用于两台设备进行数据库同步。 |
| LSR报文(Link State Request packet) |
用于向对方请求所需的LSA。 设备只有在OSPF邻居双方成功交换DD报文后才会向对方发出LSR报文。 |
| LSU报文(Link State Update packet) |
用于向对方发送其所需要的LSA。 |
| LSAck报文(Link State Acknowledgment packet) |
用来对收到的LSA进行确认。 |
Hello报文

Network Mask:发送Hello报文的接口的网络掩码。
HelloInterval:发送Hello报文的时间间隔。通常为10s。
RouterDeadInterval:失效时间。如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效。通常为40s。
Neighbor:邻居,以Router ID标识。
其它字段解释
Options:
E:是否支持外部路由
MC:是否支持转发组播数据包
N/P:是否为NSSA区域
Router Priority:DR优先级。默认为1。如果设置为0,则路由器不能参与DR或BDR的选举。
Designated Router:DR的接口地址。
Backup Designated Router:BDR的接口地址。
DD报文

Interface MTU:指示在不分片的情况下,此接口最大可发出的IP报文长度。在两个邻居发送DD报文中包含MTU参数,如果收到的DD报文中MTU和本端的MTU不相等,则丢弃该DD报文。缺省情况下,华为设备未开启MTU检查。
Optinons:字段同Hello报文。
I 1比特 指定在连续发送多个DD报文,如果是第一个DD报文则置1,其它的均置0。
M 1比特 指定在连续发送多个DD报文,如果是最后一个DD报文则置0,否则均置1。
M/S 1比特 设置进行DD报文双方的主从关系,如果本端是Master角色,则置1,否则置0。
DD Sequence Number 4字节 指定所发送的DD报文序列号。主从双方利用序列号来确保DD报文传输的可靠性和完整性。
LSA Heaader 4字节 指定DD报文中所包括的LSA头部。后面的省略号(…)表示可以指定多个LSA头部。
LSR报文
LSR报文用于请求相邻路由器链路状态数据库中的一部分数据。当两台路由器互相交换完DD报文后,知道对端路由器有哪些LSA是本LSDB所没有的,以及哪些LSA是已经失效的,则需要发送一个LSR报文,向对方请求所需的LSA。LSR报文内容包括所需的LSA摘要,如图:

LS type 4字节 指定所请求的LSA类型,主要共6类。
Link State ID 4字节 用于指定ospf所描述的部分区域,该字段的使用方法根据不同的LSA类型而不同:当为LSA 1时,该字段值是产生LSA 1的路由器的Router-ID,当为LSA 2时,该字段值是DR的接口地址,当为LSA 3时,该字段值是目的网络的网络地址,当为LSA 4时,该字段值是ASBR的Router-ID,当为LSA 5时,该字段值是目的网络的网络地址。
Advertising Router 4字节 指定产生此所要请求的LSA的路由器ID。
如上三个字段可以表示唯一的一个LSA,一个LSR报文可以请求多个LSA。
OSPF LSU报文
LSU报文是应LSR报文的请求,用来向对端路由器发送所需的LSA,内容是多条LSA完整内容的集合,LSU报文内容部分包括此次共发送的LSA数量和每条LSA的完整内容。
LSU报文在支持组播和多路访问的链路上是以组播方式将LSA泛洪出去的,并且对没有收到对方确认应答(就是下面将要介绍的LSAck报文)的LSA进行重传,但重传时的LSA是直接送到没有收到确认应答的邻居路由器上,而不再是泛洪。

Number of LSAs 4字节 指定此报文中共发送的LSA数量。
LSAs 4字节 是一条条具体的LSA完整信息,后面的省略号表示可多条LSA。
OSPF LSAck报文
LSAck报文是路由器在收到对端发来的LSU报文后所发出的确认应答报文,内容是需要确认的LSA头部(LSA Headers),整个LSAck报文的格式如图所示。LSAck报文根据不同链路以单播或组播形式发送。

LSA类型
| LSA类型 |
LSA作用 |
| Router-LSA(Type1) |
每个设备都会产生,描述了设备的链路状态和开销,在所属的区域内传播。 |

本文详细介绍了OSPF(开放式最短路径优先)协议的定义、目的、工作原理,涉及Hello报文、DD报文、LSA类型及其传播,以及DR/BDR选举、COST度量、邻居状态机、认证、路由聚合和特殊区域配置。涵盖了邻接关系建立、路由计算和实际应用场景。
最低0.47元/天 解锁文章
4357

被折叠的 条评论
为什么被折叠?



