FortiGate OSPF动态路由协议配置

server/2024/10/18 23:22:25/

1.目的

本文档针对 FortiGate 的 OSPF 动态路由协议说明。OSPF 路由协议是一种 典型的链路状态(Link-state)的路由协议,一般用于同一个路由域内。在这里,路由 域是指一个自治系统,即 AS,它是指一组通过统一的路由政策或路由协议互相交 换路由信息的网络。在这个 AS 中,所有的 OSPF 路由器都维护一个相同的描述 这个 AS 结构的数据库 , 该数据库中存放的是路由域中相应链路的状态信 息,OSPF 路由器正是通过这个数据库计算出其 OSPF 路由表的。作为一种链路 状态的路由协议,OSPF 将链路状态广播数据 LSA(Link State Advertisement)传 送给在某一区域内的所有路由器。

2.环境介绍

本文使用 4 台 FortiGate 进行说明 , 本文使用的系统版本为 FortiOS v4.0MR2 Patch8。
在这里插入图片描述
在这里插入图片描述

3.OSPF 介绍

3.1 DR 与 BDR 选举

DR–指定路由器,BDR–备份指定路由器。在动态路由协议中,配置在同一区 域内的路由器之间要互相学习链路状态信息,当所有同一区域内的设备都具有相 同的数据链路信息后就可以计算出正确的路由。如果每两台设备之间互相学习, 工作量非常大。为了减少工作量,在这个网络上的设备中选出一个作为 DR,所有 其他设备都只需要和这台这设备交互信息即可完成链路状态的学习。
在这里插入图片描述

DR,BDR 选举规则:
1.当选举 DR/BDR 的时候要比较 hello 包中的优先级,优先级最高的为 DR, 次高的为 BDR.
2.如果 OSPF 路由器的优先级,全部都是默认值 1,路由器默认通过 Router-ID, 选举 DR/BDR,如果 Router-ID 最大的成为 DR,次大的成为 BDR。其余的统统都 是 DR-other。如果路由 ID 未设置,则使用接口最大地址。
3.将优先级改为 0 的设备将永远不参与 DR 选举。
FortiGate 的优先级需要在命令行下配置

config router ospfset abr-type standardconfig ospf-interface edit “ex”#配置 OSPF 接口#编辑 OSPF 接口名称set interface "port5"set ip 192.168.118.233set priority 10                       #设置优先级end
end

3.2 OSPF 邻居建立过程

1.Down:此状态还没有与其他路由器交换信息。首先从其 ospf 接口向外发送 hello 分组,还并不知道 DR(若为广播网络)和任何其他路由器。发送 hello 分组使 用组播地址 224.0.0.5。
2.Attempt: 只适于 NBMA 网络,在 NBMA 网络中邻居是手动指定的,在该状 态下,路由器将使用 HelloInterval 取代 PollInterval 来发送 Hello 包.
3.Init: 表明在 DeadInterval 里收到了 Hello 包,但是 2-Way 通信仍然没有建 立起来.
4.two-way: 双向会话建立,而 RID 彼此出现在对方的邻居列表中。(若为广 播网络:例如:以太网。在这个时候应该选举 DR,BDR)
5.ExStart: 信息交换初始状态 ,在这个状态下 ,本地路由器和邻居将建立 Master/Slave 关系,并确定 DD Sequence Number,路由器 ID 大的的成为 Master.
6.Exchange: 信息交换状态,本地路由器和邻居交换一个或多个 DBD 分组 (也叫 DDP) 。DBD 包含有关 LSDB 中 LSA 条目的摘要信息)。
7.Loading: 信息加载状态:收到 DBD 后,将收到的信息同 LSDB 中的信息 进行比较。如果 DBD 中有更新的链路状态条目,则向对方发送一个 LSR,用于请 求新的 LSA 。
8.Full: 完全邻接状态,邻接间的链路状态数据库同步完成,通过邻居链路状 态请求列表为空且邻居状态为 Loading 判断。
3.3 LSA 的类型
LSA(链路状态广播)是链接状态协议使用的一个分组,它包括有关邻居和通 道成本的信息。 LSAs 被接收路由器用于维护它们的路由选择表。 LSA: Link-State Advertisement。LSA 常用类型分为以下几种:
类型 1:Router LSA:每个路由器都将产生 Router LSA,这种 LSA 只在本区域 内传播,描述了路由器所有的链路和接口,状态和开销.
类型 2:Network LSA:在每个多路访问网络中,DR 都会产生 Network LSA,它 只在产生这条 Network LSA 的区域泛洪描述了所有和它相连的路由器。
类型 3:Network Summary LSA:由 ABR 路由器始发,用于通告该区域外部的 目的地址.当其他的路由器收到来自 ABR 的 Network Summary LSA 以后,它不会 运行 SPF 算法,它只简单的加上到达该 ABR 的开销和 Network Summary LSA 中包含的开销,通过 ABR,至目标地址的路由和开销一起被加进路由表里。
类型 4:ASBR Summary LSA:由 ABR 发出,ASBR 汇总 LSA 除了所通告的目 的地是一个 ASBR 而不是一个网络外,其他同 Network Summary LSA.
类型 5:AS External LSA:发自 ASBR 路由器,用来通告到达 OSPF 自治系统 外部的目的地,或者 OSPF 自治系统那个外部的缺省路由的 LSA.这种 LSA 将在 全 AS 内泛洪(4 个特殊区域除外)
类型 7:NSSA External LSA:来自非完全 Stub 区域(not-so-stubby area)内 ASBR 路由器始发的 LSA 通告它只在 NSSA 区域内泛洪,这是与 LSA-Type5 的 区别.

