IE之路专题10.OSFP专题

OSPF的组播地址

OSPF 什么情况下使用 224.0.05 和 224.0.0.6 组播地址

  • 在 P2P 网络中,只会使用 224.0.0.5 的组播地址

  • 在MA 网络中,首先会选举出 DR和 BDR,其他设备为DRother当 DRother 发送LSA 更新时会向 224.0.0.6 的组播地址发送,224.0.0.6代表发送给网络中的 DR和BDR,当 DR收到LSA 更新时,在以组播地址 224.0.0.5 发送给其他的有的 OSPF 邻居。

OSPF中 DR 和 BDR 的作用

  • 在广播网和 NBMA 网络中,任意两合路由器之间都要交换路由信息。如果网络中有n台路由器,则需要建立 n(n-1)/2 个邻接关系。这使得任何一台路由器的路由变化都会导致多次传递,浪费了带宽资源。

  • 为解决这一问题,OSPF定义了指定路由器 DR,所有路由器都只将信息发送给 DR,由 DR 将网络链路状态发送出去。如果 DR 由于某种故障而失效,则网络中的路由器必须重新选举DR、再与新的 DR 同步。这需要较长的时间,在这段时间内,路由的计算是不正确的。为了能够缩短这个过程,OSPF 提出了 BDR 的概念。

  • BDR 实际上是对 DR 的一个备份;在选举 DR 的同时也选举出 BDR,BDR 也和本网段内的所有路由器建立邻接关系并交换路由信息。当DR失效后,BDR会立即成为 DR。由于不需要重新选举,并且邻接关系事先已建立,所以这个过程是非常短暂的。

  • 当然这时还需要再重新选举出一个新的 BDR,虽然一样需要较长的时间,但并不会影响路由的计算。DR和BDR之外的路由器(称为 DR Other)之间将不再建业邻接关系,也不再交换任何路由信息。这样就减少了广播网和NBMA网络上各路由器之间邻接关系的数量

DR/BDR 选举过程

  • DR 和 BDR 是由同一网段中所有的路由器根据路由器优先级、Router ID 通过hello报文选举出来的,只有优先级大于0的路由器才具有选取资格。

  • 进行 DR/BDR 选举时每台路由器将自己选出的 DR 写入 Hello 报文中,发给网段上的每台运行 OSPF 协议的路由器。当处于同一网段的两台路由器同时宣布自己是 DR 时,路由器优先级高者胜出。如果优先级相等,则 RouterlD 大者胜出。如果一台路由器的优先级为0,则它不会被选举为 DR 或 BDR。

  • DR/BDR 选举的注意事项:

    • 只有在广播或 NBMA 类型接口才会选举 DR,在点到点或点到多点类型的接口上不需要选举 DR。

    • DR 是某个网段中的概念,是针对路由器的接口而言的。某台路由器在一个接口上可能是 DR,在另一个接口上有可能是 BDR,或者是 DR Other。

    • 路由器的优先级可以影响一个选取过程,但是当 DR/BDR已经选取完毕就算一台具有更高优先级的路由器变为有效,也不会替换该网段中已经选取的DR/BDR成为新的DR/BDR

    • DR 并不一定就是路由器优先级更高的路由器接口;同理,BDR 也并不一定就是路由器优先级次高的路由器接口。

一个网络中有几个DR/BDR

  • 几个DR/BDR?

    • 每个网段独立选举

    • 每个网段一个DR一个BDR,所以几个网络有几个DR和BDR。DR是根据网段而不是区域。

OSPF 的邻接建立过程(状态机)

  • **Down (关闭)状态:**刚启动OSPF进程,还未收到邻居的任何信息(稳定状态)

  • (可以跳过)Attempt (尝试)状态: 只发生在 NBMA 网络中,使用单播更新,发出了单播Hello包,但未收到对方的单播Hello包

  • **Init (初始化)状态:**收到了对方的 Hello 包,且 Hello 包中邻居字段未包含自己的 Router id。意味着自己发现了对方,但对方还未发现自己

  • **2-Way (邻居)状态:**收到了对方的 Hello 包,且 Hello 包中包含了自己的 Router-id.意味着自己发现了对方,且对方也发现了自己,形成邻居关系;并选举出了DR/BDR角色

  • Exstart (开始交换)状态:

    • 第一个DD报文:不传送LSDB摘要,仅用于确认LSDB协商的主从;Master会主导 DD 报文的序列号;Router-id 大的成为 Master,主导序列号;

    • DD报文位置符:

      • DD报文的 | 位:Init 位,置位1表示是第一个 DD报文

      • DD 报文的 M 位:More 位,置位1表示还有后续 DD 报文

      • DD报文的 MS 位:Master位,置位1表示本机为Master

  • **Exchange(交换) 状态:**通过交互 DD 报文来传递本地 LSDB的所有信息的摘要

  • **Loading(读取) 状态:**通过 LSR、LSU、LSAck 来进行LSDB 的更新和同步。如果 DD 交互完成后,对方没有自己需要的 LSA,则直接进入 Full 状态

  • **Full(邻接) 状态:**LSDB 完成同步,最终形成邻接关系;

    • 最终确定DR和BDR的角色;当选举完毕,就算出现一台更高优先级的路由器,也不会替换成新的DR/BDR;需要原DR/BDR失效,或者重置ospf进程才会成为新的DR/BDR

OSPF的三个稳定状态

  • 三个稳定状态:

    • Down , 2-way , Full

邻居和邻接的关系

本质区别:会不会交互LSA

  • 邻居关系:

    • 状态达到2-Way状态,OSPF使用邻居关系是用来交换路由信息。
  • 邻接关系:

    • 状态达到Full;相互交换LSA的OSPF邻居建立的关系。

    • 在点到点,点到多的网络上邻居路由器都形成邻接关系。

    • 在广播多路由访问(MA)和非广播多路访问网络(NBMA)上,要选举指定路由(DR)和备份指定路由(BDR),DR和BDR路由器与所有的邻居路由器形成邻接关系,但是DRother路由器之间不能形成邻接关系,只能形成邻居关系;

2-Way状态的前提

  • 2-Way状态的前提

    • Router-id无冲突 - 修改Router-id需要重置ospf进程使生效

    • 掩码长度一致(MA网络中 多路访问)

    • 区域ID一致

    • 验证密码一致

    • hello-time/ dead-time 一致

    • 特殊区域类型一致

一直卡在Exstart/Exchange状态的原因

  • 接口 MTU 设置不匹配

    • DD报文中携带了接口MTU信息,卡在exstart状态是因为mtu不一致问题,一方mtu大一方小,则大的一方会进入exchange状态,而小的一方会一直在extart状态,所以,卡在exchange状态也是mtu问题导致的。

      • GigabitEthernet0/0/0]mtu 1500----修改此接口的IP MTU为1500字节

      • GigabitEthernet0/0/0]ospf mtu-enable-------启用此接口下OSPF对MTU的参考

  • 邻居 Router lD 重复

    • 在 ExStart 过程中,需要通过 Router ID 的信息确定邻居的主从关系,如果邻居双方的 RouterID 设置相同,那么设备就会陷入主从确定的循环中,停滞在 ExStart 状态
  • 收到的DD太大

    • 如果 OSPF 发送的 DD 报文较大,达到或接近设备接口上链路 MTU 的大小,但是报文传输路径上存在链路 MTU 较小的传输节点,那么很有可能大的 OSPF报文将在传输路径上被丢弃,导致邻居双方无法完成完整的数据库信息交互而停滞在 Exchange 状态。

一直卡在Loading状态

  • 卡在loading状态是因为LSA无法同步

  • 1、设备性能弱无法接收完LSA,会导致设备一直崩溃重启。

  • 2、弱性能设备上限制了LSA的学习数量,导致无法学习完LSA

OSPF有什么异常情况

  • 不能2-way

  • 卡在2-way

  • 卡在exstart,exchange

  • 能够exstart,exchange但是不能full

  • 可以full但是学习不到路由

2-Way状态的前提

  • Router-id无冲突 -修改Router-id需要重置ospf进程使生效

  • 掩码长度一致(MA网络中 多路访问)

  • 区域ID一致

  • 验证密码一致

  • hello-time/ dead-time 一致

  • 特殊区域类型一致

一直卡在2-Way的原因

  • 优先级都为0;在选DR和BDR的网络中一直没有选出DR就会持续卡在该状态。

  • 在MA(广播网,就是咱们的以太网中)每一个网段链路上只有DR和BDR和其他成员会建立邻接状态(FULL);其他OSPF设备(DRother)只建立2-way

OSPF 正常情况下邻居关系 2-Way 的场景是什么?

  • 在MA(广播网,就是咱们的以太网中)每一个网段链路上只有DR和BDR和其他成员会建立邻接状态(FULL);其他OSPF设备(DRother)只建立邻居关系保持在2-way

.OSPF 同一链路上两台路由器都卡在 2-Way状态,而且都显示是 DRother,是什么情况?

  • 如果两台路由器都把 DR 优先级设置为0两台路由器都将不参与 DR 和 BDR 的选举,于是都停留在2-Way状态,并成为DRother

OSPF 中MA网络和 P2P 网络类型为什么能够建立邻接,但无法计算路由

  • 广播网络和P2P 都是通过组播来收发 Hello 报文,邻居建立原理也一致,默认Hello time 和 dead time 也一致,所以可以建立邻接关系

  • 在MA网络,链路类型为TransNet(传输);P2P网络,链路类型为StubNet(点到点),在进行 SPF 计算路由时发现LSA 的链路类型不一致,导致无法成功计算出路由。

影响OSPF邻居建立的因素

(邻接也差不多一样)

  • 版本不兼容:v2和v3不兼容

  • 双方 Router-id有冲突

    • 如何检测 Router-ID 是否冲突,通过 hello 报文来实现
  • Area ID 不一致:

    • 区域 ID 包含在 ospf 头部,双方不一致时无法建立邻居
  • 验证类型及口令不一致

    • 认证类型分为不认证( 00),明文认证( 01)和 MD5 认证( 02)

    • OSPF 的认证放在 OSPF头中,所以 OSPF 一边接口认证,一边区域认证可以认证成功。

  • MA网络中掩码不匹配

    • MA 网络中所有路由器共用一个网段,当掩码不一致时,无法通过一个 2LSA 描述不同的掩码

    • P2P中没影响:因为P2P 中有 1LSA 的 stub 类型来描述每一个网络的掩码信息且NCP 阶段,两台路由器会互推自己的 IP地址

  • Hello/Dead 时间不一致

  • Option 字段不一致(区域类型不一致:Stub/TotallyStub与NSSATotay NSSA无法建立邻接关系)可以先不说

  • 接口 MTU 不一致:

    • 默认情况华三和华为设备不会对接口的 MTU 做检测,需要单独通过命令去开启,接口的 MTU不一致,则小的一方停留在 Exstart 状态,另一方停留在 Exchange 阶段。
  • 网络类型不一致

    • 双方网络类型不一致,不能建立 FULL 的邻接关系,但如果修改 hello, dead 时间,可以建立 full 的邻居关系

    • (除了 NBMA 这种网络类型, NBMA 即使修改时间也无法和其他网络类型建立邻居关系,因为其收发 hello 报文都是单播) MA 与 P2P、 P2MP 修改时间可以建立 FULL 的邻居关系, 但不能计算路由。

  • NBMA 没有手动指定 Peer,NBMA网络类型是无法发送组播和广播包的

  • 接口被设置为静默接口

  • MA网络中优先级不能为0:DR选举不成功

  • ACL的过滤,过滤讯协议号 89

  • 对于有从地址的接口,没有都使用主地址进行邻居建立

  • 接口没有正确通告

  • 通过什么命令可以较快速定位影响 OSPF 邻居建立的原因

    • 可以通过使用 display ospf statistics error 命令

