使用EVE-NG-锐捷实现OSPF
一、OSPF基础知识
Open shortest Path First(OSPF)开放式最短路径优先协议
1.OSPF的关系状态
(1)邻居关系(TWO-WAY)
- 只发送hello包不发送LSA包(链路状态通告包)
(2)邻接关系(FULL)
- OSPF设备与设备之间相互建立OSPF关系,初始为邻居关系(TWO-WAY)状态,最终会建立邻接关系(FULL)状态
- 既发送hello包,又发送LSA包(链路状态通告包)
2.OSPF建立关系的流程
- R1与R2要建立OSPF关系
- 一 开始R1与R2处于Down state的状志(R1与R2未建立任何关系)
- 然后R1会发送hello包到网络(通过组播地址:224.0.0.5)
- 其他的设备如果也在这个网络中同时也运行着OSPF协议就会监听到这个hello包
- 此时R2与R1在同一网络中,同时也运行着OSPF协议,R2监听到了R1发的hello包
- 接着R2会回复一个hello包
- 当R1收到R2回复的hello包后,R1与R2会进入init state(加载状态)
- 进入到init状态之后,此时是双向通信
- 接着会马上过渡到Two-way state 邻居状态(此时未发送具体的路由更新仅在交换hello包)
- 进入TWO-WAY状态后,是否会往后进行取决于:(如果在two-way状态下,两端设备的端口优先级都为0,此时他们不会往下进行会一直停留在two-way状态(因为两端设备都是DROTHERS)
- 如果他们会往下进继进行,他们会再次互相发送交换hello包进入EXstart stare状态,在交换hello包的过程中就选出了DR与BDR(若R1与R2端口优先级默认都为1,无法通过端口优先级选出DR与BDR,这时会比较Router-ID的大小来选出DR,Router-ID大的为DR)
- 在EXstart state状态下他们还会交换DBD消息,用于选举主从(此时发送的DBD消息没有携带路由数据条目境像,主要用于评估出谁先发DBD,此时的DBD信息携带了自己的router-id,通过比较router-id选出谁先发DBD)
- 比较出来后,R1与R2进入exchange状态,开始第二次发DBD,此时的DBD包含了自己的链路状态数据库镜信息
- 交换完DBD消息后,会通过LSACK确认是否接收到DBD消息,未接收到会重发
- 确认接收到后,R1与R2进入Loading state状态,开始交换LSR,LSU,LSACK
- 交换完后进入FULL State邻接关系状态.
3.OSPF如何维系关系?
- OSPF通过hello包维系关系
- 每10S检测一次
- 对端40S无回应则宣布关系失效
假设R2宕机了其他路由器是怎么判断R2挂掉的?
- 通过设备之间运行的协议相互发hello包判断
- 设全网运行了OSPF
- R1会给R2发hello包
- 若R2在40S后无回应,则R1会判断出R2挂掉了
4.OSPF为什么会有两种关系状态?
这两种关系是为了面向不同的网络类型的情况
点对点式网络结构
- 两台设备一条线,两个设备用一条线连接,即点对点式网络
- R1与R2 R2与R3 R3与R4 R4与R1 都是点对点式网络
广播式网络结构
- 这些设备都在一个局域网内(一个网段内)设备与设备之间彼些会形成邻居关系
- R1与R2,R3,R4,R5,R6形成邻居关系
- R2与R3,R4,R5,R6,R1形成邻居关系
- R5与R1,R2,R3,R4,R6形成邻居关系..
- 若R4上有一个新网段,R4将此网段更新给R1,R2,R3,R5,R6
- 当别的设备收到路由更新时他依然会给他自己的邻居发路由更新
- R1收到路由更新会给R2,R3,R4,R5,R6发这会出现重复更新的现象。
- 为了避免这种现象,网络中就形成了不同的关系状态
5.OSPF中的角色
(1)三种角色
-
DR:大哥角色
-
BDR:二哥角色
-
DROTHERS:小弟角色
- 不同设备扮演不同的角色,不同角色之间形成的关系不一样
- DROTHERS的路由条目一旦有更新,只会发送给DR和BDR
- 第一次没有调整OSPF的优先级时,DR和BDR的选举依赖于谁先启动OSPF进程,谁就是DR
- 设选R1为DR;R5为BDR,其他的设备为DROTHERS
- 如果R4(DROTHERS)有更新,R4会将更新信息发给R1(DR)与R5(BDR)
- 然后R1(DR)会把收到的更新发给R2,R6,R3
- 通过这样的更新方式来减少重复更新
- BDR只接收信息,不发送信息
- DROTHERS与DR之间即发送hello包,也发LSA包形成邻接关系(FULL)
- DROTHERS与DROTHERS之间只会发送hello包不发LSA包(路由信息更新)形成TWO-WAY(邻居关系)
(2)如何选出不同的角色?
通过比较优先级信息,进程标识(router-id)
- 优先级信息:越大越好,默认=1(OSPF接口优先级)
- 进程标识(router-id):以一个IP地址格式为代表,X.X.X.X格式,越大越好
(3)不同角色监听的组播地址不一样.
- 当DROTHERS一旦出现更新信息,他会发送到224.0.0.6上
- 224.0.0.6这个组播地址只有DR和BDR监听
- DR会把接收到的更新发送到224.0.0.5上
- 224.0.0.5这个组播地址是DROTHERS监听
- DR和BDR也会监听224.0.0.5(用于获取hello包)
- 224.0.0.5一个组播地址多用途,即用于路由更新,也用于发送hello包
- 所有设备相互发送的hello包都会发送到224.0.0.5这个组播地址上
6.OSPF的更新机制
(1)OSPF的数据包
- hello包————检测领居是否还活着
- DBD包————数据库描述信息包
- LSR包————链路状态请求包
- LSU包(包含LSA包:具体的路由信息更新条目)一链路状态更新包
- LSACK包一链路状态确认信息包
Hello包:
- Router ID 路由器的标识符
- Hello and dead intervals* hello包时间/死亡时间
- Neighbors
- Area ID* 区域ID
- Router priority 路由优先级
- DR IP address DR信息
- BDR IP address BDR信息
- Authentication password* 认证密码
- Stub area flag * 末节区域
- OSPF的Hello包中加星号的,两边的设备参数要一致,不一致两设备无法建立关系
LSA包( Link state Advertise 链路状态通告)
- 发送全部可以到达目的的路由条目,让对端设备计算到达目的的最优路由路径
- 通过组播进行更新
- 发送自己的路由更新,发送到组播地址上,组播地址类似某频道,只有运行了OSPF协议的设备才会监听这个组播地址
(2)OSPF路由更新方式
- OSPF触发更新:一旦网络发生了变化,他会将更新的,变化的路由条目发送给对端设备(新增的条目和减少的条目都会发)
- OSPF周期更新:每隔30min(分钟)周期更新一次
- 更新的路由信息支持非主类(VLSM)条目
- 非主类掩码(VLSM:可变长子网掩码:如255.255.255.128,255.255.255.192,255.255.255.224,255.255.255.240),可以支持更小的网段
- 设R1与R2要进行路由更新,R1上有10000条路由条目,R2上有9000条路由条目,R2的9000条路由条目与R1重复。
- 首先R1与R2建立关系
- 接着R1与R2相互发送hello包检测对方是否还活着
- 然后R1会给R2发DBD包(数据库描述信息包,路由条目的镜像)
- R2收到DBD包后,他会检测自己没有的路由条目
- 然后R2会给R1发LSR包(链路状态请求包),请求自己没有的那1000条路由条目
- R1收到LSR包后会给R2发LSU包(链路状态更新包),1000条的路由更新
- R2收到LSU包后会给R1发LSACK确认包(链路状态确认信息包)
- 完成路由条目更新
(3)OSPF中的组播地址
- 224.0.0.5
- 224.0.0.6
7.OSPF的优点
- 方便管理
- 支持VLSM
- 网络发生变化的时候发送触发式更新
- 对网络发生的变化能够快速响应
8.OSPF协议如何选择最优路径?
- 主要参考带宽,谁带宽大就选谁为最优.
9.OSPF内有三张表
- 邻居表
- 链路状态数据库
- 路由表
- 发送hello包——>接收hello包——>建立OSPF邻居关系——>相互将自己的链路状态数据库发送给对方——>对方收到后,放入自己的链路状态数据库内——>计算出自己的数据库——>计算出最优的路由条目——>放入到自己的路由表内
- 数据库中保存的是去往目的的所有线路.
- 整个OSPF网络中一每台设备都知道全网的路径
10.OSPF中的Router-ID
- RouterID:路由器的标识符(进程标识)
- OSPF的进程号可以不同
- 每台设备的Router-ID不可以重复
(1)Route-ID (RID)如何选举?
RI与R2建立OSPF邻居关系
- 启动OSPF进程时,可以不写rauter-id,也可以形成邻居关系,这时Router~id会自动选举.
- 本路由器上的loopback环回接口最大将选为RID
- 如果没有环回口,则会比较本地物理接口,最大的IP将会选举为RID.
(2)Route-ID (RID)的作用
- 用来选举DR与BDR
- 如果优先级是0的情况下依靠router-id来选举
11.OSPF区域的概念
- OSPF设计之初面向中大型网络环境
- 彼此间更新信息量比较大,设备与设备间相互传递信息,可能会导致整个网络出现频发的更新现象,这时OSPF将一个大型网络做了一个区域划分,让一部分信息只在自己的区域内传递来分割减少不必要的信息发送。
- OSPF中的骨干区域:指区域0
- 常规区域:除了区域0以外的区域
- 常规区域必须和骨干区域是直接相连的
二、项目案例
1.常规OSPF案例
(1)项目拓扑
(2)项目实现
路由器R1配置:
进入特权模式
enable
进入全局模式
configure terminal
更改名称为R1
hostname R1
进入console口配置模式
line console 0
开启信息同步。(类似华为设备关闭信息提示)
logging synchronous
进入g0/0接口
interface g0/0
将g0/0接口IP地址配置为192.168.1.1/24
ip address 192.168.1.1 255.255.255.0
开启接口
no shutdown
退出到上一级
exit
进入环回接口0
interface loopback 0
配置环回地址为1.1.1.1/24。环回接口可以模拟一个网段,是虚拟接口,虚拟接口默认是开启状态,不用no shutdown
ip address 1.1.1.1 255.255.255.0
退出到上一级
exit
退出到上一级
exit
显示接口信息
show ip interface brief
进入全局模式
configure terminal
启动ospf进程100,100为进程号(1-65535)
router ospf 100
配置router-id,通常使用环回接口 IP 地址命名
router-id 1.1.1.1
yes
宣告直连网段
宣告 直连网段 反掩码 区域
network 192.168.1.0 0.0.0.255 area 0
宣告直连网段
宣告 直连网段 反掩码 区域
network 1.1.1.1 0.0.0.255 area 0
退出到上一级
exit
退出到上一级
exit
显示路由器当前正在运行的包含router关键字的配置信息
show running-config | begin router
显示路由表信息
show ip route
显示ospf邻居表信息
show ip ospf neighbor
显示ospf数据库信息
show ip ospf database
清理ospf进程
clear ip ospf process
显示ospf邻居表信息
show ip ospf neighbor
查看是否可与3.3.3.3通信
ping 3.3.3.3
第一次没有调整OSPF的优先级时,DR和BDR的选举依赖于谁先启动OSPF进程,谁就是DR
路由器R2配置:
进入特权模式
enable
进入全局模式
configure terminal
更改名称为R2
hostname R2
进入console口配置模式
line console 0
开启信息同步。(类似华为设备关闭信息提示)
logging synchronous
进入g0/1接口
int g0/1
将g0/1接口IP地址配置为192.168.1.2/24
ip address 192.168.1.2 255.255.255.0
开启接口
no shutdown
退出到上一级
exit
进入g0/0接口
interface g0/0
将g0/0接口IP地址配置为192.168.2.1/24
ip address 192.168.2.1 255.255.255.0
开启接口
no shutdown
退出到上一级
exit
退出到上一级
exit
显示接口信息
show ip interface brief
进入全局模式
configure terminal
启动ospf进程100,100为进程号(1-65535)
router ospf 100
配置router-id,通常使用环回接口 IP 地址命名
router-id 2.2.2.2
yes
宣告直连网段
宣告 直连网段 反掩码 区域
network 192.168.1.0 0.0.0.255 area 0
宣告直连网段
宣告 直连网段 反掩码 区域
network 192.168.2.0 0.0.0.255 area 0
退出到上一级
exit
退出到上一级
exit
显示路由器当前正在运行的包含router关键字的配置信息
show running-config | begin router
显示路由表信息
show ip route
显示ospf邻居表信息
show ip ospf neighbor
显示ospf数据库信息
show ip ospf database
路由器R3配置:
进入特权模式
enable
进入全局模式
configure terminal
更改名称为R3
hostname R3
进入console口配置模式
line console 0
开启信息同步。(类似华为设备关闭信息提示)
logging synchronous
进入g0/1接口
interface g0/1
将g0/1接口IP地址配置为192.168.2.2/24
ip address 192.168.2.2 255.255.255.0
开启接口
no shutdown
退出到上一级
exit
进入环回接口0
interface loopback 0
配置环回地址为3.3.3.3/24。环回接口可以模拟一个网段,是虚拟接口,虚拟接口默认是开启状态,不用no shutdown
ip address 3.3.3.3 255.255.255.0
退出到上一级
exit
退出到上一级
exit
显示接口信息
show ip interface brief
进入全局模式
configure terminal
启动ospf进程100,100为进程号(1-65535)
router ospf 100
配置router-id,通常使用环回接口 IP 地址命名
router-id 3.3.3.3
yes
宣告直连网段
宣告 直连网段 反掩码 区域
network 192.168.2.0 0.0.0.255 area 0
宣告直连网段
宣告 直连网段 反掩码 区域
network 3.3.3.0 0.0.0.255 area 0
退出到上一级
exit
退出到上一级
exit
显示路由器当前正在运行的包含router关键字的配置信息
show running-config | begin router
显示路由表信息
show ip route
显示ospf邻居表信息
show ip ospf neighbor
显示ospf数据库信息
show ip ospf database
查看是否可与1.1.1.1通信
ping 1.1.1.1
2.多进程OSPF案例
- 假设R1上的网段不能传到R3上
- R3上的网段不能传到R1上
- 可以在R2上面启动多个OSPF进程,把R2左边的接口宣告到进程100中,把右边的接口宣告到进程200里
- 这时R1与R2可建立OSPF邻居关系
- R2与R3可建立邻居关系
- 但是R1的条目发送到R2后不会将此条目发给R3
- 将连接不同设备的接口宣告进不同进程下形成有效分割
- 同一设备上,不同进程下的邻居不会相互传递路由信息LSA
(1)项目拓扑
(2)项目实现
路由器R1配置:
进入特权模式
enable
进入全局模式
configure terminal
更改名称为R1
hostname R1
进入console口配置模式
line console 0
开启信息同步。(类似华为设备关闭信息提示)
logging synchronous
进入g0/0接口
interface g0/0
将g0/0接口IP地址配置为192.168.1.1/24
ip address 192.168.1.1 255.255.255.0
开启接口
no shutdown
退出到上一级
exit
进入环回接口0
interface loopback 0
配置环回地址为1.1.1.1/24。环回接口可以模拟一个网段,是虚拟接口,虚拟接口默认是开启状态,不用no shutdown
ip address 1.1.1.1 255.255.255.0
退出到上一级
exit
退出到上一级
exit
显示接口信息
show ip interface brief
进入全局模式
configure terminal
启动ospf进程100,100为进程号(1-65535)
router ospf 100
配置router-id,通常使用环回接口 IP 地址命名
router-id 1.1.1.1
yes
宣告直连网段
宣告 直连网段 反掩码 区域
network 192.168.1.0 0.0.0.255 area 0
宣告直连网段
宣告 直连网段 反掩码 区域
network 1.1.1.1 0.0.0.255 area 0
退出到上一级
exit
退出到上一级
exit
显示路由器当前正在运行的包含router关键字的配置信息
show running-config | begin router
显示路由表信息
show ip route
显示ospf邻居表信息
show ip ospf neighbor
显示ospf数据库信息
show ip ospf database
清理ospf进程
clear ip ospf process
显示ospf邻居表信息
show ip ospf neighbor
路由器R2配置:
进入特权模式
enable
进入全局模式
configure terminal
更改名称为R2
hostname R2
进入console口配置模式
line console 0
开启信息同步。(类似华为设备关闭信息提示)
logging synchronous
进入g0/1接口
int g0/1
将g0/1接口IP地址配置为192.168.1.2/24
ip address 192.168.1.2 255.255.255.0
开启接口
no shutdown
退出到上一级
exit
进入g0/0接口
interface g0/0
将g0/0接口IP地址配置为192.168.2.1/24
ip address 192.168.2.1 255.255.255.0
开启接口
no shutdown
退出到上一级
exit
退出到上一级
exit
显示接口信息
show ip interface brief
进入全局模式
configure terminal
启动ospf进程100,100为进程号(1-65535)
router ospf 100
配置router-id,通常使用环回接口 IP 地址命名
router-id 2.2.2.2
yes
宣告直连网段
宣告 直连网段 反掩码 区域
network 192.168.1.0 0.0.0.255 area 0
退出到上一级
exit
启动ospf进程200,200为进程号(1-65535)
router ospf 200
配置router-id,通常使用环回接口 IP 地址命名
router-id 2.2.2.3
yes
宣告直连网段
宣告 直连网段 反掩码 区域
network 192.168.2.0 0.0.0.255 area 0
退出到上一级
exit
退出到上一级
exit
显示路由器当前正在运行的包含router关键字的配置信息
show running-config | begin router
显示路由表信息
show ip route
显示ospf邻居表信息
show ip ospf neighbor
显示ospf数据库信息
show ip ospf database
路由器R3配置:
进入特权模式
enable
进入全局模式
configure terminal
更改名称为R3
hostname R3
进入console口配置模式
line console 0
开启信息同步。(类似华为设备关闭信息提示)
logging synchronous
进入g0/1接口
interface g0/1
将g0/1接口IP地址配置为192.168.2.2/24
ip address 192.168.2.2 255.255.255.0
开启接口
no shutdown
退出到上一级
exit
进入环回接口0
interface loopback 0
配置环回地址为3.3.3.3/24。环回接口可以模拟一个网段,是虚拟接口,虚拟接口默认是开启状态,不用no shutdown
ip address 3.3.3.3 255.255.255.0
退出到上一级
exit
退出到上一级
exit
显示接口信息
show ip interface brief
进入全局模式
configure terminal
启动ospf进程100,100为进程号(1-65535)
router ospf 100
配置router-id,通常使用环回接口 IP 地址命名
router-id 3.3.3.3
yes
宣告直连网段
宣告 直连网段 反掩码 区域
network 192.168.2.0 0.0.0.255 area 0
宣告直连网段
宣告 直连网段 反掩码 区域
network 3.3.3.0 0.0.0.255 area 0
退出到上一级
exit
退出到上一级
exit
显示路由器当前正在运行的包含router关键字的配置信息
show running-config | begin router
显示路由表信息
show ip route
显示ospf邻居表信息
show ip ospf neighbor
显示ospf数据库信息
show ip ospf database