文章目录
一、OSPF LSA(链路状态通告)详解
LSA(Link State Advertisement)是OSPF协议的核心数据结构,用于描述网络拓扑和路由信息。每个LSA代表路由器视角下的局部网络状态,通过泛洪机制实现全网LSDB(链路状态数据库)同步。
1. LSA通用头部
所有LSA类型共享20字节的通用头部:
LSA类型、链路状态ID、通告路由器ID ---- “LSA三元组” — 通过这三个参数可以唯一的标识出一条LSA。
字段 | 描述 |
---|---|
LS Age | LSA存活时间(秒),最大值3600(老化时间)。 |
Options | OSPF能力标识(如是否支持外部路由)。 |
LS Type | LSA类型(1-11,OSPFv2常用1-7)。 |
Link State ID | 链路状态标识符,标识LSA的拓扑实体(如Router ID、网络地址等)。 |
Advertising Router | 生成该LSA的路由器Router ID。 |
LS Sequence Number | 序列号(0x80000001~0x7FFFFFFF),用于检测新旧LSA或是否存在重复。 每一台路由器发送同一条LSA时都会携带一个序列号,并且这些序列号一次加1,是LSA新旧判断的关键参数 序列号空间:直线型空间、循环型空间、棒棒糖型空间 |
LS Checksum | 校验和(排除LS Age字段),校验和也会参与LSA的新旧比较。当两条LSA三元组相同,并且序列号也相同时,则可以使用校验和比较,和大的认定为新。 |
Length | LSA总长度(含头部)。 |
2. OSPFv2 主要LSA类型
a. Type 1 - Router LSA
生成者:每个OSPF路由器且只发送一条。
作用:描述区域内部路由器的直连链路状态(链路类型、开销值)和邻居关系。
传播范围:仅在所属区域内部泛洪。
携带信息:本地接口直连拓扑
具体信息:
- [R1]dis ospf lsdb router 查看Type1 LSA的具体信息
LS ID: 发出该LSA的路由器的router-id
Link count:链路数量,通过link来描述接口的链接情况
Metric:开销值
link-type:链路类型,描述该接口的二层类型
transnet:
类型:广播网络或者NBMA
link-id:本网段的DR的IP地址qh
Data:本路由器在该网段的IP地址
P2P:
类型:ppp
link-id:该网段对端路由器的router-id
Data:本路由器在该网段的与对端路由器相连的接口的IP地址
stubnet(末梢网络):
类型:p2p\环回口
link-id:该网段的网络地址
Data:该网段的子网掩码
Virtual(虚链路):
类型:虚链路
link-id:虚链路邻居的router id
data:去往该虚连接邻居的本地接口的IP地址
Adv Rtr:始发路由器,产生该LSA的路由器的router-id
链路ID:不同的链路类型,对链路ID值的定义是不同的。
链路数据(Link Data):不同的链路类型对链路数据的定义是不同的。
关键内容:
- 路由器所有接口的IP地址和掩码。
- 接口连接的邻居Router ID(点对点网络)或DR的IP地址(广播网络)。
- 链路开销(Cost)。
b. Type 2 - Network LSA
- 生成者:MA网络中的DR设备(指定路由器)。
- 作用:描述广播/NBMA网络中的全部接入路由器及掩码信息。(仅依靠1类LSA无法完整描述MA网络中的信息)
- 传播范围:仅在所属区域内部泛洪。
- 关键内容:
- DR的IP地址和网络掩码。
- 接入该网络的所有路由器Router ID。
- LS ID:该网段的DR的IP地址
- Adv Rtr:该网段DR的router-id
- network mask:该网段DR的IP地址的子网掩码信息
所有路由信息都需要就与拓扑信息进行验算,及所有其他种类的LSA均需要通过1类和2类LSA进行验算
c. Type 3 - Summary LSA
生成者:ABR(区域边界路由器)。
作用:向其他区域通告本区域的汇总路由(携带区域之间传递的路由信息,通过下一个区域时需要修改为新的ABR设备)。
传播范围:跨区域传播(但仅到达普通区域)。
关键内容:
目标网络地址和掩码。
ABR到目标网络的路径开销。
LS ID:其他区域某个网段的网络地址
SubAdv Rtv:通告该LSA的ABR的router-id
net mask:该网段的子网掩码
注:3类LSA的传递范围在ABR相邻的单区域中进行,跨区域传递时,需要进行通告者的转换,通告者变了,则将不是同一条LSA
d. Type 4 - ASBR Summary LSA
- 生成者:ASBR所在区域的ABR设备,通过下一个区域时需要修改为新的ABR设备。
- 作用:通告ASBR(自治系统边界路由器)的位置。
- 传播范围:除Stub/NSSA区域外的全网泛洪。
- 关键内容:
- lsID:ASBR的Router ID。
- ABR到ASBR的开销。
- 注:在ASBR本区域的内部路由器,不会产生到达该ASBR的4类LSA
e. Type 5 - AS External LSA
- 生成者:ASBR。
- 作用:通告引入的外部路由(如重分布进OSPF的静态/BGP路由)。
- 传播范围:全网泛洪(除Stub/NSSA区域)。
- 关键内容:
- 外部网络地址和掩码。
- 外部路由类型(E1/E2)。
- LS ID:域外路由目标网络号
- Metric:因为不同你个协议的开销值评判标准不同,所以在进行重发布之后,将舍弃原先网络环境中的开销值,然后赋予一个初始的度量值 — 种子度量值 —华为设备默认为1
- import-route rip 1 cost 2 — 在重发布过程中修改种子度量值。
- E type — 标记位(标记度量值的类型)
- 0 :类型1 — 所有设备到达域外目标网段的开销值为本地到达通告路由器的开销值加种子度量值
- 1 :类型2 — 默认使用度量值类型为2,所有设备到达域外目标网段的开销值为种子度量值
- import-route rip type 1 — 修改度量值类型
- 转发地址(Forwarding Address,可选):主要是应对选路不加的情况,如果出现不佳的情况,则将最佳选路的下一跳放在转发地址中,之后将不再按照算法寻找通告者,而是根据转发地址到达目标。5类LSA在不存在选路不加时,转发地址用0.0.0.0来填充。
f. Type 7 - NSSA External LSA
- 生成者:NSSA区域内的ASBR。
- 作用:在NSSA区域内替代5类LSA通告外部路由(类似Type 5的受限版本)。
- 传播范围:仅在NSSA区域内部传播,由ABR转换为Type 5后泛洪到其他区域。
- 关键内容:
- 外部网络地址和掩码。
- LS ID:域外路由目标网络号
- 转发地址(必须指定,通常为ASBR的接口IP)。
- 特殊区域的标志
- E:E位置1,代表该区域支持5类LSA,如果是特殊区域则置0
- N:N位置1,则代表该区域支持7类LSA,
3. LSA泛洪机制
- 初始泛洪:路由器生成LSA后,通过LSU包发送给所有邻居(组播地址
224.0.0.5/6
)。 - 确认机制:接收方必须回复LSAck确认,否则发送方重传。
- 老化与刷新:
- LSA默认每30分钟(LSRefreshTime)重新生成(序列号+1)。
- 若LS Age达到3600秒且未被刷新,则从LSDB中删除。
4. LSA类型与区域设计
区域类型 | 允许的LSA类型 |
---|---|
骨干区域(Area 0) | 1, 2, 3, 4, 5 |
普通区域 | 1, 2, 3, 4, 5 |
Stub区域 | 1, 2, 3, 4(禁止Type 5,由ABR生成默认路由) |
NSSA区域 | 1, 2, 3, 4, 7(ABR将Type 7转换为Type 5) |
Totally Stub | 1, 2, 3(ABR生成默认路由,禁止Type 3/4/5) |
5. 关键操作示例
查看LSDB(Cisco设备)
show ip ospf database #
show ip ospf database router 1.1.1.1 # 查看特定Router LSA详情
show ip ospf database external # 查看Type 5 LSA
二、OSPF在MGRE环境下的问题
在配置完MGRE隧道和OSPF都会发现,各个设备的OSPF路由表学习不全,设备也无法建立正常的邻接关系
问题1:
Tunnel接口类型为P2P类型,不选举DR/BDR,使得设备无法正常建立邻接关系
解决方法:
更改网络中tunnel接口类型为广播或者P2MP
[R1-Tunnel0/0/0]ospf network-type broadcast
问题2:
DR/BDR选举混乱,无法建立邻接关系
更改网络类型后,广播网络中中心站点和分支站点处于同一个广播域,此时需要进行DR和BDR的选举,但是在分支站点的世界里只和中心站点认识,分支站点和分支站点不认识,这就会发生多个分支站点和一个中心站点互相竞选DR和BDR,这样会造成选举结果混乱。
解决方法:
将分支站点的DR选举优先级变0,这样就能保证中心站点是整个广播网络中唯一的DR
[R2-Tunnel0/0/0]ospf dr-priority 0