OSPF 邻接 Full 后,哪些情况路由会有问题

  • 非邻居的RID冲突:

    • 同一个区域内不相邻设备的RID冲突,或者不同区域内设备的RID与其他区域ASBR的RID冲突,会导致SPF的重复计算;影响路由计算的准确性和稳定性,导致路由出现问题
  • 链路的网络类型一端是 P2P,一端是 MA 网络:

    • 在 MA 网络,链路类型为 TransNet(传输网络);在 P2P 网络,链路类型为 StubNet(末梢网络)因为链路类型不一致导致无法正常学习路由信息;但是在OSPF数据库中是存在相应信息的,OSPF数据库中存在,但是无法加表;
  • 网络类型不匹配:(通过修改Hello时间等参数建立的邻接关系)

    • 不同网络类型在 OSPF 中的邻居发现、DR/BDR 选举、Hello 报文发送方式等机制不同,也可能在后续路由计算和信息交互中产生问题。
  • 在接收方向进行路由过滤:

  • 外部路由FA地址不可达:

    • 当学习到的外部路由的 FA 地址不是通过区域内或区域间的形式存在时,意味着该 FA 地址在本地路由器的路由表中无法通过 OSPF 内部路由到达。虽然这些外部路由信息会存在于 OSPF 数据库中,但由于无法确定如何到达 FA 地址,路由器无法将这些外部路由添加到本地路由表中。因为没有有效的下一跳信息,路由器无法确定如何转发数据包到这些外部网络,所以只能将这些路由信息保留在数据库中,而不加入路由表。
  • MCE场景DN比特问题:

    • 在 MCE 场景中,当 OSPF 的 DN 比特被错误设置或处理时,路由器会认为相关路由不可用,虽然路由信息存在于 OSPF 数据库中,但不会将它们添加到本地路由表中。

OSPF协议报文

类型 报文名称 报文描述
1 Hello 周期性发送,用来发现和维持OSPF邻居关系
2 DD(数据库描述) 用于描述LSDB,携带LSDB中LSA的头部数据(并非完整LSA)
3 LSR(链路状态请求) 用于向OSPF邻居请求LSA
4 LSU(链路状态更新) 用于向对方发送其所需要的LSA,承载在LSU中泛洪
5 LSAck(链路状态确认) 设备收到LSU后,LSAck用于对接收的LSA进行确认
  • OSPF报文直接封装为IP报文协议报文,协议号为89。

  • OSPF报文结构

  • OSPF报文头格式

    • Version:OSPF的版本号。对于OSPFv2来说,其值为2。

    • Type:OSPF报文的类型。数值从1到5,分别对应Hello报文、DD报文、LSR报文、LSU报文和LSAck报文。

    • Router ID:始发该LSA的路由器的ID。

    • Area ID:始发LSA的路由器所在的区域ID

    • AuType:验证类型。可分为不验证、简单(明文)口令验证和MD5验证,其值分别为0、1、2

    • Authentication:其数值根据验证类型而定。当验证类型为0时未作定义,为1时此字段为密码信息,类型为2时此字段包括Key ID、MD5验证数据长度和序列号的信息。

OSPF Hello报文中包含的内容

  • Hello包用于建立和维持邻居关系

  • 包含两部分,一个是 OSPF 的 Header(报头),另一个是 OSPF 的 hello Packet(数据包)

  • OSPF Header 包含的内容有:报头

    • 版本,有V2和V3,并且两个版本不兼容

    • 消息类型,hello 报文的消息类型为1

    • 报文长度; OSPF 的Router-lD ;区域 ID

    • 验证类型:无认证验证类型为0,明文验证类型为1,MD5验证类型为2 ;验证数据

  • OSPF Hello Packet 包含的内容有:

    • 网络掩码:发送Hello报文的接口所在网络的掩码;

      • 在 MA 网络,接口的子网掩码不一致会导致邻居无法正常建立
    • **hello interval:**发送Hello报文的时间间隔,间隔不同不能建立邻居关系

      • 缺省情况: P2P,Broadcast类型的hello间隔为10s;NBMA,P2MP类型的hello间隔为30s
    • 可选项Option 字段

      • DN 比特位,在 MPLS VPN 用来防环的

      • 特殊区域的标识:是否支持 NSSA,是否支持外部路由计算等

    • **路由器优先级:**在 MA网络中用来选举 DR/BDR 的,默认1;如果路由器优先级为0,则表示不参与 DR/BDR 的选举。

    • **失效间隔:**默认为Hello时间的4倍,失效间隔不一致会影响 OSPF 的邻居建立

    • **DR/BDR 信息:**在 MA 网络发送的 hello 报文才携带

    • **邻居Neighbor:**邻居路由器的Router ID

  • 串行接口与以太网接口 OSPF Hello 报文的区别

    • OSPF Header 与以太网接口的一致

    • OSPF Hello packet 与以太网接口的一致,在 P2P 网络掩码不一致,不会影响邻居的建立,但是要保证邻居地址可达,在P2P 网络中的路由器优先级没有特殊含义

OSPF 中 DD 报文的作用,DD 报文中有什么字段

  • DD 报文称为数据库摘要消息,可以用来完成数据库的同步,以及在同步数据库之前通过交互 DD 报文来进行主从关系的协商

  • DD 报文进行主从关系协商时携带的字段

    • Interface MTU:在不分片的情况下,此接口最大可发出的IP报文长度。

    • I(Initial):(in ni siu)当发送连续多个DD报文时,如果这是第一个DD报文,则置为1,否则置为0。

    • **M(More):**当连续发送多个DD报文时,如果这是最后一个DD报文,则置为0。否则置为1,表示后面还有其他的DD报文。

    • MS(Master/Slave):当两台OSPF路由器交换DD报文时,首先需要确定双方的主从关系,Router ID大的一方会成为Master。当值为1时表示发送方为Master。

    • **DD Sequence Number:**DD报文序列号,由Master方规定起始序列号,每发送一个DD报文序列号加1,Slave方使用Master的序列号作为确认。主从双方利用序列号来保证DD报文传输的可靠性和完整性

LSR报文,LSU报文,LSack报文的内容

  • LSR报文

    • **链路状态请求;**互相交换过DD报文之后,知道对端的路由器有哪些LSA是本地的LSDB所缺少的,这时需要发送LSR报文向对方请求所需的LSA

    • LS type:LSA的类型号。例如Type1表示Router LSA

    • Link State ID:链路状态标识,根据LSA的类型而定

    • Advertising Router:产生此LSA的路由器的Router ID

  • LSU报文

    • 向对端路由器发送它所需要的LSA,内容是多条LSA(全部内容)的集合

    • Number of LSAs:该报文包含的LSA的数量

    • LSA:该报文包含的LSA

  • LSAck报文:

    • LSAck报文用来对接收到的LSU报文进行确认,内容是需要确认的LSA的Header。一个LSAck报文可对多个LSA进行确认。

    • LSA Headers:该报文包含的LSA头部

设备怎么知道对端网络的类型

  • 在hello报文中携带,影响工作模式

OSFP的选路原则

  • 存在多个路由信息源时,具有较高优先级的路由协议发现的路由成为当前路由;OSFP内部路由的协议优先级为10;外部路由的协议优先级为150;

  • 都是OSFP路由时:

    • 第一步:OSPF将路由分为4类,优先级从高到低的顺序依次为:

      • 区域内路由(Intra Area)

      • 区域间路由(Inter Area)

      • 第一类外部路由(Type1 External)

      • 第二类外部路由(Type2 External)

    • 第二步:在类型相同的情况下,选择路由开销值较小的路由

    • 第三步:如果路由类型和开销都相等,那么形成等价路由

  • 区域内和区域间路由描述的是AS内部的网络结构,外部路由则描述了应该如何选择到AS以外目的地址的路由。

  • 外部路由:

    • 第一类外部路由指的是接收的是IGP的路由

      • 可信度高;Cost=内部Cost(到达ASBR)+外部Cost
    • 第二类外部路由指的是接收的是EGP路由

      • 可信度低;Cost=外部Cost;默认2类
    • 第5LSA类LSA报文的E位:决定外部路由使用的度量值类型

      • Type1:置位0 ;Type2:置位1:

OSPF 路由选择的原则

  • 区域内路由>区域间路由>Type1 外部路由>Type2 外部路由

  • 路由类型一致则对比 Cost,小的优先。Cost 也一致则形成等价路由

OSPF引入外部路由时 type-1和 type-2 的区别

  • 外部路由分为两类:

    • 第一类外部路由:这类路由的可信程度较高 ,并且和OSPF自身路由的开销具有可比性,所以到第一类外部路由的开销等于本路由器到相应的ASBR的开销与ASBR到该路由目的地址的开销之和。

    • 第二类外部路由:这类路由的可信度比较低 ,所以OSPF协议认为从ASBR到自治系统之外的开销远远大于在自治系统之内到达ASBR的开销。即到第二类外部路由的开销等于ASBR到该路由目的地址的开销。如果计算出开销值相等的两条路由,再考虑本路由器到相应的ASBR的开销。

    • OSPF引入外部路由时,默认是Type-2,可以通过命令将类型修改为 Type-1

怎么判断 OSPF 的 RID 冲突

  • RID是一个在同一个OSPF 域中唯一标识每个路由器的 32 位标识符。当 OSPF 路由器之间存在相同的 RID 时,会导致冲突和问题。

  • 以下是判断 OSPF RID 冲突的方法:

  • 查日志:在 OSPF 路由器上查看协议日志,若有 RID 冲突,会显示警告或错误消息,指示发现了重复的 RID。。

  • 看邻居关系:检查 OSPF 邻居表,RID 冲突可能导致邻居关系异常,如处于 EXSTART 状态或无法建立邻居关系。

  • 检查数据库:用 "display ospf database" 命令查看数据库,若多个路由器有相同 LSA 和 RID,可能存在冲突。

  • 网络抓包分析:利用 Wireshark 等工具捕获分析 OSPF 数据包,查看 Hello 消息里的 RID 字段。发现多个路由器具有相同的 RID,那么可能存在 RID 冲突。

  • 配置检查:检查各 OSPF 路由器配置文件,确保 RID 唯一且无配置错误。

  • 留意特殊情况:若数据库中有记录但部分路由未加入路由表,

