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算法计算出来的最短路径树来更新路由.

image-20221106111534246

以上图为例子:

  1. R1原本通往R5的路径为R1-R3-R5;
  2. R5将环回口Loopback0开启ospf, ospf新增直连网段Loopback0;
  3. R5泛洪新增路由的LSA;
  4. R1收到该LSA后会创建新的路由, 继承原有节点R5的路径及其下一跳, 即最单路径树不变, 只在R5上新增叶子节点, 不需要进行全网路由计算;
  5. R1通往R5上L0的路径为R1-R3-R5-L0.

在华为设备上, OSPF的PRC功能默认开启.

OSPF中存在的问题

上述的两种算法都是在理想情况下对于网络变动的应对方式, 但是OSPF并没有采用这种理想的方法, 笨比OSPF面对路由变化和拓扑变化有自己的想法:

  1. 区域内: 不管是路由变化还是拓扑变化, 整个区域内的设备都需要进行SPF计算;
  2. 区域间: 区域间的更新触发的则是PRC算法;
  3. 外部路由: 外部路由更新触发PRC算法.

规律: 一类二类LSA使用SPF算法, 三类四类五类LSA使用PRC算法.

1.3 智能定时器

智能定时器: ospf智能定时器分别对路由计算、LSA产生、LSA接收进行控制加速网络收敛, 既可以保证对少量外部突发事件的快速响应, 也可以减少CPU资源的占用.

  1. 频繁进行路由计算的网络: ospf智能定时器可以根据用户的配置和指数衰减, 动态调整两次路由计算之间的间隔, 减少路由计算次数, 避免设备资源损耗过度;
  2. 不稳定的网络: 拓扑频繁变化会产生或接收LSA信息, OSPF智能定时器可以动态调整时间间隔, 让设备在一段时间内不产生LSA或者对收到的LSA不处理, 减少整个网络中拓扑频繁变化对LSA产生的影响

简单概括为两个功能: 控制路由计算控制LSA的生成和接收.

智能定时器工作方式:

  1. 初始更新LSA的时间间隔由初始时间间隔指定;

  2. 第N(N>=2)次, LSA更新的时间间隔:

    基数时间间隔 * n^(n-2);

  3. 如果间隔的时间到达最长时间间隔, 则保持三次, 更新三次都是依照最长时间间隔来更新, 三次最长更新后回到初始更新.

通过以上两种方法, 可以减少网络中OSPF的无效计算.

具体的OSPF时间间隔:

  1. 更新LSA的时间间隔, 默认是5s一次.

    • 智能定时器的时间参数:
      1. 初始时间间隔: 500毫秒;
      2. 最长时间间隔: 默认是5000毫秒;
      3. 基数时间间隔: 1000毫秒.
  2. 接收LSA时间间隔

    默认接收LSA的时间间隔是1秒一次.

    • 智能定时器的时间参数

      1. 初始: 500ms

      2. 最大: 5000ms;

      3. 基数: 1000ms.

  3. 计算SPF时间间隔

    • 智能定时器的时间参数
      1. 初始: 500ms
      2. 最大: 10000ms;
      3. 基数: 1000ms.

1.3.1 配置命令

  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.

  2. 设置OSPF LSA更新的时间间隔

    [Huawei-ospf-1]lsa-arrival-interval {interval|intelligen-timer max-interval start-interval hold-inteval}
    
  3. 设置OSPF LSA更新的时间间隔

    [Huawei-ospf-1]spf-schedule-interval {interval|intelligen-timer max-interval start-interval hold-inteval|millisecond interval2}
    

    一般来说不用我们去配置智能定时器, 这里更倾向于了解.

1.4 OSPF收敛优先级

网络中的路由信息, 可以设定收敛优先级, 在网发生故障是, 可以减少关键业务中断的时间, 对关键业务的路由信息进行最快速的收敛.

路由优先级从高到低分为:

  1. critical
  2. high
  3. medium
  4. 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的流量保护分为链路保护和节点链路双保护.

image-20221106133418982

1.5.2 配置命令

  1. 使能OSPF IP FRR:

    [Huawei-ospf-1]frr
    [Huawei-ospf-1-frr]loop-free-alternate
    

    使能OSPF IP FRR功能, 利用LFA算法计算备份下一跳和备份出接口.

  2. (可选)阻止OSPF接口的FRR能力:

    [Huawei-g0/0/0]ospf frr block
    

    在业务重要接口上禁止OSPF IP FRR功能, 从而使此接口相连的对端设备不成为备份链路上的节点设备, 避免使能OSPF IP FRR功能后对节点设备上运行的重要业务造成影响.

