目录

OSPF 协议基础OSPF ( Open Shortest Path First )开放式最短路径优先

前言

大型网络所发生的变化

RIP 在大型网络中部署所面临的问题

如何解决 RIP 的问题?

链路状态路由协议 OSPF

OSPF 的工作过程

Router ID

发现并建立邻居 - Hello 报文

OSPF 邻居建立过程

发现并建立邻居 - 手动建立

链路状态信息

丰富的数据链路层支持能力

网络类型 - P2P 网络

网络类型 - 广播型网络

网络类型 - NBMA 网络

网络类型 - P2MP 网络

OSPF 的度量方式

OSPF 协议报文头部

OSPF 报文类型

OSPF 报文的功能需求

OSPF 的 LSDB 同步(1)

OSPF 的 LSDB 同步(2)

OSPF 邻居状态机

LSA 头部

MA 网络中的问题

DR 与 BDR 作用

DR 与 BDR 选举

邻居与邻接关系

思考题


OSPF 协议基础
OSPF ( Open Shortest Path First )开放式最短路径优先

OSPF 知识点
OSPF 基本配置,OSPF  5 种报文 ,7种邻居状态,4 种网络类型,4 种特殊区域,7类LSA,4 种 link type,标识一条LSA的 3 个要素,OSPF 邻居与邻接关系,单区域、多区域、OSPF 认证(keychain),DR 的选举,OSPF 被动接口,OSPF 域间聚合,外部聚合,不规则区域的解决办法(虚链路),OSPF 开销值、协议优先级及计时器的修改,OSPF 外部路由引入,下放默认路由,OSPF 在FR 中的应用,OSPF 协议中 Forwarding Address 的理解

========
先选举BDR ,后有DR

因为 DR 和 BDR 的切换状态机是:当 DR 失效时,BDR 成为 DR
如果先选举DR,再选举BDR ,那么当选举 BDR 的过程中DR 失效,此时网络中既没有 DR 也没有 BDR,切换将无法进行,状态机也就没办法做了。
所以先有 BDR, 后有 DR 是为了保证状态机能正常工作。

========

邻居及邻接的区别:
  邻居 neighbor---必须有直连的链路
  邻接 adjacency--- 1. 必须是邻居, 2. 链路两边同一区域的数据库必须同步(状态为:FULL).

邻接建不起来的原因
1) hello间隔和dead 间隔不同; 接口下OSPF网络类型不匹配。
2) 区域号码不一致;
3) 特殊区域(如stub,nssa等)区域类型不匹配;
4) 认证类型或密码不一致;
5) 路由器 router-id 相同;
6) 链路上的 MTU 不匹配;
7)在broadcast链路上的子网掩码不匹配
8)在MA 网络中,没有DR
9)接口设置为 silent-interface

int g0/0/0
mtu 1400
ospf mtu-enable

ospf mtu-enable 两端都要设置

ospf mtu-enable命令用来使能接口在发送DD报文时填MTU值。缺省情况下,接口发送DD报文时MTU值为0,即不填接口的实际MTU值。
大家直到OSPF在达到FULL关系过程中,可能会由于MTU不匹配导致DD报文交互出现问题,无法达到FULL状态。因此为了避免不同厂商设备对接时出现该问题,默认情况下发送DD报文时不填写接口的实际MTU值,即为0。这样避免对端由于DD报文中MTU值大于接口MTU,导致邻居关系无法建立。
强调下,该命令只是控制发DD报文的情况.HW VRP对于收的DD报文,就是不检查MTU的。所以MTU的匹配要通过专门确认。当然不检查MTU也会存在一些问题,就不能通过OSPF发现两端接口MTU不一致的情况。如果没有及时发现MTU不一致,上业务后会出现有丢包情况。

OSPF几个需要注意的地方:
1)当hello时间不同时是永远起不来邻居的
2)当hello时间不同时会停留在INIT状态
3)如果路由的优先级都改成了0,会停留在TWO-WAY状态
4)当MTU值不同时会停留在EXSTART或EXCHANGE状态

OSPF 使用两个多播地址
224.0.0.5---All OSPF Routers.
224.0.0.6---All DR Routers(DR+BDR)

224.0.0.5 指在任意网络中所有运行OSPF进程的接口都属于该组,于是接收所有224.0.0.5的组播数据包
224.0.0.6 指一个多路访问网络中DR和BDR的组播接收地址

