OSPF 协议

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

形容:

  • 无类别链路状态协议

    无类别 ---- 存在掩码

  • IGP 内部网关协议

  • 动态路由协议

一、链路状态协议(LS)

OSPF 协议 隶属于 链路状态协议。

区别:

  1. 距离矢量协议(DV):运行距离矢量协议的路由器会 周期性的泛洪 自己的路由表。通过路由的交互,每台路由器从相邻的路由器学习到路由,并且加载进自己的路由表中;

    对于网络中的所有路由器而言,路由器 并不清楚 网络的拓扑结构,只是简单的知道要去往某个目的地的方向在哪儿,距离多远。这既是距离矢量协议的本质

  2. 链路状态协议(LS):与距离矢量协议不同,链路状态协议通告的是链路状态信息(拓扑信息),而不是路由表

    运行链路状态协议的 路由器之间 会先建立一个协议邻居关系,然后彼此之间开始交互 LSA链路状态通告)。每台路由器都会产生 LSA,路由器将接收到的 LSA 放入自己的 LSDB(链路状态数据库)中。路由器通过 LSDB,掌握了全网所有的拓扑信息。最后,由路由器通过 SPF 算法 计算出 最优路径,随后加载于自己的路由表中。

LS 图解:

1.建立邻居关系

OSPF 协议_第1张图片

2.互相传递链路状态信息

OSPF 协议_第2张图片

3.计算最优路径(SPF算法)

OSPF 协议_第3张图片

4.生成路由表项

OSPF 协议_第4张图片

OSPF 特征

  1. 支持 等开销负载均衡

  2. 基于 组播地址 进行更新 ---- 224.0.0.5 / 224.0.0.6

  3. 支持 触发更新:每 30min 进行一次 周期更新

  4. 需要 结构化 的部署 ---- 区域划分 地址规划

    相同区域传递拓扑不同区域传递路由

    区域划分的规则

    1. 星型结构0区骨干区域大于0 则为非骨干区域;所有非骨干区域必须接入到骨干区域上。

    2. 必须要有 ABR 域间路由器两个区域相连时必须存在 ABR,ABR 同时工作 在两个区域上。

Router-ID 路由器标识符

作用:

用于一个 OSPF域唯一的标识 一台路由器(取名)。

定义:

缩写RID

  1. Router-ID 的设定可以通过手工配置的方式,或使用系统自动生成的方式。

  2. 定义 RID 值,建议使用 IP地址全网唯一,要是 不进行手工配置 则会 自动生成;优先配置为 环回的最大数值,如果 没有环回,则 自动配置最大物理接口数值

路径计算:
  1. 使用 COST 值 作为 度量值/开销

    COST(开销值) = 参考带宽 / 接口带宽

  2. 默认参考带宽100M,整段路径 COST值之和最小最佳

  3. 弊端:若接口带宽 大于 参考带宽,即 cost 值为小数,则默认 度量值为 1,可能会导致 选路不佳(负载均衡);

    故而在接口带宽大于参考带宽的网络中,可以人为的 修改参考带宽

二、数据包类型

分类:
  1. HELLO 包:用于 邻居间的发现关系建立保活,每 10s 发送一次。

  2. DBD/DD 包数据库描述包,用于携带 本地数据库目录

  3. LSR 包:链路状态请求包,在查看完 对端邻居的 DD 包 后,基于 本地的位置 查询 LSA,随后去 索要未知的 LSA 信息,就通过这个 LSR 包。

  4. LSU 包:链路状态更新包,用于携带 各种 LSA 信息

  5. LSACK 包:链路状态确认包,用于确认 接收到 对端的信息

三、状态机

图解:
OSPF 协议_第5张图片

OSPF 协议_第6张图片