OSPF的介质类型、链路类型及网络类型分别指什么,三者之间有什么关系

  • 介质类型(media type):

    • 物理链路类型,应该包括GigabitEthernet、Ethernet等物理链路。
  • OSPF链路类型(link type,LSA中):

    • 1类LSA中的链路类型是按照协议规定填写的,根据的是ospf 网络类型,具体规定如下

    类型 描述 链路ID 链路数据
    1 P2P点对点网络(PPP) 邻居路由器的Router-id 产生该LSA的路由器的接口IP地址
    2 Transit Net连接到传输网络(广播/NBMA) 本网段DR路由器的接口IP地址 产生该LSA的路由器的接口IP地址
    3 Sutb Net连接到一个末梢网络(P2P,环回口,末梢网络) 网络IP地址 网络掩码
    4 连接到虚链路 邻居路由器的Router-ID 产生该LSA的路由器的接口IP地址
  • OSPF网络类型(network type):

    • OSPF网络类型屏蔽了不同物理介质的差异,可以按照用户需要配置对应的网络类型。

    • 目前OSPF可以配置4种网络类型,包括P2P、Broadcast、NBMA和P2MP。

  • 三者之间的关系:介质类型决定了OSPF默认的network type类型,OSPF network type类型决定LSA中link type类型。

同区域内和不同区域 Router-id 冲突会有什么后果

  • **直连路由器:**邻居关系建立失败,Hello报文中包含各自的RID;

  • 同区域非直连:

    • R1 和 R2 及 R2 和 R3 都可以正常建立邻居

    • 同步数据库的时候就会出现问题;网络中同时存在两个源RID相同的LSA(来自不同物理设备)路由器无法区分合法的LSA来源,仅根据序列号判断新旧,导致1类LSA被持续更新,会一直出现这样重复的情况,下一跳不稳定而导致路由动荡。(引入外部路由时,LSA5也一样)

  • 不同区域的Router-id冲突

    • 不引入外部路由,相同地址宣告进不同区域:

      • 如果 R1和 R5 的 Router-ID 冲突,并且在 R1 和 R5 上有一个相同的IP地址宣告进入了 OSPF Area1 和 Area2 中。

      • R1 将该网络宣告进入Area1 中之后,生成了一类的 LSA,然后被 ABR R2 转换成3类LSA传递到 Area0中,这时3类 LSA 的 Router ID 被改成 ABR 的 Router-ID ;同理,R5 上的网络也会被传递到 R3 上。由于 LSA 类型和开销相同,并且网络的地址一样,**故ABR 上会有两条负载的路由去往该网络,但是下一跳不同。**邻居关系正常, 区域内及区域间路由能学到进路由表。

    • 同时引入相同外部路由信息:

      • 如果 R1 和 R5 的 Router ID 冲突,在 R1 和 R5 上同时引入相同的外部路由信息

      • R1和R5上引入的两个5类LSA具有相同的RID标识 ;R3 接收到来自 R1 和 R5 的 5 类 LSA 后,由于它们的 Router-ID 相同,R3 无法直接区分这两个 LSA 分别来自不同的路由器。结果是在R3 上同样会出现负载分担的现象 。在 OSPF LSDB 中,R3上关于 R1 和 R5 的5类LSA 的 Sequence Number 一直在增加,导致去往R1 和 R5 的网络的路由表异常。

  • MA网络中的RID冲突

    • 冲突的设备卡在Extart,exchange

    • 两台路由器都试图成为主路由器,导致主从关系无法顺利确定,从而在 EXSTART 状态间反复切换。

    • EXCHANGE 状态时,因 RID 冲突无法正确区分 LSA,面对相同 RID 但内容有别的 LSA无法处理,无法完成链路状态信息完整交换

LSA 的类型和作用

  • LSA概述:

    • OSPF是链路状态路由协议,使用LSA(链路状态通告)来承载来链路状态信息;

    • 每个路由器都维护一个链路状态数据库LSDB,存储了收到的各种LSA。通过交换LSA来更新彼此的LSDB,以保持对网络拓扑的一致认识。

    • 每个OSPF路由器都可以构建出网络的拓扑图,并使用Dijkstra算法计算最短路径。路由器就能够根据实时的网络状态动态地更新路由表,实现了快速、可靠的路由计算。

  • LSU报文中携带一条或者多条完整的LSA

  • LSA的头部

    • 老化时间:LSA的老化时间,始发路由器产生置0,泛洪和在LSDB中时间累计;到达最大时间失效;

    • 可选项options:支持的特性

    • 链路状态类型:LSA的类型

    • 链路状态ID:不同LSA类型,含义不同

    • 通告路由器:产生该LSA的路由器RID

    • 链路状态序列号:序列号,判断新旧,或者重复

    • 校验和,长度

LSA类型 名称 始发者 描述内容 传播范围
Type-1 Router LSA (路由器LSA) 每个路由器都会产生 描述区域内部与路由器直连的链路信息(接口状态,cost值) 仅在接口所属的区域内部传播
Type-2 Network LSA (网络LSA) DR产生 描述DR接入的MA网络中所有与之形成邻接关系的路由器;MA网络链路的路由器及掩码信息 仅在接口所属的区域内部传播
Type-3 Summary LSA(网络汇总LSA) ABR产生 描述了到达某个区域的目标网段路由;用于区域间路由的传递 除了生成该LSA的区域,total Stub区域,total Nssa区域的其他区域传播
Type-4 Asbr-summary (ASBR汇总LSA) ABR产生 买描述ASBR,相当一跳到达ASBR的主机路由 除了生成该LSA的区域,Stub,total Stub,Nssa,Total Nssa区域的其他区域
Type-5 AS-extenal LSA (外部LSA) ASBR产生 描述到本AS外部的路由 除了Stub,total Stub,Nssa,Total Nssa区域的其他区域
Type-7 NSSA LSA(次末结区域 LSA) ASBR产生 描述在本NSSA区域引入的AS外部路由信息 仅仅在产生该7类LSA的NSSA区域泛洪

Type1-LSA

  • 定义:

    • Router LSA , 路由LSA:

    • 描述区域内部与路由器直连的链路信息(接口状态,接口Cost)

    • 仅在区域内部传播

    • 每台路由器都会产生

  • 报文格式:

    • LSA头部:

      • 链路状态类型:值为1;

      • 链路状态ID:是产生该LSA的路由器RID;

      • 通告路由器:是产生该LSA的路由器RID

    • V:1表示虚链路端点;

    • E:1表示ASBR;Stub中不允许出现

    • B:1表示路由器为两个区域边界路由器

    • 链路数量:描述该LSA包含几条Link

      • (链路类型,链路ID,链路数据,度量值)用一个或者多个Link描述某个接口
    • 链路类型link-Type:本条Link的类型值,与Link类型相关

      • 链路类型与接口的网络类型相关,不是相同概念
    • 链路ID:Link标识,不同link类型不同

    • 链路数据:不同链路类型不同

    • 度量值Metric:Cost值

  • (链路类型)Link-Type:描述该链路的二层类型 , 类型取值:

    类型 描述 链路ID 链路数据
    1 P2P点对点网络(PPP) 邻居路由器的Router-id 产生该LSA的路由器的接口IP地址
    2 Transit Net连接到传输网络(广播/NBMA) 本网段DR路由器的接口IP地址 产生该LSA的路由器的接口IP地址
    3 Sutb Net连接到一个末梢网络(P2P,环回口,末梢网络) 网络IP地址 网络掩码
    4 连接到虚链路 邻居路由器的Router-ID 产生该LSA的路由器的接口IP地址

OSPF对Loopback接口特殊处理

  • 在路由器创建一个Loopback的接口,分配了掩码24位的IP地址,然后接口上激活OSPF,那么将产生1类LSA描述这个接口;

  • 描述这个接口时

    • 采用链路类型3(接入末梢网络)

    • 链路ID为IP接口IP地址

    • 链路数据则设置为全F(32为掩码)

    • 度量值缺省0;

  • 域中的其他OSPF路由器在基于该LSA计算路由时,关于这个Loopback接口便会计算出一条/32的主机路由

  • 这就是为什么在OSPF的实现中,无论网络管理员为Loopback接口分配什么网络掩码,在其他设备的路由表中,关于该接口始终得到一条主机路由。

  • 要想将路由的掩码恢复成Loopback接口的真实掩码,可以将该Loopback接口的OSPF网络类型修改为Broadcast(或NBMA)。

一个路由器产生几个一类LSA

  • 一个路由器同属于一个区域的接口公用一个1类LSA描述

  • 有多个接口属于不同的区域时,为每个区域单独产生一个1类LSA,每个1类LSA只描述接入该区域的接口;

  • 在每个区域内,每个OSPF的每个OSPF进程路由器只会产生一个一类LSA

Type-2 LSA

  • 经过1类LSA的泛洪,区域内路由器大致描绘出本区域的网络拓扑;

  • 但是MA网络上,1类LSA接口描述的link类型为2

    • 链路ID:DR接口IP地址

    • 链路数据:本路由器的接口IP地址

  • 缺少MA网络掩码,和多少路由器连接在这个MA网络上的信息,不能完整描述拓扑结构和网段信息;

  • 定义

    • Network LSA 网段LSA:

    • 描述区域内的MA网络链路的路由器RID以及网段掩码信息;

    • 仅在区域内部传输

    • 只有DR会产生Type2 LSA

  • 报文格式:

    • LSA头部:

      • 链路状态类型:2

      • 链路状态ID:产生该2类LSA的DR接口IP地址

    • 网络掩码:该MA网络的网络掩码

    • 相连的路由器RID:连接到MA网络的路由器RID(与DR建立邻接关系的邻居RID,及DR自己的RID)

  • Type-1、Type-2 LSA在区域内的泛洪,OSPF就能够描绘出一个区域内的完整拓扑并发现各个网段的信息。区域内的所有路由器关于该区域的LSDB是完全一致的,准确地计算出到达区域内各个网段的路由。路由器将自己基于某个直连区域内泛洪的Type-1及Type-2LSA计算得到的路由视为区域内部路由

Type-3 LSA