1.5.3 配置举例

image-20221106134206361

查看配置结果:

image-20221106134221176

1.6 OSPF和BFD联动

BFD: 双向转发检测, 该技术是用于快速检测网络故障使用的, 比如OSPF邻居故障,物理链路故障。检测到故障之后,立刻上报故障信息告知给某个协议(协议与BFD联动), 协议就可以更快速进行转发路径切换.

OSPF与BFD联动就是将BFD和OSPF关联起来,一旦与邻居之间的链路出现故障,BFD对链路故障的快速感应能够加快OSPF对于网络拓扑变化的响应。

image-20221106134328474

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收敛并切换链路.]

配置命令

  1. 配置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会话的参数值.

  2. 配置指定接口的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的路由控制包括:

  1. 对发送的LSA进行过滤;
  2. 对ABR上的三类LSA进行过滤;
  3. 设置LSDB中五类LSA的最大数量;
  4. 引入外部路由;
  5. 调整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的工作过程

image-20221106150544881

  1. 设备开启ospf协议之后, 收到外部缺省外部路由LSA超出了, 则会启动overflow;

  2. 进入overflow后, 设备启动overflow的定时器(默认时间5s), 设备删除所有自己产生的非缺省外部LSA;

  3. 在overflow状态中, 设备不在产生非缺省外部LSA, 丢弃新收到的非缺省外部LSA并且不回复LSAck;

    在2和3状态需要维持到定时器超时, 5s时间到了的时候, 设备需需要检查当前数据库非缺省外部LSA是否超出上限: 如果超出, 则重启定时器, 继续维持该状态; 如果未超出, 则退出overflow状态;

  4. 退出of状态时, 设备删除overflow定时器, 本地产生原本应该要产生的非缺省外部LSA, 接收新的非缺省外部LSA并且回复LSAck;

  5. 随时等待进入下一次of状态.

image-20221026193033933

2.4 ospf路由控制配置举例

image-20221026193538707

  1. 除了上图配置方式之外, 也可以通过配置area1成特殊区域NSSA(过滤三类LSA, 缺省路由通过七类LSA传递)或者Stub(过滤三类LSA, 但是ABR会产生一条缺省LSA, 是三类的)或者T NSSA(会产生一个三类、一个七类, 用于缺省路由)

  2. 上图的做法是通过Filter工具进行三类LSA过滤, 配置命令是import方向(表示其他区域向本区域内部发送), 也可以将配置命令的import改成export, 并且在area 0配置

    ospf 1
    	area 0
    		filter 2000 export
    

    表示当前区域向其他区域发送的三类LSA需要过滤.

  3. 也可以通过命令保留:

    default-route-advertise always
    

回到图片上的配置方法, 设备配置之后的状态:

image-20221026194807841

ospf路由控制案例分析

image-20221026194907398

  1. 控制数据转发的网络出口:

    • 财务部数据始终向边界-1方向进行转发;
    • 市场部数据始终向边界-2的方向进行转发.

    方法: 要保证网络会选择固定的ASBR执行数据转发, 不被内部的开销值影响, 需要忽略内部网络变化, 即通过将五类LSA的type设置为2固定外部开销值.

  2. 控制数据流在内部的精确路径, 不出现负载分担路径.

​ 方法: 调整内部网络路径的开销值

实现:

image-20221026195516238

路由引入控制:

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进程里.

image-20221106150732302

3.2 OSPF和BGP联动

拾遗: BGP(外部网关协议), 用于全世界互联网使用.

OSPF收敛速度一般会比较快, BGP收敛速度一般会计较慢(BGP目前汇总的路由条目由80w+, ospf一般不会超过1w).

image-20221026204258393

image-20221026204447500

OSPF联动配置:

  • 配置命令

    ospf 1
    	stub-router on-startup 5
    

配置完成后, 如果该设备重启或者新加入网络刚刚做完ospf收敛. 则启动定时器, 在定时器内, 将自己的开销值设定为65535, 确保其他OSPF切换链路时不会选择自己, 以供BGP收敛.

等定时器过期, 则向外通告LSA, 用于更新开销值为正常开销, 此时也就代表OSPF和BGP同步了.

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