OSPF 协议_第7张图片

  1. Down 状态:表示未激活的状态,一旦 本地发出 hello包,则进入下一个状态,接收到 hello包后,也会 被动进入 Init状态。

  2. Init 状态:表示初始化状态,发出 或者 接收 到 hello 包 都会进入到 Init 状态。

  3. Two-way/2-way 状态双向通信,表示建立了邻居关系;经过 条件匹配,成功则进入下一个状态机,失败则停留在 2-way 状态。

  4. Ex-start 状态预启动状态,发出 空的 DD 包,比较 RID 的大小,进行 主从选举,以 RID 大的为主

  5. Exchange 状态准交换状态,发送 有目录的 DD 包,双方交换 DD 报文,描述自己拥有的 LSA 信息

  6. Loading 状态加载状态,在查看完 对端邻居 的 DD 包 后,使用 LSR 包询问自己位置的 LSA 信息对端 使用 LSU 包 进行回复本地还需要 使用 LSACK 包 进行确认回复

  7. Full 状态邻接关系建立的标识,两者从 邻居关系 变为 邻接关系。

四、工作过程

  1. 启动配置完成后,本地组播 224.0.0.5 发送 hello 包

  2. hello 包将携带 本地的 RID 值已知邻居的 RID 值

  3. 若接收到 对端的 hello 包中自己的RID,则视为 认识 ;双方都认识则代表 邻居关系的建立,生成邻居表,开始进行 条件匹配

  4. 匹配成功,则进入下一个阶段不成功,则永远是邻居,使用 空的DBD包 进行 主从选举

  5. 对比 RID,大为优,且 优先进入 下一个状态,优先共享数据库目录,之后使用 LSR/LSU/LSACK 包获取未知的LSA信息加载于本地的LSDB中

  6. 启用 SPF算法 ,基于 本地 LSDB 生成 有向图,再计算出 最短路径树,再基于 树形结构 算出以本地为起始点 到达 全网各个节点最优路径,最后加载于 本地路由表 中,收敛完成 后,发送 hello 包保活 即可。

  7. 30min 进行一次 周期更新,周期更新即为 对比数据库目录,如果相同,则继续 hello 包 保活,如果不相同,则重新收敛

结构突变

  1. 新增一个网段:直连新增网络设备,直接使用更新包告知邻接关系,需要 ack确认

  2. 断开一个网段:直连断开网络设备,直接使用更新包告知邻接关系,需要ack确认。

  3. 无法沟通: hello time 10s ,dead time 40s,时间到了就会删除邻居信息

五、基础配置

进程区域:

ospf [进程号] router-id [IP地址]

创建 ospf 进程号为1,仅具有本地意义,同时 定义 RID值,建议使用 IP地址,全网需要唯一

如果不定义 RID 值,则会自动生成,建议手动配置

area [区域号]

进入对应区域,只能有一个 骨干区域

宣告:

反掩码:将掩码反过来
network [宣告IP/网段] [反掩码]
  • 0 将 对应的网络位 锁死,主机位 表示 除本来的地址之外 还有的变化

  • IP地址 的反掩码 全部锁死,即为 0.0.0.0

  • 网段 的反掩码 用 255.255.255.255 减去 对应网段掩码 即可。

IP地址 1.1.1.1 反掩码为 0.0.0.0,除 1.1.1.1 外还有 0种 变化。

网段 12.1.1.0 反掩码为 0.0.0.255,除 12.1.1.0 外还有 255种 变化。

参考带宽修改:

首先 进入 ospf 域

bandwidth-reference [网速]

修改参考带宽 为1000Mbits/s

[R1-ospf-1]bandwidth-reference 1000

注意:一旦修改参考带宽,需全网所有设备都修改一致

查询配置表:

display ospf peer

查询 详细邻居关系

display ospf brief

查询 邻居表

display ospf lsdb [router-id] [RID 值]

查询 链路状态数据库

后面跟上 RID 值 可以查询 单独对应的 router 详细信息。

练习一:

