一、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.1yes宣告直连网段
宣告 直连网段 反掩码 区域
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.2yes宣告直连网段
宣告 直连网段 反掩码 区域
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.3yes宣告直连网段
宣告 直连网段 反掩码 区域
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.1yes宣告直连网段
宣告 直连网段 反掩码 区域
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.2yes宣告直连网段
宣告 直连网段 反掩码 区域
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.3yes宣告直连网段
宣告 直连网段 反掩码 区域
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.3yes宣告直连网段
宣告 直连网段 反掩码 区域
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