1类LSA和2类LSA仅能在始发区域内泛洪,无法泛洪到区域之外,只能解决单个区域内的路由计算问题

  • 定义:

    • Summary LSA 网络汇总LSA

    • 描述其他区域的链路信息 -- 解决区域间路由计算

      • 收集区域内的1,2类LSA信息以子网形式传播类似直接传递路由
    • 在除了生成该LSA的所有其他区域传播(某些特殊区域外);一个LSA3只能在一个区域内泛洪;

    • 只有ABR会产生Type3 LSA

  • 报文格式;

    • LSA报头:

      • 类型:3

      • 链路状态ID:为区域间路由的目的网络地址

      • 通告路由器:ABR

    • 网络掩码:区域间路由的目的网络掩码

    • 度量值:路由的cost

  • 3类LSA防环

  • 防环机制:

    • 区域间路由必须通过Area0中转;逻辑上形成Area0为中心,其他区域为分支的星型拓扑;形成OSFP区域设计的规矩--所有非骨干区域必须和骨干区域Area0直接相连;

    • ABR通告3类LSA的限制:

      • 通告给骨干区域Area0:只能将直接所连接区域的内部路由通告给Area0(区域间路由则不允许)

      • 通告给非骨干区域:可以将到所连接的内部路由 及到达其他区域的区域间路由通告给非骨干区域

前3类解决了OSPF域内路由计算的问题;

Type-4 LSA

背景:

  • ASBR将外部路由引入OSPF;5类LSA描述外部路由,能够在整个OSFP域内泛洪(特殊区域除外),所有路由器都能知晓达到这些外部的路由;但是还要知道到达引入这些外部路由的ASBR所在;

  • 与ASBR同区域的可以根据1类和2类LSA知道如果到达ASBR,其他区域需要使用4类LSA;

  • 定义:

    • Asbr-summary ASBR汇总LSA

    • 描述ASBR的信息(RID),让区域内部路由器知道如何到达ASBR

      • 实际上是一条大大ASBR的主机路由
    • 只有ABR会产生Type4 LSA 触发条件是ABR收到第一个5类LSA

    • 在ASBR本区域的内部路由器,不会产生到达该ASBR的4类LSA

  • 格式:与LSA3一致

    • LSA头部:

      • 类型:4

      • 链路字段:ASBR的router-id

      • 通告路由器:通告ASBR的ABR的router-id

    • 网络掩码:字段全0 ,没有意义

    • Cost:该ABR自己到ASBR的cost值

Type-5 LSA

  • 定义:

    • AS-extenal LSA 外部LSA

    • 描述AS外部引入的路由信息

    • 只有ASBR会产生Type5_LSA

    • 在所有区域传播 除了个别特殊区域

  • 报文格式:

    • LSA头部:

      • 链路状态ID:外部路由的目的网络地址

      • 通告路由器:引入给LSA的ASBR的RID

    • 网络掩码:外部路由的目的网络掩码

    • E位:外部路由使用的度量值类型

      • Type1:置位0:可信度高;Cost=内部Cost(到达ASBR)+外部Cost

      • Type2:置位1:可信度低;Cost=外部Cost;默认2类

    • 度量值:外部路由的cost

    • 转发地址FA:

      • 当FA为0.0.0.0时,该外部网段的流量会被发往引入此外部路由的ASBR

      • FA不为0.0.0.0时,流量被发往这个转发地址;

      • 使得特殊场景规避次优路径问题

    • 外部路由标记:(route tag)只有外部路由才能携带的标记,常用于部署路由策略;打上标记可以直接匹配标记

Type-7 LSA

  • 定义:

    • NSSA(非完全末梢)区域外部LSA

    • 描述在NSSA区域引入的AS外部路由信息

    • 由NSSA区域的ASBR产生

    • 只会在NSSA和Totolly NSSA区域泛洪,并且不能进入Area0

  • 格式:与5类LSA一致

    • LS ID:外部某个网段的网络地址

    • Adv Rtr:引入该路由的ASBR的router-id

    • FA:不是0,是一个具体地址

  • 原理:

    • ABR为了让NSSA区域路由器能够通过骨干区域访问被过滤掉的5类LSA描述的外部路由,向NSSA中发布一条默认路由(7类LSA描述)

7类LSA转5类LSA场景

  • NSSA区域允许引入少量的外部路由,这些外部路由引入后使用7类LSA描述;

  • NSSA的ASBR会负责将NSSA内泛洪的7类LSA转成5类LSA使得这些外部路由在OSFP域内传播

  • 7转5:

    • 产生者:此7类LSA所在区域的ABR

    • 在除了产生此LSA,Stub,total Stub,Nssa,total Nssa区域传播

    • 描述区域外部路由信息

LSA 的泛洪机制、泛洪周期、LSA 的标识方法、LSA 如何判断新旧

LSA的传播机制:

  • 触发更新:

    • 当OSPF网络中有拓扑变更(增减网段进入或者邻居变更等)都会触发相应链路的拓扑或者网段的变更,这时直接感知到这一变化的OSPF设备会向邻居泛洪对应的LSA信息。
  • LSA的泛洪:

    • LSA 的泛洪是除了接收端口外,向其他所有运行了 OSPF 接口泛洪。泛洪周期为 1800 秒,老化时间为 3600 秒,所有的 OSPF 路由器每1800秒把自己 LSDB中所有的 LSA 向外泛洪。(当收到 3600秒的 LSA,则直接删除数据库中对应的LSA)可以不提;
  • LSA的标识:

    • OSPF 中通过三要素标识一条LSA:

      • LSA 的 Type,Link state lD(链路状态ID),ADV router(通告路由器)

LSA判断新旧

  • 如果LSDB中已经存在某个LSA再从网络中收到该LSA的另一个实例需要判断新旧

  • OSPF通过序列号,校验和,老化时间来判断LSA的新旧

    • 首先,拥有更高序列号的LSA被判断为更新;

      • LSA在刷新都会将LSA加1,序列号越大,则LSA越新(序列号最小为80000001,最大为7ffffffff)
    • 如果序列号相同,那么拥有更大校验和的LSA被认为更新

    • 如过序列号和校验和都相同,那么老化时间越小越新

两台 ASBR 引入同一条路由到内部,会产生几条 LSA?

  • 只会产生一条

  • 路由器收到一条5类 LSA 时,如果这条5类LSA 包含的路由和本地路由的IP、掩码都相同,并且其中的 FA 地址和本地路由的下一跳地址也相同,那么这台路由器会去比较这个5类 LSA 产生者的 Router-id 和自己的 Router-id

  • 如果自己的 Router-id 小,那么自己就不会再将这条路由引入到 OSPF 中,也不会再产生5类 LSA。也就是说当两条外部5类 LSA 的 FA 地址相同时,LSDB中只能看到一条。Router-id 小的ASBR 会撤销自己发布的5类 LSA。

FA 地址的作用及产生条件

  • FA地址的作用:

    • 解决次优和防环
  • Type-5 LSA中FA地址的产生条件:

    • 5 类 LSA 的 FA 地址默认为 0.0.0.0,若同时满足以下三个条件,将把引入的外部路由的下一跳地址设置为 FA 地址(Type7 LSA 除外,Type7的 FA 地址都是以具体 IP 地址的形式存在):

      • 引入的这条外部路由,其对应的出接口启用了 OSPF

      • 引入的这条外部路由,其对应的出接口未设置为静默接口

      • 引入的这条外部路由,其对应的出接口的 OSPF 网络类型为 broadcast(即非 P2P、P2MP 网络类型)

    • 在NSSA区域中,执行7类转换成5类LSA时,转换之后产生的5类LSA的FA地址是继承来自7类LSA的FA地址

  • Type 5 LSA 中的 FA 地址的计算规则:

    • 在OSPF引入外部路由时、若产生的Type 5 LSA的FA地址为0.0.0.0则其他路由器在计算到达该外部网络时,将考虑如何到达ASBR(即产生该Type5 LSA 的路由器)来计算出外部路由的下一跳地址。

    • 在 OSPF 引入外部路由时,若产生的 Type 5 LSA 的FA地址不为0.0.0.0,则其他路由器在计算到达该外部网络时,将考虑如何到达该 FA 地址来计算出外部路由的下一跳地址,并且前往该 FA 地址的路由信息必须以 OSPF 区域内或区域间的路由形式存在

  • Type-7 LSA中FA地址的计算规则:

    • 若在 NSSA 区域引入外部路由,产生的 Type 7 LSA 中其 FA 地址均不为 0.0.0.0。具体规则如下

      • 若 ASBR 上存在最后启用 OSPF 的环回口,则 FA 地址等于该环回口的 IP 地址。

      • 若 ASBR 上没有环回口,则 FA 地址等于最后启用 OSPF 的物理口的 IP 地址。

  • 7 类 LSA 中的 P 位的作用

    • 为了将 NSSA 区域引入的外部路由发布到其它区域,需要把 Type7LSA 转化为Type5LSA 以便在整个 OSPF 网络中通告。

    • P-bit用于告知转化路由器该条 Type7LSA 是否需要转化。

      • 缺省情况下,转换路由器的是 NSSA 区域中 Router ID 最大的区域边界路由器( ABR)。

      • 只有 P-bit 置位并且 FA不为 0 的 Type7LSA 才能转化为5类LSA。 FA 用来表示发送的某个目的地址的报文将被转发到 FA 所指定的地址。区域边界路由器产生的7类LSA不会置位 P-bit。 NSSA 区域中的默认路由不会进行 7 转 5。

OSPF中的 FA地址如何避免环路

  • 场景:
  • FA地址不为0.0.0.0的情况环路产生
  • FA地址为引入外部路由的ASBR的地址,解决环路
  • 总结:OSPF 针对外部路由可以通过FA 地址来防环,7类LSA 中一般情况下都会携带 FA 地址,在执行7转5后 FA 地址会默认保留、所以在默认情况下面不会出现环路问题 如果我们在做7转5时把FA地址抵制了,就有可能出现上述的环路问题。

区域划分的注意事项

  • R1R2R3可以都划分到区域1,然后没有区域0吗?

    • 可以,多区域中才需要骨干区域
  • 区域号可以任意吗?

    • R1不能和R3互通,无骨干区域,无ABR,无法交互LSA

OSPF 为什么要划分区域

