OSPF复习

OSPF

OSPF---开放最短路径优先协议

动态路由判定依据:选路,收敛速度,占用资源

OSPFV2和RIPV2的相同点:

1.都是无类别的路由协议;

2.都是通过组播来传播信息的;(RIP:224.0.0.9;OSPF:224.0.0.5/224.0.0.6)224.0.0.X---本地链路组播

3.都支持等开销负载均衡;

224.0.0.5 用途:所有运行 OSPF 的路由器默认监听的组播地址。

功能

  • OSPF 路由器通过此地址发送 Hello 报文,用于发现邻居路由器并维护邻接关系。

  • 泛洪(Flooding)链路状态更新(LSU)时,非指定路由器(DR/BDR)通过此地址向其他路由器发送信息。

  • 所有 OSPF 路由器都会监听此地址的组播流量。

224.0.0.6 用途:仅由 OSPF 的 指定路由器(DR, Designated Router) 和 备份指定路由器(BDR, Backup Designated Router) 监听。

功能

  • 其他路由器通过此地址向 DR/BDR 发送链路状态更新(LSU)。

  • DR/BDR 负责将更新信息转发到整个网络(通过 224.0.0.5),确保高效的路由信息同步。

  • 避免多路访问网络(如以太网)中因广播风暴导致的冗余流量。

不同点:RIP只能在小型网络中使用,而OSPF可以应用在大型网络中,OSPF可以支持结构化部署(区域划分)

区域划分目的---区域内部传递拓扑信息,区域间传递路由信息---链路状态型协议的距离矢量特征

区域边界路由器(ABR)---同时属于多个区域,一个接口对应一个区域,该设备可以将一个区域内的拓扑信息收集进行计算,生成路由信息之后传递到其他区域

区域划分要求:

1.区域之间必须存在ABR设备;

2.区域划分必须按照星型拓扑结构划分;

OSPF的数据包

1.Hello报文---周期型的发现,建立以及保活邻居关系

hello时间(10S) Dead time(4倍hello时间)

route-id ---32位二进制构成---手工配置/自动生成(首先在环回地址的IP地址选择,如果有多个环回则选择数值最大的)

(1)全网唯一;(2)格式统一

2.DBD报文---数据库描述报文,在邻接关系建立时交换LSDB(链路状态数据库)摘要

3.LSR报文---链路状态请求报文,基于DBD包请求未知的LSA信息

4.LSU报文---链路状态更新报文,真正携带LSA信息数据包

5.LSAck报文---链路状态确认报文

OSPF协议存在30min一次的周期更新

OSPF报文头部

类型---OSPF的数据包类型

hello包(1);DBD包(2);LSR包(3);LSU包(4);LSACK包(5)

验证类型---1.null;2.明文;3.MD5

Hello包---进行周期性的保活和建邻;DR/BDR的选举

网络掩码---发出接口的IP地址对应的掩码信息,如果邻居双方的掩码信息不同,则无法建邻

hello时间/死亡时间---如果邻居的这两个时间不同,也无法正常建邻

8位可选项---包含OSPF特殊区域的标记;如果邻居双方特殊区域标记不同,则无法建立邻居关系

限制邻居关系的因素

1.hello时间/死亡时间

2.特殊区域标记

3.网络掩码

4.认证

DBD包---进行主从关系选举;共享摘要信息;确认(从设备最后会发送一个不包含数据的DBD包进行对主信息的确认)

I---init---如果I位置1,则代表是进行主从关系选举的数据包,不携带摘要信息

M---More---如果M位置1,则代表后面还有更多的DBD包,如果置0,则代表这个是最后一个DBD包

MS---master---如果MS位置1,则代表该设备是主

DBD序号---在DBD报文交互的过程中,会逐次加1,用于确保DBD包报文传输的有序性和可靠性

LSR---链路状态请求报文

链路状态类型,链路状态ID,通告路由器---LSA三元组,通过这三个参数可以确定唯一标定的一条LSA

LSU---链路更新报文

LSACK---链路状态确认报文

OSPF状态机
状态 描述
Down 初始状态,未检测到邻居活动
Init 收到邻居的Hello包,但对方尚未确认本端存在
2-Way 双向通信确认,邻居关系建立(广播网络中可能停留在此状态,非DR/BDR时)
ExStart 主从路由器选举,准备交换DBD包
Exchange 交换DBD包摘要,同步链路状态数据库(LSDB)的目录
Loading 请求并接收缺失的LSA(通过LSR/LSU)
Full 邻接关系完成,LSDB完全同步,可执行SPF计算

2-way标志着邻居关系的建立