OSPF 协议_第8张图片

 ### 首先进行基础配置 ###
 #创建 ospf 进程,进程号为 1,同时定义 RID 值
 [R1]ospf 1 router-id 1.1.1.1
 #进入 区域 0
 [R1-ospf-1]area 0
 #宣告 IP地址
 [R1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
 #宣告 网段
 [R1-ospf-1-area-0.0.0.0]network 12.1.1.0 0.0.0.255
 ​
 #R2 配置,R2 为 域间路由器
 [R2]ospf 1 router-id 2.2.2.2
 [R2-ospf-1]area 0
 [R2-ospf-1-area-0.0.0.0]network 12.1.1.2 0.0.0.0
 #R2 为 域间路由器,还要配置 骨干区域 1
 [R2-ospf-1]area 1 
 [R2-ospf-1-area-0.0.0.1]network 23.1.1.1 0.0.0.0
 ​
 #R3 配置
 [R3]ospf 1 router-id 3.3.3.3
 [R3-ospf-1]area 1
 [R3-ospf-1-area-0.0.0.1]network 23.1.1.2 0.0.0.0
 [R3-ospf-1-area-0.0.0.1]network 3.3.3.3 0.0.0.0
 #查看 宣告配置
 [R3-ospf-1-area-0.0.0.1]display this
 #查看 ospf 配置
 [R3]display ip routing-table protocol ospf

OSPF 协议_第9张图片

 #连接测试,成功 ping通
 [R1]ping -a 1.1.1.1 3.3.3.3
 #查询 邻居详细关系
 [R1]display ospf peer 

OSPF 协议_第10张图片

 #查询 链路状态数据库
 [R1]display ospf lsdb

OSPF 协议_第11张图片

 #查询 数据库中 不同地址的详细信息
 [R1]display ospf lsdb router 12.1.1.1
 [R1]display ospf lsdb router 1.1.1.1

OSPF 协议_第12张图片

OSPF 协议_第13张图片

练习二:

OSPF 协议_第14张图片

这里我们选择 R2 作为 域间路由器 ,先进行基础配置。

 #R1 配置
 [R1]ospf 1 router-id 1.1.1.1
 #R1 为 1区
 [R1-ospf-1]area 1
 #宣告
 [R1-ospf-1-area-0.0.0.1]network 1.1.1.1 0.0.0.0
 [R1-ospf-1-area-0.0.0.1]network 12.1.1.1 0.0.0.0
 ​
 #R3 配置
 [R3]ospf 1 router-id 4.4.4.4
 #R3 为 2区
 [R3-ospf-1]area 2
 [R3-ospf-1-area-0.0.0.2]network 4.4.4.4 0.0.0.0
 [R3-ospf-1-area-0.0.0.2]network 24.1.1.2 0.0.0.0
 ​
 #R4 配置
 [R4]ospf 1 router-id 3.3.3.3
 #R4 为 0区
 [R4-ospf-1]area 0
 [R4-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0
 [R4-ospf-1-area-0.0.0.0]network 23.1.1.2 0.0.0.0
 ​
 ### R2 配置 ###
 [R2]ospf 1 router-id 2.2.2.2
 #R2 为 3区
 [R2-ospf-1]area 3
 [R2-ospf-1-area-0.0.0.3]network 2.2.2.2 0.0.0.0
 #连通 0区
 [R2-ospf-1-area-0.0.0.3]area 0
 [R2-ospf-1-area-0.0.0.0]network 23.1.1.1 0.0.0.0
 #连通 1区
 [R2-ospf-1-area-0.0.0.0]area 1
 [R2-ospf-1-area-0.0.0.1]network 12.1.1.2 0.0.0.0
 #连通 2区
 [R2-ospf-1-area-0.0.0.1]area 2
 [R2-ospf-1-area-0.0.0.2]network 24.1.1.1 0.0.0.0
 #检查 ospf 表
 [R2-ospf-1]display this

OSPF 协议_第15张图片

 #连接测试,依次 ping R1 R3 R4 的 环回进行检验
 [R2]ping -a 2.2.2.2 1.1.1.1六、扩展配置

六、扩展配置

1.从邻居关系建立成为邻接关系的条件

分类:
  • DR(指定路由器)

    一个网段上的 其他路由器 都和 指定路由器(DR) 构成 邻接关系,而 不是它们 互相之间 构成邻接关系。

  • BDR(备份指定路由器)

    当 DR 出现问题,由 BDR 接手 DR 的工作,同时会 再选举 出一个BDR。

  • DR Other:其他路由器。

  • ABR :域间路由器

网络类型:
  1. 点到点的网络:在一个网段中,仅支持 存在两个节点 的网络。(在点到点的网络类型中,可以 直接 成为 邻接关系

  2. MA多路访问 ---- 在一个网段内,存在的节点数量不限

在MA网络中,若所有设备 均是邻接关系,则会造成大量的 重复更新,故进行 DR/BDR 的选举,所有 非 DR/BDR 的设备 被称之为DRotherDRother 之间 维持 邻居关系

2.修改接口优先级:

选举规则:
  1. 先比较参选接口的 优先级默认为 1,范围 0~255,大为优

  2. 若参选接口的优先级相同,比较参选设备的 RID,大为优。

  3. 当优先级设置为 0 时,默认 不参加选举,就不会成为 DR/BDR。

首先要进入 对应的接口

ospf dr-priority [优先级]
注意:
  • OSPF 的 DR选举非抢占性 的,故需要 重启 ospf 进程 达到 重新选举的目的。
  • 可以在配置 OSPF 进程 之前 进行 优先级的设置,这样可以省去后续 重启进程 的步骤。

重启 OSPF 进程:
reset ospf process

注意:首先要退至 用户视图 (尖括号)。

3.手工认证

首先进入对应邻居接口

ospf authentication-mode md5 [编号] cipher [密码]

邻居间接口定义安全密钥 ,编号任意。

4.手工汇总 ---- 汇总区域

域间路由器 ABR 上将 A区域 共享到 B区域 时,方可进行 手工汇总。

首先进入到需要汇总的 ospf 区域

abr-summary [汇总网段] [展开式掩码]

在需要汇总的区域 进行 手工汇总

5.被动/沉默接口

仅接受 不发送路由信息 的接口,仅能配置在 路由器 与 PC 之间

首先进入需要设置被动接口的路由器的 ospf 进程

silent-interface g [接口号]

设置该接口为 沉默接口

6.加快收敛-改计时器

  • 修改一台路由器的 hello time,该接口的 dead time 将 自动关闭匹配

  • 邻居间直连接口hello/dead time 时间不一样,则无法建立邻居关系;

  • 修改时,不易修改的过小

7.缺省路由

边界路由器 上配置一条 缺省信息 之后,该设备将向 内部所有设备 发送缺省路由,方向 指向边界路由器

首先要进入 边界路由器 的 ospf 进程。

default-route-advertise always

下发 缺省路由。

练习三:

OSPF 协议_第16张图片

 ### 先进行基础配置 ###
 #R1 配置
 [R1]ospf 1 router-id 192.168.0.1
 [R1-ospf-1]area 0
 #宣告 网段
 [R1-ospf-1-area-0.0.0.0]network 192.168.0.0 0.0.0.255
 #宣告 IP地址
 [R1-ospf-1-area-0.0.0.0]network 192.168.1.1 0.0.0.0
 ​
 #R2 配置,R2 为 域间路由器 ABR,同时在 0区 和 1区 工作
 [R2]ospf 1 router-id 192.168.3.1
 [R2-ospf-1]area 0
 [R2-ospf-1-area-0.0.0.0]network 192.168.1.2 0.0.0.0
 [R2-ospf-1-area-0.0.0.0]network 192.168.2.1 0.0.0.0
 [R2-ospf-1-area-0.0.0.0]network 192.168.3.1 0.0.0.0
 [R2-ospf-1]area 1
 [R2-ospf-1-area-0.0.0.1]network 192.168.4.1 0.0.0.0
 ​
 #R3 配置
 [R3]ospf 1 router-id 192.168.5.1
 [R3-ospf-1]area 1
 [R3-ospf-1-area-0.0.0.1]network 192.168.4.2 0.0.0.0
 [R3-ospf-1-area-0.0.0.1]network 192.168.5.1 0.0.0.0
手工汇总:
 #进行 手工汇总,汇总网段为 192.168.0.0 / 22
 [R2-ospf-1]area 0
 [R2-ospf-1-area-0.0.0.0]abr-summary 192.168.0.0 255.255.252.0
沉默接口/缺省路由:

给 R1 连接一台 PC;给 R3 新增加一个 外网IP 3.3.3.3/24。

 #配置 沉默/被动接口
 [R1-ospf-1]silent-interface g 0/0/1
 ​
 #下发 缺省路由
 [R3]ospf 1
 [R3-ospf-1]default-route-advertise always
 #查表检验
 [R1]display ip routing-table protocol ospf

七、作业

OSPF 协议_第17张图片

要求:
  1. R1~R3 为 0 区,R3~R4 为 1 区,其中 R3 环回也在 0 区

  2. R1~R3中,R3 为 DR 设备,没有 BDR

  3. R4 环回地址已固定,其他所有网段基于 192.168.1.0/24 进行合理划分

  4. R4 环回不能宣告全网可达,保障更新安全,避免环路,减少路由条目数量

子网划分:

128 64 32 16 8 4 2 1

借1位 将网段分成两部分:环回链路 0/25 和 骨干链路 128/25;

再将 环回链路 借1位 分成两部分:0/26 和 64/26,后者用于 环回接口

这里为了简便就不再将骨干链路细分成 /30 的网段了。

网段 子网
192.168.1.0/25 192.168.1.0/26
255.255.255.128 192.168.1.64/26
192.168.1.128/25

先进行基础配置。

分区宣告:

R1~R3 为 0 区,R3~R4 为 1 区,R3 是 域间路由器 ABR

 #R1 配置
 [R1]ospf 1 router-id 192.168.1.1
 [R1-ospf-1]area 0
 [R1-ospf-1-area-0.0.0.0]network 192.168.1.1 0.0.0.0
 ​
 #R2 配置
 [R2]ospf 1 router-id 192.168.1.2
 [R2-ospf-1]area 0
 [R2-ospf-1-area-0.0.0.0]network 192.168.1.2 0.0.0.0
 ​
 #R3 配置,R3 为 域间路由器 ABR
 [R3]ospf 1 router-id 192.168.1.3
 [R3-ospf-1]area 0
 [R3-ospf-1-area-0.0.0.0]network 192.168.1.3 0.0.0.0
 ​
 [R3-ospf-1]area 1
 [R3-ospf-1-area-0.0.0.1]network 192.168.1.129 0.0.0.0
 #这里选择 宣告网段 1.64/26,掩码为 255.255.255.192
 [R3-ospf-1-area-0.0.0.1]network 192.168.1.64 0.0.0.63
 ​
 #R4 配置
 [R4]ospf 1 router-id 4.4.4.4
 [R4-ospf-1]area 1
 [R4-ospf-1-area-0.0.0.1]network 192.168.1.130 0.0.0.0
 ​
优先级:

这里建议在配置 ospf 进程前先将R1 R2 优先级 配置为 0,这样就可以省去 重启进程 的步骤。

 ### 将 R3 设置为 DR,优先级为 0 即 不参加选举
 #R1 配置 优先级
 [R1-GigabitEthernet0/0/0]ospf dr-priority 0
 #R2 配置 优先级
 [R2-GigabitEthernet0/0/0]ospf dr-priority 0
 ​
 #重启进程,在 用户视图 进行#
 ###注意:等所有 ospf 进程都配置完毕后再进行重启###
 reset ospf process
 reset ospf process
手工认证:
 #将 相连的 R1 ~ R3 都进行 手工认证,设定编号为 1
 [R1-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456
 [R2-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456
 [R3-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456
缺省路由:
 #在 边界路由器 R4 上配置 缺省路由
 [R4-ospf-1]default-route-advertise always
 #配置完后记得在 其他路由器 进行查表检验
 #此时已经 全网通
 ping 4.4.4.4
手工汇总:
 # 将  R1 ~ R3(0区) 进行 手工汇总,在 ABR 上进行配置
 [R3]ospf 1
 [R3-ospf-1]area 0
 #汇总网段为 192.168.1.0 / 25
 [R3-ospf-1-area-0.0.0.0]abr-summary 192.168.1.0 255.255.255.128
 #在 R4 上进行 查表检验
 display ip routing-table protocol ospf

你可能感兴趣的:(HCIA,智能路由器,网络,网络安全,网络协议)