OSPF开放式最短路径优先协议分析

概述

  OSPF(Open Shortest Path First)即开放式最短路径优先,用于在单一自治系统内决策路由。是对链路状态路由协议的一种实现,承载在IP数据包内(协议号89),隶属内部网关协议(IGP),故运作于自治系统内部。迪杰斯特拉算法(Dijkstra)被用来计算最短路径树。OSPF分为OSPFv2和OSPFv3两个版本,其中OSPFv2用在IPv4网络,OSPFv3用在IPv6网络。OSPFv2是由RFC 2328定义的,OSPFv3是由RFC 5340定义的。与RIP相比,OSPF是链路状态协议,而RIP是距离矢量协议。

工作过程

协议操作

1. 建立路由器的邻接关系
  所谓“邻接关系”是指OSPF路由器以交换路由信息为目的,在所选择的相邻路由器之间建立的一种关系。 路由器首先发送拥有自身ID信息(Loopback端口或最大的 IP地址)的Hello报文(使用224.0.0.5组播地址  负责宣告)。与之相邻的路由器如果收到这个Hello报文,就将这个报文内的ID信息加入到自己的Hello报文内。
  如果路由器的某端口收到从其他路由器发送的含有自身ID信息的Hello报文,则它根据该端口所在网络类型确定是否可以建立邻接关系。
  在点对点网络中,路由器将直接和对端路由器建立起邻接关系,并且该路由器将直接进入到第三步操作:发现其他路由器。若为MultiAccess 网络, 该路由器将进入选举步骤。