3.4 OSPF 的区域

主干区(backbone area):主干区是 OSPF 的主区域,每个 AS 内必须有主干区, 所有其他区域连接至主干区,2 个区域之间需要传递路由信息,也将经过主干区域。 主干区拥有 AS 内部及外部路由。主干区域以 IP 地址 0.0.0.0 标识,即 area 0
常规区(regular area):连接至主干区域,不转发其他区域路由,仅拥有 AS 内部 路由。
末梢区域(stub area):只有一个区域相连的非骨干区域,不接受自治系统外部 的 LSA(类型 5),仅拥有本区域路由,使用默认路由访问其他区域及 AS 外部。
非完全末梢区域(NSSA):允许外部路由通告到 ospf 自治系统内部,而同时保 留自治系统其余部分的末梢区域部分,并将从 NSSA 收到的 AS 外部路由 LSA 7 转通过 ABR 换为 LSA5 通告给 AS 内部,拥有本区及外部路由。

4.FortiGate OSPF 配置

4.1 GateA 配置
在这里插入图片描述

4.2 GateB 配置

在这里插入图片描述
4.3 GateC 配置

在这里插入图片描述
4.4 配置完成后各个 Gate 路由表

GateA OSPF 路由表

在这里插入图片描述
GateB OSPF 路由表

在这里插入图片描述

GateC OSPF 路由表

在这里插入图片描述

4.5 通过命令查看 OSPF 状态

查看 OSPF 邻居状态

GateA # get router info ospf neighbor OSPF process 0:
Neighbor   ID              Pri        State                              Dead   Time        Address
Interface				
0.0.0.8	1	Full/DROther	00:00:31	192.168.118.233 port1
0.0.0.9	1	Full/Backup	00:00:40	192.168.118.235 port1GateA # get router    info ospf route
C    172.16.1.0/24 [10] is directly connected, port5, Area 0.0.0.1
IA 172.16.2.0/24 [20] via 192.168.118.235, port1, Area 0.0.0.0
IA 172.16.3.0/24 [20] via 192.168.118.233, port1, Area 0.0.0.0
C    192.168.118.0/24 [10] is directly connected, port1, Area 0.0.0.0

5.OSPF 路由重发布

路由重发布可将其他路由协议以外部路由方式引入到 OSPF 网络当中 ,如将 GateC 中的直连路由发布至 OSPF 网络
在这里插入图片描述
重发布后的 GateA,B,C 路由表
GateA 路由表
在这里插入图片描述

GateB 路由表
在这里插入图片描述

GateC 路由表
在这里插入图片描述

6.Total stub 与 Total NSSA

Total Stub 与 NSSA 同普通 Stub,NSSA 区域的区别在于,Total stub,nssa 不 接收 LSA3,LSA4 的路由更新。可以通过命令行将其配置不接受汇总路由的更新。
在这里插入图片描述

