OSPF路由协议学习笔记


OSPF路由协议学习笔记



开放式最短路径优先OSPF(Open Shortest Path First)协议是IETF定义的一种基于链路状态的IGP内部网关路由协议。

RIP是一种基于距离矢量算法的路由协议,存在着收敛慢、易产生路由环路、可扩展性差等问题,目前已逐渐被OSPF取代。

OSPF 是基于链路状态算法的常用的IGP 路由协议之一。在OSPF 域内,路由器之间交换的是链路状态信息,所有的链路状态信息(Link State Advertisement,LSA)集合成链路状态信息库(Link State Database,LSDB),路由器通过最短路径优先算法(Shortest Path First,SPF)计算出到达目的地的最短路由。由于通过SPF 算法可以生成一棵无环的最短路径树,因此OSPF 路由协议没有环路问题。同RIP 相比,OSPF 协议更适合大规模网络应用。本节将主要介绍OSPF 协议的基本特点和基本原理。

OSPF定义了四种网络类型,分别是点到点网络,广播型网络,NBMA网络和点到多点网络。


OSPF特点

OSPF 由于具有以下很多显著的特点,因此得到了广泛应用。

(1)支持CIDR。早期的路由协议如(RIPv1)并不支持CIDR,而OSPF 可以支持CIDR,同时在发布路由信息时携带了子网掩码信息,使得路由信息不再局限于有类网络。
(2)支持区域划分。OSPF 协议允许自治系统内的网络被划分成区域来管理。通过划分区域来实现更加灵活的分级管理。
(3)无路由自环。OSPF 从设计上保证了无路由环路。OSPF 支持区域的划分,区域内部的路由器都使用SPF 算法,保证了区域内部的无环路。在区域之间,OSPF 利用区域的连接规则保证了区域之间无路由自环。
(4)路由变化收敛速度快。OSPF 被设计为触发式更新方式。当网络拓扑结构发生变化,新的链路状态信息会立刻泛洪。OSPF 对拓扑变化敏感,因此路由收敛速度快。
(5)使用IP 多播收发协议数据。OSPF 路由器使用多播和单播收发协议数据,因此占用的网络流量很小。
(6)支持多条等值路由。在路由方面,OSPF 还支持多条等值路由。当目的地有多条等值开销路径时,流量被均衡地分担在这些等值开销路径上,实现了负载分担,更好地利用了链路带宽资源。
(7)支持协议报文的认证。在某些安全级别较高的网络中,OSPF 路由器可以提供认证功能。OSPF 路由器之间的报文可以配置成必须经过验证才能交换。通过验证可以提高网络的安全性。


链路状态算法

(1)邻接关系建立。相邻的路由器会形成OSPF 邻接关系。只有邻接关系建立好后,路由器之间才会交互各自知道的LSA。

(2)LSDB 同步。邻接关系建立好后,每个OSPF 路由器会把自己的LSA 通告给自己的邻居,同时接收邻居通告给自己的LSA,也会把自己知道的其他路由器的LSA 通告给邻居。每个路由器会保存自己收到的LSA。所有LSA 的集合叫作LSDB。

(3)SPF 路由计算。LSDB 同步后,每个OSPF 路由器以自己为根运行SPF 算法。运算的结果是以自己为根的一棵最短路径树。

(4)路由表生成。根据SPF 树,每台路由器都能计算出各自的路由信息,并添加到路由表。

总的来说就是:邻居发现、数据库同步、计算最优路由


OSPF报文类型

OSPF报文封装在IP报文中,协议号为89。

在这里插入图片描述

Type=1为Hello报文,用来建立和维护邻居关系,邻居关系建立之前,路由器之间需要进行参数协商。

Type=2为数据库描述报文(DD),用来向邻居路由器描述本地链路状态数据库,使得邻居路由器识别出数据库中的LSA是否完整。

Type=3为链路状态请求报文(LSR),路由器根据邻居的DD报文,判断本地数据库是否完整,如不完整,路由器把这些LSA记录进链路状态请求列表中,然后发送一个LSR给邻居路由器。