MA 网络 路由器发向DR.BDR 的为 224.0.0.6
DR.BDR 回应的是 224.0.0.5

OSPF 链路状态序列号
最大寿命定时器、刷新定时器和链路状态序列号一起确保数据库只包含最新的链路状态记录。
1).LSDB中每一个LSA都有一个序列号,序列号越大,LSA 越新。
2).序列号范围从0x80000001-0x7FFFFFFF
3).OSPF每30分钟flood一次LSA来维持LSDB同步,每次flood序列号加 1
4).当一个路由器遇到同一个LSA的两个实例时,它必须能够确定哪一个是最近的LSA。(根据序列号来识别)
当一条LSA的序列号到达最大序列号时,始发路由器会发送一个生存时间为最大值的LSA,让其它的路由器从LSDB中清除这条LSA,当其它路由器确认后,再发送一个初始序列号的LSA。注意:只有始发路由器才可以提前使这条LSA老化,LSA条目的老化时间默认是一小时(0-3600S)

========

OSPF 协议  link-type

OSPF的有以下几种LSA:
Type-1 lsa (router lsa)
Type-2 lsa (network lsa)
Type-3 lsa (network summary lsa)
Type-4 lsa (asbr summary lsa)
Type-5 lsa (as external lsa)
Type-7 lsa (nssa external lsa)

link type 又分为4类:
Point to Point  link            描述链路是P to P
Stub network  link             描述网段信息
Trans  network  link           描述DR.BDR
Virtual-link   link                描述虚链接

链接类型(并非OSPF定义的四种网络类型),Router LSA描述的链接类型主要有:

Point-to-Point:描述一个从本路由器到邻居路由器之间的点到点链接,属于拓扑信息。
TransNet:描述一个从本路由器到一个Trans网段(例如MA网段或者NBMA网段)的链接,属于拓扑信息。
StubNet:描述一个从本路由器到一个Stub网段(例如Loopback接口)的链接,属于路由信息。

LINK包括:
1.Link-ID
2.Link-type
3.Link-data

第一类LINK Point to Point   link
1.Link -id   邻居的Router-id
2.Link-type  Point to Point
3.Link-data  本路由器在本链路的接口IP

第二类LINK  Stub network  link
1.Link-id      网络地址
2.Link-type   Stub network  
3.Link-data   子网掩码

第三类LINK  Transmit  network  link
1.Link-id  DR在本网段接口IP
2.Link-type  Transmit  network  
3.Link-data   本链路的接口IP

第四类LINK   Virtual-link   link        
1.Link-id    邻居Router-id
2.Link-type  Virtual-link
3.Link-data  虚链路所使用的物理口的接口IP

==========

OSPF 选路规则 :
区域内的 > 区域间的 > TYPE 1 > TYPE2

避免域间路由环路
为防止区域间的环路OSPF定义了骨干区域和非骨干区域和三类LSA的传递规则。

1. OSPF划分了骨干区域和非骨干区域,所有非骨干区域均直接和骨干区域相连且骨干区域只有一个,非骨干区域之间的通信都要通过骨干区域中转,骨干区域ID固定为0。
2. OSPF规定从骨干区域传来的三类LSA不再传回骨干区域。

两台设备 R1  192.168.1.1 , R2 192.168.1.2
R1 发送的 DD 报文, I ,M ,MS

I=1 这个一个初始报文
M=1 后面还有其他的报文
MS=1 我是主张自己是 master

前言

RIP是基于距离矢量算法的路由协议,应用在大型网络中存在收敛速度慢、度量值不科学、可扩展性差等问题。
        IETF提出了基于SPF算法的链路状态路由协议OSPF (pen Shortest Path First) .通过在大型网络中部署OSPF协议,弥补了RIP协议的诸多不足。那么OSPF协议是如何实现的呢?面对网络扩展的需求,又该如何应对呢?

大型网络所发生的变化

⦁    网络规模扩大:
        ⦁    企业新业务层出不穷,且业务呈现大集中趋势,使得网络规模不断扩大。
⦁    网络可靠性要求提高:
        ⦁    各种应用程序对网络可靠性要求越来越高,网络发生故障后,需要在更短的时间内恢复正常。
⦁    网络异构化,多厂商设备互联需求:
        ⦁    在日常的运营维护中,硬件设备不断升级或更新,不同设备之间性能差异较大,设备间互连链路带宽也存在一定的差异。
        ⦁    需要一种各厂商均支持的开放路由协议。
