OSPF协议分析与配置

本文简要分析OSPF协议的原理和应用,利用Cisco Packet Tracer仿真器搭建环境,对OSPF协议进行实验配置,供学习记录。

文章目录

    • 一、基本原理
      • (一) 区域类型
      • (二) 路由器类型
      • (三) Router-ID
      • (四) DR / BDR / DROTHER
      • (五) 网络类型
      • (六) 路由器状态
      • (七) 虚链路
      • (八) 常见LSA类型
      • (九) 工作过程
      • (十) 优缺点分析
    • 二、实验配置
      • (一) 实验拓扑
      • (二) 配置命令

按照作用于AS的范围,常见路由协议可划分为两类:

  • 内部网关协议 (Interior Gateway Protocols, IGP):具体包括RIP、OSPF、IS-IS、EIGRP等,一般由单个ISP运营于一个AS内,有统一的自治系统号,目前大型企业内部多使用OSPF、IS-IS,小型企业内部使用RIP或静态路由
  • 外部网关协议 (Exterior Gateway Protocols, EGP):BGP是目前唯一使用的一种EGP协议,它是AS间的路由协议,一般用于不同ISP之间交换路由信息,以及大型企业、政府等具有较大规模的私有网络

下面对内部网关协议中的OSPF进行介绍:

一、基本原理

OSPF(Open Shortest Path First) 是一种链路状态路由协议,它克服了距离矢量路由协议依赖邻居进行路由决策的缺点,报文基于IP,多部署于中大型园区、企业或城域网中。

OSPF提出了“区域”的概念,将AS划分成多个逻辑区域,每个区域中所有路由器通过组播的方式 (224.0.0.5 或 225.0.0.6) 宣告链路状态建立并维护着一个相同的链路状态数据库 (Link State DataBase, LSDB),其中存放着接口的相关信息 (IP地址、带宽以及所连接的邻居等),OSPF路由器通过各自的LSDB,利用最短路径优先算法 (Shortest Path First, SPF, 也称为Dijkstra算法) 生成最短路径树并构造路由表,其路径开销 (Cost) 计算基于接口的带宽,每个区域的OSPF路由器负责各自区域的链路状态通告 (Link State Adervertisement, LSA) 传递及路由计算。

(一) 区域类型

划分多区域的优势在于收敛快、易于维护管理、方便扩展,区域的划分基于网段 (路由器接口),区域类型分为两类:

  • 骨干区域 (传输区域):Area 0,1个AS中一般只存在1个Area 0区域
  • 非骨干区域 (常规区域):Area x,1个AS中可以有多个Area x区域,根据能够学习的路由信息种类进而细分为四类:
    标准区域 (Standard Area):正常传输数据的区域
    末节区域 (Stub Area):禁用外部AS的信息
    完全末节区域 (Totally Stub Area):禁用外部AS和区域间信息
    非纯末节区域 (NSSA):禁用非直连的外部AS信息

常规区域只能和骨干区域交换LSA,常规区域相互之间无法交换LSA,因此所有的常规区域应该直接和骨干区域相连,骨干区域的功能类似中转站,将常规区域间的LSA信息进行转发和交换。

(二) 路由器类型

根据路由器接口所在区域的类型,相应地路由器分为四类:

  • 内部路由器 (Internal Router, IR):所有接口都在同一个区域内,只维护本区域的LSDB
  • 区域边界路由器 (Area Border Routers, ABR):同时属于两个以上的区域,其中必须包括骨干区域 (物理连接或通过虚链路连接),用于连接骨干区域和非骨干区域
  • 骨干路由器 (BackBone Router, BR):所有ABR和位于骨干区域内的路由器都属于骨干路由器,只维护骨干区域的LSDB,
  • 自治系统边界路由器 (AS Boundary Routers, ASBR):与其他AS交换路由信息的路由器,可以使用多种路由协议,可以是ABR,也可以是内部路由器

