OSPF路由协议分享

1 简介

OSPF路由协议是非常流行的IGP路由协议, 被广泛使用, 协议负责知识点多, 所以先搭建个框架,便于快速学习和记忆, 也方便回顾, 无需深入每个细节, 但要清楚哪些是关键的点;

  1. 对比rip协议, ospf协议有哪些优点?
  2. ospf为什么有区域?
  3. OSPF中各路由器的角色?
  4. ospf为什么设置了stub区域和NSSA区域?
  5. 常用的1,2,3,4,5,7类LSA 的advertising router和Link State Id
  6. ospf路径成本如何计算?
  7. DR选举
  8. osfp邻居状态机?
  9. LSA如何更新删除?
  10. 更多细节注意

2 osfp关键知识点介绍

2.1 对比rip协议, ospf协议有哪些优点?

Rip协议: 适用于小型网络,使用跳数进行最优路径选择无法选出最佳路径.
Osfp协议: 每台路由器都拥有完整的拓扑信息, 基于带宽选路, 适合于大型网络;

2.2 OSPF为什么有区域

在一个区域内,网络的变化(导致一类,2类LSA发生变化)会触发整个区域内SPF协议的重新计算, SPF计算过程中会影响业务的转发, 如果一个区域内有足够多的路由器, 那影响就会更大.
区域出现后1,2类LSA的变化只会在区域内引发ospf的重新计算, 不会影响其他区域, 大大降低了网络变化对整网的影响.

2.3 OSPF中路由器的角色

参考下图:
ABR: R1,R3
骨干路由器: R1,R2,R3
ASBR: R11 (R11引入外部路由)

OSPF路由协议分享_第1张图片

2.4 ospf为什么设置了stub区域和NSSA区域?

Stub区域:
不接收外部路由, ABR只需要产生一条默认路由发送给stub区域的路由器即可, 降低了对stub区域路由器的资源消耗;
Totally Stub区域:
既不接收外部路由,也不接收区域间路由, 进一步降低了对区域内路由器资源的消耗, 现实网络中有很多老旧的路由器路由规格比较低, 为了兼容它们, 所以就有了这两种区域的出现;
NSSA区域:
NSSA其实是Stub区域的一个变形,它和Stub区域有许多相似的地方。NSSA区域不允许存在5类LSA。Type7 LSA由NSSA的ASBR产生,仅在本NSSA内传播。当Type7 LSA到达NSSA的ABR时,由ABR将Type7 LSA转换成Type5 LSA,传播到其他区域,负责转换LSA的ABR也称为转换路由器。

2.5 常用的1,2,3,4,5,7类LSA 的advertising router和Link State Id

1类LSA:
通告路由器 : 生成LSA的router id
链路状态id: 生成LSA的router id
2类LSA:
通告路由器 : DR
链路状态id: DR的IP
3类LSA:
通告路由器id: ABR
链路状态id: 通告的网络地址
4类LSA:
通告路由器 : ABR
链路状态id: ASBR的router id
5类LSA:
通告路由器 : ASBR
链路状态id: 外部的网络地址
7类LSA:
通告路由器 : NSSA区域中的ASBR
链路状态id: NSSA区域外部的网络地址

LSA通过三个字段进行唯一标识 : LS-TYPE, Advertising-Router, Link State Id.

2.6 ospf路径成本如何计算?

流量方向上出接口的成本之和就是累计的成本.
如下图:
R1 访问 6.6.6.6,
累计成本 = R1_0/1(cost=10) + R2_0/1(cost=10)+R3_0/1(cost=10) = 30

OSPF路由协议分享_第2张图片

5类LSA E1和E2 路由的区别: E2路由计算累计成本时不计算自治系统内的成本; E1路由的累计成本需要加上自治系统内的成本.

2.7 DR选举

DR产生的背景:
在广播型网络中,为了避免所有路由器full-mesh的建立邻接关系,导致交换路由信息时耗费过多的带宽资源, 引入了DR/BDR/DROther 角色;