⦁    面对越来越高的要求与挑战,如果通过RIP来部署,会遇到什么问题?

RIP 在大型网络中部署所面临的问题

⦁    逐跳收敛:
        ⦁    如图所示,N1网络发生变化,RTA向RTB发出更新,RTB收到更新之后进行本地计算,完成计算后再向RTC发送路由变化通知,如此循环。逐跳收敛的方式,造成了网络收缓慢的问题。
⦁    传闻路由更新机制:
        ⦁    RIP在计算路由完全依赖于从邻居路由器收到的路由信息,RTE仅依靠从RTD获取的信息计算路由,对RTA、RTB和RTC之间的网络情况并不了解。RIP在计算路由时,缺少对全局网络拓扑的了解。
⦁    以“跳数”为度量:
        ⦁    因为RIP基于跳数的度量方式,所以N1与N2网络互访时会选择RTA->RTB->RTD->RTE作为最优路径。显然RTB->RTC->RTD之间的以太链路要比RTB->RTD的串行链路带宽要高的多。
⦁    针对RIP遇到的问题,可以通过什么方式优化或者解决?

如何解决 RIP 的问题?

⦁    在 “收到更新”、“计算路由”、“发送更新”的路由收敛过程中,RIP的局限性在于路由器需要在完成路由计算之后才可以向邻居发送路由变化通知。如果将这个过程调整为:“收到更新”、 “发送更新”、“计算路由”,即路由器从邻居收到路由更新后立刻向其他邻居路由器转发,然后再本地计算新的路由。这样的收敛方式可以大大降低全网路由收敛的时间。
⦁    因为RIP路由器仅从邻居路由器获取路由信息,所以对于非最优或者错误路由信息,RIP路由器并不能识别或屏蔽。解决此问题的关键最佳方式是路由器收集全网的信息,并基于这些信息独立计算路由。
⦁    基于跳数的度量方式并没有考虑数据包的链路转发延迟,如果采用以累积带宽为选路参考依据,可以更好的规避选择次优路径的风险。
⦁    与RIP这种距离矢量路由协议不同的链路状态路由协议是以怎样的方式来解决上述问题的呢?

链路状态路由协议 OSPF

⦁    所谓Link State(链路状态)指的就是路由器的接口状态。在OSPF中路由器的某一接口的链路状态包含了如下信息:
        ⦁    该接口的IP地址及掩码。
        ⦁    该接口的带宽。
        ⦁    该接口所连接的邻居。
        ⦁    ……
⦁    OSPF作为链路状态路由协议,不直接传递各路由器的路由表,而传递链路状态信息,各路由器基于链路状态信息独立计算路由。
⦁    所有路由器各自维护一个链路状态数据库。邻居路由器间先同步链路状态数据库,再各自基于SPF(Shortest Path First)算法计算最优路由,从而提高收敛速度。
⦁    在度量方式上,OSPF将链路带宽作为选路时的参考依据。 “累计带宽”是一种要比“累积跳数”更科学的计算方式。
⦁    RIP在大型网络中部署所面临的问题,OSPF都有相对应的解决办法,接下来详细地介绍下OSPF的实现过程。

OSPF 的工作过程

⦁    企业网络是由众多的路由器、交换机等网络设备之间互相连接组成的,类似一张地图。由于众多不同型号的路由器、不同类型的链路及其连接关系,造成了路由计算的复杂性。
⦁    OSPF的路由计算过程可以简化描述为:
        ⦁    路由器之间发现并建立邻居关系。
        ⦁    每台路由器产生并向邻居泛洪链路状态信息,同时收集来自其他路由器链路状态信息,完成LSDB(Link State Database)的同步。
        ⦁    每台路由器基于LSDB通过SPF算法,计算得到一棵以自己为根的SPT(Shortest Path Tree),再以SPT为基础计算去往各目的网络的最优路由,并形成路由表。
⦁    下面我们依照这三个步骤为主线,来学习和掌握OSPF的原理与实现。

Router ID

⦁    企业网中的设备少则几台多则几十台甚至几百台,每台路由器都需要有一个唯一的ID用于标识自己。
⦁    Router ID是一个32位的无符号整数,其格式和IP地址的格式是一样的,Router ID选举规则如下:
        ⦁    手动配置OSPF路由器的Router ID(通常建议手动配置);
        ⦁    如果没有手动配置Router ID,则路由器使用Loopback接口中最大的IP地址作为Router ID;
        ⦁    如果没有配置Loopback接口,则路由器使用物理接口中最大的IP地址作为Router ID。