Total stub  配置
config router ospfconfig areaedit 0.0.0.2set stub-type no-summary                #关闭汇总路由更新set type stub next
end 
end
Total NSSA 配置
config router ospf config areaedit 0.0.0.3set stub-type no-summary              #关闭汇总路由更新set type nssa next
end 
end

7.OSPF 的 Troubleshooting

查看 OSPF 协议状态
get router info ospf status
查看 OSPF 邻居信息及状态  get router info ospf neighbor 查看 OSPF 接口状态信息
get router info ospf interface 查看 OSPF 路由表
get router info ospf route 重启 OSPF 进程
execute router clear ospf process
详尽的 debug 信息可通过以下命令开启。
GateA # diagnose ip routerospf all             all OSPF debug
events       OSPF Events
ifsm           OSPF Interface State Machine
level         debug level
lsa            OSPF Link State Advertisement
nfsm           OSPF Neighbor State Machine
nsm            OSPF NSM information
packet       OSPF Packets
route         OSPF route information
show          show status of ospf debugging
开启 events 事件,关闭 debug,可以输入 diagnose debug disable
GateA # diagnose ip routerospf    level info  GateA # diagnose ip routerospf    events en GateA # diagnose debug enable
GateA   #    id=36870    msg="OSPF:    LSA[0.0.0.0:Type3: 172.16.2.0:0.0.0.9]: Instance(0xbffffa64) created with Link State Update"
id=36870                msg="OSPF:                 LSA[0.0.0.0:Type1:0.0.0.8:0.0.0.8]: Instance(0xbffffa64) created with Link State Update

http://www.ppmy.cn/server/124447.html

相关文章

刷题训练之队列与宽搜

> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:熟练掌握字符串算法。 > 毒鸡汤:学习,学习,再学习 ! 学,然后知不足。 > 专栏选自:刷题…

Docker部署MongoDB教程

嘿,大家好!今天我在三丰云免费服务器上进行了一次激动人心的MongoDB部署测试。这款免费云服务器1核CPU、1G内存、10G硬盘、5M带宽,是不错的免费服务器选择。 首先,让我们简要介绍一下使用到的Docker和MongoDB软件。Docker是一个开…

鸿蒙开发(NEXT/API 12)【硬件(获取智慧出行连接状态)】车载系统

获取智慧出行连接状态,用于应用UI呈现或基于HiCar认证汽车摄像头的业务交互等。 接口说明 接口名描述[getSmartMobilityStatus] (type: SmartMobilityType): SmartMobilityInfo获取智慧出行连接状态。 开发步骤 导入Car Kit模块。 import { smartMobilityCommon …

C++学习9.27

1、顺序表、栈、队列都更改成模板类 &#xff08;1&#xff09;顺序表 #include <iostream> #include <cstring>using namespace std;template <typename T1,typename T2,typename T3> class My_string { private:T1 *ptr; //指向字符数组的指针T2…

Spark 任务与 Spark Streaming 任务的差异详解

Spark 任务与 Spark Streaming 任务的主要差异源自于两者的应用场景不同&#xff1a;Spark 主要处理静态的大数据集&#xff0c;而 Spark Streaming 处理的是实时流数据。这些差异体现在任务的调度、执行、容错、数据处理模式等方面。 接下来&#xff0c;我们将从底层原理和源…

组播基础-2-IGMP协议

文章目录 IGMPIGMPv1IGMPv2IGMPv3IGMP总结IGMP Snooping IGMP 运行于主机和路由器之间 因特网组管理协议&#xff0c;TCP/IP 协议族中负责 IP 组播成员管理的协议&#xff0c;用来在接收者与其他直接相邻的组播路由器之间建立、维护组播组成员关系 负责组播成员管理&#xf…

探索Python网络世界的利器:Requests-HTML库

文章目录 探索Python网络世界的利器&#xff1a;Requests-HTML库背景&#xff1a;为何选择Requests-HTML&#xff1f;什么是Requests-HTML&#xff1f;如何安装Requests-HTML&#xff1f;5个简单库函数的使用方法3个场景下库的使用示例常见Bug及解决方案总结 探索Python网络世界…

Istio

Istio 是一个开源的服务网格平台&#xff0c;它为微服务架构提供了一套完整的解决方案。Istio 能够管理服务间的交互&#xff0c;提供流量管理、安全性和可观测性等功能&#xff0c;而无需修改应用程序本身的代码。它旨在简化现代分布式系统中服务间通信的复杂性&#xff0c;并…