HCIP-ICT实战进阶02-OSPF特殊区域及其他特性

HCIP-ICT实战进阶02-OSPF特殊区域及其他特性

1 ospf区域

如果ospf只有单个区域, 会有什么问题?

  1. 如果只有当个区域, 该区域设备数量如果比较多, 对应一类LSA数量可能较少, 但一类LSA信息量会很大;
  2. 二类LSA相对会比较少, 信息量也不会非常大, 但是一类LSA信息量非常大的情况下, 会导致ospf设备的LSDB变得非常庞大, 导致ospf计算SPF会比较慢;

为了解决单区域问题, 所以提出多区域, 通过区域划分, 将一个区域内的路由器数量减少, 设备压力也会变小. 但是多区域里面, 会导致三类LSA数量急剧增加(一个三类LSA携带一个路由信息)

思考: 100台设备, 划分5个区域, 每区域20台, 每区域40条路由信息, 问每个区域有多少条三类LSA?

三类LSA会在自己所在区域之外进行传播, 每条三类LSA携带一条路由信息, 所以答案是40*(5-1)=160.

如果不划分区域, 100台设备只会有100条一类LSA和少量二类LSA, 划分区域后LSA数量不减反增?

ospf在区域内部是通过一类和二类LSA进行SPF计算, 但是区域间是通过三类LSA进行距离矢量计算, 由于一类LSA携带大量LSA信息, 而三类携带LSA信息量(路由、开销、ABR信息)更少, 信息量的减少能对设备在计算SPF时的压力.

1.1 ospf区域类型

  1. 传输区域(Transit Area): 除了本区域内部流量之外, 还需要帮助转发其他网络流量(Area0);
  2. 末端区域(Stub Area): 只需要转发自己区域产生的流量.

总而言之: 如果流量是其他区域产生的, 流量进入当前区域且不在流出到外部网络或者其它区域, 那么这个区域就是末端区域.

多区域ospf是用增加LSA数量换取减少LSA信息量, 那么, 有没有办法让我们减少LSA数量和减少LSA信息量全都要呢?

1.2 特殊区域

一般情况下, 一个区域如果是传输区域, 不建议配置特殊区域属性, 大部分特殊区域都是在末端区域设置.

1.2.1 Stub区域

image-20221028110243948

  1. Stub不会产生和传递四类、五类LSA(Stub不会存在ASBR设备), Stub区域内的LSDB和路由表规模都会大大减小;
  2. Stub区域的ABR设备会自动产生一个默认路由, 通过三类LSA进行Stub区域内部泛洪, 用于保证Stub区域也可以访问其他区域的外部路由(stub区域位于末梢区域, 没有外部路由, 没有ASBR);
  3. 如果要配置Stub区域, 该区域内所有设备都必须配置stub属性, 因为ospf邻居建立过程会检查特殊区域属性, 也因为Stub不能处理四类、五类LSA, 只有一部分配置了stub属性会导致没有配置的stub传递五类LSA;
  4. 骨干区域不能配置Stub;
  5. 虚连接不能穿过Stub区域, 因为虚连接部署会导致转发三类LSA的区域成为传输区域, 强行配置会导致虚链路失效.

​ 在上一篇博客有提到, 在ospf的options字段中有N/P、E两个比特位.

N=0, E=0, 以上表示的就是当且设备属于特殊区域Stub设备, LSA会进行检查是否一致;

​ 虽然stub区域禁止了四类、五类LSA, 但三类LSA才是LSA数量的大头, 因此就在stub的基础上有了 Totally Stub.

stub配置

ospf 1
	area 0
		stub

1.2.2 Totally Stub区域

image-20221028165139083

  1. 在stub的基础上, 增加了拒绝三类传递LSA的能力(但Totally Stub内还会存在三类LSA).
  2. 但是为了实现网络能够连通, totally stub区域的ABR设备会产生一个默认路由.
  3. stub和totally stub在报文里面的options标识是一样的, 使用配置stub和配置totally stub设备可以互相识别. 因此, 如果一个区域需要设置totally stub区域, 可以在ABR设备上开启totally stub, 其他设备开启stub就行.

参考理解

totally stub配置

ospf 1
	area 0
		stub no-summary

totally stub只在ABR设备上配置, 区域内其他设备只需要配置stub属性

1.2.3 NSSA区域

为什么有了Stub区域还需要NSSA区域?