⦁    OSPF的路由器Router ID重新配置后,可以通过重置OSPF进程来更新Router ID。

发现并建立邻居 - Hello 报文

⦁    OSPF路由器之间在交换链路状态信息之前,首先需要彼此建立邻居关系,通过Hello报文实现。
        ⦁    OSPF协议通过Hello报文可以让互联的路由器间自动发现并建立邻居关系,为后续可达性信息的同步作准备。
        ⦁    在形成邻居关系过程中,路由器通过Hello报文完成一些参数的协商。
        ⦁    邻居关系建立后,周期性的Hello报文发送还可以实现邻居保持的功能,在一定时间内没有收到邻居的Hello报文,则会中断路由器间的OSPF邻居关系。

OSPF 邻居建立过程

⦁    状态含义:
        ⦁    Down:这是邻居的初始状态,表示没有从邻居收到任何信息。
        ⦁    Init:在此状态下,路由器已经从邻居收到了Hello报文,但是自己的Router ID不在所收到的Hello报文的邻居列表中,表示尚未与邻居建立双向通信关系。
        ⦁    2-Way:在此状态下,路由器发现自己的Router ID存在于收到的Hello报文的邻居列表中,已确认可以双向通信。
⦁    邻居建立过程如下:
        ⦁    RTA和RTB的Router ID分别为1.1.1.1和2.2.2.2。当RTA启动OSPF后,RTA会发送第一个Hello报文。此报文中邻居列表为空,此时状态为Down,RTB收到RTA的这个Hello报文,状态置为Init。
        ⦁    RTB发送Hello报文,此报文中邻居列表为空,RTA收到RTB的Hello报文,状态置为Init。
        ⦁    RTB向RTA发送邻居列表为1.1.1.1的Hello报文,RTA在收到的Hello报文邻居列表中发现自己的Router ID,状态置为2-way。
        ⦁    RTA向RTB发送邻居列表为2.2.2.2的Hello报文,RTB在收到的Hello报文邻居列表中发现自己的Router ID,状态置为2-way。
⦁    因为邻居都是未知的,所以Hello报文的目的IP地址不是某个特定的单播地址。邻居从无到有,OSPF采用组播的形式发送Hello报文(目的地址224.0.0.5)。对于不支持组播的网络,OSPF路由器如何发现邻居呢?

发现并建立邻居 - 手动建立

⦁    对于不支持组播的网络可以通过手动配置实现邻居的发现与维护。
⦁    当网络规模越来越大或者设备频繁更新,相关联的OSPF路由器都需要更改静态配置,手动更改配置的工作量变大且容易出错。除了特殊场景,一般情况下不适用手动配置的方式。
⦁    OSPF路由器之间建立邻居关系是为了同步链路状态信息,接下来学习OSPF如何实现链路状态数据库的同步。

链路状态信息

⦁    区别于RIP路由器之间交互的路由信息,OSPF路由器同步的是最原始的链路状态信息,而且对于邻居路由器发来的链路状态信息,仅作转发。最终所有路由器都将拥有一份相同且完整的原始链路状态信息。
⦁    每台运行OSPF协议的路由器所描述的信息中都应该包括链路的类型、接口IP地址及掩码、链路上的邻居、链路的开销等信息。
⦁    路由器只需要知道目的网络号/掩码、下一跳、开销(接口IP地址及掩码、链路上的邻居、链路的开销)即可,为什么要有链路的类型呢?

丰富的数据链路层支持能力

⦁    网络技术的发展包含了设备、链路以及通信协议的发展。设备性能日趋提高,互联链路也从串行链路、ATM、帧中继发展到当前的以太网、xPON、SDH、MSTP、OTN等。技术升级不是一蹴而就的,而是一个循序渐进的过程。各种不同的物理链路各具特点,也正因为如此,一个成熟的路由协议必须能够根据不同物理链路特性进行适配。
⦁    下面将介绍OSPF是如何定义多种网络的。

网络类型 - P2P 网络

⦁    OSPF划分了四种网络类型并以此来组成拓扑信息的一部分。
⦁    P2P网络连接了一对路由器,广播、组播数据包都可以转发。
⦁    P2P网络的例子:两台通过PPP(Point-to-Point Protocol)链路相连的路由器网络。