指定路由器(DR)---和MA网络中剩余所有设备建立邻接关系

备份指定路由器(BDR)---和MA网络中剩余所有设备建立邻接关系

MA网络中其余所有的设备称为DRother

条件匹配

若本端或邻居是DR/BDR,继续推进到ExStart

若双方均为DROther,则停留在2-Way状态(无需建立邻接)

DR/BDR选举

1.先比较优先级,优先级大的为DR设备,优先级次大的为BDR设备,默认优先级为1。如果将一个接口的优先级改为0,则这个接口不参与DR/BDR的选举

2.优先级相同,比较route-id

DR/BDR的选举是非抢占模式的,选举时间等同于死亡时间

ExStart---通过未携带数据的DBD包来比较RID来进行主从关系的选举,为主的可以优先选择LSA信息

Attempt---只有在NBMA网络环境中出现,尝试状态,等待对方指定单播邻居,收到对方的hello包之后,将进入到下一个状态

常见故障与状态卡顿
卡顿状态 可能原因 排查方法
Init 单向Hello包(ACL过滤、单向链路) 检查双向Hello包是否包含对方Router ID
ExStart MTU不匹配、主从选举失败 验证接口MTU一致,抓包查看DBD标志位
Loading LSA请求超时或丢失 检查LSU/LSAck是否被丢弃(认证、QoS)
2-Way 非DR/BDR的DROther间关系 确认是否需要邻接(如无需则正常)
OSPF工作过程

启动OSPF配置后,OSPF会向本地所有激活OSPF的接口发送hello包,以组播224.0.0.5的形式发送。hello包中将携带本地的RID及本地已知邻居的RID,将收集到的邻居关系记录在邻居表中

邻居关系建立完成后,将进行条件匹配,失败则停留在邻居关系,仅使用hello包活,匹配成功则开始建立邻接关系。首先使用未携带数据包的DBD包进行主从关系选举,然后使用携带数据的DBD包共享数据库摘要信息,之后使用LSR/LSU/LSACK获取未知LSA信息,完成本地的LSDB链路状态数据库建立

最后,将基于本地收集到的LSA信息,生成有向图和最短路径树,计算到达未知网段的路由信息,将计算的路由信息收集到本地的路由表中。

收敛完成后,OSPF依然需要每隔10s进行周期保活

条件匹配

指定路由器(DR)---和MA网络中剩余所有设备建立邻接关系

备份指定路由器(BDR)---和MA网络中剩余所有设备建立邻接关系

MA网络中其余所有的设备称为DRother

OSPF的接口网络类型
网络类型 接口网络类型
BMA Broadcast(广播),需要进行DR/BDR选举
P2P(PPP,HDLC, MGRE,GRE) P2P,只建立一个邻居,不需要进行DR/BDR选举
环回接口 只是写作P2P,环回接口的开销值被定义为0,实际没有数据发送 ,学习到环回网段的路由位32位主机路由,可以通过将网络接口类型修改为Broadcast来还原
P2MP,可以建立多个邻居,不进行DR/BDR选举,hello时间30,dead时间120,会学习邻居接口的主机路由
NBMA(帧中继网络) NBMA,可以建立多个邻居,需要进行DR/BDR选举,hello时间30,需要手工建邻
相关推荐
达斯维达的大眼睛17 分钟前
Linux网络多进程并发服务器和多线程并发服务器
linux·服务器·网络
Lilith的AI学习日记1 小时前
LangChain高阶技巧:动态配置Runnable组件的原理剖析与实战应用
大数据·网络·人工智能·架构·langchain
安科瑞刘鸿鹏1 小时前
智能配电保护:公共建筑安全的新 “防火墙”
运维·网络·物联网·算法·安全·能源
czhc11400756631 小时前
网络5 TCP/IP 虚拟机桥接模式、NAT、仅主机模式
网络·tcp/ip·桥接模式
逆水寻舟1 小时前
尚硅谷2019版Java网络编程笔记
java·网络·笔记
Bidjc4 小时前
关于群晖安装tailscale后无法直链的问题
智能路由器·群晖·tailscale
邪恶的贝利亚10 小时前
FFMEPG常见命令查询
linux·运维·网络·ffmpeg
只会写Bug的程序员11 小时前
面试之《websocket》
网络·websocket·网络协议
christine-rr11 小时前
【25软考网工笔记】第二章 数据通信基础(1)信道特性 奈奎斯特 香农定理
网络·信息与通信·信号处理·软考
挣扎的蓝藻12 小时前
使用 Python 扫描 Windows 下的 Wi-Fi 网络实例演示
网络·windows·python