7.OSPF协议入门
OSPF协议概述
链路状态路由协议
有拓扑数据库,通过SPF(Short Path First,最短路径优先)算法,生成最短路径优先树来防环,经过这些算法后才会生成路由表
OSPF简介
OSPF(Open Shortest Path First,开放最短路径优先)
1.是一种链路状态路由协议,在RFC 2328中描述
2.“开放”意味着公有(和CDP、EIGRP私有协议不同)
3.管理性距离:110
4.OSPF采用SPF算法计算达到目的地的最短路径
- 链路(Link)=路由器接口(邻接关系,邻居可以跨设备,领接必须手牵手)
- 状态(State)=描述接口以及其与邻居路由器之间的关系
OSPF metric
- OSPF使用开销cost作为路由的度量值
- 在每一台运行的OSPF的接口上,都维护着一个接口的cost(接口的cost=100M/接口的带宽,其中100M为OSPF的参考带宽)
- 一条路由的COST由该路由从来路由的起源一路过来的所有入接口cost值的总和
cost(A->C)=65,cost(A->B→C)=129
RouterID
- 用于在一个OSPF域中唯一地标识一台路由器
- OSPF Router-ID的设定可以通过手工配置的方式,或者通过自动选取的方式。自动选取的机制是:若由loopback口,则选取最大的loopback口(依位比较)IP地址,若无则选活跃(未被shutdown,能用的)的物理接口中IP地址最大的作为RouterID
loopback0:192.168.237.2
loopback1:192.169.245.3
# 依位比较,loopback0>loopback1
OSPF报文类型
- Hello:建立和维护OSPF邻居关系
- DBD:链路状态数据库描述信息【描述LSDB(拓扑数据库)中LSA(链路状态通告)头部信息】
- LSR:链路状态请求,向OSPF邻居请求链路状态信息
- LSU:链路状态更新(包含一条或多条LSA)
- LSAck:对LSU中的LSA进行确认
OSPF的三张表
1.邻居表(neighbor table):OSPF用邻居机制来发现和维持路由的存在,邻居表存储了双向通信的邻居关系OSPF路由器列表的信息
2.链路状态数据库(link-state database):OSPF用LSA(link state Advertisement 链路状态通告)来描述网络拓扑信息,然后OSPF路由器用链路状态数据库来存储网络的这些LSA
3.OSPF路由表(routing table):对链路状态数据库进行SPF(Dijkstra)计算,而得出的OSPF路由表
- 邻居表+链路状态数据库=OSPF路由表
如果双方建立的是RIP/EIGRP,那么双方交换的是整个拓扑图;但如果是OSPF,交换的是各自的所在位置的拥有的拓扑图,然后各自将接收到的每个小块(链路状态)拓扑图放到LSDB中拼合成路由表
OSPF邻居关系的建立
- E/F/G口称为MA网络;SPOS口非MA网络,不需要选举邻居
Hello包
RouterID:唯一标识ID
Hello/dead intervals:打招呼和死亡确定时间
Neighbors:邻居信息
Area-ID:区域ID
Router priority:路由优先级
DR IP address:DR的IP地址
BDR IP address:BDR的IP地址
Authentication password:认证密码信息
Stub area flag:末节网络的标识
- Hello包用来发现OSPF邻居并建立相邻关系,通过组播地址:224.0.0.5发送给ALLSPFRouters(非MA网络只使用224.0.0.5)
- 通告两台路由器建立相邻关系所必需统一的参数
- 在以太网和帧中继网络等多路访问网络中选举指定路由器(DR)和备用指定路由器(Bdr)
DR、BDR、MA网络
Ma网络:也称为多路访问网络,有两种类型:广播型多路访问网络及非广播型多路访问网络,以太网是一种典型的广播型多路访问网络
- 在MA网络中,为了保证LSA能及时泛洪到所有路由器,每台路由器需与其他的所有路由器建立OSPF邻居关系
- 当拓扑出现变更,网络中的LSA泛洪可能会造成带宽的浪费和资源的损耗
为减小多路访问网络中的OSPF流量,OSPF会在每一个MA网络(多路访问网络)选举一个指定路由器(DR)和一个备用指定路由器(BDR)
- 选举规则:最高OSPF接口优先级拥有者被选作DR,如果优先级相等(默认为1),具有最高的OSPF Router-ID的路由器被选举成DR,并且DR具有非抢占性
- 指定路由器(DR):负责使用该变化信息更新其它所有OSPF路由器(DRother)
- 用指定路由器(BDR):BDR会监控的状态,并在当前DR发生故障时接替其角色
- OSPF为“接口敏感型协议”,DR及BDR的身份状态是基于OSPF接口的
- MA网络中,所有的DRother路由器均只与DR和BDR建立邻接关系,DRother间不建立全毗邻邻接关系
- 如此一来在多路访问网络中,OSPF邻接关系的数量大大减少,LSA的泛洪问题也可以得到一定的缓解
LSA泛洪
- 路由器R3用224.0.0.6通知DR及BDR(MA网络时224.0.0.6和224.0.0.5一块使用)
- DR、BDR监听224.0.0.6这一组播地址,DRother不监听224.0.0.6
- DR向组播地址224.0.0.5发送更新以通知其他路由器
- 所有的OSPF路由器监听224.0.0.5这一组播地址
DR、BDR监听224.0.0.6/224.0.0.5,发送224.0.0.5
DRother监听224.0.0.5,发送224.0.0.6
- 路由器收到包含变化后的LSA的LSU后,更新自己的LSDB,过一段时间(SPF延迟),对更新的链路状态数据库执行SPF算法,必要时更新路由表
OSPF网络类型
OSPF area的概念
单区域存在的问题
- LSA泛洪严重,OSPF路由器的负担很大
- 区域内部动荡会引起全网路由器的SPF计算
- LSDB庞大,资源消耗过多,设备性能下降,影响数据转发
- 每台路由器都需要维护的路由表越来越大,单区域内路由无法汇总
OSPF多区域
- 减少了LSA洪泛的范围,有效地把拓扑变化控制在区域内,达到网络优化的目的
- 在区域边界可以做路由汇总,减小了路由表
- 充分利用OSPF特殊区域的特性,进一步减少LSA泛洪,从而优化路由
- 多区域提高了网络的扩展性,有利于组建大规模的网络
OSPF的配置及验证
配置命令(S口配置)
R1-Right:32.32.12.1+loopback0:1.1.1.1和R2-Left:32.32.12.2+loopback1:2.2.2.2在Area 0
R2-Right:32.32.23.1+R3-Left:32.32.23.2+loopback2:3.3.3.3+R3-Right:32.32.34.1+R4-Left:32.32.34.2+loopback3:4.4.4.4在Area 1
OSPF部署
R1(config)#router ospf [1-65535的进程ID]
R1(config)#router ospf 100
# 设置router-id,每个不能相同
R1(config-router)#router-id 1.1.1.1
精确宣告
R1(config-router)#network [IP地址] [反子网掩码] [area-ID]
R1(config-router)#network 32.32.12.1 0.0.0.0 area 0
# 宣告环回口
R1(config-router)#network 1.1.1.1 0.0.0.0 area 0
修改router-ID
R2(config-router)#router-id 2.2.2.2
# 清理OSPF进程(重置进程)
R2#clear ip ospf process
全部配置后R2称为ABR(区域边界路由器)
查看及验证命令
查看OSPF邻居
R1#show ip ospf neighbors
OSPF的Hello时间是10s,dead时间是40s
查看OSPF进程
R1#show run | section ospf
清理OSPF进程(重置进程)
R1#clear ip ospf process
在控制台显示OSPF的工作状态
R1#debug ip ospf [某个状态]
route-ID作为数据包表示,显示数据包是从route-ID的S1/2口IP为32.32.12.2来的
关闭debug模式
R1#un all
F口配置实验(关闭所有S口,重新配置F口,环回口和拓扑一样)
环境配置
# R1
R1(config)#interface f0/0
R1(config-if)#no shutdown
R1(config)#router ospf 100
R1(config-router)#router-id 1.1.1.1
R1(config-router)#network 32.32.123.1 0.0.0.0 area 0
# R2:router-id=2.2.2.2 network=32.32.123.2
# R3:router-id=3.3.3.3 network=32.32.123.3
# R$:router-id=4.4.4.4 network=32.32.123.4
此时R4作为DR,R3为BDR
如果R4作为DR被shutdown,R3变成DR接管,情况如下
这时重新让R4上线,R4变成DRother,R2选举为BDR
重新让R4变成DR,需要将R3和R2的OSPF进程重置
R3#clear ip ospf process
R2#clear ip ospf process
本文来自博客园,作者:icui4cu,转载请注明原文链接:https://www.cnblogs.com/icui4cu/p/16733360.html