Type=4为链路状态更新报文(LSU),用于响应邻居路由器发来的LSR,根据LSR中的请求列表,发送对应LSA给邻居路由器,真正实现LSA的泛洪与同步。

Type=5为链路状态确认报文(LSAck),用来对收到的LSA进行确认,保证同步过程的可靠性。

DD、LSR、LSU、LSAck与LSA的关系:

  1. DD报文中包含LSA头部信息,包括LS Type、LS ID、Advertising Router 、LS Sequence Number、LS Checksum。
  2. LSR中包含LS Type 、LS ID和Advertising Router 。
  3. LSU中包含完整的LSA信息。
  4. LSAck中包含LSA头部信息,包括LS Type、LS ID、Advertising Router、LS Sequence Number、LS Checksum。

邻居(Neighbor)和邻接(Adjacency)

运行OSPF的路由器之间需要交换链路状态信息和路由信息,在交换这些信息之前路由器之间首先需要建立邻接关系。

邻居路由器(Neighbor):OSPF路由器启动后,便会通过OSPF接口向外发送Hello报文用于发现邻居。收到Hello报文的OSPF路由器会检查报文中所定义的一些参数,如果双方一致就会形成邻居关系。

邻接(Adjacency):形成邻居关系的双方不一定都能形成邻接关系,这要根据网络类型而定。只有当双方成功交换DD报文,并能交换LSA之后,才形成真正意义上的邻接关系。

路由器在发送LSA之前必须先发现邻居并建立邻居关系。


邻居和邻接关系建立的过程

在这里插入图片描述

 Down:这是邻居的初始状态,表示没有在邻居失效时间间隔内收到来自邻居路由器的Hello数据包。
 Attempt:此状态只在NBMA网络上存在,表示没有收到邻居的任何信息,但是已经周期性的向邻居发送报文,发送间隔为HelloInterval。如果RouterDeadInterval间隔内未收到邻居的Hello报文,则转为Down状态。
 Init:在此状态下,路由器已经从邻居收到了Hello报文,但是自己不在所收到的Hello报文的邻居列表中,尚未与邻居建立双向通信关系。
 2-Way:在此状态下,双向通信已经建立,但是没有与邻居建立邻接关系。这是建立邻接关系以前的最高级状态。
 ExStart:这是形成邻接关系的第一个步骤,邻居状态变成此状态以后,路由器开始向邻居发送DD报文。主从关系是在此状态下形成的,初始DD序列号也是在此状态下决定的。在此状态下发送的DD报文不包含链路状态描述。
 Exchange:此状态下路由器相互发送包含链路状态信息摘要的DD报文,描述本地LSDB的内容。
 Loading:相互发送LSR报文请求LSA,发送LSU报文通告LSA。
 Full:路由器的LSDB已经同步。


DR&BDR

每一个含有至少两个路由器的广播型网络和NBMA网络都有一个DR和BDR。

DR和BDR可以减少邻接关系的数量,从而减少链路状态信息以及路由信息的交换次数,这样可以节省带宽,降低对路由器处理能力的压力。一个既不是DR也不是BDR的路由器只与DR和BDR形成邻接关系并交换链路状态信息以及路由信息,这样就大大减少了大型广播型网络和NBMA网络中的邻接关系数量。

BDR在DR发生故障时接管业务,一个广播网络上所有路由器都必须同BDR建立邻接关系。


DR&BDR选举

在邻居发现完成之后,路由器会根据网段类型进行DR选举。在广播和NBMA网络上,路由器会根据参与选举的每个接口的优先级进行DR选举。优先级取值范围为0-255,值越高越优先。缺省情况下,接口优先级为1。如果一个接口优先级为0,那么该接口将不会参与DR或者BDR的选举。如果优先级相同时,则比较Router ID,值越大越优先被选举为DR。

为了给DR做备份,每个广播和NBMA网络上还要选举一个BDR。BDR也会与网络上所有的路由器建立邻接关系。

