计算机网络 --- OSPF

获取未知网段路由信息的方法:

静态路由 --- 由网络管理员手工配置的路由信息

动态路由 --- 所有路由器运行相同的路由协议,由路由器之间彼此沟通交流,最终计算出到达未知网段的路由信息

AS --- 自治系统

IGP --- 内部网关协议 --- RIP,OSPF,EIGRP,ISIS

EGP --- 外部网关协议 --- BGP

IGP协议根据算法进行划分:

距离矢量型协议:路由器之间直接传递路由条目信息 --- "贝尔曼·福特算法" --- "依据传闻的路由" ---RIP

链路状态型协议:路由器彼此之间交换LSA(链路状态通告)信息,之后将收集到的拓扑信息形成图形结构,再使用SPF算法,将图形结构转换为树形结构,计算到达位置网段的路由信息 --- OSPF

IGP的评判标准:

选路佳,收敛快,占用资源少

1.OSPF因为是链路状态型协议,所以,从选路的角度,不会出现环路,并且,使用带宽作为开销的评判标准,相较于RIP而言,会更加合理一些

2.因为OSPF的计时器时间比RIP跟短,所以,收敛速度优于RIP

3.从占用资源的角度,因为RIP单个数据包中携带的路由信息占用资源量并不大,而OSPF单个数据包中携带LSA信息资源占用量会高于RIP,但是,从整体的角度看,OSPF并不存在像RIP这样高频的周期更新,并且,OSPF存在很多针对资源占用的优化机制,所以,从整体的角度看,OSPF的资源占用量略优于RIP

RIP的版本:RIPV1,RIPV2 --- IPV4

RIPNG --- IPV6

OSPF的版本:OSPFV1(实验室夭折),OSPFV2 --- IPV4

OSPFV3 --- IPV6

RIPV2和OSPFV2的相同点:

1.RIPV2和OSPFV2一样,都是无类别的路由协议

2.RIPV2和OSPFV2一样,都使用组播传递信息

RIPV2:224.0.0.9

OSPFV2:224.0.0.5和224.0.0.6

3.RIPV2和OSPFV2都支持负载均衡

RIPV2和OSPFV2的不同点:

RIP只能应用在小型网络环境中,而OSPF协议可以应用中大型网络环境中 --- OSPF支持结构化部署 --- 区域划分

如果整个网络只有一个OSPF区域,我们称之为单区域OSPF网络,如果一个网络规模较大,我们可以划分出多个OSPF区域,则这样的网络我们称为多区域OSPF网络

区域划分的目的:区域内部传递拓扑信息,区域之间传递路由信息

ABR --- 区域边界设备 --- 同时属于多个区域,一个接口对应一个区域,并且其中一个接口连接在骨干区域

一个ABR设备可以对应多个区域,区域之间也可以存在多个ABR设备

区域划分的要求:

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

2.区域划分必须按照星型拓扑结构进行划分 --- 星型拓扑中间区域我们称为骨干区域,其他的区域称为非骨干区域 --- 为了区分和标识不同的区域,我们需要给每一个区域设置一个区域ID(area ID)--- 由32位二进制构成 --- 可以直接使用十进制来表达,也可以使用点分十进制来表达 --- 骨干区域的区域ID被定义为区域0

1.OSPF的数据包

hello报文 --- 周期性的发现,建立和保活邻居关系

hello时间 --- 默认10S(30S)

Dead time --- 死亡时间 --- 4倍的hello时间

RID --- 路由器的ID --- 32位二进制构成

1.全网唯一;2.必须使用IP地址的格式进行配置

手工配置:由网络管理员直接配置给设备,手工配置仅需满足以上两点要求即可

自动生成:首先设备会选择自身环回接口的IP地址作为本地的RID,如果环回接口存在多个,则选择这些IP地址中数值最大的作为RID;如果设备并不存在环回接口,则使用物理接口的IP地址作为本地的RID,如果存在多个物理接口,则选择这些IP地址中数值最大的作为RID

DBD报文 --- 数据库描述报文 --- 链路状态数据库(LSDB)--- 里面携带的是LSA的摘要信息 --- 菜单

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

LSU报文 --- 链路状态更新报文 --- 真正携带LSA的数据包 --- 基于LSR的请求内容发送对端需要的LSA信息

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

