基于链路状态路由协议——OSPF
动态路由协议
- 基于链路状态的协议
- 由路径开销选择最优路径
- 采用增量更新机制,触发更新或每隔30min向邻接路由器发送链路状态信息摘要
OSPF概述
-
工作在IP层,端口为89
-
OSPF组播地址:224.0.0.5
-
基本思想
路由器将已知的链路状态信息告诉邻居,收敛后,网络上每个路由器对全网链路状态有着相同的认识。每台路由器根据了解到的全网链路状态,独立计算路由
OSPF工作过程
发现邻居——>建立邻接关系——>交换链路状态信息——>独立计算路由
1.发现邻居
- 组播hello包
- 同一个广播域内的接口建立一组邻接关系
- 所有的邻居跟本机交换链路状态信息(可能不需要交换,从其他设备获取)
2.建立邻接关系
- 只有先建立邻接关系,路由器才会交换链路状态信息
- 同一广播域选举DR和BDR,其余路由器只与DR和BDR建立联系
- 广播型网络会选举DR和BDR,而点对点(P2P)网络不会选举
3.交换链路状态信息
-
每台设备都有LSDB(链路状态数据库)
-
LSDB中每一条都是LSA(链路状态信息公告)
#链路状态公告用于描述链路状态信息,如开销,其他路由器ID等
交换链路状态的工作过程
-
收敛后,区域内所有路由器具有相同的LSDB
#这一点在全网拓扑中可以体现
4.独立计算路由
OSPF分区域管理
#两个区域通过区域边界路由器ABR连接,上图其实存在一个问题,看了下面内容可以知晓
- 同一区域内路由器建立邻居关系,交换LSA,收敛后同一区域内所有设备的LSDB相同
- 不同区域间,由ABR直接转发通信信息
与区域有关的参数
-
区域ID:32位二进制,可表示为一个十进制数字或点分十进制
#如区域0的id既可以用"0"表示,也可以用0.0.0.0表示
-
骨干区域(区域0)
- 非骨干区域要通过骨干区域0转发数据以防止出现路由环路
- 网络中有不同的ospf区域,肯定有区域0
实验
#拓扑图及实验结果(pc1和pc2互通)
#配置路由器,以R1为例
#1.配置逻辑接口,使得ospf的路由优先级简单
interface loopback 0
ip address 1.1.1.1 32
#32位子网掩码
#2.启动ospf进程并指定路由ID
OSPF 5 router-id 1.1.1.1
#3.配置ospf区域
area 0
#4.宣告接口(换句话有哪些接口在这个区域内)
network 1.1.1.1 0.0.0.0
network 10.0.1.0 0.0.0.255
network 10.0.2.0 0.0.0.255
network 10.0.3.0 0.0.0.255
#保存配置,防止误操作
save
#Router ID的选择规则如下:
1.如果在路由器上明确指定了Router ID,OSPF将使用指定的Router ID。
2.如果没有明确指定Router ID,OSPF将自动选择一个Router ID。通常,OSPF会选择路由器上配置的最高IP地址的环回接口(Loopback Interface)作为Router ID。如果没有配置环回接口,OSPF会选择活动的物理接口上配置的最高IP地址。
3.如果所有接口都没有配置IP地址,OSPF将无法启动,并会显示错误消息
#通配符掩码
network <网段号><通配符掩码>
#通配符掩码为子网掩码的反码(如255.255.255.0 <==> 0.0.0.255)
OSPF路径开销
-
路径开销与带宽成反比
-
计算路径开销小于1的算为1
-
H3C默认链路开销计算公式:100Mbps/带宽