7.OSPF协议入门

OSPF协议概述

链路状态路由协议

有拓扑数据库,通过SPF(Short Path First,最短路径优先)算法,生成最短路径优先树来防环,经过这些算法后才会生成路由表

image

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

image

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邻居关系的建立

image

  • E/F/G口称为MA网络;SPOS口非MA网络,不需要选举邻居

image
image

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网络

image

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泛洪

image

  • 路由器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

image

  • 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

image

  • 路由器收到包含变化后的LSA的LSU后,更新自己的LSDB,过一段时间(SPF延迟),对更新的链路状态数据库执行SPF算法,必要时更新路由表

OSPF网络类型

image

OSPF area的概念

单区域存在的问题

image

  • LSA泛洪严重,OSPF路由器的负担很大
  • 区域内部动荡会引起全网路由器的SPF计算
  • LSDB庞大,资源消耗过多,设备性能下降,影响数据转发
  • 每台路由器都需要维护的路由表越来越大,单区域内路由无法汇总

OSPF多区域
image

  • 减少了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

image

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

image

OSPF的Hello时间是10s,dead时间是40s

查看OSPF进程

R1#show run | section ospf 

清理OSPF进程(重置进程)

R1#clear ip ospf process

在控制台显示OSPF的工作状态

R1#debug ip ospf [某个状态]

image

route-ID作为数据包表示,显示数据包是从route-ID的S1/2口IP为32.32.12.2来的

image

关闭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

image

如果R4作为DR被shutdown,R3变成DR接管,情况如下

image

这时重新让R4上线,R4变成DRother,R2选举为BDR

image

重新让R4变成DR,需要将R3和R2的OSPF进程重置

R3#clear ip ospf process
R2#clear ip ospf process

image

posted @ 2022-09-27 09:22  icui4cu  阅读(121)  评论(0编辑  收藏  举报