为了维护网络上邻接关系的稳定性,如果网络中已经存在DR和BDR,则新添加进该网络的路由器不会成为DR和BDR,不管该路由器的Router Priority是否最大。如果当前DR发生故障,则当前BDR自动成为新的DR,网络中重新选举BDR;如果当前BDR发生故障,则DR不变,重新选举BDR。这种选举机制的目的是为了保持邻接关系的稳定,使拓扑结构的改变对邻接关系的影响尽量小。


OSPF区域

 区域是一组路由器和网络的集合。
 每个区域都维护一个独立的LSDB。
 Area 0是骨干区域,其他区域都必须与此区域相连。
 划分OSPF区域可以缩小路由器的LSDB规模,减少网络流量。
 区域内的详细拓扑信息不向其他区域发送,区域间传递的是抽象的路由信息,而不是详细的描述拓扑结构的链路状态信息。每个区域都有自己的LSDB,不同区域的LSDB是不同的。路由器会为每一个自己所连接到的区域维护一个单独的LSDB。由于详细链路状态信息不会被发布到区域以外,因此LSDB的规模大大缩小了。
 Area 0为骨干区域,为了避免区域间路由环路,非骨干区域之间不允许直接相互发布路由信息。因此,每个区域都必须连接到骨干区域。
 运行在区域之间的路由器叫做区域边界路由器ABR(Area Boundary Router),它包含所有相连区域的LSDB。自治系统边界路由器ASBR(Autonomous System Boundary Router)是指和其他AS中的路由器交换路由信息的路由器,这种路由器会向整个AS通告AS外部路由信息。
 单区域:是指所有运行OSPF 协议的路由器被划分到同一个区域。
 多区域:是指所有运行OSPF 协议的路由器被划分到不同的区域。
 自治系统:自治系统的典型定义是指由同一个技术管理机构使用统一选路策略的一些路由器的集合。


为什么需要划分多区域

单区域LSDB庞大,SPF计算复杂

拓扑结构变化的概率增大,造成网络中会有大量的OSPF 协议报文在传递,降低了网络的带宽利用率


路由器分类

(1)内部路由器(Internal Router,IR)。内部路由器是指所有接口网段都在一个区域的路由器。属于同一个区域的IR 维护相同的LSDB。
(2)区域边界路由器(Area Border Router,ABR)。区域边界路由器是指连接到多个区域的路由器。ABR 为每一个所连接的区域维护一个LSDB。区域之间的路由信息通过ABR 来交互。
(3)骨干路由器(Backbone Router,BR)。骨干路由器是指至少有一个端口(或者虚连接)连接到骨干区域的路由器,包括所有的ABR 和所有端口都在骨干区域的路由器。由于非骨干区域必须与骨干区域直接相连,因此骨干区域中的路由器(即骨干路由器)往往会处理多个区域的路由信息。
(4)自治系统边界路由器(AS Boundary Router,ASBR)。AS 边界路由器是指和其他AS 中的路由器交换路由信息的路由器。这种路由器负责向整个AS 通告来源于AS 外部的路由信息。AS 内部路由器通过ASBR 与AS 外部进行通信。自治系统边界路由器可以是内部路由器IR,或者是ABR,可以属于骨干区域,也可以不属于骨干区域。


OSPF故障案例分析

在这里插入图片描述

 邻居无法建立的原因
(1)BFD 故障。
(2)对端设备故障。
(3)CPU 利用率过高。
(4)链路故障。
(5)接口没有UP。
(6)两端IP 地址不在同一网段。
(7)Router ID 配置冲突。
(8)两端区域类型配置不一致。
(9)两端OSPF 参数配置不一致。


相关问题

  1. 请描述链路状态算法的基本计算过程。
    每个路由器向外发布本地链路状态信息,并收集其它路由器发布的链路状态信息,形成一个描述网络拓扑结构的链路状态数据库,通过此数据库使用最短路径优先算法计算出一个最短路径树,最短路径树给出了到网络中每个节点的路由。

  2. 什么是OSPF区域?
    一个OSPF区域是一组网段的集合。


**本文中的部分内容来自网络或相关书籍**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值