注:本文为 “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 state update)报文:携带 LSA 信息 的报文。(类似于报刊会按照你订阅所需要看、但又还没有收到的报刊的单号进行递送)
① 收到了 LSR 请求报文后,LSU 会进行回复;
② 默认情况下,LSU 报文会周期为 1800s 动态更新,dead time 为 3600s;
③ 当网络发生变化时,也会发送出 LSU 更新链路状态(触发更新);
(5)LSACK(link state ACK)报文:用来确认收到了 LSU 的报文,携带了 LSA 的详细信息(而不仅是 LSA 摘要了);(快递员给你送完东西,快递员会验收确认,我们这边也要验货看看有无缺损、符不符合当初买的标准和实际的需求)
PS:LS Ack 报文携带的仅是 LSA 的摘要并不会携带完整的 LSA,跟 DD 报文类似。
OSPF 协议报文运作流程
下图描述了其运作的流程:

上图粗略的描述了 ospf 路由协议是怎么通过报文运作的。但我还是建议各位亲自抓取 OSPF 报文来分析,理解会更深一点。
OSPF 状态机是如何运作的?
1、down:刚开机时,随即发送第一个 hello 报文的状态。
2、init:发送了第一个 hello 报文后,等待收到对方发来 hello 报文的状态。
- attempt:跟 init 状态类似,但它只用于 NBMA 接口网络类型之中
3、2-way:双向连接,收到了邻居发来的 hello 报文(其中携带一些信息说明本设备为邻居的 route id 等),在这个状态里完成 DR 和 BDR 的选举。
DR(Designated Router),指定路由器
BDR(Backup Designated Router),备份指定路由器
4、exstart:双方开始交换‘空’的DD 报文,通过 DD 报文中序号等摘要信息协商并选举出主从设备。
为什么要选举主从设备?
选举主从设备用于确定由哪台路由器开始发送 DBD 包。
由于 ospf 主要是建立在 IP 数据包的基础上,如果没有 tcp 报文的可靠传输保证,需要建立主从关系保证 DBD 数据库描述信息可靠交互。虽然主从选举表面只是一种关系选举,实际上是一种可靠更新机制,保证数据传输有序、可靠。
其中主从关系选举与优先级无关,只与 Router-ID 有关
router id 较大的设备(比如选举出的主设备),不一定是 DR。
5、exchange: 双方交换携带了 LSA 摘要DD 报文,用于同步 LSDB(可以说双方各自存储着自己的 LSA 报文数据库即 LSDB)。
6、loading: 用于加载 exchange 交换之后各自缺少的 LSA 报文。(此过程会发送 LSR、LSU、LSAck 报文)
7、full: 同步 LSDB 完成。(此过程拓扑链路发生变化会发送 HELLO、DD 报文、LSR、LSU、LSAck 报文,以进行动态刷新 LSDB)
下面演示七种状态通过 OSPF 协议如何运作的一个状态机制:

下图进一步的描述了 OSPF 协议的状态机大致运作流程。