2. 选举DR/BDR(designated router 指定路由器/backup designated router 备份指定路由器
  不同类型的网络选举DR和BDR的方式不同。
  MultiAccess网络支持多个路由器,在这种状况下, OSPF需要建立起作为链路状态和LSA更新的中心节点。选举利用Hello报文内的ID和优先权(Priority)字段值来确定。优先权字段值大小从0到255,优先权值最高的路由器成为DR。如果优先权值大小一样,则ID值最高的路由器选举为DR, 优先权值次高的路由器选举为BDR。优先权值和ID值都可以直接设置。
3. 发现路由器
  在这个步骤中,路由器与路由器之间首先利用Hello报文的ID信息确认主从关系,然后主从路由器相互交换部分链路状态信息。每个路由器对信息进行分析比较,如果收到的信息有新的内容,路由器将要求对方发送完整的链路状态信息。这个状态完成后,路由器之间建立完全相邻(Full Adjacency)关系,同时邻接路由器拥有自己独立的、完整的链路状态数据库。
  在MultiAccess网络内,DR与BDR互换信息,并同时与本子网内其他路由器交换链路状态信息。
  在Point-to-Point 或 Point-to-MultiPoint网络中,相邻路由器之间互换链路状态信息。
4. 选择适当的路由器
  当一个路由器拥有完整独立的链路状态数据库后,它将采用SPF算法计算并创建路由表。OSPF路由器依据链路状态数据库的内容,独立地用SPF算法计算出到每一个目的网络的路径,并将路径存入路由表中。
  OSPF 利用量度(Cost)计算目的路径,Cost最小者即为最短路径。在配置OSPF路由器时可根据实际情况,如链路带宽、时延或经济上的费用设置链路Cost大小。Cost越小,则该链路被选为路由的可能性越大。
5. 维护路由信息
  当链路状态发生变化时,OSPF通过Flooding 过程通告网络上其他路由器。OSPF路由器接收到包含有新信息的链路状态更新报文,将更新自己的链路状态数据库,然后用SPF算法重新计算路由表。在重新计算过程中,路由器继续使用旧路由表,直到SPF完成新的路由表计算。新的链路状态信息将发送给其他路由器。值得注意的是,即使链路状态没有发生改变,OSPF路由信息也会自动更新,默认时间为30分钟。
  OSPF路由器之间使用链路状态通告(LSA)来交换各自的链路状态信息,并把获得的信息存储在链路状态数据库中。各OSPF路由器独立使用SPF算法计算到各个目的地址的路由。
  OSPF协议支持分层路由方式,这使得它的扩展能力远远超过RIP协议。当OSPF网络扩展到100、500甚至上千个路由器时,路由器的链路状态数据库将记录成千上万条链路信息。为了使路由器的运行更快速、更经济、占用的资源更少,网络工程师们通常按功能、结构和需要把OSPF网络分割成若干个区域,并将这些区域和主干区域根据功能和需要相互连接从而达到分层的目的。

OSPF中的四种路由器

  在OSPF多区域网络中,路由器可以按不同的需要同时成为以下四种路由器中的几种:
1. 内部路由器
  所有端口在同一区域的路由器,维护一个链路状态数据库。
2. 主干路由器
  具有连接主干区域端口的路由器。
3. 区域边界路由器(ABR)
   具有连接多区域端口的路由器,一般作为一个区域的出口。ABR为每一个所连接的区域建立链路状态数据库,负责将所连接区域的路由摘要信息发送到主干区域,而主干区域上的ABR则负责将这些信息发送到各个区域。
4. 自治域系统边界路由器(ASBR)
  至少拥有一个连接外部自治域网络(如非OSPF的网络)端口的路由器,负责将非OSPF网络信息传入OSPF网络。

OSPF四种区域类型

1. 标准区域
  一个标准区域可以接收链路更新信息和路由总结。 主干区域(传递区域): 主干区域是连接各个区域的中心实体。主干区域始终是“区域 0”,所有其他的区域都要连接到这个区域上交换路由信息。主干区域拥有标准区域的所有性质。
2. 存根区域
  存根区域是不接受自治系统以外的路由信息的区域。如果需要自治系统以外的路由,它使用默认路由0.0.0.0。
3. 完全存根区域
  它不接受外部自治系统的路由以及自治系统内其他区域的路由总结。需要发送到区域外的报文则使用默认路由:0.0.0.0。完全存根区域是Cisco自己定义的。
4. 不完全存根区域(NSAA)
  它类似于存根区域,但是允许接收以LSA Type 7发送的外部路由信息,并且要把LSA Type 7转换成LSA Type 5。
  区分不同OSPF区域类型的关键在于它们对外部路由的处理方式。外部路由由ASBR传入自治系统内,ASBR可以通过RIP或者其他的路由协议学习到这些路由。

OSPF四种网络类型

1、点到点网络
  即Point-to-point(P2P)型网络,是指该接口通过点到点的方式与一台路由器相连。此类型网络不需要进行OSPF的DR、BDR选举。
  当链路层协议是PPP或HDLC时,OSPF缺省认为网络类型是P2P。在此类型的网络中,OSPF以组播方式(224.0.0.5)发送协议报文。
2、广播型多路访问网络
  即Broadcast型网络,网络本身支持广播功能。当链路层协议是Ethernet、FDDI时,OSPF缺省认为网络类型是广播型。此类型网络需要进行OSPF的DR、BDR选举。在该类型的网络中,OSPF通常以组播方式(224.0.0.5和224.0.0.6)发送协议报文。
3、非广播型多路访问网络
  即NBMA(Non-Broadcast Multiple Access)型网络,虽然从一个接口可以到达多个目的节点,但是网络本身不支持广播功能,当链路层协议是帧中继、ATM或X.25时,OSPF缺省认为网络类型是NBMA。此时OSPF的邻居需要管理员手工指定。在该类型的网络中,以单播方式发送协议报文。
4、点到多点网络
  即Point-to-multipoint(P2MP)型网络,是指该接口通过点到多点的网络与多台路由器相连。
  P2MP型网络比较特殊,没有一种链路层协议会被缺省地认为是点到多点类型。点到多点必须是由其他网络类型强制更改而来。常用做法是将NBMA改为点到多点的网络。在该类型的网络中,缺省情况下以组播方式(224.0.0.5)发送协议报文,也可以根据用户需要,以单播形式发送协议报文。

OSPF中7种类型LSA(链路状态通告)

1、路由器LSA (Router LSA)
  由区域内所有路由器产生,并且只能在本个区域内泛洪广播。
  这些最基本的LSA通告列出了路由器所有的链路和接口,并指明了它们的状态和沿每条链路方向出站的代价。
2、网络LSA (Network LSA)
  由区域内的DR或BDR路由器产生,报文包括DR和BDR连接的路由器的链路信息。
  网络LSA也仅仅在产生这条网络LSA的区域内部进行泛洪。
3、网络汇总LSA (Network summary LSA)
  由ABR产生,可以通知本区域内的路由器通往区域外的路由信息。
  在一个区域外部但是仍然在一个OSPF自治系统内部的缺省路由也可以通过这种LSA来通告。
  如果一台ABR路由器经过骨干区域从其他的ABR路由器收到多条网络汇总LSA,那么这台始发的ABR路由器将会选择这些LSA通告中代价最低的LSA,并且将这个LSA的最低代价通告给与它相连的非骨干区域。
4、ASBR汇总LSA (ASBR summary LSA)
  也是由ABR产生,但是它是一条主机路由,指向ASBR路由器地址的路由。
5、自治系统外部LSA (Autonomous system external LSA)
  由ASBR产生,告诉相同自治区的路由器通往外部自治区的路径。
  自治系统外部LSA是惟一不和具体的区域相关联的LSA通告,将在整个自治系统中进行泛洪。
6、组成员LSA (Group membership LSA) 
  目前不支持组播OSPF (MOSPF协议)
7、NSSA外部LSA (NSSA External LSA)
  由ASBR产生,几乎和LSA 5通告是相同的,但NSSA外部LSA通告仅仅在始发这个NSSA外部LSA通告的非纯末梢区域内部进行泛洪。
  在NSSA区域中,当有一个路由器是ASBR时,不得不产生LSA 5报文,但是NSSA中不能有LSA 5报文,所有ASBR产生LSA 7报文,发给本区域的路由器。

报文格式

版本:占8位、版本号,OSPF版本1已经废弃。
类型:占8位、上文OSPF中7种类型LSA(链路状态通告)。
分组长度:占16位、整个OSPF报文的长度。
路由器ID:占32位、利用路由器环路接口的IP地址作为路由器的标识,如果没有环路接口IP,则选择最大的接口IP地址作为路由器标识。
区域ID:占32位、在多区域网络中,每一个区域指定一个区域ID。
认证类型:占16位、OSPF支持不同的认证方法,对组播地址224.0.0.5发送Hello分组要经过认证才能被接收。

 

华为eNSP搭建实验环境

 

拓扑

命令

----------------------------------------------->Router1
system-view
sysname Router1
interface GigabitEthernet0/0/0
ip address 1.1.1.1 255.255.255.0
int Serial 3/0/0
ip address 1.1.10.1 255.255.255.0
int Serial 3/0/1
ip address 1.1.11.1 255.255.255.0
int Serial 4/0/0
ip address 1.1.12.1 255.255.255.0
int Serial 4/0/1
ip address 1.1.13.1 255.255.255.0

ospf
area 0
network 1.1.10.0 0.0.0.255
network 1.1.11.0 0.0.0.255
network 1.1.12.0 0.0.0.255
network 1.1.13.0 0.0.0.255
network 1.1.1.0 0.0.0.255

----------------------------------------------->Router2
system-view
sysname Router2
interface GigabitEthernet0/0/0
ip address 1.1.2.1 255.255.255.0
int Serial 3/0/0
ip address 1.1.10.2 255.255.255.0
int Serial 4/0/0
ip address 1.1.14.1 255.255.255.0

ospf
area 0
network 1.1.10.0 0.0.0.255
network 1.1.14.0 0.0.0.255
network 1.1.2.0 0.0.0.255

----------------------------------------------->Router3
system-view
sysname Router3
interface GigabitEthernet0/0/0
ip address 1.1.3.1 255.255.255.0
int Serial 3/0/0
ip address 1.1.13.2 255.255.255.0
int Serial 3/0/1
ip address 1.1.16.2 255.255.255.0

ospf
area 0
network 1.1.13.0 0.0.0.255
network 1.1.16.0 0.0.0.255
network 1.1.3.0 0.0.0.255

----------------------------------------------->Router4
system-view
sysname Router4
interface GigabitEthernet0/0/0
ip address 1.1.4.1 255.255.255.0
int Serial 3/0/0
ip address 1.1.11.2 255.255.255.0
int Serial 4/0/0
ip address 1.1.14.2 255.255.255.0
int Serial 4/0/1
ip address 1.1.15.1 255.255.255.0

ospf
area 0
network 1.1.11.0 0.0.0.255
network 1.1.14.0 0.0.0.255
network 1.1.15.0 0.0.0.255
network 1.1.4.0 0.0.0.255

----------------------------------------------->Router5
system-view
sysname Router5
interface GigabitEthernet0/0/0
ip address 1.1.5.1 255.255.255.0
int Serial 3/0/0
ip address 1.1.12.2 255.255.255.0
int Serial 3/0/1
ip address 1.1.16.1 255.255.255.0
int Serial 4/0/1
ip address 1.1.15.2 255.255.255.0

ospf
area 0
network 1.1.12.0 0.0.0.255
network 1.1.16.0 0.0.0.255
network 1.1.15.0 0.0.0.255
network 1.1.5.0 0.0.0.255

使主机PC1 持续ping PC5(ping 1.1.5.10 -t),然后在链路AR1-AR3之间使用wireshark抓取数据包,此时在数据包中是没有ICMP报文的,然后断开AR1-AR5之间的连接,短暂的ping包超时后恢复正常,同时发现了wireshark中出现了ICMP报文,说明收敛完成。

没有断开AR1-AR5链路时AR1中的配置(OSPF简要信息,路由表)

断开AR1-AR5链路

如果想抓取AR1中所有报文可以使用端口镜像

路由器AR1中配置:

#设置路由器优先级(DR选举)
int Serial 3/0/0
ospf dr-priority 255
int Serial 3/0/1
ospf dr-priority 255
int Serial 4/0/0
ospf dr-priority 255
int Serial 4/0/1
ospf dr-priority 255

#配置端口镜像
observe-port interface GigabitEthernet 0/0/2
int Serial 3/0/0
mirror to observe-port both
int Serial 3/0/1
mirror to observe-port both
int Serial 4/0/0
mirror to observe-port both
int Serial 4/0/1
mirror to observe-port both

#配置查询
[Router1]dis mirror-port 
  ---------------------------------------------------------------------------
    Mirror-port              Direction  Observe-dest      
  ---------------------------------------------------------------------------
  1 Serial3/0/0              Both       GigabitEthernet0/0/2
  2 Serial3/0/1              Both       GigabitEthernet0/0/2
  3 Serial4/0/0              Both       GigabitEthernet0/0/2
  4 Serial4/0/1              Both       GigabitEthernet0/0/2
  ---------------------------------------------------------------------------

这样一来,就可以直接在镜像主机上查看ospf报文交互过程
数据包:https://download.csdn.net/download/qq_42196196/10990293

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值