OSPF: open shortest path first
-概述:
OSPF(开放式的最短路径优先协议)是一个公有标准协议;
任何厂商的设备都可以支持;
该协议只能在 公司内部 使用,属于“内部网关协议”;
该协议在在不同的路由器之间传递的是“链路状态信息”
所以,称之为“链路状态 路由协议”。
该协议的报文封装在 IP 头部后面,属于 OSI 模型第三层
该协议在IP报文中的协议号为 89
该协议报文的发送方式是:组播
组播地址为:
224.0.0.5 , 表示所有的OSPF路由器
例如,Hello报文的目标地址
224.0.0.6 , 表示所有的DR和BDR设备
例如:DD报文的目标IP地址
-作用:
在路由器之间动态的学习路由条目,实现路由的传输和管理;
-原理/工作过程:
1.建立邻居表
2.同步数据库
3.计算路由表
-报文类型:
1.hello:用于邻居的建立、维护和拆除;
2.DD: database description ,数据库 描述报文;描述数据库信息,确定主从关系
3.LSR:link state request ,链路状态请求;
4.LSU:link state update ,链路状态更新;
5.LSAck:link state Ack ,链路状态确认;
Hello interval : 10s
为了维持已经建立的 OSPF 邻居关系,
邻居设备之间都要周期性的发送hello包,
默认周期是 10s;
Dead interval : 40s
如果在40s内没有收到邻居设备发送过来的
hello包,则断开这个邻居关系。
总结:
hello 仅仅与邻居相关 ;
后续的4个报文,与 OSPF 的数据库的同步过程相关;
DR/BDR : 指定路由器/备份的指定路由器
当一个网段中,存在多个路由器的时候,
为了能够让数据库的同步过程更加的稳定、可靠,
我们可以在多个路由器中选举出一个“指定的路由器”,
这样一来的话,
该网段中的所有路由,都仅仅与“指定的路由器”
进行数据库的同步;
不过,
为了“指定路由器”的稳定性,我们可以再选举一个
“备份的指定路由器”。
这样一来,
该网段中的每个路由器可以同时与“指定路由器”和
“备份指定路由器”,进行数据库的同步。
此时,那些既不是 指定路由器,也不是备份的指定路由器
的设备,我们称之为 DRother 。
总结:
所有路由器都和 DR/BDR 建立邻接关系
DRother 之间永远处于 Two-way状态(双向通信状态)
DR/BDR 具有稳定性,即一旦确定,就无法更改,
除非重启路由器或者重启 OSPF 协议;
DR/BDR 的作用:
当一个网段中存在多个路由器的时候,实现
数据库的稳定和高效的同步;
DR/BDR 的选举原则:
1.首先比较优先级,数值越大越好;默认是1;
2.如果优先级相同,比较 router-id
越大越好;
注意:
优先级为0的设备,永远称之为 DRother
没有资格参与 DR/BDR 的竞选。
什么时候进行DR/BDR的选举?
@当一个网段中存在多个设备的时候;
什么情况下 OSPF 认为一个网段中存在多个设备?
@OSPF 是基于OSPF接口的网络类型来决定的
@常见的 OSPF 网络类型有以下4种:
1.广播 ---需要选举DR/BDR 自动创建邻居 10s~40s
2.非广播 ---需要选举DR/BDR 手动创建邻居 30s~120s
3.点到点 ---不需要选举DR/BDR 手动指定邻居 10s~40s
4.点到多点 ---不需要选举DR/BDR 手动指定邻居 30s~120s
DR/DBR小练习:
查看并确认 R1-R2 之间,每个设备的接口状态:DR/BDR
display ospf interface gi0/0/x
- state :
- priority : 1
将 R1-R2 之间的 BDR 的优先级,修改为 110 ,确保该设备
变成 DR 。
interface gi0/0/x -> BDR的接口
ospf dr-priority 110
quit
<Rx> reset ospf process
【Y/N】: Y
查看 OSPF 邻居表:
display ospf peer brief
@ ospf porcess : OSPF 进程号,默认是1,取值为 1-65535
在同一个设备上区分不同的 OSPF 协议;
@ router-id : 在 OSPF 网络中,唯一的标识一个路由器;
确认方式;
1.手动指定(常用方法)
2.自动选举
#首先选用IP地址大的 Loopback 接口;
#其次选用IP地址大的 物理接口 ;
手动指定 router-id 的命令:
[R1]ospf 2 router-id 1.1.1.1
[R1]quit
<R1>reset ospf process //重启 OSPF 协议
[Y/N]:Y
init初始化状态
toway 双向通信状态
exstart交换初始化
exchang 开始交换
loading 加载中
full完全邻接状态
down 挂掉
OSPF 的工作原理:
1.建立邻居表
2.同步数据库
3.计算路由表
OSPF 报文:
1.hello
2.DD
3.LSR
4.LSU
5.LSAck
ABR:
区域 边界路由器
-定义
同时连接 0 区域和 非0 区域的设备;
ASBR:
自治系统 边界路由器
-定义
拥有 产生OSPF外部路由能力 的路由器
确定 OSPF 路由器身份的命令:
1.display ospf brief --> Border Router :
2.display ospf lsdb router x.x.x.x ->查看自己产生的
1类LSA ;
========================================================
1.介绍 OSPF 数据库
@里面包含的是链路状态信息
(LSA-link state advertisement)
@数据库条目的组织形式是按照 区域 进行组织;
即
同一个区域的所有路由器的数据库条目是完全一致;
@LSA的结构:
-type : 类型 (1/2/3/4/5/7)
-LinkState ID:LSA 的名字 (LSA类型不同,名字不同)
-AdvRouter:advertise router ,通告路由器;
表示的是产生这个 LSA 的那个路由器的名字;
-Age : 存活时间,表示的是一个LSA的最大有效时间。
最大有效时间是:3600s;
-Sequence:序列号,表示的是一个 LSA 的新旧程度;
序列号越大,表示越新;
2.分析 OSPF 数据库条目 信息 – LSA (链路状态通告)
1类LSA:router
作用:
用于说明自己本身哪些链路启用了OSPF,以及
这些链路的情况:地址/掩码/cost;
type: router
link-state-id: 每个路由器的 router-id ;
Advrouter : 每个路由器的 router-id ;
特点:
1.每个OSPF路由器,在每个互联的区域中,都会产生1个;
2.该类型LSA,只能在一个区域内部传输
3.该类型LSA区域内传输时,是没有任何变化的;
分解实验:
1.建立R1-R2之间的邻居,属于区域12;
2.修改R1-R2的网络类型:
interface gi0/0/x
ospf network-type p2p
3.在R1查看 OSPF 数据库:
display ospf lsdb
4.在R1分别查看 R1 和 R2 产生的1类LSA的详细信息:
display ospf lsdb router 1.1.1.1
display ospf lsdb router 2.2.2.2
2类LSA: network
作用:
由 DR 产生,用于告知该网段中有哪些邻居路由器;
type: network
link-state-id: DR的接口IP地址;
Advrouter : DR 的 router-id
特点:
1.只能由 DR 产生;
2.该类型LSA,只能在一个区域内部传输
验证命令:
查看2类LSA的详细信息:
display ospf lsdb network x.x.x.x // LSA的名字;
3类LSA:Sum-net
作用:
在不同区域之间传递路由;
type: Sum-net
link-state-id: 不同区域之间的网段
Advrouter : ABR的 router-id
特点:
1.只能由 DR 产生;
2.该类型LSA,只能在一个区域内部传输
3.该类型LSA区域内传输时,是没有任何变化的;
但是,
如果在传输过程中,经过了另外一个 ABR ,
那么,
这个 LSA 的 Advrouter 就会变成所经过的这个 ABR 的
router-id ;
区域0 :
3类, 192.168.1.0 , 2.2.2.2
区域56:
3类, 192.168.1.0 , 5.5.5.5
display ospf lsdb summary 192.168.1.0
display ospf lsdb summary 192.168.2.0
display ip routing-table protocol ospf
4类LSA:Sum-Asbr
作用:
用于传输 产生5类LSA的那个ASBR 的router-id ;
type: Sum-Asbr
link-state-id : ASBR 的 router-id
AdvRouter :与ASBR在同一个区域的 ABR 的router-id ;
特点:
1.与ASBR在同一个区域的 的 ABR 产生的;
2.该类型LSA,只能在一个区域内部传输;
3.该类型LSA区域内传输时,是没有任何变化的;
但是,
如果在传输过程中,经过了另外一个 ABR ,
那么,
这个 LSA 的 Advrouter 就会变成所经过的这个 ABR 的
router-id ;
4.该类型的LSA主要是与5类LSA配合使用,用于计算OSPF的
外部路由;
5类LSA:External (外部)
作用:
表示 OSPF 的外部路由;
type: external
link-state-id : 外部路由的网段
advRouter : ASBR 的 router-id
特点:
1.只能由 ASBR 产生;
2.该类型的 LSA 可以在整个 OSPF 网络中传输,
没有任何的区域概念;
例如:
1.在 R1 上创建静态路由
ip route-static 100.1.1.0 24 null 0
2.在 R1 上将静态路由,引入到 OSPF 协议;
ospf 1
import-route static //
将路由表中的静态路由都引入OSPF协议
3.在 其他路由器上查看 R1 产生的 5类 LSA
display ospf lsdb
display ospf lsdb ase 100.1.1.0
7类LSA:NSSA (外部)
作用:
在 OSPF 特殊区域中,表示 OSPF 的外部路由;
type: nssa
link-state-id : 外部路由的网段
advRouter : ASBR 的 router-id
特点:
1.只能由 特殊区域中的 ASBR 产生;
2.该类型的 LSA 只能在特殊区域内部传输;
3.引入 OSPF 特殊区域
为了将非 OSPF 路由,引入到OSPF 网络,所以我们使用了
“路由重分发/路由重发布/路由导入” 技术。
通过这种方式引入的 OSPF 路由,是以5类LSA表示的。
所以,
当外部非常不稳定的时候,表示这个外部路由的
5类LSA就非常的不稳定,
又因为5类LSA在传输的时候,是没有区域概念的,
所以,
这种不稳定的5类LSA,会影响整个 OSPF 网络的稳定性;
为了,
让某些特定的区域,不要受到外部链路的影响,
我们可以将这些区域配置为“特殊区域”,
即,
这种“特殊区域”,是不允许接收5类LSA/4类LSA ;
特殊区域的类型:
-stub区域
@要1/2/3
@不要4/5
@ABR会自动产生一个表示默认路由的3类LSA;
@配置:
在 stub 区域的所有路由器上,都得配置:
ospf 1
area 12
stub
-totally stub 区域
@要1/2/
@不要3/4/5
@ABR会自动产生一个表示默认路由的3类LSA;
@配置:
仅在 stub 区域 ABR 上,配置:
ospf 1
area 12
stub no-summary
-NSSA (not so stub area )
@要1/2/3/7
@不要4/5
@ABR会自动产生一个表示默认路由的 7 类LSA;
@配置:
在NSSA区域的所有路由器上,都得配置:
ospf 1
area 56
nssa
-totally NSSA
@要1/2/7
@不要3/4/5
@ABR会自动产生一个表示默认路由的 7 类LSA;
和表示默认路由的 3 类 LSA
@配置:
在NSSA区域的 ABR上,配置:
ospf 1
area 56
nssa no-summary
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OSPF 路由类型:
- 内部路由
@ 通过 network 方式宣告的路由;
(network命令只能宣告 “直连网段” )
@1类LSA - 区域内部的路由;i
@3类LSA - 区域之间的路由;
- 外部路由
@ 通过 import-route 方式宣告的路由;
(import-route 命令后面跟的是“非直连网段” )
@5类LSA - 表示的是 OSPF 外部路由;