如果stub区域未来进行了网络扩展, 新增了外部设备需要引入路由, 由于stub特性, 新增外部设备无法进行路由引入. 所以要考虑新增一个区域, 进行外部路由引入.

image-20221101211723430

  1. NSSA区域是在stub区域的基础之上允许了本区域的外部路由引入. 此时为了和其他区域的五类外部路由进行区分, 所以新增了一个七类LSA(NSSA LSA), NASS区域通过七类LSA传递本区域引入的外部路由;

  2. NASS区域通过七类LSA传递默认路由(Stub里面是通过三类传递默认路由);

  3. ospf中的options字段: N=1,E=0.(非特殊区域: N=0, E=1);

  4. 七类LSA需要转换五类LSA. 当NSSA引入外部路由时, 该外部路由通过七类LSA传递到NSSA区域的边界ABR设备, ABR设备将七类LSA转换为五类LSA再传递给其他区域. 当NSSA区域引入外部路由时, 为了实现七类转五类LSA, NSSA区域会给options的N位置为1(表示需要进行七类转五类);

    • 如果是ABR设备产生的七类默认LSA, N置为0, 其他设备引入的外部路由, 则七类LSA的options置为1;
    • 如果条路由信息可以通过三类LSA进行传递, 则七类转五类的时候, 该路由信息不进行转换, 其他P置为1、同时无法进行三类LSA转换成路由信息的,
    • 七类转五类时, 不会产生四类LSA, 直接将五类LSA传递, 但是后续转发五类LSA时需要产生四类LSA.
    • 传递的五类LSA的信息, 主要是FA地址被继续保留, FA的IP地址可以根据其他LSA计算出路径.
    • 进行七转五的ABR设备,也是一台ASBR设备.
  5. 其他未提到的属性同stub(拒绝四类、五类LSA, 但是允许三类LSA).

配置NSSA:

ospf 1
	area 0
		nssa

1.2.4 Totally NSSA区域

在NSSA + Totally stub的基础上拒绝了三类LSA

image-20221101211709808

  1. 在NSSA+Totally Stub的基础之上, 做了一点点小修改:

    • 延续了Totally Stub拒绝传递三类、五类LSA;
    • 保留了NSSA引入外部路由的七类LSA.
  2. 在Totally NSSA里面, ABR产生的默认路由会有两条:

    1. 一条是三类LSA传递的;
    2. 一条是七类LSA传递的.

    同一个默认路由信息, 优先选择从三类LSA学习到的.

配置totally NSSA:

ospf 1
	area 0
		nssa no-summary

Totally NSSA只在ABR设备上配置, 区域内其他设备只需要配置NSSA属性(同Totally Stub)

注意事项: 修改ospf区域属性时, 会出现短暂的邻居断开现象.

1.3 七类LSA

七类LSA只会在NSSA区域里面出现, 由ABR设备产生, 负责在NSSA区域内传递默认路由和引入的外部路由.

  1. link state ID: 外部路由的ip前缀信息;
  2. network mask: 外部路由ip的掩码信息;
  3. E-type: 开销值类型, 同五类LSA;
  4. FA地址: 在五类里面默认为0.0.0.0, 但在七类LSA里面必须是ASBR的某一个IP地址(ospf外部或者ospf内部).

外部路由的FA地址

  1. 如果是正常的五类LSA, 则看是否存在次优路径:

    • 如果存在, 这将FA地址设定为最优下一跳;
    • 如果不存在,则默认0.0.0.0.
  2. 如果是七类LSA, 则需要先判断有无次优路由:

    • 如果存在, 这将FA地址设定为最优下一跳;
    • 如果不存在, 则查看ASBR设备连接外部路由的方向是否开启ospf:
      • 连接外部路由方向开启了ospf: FA地址为ASBR设备内部接口地址;
      • 连接外部路由方向未开启ospf: FA地址为ASBR设备外部接口地址.

2 LSA总结与回顾

