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内部).
外部路由的FA地址
如果是正常的五类LSA, 则看是否存在次优路径:
- 如果存在, 这将FA地址设定为最优下一跳;
- 如果不存在,则默认0.0.0.0.
如果是七类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的处理规则
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时, 为什么会有下面的判断逻辑:
HCIP-ICT实战进阶02-OSPF特殊区域及其他特性的更多相关文章
- OSPF多区域的进阶强化版
OSPF多区域 1.OSPF多区域原理 2.末梢区域配置 1.生成OSPF多区域的的原因:改善网络的可扩展性,快速收敛. OSPF的三种通信量:a域内通信量(单个区域内的路由器之间交换数据包构成的通信 ...
- 【视频合集】极客时间 react实战进阶45讲 【更新中】
https://up2.v.sharedaka.com/video/ochvq0AVfpa71A24bmugS5EewhFM1553702519936.mp4 01 React出现的历史背景及特性介绍 ...
- DDD实战进阶第一波(二):开发一般业务的大健康行业直销系统(搭建支持DDD的轻量级框架一)
要实现软件设计.软件开发在一个统一的思想.统一的节奏下进行,就应该有一个轻量级的框架对开发过程与代码编写做一定的约束. 虽然DDD是一个软件开发的方法,而不是具体的技术或框架,但拥有一个轻量级的框架仍 ...
- DDD实战进阶第一波(五):开发一般业务的大健康行业直销系统(实现产品上下文领域层)
从这篇文章开始,我们根据前面的DDD理论与DDD框架的约束,正式进入直销系统案例的开发. 本篇文章主要讲产品上下文中的领域层的主要实现,先简单讲下业务方面的需求:产品SPU与产品SKU,产品SPU主要 ...
- DDD实战进阶第一波(六):开发一般业务的大健康行业直销系统(实现产品上下文仓储与应用服务层)
前一篇文章我们完成了产品上下文的领域层,我们已经有了关于产品方面的简单领域逻辑,我们接着来实现产品上下文关于仓储持久化与应用层的用例如何来协调 领域逻辑与仓储持久化. 首先大家需要明确的是,产品上下文 ...
- DDD实战进阶第一波(八):开发一般业务的大健康行业直销系统(业务逻辑条件判断最佳实践)
这篇文章其实是大健康行业直销系统的番外篇,主要给大家讲讲如何在领域逻辑中,有效的处理业务逻辑条件判断的最佳实践问题. 大家都知道,聚合根.实体和值对象这些领域对象都自身处理自己的业务逻辑.在业务处理过 ...
- DDD实战进阶第一波(九):开发一般业务的大健康行业直销系统(实现经销商上下文仓储与领域逻辑)
上篇文章主要讲述了经销商上下文的需求与POCO对象,这篇文章主要讲述该界限上下文的仓储与领域逻辑的实现. 关于界限上下文与EF Core数据访问上下文参考产品上下文相应的实现,这里不再累述. 因为在经 ...
- DDD实战进阶第一波(十):开发一般业务的大健康行业直销系统(实现经销商登录仓储与逻辑)
上一篇文章主要讲了经销商注册的仓储和领域逻辑的实现,我们先把应用服务协调完成经销商注册这部分暂停一下,后面文章统一讲. 这篇文章主要讲讲经销商登录的仓储和相关逻辑的实现. 在现代应用程序前后端分离的实 ...
- DDD实战进阶第一波(十一):开发一般业务的大健康行业直销系统(实现经销商代注册用例与登录令牌分发)
前两篇文章主要实现了经销商代注册的仓储与领域逻辑.经销商登录的仓储与相关逻辑,这篇文章主要讲述经销商代注册的用例与经销商登录的查询功能. 一.经销商代注册用例 在经销商代注册用例中,我们需要传递经销商 ...
- DDD实战进阶第一波(一):开发一般业务的大健康行业直销系统(概述)
本系列文章 DDD实战进阶第一波(一):开发一般业务的大健康行业直销系统(概述) DDD实战进阶第一波(二):开发一般业务的大健康行业直销系统(搭建支持DDD的轻量级框架一) 近年来,关于如何开发基于 ...
随机推荐
- linux 源码安装 xrdp
前言xrdp可以做两件事,第一件事就是可以使得linux支持RDP协议,使得linux桌面能够通过mstsc连接,第二件事就是RDP代理,我们能通过xrdp连接到其他人的RDP资源 前者,需要编译xr ...
- Git探究
Git Git是什么? Git是一个开源的分布式版本控制系统. 1.什么是版本控制? 字面意思,控制版本,存储.追踪目录和文件的修改历史.市面上有各式各样的版本控制工具,比较常用的SVN.Git等等. ...
- vue二级联动 编辑
第一步先写布局: 然后写我们的二级联动的方法 getOptionsA() { this.$axios .get('http://localhost:55629/api/GetClassifies?p ...
- Spring入门之使用 spring 的 IOC 解决程序耦合(Spring 基于 XML 的 IOC 细节[掌握])(03-02)
3.3Spring 基于 XML 的 IOC 细节[掌握] 3.3.1 spring 中工厂的类结构图 3.3.1.1 BeanFactory 和 ApplicationContext 的区别 Bea ...
- uni-app学习笔记之----传参、通讯
1.页面传参 父级页面传递参数到详情页: 详情页得到参数: 打印: 2.组件通信 (1)子组件---->父组件:$emit() (2)父组件---->子组件:props (3)兄弟组件: ...
- mybatis-plus 使用 sql 分页
#分页工具类 /** * 分页参数处理 */public class PageUtil { /** * 分页返回数据封装 * * @param page * @return Map<String ...
- 接口测试工具POSTMAN的使用
接口测试工具postman python ------------------------------------ 作为后端,写好了接口,我们自己要测试通过,再给别人用 --------------- ...
- 新年快乐!体验Windows7黄金版,祝你2023财源广进!
新年快乐!体验Windows7黄金版,祝你2023财源广进! 首先,开机画面表示出它的土豪,并说明,它并不来自Microsoft. 然后: 它是2016年出现的. 改成64位的. 然后许可: 自定义: ...
- Windows下使用Fortran读取HDF5文件
需要用Fortran读取HDF5格式的GPM IMERG卫星降水文件,在已经安装HDF5库(参见VS2019+ Intel Fortran (oneAPI)+HDF5库的安装+测试 - chinago ...
- 手机安装python环境
一.安装Termux环境 1.下载Termux Qpython 安装以后玩爬虫各种报错,也就不纠结了,直接弄Termux 虚拟环境 下载链接:https://wiki.termux.com/wiki/ ...