**区域划分:**从逻辑上将路由器划分为不同的组,每个组用区域号(Area ID)来标识,区域的边界是路由器,而不是链路。一个路由器可以属于不同的区域,但是一个网段(链路)只能属于一个区域;

  • 减少资源消耗:

    • OSPF 是链路状态路由协议,需数据库同步。在大规模网络中,若不划分区域,设备要处理全网链路状态信息,大量消耗 CPU、内存等资源。划分区域后,设备仅处理本区域链路状态信息,减少 LSDB 中信息数量,降低设备性能需求,减轻设备负载,实现资源消耗的减少。
  • 降低网络不稳定性:

    • OSPF 网络中,链路变化会触发路由重新计算。未划分区域时,链路变化会使全网设备重新计算路由,加剧网络不稳定。划分区域后,链路变化影响主要局限在本区域内,区域间通过 3 类或 5 类 LSA 传递其他区域,或者外部的路由信息,降低了对全网的影响
  • 便于网络管理:

    • 过划分区域,可以将具有相同功能性或者处于相同地理位置的路由器划分在一个区域内,这样便于网络管理员对网络进行管理和维护,提高了管理效
  • 隔离拓扑变化:

    • 在 OSPF 的区域边界或 ASBR可以进行路由汇总。区域内的个别条目变化,不会导致其他区的设备需要重新处理聚合路由

OSPF 单区域与多区域的优缺点对比

  • 单区域

    • 单区域 OSPF配置简单,不需要考虑多个区域之间的连接

    • 单区域OSPF计算SPF速度更快,因为只需要计算一个区域的LSDB

    • 单区域OSPF对于小型网络来说更稳定,减少数据库同步和路由计算的复杂度

    • 单区域的扩展性较差,当路由器超过100台时,会出现LSDB 过大,SPF计算时间过长等问题

  • 多区域

    • 多区域 OSPF 可以解决单区域扩展性差的问题,将网络划分为多个区域来减少每个路由器上LSDB 大小和 SPF 计算时间

    • 多区域 OSPF 允许管理员更灵活的管理网络,可以根据不同的需求将路由器分配到不同区域中

    • 多区域 OSPF 可以把网络故障隔离在区域内部

    • 多区域配置更复杂

    • 多区域相对单区域不够稳定,当网络规模较小时,划分多个区域可能会增加路由器之间的复杂度和故障点

骨干区域的特点

  • *骨干区域:*Area0

    • 骨干区域负责区域之间的路由,非骨干区域之间的路由信息必须通过骨干区域来转发

    • 所有非骨干区域必须与骨干区域保持连通

    • 骨干区域自身也必须保持连通

OSPF 骨干区域路由器数量太多怎么解决

  • 按照三层模型来规划区域。核心和汇聚之间的网络规划到 Area0,核心的内部网络规划为 Area1,汇聚和接入层规划为另一个非骨干区域

OSPF 非骨干区域路由器数量太多怎么解决

  • 可以把该区域再划分2到3个非骨干区域,在ASBR上配置路由聚合来缩小路由表规模

特殊区域的特征和适用场景

  • 要点:

    • 每种区域哪些LSA进不来;

    • 缺省路由怎么产生的;

    • 区域中是否存在ASBR引入外部路由;

    • 特殊区域存在多个ABR会由更大的RID做7转5


*

  • Totally Stub区域:允许ABR发布的Type3缺省路由,不允许自治系统外部路由和区域间的路由;

  • Stub区域:和Totally Stub区域不同在于该区域允许区域间路由;

  • NSSA区域:和Stub区域不同在于该区域允许自治系统外部路由的引入,由ASBR发布Type7 LSA通告给本区域;

  • Totally NSSA区域:和NSSA区域不同在于该区域不允许区域间路由。

STUB区域/Totally Stub区域:

STUB(末梢)区域:

  • 特征:

    • 不允许Type-4 和Type-5 LSA 注入(不接受自治系统外部路由),同由 ABR 自动下发一条 Type-3 的缺省路由到区域内,区域内的路由器依靠缺省路由访问 OSPF 外部网络。ABR依然会将描述区域间路由的3类LSA注入;

    • 既然减小了区域内设备的路由表规模,又保证了访问外部网络的数据可达性;

    • Stub区域路由器需要对Stub属性有一致性认知(区域中的所有路由器必须都要配置stub命令)否则邻接关系可能出现问题

  • 适用:非0常规区域只有单一的出口;区域中路由器性能较低,不希望接收大量LSA;区域内路由器不需要根据特定的路由来选择离开区域的出口的场景

Totally Stub(完全末梢)区域:

  • 特征

    • 在Stub的基础上ABR上进一步阻挡描述区域间路由的3类LSA进入该区域,区域内路由通过ABR向该区域下发的3类LSA默认路由到区域之外的其他区域和域外网络;

    • 只有1类,2类,描述默认路由的3类LSA存在,路由表内中有区域内的路由,以及指向ABR的默认路由,路由表极大程度精简了;

    • 与stub区域区别:需要在ABR追加no-summary参数

  • 适用场景:

    • 适用于该区域路由器性能较差,不希望接收大量其他区域和引入的外部路由的场景

NSSA/Totally NSSA 区域

NSSA 区域 非纯末梢区域

  • 特征:

    • 是Stub区域的变种,阻挡了4类和5类LSA进入的同时允许区域内路由器将少量的外部路由引入OSPF;被引入的路由以7类LSA描述,并且这些7类LSA只能在当前NSSA内泛洪,不允许直接进入Area 0;

    • 为了使这些被引入NSSA的外部路由让OSFP域内其他区域学习到,由NSSA区域中Router-id最大的ABR把7类LSA转换成5类LSA再注入Area0,从而泛洪到整个OSFP域;

    • 由ABR手工配置下发Type-7的缺省路由,通过协议视图中的 nssadefault-route-advertise 命令来实现

  • 适用于:区域中路由器性能较低,不希望接收大量AS外部路由,但本区域存在ASBR引入外部路由的场景

Totally NSSA 区域:完全非纯末梢区域:

  • 特征:

    • 在NSSA的基础上在ABR上将3类LSA阻挡,将区域间的路由都过滤掉,由NSSA的ABR自动下发描述默认路由的3类LSA到该区域;使得区域内路由器可以通过默认路由访问OSPF其他区域以及域外的网络;

    • 不允许 Type-3、Type-4 和 Type-5 LSA注入,但区域中存在用7类LSA描述的ASBR引入的外部路由。

  • 适用于:区域中路由器性能比较低,不希望接收大量AS外部和其他区域路由,但本区域存在ASBR引入外部路由的场景

部署特殊区域的注意事项

  • 所有特殊区域都不允许是骨干区城

  • 所有特殊区域都不允许被虚连接穿越

  • 区域内的所有设备都得设置一致的特殊区域,即同一个区域内的设备,要设置相同类型的特殊区域

  • Stub 和 Totally Stub 不允许存在 ASBR

NSSA 区域的P置位有什么用

  • 在 NSSA 区域的 ABSR 上,如果 P-bit 位置位 1,这样 Type7 的 LSA 就会在 ABR上转换为Type 5否则置位0的话,就不允许转换为Type 5

  • 可以在 OSPF 的区域视图中使用 translate-akways 命令,来强制实现该 ABR 执行7类 LSA 转换成5类 LSA。

  • 以在 OSPF 的区域视图中使用 translate-never 命令,来禁止该 ABR 执行7类LSA 转换成5 类 LSA。

如何实现让一台 Route-id 不是最大的 ABR 执行将7类 LSA 转换成5类?

  • 答:可以通过在 OSPF 的区域视图使用 nssa translate-always 来实现,如果本 ABR 执行该命令就会强制执行7 类 LSA 转成5 类 LSA,那么其他 ABR则不执行7类转5类。

OSPF 中如何发布缺省路由及应用场景

区域类型 产生条件 发布方式 产生LSA的类型 LSA泛洪范围
普通区域 配置default-route-advertise命令 ASBR发布 Type-5 LSA 普通区域
STUB区域 自动产生 ABR发布 Type-3 LSA STUB区域
NSSA区域 配置nssa default-route-advertise ASBR发布 Type-7 LSA NSSA区域
完全NSSA区域 自动产生 ABR发布 Type-3 LSA NSSA区域
  • OSPF 缺省路由的发布方式取决于引入缺省路由的区域类型。

  • OSPF 不能通过 import-route 命令从其它协议引入缺省路由,如果想把缺省路由引入到 OSPF 路由区域,必须在ASBR 上执行 default-route-advertise 配置

  • OSPF缺省路由通常应用于下面两种情况:

    • 由区域边界路由器发布Type3 LSA,用来指导区域内路由器进行区域之间报文的转发

    • 由自治系统边界路由器发布Type5 LSA或 Type7 LSA,用来指导 OSPF 路由域内路由器进行域外报文的转发。

OSPF 缺省路由产生的方式

  • 对于普通区域的路由器,缺省路由需要在 ASBR 上通过命令来引入。

    • 使用命令default-route-advertise,可以在 ASBR 本身已经具有缺省路由的情况下引入

    • 使用命令 default-route-advertise always,在ASBR本身并不具备有缺省路由的情况下引入

  • 对于特殊区域,stub区域,Totally stub区域,totally nssa 区域会由ABR自动下发Type3的缺省路由,NSSA区域需要通过手工的方式下发Type7的缺省路由

如何减小 OSPF 路田器中LSDB的大小

  • 分区域设计:因为1,2类LSA只在本区域泛洪,分区域设计可以减少每个区域1、2类 LSA 的数量

  • **特殊区域:**特殊区域无法传递5类或3类LSA,可以减少 OSPF 中 LSA 的数量

  • **过滤:**通过在 ABR 上对 3类 LSA 的过滤,可以减少某一区域中3类 LSA 的数量;在 ASBR 上路由引入时,可以对引入的路由进行过滤,来减少 OSPF 中5类LSA 的数量

  • **路由聚合:**在 ABR 上对 3类 LSA 进行聚合,可以把多条3类 LSA 汇聚为1条,并可以通过聚合来进行 3类 LSA的过滤

OSPF 网络类型

  • 网络类型的要点:

    • 什么网络默认的类型?

    • 怎么发送协议报文

    • 需不需要选举DR/BDR?

    • Hello time和dead time

网络类型 链路层协议 是否选举DR 怎么发送协议报文 Hello time
Broadcast广播 BMA 以太网(Ethernet) FDDI(光纤) 组播发送;(.5.6) 10s 40s
NBMA非广播多点可达 帧中继,ATM,X.25 FR对点子接口 单播发送;手工指定 30s 120s
P2MP点到多点 手动指定 模拟组播发送(.5) 30s 120s
P2P点到点 PPP,HDLC, FR点对点子接口 组播发送(.5) 10s 40s
vlink 10a 40s
  • Broadcast 广播网络:

    • 支持广播的网络环境,允许任意两台路由器直接能二层通信;链路层是以太网 ,FDDI(光纤)默认的网络类型;默认情况下OSPF的网络类型

    • 组播发送发送hello报文和LSAck报文;对于LSU报文通常组播形式首次发送,单播形式进行重传;单播形式发送DD和LSR报文;其中224.0.0.5所有运行OSPF的接口侦听 ; 224.0.0.6DR/BDR侦听;

    • 需要选举DR/BDR

    • hello time 10s ; dead time 40s;

  • NBMA 非广播多点可达:

    • 当链路层协议是帧中,ATM或FR时,

    • 单播形式发送协议报文,需要手工指定邻居;

    • 需要选举DR/BDR

    • hello time 30s ;dead time 120s;

  • P2MP 点到多点网络;

    • 没有一种协议会缺省认为是P2MP,必须是其他网络类型强制更改的;(常用将非全连通的NBMA改为点到多点网络)

    • 以组播(224.0.0.5)发送hello报文,以单播形式发送其他协议报文;

    • 不选举DR/BDR

    • hello time 30s dead time 40s

  • P2P 点到点网络

    • PPP默认的网络类型

    • 组播(224.0.0.5)发送协议报文,组播形式重传LSU报文

    • 无需进行DR和BDR的选举

    • hello time 10s dead time 40s

