注:本文为 “OSPF 报文、状态、DR BDR 选举、Option 字段” 相关文章合辑。
在引文原文中加了几张图。
OSPF 五种报文 + 七种状态
夜半少年于 2020-03-09 10:20:33 发布
OSPF(Open Shortest Path First)
OSPF 是内部网关协议中的一种链路状态路由协议,封装在 IP 报文中,协议号为 89。
简单的理解,部署了该协议的网络会周期性收集拓扑和路由的所有信息,然后计算出到达目的网段的最短路径,并且通过周期更新机制实时监控网络的变化。
按区域自治与否,可分为:
① IGP(AS 内部)
② EGP(AS 与 AS 之间)
按路由算法,可分为:
① 链路状态路由协议
② 距离矢量路由协议
IGP:工作在 AS 内,周期更新,收集运行了该协议的路由信息并实时监控网络的变化(如 OSPF、ISIS、RIP);
EGP:工作在 AS 之间,不存在周期更新,存在触发更新,主要用于传递和选择 AS 间的路由(如 BGP);
-
无环路
类似于 STP 生成树协议,每一个 OSPF 区域(每一朵 “云”)相当于一个树干的枝杈,不会构成环路。 -
收敛快
这是作为动态路由所特有的特点,每当链路 / 设备出现故障时,该部署了 OSPF 的区域会动态的扫描并感知到链路状态异常,从而进行拓扑的链路的更新。 -
扩展性好
可以划分为多个 OSPF 区域,就像树干可以长出多个枝杈一样。 -
支持认证
认证,是为了提高网络通信的安全性,OSPF 区域下所有设备接口之间的相互认可的一种口令 / 密钥方式。就像直播房间平台下,你输入对应的密码 / 房间号才可以进去一样。
OSPF 的五种报文
(1)Hello 报文:发现、协商、维护(周期发送)OSPF 邻居;
关于邻居的发现,有两种方式:
① 自动发现:通过发送目的 IP 地址为 224.0.0.5;
② 手工指定(NBMA)
那两者如何才能成功建立邻居(两者如何通过 hello 报文协商 “邻居的建立”)
通过查看 ospf 报文的头部,可以知道影响 OSPF 邻居建立的因素:
① version 必须一致;
② router id 不能一致;
③ area ID 要一致;
④ authentication-mode 要一致,password 也要一致;
⑤ netmask 要一致(广播、NBMA 网络中有这一要求的);
⑥ hello/dead time 要一致;
⑦ option 字段的 N bit 和 E bit 要一致;
N 位 / E 位 | 代表的功能区域 |
---|---|
N=0,E=0 | 代表 stub 区域(末节区域) |
N=0,E=1 | 代表普通区域 |
N=1,E=0 | 代表 NSSA 区域 (Not so 末节区域) |
N=1,代表支持 7 类 LSA
E=1,代表支持 5 类 LSA
(2)DD(Database Description,数据库描述)报文:携带 LSA 的摘要(就像快递单号,仅仅是对快递具体内容的简单描述标识而已);
DD 报文携带的 LSA 摘要有什么字段?
link state type、link state id、advertiser (简称 ADV)。
(3)LSR(link state request)报文:请求 本设备缺少的 LSA 信息(容易理解,请求的东西一般是自己没有的),通过携带本设备所缺少的 LSA 的摘要信息来实现请求;
(4)LSU(link