如果 OSPF 进程停留在某个状态,问题出至哪里呢?
答:
停留在 init 状态:存在流量过滤,或链路存在单点故障
停留在 2-way 状态:DR/BDR 选举卡住了,通常是路由器中双方或某一方弃权了导致选举不成功(优先级为 0 时代表弃权)
停留在 exstart、exchange、loading 状态:通常是本端接口的 MTU 与对端接口的 MRU 不一致,本端发送的报文过大,对端接收不过来;(但注意两设备互联接口的 MTU 不匹配,华为默认不检查的)
OSPF 链路状态 (拓扑) 发生改变时怎么办?
答:OSPF 是链路状态路由协议,当链路状态 (拓扑) 发生变化时会执行触发更新机制,即:当链路状态发生改变时,运行 OSPF 的设备就会泛洪发出链路更新报文 (LSU),如此很快地就告知给了所有相邻的路由器,然后通过比对链路数据库 (LSDB) 与路由表 (Routing table),找出拓扑变化的部分,进而更新 LSDB。
搞懂邻居关系、邻接关系及其区别
1、邻居关系 邻接关系
邻居关系:邻居之间只能发送 hello 报文;
邻接关系:OSPF 的五种报文都可以发送;
2、DR、BDR、DR other
DR、BDR、DR other 角色
DR:相当于一个班级(广播网络)里被选举出来的正班长。
BDR:相当于一个班级里选举出来的的副班长。
DR other:该班级学生里面除了上面的正班长、副班长之外的 “同学” 了。
3、邻居关系和邻接关系区别
理解了 DR、BDR 和 DR other 所扮演的角色,可以这样认为:邻居关系是简单的隔壁关系,邻接关系是更深层次的友好关系。
- DR/BDR 与 DR other 之间是邻接关系;(班长 / 副班长与班级同学关系友好)
- BDR 与 DR 之间是邻接关系;(副班长与班长关系友好)
- DR other 与 DR other 之间邻居关系;(同学和同学毗邻而已,关系不一定友好)
OSPF 路由 DR、BDR 选举
夜半少年于 2020-03-10 18:07:03 发布
首先,强调一下:这里 OSPF 路由协议下选举 DR、BDR 是在广播网络、NBMA 网络中进行的。既然提到了 OSPF 网络类型,那就先来了解一下吧。
OSPF 的四种接口网络类型
| 网络类型 | 底层链路类型 | 需要选举 DR/BDR? | Hello time interval | Dead time |
|---|---|---|---|---|
| 广播 | 以太网 | 需要 | 10s | 40s |
| NBMA | FR、ATM | 需要 | 30s | 120s |
| P2P | PPP、HDLC | 不需要 | 10s | 40s |
| P2MP | 手工配置 | 不需要 | 30s | 120s |
| TIMER NAME | BROADCAST | NONBROADCAST | POINT-TO-POINT | POINT-TO-MULTIPOINT | POINT-TO-MUTUPOINT NON-BROADCAST |
|---|---|---|---|---|---|
| Hello Interval | 10 | 30 | 10 | 30 | 30 |
| Dead Interval | 40 | 120 | 40 | 120 | 120 |
| Poll Interval | 120 | 120 | 120 | 120 | 120 |
| Retransmit-Interval | 5 | 5 | 5 | 5 | 5 |
| Transmit-Link-Delay-Interval | 1 | 1 | 1 | 1 | 1 |
P2MP 的手工配置:
interface GigabitEthernet0/0/0
ip address 10.1.12.1 255.255.255.0
ospf network-type p2mp // 修改 OSPF 的网络类型;
//ospf timer hello 10 // 也可以修改接口的 hello time;30s——>10s
DR、BDR 选举的作用
| Router 类型 | 角色作用 |
|---|---|
| DR | 减少 MA 网络中报文的交互数量,节省链路的资源; |
| BDR | 作为备份的 DR,当 DR 出故障时,BDR 可以充当 DR(临危受命,哈哈) |
MA 网络:multiple access 网络,指上面提到的广播类型、NBMA 型网络,由于 MA 网络内设备接口结点多,选个 “管理者”(DR/BDR)可以减少结点与结点之间的报文交互。
DR、BDR 选举的规则
| 比较的字段 | 如何比较 |
|---|---|
| 比较接口的优先级 | 范围:0-255;优先级为 0,表示弃权 ;默认优先级为 1;优先级越大越优 ; |
| 比较设备的 router id | 若出现优先级相同的情况,router id 越大越优; |
修改 priority(优先级):
interface GigabitEthernet0/0/0
ip address 10.1.12.1 255.255.255.0
ospf dr-priority 12
123
router id
router id 用于标识一台设备。route id 标识的生成可以分为手工配置和自动生成两种,如下:
(1)手工配置:
- ① 系统视图下配置: ospf 1 router-id 1.1.1.1