不同链路类型报文发送的方式

OSPF 路由聚合的方法

  • OSPF只能手动聚合;

  • ABR聚合:

    • 把一个区域的LSA聚合后发布到相邻区域

    • 在传入区域的区域视图配置

    • 只能对Type-3类的LSA进行聚合

    • ABR聚合不会影响ABR本机的路由,只会影响相邻区域的下游路由器的路由

    • ABR聚合后,会在ABR本机上产生一条该聚合的黑洞路由,来防止环路出现

  • ASBR聚合:

    • 把引入的AS外部路由聚合后发布到OSPF内部

    • 在协议视图配置

    • 只能对Type-5、Type-7LSA的路由进行聚合

    • ASBR聚合不会影响ASBR本机的路由,只会影响OSPF内部的其他路由器

    • ASBR聚合后,会在ASBR本机上产生一条聚合的黑洞路由,来防止环路出现

  • 使用聚合实现路由过滤:在聚合后加入not-advertise参数

OSPF 路由过滤的方法

  • 针对计算出的路由进行过滤:

    • 在OSPF的进程上使用 Filter-policy 进行路由过滤。由于 OSPF 邻居之间传递的是 LSA,路由是每台路由器自行计算的,所以该过滤方法只影响本机的路由,而不影响任何其他邻居。该方法只能使用在入方向(Import)
  • 针对3类LSA进行过滤:

    • 在OSPF区域进程中使用Filter进行3类LSA的过滤,可以应用在import或export方向进行过滤,由于OSPF邻居之间传递的是LSA,所以该过滤方法会影响出方向的所有其他邻居;

    • 1类和2类LSA无法过滤;因为SPF算法的前提是区域内的1类和2类LSA要同步;如果在某些路由器上被过滤的话,会导致 OSPF 无法计算路由。

  • OSPF接口上的过滤,在启用OSPF的接口上使用ospf database-filter进行过滤

    • AI:过滤所有的LSA

    • Ase:过滤5类LSA

    • Nssa:过滤7类LSA

    • Summary: 过滤3类 LSA

  • 针对发送给特定邻居的 LSA 进行过滤

    • 在 OSPF 视图使用 database-filter peer x.x.xx来实现

    • all:对发送给接口的网络类型为 P2MP 的邻居的所有LSA 进行过滤(除了Grace LSA) 。

    • ase:对发送给接口的网络类型为 P2MP 的邻居的 Type-5 LSA 进行过滤

    • nssa:对发送给接口的网络类型为P2MP 的邻居的Type-7 LSA 进行过滤

    • summary:对发送给接口的网络类型为 P2MP 的邻居的 Type-3 LSA 进行过滤

OSPF 中静默接口和 RIP 中静默接口的区别

  • RIP:

    • sient-interface在RIP 里只会阻止接口对外发送更新消息,但是仍然接收更新消息。如果一个接口被抑制,该接口所在网段的直连路由仍然可以发布给其它接口
  • OSPF :

    • 如果要使 OSPF 路由信息不被其他网络中的路由器获得,并且使本地路由器不接收网络中其他路由器发布的路由更新信息,可使用 Silent-interface 命令禁止此接口接收和发送 OSPF 报文。禁止接口收发 OSPF报文后,**该接口的直连路由仍可以发布出去,但接口的 Hello 报文将被阻塞,接口上无法建立邻居关系。**这样可以增强 OSPF 的组网适应能力,减少系统资源的消耗

SPF 多实例和多进程的区别

  • OSPF 多进程:

    • 是指在一台会层设备上运行多个OSPF进程,每个OSPF 进程维护自己的一个OSPF LSDB数据库,并计算维护自己的 OSPF 路由表,每个进程之间并没有什么关系,类似是在本路由器上运行的多个动态路由协议,多个进程共同维护一张全局路由表,并在全局路由表中优选各进程的 OSPF路由;
  • OSPF多实例:

    • 是将不同的进程和不同的VPN实例绑定,每个OSPF进程维护自己的一条VPN路由表,OSPF多实例主要应用于MCE的场景
  • 通过区域的两台路由器接口加入不同进程号可以通吗?

  • 进程只有本地标识,用于区分同一台路由器上可能运行的多个 OSPF 进程。它在本地设备上用于管理和区分不同的 OSPF 配置和路由计算等操作,并不具有全局唯一性,也不会在网络中进行传播。

OSPF 的验证方式和优先顺序

  • OSPF支持接口验证和区域验证

  • 当开启区域认证的时候,也就意味着所有属于该区域的接口收发的 OSPF 协议消息都需要包含认证相关字段

  • 当开启接口验证时,就只有该接口收发的OSPF协议消息需要包含认证相关字段。相比之下,接口验证更加灵活

  • 当同时配置了接口验证和区域验证时,接口验证优先于区域验证。如果接口验证成功了,区域验证是否成功都可以建立起邻居关系

  • OSPF 的验证信息是在 OSPF 头部中携带的,所以每个 OSPF 报文都包含验证信息

MD5和明文验证的区别

  • 明文认证

    • 在明文认证中,OSPF消息中的认证字段以明文形式传输。这意味着任何能够截获OSPF消息的人都可以读取认证字段中的信息。明文认证的设置相对简单,只需要在OSPF配置中指定认证密码即可。
  • MD5认证

    • 它通过使用MD5算法对OSPF消息进行哈希运算,生成一个固定长度的哈希值。发送方和接收方都知道预共享的密钥,将其用于计算和验证哈希值。只有在接收方计算出的哈希值与接收到的哈希值匹配时,消息才被接受。

    • MD5认证提供了更高的安全性,因为攻击者无法轻易地获取到预共享密钥。它在OSPF网络中广泛使用,并提供了基本的安全保护。

虚连接的作用

  • 虚连接虚是指在两合ABR之间,穿过一个非骨干区域,建立的一条逻辑上的连接通道,可以理解为两台 ABR 之间存在一个点对点的邻接关系

  • 虚连接是在相邻的 ABR 之间,基于 RID 建立的,在 OSPF 的区域视图中使用命令vlink-peer x.x.x.x来实现

  • 虚连接的主要作用有:修复骨干区域不连续、或非骨干区域没有与骨干区域连接的问题;提供冗余备份链路;在特殊场景下,可以通过虚连接来解决路径次优问题

  • 用于解决骨干区域被分割的问题。

    • 当骨干区域物理上被分割,可以使用虚连接让2个ABR仍然保持逻辑上的连通,而保持完整的骨干区域

  • 解决某个非骨干区域无法和骨干区域相连的问题

  • 提供冗余备份链路,当骨干区域因链路故障不能保持连通时,通过虚链路仍然可以保证骨干区域在逻辑上的连通性;

  • 虚连接可以用于解决两个非骨干区域之间的路由一定要经过骨干区域而导致的次优路径问题

OSPF 的防环机制

  • 从区域架构设针上来避免环路:

    • OSPF要求所有的非骨干区域与骨干区域连接,非骨干区域之间互访必须通过骨干区域来实现,构成一个星型环境,从网络设计来来避免环路
  • Type-1 LSA及Type-2 LSA 的防环(区域内部的防环)

    • 区域内泛洪的Type-1 LSA 及 Type-2 LSA,还原区域内的网络拓扑及网段信息。路由器为每个区域维护一个独立的LSDB,并且运行一套独立的 SPF 算法,同一个区域内的路由器,拥有针对该区域的相同LSDB,都基于这个LSDB计算出一颗以自己为根的、无环的最短路径树。
  • 区间间防环:3类LSA和4类LSA防环

    • 1.OSPF要求所有的非骨干区域必须与骨干区域直接相连,区域间路由需经由骨干区域中转。

      • 这个要求使得区域间的路由传递不能发生在两个非骨子的区域之间,这在很大程度上规避了区域间路由环路的发生,也使得 OSPF的区域架构在逻辑上形成了一个类似星型的拓扑。
    • 2.ABR从非骨干区域收到的3类LSA不能用于区域间路由的计算

      • ABR使用3类LSA进行区域间路由时,只会使用在Area区域内收到的3类LSA进行计算,可以有效避免环路产生

    • 3.ABR通告3类LSA的限制:

      • ABR通告给骨干区域Area0:ABR只能将直接所连接区域的内部路由注入给Area0(区域间路由则不允许)

        • ABR 只能够将从 Type-1/2 转成的 Type-3 LSA 注入到区域 0;
      • ABR通告给非骨干区域:ABR可以将到所连接的内部路由 及到达其他区域的区域间路由注入给非骨干区域

        • 能够将 Type-1/2转成的 Type-3 和接收到的 Type-3 的LSA 注入进非骨干区域。
    • 4.ABR不会将描述到达某个区域内网段路由的3类LSA再注入回改区域(类似 OSPF 区域间的水平分割)

    • 5.3类LSA还设计了Down-Bit,用于在MPLS VPN环境下进行路由防环;

      • 当将路由从 MP-BGP 重新分配给 OSPF 时,PE 路由器设置 Down Bit 位;

      • PE 路由器从不将设置了 Down Bit 位的 OSPF路由重分布到 MP-BGP

    环路情况:

  • 外部路由的防环:Type-5 LSA 的防环

    • 引入的外部路由以 Type-5 LSA 在整个 OSPF 域内泛洪。一台路由器使用Type-5 LSA 计算出路由的前提是两个,其一是要收到 Type-5 LSA,其二是要知道产生这个 Type-5 LSA 的 ASBR 在哪里。

    • 与 ASBR 接入同一个区域的路由器能够根据该区域内泛洪的Type-1LSA 及Type-2LSA计算出到达该 ASBR 的最短路径,从而计算出外部路由。

    • 而其他区域的路由器因为ASBR产生的Type-1 LSA只能在其所在的区域内防洪,所以才需要Type-4 LSA.因此其他区域的路由器在获取Type-4 LSA后便能计算出到达ASBR最短路径,进而利用该ASBR产生的Type-5 LSA计算出外部路由

    • Type-5 LSA 将会被泛洪到整个 OSPF 域,表面上看,它本身并不具有防环的能力、但是实际上,它并不需要,因为它可以依赖 Type-1和3类LSA及Type-4 LSA 来实现防环。

    • 另外5类LSA的Route-tag字段用于在MPLS VPN环境下外部路由的防环

      • 为连接同一站点的PE设备配置相同的 RouteTag。一台PE设备将 BGP路由引入 OSPF,并生成Type-5 LSA 或 Type-7 LSA 时,为该Type-5 或 Type-7 LSA 添加本地配置的外部路由标记。

      • 其他 PE 接收到 CE 发布的Type-5或 Type-7LSA后,将其中的外部路由标记值与本地配置的值进行比较。如果相同,则在进行路由计算时忽略该LSA,从而避免路由环路。RouteTag可以手工配置,也可以通过自动计算得到

  • Type-7 LSA 的防环

    • Type-7 LSA 只在本区域存在,故依靠Type-1及Type-2 LSA 来实现防环

