OSPF(开放式最短路径优先)
1、回顾
- rip:v1(广播发送、路由自动汇总,不支持可变长子网)v2(组播发送,默认不汇总路由,支持可变长子网)
- 封装在UDP的520端口中,组播地址是224.0.0.9
- 度量值是跳数,最大15跳
- 只适用于小型企业网络
- 发送的路由信息,每30s一个更新周期,当网络结构过大时,网络收敛比较慢
一、OSPF
1、简介
- 开放式最短路径优先,相邻的路由器传递链路状态信息(链路状态通告LSA)
- 度量值是代价:由链路带宽来确定(1000Mbps代价是1)
- 没有跳数限制,理论上网络的拓扑结构可以无限大,当网络结构变大时,OSPF通过划分区域的方式来实现网络的快速收敛,各个区域可以进行同时网络收敛
- 采用组播发送链路状态信息,支持可变长子网掩码,spf封装在网络层的上层,协议号为89
- ospf是属于内部网关路由协议,是在单一的AS中进行决策路由
2、工作过程
- 首先向相邻的路由器发送hello报文去建立邻居关系
- 建立了邻居关系后,进行DR(指定路由)和BDR(备份指定路由器)选举
- 发送链路状态数据库描述(DBD)报文进行链路状态数据库的同步
- 邻接关系建立
- 发送链路状态请求报文(LSR)
- 对方回应链路状态更新报文(LSU),一个LSU中会包含一条或多条LSA
- 对LSU进行确认回应链路状态确认报文(LSAck)
- 通过最短路径优先算法计算得出最短路径(Dijkstra)
- 最后形成路由条目
3、区域划分
- 骨干区域:区域编号为0(0.0.0.0),核心区域,其他所有的区域必须和骨干区域直连,如果两个普通区域直连是无法实现路由学习的
由上图所示,在一个OSPF的AS中划分了4个区域,区域1、区域2和骨干区域直连,区域2的路由可以通过路由器B传入骨干区域,再由骨干区域路由器C传入区域1,最终实现区域2和区域1及骨干区域的路由同步
由于路由器D不属于骨干区域路由器,无法将区域3的路由传入区域1,区域3无法获取到0、1、2区域的路由信息,其他区域也无法获取到区域3的路由信息
- 非骨干区域
- 标准区域
- 末梢区域
- 完全末梢区域
- 非纯末梢区域
- 完全非纯末梢区域
4、单区域配置
- 将路由器所有接口都宣告到同一区域中
#配置IP地址之后
#在AR1中
#进入OSPF进程
ospf 10
area 0
network 192.168.10.0 0.0.0.255 #0表示严格匹配,1表示不匹配,即子网掩码的反码
network 172.16.1.0 0.0.0.3
#在AR2中
ospf 10
area 0
network 192.168.20.0 0.0.0.255 #0表示严格匹配,1表示不匹配,即子网掩码的反码
network 172.16.1.0 0.0.0.3
5、OSPF多区域
- 路由器角色
- 内部路由器:所有的接口都在一个区域内
- DR路由器:在一个区域内的指定路由器,其他路由器只和DR路由器去建立邻接关系
- ABR路由:区域边界路由器,连接了一个或多个区域
- ASBR路由:自治系统边界路由器,连接了一个或多个AS
- 标准区域
- 需要和骨干区域直连,可以连接外部AS,会产生的通告类型:1、2、3、4、5
- 末梢区域、完全末梢区域
- 末梢区域不会产生外部路由通告,不存在LSA5的通告,是直接采用一条LSA3的默认路由去往外部
- 完全末梢区域是更经济的末梢区域,此区域内不会产生其他区域通告,只会有一条默认路由去往其他区域和外部
- 非纯末梢区域、完全非纯末梢区域
- 非纯末梢区域,区域中包含ASBR,可以用于连接外部AS,区域中的ASBR将外部路由传入OSPF区域,采用的是LSA7,再通过NSSA区域的ABR转换为LSA5传入其他区域
- NSSA区域不会产生其他区域传入的外部路由通告,只会有一条LSA7的默认路由通告去往其他区域连接的外部AS,具备末梢局域的特性
- 完全非纯末梢区域,具备完全末梢区域的特性,不会产生其他区域和其他区域传入的外部路由通告,只会有一条LSA3的默认路由去往其他区域,一条LSA7的默认路由器去往其他区域连接的外部AS
6、OSPF链路状态通告
- LSA1:路由器LSA,由区域内的路由器发出
- LSA2:网络LSA,由区域内的DR路由器发出
- LSA3:汇总LAS,由ABR路由器发出,用于汇总一个区域的LSA
- LSA4:汇总LSA,由ABR路由器发送,用于通告ASBR路由器
- LSA5:AS外部路由,由ASBR路由器发出,将外部路由通告到OSPF区域
- LSA7:NSSAAS外部路由,由NSSA区域的ASBR路由器发出,将外部路由通告到OSPF区域
#配置IP
#AR1
sys
dhcp enable
int g0/0/0
ip add 192.168.20.254 24
dhcp select int
int g0/0/1
ip add 192.168.1.1 24
#AR2
int g0/0/0
ip add 192.168.1.2 24
int g0/0/1
ip add 192.168.2.1 24
int g0/0/2
ip add 192.168.3.1 24
#AR3
sys
dhcp enable
int g0/0/0
ip add 192.168.30.254 24
dhcp select int
int g0/0/1
ip add 192.168.2.2 24
#AR4
sys
int g0/0/0
ip add 192.168.3.2 24
int g0/0/1
ip add 192.168.4.1 24
#AR5
sys
dhcp enable
int g0/0/0
ip add 192.168.10.254 24
dhcp select int
int g0/0/1
ip add 192.168.4.2 24
#进入OSPF进程
#在AR1中
ospf 10
area 0
network 192.168.20.0 0.0.0.255
network 192.168.1.0 0.0.0.255
#在AR3中
ospf 10
area 1
network 192.168.30.0 0.0.0.255
network 192.168.2.0 0.0.0.255
#在AR2中
ospf 10
area 0
network 192.168.1.0 0.0.0.255
network 192.168.2.0 0.0.0.255
rip 10
version 2
network 192.168.3.0
#在AR4中
rip 10
version 2
network 192.168.3.0
network 192.168.4.0
#在AR5中
rip 10
version 2
network 192.168.10.0
network 192.168.4.0
默认情况下AR1学习不到192.168.3.0的路由,属于不同的协议
#在AR2中进行操作
#将RIP路由引入到OSPF中
ospf 10
import-route rip 10
7.末梢区域、完全末梢区域
#根据拓扑图添加完整IP地址,更加上一个拓扑实验进行配置
#新增AR6
#AR6
sys
int g0/0/0
ip add 192.168.2.2 24
int g0/0/1
ip add 192.168.5.1 24
在AR3中
在AR6中
在AR2中
配置末梢区域
在AR3中
在AR6中
配置完全末梢区域
#在AR3中
ospf 10
area 1
stub no-sunmmary
#在AR6中
ospf 10
area 1
stub no-sunmmary
8.非纯末梢区域、完全非纯末梢区域
#配置IP地址
#AR1
sys
dhcp enable
int g0/0/0
ip add 192.168.10.254 24
dhcp select int
int g0/0/1
ip add 192.168.1.1 24
#AR2
sys
int g0/0/0
ip add 192.168.1.2 24
int g0/0/1
ip add 192.168.2.1 24
int g0/0/2
ip add 192.168.3.1 24
#AR3
sys
int g0/0/0
ip add 192.168.3.2 24
int g0/0/1
ip add 192.168.4.1 24
#AR4
sys
int g0/0/0
ip add 192.168.4.2 24
int g0/0/1
ip add 192.168.5.1 24
#AR5
sys
dhcp enable
int g0/0/0
ip add 192.168.30.254 24
dhcp select int
int g0/0/1
ip add 192.168.5.2 24
#AR6
sys
int g0/0/0
ip add 192.168.20.254 24
int g0/0/1
ip add 192.168.2.2 24
在AR2中配置静态路由
在AR1中进行宣告
在AR2中进行宣告
在AR3中进行宣告
在AR4中进行宣告
在AR5中进行宣告
在AR4中引入RIP
AR5中的路由表想要学到ospf,需要在AR4中引入ospf
在AR2中引入静态
在AR3,AR4中配置非纯末梢
在AR3,AR4中配置完全非纯末梢