OSPF路由协议概述
- OSPF(Open Shortest Path First (开放式最短路径优先))属于内部网关协议、链路状态路由协议,采用SPF算法计算路由,从算法上保证了无路由环路,通过邻居关系维护路由,避免了定期更新对带宽的消耗,OSPF路由更新效率高,网络收敛快,适用于大中型网络。OSPF报文封装于IP,协议号89,组播地址224.0.0.5与224.0.0.6,支持变长子网掩码和汇总、层次区域划分等优点。
OSPF基本概念
LC
链路状态(LS):路由器周边的链路的状态。
- 直连网段状态:通过接口网段和接口状态感知
- 描述直连网段:(网段,掩码,接口开销)
- 直连拓扑状态:通过OSPF邻居和邻居状态感知
- 描述直连拓扑:(邻居RouterID,连接接口,接口开销)。
- 接口开销:OSPF参考带宽/ 接口带宽
- OSPF参考带宽默认为100Mbps。
- Loopback接口的开销默认为1。
LSA
- LSA报文头部:
- 包含在各种报文中的LSA信息:
这张图是 OSPF协议中LSA(链路状态通告)类型的分类和功能说明,它清晰地展示了不同LSA的作用范围、发起设备及其承载的信息类型。以下是逐项解析:
1. LSA的分类逻辑
- 拓扑信息(Topology):描述网络设备间的连接关系(如路由器接口、邻居关系)。
- 对应LSA类型:1(Router LSA)、2(Network LSA)、4(ASBR LSA)。
- 路由信息(Routing):描述如何到达特定网络(如IP前缀、外部路由)。
- 对应LSA类型:3(Summary LSA)、5(External LSA)、7(NSSA LSA)。
2. 各LSA的详细说明
(1)Router LSA(Type 1)
- 发起者:每个OSPF路由器都会生成。
- 洪泛范围:仅在本区域内传播。
- 作用:
- 描述路由器自身的直连接口(如接口IP、子网、邻居路由器ID)。
- 示例:路由器R1通告:“我有接口10.1.1.0/24,邻居是R2。”
(2)Network LSA(Type 2)
- 发起者:广播/NBMA网络中的DR(指定路由器)。
- 洪泛范围:仅在本区域内传播。
- 作用:
- 描述多路访问网络(如以太网)中所有连接到DR的路由器列表。
- 示例:DR通告:“这个以太网中有R1、R2、R3连接到我。”
(3)Summary LSA(Type 3)
- 发起者:ABR(区域边界路由器)。
- 洪泛范围:跨区域传播(从骨干区域Area 0到其他区域)。
- 作用:
- 汇总区域间的路由信息(如将Area 1的10.1.0.0/16通告到Area 0)。
- 示例:ABR通告:“Area 1可以通过我到达10.1.0.0/16。”
(4)ASBR LSA(Type 4)
- 发起者:ABR。
- 洪泛范围:区域内传播(除特殊区域外)。
- 作用:
- 告知本区域内的路由器如何到达ASBR(自治系统边界路由器)。
- 示例:ABR通告:“ASBR(R5)的路径是通过我。”
(5)External LSA(Type 5)
- 发起者:ASBR。
- 洪泛范围:整个OSPF域(除Stub/NSSA区域)。
- 作用:
- 通告OSPF外部的路由(如重分布进来的静态路由或BGP路由)。
- 示例:ASBR通告:“外部网络192.168.1.0/24可以通过我到达(下一跳为外部)。”
(6)NSSA LSA(Type 7)
- 发起者:NSSA区域的ASBR。
- 洪泛范围:仅在NSSA区域内传播(由ABR转换为Type 5后传递到其他区域)。
- 作用:
- 在NSSA区域(特殊区域)内通告外部路由,避免Type 5的泛洪。
- 示例:NSSA ASBR通告:“外部网络172.16.1.0/24在本地有效。”
3. 洪泛范围对比
LSA类型 | 洪泛范围 | 类似“邮递范围” |
---|---|---|
Type 1 | 本区域内 | 只在本村张贴公告 |
Type 2 | 本区域内 | 只在本村广播 |
Type 3 | 区域间(ABR转发) | 跨村送信需通过邮局(ABR) |
Type 4 | 区域内 | 告诉村民如何找到镇长(ASBR) |
Type 5 | 全OSPF域 | 全国广播(除特殊地区) |
Type 7 | NSSA区域内 | 只在特区内部张贴 |
4. 实际应用场景
场景:多区域OSPF网络
- Area 0(骨干区域):
- Type 1/2 LSA描述区域内拓扑。
- Type 3 LSA汇总其他区域的路由。
- Area 1(普通区域):
- ASBR引入外部路由,生成Type 5 LSA。
- ABR生成Type 4 LSA,告知如何到达ASBR。
- Area 2(NSSA区域):
- 使用Type 7 LSA代替Type 5,由ABR转换为Type 5后传入骨干区域。
5. 常见问题
- 为什么需要Type 4 LSA?
Type 5 LSA只告诉外部路由的存在,但未说明如何到达ASBR。Type 4补充了ASBR的可达性。 - Type 7和Type 5的区别?
Type 7是Type 5在NSSA区域的“替身”,避免Type 5泛洪到NSSA区域(节省资源)。
总结
这张表是理解OSPF路由计算的核心——不同类型的LSA分工明确:
- Type 1/2/4 构建拓扑地图(“谁连接谁”)。
- Type 3/5/7 提供路由信息(“如何到达目的地”)。
掌握它们的作用范围和发起者,才能高效设计OSPF多区域网络!
LSDB
- 链路状态数据库(LSDB)
- 每台OSPF路由器都有一个LSDB,用于存储LSA。
- 同一个区域中的OSPF路由器的LSDB一致。
- LSA封装在LSU报文中,在区域内洪泛,最终达到区域内LSDB一致。
- LSA在洪泛过程中内容保持不变。
SPF
- 以自己LSA 1为根,进行SPF计算。
- 各OSPF路由器单独进行SPF计算,互不影响。
OSPF网络类型
- Broadcast广播多路访问:以太网接口
- NBMA(Non-Broadcast Multi-Access,非广播多点访问网络):帧中继接口
- P2MP(Point-to-MultiPoint,点到多点)
- P2P(Point-to-Point,点到点):PPP 、HDLC接口
OSPF报文类型
OSPF报文的目的地址
邻居状态变换
- Attempt在NBMA网络中。先创建邻居关系,在选举DR/BDR,非DR、BDR稳定后保持2-way状态,不建立邻接关系,然后在已建立邻接关系中,选举主从。
- DR BDR选举:
资格:优先级大于0
过程:同一广播域中相邻路由器互发Hello报文(Hello中有自己选出的DR)
开始时均认为自己是DR
比较:1、优先级(高的胜出),0优先级不参与选举
2、Router ID(大的胜)
注意:1、DR是某个网段中的概念,是针对路由器的接口而言的。某台路由器在一个接口上可能是DR,在另一个接口上有可能是BDR,或者是DR Other。
2、路由器的优先级可以影响一个选取过程,但是当DR/BDR已经选取完毕,就算一台具有更高优先级的路由器变为有效,也不会替换该网段中已经选取的DR/BDR成为新的DR/BDR。
3、DR并不一定就是路由器优先级最高的路由器接口;同理,BDR也并不一定就是路由器优先级次高的路由器接口
OSPF协议模型
OSPF四张表
建立邻居关系(点对点)
维持邻居关系(点对点)
1. 邻居失效的判定条件:
Dead Timer 超时:如果在 Dead Interval 内未收到邻居的 Hello 报文,则认为邻居失效。
- 例如:Hello Interval = 10 秒,Dead Interval = 40 秒,若 40 秒内无 Hello,则删除邻居。
主动失效:收到邻居的 Hello 报文,但其中不包含自己的 Router ID(表示对方已主动终止邻居关系)。
2. 不同网络类型的 Hello 行为
网络类型 | Hello Interval | Dead Interval | 是否需要 DR/BDR |
---|---|---|---|
广播网络 | 10 秒 | 40 秒 | 是(如以太网) |
点对点网络 | 10 秒 | 40 秒 | 否(如 PPP 链路) |
NBMA 网络 | 30 秒 | 120 秒 | 是(如帧中继) |
点对多点网络 | 30 秒 | 120 秒 | 否 |
DR/BDR的选举(广播多路访问)
Router ID
- 一台路由器如果要运行OSPF协议,则必须存在Router ID(RID)。
- RID是一个32比特无符号整数,可以在一个自治系统中唯一的标识一台路由器。
- RID可以手工配置,也可以自动生成。
- 如果没有通过命令指定RID,将按照如下顺序自动生成一个RID:
- 如果当前设备配置了Loopback接口,将选取所有Loopback接口上数值最大的IP地址作为RID;
- 如果当前设备没有配置Loopback接口,将选取它所有已经配置IP地址且链路UP的接口上数值最大的IP地址作为RID
Hello报文
以下是OSPF Hello报文的结构图示(基于RFC 2328标准),并附关键字段说明:
OSPF Hello报文格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version # | Type 1 | Packet Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Router ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Area ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | Auth Type | Auth Data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Network Mask |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Hello Interval | Options | Rtr Pri |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Router Dead Interval |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Designated Router (DR) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Backup Designated Router (BDR) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Neighbor 1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Neighbor 2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ... |
字段说明(关键部分)
字段名 | 长度 | 说明 |
---|---|---|
Version # | 1字节 | OSPF版本(OSPFv2为2)。 |
Type 1 | 1字节 | 报文类型(1表示Hello报文)。 |
Packet Length | 2字节 | 整个Hello报文的长度(字节)。 |
Router ID | 4字节 | 发送路由器的唯一标识(IPv4地址格式)。 |
Area ID | 4字节 | 发送接口所属的OSPF区域(必须与邻居一致)。 |
Network Mask | 4字节 | 发送接口的子网掩码(广播网络必须与邻居一致)。 |
Hello Interval | 2字节 | 发送Hello报文的时间间隔(秒)。 |
Rtr Pri | 1字节 | 路由器优先级(用于DR/BDR选举,0表示不参与选举)。 |
Router Dead Interval | 4字节 | 邻居失效的超时时间(秒)。 |
DR/BDR | 各4字节 | 当前网络的DR和BDR的Router ID(未选举时为0.0.0.0)。 |
Neighbor List | 变长 | 已知邻居的Router ID列表(仅包含最近收到Hello报文的邻居)。 |
Hello报文交互示意图
+------------+ +------------+
| Router A | | Router B |
| (RID 1.1.1.1) | | (RID 2.2.2.2) |
+------------+ +------------+
| |
| Hello (DR=0, Neighbor=[]) |
|------------------------------->|
| |
| Hello (DR=0, Neighbor=[1.1.1.1]) |
|<-------------------------------|
| |
| 双向通信确认后,进入2-Way状态 |
|(若网络类型需选举DR/BDR,则开始选举)|
关键点总结
- 参数一致性:
- 双方的
Area ID
、Network Mask
、Hello/Dead Interval
、认证
必须一致。
- 双方的
- 邻居列表(Neighbor List):
- 仅在收到对方的Hello报文且包含自己的Router ID时,才确认双向通信(2-Way状态)。
- DR/BDR字段:
- 在广播/NBMA网络中,Hello报文会携带DR/BDR的Router ID,用于选举同步。