HCIP-ICT实战进阶02-OSPF特殊区域及其他特性
HCIP-ICT实战进阶02-OSPF特殊区域及其他特性
1 ospf区域
如果ospf只有单个区域, 会有什么问题?
- 如果只有当个区域, 该区域设备数量如果比较多, 对应一类LSA数量可能较少, 但一类LSA信息量会很大;
- 二类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区域类型
- 传输区域(Transit Area): 除了本区域内部流量之外, 还需要帮助转发其他网络流量(Area0);
- 末端区域(Stub Area): 只需要转发自己区域产生的流量.
总而言之: 如果流量是其他区域产生的, 流量进入当前区域且不在流出到外部网络或者其它区域, 那么这个区域就是末端区域.
多区域ospf是用增加LSA数量换取减少LSA信息量, 那么, 有没有办法让我们减少LSA数量和减少LSA信息量全都要呢?
1.2 特殊区域
一般情况下, 一个区域如果是传输区域, 不建议配置特殊区域属性, 大部分特殊区域都是在末端区域设置.
1.2.1 Stub区域
- Stub不会产生和传递四类、五类LSA(Stub不会存在ASBR设备), Stub区域内的LSDB和路由表规模都会大大减小;
- Stub区域的ABR设备会自动产生一个默认路由, 通过三类LSA进行Stub区域内部泛洪, 用于保证Stub区域也可以访问其他区域的外部路由(stub区域位于末梢区域, 没有外部路由, 没有ASBR);
- 如果要配置Stub区域, 该区域内所有设备都必须配置stub属性, 因为ospf邻居建立过程会检查特殊区域属性, 也因为Stub不能处理四类、五类LSA, 只有一部分配置了stub属性会导致没有配置的stub传递五类LSA;
- 骨干区域不能配置Stub;
- 虚连接不能穿过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区域
- 在stub的基础上, 增加了拒绝三类传递LSA的能力(但Totally Stub内还会存在三类LSA).
- 但是为了实现网络能够连通, totally stub区域的ABR设备会产生一个默认路由.
- 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特性, 新增外部设备无法进行路由引入. 所以要考虑新增一个区域, 进行外部路由引入.
-
NSSA区域是在stub区域的基础之上允许了本区域的外部路由引入. 此时为了和其他区域的五类外部路由进行区分, 所以新增了一个七类LSA(NSSA LSA), NASS区域通过七类LSA传递本区域引入的外部路由;
-
NASS区域通过七类LSA传递默认路由(Stub里面是通过三类传递默认路由);
-
ospf中的options字段: N=1,E=0.(非特殊区域: N=0, E=1);
-
七类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设备.
-
其他未提到的属性同stub(拒绝四类、五类LSA, 但是允许三类LSA).
配置NSSA:
ospf 1
area 0
nssa
1.2.4 Totally NSSA区域
在NSSA + Totally stub的基础上拒绝了三类LSA
-
在NSSA+Totally Stub的基础之上, 做了一点点小修改:
- 延续了Totally Stub拒绝传递三类、五类LSA;
- 保留了NSSA引入外部路由的七类LSA.
-
在Totally NSSA里面, ABR产生的默认路由会有两条:
- 一条是三类LSA传递的;
- 一条是七类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区域内传递默认路由和引入的外部路由.
- link state ID: 外部路由的ip前缀信息;
- network mask: 外部路由ip的掩码信息;
- E-type: 开销值类型, 同五类LSA;
- FA地址: 在五类里面默认为0.0.0.0, 但在七类LSA里面必须是ASBR的某一个IP地址(ospf外部或者ospf内部).
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的处理规则
ospf性质确定了同一个区域内所有设备的LSDB都是相同的, 比如:
A设备产生了一个描述192.168.1.0/24的LSA, 在同一个区域内部, C设备也会有这个LSA信息, 后面因为各种原因, A设备需要对LSA更新, 于是发送了一个新的LSA给C设备, 此时C设备本地已有一个LSA, 又收到了一个新的LSA(这两个LSA内容相同), C设备需要进行比较两个LSA的新旧:
-
先比较两个LSA里的Seq序列号: 序列号取值范围: 0x8000000-0x7FFFFFF, 一般从数值000001开始(忽略前面的0x7/8), 序列号越大的越新, 保留大的删除小的.
-
如果序列号相同, 则比较LSA里面的checksum校验和: 校验和计算的时候, 不会将Age字段进行校验, 因为age在LSA里面随着时间推移会一直变大, 直到3600, 每5min就散一次校验和, 校验和数值越大越新.
-
如果校验和相同, 则比较age时间: 如果age时间设置为3600s(一般用于LSA删除), 则表示该LSA就是最新的, 如果不是3600s, 则需要将两个LSA的age时间对比:
-
如果两者age差值超过15min(900s), age越小越新;
-
如果两者age差值未超过15min(900s), age越大越新.
-
-
如果上述值都相同, 则认为两个LSA相同, 不需要更新.
注: 始发路由器发送LSA的时候, 初始Age设置为0, 之后每经过一台设备, age+1, 每过1s, age+1.
2.2 LSA删除(撤销)
一般路由撤销分为两种方式:
- 通过序列号seq+1并删除link信息的方式: 通常是一类二类LSA撤销方式;
- 通过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的过程:
- 收到一类二类LSA;
- 计算SPF算法生成路由信息;
- 将路由信息生成三类LSA.
路由汇总发生在ABR收到三类LSA计算出路由信息后, 重新生成生成三类LSA之间.
在ABR上配置:
ospf 1
area 1
abr-summary ip-address network-mask
非ABR无法进行三类LSA汇总
3.2 外部路由汇总
因为外部路由是通过五类LSA传递的
五类LSA的计算过程;
- 先获取外部路由信息;
- 将路由信息进行汇总(如果需要的话);
- 将路由信息计算成五类LSA进行传递.
外部路由汇总配置:
ospf 1
asbr-summary ip-address network-mask
汇总路由也可能导致环路出现
在ospf场景下的默认路由:
-
stub区域设置之后, 会导致五类LSA丢失, 于是会通过ABR自动生成默认路由; Totally Stub同理, 会导致三类和五类LSA丢失, 也是ABR自动生成, 该默认路由是三类LSA传递的;
-
NSSA区域设置之后, 也会导致五类LSA丢失, ABR自动产生默认路由, 该默认路由是七类LSA传递; T NSSA会导致三类和五类LSA丢失, 也是ABR自动生成, 但是该默认路由会有两个LSA(三类和七类), 最后选择三类作为默认路由.
-
企业网络内部启用OSPF实现内网互联, 此时出口路由器会手动配置一个默认路由指向互联网(ISP).
3.2.1 ospf下放默认路由(缺省路由)
OSPF实际组网应用中区域边界的路由设备通常会有多个, 从而达到冗余备份和负载分担, 为了减少路由表的容量, 可以配置缺省路由.
OSPF的缺省路由通常应用在下面两种情况:
- 由区域边界路由器(ABR)发布三类LSA, 用来指导区域内路由器进行区域之间的报文转发.
- 由自治系统边界路由器(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的回环口地址.
4.2 Silent-Interface(静默接口)
ospf中, 某些接口需要通过链路信息给其他ospf设备, 但是该接口与对端设备之间不需要邻居关系, 也不希望对方知道ospf的信息, 此时可以配置静默接口.
静默接口: 该接口不会向外发送Hello报文, 也不会接收Hello报文.
因为没有处理Hello报文, 就不会建立邻接关系, 就不会有OSPF的其他报文.
一般OSPF静默接口是在连接终端的接口上配置(比如连接PC和服务器的接口), 该接口配置为静默接口之后, ospf依旧会将该接口的链路传递给其他ospf设备(可以理解为能发布本接口的直连路由).
5 一些问题
ospf在更新LSA时, 为什么会有下面的判断逻辑:
本文来自博客园,作者:Qurare,严禁转载至CSDN平台, 其他转载请注明原文链接:https://www.cnblogs.com/konjac-wjh/p/16861946.html