DR和BDR建立邻接关系;
DR和所有DR-Other建立邻接关系;
BDR和所有DR-Other之间建立邻接关系;
DR-Other之间建立two-way关系;

当DR故障了,BDR接替DR的角色,DR-Other中再重新选举BDR;

新增的路由器即使优先级优于已有DR, 也不会重新计算DR, 保证了网络的稳定, 具体做法是: 新增的路由器发送的hello报文会在一个dead-time时间内不去宣称自己是DR, 在这个时间段内收到hello报文中已有DR存在了, 它就会接收这个DR的存在, 不去重新参与DR选举;

2.8 osfp邻居状态机

为什么要了解邻居状态机?
可以帮助你在邻居建立发生异常的情况下快速定义问题, 特别是不同厂家的设备对接时更容易出现一些问题.
以广播型网络为例:
OSPF路由协议分享_第3张图片

two-way状态协商过程
注: 此过程会比较hello-interval,dead-time, 认证等参数是否一致;
(1) A发送hello报文到B, 邻居为空;
(2) B收到hello后,将1.1.1.1存入邻居字段,发送hello到A, 并将邻居状态设为init;
(3) A收到携带自己router-id的hello, 将2.2.2.2加入到邻居字段, 发送hello到B,
并将邻居状态设为two-way;
(4) B收到系带自己router-id的hello, 将邻居状态设为two-way;

邻接关系协商过程
1. 主从关系协商,DD交换
首先进行DD主从关系写上, 每队邻接关系的两台路由器都要进行主从关系协商,
I =1: 表示是第一个DD报文;
M=1: 表示不是最后一个DD报文;
MS=1: 表示自己是Master;
第一个DD报文不携带LSA摘要

(1) A发送DD报文[Seq=X, I=1,M=1,MS=1] , 宣称自己是主;
(2) B收到A的DD后,发现自己的Router-Id更大, 认为自己是Master, 发送序列号为Y的DD报文给A;
(3) A收到后,认可B为主, 将自己设置为slave状态, 并将邻居状态改为Exchange, 使用序列号Y发送DD报文, 这个DD报文开始携带了LSA摘要信息;
(4) B收到A的DD后, 将邻居状态改为Exchange状态; 发送DD报文,序列号改为Y+1, 发送的DD报文开始携带LSA摘要信息, 如此A,B之间进行多轮的DD交换;

2. LSDB同步:
(1) A收到最后一个DD报文(M=0)后,发现B的很多LSA自己没有,将邻居状态改为Loading, B也收到了最后一个DD报文,发现A的所有LSA自己都有, 将邻居状态设置为Full;
(2) A发送LSR请求,B使用LSU回应, A使用LsAck确认;
(3) A完成全部的LSDB同步后, 将邻居状态改为Full;

2.9 LSA如何更新删除?

LSA有个Age字段, LSDB默认30分钟更新一次, 3600秒老化,删除LSA;
当你在一台OSPFDR-Other路由器上undo network 一条路由时, DR-Other会向DR发送一条LSU更新,将那条LSA的age设置为3600秒, DR再通告给所有邻接对象去删除这条LSA;

2.10 更多细节注意

问: R1作为ABR生成一条3类LSA, 通告路由器时1.1.1.1; 在R31上看到这条3类LSA的通告路由器id是多少呢?
答: 因为R31不认识谁是R1, 它只认识R3, 所以当R3收到这条3类LSA时, 会更新通告路由器为3.3.3.3才行.

OSPF路由协议分享_第4张图片

3. 总结

作为网络工作从业者来说要学习的技术协议非常的多,特别像OSPF协议这样,细枝末节多如牛毛, 我们如何才能做到可以长期的记住他们,而不是像熊瞎子掰苞米呢? 一定要有自己的记忆方法, 从宏观到微观, 抓重点, 这样即使多年之后,你只要稍微看看就能捡起来.

你可能感兴趣的:(数通)