OSPF 为什么要设置优先级内部10,外部150

  • 防止双向引入出现环路问题

OSPF防环规划有什么注意事项

  • OSPF 是一个无环的动态路由协议,但这是针对域内路由和域间路由而言的

    OSPF对于引入的外部路由引发的路由环路没有很好的防范机制

    • 尽量使用单向引入,单向引入情况下,网络结构简单,数据流向是单向的,不容易产生环路。

    • 双向引入时要进行路由过滤。尤其是在双向多点的情况下,由于双方有多个边界,且多个边界都互相引入,极易引发环路和次优路径。此时的原则是要进行路由过滤。

  • 如果规划不当,在路由引入时还容易产生次优路径。

    • 调整路由优先级,多次引入路由的优先级,一定要小于原路由的优先级。

    • 设置合理的开销,原则上,从外部引入的路由开销值应该大于任何内部路由的开销值。

  • OSPF 做路由聚合后,也有可能产生环路,H3C 路由器缺省会自动对聚合后的汇总路由生成黑洞路由,也可以通过手工来配置,下一跳指向 NULL0 接口。

引入外部路由后,LSDB 中有儿LSA但是没有计算出路由,可能是什么原因?

  • 引入的外部路由通过Type5或 Type7 的 LSA 描述。既然 LSA 存在,所以不可能是过滤的 Type 5 LSA。但是对OSPF 可以**在单台路由器上过滤计算出的路由来实现LSA有,但是无路由的情况。**所以如果是对该路由做了过滤,可能出现 这种情况。

  • Type 5 LSA 在非 ASBR 的区域通过 Type3 的防环机制防止环路。**也就是一个ABR 不会根据从一个非骨干区域接收的 Type 5 LSA,计算路由。**所以如果一个区域有多个 ABR,某个 ABR 上出现了骨干区域被分割而导致无法从本 ABR 连接的区域0连接到 ASBR,就会导致能从其他 ABR 收到 Type 5 LSA,但无法计算路由的结果。

  • Type5 LSA 的 FA 地址是非 0.0.0.0 的,并且前往该 FA 地址的路由不是 OSPF 区域内或区域间的形式,则 Type5 LSA 只存在于数据库中,并且不加路由表。

  • 非相邻设备的 RID 与 ASBR 的 RID 冲突时,也会导 RID 冲突的 LSA 无法加表

  • 在 MPLS VPN 的环境中,MCE 设备上运行 OSPF,并且 OSPF 进程没有关闭down-bit 检查的场景在 OSPF的VPN实例进程中使用vpn-instance-capability simple 来关闭 down-bit 检查。

OSPF 有哪些快速收敛方法

  • 手动把Hello-time 改小,使 OSPF 能更快的侦测出邻居失效

  • 通过Hello报文来检测邻居失效:Dead-time是四倍的 Hello-time,时间太长,可以使用BFD,使 OSPF能够在毫秒级实现邻居失效检测

  • 在只有两台设备互联的以太网环境,将网络类型改成P2P,改成 P2P 网络类型之后,无需进行 DR和 BDR 的选举,而选举 DR/BDR 要花费 40s 的时间,通过将网络类型改成 P2P 可以减少将近 40s的收敛时间。

  • 设置特殊区域

  • 在 ABR或 ASRB 上进行路由汇总

  • 出于稳定考虑,OSPF 在每次数据库发生变化后并未马上计算 SPF,而是等待一个路由计算时间间隔这个时间值最小为50毫秒,最大为5秒;通过改小这个值也可也加快收敛速度

  • LSA有一个传输延迟,,trans-delay,目的是为了减少链路上同时泛洪的 LSA 的数量,缩短这个时间可以让 LSA 的更新更快。该时间默认1秒

  • PRC,部分路由计算,当网络上路由发生变化的时候,只对发生变化的路由进行重新计算。OSPF 对区域间和引入的外部路由进行的是部分路由计算机制

  • 配置 OSPF 的前缀按优先权收敛功能,可以通过配置策略来为不同前缀的路由分配不同的优先权。优先权一共4个等级,分别是 Critical、High、Medium、Low。当路由收敛时、OSPF 会优先计算高优先权的路由,来使重要业务的路由实现更快速收敛

引起 OSPF 的 SPF 重复计算有哪些可能原因

  • 链路抖动引起 SPF 重复计算

    • 如果 OSPF 区域中存在不稳定的链路,那么每当发生链路抖动时,都将导致区域内的路由器重新运行 SPF 算法,以适应网络拓扑的改变

    • 一般可以通过消除链路抖动或合理规划区域对该问题进行解决;

  • Router ID 重复引起 SPF 重复计算

    • 果运行 OSPF 的路由器 RouterID 重复,将会导致 OSPF 拓扑数据库处于混乱状态,进而导致 SPF 频繁计算。

    • 发生这个问题时一般可以观察到部分路由的频繁删除与增加,以及部分LSA 的 LSA Age 总是很小

OSPF路由无法加入路由表故障排查

  • 路由表中没有 OSPF路由:

    • 网络类型不匹配:由于 OSRF 数据库中网络类型不匹配,导致 OSPF 不会在路由表中添加路由

    • 点到点网络单边无地址:如果一端配置有IP地址,另外一边配置为借用IP地址,则二者的LSA链路数据值不匹配

  • OSPF外部路由无法加入路由表

    • 可能为 Forwarding Address,地址有效性检查失败

    • OSPF 外部路由中会携带转发地址信息,如果该转发地址非零,那么OSPF必须能够通过区域内或区域间路由到达该转发地址,否则该外部路由不会加入 OSPF 路由表

OSPF路由无法通告故障要如何排查

  • OSPF 无法通告从地址的路由:

    • 当启用 OSPF 的接口配置从地址时,必须保证从地址与主地址属于相同的OSPF 区域,否则从地址路由无法通告。
  • ABR 无法通告路由

    • 区域不允许接收汇总路由:如果 OSPF 的区域为Totally Stub或Totally NSSA区域,那么该区域的 ABR 不会向该区域通告其它区域的路由。

    • ABR 与骨干区域隔离:与 ABR 相连的区域必须有一个是骨干区域,如果ABR 无法连接骨干区域,那么它将不能通告区域间路由。

    • OSPF骨干区域分割:ABR 不能通过非骨干区域学习区域间路由,如果OSPF的骨干区域分割,那么 ABR 可能无法生成全部的区域间路由。

  • 无法通告外部路由:

    • 区域不允许接收外部路由:如果 OSPF 的区域为Stub区域、Totally Stub区域NSSA 区域、Totally NSSA 区域,那么外部路由无法向这些区域通告。

    • NSSA 区域多 ABR:如果 NSSA 区域存在多个 ABR,具有较大 RouterID 的ABR 才会进行类型7的 LSA 转换成类型5的 LSA 操作,其它的 ABR不能进行这个转换,如果 NSSA 区域存在配置错误的 ABR 而且其 Router ID较大,那么该 NSSA 区域的外部路由可能无法通告到其它区域。

OSPFV3 与 OSPFV2 的相同与不同点

  • 相同点

    • 相同的 SPF 算法

    • 区域和 Router-id 的概念一致,且 OSPFv3 的 Router-id 格式仍为 IPv4 地址格式

    • 相同的邻居和邻接形成机制

    • 相同的LSA 扩散和老化机制

  • 不同点

    • OSPFV2 是基于网段运行的。两个路由器要形成邻居关系,IP 地址必须在同一网段; 而 OSPFv3 的实现是基于链路的。一个链路可以划分为多个子网,节点即使不在同一个子网内,只要在同一链路上就可以。而且 OSPFv3 建立邻居关系是通过链路本地地址,而不是手动配置的IPv6 单播地址

    • OSPFv3 支持在同一链路上运行多个 OSPF 实例,实现链路复用并节约成本。OSPFv3 的报文头部中添加了 Instance ID 的字段来描述本报文属于该链路上的哪一个 OSPF 实例

    • 在 OSPFV2 中,当网络类型为点到点或者通过虚连接与邻居相连时,通过Router ID 来标识邻居路由器,当网络类型为广播或 NBMA 时,通过邻居接口的IP 地址来标识邻居路由器。OSPFv3 取消了这种复杂性,无论对于何种网络类型,都是通过 Router ID 来唯一标识邻居

    • OSPFV3 协议自身不再提供认证功能,而是通过使用IPv6 提供的安全机制来保证自身报文的合法性。所以,OSPFv2 报文中的认证字段,在OSPFv3报文头中被取消

    • OSPFV3 的报文有变化。版本号变更为3;Hello 报文中增加了InstanceID字段,去掉了认证字段

    • OSPFV3 的 LSA 的类型和内容都有变化

OSPFV3 在 OSPFv2 的基础上,LSA有哪些变化

  • LSA 的名称、LSA的类型以及 LSA 携带的内容三个方面比较

  • Router-LSA 和Network-LSA 不再描述网段的前缀和前缀长度,只描述路由器接口的链路状态和开销等参数

  • 增加了9类LSA,Intra-area-prefix-LSA,用来描述区域内的网段的前缀和前缀长度

  • 3 类和 4 类 LSA 只是名称做了修改,分别是 Inter-area-prefix-LSA 和 Inter-router-prefix-LSA

  • 新增了8类LSA,Link-LSA,用于在一条链路上描述链路本地地址信息。路由器把当前接口的链路本地地址向该链路上的所有其它路由器通告

OSPFV3 的配置和 v2 有什么区别

  • OSPFv2 可以通过 network 的方式或将接口加入 OSPF 的方式启用 OSPF,在OSPFv3 中取消了network的方式,只能通过将接口加入 OSPF的方式启用 OSPF

  • OSPFV2 的一个接口只能加入一个 OSPF 进程,在 OSPFv3 中一个接口可以同时加入到不同的 OSPFv3 的实例中。