LSA类型 名称 描述
1 Router LSA(路由器LSA) 每个设备都会产生, 描述了设备的链路状态和开销, 该LSA只能在接口所在区域内泛洪.
2 Network LSA(网络LSA) 由DR产生, 描述该DR所接入的MA网络中所有与之形成邻接关系的路由器以及DR自己, 该LSA同样只能在接口所属区域内泛洪.
3 Network Summary LSA(网络汇总LSA) 由ABR产生, 描述区域内某个网段的路由, 该类LSA主要用于区域间的路由的传递.
4 ASBR Summary LSA(ASBR汇总LSA) 由ABR产生, 描述区域内某个网段的路由, 通告给除ASBR所在区域的其他相关区域.
5 AS External LSA(AS外部LSA) 由ASBR产生, 用于描述到达OSPF区域外的路由.
7 NSSA LSA(非完全末梢区域LSA) 由ASBR产生, 用于描述到达OSPF区域外的路由, 只能在NSSA区域内泛洪, 且需要转换为AS External LSA才能进入Area0.

2.1 LSA更新-路由器对LSA的处理规则

image-20221022143606123

ospf性质确定了同一个区域内所有设备的LSDB都是相同的, 比如:

A设备产生了一个描述192.168.1.0/24的LSA, 在同一个区域内部, C设备也会有这个LSA信息, 后面因为各种原因, A设备需要对LSA更新, 于是发送了一个新的LSA给C设备, 此时C设备本地已有一个LSA, 又收到了一个新的LSA(这两个LSA内容相同), C设备需要进行比较两个LSA的新旧:

  1. 先比较两个LSA里的Seq序列号: 序列号取值范围: 0x8000000-0x7FFFFFF, 一般从数值000001开始(忽略前面的0x7/8), 序列号越大的越新, 保留大的删除小的.

  2. 如果序列号相同, 则比较LSA里面的checksum校验和: 校验和计算的时候, 不会将Age字段进行校验, 因为age在LSA里面随着时间推移会一直变大, 直到3600, 每5min就散一次校验和, 校验和数值越大越新.

  3. 如果校验和相同, 则比较age时间: 如果age时间设置为3600s(一般用于LSA删除), 则表示该LSA就是最新的, 如果不是3600s, 则需要将两个LSA的age时间对比:

    • 如果两者age差值超过15min(900s), age越小越新;

    • 如果两者age差值未超过15min(900s), age越大越新.

  4. 如果上述值都相同, 则认为两个LSA相同, 不需要更新.

注: 始发路由器发送LSA的时候, 初始Age设置为0, 之后每经过一台设备, age+1, 每过1s, age+1.

2.2 LSA删除(撤销)

一般路由撤销分为两种方式:

  1. 通过序列号seq+1并删除link信息的方式: 通常是一类二类LSA撤销方式;
  2. 通过age时间设置为3600s做更新, 收到age为3600s的设备会将其中的LSA信息在本地LSDB删除, 通常为三类、四类、五类LSA撤销方式.

3 路由汇总

特殊区域的使用减小了设备LSDB规模, 从而减少设备性能浪费, 且一定程度上也缩小了网络故障的影响范围, 但是特殊区域会导致大量路由属性丢失.

如果不想设置特殊区域,又需要LSA的信息减少, 可以采用配置路由汇总的方式.

路由汇总的好处: 如果被汇总的任意一个或几个(只要不是全部)小路由出现故障, 都不会影响最后汇总的路由, 汇总过的路由除非所以的小路由都丢失, 才会导致汇总路由需要更新(删除), 否则汇总路由不会频繁变动.

由于OSPF传递的是链路状态信息, 而路由汇总针对的是路由信息, 所以需要区域内的一类和二类需要经过ABR的SPF计算得出路由信息后才能进行路由汇总, 也就是OSPF无法在区域内进行路由汇总, 只有区域间路由汇总和外部路由汇总.

路由汇总: 将具有相同路由前缀的一类路由, 通过修改掩码的方式书写成一条路由, 如: 192.168.1.0/24, 192.168.2.0/24, 192.168.3.0/24汇总为192.168.0.0/22.

路由汇总不会变动自身路由表的数据, 只会将路由汇总信息发送给其他设备, 改变其他设备的路由表.

3.1 区域间汇总

ABR设备在区域间生成三类LSA的过程:

  1. 收到一类二类LSA;
  2. 计算SPF算法生成路由信息;
  3. 将路由信息生成三类LSA.

路由汇总发生在ABR收到三类LSA计算出路由信息后, 重新生成生成三类LSA之间.

在ABR上配置:

ospf 1
	area 1
		abr-summary ip-address network-mask

非ABR无法进行三类LSA汇总

3.2 外部路由汇总

因为外部路由是通过五类LSA传递的

五类LSA的计算过程;

  1. 先获取外部路由信息;
  2. 将路由信息进行汇总(如果需要的话);
  3. 将路由信息计算成五类LSA进行传递.

