目录
一、基本概念
1.概念
2.特点
3.相关术语
Router-ID
度量值
ABR与ASBR
二、报文
1.格式
2.报文
三、邻居建立过程
三张表
8状态
编辑四、DR与BDR选举
选举规则
五、网络类型
六、LSA
OSPF%E7%9A%84%E7%89%B9%E6%AE%8A%E5%8C%BA%E5%9F%9F%E5%8F%8A%E9%98%B2%E7%8E%AF%E6%9C%BA%E5%88%B6-toc" name="tableOfContents" style="margin-left:0px">七、OSPF的特殊区域及防环机制
作用:
要求:
防环机制:
OSPF%E7%9A%84%E8%B7%AF%E5%BE%84%E9%80%89%E6%8B%A9-toc" name="tableOfContents" style="margin-left:0px">八、OSPF的路径选择
九、面试常问问题
一、基本概念
1.概念
开放式最短路径优先OSPF(Open Shortest Path First)是一种链路状态协议,具有路由变化收敛速度快、无路由环路、支持变长子网掩码(VLSM)和汇总、层次区域划分等优点,基于IP协议的89号(协议号)
2.特点
基于链路状态的路由协议
支持层次化的网络设计
支持可变长子网掩码(VLSM)
快速收敛
无环路设计
支持多路径负载均衡
强大的认证机制
灵活的度量值设置
支持多种网络类型
路由优先级为10(优先级值越低表示优先级越高)
采用组播的方式更新
(224.0.0.5表示所有运行OSPF的设备都属于该组,224.0.0.6表示DR与BDR属于该组)
3.相关术语
Router-ID
(非抢占式)
RID用于OSPF域中唯一的标识
RID的优先级顺序:
①手工配置RID(优先级最高)
②无手动配置最大回环口的IP地址(因为回环接口稳定而物理接口状态可能受实际环境up/down)
③无回环口接口则选举最大的物理接口IP地址
度量值
ospf使用cost(开销)作为度量值,路由协议继优先级之后根据开销来选择路径。
10^8(100Mbit)/接口带宽=接口开销,所有的接口开销总和=接口开销
(根据上面公式可知接口带宽越大接口开销越小,路径越优)
ABR与ASBR
区域边界路由器ABR
ABR路由器至少有一个接口是属于骨干区域的,而且必须为每一个与之相连的区域维护不同的链路状态数据库,另一个接口连接非骨干区域、
自治边界路由器ASBR
只要一台OSPF路由器引入了外部路由的信息,它就成为ASBR
骨干区域
area0
非骨干区域
非area 0
AS
二、报文
1.格式
字段名 | 长度(字节) | 功能描述 |
---|---|---|
Version | 1 | OSPF协议版本,目前为2(OSPFv2)或3(OSPFv3)。 |
Type | 1 | 报文类型,标识报文的种类(Hello、DD、LSR、LSU、LSAck)。 |
Packet Length | 2 | 整个OSPF报文的长度,包括OSPF头部。 |
Router ID | 4 | 发送该报文的路由器的ID。 |
Area ID | 4 | 报文所属的区域ID,0表示骨干区域。 |
Checksum | 2 | 校验和,用于检测报文在传输过程中是否出错。 |
AuType | 2 | 认证类型,标识使用的认证方式(0:无认证,1:简单密码,2:MD5)。 |
Authentication | 8 | 认证信息,根据AuType字段的不同,可以是密码或MD5摘要。 |
2.报文
Hello:hello报文
作用:用来发现、建立、维护邻居之间的关系
参数:区域、hello time(10s)、Dead time(40s)、优先级、认证类型、组播地址
DBD:数据库的摘要(LSA信息)
作用:用于向邻居通告自己所知道LSA摘要信息
参数:
LSR:链路状态请求包
作用:根据收到的DBD报文之后,设备会向邻居发送LSR,告诉邻居之间需要哪些LSA相关信息
LSU:链路状态更新包
作用:邻居接收到从邻居发送来的LSR,根据LSR,将邻居需要的完整LSA内容全部发送
LSAck:链路状态确认包
作用:对邻居发送过来的LSU进行确认
三、邻居建立过程
三张表
邻居表:存放邻居的相关信息
当发送的hello报文被对方发现并确认之后,则将其加入到邻居表中
条件:地址以及掩码要一致、hello time、dead time要一致、区域要一样、认证类型要一样、特殊区域要一样
这个时候邻居关系为two-way状态
设备通过了hello报文的交互,但可能并未开始交互LSA信息,只有当邻居之间交换LSA信息之后,邻居关系才为full状态
拓扑表:存放每台设备对整个拓扑的认知(称为链路状态数据库--LSDB)
路由表:存放从拓扑表中通过SPF计算出来的最优路径
8状态
①down:
没有收到其他的hello报文
②init:初始化状态(单向通信)
接口刚启用OSPF,往组播224.0.0.5发送hello报文,接收到邻居发送的hello报文,但邻居并未收到自己发送的hello报文
③two-way:邻居状态(双向通信)
在组播地址中收到邻居发送的hello报文并且对方已经添加了自己网段RID的hello报文(即邻居之间均收到对方发送的hello报文),这时候进行DR/BDR的选举
④exstart:预启动状态
选举主从关系为了确定在exchange状态有序发送DBD报文
(若两端的MTU不一致会卡在这个状态)
⑤exchange:交换状态
互相交换机DBD(数据库摘要信息),建立各自的拓扑表
⑥loading:加载状态
请求对方的LSA全部信息,交互LSR、LSU、LSAck
⑦full:邻接状态
建立邻居关系,达到LSDB同步
⑧attempt(特殊):尝试状态
只有可能出现非广播多路访问环境中,想要建立OSPF的邻居关系,但不知道发数据包发给谁
报文及状态过程:
四、DR与BDR选举
在OSPF中,多路访问网络(如以太网)上可以有多个路由器互连。为了减少网络中的广播流量,OSPF引入了DR和BDR的角色。DR负责向所有非DR/BDR路由器发送和接收链路状态更新(LSU),而BDR则是DR的备份,当DR失效时,BDR会自动接管DR的职责。
DR(Designated Router):在一个多路访问网络中,DR是唯一负责与其他路由器交换链路状态信息的路由器。它会将接收到的链路状态更新(LSU)转发给所有非DR/BDR的路由器,从而减少网络中的广播流量。
BDR(Backup Designated Router):BDR是DR的备份,当DR失效时,BDR会立即接管DR的职责,确保网络的正常运行。
(非抢占式)
举个栗子:
老师布置作业之后,每个人都要将作业讲给老师,老师还有其他班的学生很不方便。这时候出现了班长(DR),所以学生将作业交给班长,如果班长有事,那就将作业交给学习委员(BDR),这样就不会使作业乱传了。
选举规则
①比较接口优先级,大的优先
②以太网环境优先级默认为1,串行链路默认为0
③优先级一样,比较RID,RID大的优先
五、网络类型
六、LSA
LSA:Link State Advertisement,链路状态通告,路由器发出的关于网络结构的通告,描述了链路或接口的状态及每条链路的成本
链路状态数据库(LSDB)由LSA组成
LSA的老化时间为3600s,更新时间为1800s
区域内:
区域间:
OSPF%E7%9A%84%E7%89%B9%E6%AE%8A%E5%8C%BA%E5%9F%9F%E5%8F%8A%E9%98%B2%E7%8E%AF%E6%9C%BA%E5%88%B6" name="%E4%B8%83%E3%80%81OSPF%E7%9A%84%E7%89%B9%E6%AE%8A%E5%8C%BA%E5%9F%9F%E5%8F%8A%E9%98%B2%E7%8E%AF%E6%9C%BA%E5%88%B6">七、OSPF的特殊区域及防环机制
作用:
要求:
- 骨干区域不能配置为特殊区域
- Stub区域不能有ASBR存在,除非这台ASBR也是ABR必须存在至少一个ABR
- 特殊区域是邻居建立成功的条件之一,要求同一个区域中的所有路由器都必须配置为特殊区域
- 虚链路不能透传特殊区域
Stub区域:(末梢区域)
作用:过滤LSA4、LSA5两类外部路由,并且ABR会向区域内自动下发一条默认路由
Totally Stub区域:(完全末梢区域)
作用:在Stub区域的基础上继续过滤,过滤掉LSA3区域间的路由,并且ABR会向区域内自动下发一条默认路由
NSSA区域:(非末梢区域)
作用:过滤掉LSA4、LSA5的外部路由,自己产生的LSA4和LSA5不过滤,而是变成新的LSA7,ABR不会向区域内部下发一条默认路由
Totally NSSA区域:(完全非末梢区域)
作用:在NSSA区域的基础上,过滤掉LSA3区域间的路由,并且ABR会向内部自动下发一条默认路由
防环机制:
区域内:(LSA1/2)
100%无环、SPF算法
区域间:(LSA3/4)
要求非骨干区域必须与骨干区域直连,非骨干区域之间不能直连
ABR设备从某个区域学习到LSA3路由信息不会再发送到该区域中
区域外:(LSA5)
FA地址(转发地址):OSPF的区域外防环机制通过FA地址(Forwarding Address)实现,FA地址用于指示外部路由的下一跳地址。ASBR的某个接口满足FA地址生成条件,因此FA地址被设置为该接口的IP地址。
FA地址为0.0.0.0时,流量通过ASBR转发;
FA地址为非0.0.0.0时,流量直接转发到FA地址指定的设备。
条件:FA地址的生成需要满足接口类型为广播与非广播多路、不能是被动接口,FA地址所在接口需通告进OSPF。
示例:
OSPF%E7%9A%84%E8%B7%AF%E5%BE%84%E9%80%89%E6%8B%A9" name="%E5%85%AB%E3%80%81OSPF%E7%9A%84%E8%B7%AF%E5%BE%84%E9%80%89%E6%8B%A9">八、OSPF的路径选择
区域内>区域间>区域外
九、面试常问问题
1.
mtu在哪里协商,是怎么协商的?如果协商不通过,会出现什么问题?
exstart阶段会进行协商。(华为默认不协商。报文中 MTU的字段填充为O)MTU协商规则:对方 DD 报文中 mtu 字段的值<=接收报文接口的 mtu 值。如果协商不通过会导致邻接关系停留在 exstart状态,无法建立full的邻接关系。
2.
为什么MA网络需要比较掩码?
如果在MA 网络中掩码不一致也能建立邻居关系,会导致DR无法正确描述当前MA网络的路由信息。
3.
两端的网络类型不一致时,会不会建立邻居?能建立邻居,路由是否正常?
NBMA只能与NBMA建立full邻接关系,与其他网络类型都无法建立FULL的邻居关系;
broadcast与P2P,能建立full邻接关系,但不能正常计算路由;
broadcas与 P2MP,通过修改hello/dead timer可以建立 full邻接关系,但也不能计算路由;
P2P与P2MP,通过修改hello/dead timer可以建立full 邻接关系,路由计算也正常
4.
MA网络中DRother只和DR/BDR建立邻接关系,这一机制是如何实现的?
DRother只与DR和BDR建立全邻接关系(Full Adjacency)。DRother之间不会建立全邻接关系,而是保持2-Way状态。在Hello报文中,路由器会列出已知的DR和BDR。DRother通过Hello报文确认DR和BDR的身份。当DRother收到DR或BDR的Hello报文时,会将邻居状态从Init转换为2-Way。DRother与DR/BDR建立邻接关系后,会通过DD(Database Description)报文(单播)、LSR(Link State Request)报文和LSU(Link State Update)报文同步链路状态信息。
5.
为什么NBMA无法和其他网络类型建立邻居关系?
因为 NBMA 是通过手动、单播的方式发现邻居、发送hello 报文的,而其他网络类型即使配置了peer,也不会单播的发送hello 报文。
6.
以太网链路将网络类型改为P2P,接口不在同一网段是否能建立OSPF邻接关系?
可以,因为P2P是以DIP:224.0.0.5发送OSPF的hello报文的,而只要宣告进OSPF进程中的接口就等于加入了这个组,所以 AR1和AR2 接口即使不在同一网段,也能建立邻居关系,同时也能学习到路由。但是无法互访,因为底层链路是以太网链路,不同网段互访需要有路由以及相应的2层封装。
7.
为什么Area0不能配置成特殊区域?
特殊区域都会过滤5类LSA,如果Area0可以配置成特殊区域,那么将导致Area0和某些区域可能不存在外部路由而无法访问外部网络。
面试题来源于原文链接:https://blog.csdn.net/atmxs/article/details/142520462