OSPF存在每30分钟一次的周期更新

2.OSPF的状态机

Two-Way状态 --- 双向通信状态 --- 标志着邻居关系的建立

(条件匹配)条件匹配成功,则进入到后续的状态中,条件匹配失败,则将停留在邻居关系中,使用hello包进行周期保活

主从关系选举 --- 在Exstart状态下,使用未携带数据的DBD包,通过比较RID进行主从关系选举,RID大的为主,为主的可以优先挑选LSA

主从关系选举一方面为了避免同一时间进行数据交换而造成大量的链路资源浪费,另一方面是为了完成隐性确认 --- 为主的设备可以主导隐性确认

Full状态 --- 标志着邻接关系的建立 --- 主要为了和邻居关系进行区分;邻居关系仅能使用hello包进行周期的保活,而只有邻接关系可以交换LSA信息

Down状态:发送hello包后进入到下一个状态

Init(初始化)状态:当收到对方的hello包中包含自己本地的RID时,则可以进入到下一个状态

Tow-way(双向通信)状态:标志着邻居关系的建立

(条件匹配)--- 如果条件匹配通过,则进入到后续的状态中,条件匹配失败,则停留在邻居关系中,使用hello包进行周期保活

Exstart(预启动)状态:使用未携带数据的DBD包进行主从关系选举,为主的可以优先获取LSA信息

Exchange(准交换)状态:使用携带数据的DBD包,交换LSDB的摘要信息

Loading(加载)状态:使用LSR、LSU、LSACK报文交换未知的LSA信息

Full(转发)状态:标志着邻接关系建立

3.OSPF的工作过程

设备将从所有激活OSPF的接口处以组播形式发送hello包,组播地址是224.0.0.5,当收到一个其他设备发送的hello包中包含自己本地的RID时,则将进入到邻居状态,设备会将所有的邻居状态进行记录,生成一张表 ---邻居表 ;之后再进行条件匹配;匹配失败,则将停留在邻居关系,仅使用hello包进行周期保活;匹配成功,则开始建立邻接关系,首先,使用未携带数据的DBD包进行主从关系选举,之后,使用携带数据的DBD包交换本地LSDB的摘要信息;使用LSR、LSU、LSACK这三种数据包基于DBD包获取未知的LSA信息;之后,将所有的LSA信息记录在本地的一张表中 --- 数据库表(LSDB) 之后,根据本地的LSDB数据库表,获取完整的拓扑信息,使用SPF算法,将图形结构转换成树形结构,最终,计算出到达未知网段的路由信息;将这些路由信息加载到路由表中;收敛完成后,依然会使用hello包每隔10S进行一次周期保活;每隔30MIN进行一次周期更新

结构突变:

1.突然新增一个网段 --- 触发更新,在结构变更的第一时间中,将变更信息通过LSU包发送出去,需要LSACK进行确认

2.突然断开一个网段 --- 触发更新,在结构变更的第一时间中,将变更信息通过LSU包发送出去,需要LSACK进行确认

3.无法沟通 --- 40S死亡时间

4.OSPF的基础配置

1.启动进程