基本区域划分和路由器类型如下图所示:
OSPF协议分析与配置_第1张图片

(三) Router-ID

Router-ID是OSPF路由器的唯一身份标识,Router-ID格式与IP一致,可以手动进行配置,如果不配置系统则会自动将路由器环回接口 (Loopback Interface) 中最大的IP作为Router-ID,只要路由器在线,环回接口就处于活动状态,如果没有环回接口,则选择活动的物理接口中最大的IP作为Router-ID。

(四) DR / BDR / DROTHER

在一个OSPF区域中,当路由器之间建立邻居关系后,为避免LSA信息重复发送,选举一个路由器作为指定路由器 (Designated Router, DR),再选举一个路由器作为备份指定路由器 (Backup Designated Router, BDR),其他的路由器为非指定路由器 (DROTHER)。在LSA信息更新时,此区域内发生更新的路由器将LSA发送到DR,再由DR发送到其他区域内的路由器,一个区域内邻居路由器只和DR交换LSA信息,这样节省了网络流量。在DR出现故障时,BDR起着备份的作用,确保网络的可靠性。

DR和BDR的选举首先通过是通过时间,最先启动的OSPF路由器会启动一个定时器 (CISCO 40s),定时器结束前如果没有其他的OSPF启动,则这唯一的OSPF路由器当选为DR;当有多个OSFP路由器时则先比较优先级,优先级高的选为DR,次高的为BDR;如果优先级相同则通过比较Router-ID大小,Router-ID大的选为DR,次高的为BDR;其他的OSPF路由器为DROTHER。

(五) 网络类型

基于链路层网络协议,OSPF支持四种网络类型:
(注意网络类型不同于物理拓扑,其划分主要基于网络在链路层运行的协议)

  • 点到点网络 (Point to Point, P2P):链路层协议如PPP和HDLC,此类网络不用进行DR和BDR的选举,直接形成邻接关系
  • 广播多路访问网络 (Broadcast Multi-Access, BMA):链路层协议如以太网 (IEEE 802.3),可以 (泛洪) 发送广播和组播报文,需要进行DR和BDR的选举
  • 非广播多路访问网络 (None Broadcast Multi-Access, NBMA):链路层协议帧中继、X.25,不能 (泛洪) 发送广播和组播报文,只能发送单播数据包
  • 点到多点网络 (Point to Multi-Point, P2MP):需要将其他的网络类型强制更改为P2MP类型,常见如NBMA网络改为P2MP,可以 (泛洪) 发送广播和组播报文,无需选举DR和BDR

(六) 路由器状态

OSPF路由器在同步LSDB过程中,分为七种状态:

  • Down:接口没有启用OSPF的状态,邻居失效后变为该状态
  • Init:初始化状态,发送完HELLO包,状态就从Down变为Init
  • 2-way:接收到了对方的HELLO包之后,从Initial变为2-way邻居状态,开启40秒定时器,相互间周期发送HELLO报文(10秒发一次),给足够的时间深度发现其他路由器发送的HELLO包,等待40秒定时器超时
  • Exstart:定时器40秒超时后,状态变为Exstart,但是在变为Exstart状态前,会完成DR和BDR的选举,进入Exstart状态后立即选举主从路由器,引导接下来报文的发送
  • Exchange:主从关系确认后,开始交换DBD报文 (本地LSA摘要信息),告知对端本地所有的LSA摘要信息
  • Loading:发送完LSA摘要信息后,再通过发送LSR、LSU、LSACK报文更新LSA,学习对端路由器的LSA详细信息
  • Full:LSA详细信息学习完毕后,状态变为Full邻接状态,LSDB完成同步,此时在单个域内所有路由器的LSDB相同

(七) 虚链路