网络类型 - 广播型网络

⦁    广播型网络支持两台及两台以上的设备接入同一共享链路且可以支持广播、组播报文的转发,是OSPF最常见的网络类型。
⦁    广播型网络的例子:通过以太网链路相连的路由器网络。
⦁    同时因为一个广播型网络中存在多台设备,邻居关系建立以及链路信息同步方面,OSPF都有对应的特性来减少同一网络多台设备带来的不利影响。
⦁    以上两种网络类型是最常见的,此外,还有两种少见的网络类型。

网络类型 - NBMA 网络

⦁    与广播型网络不同的是NBMA网络默认不支持广播与组播报文的转发。在NBMA网络上,OSPF模拟在广播型网络上的操作,但是每个路由器的邻居需要手动配置。
⦁    NBMA(non-broadcast multiple access)型网络的例子:通过全互连的帧中继链路相连的路由器网络。
⦁    在现在的网络部署中,NBMA网络已经很少了。

网络类型 - P2MP 网络

⦁    将一个非广播网络看成是一组P2P网络,这样的非广播网络便成为了一个点到多点(P2MP)网络。在P2MP网络上,每个路由器的OSPF邻居可以使用反向地址解析协议(Inverse ARP)来发现。P2MP可以看作是多个P2P的集合,P2MP可以支持广播、组播的转发。
⦁    没有一种链路层协议默认属于P2MP类型网络,也就是说必须是由其他的网络类型强制更改为P2MP。常见的做法是将非完全连接的帧中继或ATM改为P2MP的网络。
⦁    此外OSPF的链路状态信息中的开销值是如何度量的呢?

OSPF 的度量方式

⦁    OSPF在计算接口的cost时,cost=参考带宽/实际带宽,默认参考带宽为100M。当计算结果有小数位时,只取整数位;结果小于1时,cost取1。
⦁    若需要调整接口cost值有两种方式:
⦁    直接在接口下配置,需要注意的是,配置的cost是此接口最终的cost值,作用范围仅限于本接口。
⦁    修改OSPF的默认参考带宽值,作用范围是本路由器使能OSPF的接口。建议参考整个网络的带宽情况建立参考基线,所有路由器修改相同的参考带宽值,从而确保选路的一致性。
⦁    OSPF以“累计cost”为开销值,也就是流量从源网络到目的网络所经过所有路由器的出接口的cost总和,以RTA访问RTC Loopback 1接口192.168.3.3为例,其cost=G1’s cost+G3’s cost。
⦁    相比于RIP,OSPF的度量方式不仅考虑“跳数”,而且还考虑了“带宽”,比RIP更可靠的选择最优的转发路径。
⦁    那么OSPF路由器怎么表达链路状态信息并完成同步呢?

OSPF 协议报文头部

⦁    RIP路由器之间是基于UDP 520的报文进行通信,OSPF也有其规定的通信标准。OSPF使用IP承载其报文,协议号为89。
⦁    在OSPF Packet部分,所有的OSPF报文均使用相同的OSPF报文头部:
        ⦁    Version :对于当前所使用的OSPFv2,该字段的值为2。
        ⦁    Type:OSPF报文类型。
        ⦁    Packet length:表示整个OSPF报文的长度,单位是字节。
        ⦁    Router ID:表示生成此报文的路由器的Router ID。
        ⦁    Area ID:表示此报文需要被通告到的区域。
        ⦁    Checksum:校验字段,其校验的范围是整个OSPF报文,包括OSPF报文头部。
        ⦁    Auth Type:为0时表示不认证;为1时表示简单的明文密码认证;为2时表示加密(MD5)认证。
        ⦁    Authentication:认证所需的信息。该字段的内容随AuType的值不同而不同。
⦁    OSPF的报文头部定义了OSPF路由器之间的通信的标准与规则,基于这个标准OSPF报文需要实现什么功能呢?

OSPF 报文类型

⦁    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的关系:
        ⦁    DD报文中包含LSA头部信息,包括LS Type、LS ID、Advertising Router 、LS Sequence Number、LS Checksum。
        ⦁    LSR中包含LS Type 、LS ID和Advertising Router 。
        ⦁    LSU中包含完整的LSA信息。
        ⦁    LSAck中包含LSA头部信息,包括LS Type、LS ID、Advertising Router、LS Sequence Number、LS Checksum。
⦁    五种报文可以高效地完成LSA的同步,那么实际的报文交互过程是什么呢?