R1\]ospf 1 router-id 1.1.1.1 2.创建区域 \[R1-ospf-1\]area 0 3.宣告 宣告的作用:1.激活接口 --- 所有宣告网段范围内的接口将被激活,所有激活的接口可以收发OSPF的数据 2.发布路由 --- 只有激活接口对应的直连网段路由信息才能发布 \[R1-ospf-1-area-0.0.0.0\]network 1.1.1.0 **0.0.0.255 --- 反掩码** --- 由连续的0和连续的1构成,0对应位不可变,1对应位可变 ![](https://i-blog.csdnimg.cn/direct/80424cbf37ef4171a407cdd88e80e99c.png) MTU:0 --- 华为设备默认没有开启MTU的检测,所以,这里用0表示,并不代表真实的MTU值为0 ![](https://i-blog.csdnimg.cn/direct/04a9923e2b314cb38e8f095d903dec2f.png) ![](https://i-blog.csdnimg.cn/direct/9c9066de235f4187bf0bfab30c515afb.png) ![](https://i-blog.csdnimg.cn/direct/0a1e562bc7204b95845322fa9975ef93.png) ![](https://i-blog.csdnimg.cn/direct/775cda10a1f54c90be80563d730b2593.png) 在华为设备中,OSPF协议的默认优先级为10 COST = 参考带宽 / 真实带宽 --- 参考带宽默认为100Mbps --- 如果计算的结果是一个小于1的小数,则直接按1来取值;如果是一个大于1的小数,直接取整数部分 \[R1-ospf-1\]bandwidth-reference 1000 --- 修改参考带宽的数值 ![](https://i-blog.csdnimg.cn/direct/f706294548984b489cacc884aa353a88.png) 在运行OSPF的所有设备中必须修改为相同的参考带宽的数值 条件匹配 指定路由器 --- DR --- 在一个广播域中,我们需要拥有一台DR设备,DR设备和其他设备之间保持邻接关系 备份指定路由器 --- BDR --- 在一个广播域中,我们也需要选择一台设备为BDR设备,BDR设备和其他设备之间需要保持邻接关系 在一个广播域中,在DR和BDR都存在的情况下,至少需要四台设备才能看到邻居关系 DR和BDR其实是接口概念 条件匹配:如果在一个广播域中,所有设备都建立邻接关系,则将造成大量的重复更新,所以,需要进行DR/BDR的选举,只有DR和BDR和其他设备之间保持邻接关系,剩余所有DROther之间仅保留邻居关系即可 DR和BDR的选举规则: 1.先比较接口的优先级,接口优先级最大的设备为DR设备,在DR设备选出来后,会在剩余所有设备中选择优先级最大的为BDR设备 优先级默认为1,取值范围0 - 255,如果将一个接口的优先级修改为0,则这个接口将放弃 DR/BDR选举 \[R1-GigabitEthernet0/0/0\]ospf dr-priority ? --- 修改接口的优先级 INTEGER\<0-255\> Router priority value 2.如果接口的优先级相同,则比较RID;优先选择RID大的设备所对应的接口为DR,之后选择BDR设备,在剩余设备中,优先选择RID大的设备所对应的接口为BDR DR和BDR的选举是非抢占模式的 \reset ospf process --- 重新启动OSPF进程 Warning: The OSPF process will be reset. Continue? \[Y/N\]:y 所有运行OSPFV2的设备都会加入到一个组播组中,这个组播组的地址是224.0.0.5 所有DR和BDR设备会监听另外一个组播地址,224.0.0.6 OSPF的数据包 OSPF是一个跨层封装的协议,没有传输层,直接封装在网络层之上,IP协议中会有一个协议号来标定OSPF --- 89 OSPF的头部 --- 所有类型的OSPF数据包公共部分 ![](https://i-blog.csdnimg.cn/direct/8d9159e830f8450dac8215a465cf8ba9.png) 版本 --- OSPF的版本,一般使用OSPFV2,所以这里写2 类型 --- OSPF数据包的类型 Hello包 --- 1 DBD包 --- 2 LSR包 --- 3 LSU包 --- 4 LSACK包 --- 5 路由器ID --- RID --- 发送该数据包设备的RID 区域ID --- areaID --- 发出数据包接口所在的区域 验证类型 --- null --- 空认证 simple --- 明文认证 MD5认证 --- 比对摘要值 OSPF在进行手工认证时,需要比对两部分内容,第一部分是认证类型,必须一致;之后比对认证数据,也必须一致 ![](https://i-blog.csdnimg.cn/direct/e05e83beb9e04d2fb2b5f126914ddf82.png) 网络掩码 --- 发出数据包的接口地址的掩码 hello时间,死亡时间 --- 保活和失效判定的时间 8位的可选项 --- 每一位置1时都代表该设备符合某一种OSPF的特性 **特殊区域的标记** 路由器的优先级 --- 发出接口在进行DR和BDR选举时的优先级 DR和BDR --- 如果选举完成,则将DR和BDR的IP地址放在这个位置;如果没有选举出来或者缺少某种角色,则使用0.0.0.0来进行字段填充 邻居的RID --- 将携带所有本地已知的邻居的RID,用来建立邻居关系 Hello包在建立邻居关系时的条件: 1.hello时间 2.死亡时间 3.认证 4.特殊区域标记 5.网络掩码 以上邻居双方任何一个参数不一致,将导致邻居关系建立失败 ![](https://i-blog.csdnimg.cn/direct/8da0e5d75de149aa8ff68d4825fb06e2.png) ![](https://i-blog.csdnimg.cn/direct/c708292545c243aabfbc5c27ddb70067.png) 在DR和BDR选举时,存在一个选举时间,计时器时间为40S(同死亡时间,死亡时间修改,这个计时器的时间也会同步修改) ![](https://i-blog.csdnimg.cn/direct/7fcfb579dd154a6783a85dba8f61bed5.png) ![](https://i-blog.csdnimg.cn/direct/ccd5178aeb9045ddbc1995521371d04c.png) ![](https://i-blog.csdnimg.cn/direct/c4f2f6158a0d43379712ff41b56b1286.png) ![](https://i-blog.csdnimg.cn/direct/b2e62b5c4ecb465d8b13afe49c71482e.png) 2.DBD包 --- 1.进行主从关系选举;2.共享LSA摘要信息;3.确认包 ![](https://i-blog.csdnimg.cn/direct/4da1ead574f3435bb2e092967b537c29.png) MTU(最大传输单元) --- 开启检测功能后,会携带接口的MTU值,如果两端MTU值不同,可能会停留在Exstart状态 \[Huawei-GigabitEthernet0/0/0\]ospf mtu-enable --- 开启MTU检查功能 8位可选项 --- 每一位置1时都代表该设备符合某一种OSPF的特性 I --- init --- 如果I置1,则代表这个DBD包是用来进行主从关系选举的数据包 M --- more --- 如果M位置1,则代表后面还有其他的DBD包 MS --- master --- 如果MS位置1,则代表发送该数据包的设备为主设备 序列号 --- 1.用来表示数据包的顺序;2.用来进行隐型确认的 LSA头部 --- LSA的摘要信息 ![](https://i-blog.csdnimg.cn/direct/149cb95bedb24c219399a38b0812d0c6.png) ![](https://i-blog.csdnimg.cn/direct/b4208f4da1054a728a8fdd50e608ade8.png) ![](https://i-blog.csdnimg.cn/direct/b1b704b074514fcfbc797910d73d41e2.png) ![](https://i-blog.csdnimg.cn/direct/54970bd648b343f09bf21096cd294877.png) ![](https://i-blog.csdnimg.cn/direct/6404f0f6dd2c4c73b6a2fa085f780cae.png) LSR包 --- 基于DBD包请求未知的LSA ![](https://i-blog.csdnimg.cn/direct/64bec5477f904e5f9fed2a4b4fe5f38e.png) 链路状态类型,链路状态ID,通告路由器 --- LSA的三元组 --- 这三个参数可以唯一的标识出一条LSA LSU包 --- 真正携带LSA的数据包 ![](https://i-blog.csdnimg.cn/direct/0369b87fa7e24a21bfcd0f7c68242367.png) LSACK包 --- 确认包 ![](https://i-blog.csdnimg.cn/direct/1be79046a8cc44b6985fcadda5c1094d.png)

相关推荐
xlq223229 小时前
59.HTTP
网络·网络协议·http
Irissgwe9 小时前
二、Socket编程UDP
linux·网络·网络协议·udp·socket·socket编程
谪星·阿凯10 小时前
内网渗透之横向移动实战
网络·web安全·网络安全
爱吃龙利鱼10 小时前
ubuntu2026.04部署k8s1.36版本的傻瓜式教程(注:运行时为docker,网络插件为calico)
运维·网络·笔记·docker·云原生·kubernetes
L、21810 小时前
CANN异构计算实践:CPU+NPU协同工作的最佳模式
网络·人工智能·pytorch·python·安全
汤愈韬10 小时前
IP安全 SEC VPN_1_IA阶段各种名词讲解
网络·网络协议·安全·网络安全·security
EntyIU11 小时前
创建FastAPI项目步骤
网络·python·fastapi
cws20040111 小时前
网络安全基本知识-2
运维·网络
持敬chijing11 小时前
BUUCTF-WEB详细解题攻略1(按解出数降序排序)
网络·web安全·网络安全·网络攻击模型·安全威胁分析·web