- ② 协议视图下: router id 1.1.1.1
手工配置 router id 可能不能马上生效,需要
刷新 OSPF 的进程: 即在用户视图下:
reset ospf process—>Y
(2)自动生成:
-
华为标准: 最先 UP 的接口 成为设备的 router id;
-
RFC 标准:
| 设备环回接口 有 / 无 | router id |
|---|---|
| 有 | Loopback 接口 IP 地址大的 |
| 没有 | 物理接口 IP 地址大的 |
OSPF 划分区域
(1)Area 0 属于骨干区域;
(2)其他的 Area ID 都属于非骨干区域;
(3)非骨干区域之间要互访,只有经过骨干区域 Area 0 才能互访;
| 路由器 “使者” | 特点 |
|---|---|
| ABR | 处于骨干区域与非骨干区域的边界 |
| ASBR | 处于 AS 边界用做外部路由引入的设备 |
OSPF Option 字段详解
运维不粘锅 2021-02-04 09:52:41
1、OSPFv2 Option
OSPFv2 的 Option 字段如下所示:

| 比特位 ~~~~~~~ | 说明 |
|---|---|
| DN | 用来避免在 MPLS 中出现环路。当 3 类、5 类和 7 类 LSA 中设置了 DN 位之后,接收路由器就不能在它的 OSPF 路由计算中使用该 LSA。如果需要接受,需要配置 -instance-capability simple。 |
| O | 用来说明路由器是否有能力发送和接收 opaque LSA,即类型 9、类型 10 和类型 11。 |
| DC | 当始发路由器支持按需链路上的 OSPF 的能力时,该位将被设置。 |
| EA | 当始发路由器具有接收和转发外部属性 LSA(External-Attributes-LSA)的能力时,该位被置位。 |
| N/P | N 位:只在 Hello 数据包中使用。N=1 表明路由器支持 7 类 LSA。N=0 表明该路由器将不接收和发送 NSSA LSA。 P 位:只用在 NSSA LSA 中。P=1 表明将告诉一个 NSSA 区域中的 ABR 路由器将 7 类 LSA 转换为 5 类 LSA。 |
| MC | 该位描述是否多播扩展 OSPF 转发 IP 多播包,也就是 MOSPF。 |
| E | 当始发路由器具有接收 OSPF 域外部 LSA(AS-external-LSA)的能力时,该位置位。 |
| MT | 表示始发路由器支持多拓扑 OSPF (MT-OSPF)。 |
2、OSPFv3 Option
OSPFv3 的 Option 字段如下所示

| 比特位 ~~~~~ | 说明 |
|---|---|
| DC | 虚链路相关报文使用,当 DC=1 时,表示此报文为虚链路报文。 |
| R | 用来标识设备是否具有转发能力。如果 R 为 0,则该节点的路由信息将不会参加路由计算。如果当前设备是不想转发非本地地址报文的路由器,可以将 R 比特置 0,类似 IS-IS 的 OL 比特。 |
| N | 用于表示该路由为 7 类 LSA,用于 7 类 LSA 和 5 类 LSA 的转化,NSSA 使用。 |
| MC | 与组播相关 |
| E | 如果该比特为 0,表示不支持 AS-External LSA 泛洪。 |
| V | 若 V6 置 0,如果V 比特置0,该路由器或链路不会参加路由计算。 |
3、OSPFv2 与 OSPFv3 Hello 报头区别


via:
-
最通俗易懂的 OSPF 五种报文 + 七种状态_ospf 五种报文七种状态 - 优快云 博客 夜半少年于 2020-03-09 10:20:33 发布
https://blog.youkuaiyun.com/qq_42605300/article/details/104727306 -
一篇文章算是彻底理解了 OSPF 路由 DR、BDR 的选举_ospf 在 p2mp 类型的接口上也会选举 dr、bdr-优快云 博客 夜半少年于 2020-03-10 18:07:03 发布
https://blog.youkuaiyun.com/qq_42605300/article/details/104775068 -
OSPF Option 详解_51CTO 博客_ mpls option 运维不粘锅 2021-02-04 09:52:41
https://blog.51cto.com/xxy12345/2618949





6253

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