OSPF 报文的功能需求

⦁    Hello机制动态发现并维护邻居前文已介绍,不再赘述。
⦁    RIP设置了Request和Response两种报文来完成路由信息的同步,OSPF路由器之间为了完成LSA的同步,可以直接把本地所有LSA发给邻居路由器,但是邻居路由器直接同步LSA并不是最好的方式。
⦁    更快速、更高效的方式是先在邻居路由器之间传送关键信息,路由器基于这些关键信息识别出哪些LSA是没有的、哪些是需要更新的,然后向邻居路由器请求详细的LSA内容。对于OSPF来说,需要有比RIP更高效、更可靠的方式来完成路由器之间的信息同步。

OSPF 的 LSDB 同步(1)

⦁    状态含义:
        ⦁    ExStart:邻居状态变成此状态以后,路由器开始向邻居发送DD报文。Master/Slave关系是在此状态下形成的,初始DD序列号也是在此状态下确定的。在此状态下发送的DD报文不包含链路状态描述。
        ⦁    Exchange:在此状态下,路由器与邻居之间相互发送包含链路状态信息摘要的DD报文。
        ⦁    Loading:在此状态下,路由器与邻居之间相互发送LSR报文、LSU报文、LSAck报文。
        ⦁    Full:LSDB同步过程完成,路由器与邻居之间形成了完全的邻接关系。
⦁    LSDB同步过程如下:
        ⦁    RTA和RTB的Router ID分别为1.1.1.1和2.2.2.2并且二者已建立了邻居关系。当RTA的邻居状态变为ExStart后,RTA会发送第一个DD报文。此报文中,DD序列号被随机设置为X,I-bit设置为1,表示这是第一个DD报文,M-bit设置为1,表示后续还有DD报文要发送,MS-bit设置为1,表示RTA宣告自己为Master。
        ⦁    当RTB的邻居状态变为ExStart后,RTB会发送第一个DD报文。此报文中,DD序列号被随机设置为Y(I-bit=1,M-bit=1,MS-bit=1,含义同上)。由于RTB的Router ID较大,所以RTB将成为真正的Master。收到此报文后,RTA会产生一个Negotiation-Done事件,并将邻居状态从ExStart变为Exchange。

OSPF 的 LSDB 同步(2)

⦁    RTA开始向RTB发送LSR报文,请求那些在Exchange状态下通过DD报文发现的、并且在本地LSDB中没有的链路状态信息。
        ⦁    RTB向RTA发送LSU报文,LSU报文中包含了那些被请求的链路状态的详细信息。RTA在完成LSU报文的接收之后,会将邻居状态从Loading变为Full。
        ⦁    RTA向RTB发送LSAck报文,作为对LSU报文的确认。RTB收到LSAck报文后,双方便建立起了完全的邻接关系。
⦁    从建立邻居关系到同步LSDB的过程较为复杂,错误的配置或设备链路故障都会导致无法完成LSDB同步。为了快速排障,最关键的是要理解不同状态之间切换的触发原因。

OSPF 邻居状态机

⦁    这是形成邻居关系的过程和相关邻居状态的变换过程。
        ⦁    Down:这是邻居的初始状态,表示没有从邻居收到任何信息。在NBMA网络上,此状态下仍然可以向静态配置的邻居发送Hello报文,发送间隔为PollInterval,通常和Router DeadInterval间隔相同。
        ⦁    Attempt:此状态只在NBMA网络上存在,表示没有收到邻居的任何信息,但是已经周期性的向邻居发送报文,发送间隔为HelloInterval。如果Router DeadInterval间隔内未收到邻居的Hello报文,则转为Down状态。
        ⦁    Init:在此状态下,路由器已经从邻居收到了Hello报文,但是自己不在所收到的Hello报文的邻居列表中,表示尚未与邻居建立双向通信关系。在此状态下的邻居要被包含在自己所发送的Hello报文的邻居列表中。
        ⦁    2-Way Received:此事件表示路由器发现与邻居的双向通信已经开始(发现自己在邻居发送的Hello报文的邻居列表中)。Init状态下产生此事件之后,如果需要和邻居建立邻接关系则进入ExStart状态,开始数据库同步过程,如果不能与邻居建立邻接关系则进入2-Way。
        ⦁    2-Way:在此状态下,双向通信已经建立,但是没有与邻居建立邻接关系。这是建立邻接关系以前的最高级状态。
        ⦁    1-Way Received:此事件表示路由器发现自己没有在邻居发送Hello报文的邻居列表中,通常是由于对端邻居重启造成的。
        ⦁    ExStart:这是形成邻接关系的第一个步骤,邻居状态变成此状态以后,路由器开始向邻居发送DD报文。主从关系是在此状态下形成的;初始DD序列号是在此状态下决定的。在此状态下发送的DD报文不包含链路状态描述。