外部路由汇总配置:

ospf 1
	asbr-summary ip-address network-mask

汇总路由也可能导致环路出现

在ospf场景下的默认路由:

  1. stub区域设置之后, 会导致五类LSA丢失, 于是会通过ABR自动生成默认路由; Totally Stub同理, 会导致三类和五类LSA丢失, 也是ABR自动生成, 该默认路由是三类LSA传递的;

  2. NSSA区域设置之后, 也会导致五类LSA丢失, ABR自动产生默认路由, 该默认路由是七类LSA传递; T NSSA会导致三类和五类LSA丢失, 也是ABR自动生成, 但是该默认路由会有两个LSA(三类和七类), 最后选择三类作为默认路由.

  3. 企业网络内部启用OSPF实现内网互联, 此时出口路由器会手动配置一个默认路由指向互联网(ISP).

3.2.1 ospf下放默认路由(缺省路由)

OSPF实际组网应用中区域边界的路由设备通常会有多个, 从而达到冗余备份和负载分担, 为了减少路由表的容量, 可以配置缺省路由.

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

  1. 由区域边界路由器(ABR)发布三类LSA, 用来指导区域内路由器进行区域之间的报文转发.
  2. 由自治系统边界路由器(ASBR)发布五类和七类LSA, 用来指导OSPF区域内路由器进行域外报文的转发.

配置命令:

defalut-route-advertise

defalut-route-advertise [always] | [cost cost | type type]

以上两个命令差别:

第一个需要设备本身已经有默认路由, 才可以下放默认路由;

第二个命令不需要设备本身有默认路由, 可以直接下放默认路由.

ospf下放默认路由, 是指给除了自己以外的其他OSPF设备发送一个LSA, 用于生成默认路由, 采用五类LSA进行传递.

如果设备已经通过静态方式写了默认路由, 则只能通过default-route-advertise, 不能通过import-route static引入.

配置了下放默认路由的设备就成为一台ASBR设备.

3.2.2 路由汇总的环路问题

汇总和下放默认路由在一起使用的时候, 非常容易出现环路问题.

A--B--C--D--E

其中A--B--C是Area0, C--D--E是Area1

A设备上下放默认路由, E设备有192.168.[1/2/3].0/24三个环回口, 三个路由信息到达ABR设备C时, C进行路由汇总(192.168.0.0/22)发送给Area0.

B设备ping 192.168.0.1, 根据路由汇总, 发现下一跳是C, C收到数据后查询路由表, 由于C进行路由汇总, 路由表内没有汇总后的路由信息, 所以将数据通过默认路由转发给B, 从而形成环路.

另外一种情况, 如果E设备的三个回环口随机出现问题但没全部出现问题, C设备会知道哪些路由出了问题, 但是不改变路由汇总, 此时B设备ping已经出现问题的路由时, 也会出现B=C的环路.

4 OSPF区域其他特性

4.1 等价路由

当路由白中存在到达同一目的的地址, 且同一路由协议发现的多条路由时, 若这几条路由的开销值也相同, 那么这些路由就是等价路由, 可以实现负载分担.

设备按照负载分担的方式从多条等价路由发送报文到同一目的地址.

配置进行负载分担的等价路由最大数量:

[Huawei-ospf-1]maximum load-balancing number

等价路由举例

通过配置, 要求R1可以通过R1-R3和R1-R2-R3两条路径访问R3的回环口地址.

image-20221106094726847

4.2 Silent-Interface(静默接口)

image-20221106094822735

ospf中, 某些接口需要通过链路信息给其他ospf设备, 但是该接口与对端设备之间不需要邻居关系, 也不希望对方知道ospf的信息, 此时可以配置静默接口.

静默接口: 该接口不会向外发送Hello报文, 也不会接收Hello报文.

因为没有处理Hello报文, 就不会建立邻接关系, 就不会有OSPF的其他报文.

一般OSPF静默接口是在连接终端的接口上配置(比如连接PC和服务器的接口), 该接口配置为静默接口之后, ospf依旧会将该接口的链路传递给其他ospf设备(可以理解为能发布本接口的直连路由).

5 一些问题

ospf在更新LSA时, 为什么会有下面的判断逻辑:

image-20221104110859571

posted @ 2022-11-06 15:12  Qurare  阅读(148)  评论(0编辑  收藏  举报