非骨干区域和骨干区域之间通过ABR中转LSA,其他路由器需要向ABR建立一条虚链路 (虚链路只能跨一个区域),否则无法同步LSDB信息。如下所示,RT2与RT3建立虚链接后,使得Area2与Area0之间形成逻辑连接,否则LSDB信息无法同步。
OSPF协议分析与配置_第2张图片
骨干区域必须是一个整体,虚链路也可以将隔开的两个骨干区域相连接,如下所示,RT2与RT3建立虚链接后,Area0在逻辑上成为一个整体。
OSPF协议分析与配置_第3张图片

(八) 常见LSA类型

LSA类型 名称 作用 路由表符号及类型
Type1 Router LSA 所有路由器都会产生,只在本区域内泛洪,用于通告路由器所有接口状态及开销 O: 区域内路由
Type2 Network LSA 由一个多路访问网络中的DR产生,只在本区域内泛洪,用于向区域内的其它路由器通告网络信息以及接入此网络的路由器 O: 区域内路由
Type3 Network Summary LSA 由ABR产生,用于通告与ABR相连的区域内所有路由器的路由信息,区域间路由指向通告LSA的ABR IA: 区域间路由
Type4 ASBR Summary LSA 由ABR产生,用于通告ASBR的地址 (Router-ID),在整个AS的标准区域内泛洪 IA: 区域间路由
Type5 AS External LSA 由ASBR产生,用于通告与ASBR相连的其他AS的路由信息,在整个AS的标准区域内泛洪 E1/E2: 1/2类外部路由
Type7 NSSA External LSA 由连接到NSSA的ASBR产生,通告内容和Type5 LSA基本相同,区别在于只在产生此LSA的NSSA区域内部泛洪,可以通过ABR转换为Type5 LSA N1/N2: 1/2类NSSA外部路由

(九) 工作过程

以常见的BMA类型网络为例,OSPF基本工作过程如下:

① 建立邻居关系:OSPF路由器初始化时,在同一区域的相邻路由器之间通过HELLO报文发现并建立邻居关系,路由器状态为2-way;

② 同步LSDB (建立邻接关系):互为邻居关系的路由器首先选举出DR/BDR,然后DROTHER和DR/BDR之间相互发送数据库描述报文 (Database Description, DD),如果发现DD描述信息和自身的LSDB信息不一致,则返回数据库状态请求报文 (Link State Request, LSR),收到LSR的路由器会发送数据库状态更新报文 (Link State Update, LSU),LSU内含完整的LSA信息,其中包括接口地址、带宽、邻居等链路状态信息,收到LSA的路由器会返回LSAck,并将信息保存在自身LSDB中,从而完成LSDB的同步,以上报文全部基于组播发送。邻接关系就是邻居路由器之间为完成LSDB同步而发生的LSA交互过程 (DROTHER只和DR/BDR之间建立邻接关系,DROTHER之间不会建立邻接关系),同步后单个区域内所有的路由器都会形成相同的LSDB,路由器状态为Full;

③ 构建路由表:路由器结合自身LSDB信息,使用SPF算法生成最短路径树,构建出各自的区域内路由表;区域间路由则依靠ABR完成,ABR会查找其相邻区域内的路由表,如果存在其他区域的路由信息,则每一条表项生成一条Type3类型的LSA,然后将Type3 LSA泛洪到其他相邻区域 (此类型LSA只有路由信息,不包含链路状态信息,不参与SPF计算),在泛洪区域的路由器会根据Type3 LSA生成区域间路由信息,路由的下一跳指向发布LSA的ABR,路由信息直接加入路由表项;

④ 路由信息维护:一方面,邻居之间根据配置固定时间交换HELLO数据包作为心跳消息,并且每隔30分钟DR会定期重发一次DD包进行LSDB的同步;另一方面,当网络拓扑中节点状态发生了变化,比如有节点故障或者新增节点,那么发生变化的节点将立刻向DR发送LSU更新LSA信息,再由DR向DROTHER发送LSU更新其他路由器的LSA信息,完成LSDB同步,最后会重新计算生成新的路由表项。

(十) 优缺点分析