OSPF 双塔奇兵问题

  • OSPF如果某个区域存在两个ABR,并且在两个ABR上都对Area n内的路由做了聚合操作。

  • Loopback0应该属于Area 0还是Area n?

  • 如果骨干区域被分割有何后果?

  • 如果非骨干区域n被分割有何后果?

  • 图中的红线应该属于Area 0还是Area n?

  • Loopback0 只宣告进 Area0 或者 Area N 都不影响 OSPF 正常工作。

    • 在早期OSPF 对 ABR 的定义是连接一个骨干区域和一个非骨干区域,且至少在骨干区域有一个存活的接口。

    • 按照这个规则,就应该把 Loopback0 口宣告进 Area N,因为如果宣告进 Area0 的话,一旦 R1 和 R3 之间的链路故障,R3 的 Loopback0口由于仍在 Area0 存活、所以 R3 仍然是 ABR。

    • 根据 OSPF 防环规则,ABR不会根据一条从非骨干区域接收的 Type 3 LSA 来计算路由,所以会导致 R1 和 R2上的路由从 R4 进入到 AreaN 后,再传递至 R3 时,R3 也无法计算出相关路由,而导致网络故障。

    • 而目前 OSPF 对 ABR 的新的定义是连接一个骨干区域和非骨干区域,且至少在骨干区域有一个存活的邻居。根据新规则,就算 R3把Loopback0 口宣告进 Area0,当 R1 和 R3 之间链路故障时,R3 由于在 Area0 没有邻居了,所以自然就不再是 ABR,也就能够根据从非骨干区域接收的 Type 3LSA 来计算路由,不会导致路由丢失

  • 如果骨干区域被分割,会导致被分割出来的骨干区域部分各自无法学习到其他被分割的部分的路由,但是不影响非骨干区域路由的学习

  • 如果非骨干区域被分割,并不影响区域之间的路由学习。但本题中说到 R3 和R4 都对 AreaN 的路由做了聚合后再发布至 Area0。所以如果 AreaN 被分割的话,会导致 Area0 到达 AreaN 的聚合路由要么是指向 R3,要么是指向 R4,但无法区分到底 R3 可以到达哪些具体的目的网段,R4 可以到达哪些具体的目的网段

  • 图中的红线建议宣告进 Area0。这样可以让红线对 Area0 做链路备份,防止骨干区域被分割。AreáN被分割虽然也有问题,但R3 和 R4 之间在 AreaN 中本来就有两条链路可达,已经有备份了。所以宣告进 Area0 更为稳妥

OSPF 犬牙交错问题

  • 有时接入层的设备会以乱序的方式与汇聚层进行连接。OSPF的区域该如何划分?

    • 建议按照每台汇聚层设备与之相连的所有链路接口划分为一个区域

      • 如果所有的汇聚层和接入层设备都划为一个区域则会太大

      • 如果选择两台汇聚层设备加上所有同时与之相连的接入层设备划分为一个区域,则会导致区域太多,并没有规律。而且IP地址规划会非常复杂

    • 按照上述的区域划分方式,接入层设备的接口就按照对接的是哪台汇聚层设备来判断应该划分到哪个区域。那么接入层设备的 Loopback 口应该属于哪个区域?

      • Loopback 口属于任何一个区域都不能达到双上行互为备份的目的。所以这种情况下一般建议把Loopback口运行单独的路由协议或者配置静态路由再引入至 OSPF中

OSPF 能够和哪些机制联动

  • OSPF 与 BFD 联动。BFD 能够为 OSPF 邻居之间的链路提供毫秒级的快速检测功能。当邻居之间链路出现故障时,加快 OSPF 的收敛速度。OSPF 联动 BFD 有两种方式:

    • 使用 Control报文双向检测,邻居双方互相发送 Control 报文来检测状态需要建立 OSPF 邻居的两端设备均支持并配置 BFD

    • Echo 报文单跳检测,仅需在一端配置,对端邻居在收到 Echo 报文后会直接回传来进行状态检测

  • OSPF 与 GR(平滑重危)联动实现路由协议重启时业务不中断。正常情况下当一台路由器的 OSPF进程被重置后,该路由器会断开所有邻居并重新建立。在邻居断开并重新建立的过程中路由会丢失,导致数据转发中断。GR 可以解决这个问题。配置 GR 后,当路由器 OSPF 进程被重置,会通告邻居不要断开与自己的邻居关系,同时保持 FIB 表一直有效,然后当进程重置完成后,再迅速与对端建立起邻居关系。整个过程中流量不会中断

    • GR 是 Gracefu Restart 的简称,又被称为平滑重启,是一种用于保证当路由协议重启时数据正常转发并且不影响关键业务的技术。

    • OSPF 通过新增 Grace-LSA 来支持 GR 功能。这种 LSA 用于在开始 GR 和退出 GR 时向邻居通告 GR 的时间、原因以及接口地址等内容

  • 路由器在 GR 中的角色

    • Restarter:重启路由器。

    • Helper:协助重启路由器。

OSPF 的过载保护

  • 随着网络上路由数量不断增加,一些路由器由于系统资源有限,不能再承载如此多的路由信息,这种状态就被称为数据库超限(OSPF Database Overflow)

  • 为了解决数据库超限引发的问题,通过设置 LSDB 中 External LSA 的最大条目数,可以动态限制链路数据库的规模。

  • 通过设置路由器上非缺省外部路由数量的上限,来避免数据库超限。

  • OSPF 网络中所有路由器都必须配置相同的上限值。只要路由器上外部路由的数量达到该上限,路由器就进入 Overflow 状态,并同时启动超限状态定时器默认超时时间为5秒),路由器在定时器超过5秒后自动退出超限状态。

  • 进入 Overflow 状态时

    • 路由器删除所有自己产生的非缺省外部路由。
  • 处于Overflow状态中

    • 不产生非缺省外部路由

    • 丢弃新收到的非缺省外部路由,不回复确认报文

    • 当超限状态定时器超时,检测外部路由数量是否仍然超过上限,如果不是则退出超限状态,如果仍然超过上限,则重启超限状态定时器

  • 退出Overflow状态时

    • 删除超限状态定时器

    • 产生非缺省外部路由。

    • 接收新收到的非缺省外部路由,回复确认报文。

    • 准备下一次进入超限状态。

OSPF 和 BGP 的 Router-id 和 LDP 的LSR ID 是否可以设置一个不存在的地址?

  • OSPF 和 BGP 的 Router ID 可以设置一个不存在的地址,但LDP 的 LSR ID 必须设置一个存在的地方

OSPF 认证方式有哪些

  • 根据报文的种类,认证可以分为以下两类:

    • 区域认证:在 OSPF 区域视图下配置,对本区域的所有孩口下的报文进行认证

    • 接口认证:在接口视图下配置,对本接口的所有报文进行认证

  • 根据报文的认证方式,可以分为:

    • 空认证:不进行认证。

    • 简单认证:这是一种简单的加密方式,将配置的密码直接加入报文中,这种加密方式安全性不高。

    • MD5(Message Digest5)认证:通过将配置的密码进行 MD5 等加密算法之后再加入报文中,这样提高了密码的安全性,目前支持MD5/HMAC-MD5,为了保证更好的安全性,建议不要使用 MD5_算法,推荐使用 HMAC-SHA256 算法。

    • Keychain 认证:Keychain 由多个认证密钥组成,每个密钥包含一个ID 和密码,密钥存在生命期,通过密钥的生命期可以在 Keychain 中滚动选择不同的认证密钥。Keychain 可以滚动选择认证密钥来增强防攻击性。

    • Keychain为 OSPF提供了认证保护,Keychain 通过动态的更改认证算法和密钥,提高了 OSPF 的安全性。应用 Keychain 认证,除了可以对 OSPF 协议报文进行认证之外,还可以对TCP建立连接的过程进行认证。

    • HMAC-SHA256 认证:通过将配置的密码进行 HMAC-SHA256 算法加密之后再加入报文中,提高密码的安全性。

OSPF的区域规划有什么注意事项

  • 需要规划使用单区域还是多区域。

  • OSPF 的 LSDB 大小,以及拓扑的变化会影响运行 OSPF 设备的性能,如果 LSDB数据库太大,或者拓扑变化频繁,则需要进行区域划分。

  • 另外一个影响因素是路由控制的需要。OSPF 进行路由过滤时,如果没有 ABR,则需要在每一台路由器上都配置过滤,才能实现过滤的效果。所以,如果网络需要进行路由控制(过滤),则需要考虑进行区域划分。

  • 多区域时,需要考虑骨干区域的位置与 ABR。OSPF 规定,骨干区域负责区域之间的路由,非骨干区域之间的路由信息必须通过骨干区域来转发。

  • 非骨干区域的规划可以与网络中实际的行政,地域划分相吻合

  • OSPF的特殊区域(Stub、Totaly Stub、NSSA、Totaly NSSA)的作用是减少设备路由表的大小;所以,如果网络中设备性能不足时、将可以考虑使用特殊区域。通常将边缘位置(如接入层、最小行政区)的设备规划成特殊区域的设备;

  • 如果某设备需要进行路由引入,如互联网出口路由器,则需要规划成 NSSA Totally NSSA 区域,否则无法引入外部路由。

  • OSPFv3 的区域规划原则同 OSPFv2。

OSPF4级网络结构怎么规划

  • 基于非骨干区域必须对接到骨干区域的规则,OSPF最多只能支持三级网络结构。即省和市规划为骨干区域每个市级和其直属下辖的所有区县级规划为一个非骨干区域。但如果区县级下还有营业网点的话这部分的区域则无法对接到骨干区域。

  • 这种情况一般就建议区县级和营业网点的网络部分运行其他协议,或者另开一个 OSPF 进程,然后在两个协议间通过路由引入来解决互通问题

  • 也可以使用 BGP 协议,规划成多个 AS 来传递路由。

相关推荐
庸子7 小时前
路由器原理与配置技术详解
网络·智能路由器
Ctrl Z.1 天前
【计算机网络实践】(十二)大学校园网综合项目设计
网络·计算机网络·智能路由器
DC_BLOG1 天前
IS-IS中特殊字段——OL过载
运维·华为·智能路由器
一颗星星辰2 天前
路由交换网络专题 | 第二章 | RIP | OSPF | 路由聚合 | 路由过滤 | 静默接口
网络·智能路由器
Bidjc3 天前
关于群晖安装tailscale后无法直链的问题
智能路由器·群晖·tailscale
xinxinhenmeihao3 天前
如何给路由器配置代理IP?更改网络ip地址时出现错误怎么解决?
网络·tcp/ip·智能路由器·ip地址
落笔画忧愁e3 天前
BGP路由协议之属性1
智能路由器
落笔画忧愁e3 天前
BGP路由协议之属性2
网络·智能路由器
IT coke3 天前
镜像端口及观察端口的配置
运维·网络·智能路由器