LSA 头部

⦁    LSA(Link State Advertisement)是路由器之间链路状态信息的载体。LSA是LSDB的最小组成单位,也就是说LSDB由一条条LSA构成的。
⦁    所有的LSA都拥有相同的头部,关键字段的含义如下:
        ⦁    LS age:此字段表示LSA已经生存的时间,单位是秒。
        ⦁    LS type:此字段标识了LSA的格式和功能。常用的LSA类型有五种。
        ⦁    Link State ID:此字段是该LSA所描述的那部分链路的标识,例如Router ID等。
        ⦁    Advertising Router:此字段是产生此LSA的路由器的Router ID。
        ⦁    LS sequence number:此字段用于检测旧的和重复的LSA。
⦁    LS type,Link State ID和Advertising Router的组合共同标识一条LSA。
⦁    LSDB中除了自己生成的LSA,另一部分是从邻居路由器接收的。邻居路由器之间相互更新LSA必然需要一个“通道”。

MA 网络中的问题

⦁    问题引出,在运行OSPF的MA网络包括广播型和NBMA网络,会存在两个问题:
        ⦁    在一个有n个路由器的网络,会形成(n×(n−1))/2个邻接关系。
        ⦁    邻居间LSA的泛洪扩散混乱,相同的LSA会被复制多份,如RTA向其邻居RTB、RTC、RTD分别发送一份自己的LSA,RTB与RTC、RTC与RTD、RTB与RTD之间也会形成邻居关系,也会发送RTA的LSA。
⦁    这样的工作效率显然是很低的,消耗资源的。作为高级的路由协议,OSPF是怎样解决这些问题的呢?

DR 与 BDR 作用

⦁    DR(Designated Router)即指定路由器,其负责在MA网络建立和维护邻接关系并负责LSA的同步。
⦁    DR与其他所有路由器形成邻接关系并交换链路状态信息,其他路由器之间不直接交换链路状态信息。这样就大大减少了MA网络中的邻接关系数量及交换链路状态信息消耗的资源。
⦁    DR一旦出现故障,其与其他路由器之间的邻接关系将全部失效,链路状态数据库也无法同步。此时就需要重新选举DR,再与非DR路由器建立邻接关系,完成LSA的同步。为了规避单点故障风险,通过选举备份指定路由器BDR,在DR失效时快速接管DR的工作。
⦁    伪节点是一个虚拟设备节点,其功能需要某台路由器来承载,下面将介绍DR/BDR的选举规则。

DR 与 BDR 选举

邻居与邻接关系

⦁    邻居(Neighbor)关系与邻接(Adjacency)关系是两个不同的概念。OSPF路由器之间建立邻居关系后,进行LSDB同步,最终形成邻接关系。
⦁    在P2P网络及P2MP网络上,具有邻居关系的路由器之间会进一步建立邻接关系。
⦁    在广播型网络及NBMA网络上,非DR/BDR路由器之间只能建立邻居关系,不能建立邻接关系,非DR/BDR路由器与DR/BDR路由器之间会建立邻接关系,DR与BDR之间也会建立邻接关系。
⦁    邻接关系建立完成,意味着LSDB已经完成同步,接下来OSPF路由器将基于LSDB使用SPF算法计算路由。

思考题