优点

  • 收敛速度快,能够在最短的时间内将路由变化传递到整个自治系统
  • 没有跳数限制,支持大量网络节点,适用于大规模网络
  • 采用路径开销 (Cost) 作为度量标准,路径开销计算基于接口的带宽
  • 划分区域进行管理,减少大规模网络中协议运行的流量和开销

缺点

  • 配置复杂,需要区分不同的网络区域和路由器类型
  • 路由负载均衡性较差,通常只路由最佳路径,而不能均衡不同路径间的流量

二、实验配置

(一) 实验拓扑

以BMA型网络为例,拓扑如下:
OSPF协议分析与配置_第4张图片

(二) 配置命令

(VLAN、DHCP、NAT等基础配置略过,只记录路由配置部分)

# R0配置
R0(config)# ip route 0.0.0.0 0.0.0.0 1.1.1.1   // 边界路由器设置静态路由指向ISP的路由器       

# R1配置
R1(config)# interface loopback 0               // 配置环回接口,接口地址用于配置Router-ID,范围 0-2147483647
R1(config-if)# ip address 10.10.10.1 255.255.255.255
R1(config-if)# exit
R1(config)# router ospf 1                      // 启动OSPF进程,范围 1-65535       
R1(config-router)# router-id 10.10.10.1        // 配置Router-ID
R1(config-router)# network 1.1.1.0 0.0.0.255 area 2  // 宣告直连网段和所属区域,用反向掩码表示子网掩码
R1(config-router)# network 2.2.2.0 0.0.0.255 area 2  
R1(config-router)# network 10.10.10.1 0.0.0.0 area 2
R1(config-router)# exit

# R2配置
R2(config)# interface loopback 0              
R2(config-if)# ip address 10.10.10.2 255.255.255.255
R2(config-if)# exit
R2(config)# router ospf 1                           
R2(config-router)# router-id 10.10.10.2       
R2(config-router)# area 1 virtual-link 10.10.10.3   // 建立虚连接,指向跨越区域ABR的Router-ID
R2(config-router)# network 2.2.2.0 0.0.0.255 area 2   
R2(config-router)# network 3.3.3.0 0.0.0.255 area 1
R2(config-router)# network 10.10.10.2 0.0.0.0 area 1
R2(config-router)# exit

# R3配置
R3(config)# interface loopback 0               
R3(config-if)# ip address 10.10.10.3 255.255.255.255
R3(config-if)# exit
R3(config)# router ospf 1                      
R3(config-router)# router-id 10.10.10.3   
R3(config-router)# area 1 virtual-link 10.10.10.2  
R3(config-router)# network 3.3.3.0 0.0.0.255 area 1  
R3(config-router)# network 4.4.4.0 0.0.0.255 area 0
R3(config-router)# network 10.10.10.3 0.0.0.0 area 1
R3(config-router)# exit

# R4配置
R4(config)# interface loopback 0           
R4(config-if)# ip address 10.10.10.4 255.255.255.255
R4(config-if)# exit
R4(config)# router ospf 1                        
R4(config-router)# router-id 10.10.10.4       
R4(config-router)# network 4.4.4.0 0.0.0.255 area 0 
R4(config-router)# network 5.5.5.0 0.0.0.255 area 0
R4(config-router)# network 10.10.10.4 0.0.0.0 area 0
R4(config-router)# exit

# R5配置
R5(config)# ip route 0.0.0.0 0.0.0.0 5.5.5.2            

配置后可用命令查看路由信息:

# 查看OSPF配置信息
Router# show ip ospf ?

# 查看所有路由表项
Router# show ip route

# 查看OSPF路由表项
Router# show ip route ospf

# 查看IP路由协议配置参数和运行情况
Router# show ip protocols

如果一次性需要配置多个路由器,可以先将命令逐行写出,然后复制粘贴就可以一次性完成配置,如下所示:
OSPF协议分析与配置_第5张图片

你可能感兴趣的:(网络设备,cisco,ospf,路由协议)