HCIP-ICT实战进阶03-OSPF高级特性
HCIP-ICT实战进阶03-OSPF高级特性
1 ospf的快速收敛
ospf快速收敛是为了提高路由的手来你熟读而做的扩展特性, 包括PRC(Partial Route Calculation, 部分路由计算)和智能定时器.
同时, ospf支持故障恢复快速收敛, 例如通过OSPF IP FRR(Fast reroute, 快速重路由), 实现备份链路的快速切换, 也可以与BFD联动实现对故障的快速感知.
ospf的快速收敛有两种算法: I-SPF和PRC.
1.1 I-SPF算法
增量最短路径优先算法, 只针对受到影响的节点进行路由计算.(针对拓扑变动)
ospf第一次启动的时候, 会进行全部节点的I-SPF计算.
之后, 如果网络拓扑发生了变动, 其他设备便不再进行I-SPF计算, 只需要针对受到影响的节点进行I-SPF计算即可.
作用: 避免每次网络拓扑变动都需要全部重新进行SPF算法.
1.2 PRC
部分路由计算, 只会对发生变化的路由进行重新计算(针对路由变动), 根据I-SPF计算出的拓扑结构进行路由更新.
PRC不计算节点路径, 而是根据SPF算法计算出来的最短路径树来更新路由.
以上图为例子:
- R1原本通往R5的路径为R1-R3-R5;
- R5将环回口Loopback0开启ospf, ospf新增直连网段Loopback0;
- R5泛洪新增路由的LSA;
- R1收到该LSA后会创建新的路由, 继承原有节点R5的路径及其下一跳, 即最单路径树不变, 只在R5上新增叶子节点, 不需要进行全网路由计算;
- R1通往R5上L0的路径为R1-R3-R5-L0.
在华为设备上, OSPF的PRC功能默认开启.
OSPF中存在的问题
上述的两种算法都是在理想情况下对于网络变动的应对方式, 但是OSPF并没有采用这种理想的方法, 笨比OSPF面对路由变化和拓扑变化有自己的想法:
- 区域内: 不管是路由变化还是拓扑变化, 整个区域内的设备都需要进行SPF计算;
- 区域间: 区域间的更新触发的则是PRC算法;
- 外部路由: 外部路由更新触发PRC算法.
规律: 一类二类LSA使用SPF算法, 三类四类五类LSA使用PRC算法.
1.3 智能定时器
智能定时器: ospf智能定时器分别对路由计算、LSA产生、LSA接收进行控制加速网络收敛, 既可以保证对少量外部突发事件的快速响应, 也可以减少CPU资源的占用.
- 频繁进行路由计算的网络: ospf智能定时器可以根据用户的配置和指数衰减, 动态调整两次路由计算之间的间隔, 减少路由计算次数, 避免设备资源损耗过度;
- 不稳定的网络: 拓扑频繁变化会产生或接收LSA信息, OSPF智能定时器可以动态调整时间间隔, 让设备在一段时间内不产生LSA或者对收到的LSA不处理, 减少整个网络中拓扑频繁变化对LSA产生的影响
简单概括为两个功能: 控制路由计算、控制LSA的生成和接收.
智能定时器工作方式:
初始更新LSA的时间间隔由初始时间间隔指定;
第N(N>=2)次, LSA更新的时间间隔:
基数时间间隔 * n^(n-2);
如果间隔的时间到达最长时间间隔, 则保持三次, 更新三次都是依照最长时间间隔来更新, 三次最长更新后回到初始更新.
通过以上两种方法, 可以减少网络中OSPF的无效计算.
具体的OSPF时间间隔:
更新LSA的时间间隔, 默认是5s一次.
- 智能定时器的时间参数:
- 初始时间间隔: 500毫秒;
- 最长时间间隔: 默认是5000毫秒;
- 基数时间间隔: 1000毫秒.
- 智能定时器的时间参数:
接收LSA时间间隔
默认接收LSA的时间间隔是1秒一次.
智能定时器的时间参数
初始: 500ms
最大: 5000ms;
基数: 1000ms.
计算SPF时间间隔
- 智能定时器的时间参数
- 初始: 500ms
- 最大: 10000ms;
- 基数: 1000ms.
- 智能定时器的时间参数
1.3.1 配置命令
设置OSPF LSA更新的时间间隔
[Huawei-ospf-1]lsa-orginate-interval {0|{intelligen-timer max-interval start-interval hold-inteval|orther-type interval}*}
缺省情况下, 使能智能定时器intelligent-timer, 更新最长时间间隔max-interval为5000ms、初始start-interval为500ms、基数时间间隔hold-interval为1000ms.
设置OSPF LSA更新的时间间隔
[Huawei-ospf-1]lsa-arrival-interval {interval|intelligen-timer max-interval start-interval hold-inteval}
设置OSPF LSA更新的时间间隔
[Huawei-ospf-1]spf-schedule-interval {interval|intelligen-timer max-interval start-interval hold-inteval|millisecond interval2}
一般来说不用我们去配置智能定时器, 这里更倾向于了解.
1.4 OSPF收敛优先级
网络中的路由信息, 可以设定收敛优先级, 在网发生故障是, 可以减少关键业务中断的时间, 对关键业务的路由信息进行最快速的收敛.
路由优先级从高到低分为:
- critical
- high
- medium
- low
1.5 OSPF IP FRR
OSPF IP FRR(Fast reroute, 快速重路由)是动态IP FRR, 利用LFA(Loop-Free-Alternates)算法计算出备份路径, 保存在转发表中, 以备在故障时将流量快速切换到备份链路上, 保证流量不中断, 从而即那个故障恢复时间降低到50ms以内.
在网络正常使用的情况下, 提前计算好备份路由, 当主路由出现故障的时候, 立刻通过FRR技术切换到备份路径进行数据转发.
LFA计算备份链路的基本思路是: 以可提供备份链路的邻居为根节点, 利用SPF算法计算出到目的节点的最短距离, 然后安装不等式计算出开销最小且无环的备份链路.
1.5.1 OSPF IP FRR组网应用
OSPF IP FRR的流量保护分为链路保护和节点链路双保护.
1.5.2 配置命令
使能OSPF IP FRR:
[Huawei-ospf-1]frr
[Huawei-ospf-1-frr]loop-free-alternate
使能OSPF IP FRR功能, 利用LFA算法计算备份下一跳和备份出接口.
(可选)阻止OSPF接口的FRR能力:
[Huawei-g0/0/0]ospf frr block
在业务重要接口上禁止OSPF IP FRR功能, 从而使此接口相连的对端设备不成为备份链路上的节点设备, 避免使能OSPF IP FRR功能后对节点设备上运行的重要业务造成影响.
1.5.3 配置举例
查看配置结果:
1.6 OSPF和BFD联动
BFD: 双向转发检测, 该技术是用于快速检测网络故障使用的, 比如OSPF邻居故障,物理链路故障。检测到故障之后,立刻上报故障信息告知给某个协议(协议与BFD联动), 协议就可以更快速进行转发路径切换.
OSPF与BFD联动就是将BFD和OSPF关联起来,一旦与邻居之间的链路出现故障,BFD对链路故障的快速感应能够加快OSPF对于网络拓扑变化的响应。
BFD几乎可以跟任何其他协议联动.
OSPF与BFD联动工作原理:
- 三台设备(R1、R2、R3)间建立OSPF邻居关系。邻居状态到达Full时通知BFD建立BFD会话。
- R1到R2间的链路出现故障后,BFD首先感知到并通知R1。R1处理BFD会话Down事件,重新进行路由计算,新的路径为: R1-R3-R2。
还是拿上面的简单拓扑举例:
没有BFD之前, S1-R2这条链路如果断开, R2能立刻感知到故障, 但R1需要等待Hello报文死亡(40s)之后才能感知到故障, 这40s内去往R2的数据全部丢失.
配置了BFD后, R2能在毫秒级的时间内告知R1出现了故障, 需要进行ospf收敛并切换链路.]
配置命令
配置OSPF的BFD
[Huawei-ospf-1]bfd all-ionterfaces enable
在OSPF下使能BFD
[Huawei-ospf-1]bfd all-interfaces {min-rx-interval receive-interval | min-tx-interval transmit-interval|detect-multiplier multiplier-value | frr-binding}
配置BFD会话的参数值.
配置指定接口的BFD特性
[Huawei-g0/0/0]ospf bfd enable
[Huawei-g0/0/0]ospf bfd {min-rx-interval receive-interval | min-tx-interval transmit-interval|detect-multiplier multiplier-value | frr-binding}
在使能ospf的特定接口下配置BFD会话的参数值.
2 ospf路由控制
ospf的路由控制包括:
- 对发送的LSA进行过滤;
- 对ABR上的三类LSA进行过滤;
- 设置LSDB中五类LSA的最大数量;
- 引入外部路由;
- 调整OSPF接口开销.
2.1 对发送的LSA进行过滤
基础命令
interface g0/0/0
ospf filter-lsa-out {all | summary | ase | nssa}
对三类/五类/七类LSA进行过滤(一般比较少用), 该工具还能结合ACL对具体LSA进行筛选.
配置该命令之后, 如果LSA已经发送出去了, 需要等待3600s(LSA老化时间)才能删除掉.
2.2 对三类LSA进行过滤
基础命令(只能ABR上配置)
ospf 1
area 0
filter acl-id {export | import}
export: 表示当前区域一类和二类转换的三类需要进行筛选才能向其他区域发送;
import: 表示收到其他区域的三类LSA需要进行筛选才能进行计算和转发.
ABR不管是自己的一类二类LSA产生的三类LSA还是其他区域传递来的三类LSA, 都是先计算路由生成三类LSA再将路由进行筛选.
export只能针对ASBR使用
2.3 Database overflow(数据库超限)
针对五类LSA(非默认路由)
Dataoverflow可以设置路由器非缺省外部路由数量的上限值, 防止ospf设备的数据库超出限制.
配置命令
ospf 1
lsdb-overflow-limit
取值范围1-1000000.
如果需要配置数据库超限, 则一个AS内部最好一致.
2.3.1 overflow的工作过程
设备开启ospf协议之后, 收到外部缺省外部路由LSA超出了, 则会启动overflow;
进入overflow后, 设备启动overflow的定时器(默认时间5s), 设备删除所有自己产生的非缺省外部LSA;
在overflow状态中, 设备不在产生非缺省外部LSA, 丢弃新收到的非缺省外部LSA并且不回复LSAck;
在2和3状态需要维持到定时器超时, 5s时间到了的时候, 设备需需要检查当前数据库非缺省外部LSA是否超出上限: 如果超出, 则重启定时器, 继续维持该状态; 如果未超出, 则退出overflow状态;
退出of状态时, 设备删除overflow定时器, 本地产生原本应该要产生的非缺省外部LSA, 接收新的非缺省外部LSA并且回复LSAck;
随时等待进入下一次of状态.
2.4 ospf路由控制配置举例
除了上图配置方式之外, 也可以通过配置area1成特殊区域NSSA(过滤三类LSA, 缺省路由通过七类LSA传递)或者Stub(过滤三类LSA, 但是ABR会产生一条缺省LSA, 是三类的)或者T NSSA(会产生一个三类、一个七类, 用于缺省路由)
上图的做法是通过Filter工具进行三类LSA过滤, 配置命令是import方向(表示其他区域向本区域内部发送), 也可以将配置命令的import改成export, 并且在area 0配置
ospf 1
area 0
filter 2000 export
表示当前区域向其他区域发送的三类LSA需要过滤.
也可以通过命令保留:
default-route-advertise always
回到图片上的配置方法, 设备配置之后的状态:
ospf路由控制案例分析
控制数据转发的网络出口:
- 财务部数据始终向边界-1方向进行转发;
- 市场部数据始终向边界-2的方向进行转发.
方法: 要保证网络会选择固定的ASBR执行数据转发, 不被内部的开销值影响, 需要忽略内部网络变化, 即通过将五类LSA的type设置为2固定外部开销值.
控制数据流在内部的精确路径, 不出现负载分担路径.
方法: 调整内部网络路径的开销值
实现:
路由引入控制:
ospf 1
import-route static type 2 metric 100
表示所有引入外部路由开销值都是100, 且type=2
2.5 ospf其他过滤路由的方法
Filter-policy: 该工具和Filter一样, 分成两个方向, 一个是import, 一个是export, 但是用法完全不一样, import方向是针对任何一台设备都可以使用, export方向只能针对ASBR使用
import方向
用于在某一台ospf设备上, 针对SPF计算之后得到的路由即将加入路由表之前, 进行过滤, 阻止ospf路由进入全局路由表.
OSPF-->收集LSA-->形成LSDB-->计算SPF树-->计算路由-->路由加入路由表;
import就是在最后一步生效的, 在加入路由表前被过滤掉.
使用方法:
举例, 只希望当前设备生成一个192.168.1.0/24的ospf路由:
acl 2000
rule 5 permit source 192.168.1.0 0.0.0.255
rule 10 deny source 192.168.2.0 0.0.0.255
rule 100 deny
quit
ospf 1
filter-policy 2000 import
export方向
表示ASBR设备在引入外部路由的时候, 进行外部路由过滤, 希望引入哪些外部路由, 希望拒绝哪些外部路由.
OSPF-->引入外部路由-->收集外部路由信息-->计算五类LSA
export同样是在最后一步生效的, 将部分外部路由过滤掉, 阻止五类或者七类LSA的生成.
举例:
只希望当前设备生成一个192.168.1.0/24的OSPF五类LSA
acl 2000
rule 5 permit source 192.168.1.0 0.0.0.255
rule 100 deny
qu
ospf 1
filter-policy 2000 export
外部路由引入的时候, 除了filter-policy export之外, 也可以直接在import-route里面调用route-policy进行过滤, 这会在不久后关于路由策略的博客里详细介绍.
3 OSPF的其他特性
3.1 OSPF多进程
ospf支持多进程, 在同一台路由器上可以运行多个不同的OSPF进程, 他们之间互不影响、彼此独立. 不同的OSPF进程之间的路由交互相当于不同路由协议之间的路由交互.
路由器的一个接口只能属于某一个ospf进程里.
3.2 OSPF和BGP联动
拾遗: BGP(外部网关协议), 用于全世界互联网使用.
OSPF收敛速度一般会比较快, BGP收敛速度一般会计较慢(BGP目前汇总的路由条目由80w+, ospf一般不会超过1w).
OSPF联动配置:
配置命令
ospf 1
stub-router on-startup 5
配置完成后, 如果该设备重启或者新加入网络刚刚做完ospf收敛. 则启动定时器, 在定时器内, 将自己的开销值设定为65535, 确保其他OSPF切换链路时不会选择自己, 以供BGP收敛.
等定时器过期, 则向外通告LSA, 用于更新开销值为正常开销, 此时也就代表OSPF和BGP同步了.
HCIP-ICT实战进阶03-OSPF高级特性的更多相关文章
- Log4j2进阶使用(更多高级特性)
1.高级进阶说明 本文介绍Log4j2高级进阶使用, 基于Log4j2进阶使用(按大小时间备份日志), 介绍更多的高级特性, 本文基于上文给出的完整log4j2.xml, 修改对应的配置项, 演示高级 ...
- (升级版)Spark从入门到精通(Scala编程、案例实战、高级特性、Spark内核源码剖析、Hadoop高端)
本课程主要讲解目前大数据领域最热门.最火爆.最有前景的技术——Spark.在本课程中,会从浅入深,基于大量案例实战,深度剖析和讲解Spark,并且会包含完全从企业真实复杂业务需求中抽取出的案例实战.课 ...
- 云端卫士实战录 | Java高级特性之多线程
<实战录>导语 一转眼作为一名Java开发者已经四年多时间了,说长不长说短不短,对于java的感情还是比较深的,主要嘛毕竟它给了我饭吃.哈哈,开个玩笑.今天我想借此机会来和大家聊聊Java ...
- Python进阶:全面解读高级特性之切片!
导读:切片系列文章连续写了三篇,本文是对它们做的汇总.为什么要把序列文章合并呢?在此说明一下,本文绝不是简单地将它们做了合并,主要是修正了一些严重的错误(如自定义序列切片的部分),还对行文结构与章节衔 ...
- Redis进阶实践之五Redis的高级特性(转载 5)
Redis进阶实践之五Redis的高级特性 一.引言 上一篇文章写了Redis的特征,使用场景,同时也介绍了Redis的基本数据类型,redis的数据类型是操作redis的基础,这个必须好好的掌握.今 ...
- activemq的高级特性:集群实战
高级特性实战需求 当消费端是多个集群,集群A又包含多个服务. 当每个集群都要接受相同的一批消息,而集群内的每个服务都去分摊消息. 解决办法一:级联 增加一个中转者.但是不是特别的优化,而且性能也不是特 ...
- Redis进阶实践之五Redis的高级特性
一.引言 上一篇文章写了Redis的特征,使用场景,同时也介绍了Redis的基本数据类型,redis的数据类型是操作redis的基础,这个必须好好的掌握.今天我们开始介绍一些Redis的高级特性 ...
- 「小程序JAVA实战」小程序视图之细说wx:key列表高级特性(16)
转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-16/ wx:key的高级特性.这个很重要,因为在app上经常有上拉,下拉加载,我们如果不使用这个特 ...
- MapReduce编程实战之“高级特性”
本篇介绍MapReduce的一些高级特性,如计数器.数据集的排序和连接.计数器是一种收集作业统计信息的有效手段.排序是MapReduce的核心技术,MapReduce也可以运行大型数据集间的" ...
- RabbitMQ实战(三)-高级特性
0 相关源码 1 你将学到 如何保证消息百分百投递成功 幂等性 如何避免海量订单生成时消息的重复消费 Confirm确认消息.Return返回消息 自定义消费者 消息的ACK与重回队列 限流 TTL ...
随机推荐
- memoの关于Qt的一些用法记录
Qt自动调整窗口尺寸 之前写过,方法就是: QTimer::singleShot(0, this, [this]{ this->adjustSize(); }); 重复记录一下. 如何把一个Mo ...
- Eureka服务剔除下线
1.参考文档: https://www.centoscn.vip/4317.html 2.剔除服务 格式: curl -X PUT "http://ip:port/eureka/apps/{ ...
- Python自动发邮件(QQ为例)
import smtplib from email.mime.text import MIMEText from email.header import Header from email.mime. ...
- (已解决)用phpstudy8创建个数据库(非root),结果没有访问权限。
1. 问题 用phpstudy_pro,即最新版本,创建非root用户的数据库,然后后台访问它却提示没有权限. 2. 解决办法 进入系统自带的user表,修改权限.具体操作如下: a. 首先找到自己用 ...
- mybatis中xml新增一条数据获取自增id
在insert的标签里加两个属性:useGeneratedKeys="true" keyProperty="patentId" ,这个key ...
- 路飞项目 day03 前端配置、后台主页、项目依赖问题
一.路飞项目前端配置 1.先删除一些不要的 删除多余的组件,只要app和首页组件 然后改一下组件的内部代码 -App.vue中 ______________ <template> ...
- 解决linux系统中对两个不同的网络连接http访问
项目5G 问题背景:调用网络端的服务器服务,对本地机器人进行控制,以实现机器人应执行的任务. 需求:主机需要访问外网的API,同时在本地局域网与机器人的API进行通信. 问题:要解决HTTP请求发送到 ...
- OCR接口
OCR基础框 import pytesseract from PIL import Image img = Image.open('实际数据1.jpeg') #具体位置截图 image1 = Imag ...
- qt 单元测试遇到的问题
升级了qt creator到新版本.使用 google 单元测试,发现一个单元测试显示不对了. 测试结果输出:FATAL, 项目"t_ps"的测试未产生任何预期输出 比较了几个测试 ...
- vue-用户管理系统
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...