HCIP-IERS 部署企业级路由交换网络 - OSPF 协议基础相关推荐

  1. IEEP部署企业级网络工程-OSPF邻居关系故障排除

    OSPF邻居关系故障-现象与排除 一.OSPF邻居关系故障-现象与排除 1.OSPF建立邻居关系时,将检验hello报文中的Area ID .Autype.Authentication.network ...

  2. cisco动态路由(OSPF协议)设计计算机网络课设/实验 (含.pkt文件)

    链接:https://pan.baidu.com/s/1YOpSsfM4vBYpsZqCOyDwOg 提取码:2222 ospf代码 show 路由配置 实验结果:可以互相通信

  3. 静态路由配置_10 路由器间的静态路由及OSPF路由配置

    项目三 路由器的设备部署与应用任务2路由器间的静态路由及OSPF路由配置■ 任务描述为了实现汇聚1区.汇聚2区和汇聚3区之间的互联互通,为了实现不同网段之间的互联互通,我们需要使用网络协议让网络相互连 ...

  4. ospf协议(包含负载分担)

    理论 (1)单区域结构:以接口来划分网段:多区域结构:必须有区域0,非骨干区域一定要连接到区域0周边: 创建区域: (2)反掩码: 计算方式:反掩码=255.255.255.255-掩码: 注意:反掩 ...

  5. 层次路由与路由选择协议

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.层次路由 二.RIP协议(Routing Information Protocol) 三.OSPF协议(Open ...

  6. HCIP(华为高级网络安全工程师)(第五天)(OSPF协议1)

    目录 OSPF(开放式最短路径优先协议) RIP和OSPF的版本 RIPV2和OSPFV2的异同点: 区域划分 单区域OSPF网络 多区域OSPF网络 区域划分的主要目的 区域划分的要求 RID RI ...

  7. HCNP学习笔记-路由交换网络(2)-IS-IS协议原理及配置

    一.IS-IS协议简单介绍 和OSPF一样,IS-IS也是一种基于链路状态并使用最短路径优先算法进行路由计算的一种IGP协议.IS-IS最初是国际化标准组织ISO为它的无线接网络协议CLNP设计的一种 ...

  8. 【计算机网络】网络层 : OSPF 协议 ( 协议简介 | 链路状态路由算法 | OSPF 区域 | OSPF 特点 )

    文章目录 一.路由选择协议分类 二.OSPF 协议 简介 三.链路状态路由算法 四.OSPF 区域 五.OSPF 特点 一.路由选择协议分类 路由选择协议分类 : ① 内部网管协议 IGP : 在 自 ...

  9. 【学习笔记】路由算法与路由协议:RIP协议与距离向量算法、OSPF协议与链路状态算法、BGP协议

    文章目录 一. 路由算法与路由协议概述 ① 路由算法的分类 ② 分层次的路由选择协议 二. RIP协议和距离向量算法 ① RIP协议定义 ② RIP协议:交换对象.交换周期.交换内容 ③ 距离向量算法 ...

最新文章

  1. RHEL4安装配置YUM源
  2. Windows——桌面快捷键Ctrl+Z撤销的文件恢复解决方案
  3. 线程、协成、IO模型
  4. 好云推荐官丨飞天加速之星怎样选择云服务器ECS?
  5. mysql 重置密码语音_数字语音信号处理学习笔记语音信号的同态处理(2)
  6. Example3_3
  7. 完美收官!java程序内存溢出找原因
  8. JDK动态代理在RPC框架中的应用
  9. html设置自动居中显示,css+div实现整个html居中最简单方法
  10. ArcMap打不开.jpg .bmp
  11. 西部陆海新通道海铁联运通达中国六省市
  12. 苹果a7处理器_苹果手机芯片为什么那么强,看看苹果A系列处理器的历史
  13. 2019冬季PAT甲级
  14. Chrome+selenium+headless报错无法加载插件
  15. proteus教程——DAC0832输出连续锯齿波
  16. 咸阳哪里学计算机,咸阳计算机进修学院
  17. 关于计算机知识的内容500字,介绍电脑的作文500字
  18. 贝叶斯统计 韦来生 课后题答案 第三章
  19. android 修改 dpi_魅族16th|魔趣100|安卓10.0|归属地|机型修改|性能调整|稳定流畅
  20. Java八股文一:java基础知识

热门文章

  1. 选股指标成功率的测试软件,选股指标成功率的测试工具
  2. jupyter设置中/英文语言
  3. 踩坑日记一:idea 启动项目报错 java:程序包xxx不存在解决方案
  4. Mac上使用Royal TSX链接服务器
  5. ICLR 2022 不求甚解阅读笔记--强化学习类(1)
  6. re -25 buuctf [网鼎杯 2020 青龙组]jocker
  7. 三度空间3degrees将再度演绎雷达币传奇!
  8. MyBatis调用存储过程,MyBatis调用函数的使用方法
  9. 2022年全球市场步进直流驱动器总体规模、主要生产商、主要地区、产品和应用细分研究报告
  10. 锐角网络CEO许胜受邀参加通证学院“上链说明会”北京站