华为OSPF详解

OSPFv3                                                                                                

缩略语

英文全名

中文解释

OSPF

Open Shortest Path First

开放最短路径优先

OSPFv3

Open Shortest Path First version 3

开放最短路径优先版本3

IGP

Interior Gateway Protocol

内部网关协议

AS

Autonomous System

自治系统

ABR

Area Border Router

区域边界路由器

ASBR

Autonomous System Border Router

自治系统边界路由器

LSA

Link Statement Advertisement

链路状态通告

LSDB

Link State Data Base

链路状态数据库

DR

Designated Router

指定路由器

BDR

Backup Designated Router

备份指定路由器

DD

Database Description

数据库描述

LSR

Link State Request

链路状态请求

LSU

Link State Update

链路状态更新

LSAck

Link State Acknowledgment

链路状态确认

NBMA

Non-Broadcast Multi-Access

非广播多点可达网络

P2MP

Point-to-MultiPoint

点到多点

P2P

Point-to-Point

点到点

 该表格来自新华三OSPFv3技术白皮书http://www.h3c.com/cn/d_200804/603579_30003_0.htm

 本文所有试验围绕一下拓扑进行,实验设备为华为AR2200-S,版本为V200R009C00SPC500

以下是基本配置(全局使能IPv6,接口使能IPv6,配置IPv6地址):

RT1:

[RT1]ipv6  

[RT1]interface g0/0/1

[RT1-GigabitEthernet0/0/1]ipv6 enable

[RT1-GigabitEthernet0/0/1]ipv6 address 2001::1/64

[RT1]interface LoopBack 1 

[RT1-LoopBack1]ipv6 enable

[RT1-LoopBack1]ipv6 address 2010::1/64

[RT1]interface LoopBack 2

[RT1-LoopBack1]ipv6 enable

[RT1-LoopBack1]ipv6 address 2011::1/64

RT2:


[RT2]ipv6 

RT2]interface g0/0/1

[RT2-GigabitEthernet0/0/1]ipv6 enable

[RT2-GigabitEthernet0/0/1]ipv6 address 2001::2/64

[RT2]interface g0/0/2

[RT2-GigabitEthernet0/0/2]ipv6 enable

[RT2-GigabitEthernet0/0/2]ipv6 address 2002::2/64 
 

RT3:


[RT3]ipv6  

[RT3]interface g0/0/2 

[RT3-GigabitEthernet0/0/2]ipv6 enable

[RT3-GigabitEthernet0/0/2]ipv6 address 2002::3/64

[RT3]interface LoopBack 1 

[RT3-LoopBack1]ipv6 enable

[RT3-LoopBack1]ipv6 address 2012::1/64

[RT3]interface LoopBack 2

[RT3-LoopBack1]ipv6 enable

[RT3-LoopBack1]ipv6 address 2013::1/64

以下是基本OSPFv3配置:

RT1:

[RT1]ospfv3 1

[RT1-ospfv3-1]router-id 1.1.1.1

[RT1]interface LoopBack 1 

[RT1-LoopBack1]ospfv3 1 area 0 

[RT1]interface LoopBack 2

[RT1-LoopBack2]ospfv3 1 area 0 

[RT1-LoopBack2]in g0/0/1. 

[RT1-GigabitEthernet0/0/1]ospfv3 1 area 0 

RT2: 

[RT2]ospfv3 1

[RT2-ospfv3-1]router-id 2.2.2.2

[RT2]interface g0/0/1

[RT2-GigabitEthernet0/0/1]ospfv3 1 area 0 

[RT2]interface g0/0/2

[RT2-GigabitEthernet0/0/2]ospfv3 1 area 1 

[RT2-GigabitEthernet0/0/2]quit

 RT3:

[RT3]ospfv3 1

[RT3-ospfv3-1]router-id 3.3.3.3

[RT3]interface g0/0/2

[RT3-GigabitEthernet0/0/2]ospfv3 1 area 1

[RT3]interface LoopBack 1

[RT3-LoopBack1]ospfv3 1 area 1

[RT3-LoopBack1]interface LoopBack 2

[RT3-LoopBack2]ospfv3 1 area 1

                                                                                                                                                             以上就是OSPFv3的基本配置

 

 接下来看一下OSPFv3的状态,先来说几道命令:

 

------------------------------------------------------------------------------------------------------------------------------------------ 

  • 接着是OSPFv3接口时间周期功能配置
  1. 配置接口Hello interval
  2. 配置接口Hello包发送间隔(Hello interval)
  3. 配置相邻路由器失效时间(Dead interval)
  4. 配置邻接路由器重传LSA间隔
  5. 配置接口LSA传送延迟
  6. 配置接口轮询Hello包

 1.配置接口Hello interval

[RT2]in g0/0/1

[RT2-GigabitEthernet0/0/1]ospfv3 timer hello <1-65535>s

##在默认情况下P2P,广播网,这种接口类型下,发送Hello包的间隔为10s,而P2MP,NMBA发送间隔为30s 

2.配置相邻路由器失效时间(Dead interval)

[RT2]interface g0/0/1

[RT2-GigabitEthernet0/0/1]ospfv3 timer dead <1-65535>s

 ##需要注意的是,当你修改Hello包时间时,Dead周期会相应的变为4倍,但当你修改Dead周期时,Hello时间不会改变

3.配置邻接路由器重传LSA间隔

[RT2]interface g0/0/1

[RT2-GigabitEthernet0/0/1]ospfv3 timer retransmit  <1-3600>s  

##建议这个值不要设置的太小,以免造成不必要的重传,例如你的网络非常复杂,数据包需要2秒才能完成往返(LSU到对方,对方再发回LSAck),那么如果你设置成了一秒,这样就会让路由器误以为对方为接收到数据包,造成重传

 4.配置接口LSA传送延迟

[RT2]interface g0/0/1

 

[RT2-GigabitEthernet0/0/1]ospfv3 trans-delay <1-800>s

#设置该值之后,当有LSA需要从这个接口发出时,将等待x秒再发送,x=你的设定

 5.配置接口轮询Hello包

[RT2]interface g0/0/1

[RT2-GigabitEthernet0/0/1]ospfv3 timer poll <1-65535>s

##这类Hello包只有在NBMA网络中才会用到,当邻居失效时,会按照该周期发送轮询Hello包,建议轮询时间间隔至少为Hello周期的4倍 

                                                                                                                                  以上就是OSPFv3接口中各种时间周期的配置 

------------------------------------------------------------------------------------------------------------------------------------------ 

配置OSPFv3的区域:

  • Stub区域
  • NSSA区域
  • 虚链路

1.Stub区域:

[RT2]ospfv3 1

[RT2-ospfv3-1]area 1  

[RT2-ospfv3-1-area-0.0.0.1]stub [ no-summary ]

[RT3]ospfv3 1  

[RT3-ospfv3-1]area 1

[RT3-ospfv3-1-area-0.0.0.1]stub

##那么此时R2<--->R3的Area1,就配置成为了Stub区域,5类LSA不会被泛洪进来,但是三类依然会泛洪,那么如果你希望将Stub区域配置为一个Totally Stub区域(没有3类与5类LSA),那么就可以在stub后面加上no-summary,这样的话R3上只会有一条默认路由,如果你加上了这个参数,那么只需要在ABR上做就可以了,Stub区域中的成员路由器不需要打这条命令

以下是没有加no-summary,R3的路由表:

##可以从图中看到,R3上有3条IA的域间路由

以下是加了no-summary,R3的路由表:

 ##可以看到,R3上只有一条默认路由

                                                                                                                                                                   以上就是Stub区域的配置

------------------------------------------------------------------------------------------------------------------------------------------ 

2. NSSA区域

##先不进行配置,先来看一下关于NSSA的各个命令(以下命令均在Area视图下执行):

nssa 将当前区域配置为NSSA区域

nssa default-route-advertise

向NSSA区域泛洪一条默认路由

nssa default-route-advertise cost <1-16777214>

向NSSA区域泛洪默认路由时,将其cost修改为<cost>
nssa default-route-advertise tag <0-4294967295> 向NSSA区域泛洪默认路由时,将其tag值改为<tag>
nssa default-route-advertise type <1-2> 向NSSA区域泛洪默认路由时,将其类型修改为<type>,缺省为2类
nssa no-import-route 当ABR同时也是ASBR时,这条命令可以使外部路由不向NSSA区域泛洪
nssa no-summary 不会再向NSSA区域中,泛洪3类LSA
nssa set-n-bit 在DD报文中设置N-bit标志位
nssa suppress-forwarding-address 将7类转成5类之后,设置FA地址为0.0.0.0
nssa translator-always 设置转换路由器(将7类转换成5类)
nssa translator-interval <1-120> 设置转发路由器失效时间

以下是实验清单及拓扑:

  • R2与R3之间启用NSSA区域
  • R2向NSSA区域下发默认路由并将Cost值调为10,Tag为20,类型为1
  • R2重分发直连Loopback,并将cost调整为20,tag调整为40,类型为1
  • 当R2同时为ABR与ASBR时,不将外部路由引入NSSA区域
  • R2不向NSSA区域引入3类LSA
  • 设置DD报文N-bit位
  • 指定转换路由器
  • 设置指定路由器失效时间

------------------------------------------------------------------------------------------------------------------------------------------ 

1.R2与R3之间启用NSSA区域

[RT2]osfpv3
[RT2]ospfv3 1 
[RT2-ospfv3-1]area 1 
[RT2-ospfv3-1-area-0.0.0.1]nssa 

[RT3]osfpv3
[RT3]ospfv3 1 
[RT3-ospfv3-1]area 1 
[RT3-ospfv3-1-area-0.0.0.1]nssa 

 ##启NSSA区域,区域内所有路由器都要打,标志位不同,不起邻居

2.R2向NSSA区域下发默认路由并将Cost值调为10,Tag为20,类型为1

[RT2]ospfv3 1  

[RT2-ospfv3-1]area 1 

[RT2-ospfv3-1-area-0.0.0.1]nssa default-route-advertise cost 10 tag 20 type 1

##你只需要记住一点,nssa的参数后面还可以跟很多参数

 3.R2重分发直连Loopback,并将cost调整为20,tag调整为40,类型为1

[RT2]ospfv3 1 

[RT2-ospfv3-1]import-route direct cost 20 tag 40 type 1

##重分发之后R2就同时成为ABR与ASBR,这样就满足了下一个实验的条件

4. 当R2同时为ABR与ASBR时,不将外部路由引入NSSA区域

先来看一下R3的路由表,可以看到图中两条标记为N的路由条目:

那么如果你不希望R3收到这两条明细路由(因为有一条默认路由就可以实现互联),那么就可以进行如下配置:

[RT2]ospfv3 1 

[RT2-ospfv3-1-area-0.0.0.1]nssa no-import-route

##这条命令,只有在路由器同时成为ABR与ASBR时,才满足条件,所以你在R3上重分发之后,在打上这条命令,是没用的,因为R3不是ABR

再看一下R3的路由表,发现明细路由没有下发:

5.R2不向NSSA区域引入3类LSA

上图就是当前的路由表,可以看到有一条IA的域间路由,那么如果你不希望NSSA区域中存在3类LSA,配置如下:

[RT3]ospfv3 1  

[RT3-ospfv3-1-area-0.0.0.1]nssa no-summary

##这条命令只能在NSSA区域的ABR上面配置,在其他路由器上配置也没用

 6.设置DD报文N-bit位

[RT3]ospfv3 1

[RT3-ospfv3-1-area-0.0.0.1]nssa set-n-bit

##在标准中,N-bit位必须志为0,但是有些厂商还是违背了,所以如果你的网络环境中有不同厂商的设备,需要留意N-bit志位,这条命令的目的就是与这些厂商兼容

7.指定转换路由器

完成这个实验需要4台路由器,以下是拓扑,:

基础配置(接口IP,进程,接口宣告)在这里就不说明了,直接进入OSPFv3的配置,现在R3重分发直连:

[R3]ospfv 1 

[R3-ospfv3-1]import-route direct           ##重分发在之后会详细说明,这里记一下就可以了

##重分发直连完成后在R2上,执行nssa translator-always

[R2]ospfv3 1  

[R2-ospfv3-1]area 1        

[R2-ospfv3-1-area-0.0.0.1]nssa translator-always

##执行完之后去R1上查看LSDB数据库

##可以看到最下面的两行,R3的两条直连Loopback口路由,只会从R2通告过来,正常情况是R4也会通告,随后在R1产生两条去往相同目的地的等价路由,但是这条命令就可以指定,由哪台路由器负责转换LSA,当R2--->R1链路Down时,R4会自动向Area0通告一条去往R3Loopback口的5类路由,这样可以形成弹性路由,但做不到等价路由

##这个实验需要等的时间非常长,我将上面的配置配完之后,去吃了个饭,回来才看到这些状态一开始还以为自己做错了

 8.设置指定路由器失效时间

[R2]ospfv 1  

[R2-ospfv3-1]area 1  

[R2-ospfv3-1-area-0.0.0.1]nssa translator-interval <1-120>s

##这条命令一般和nssa translator-always一起打,单位为秒

                                                                                                                         以上就是NSSA的配置及讲解,下面是虚链路的配置

------------------------------------------------------------------------------------------------------------------------------------------

3.虚链路

 以上是拓扑,R2与R3之间建立虚链路,使R4学到R1的Loopback路由,以下为配置步骤(接口IP,进程,端口宣告省略):

[R2]ospfv3 1  

[R2-ospfv3-1]area 1                  

[R2-ospfv3-1-area-0.0.0.1]vlink-peer 3.3.3.3

[R3]ospfv3 1

[R3-ospfv3-1]area 1

[R3-ospfv3-1-area-0.0.0.1]vlink-peer 2.2.2.2

##虚链路在配置上没什么难度,你只需要知道在哪儿做就可以了

                                                                                                                                                 以上就是三种区域类型的配置及讲解

------------------------------------------------------------------------------------------------------------------------------------------

讲解完区域类型之后,现在再来看一下OSPFv3的路由属性配置:

  • 配置OSPFv3的接口开销值
  • 配置OSPFv3最大等价路由数量

 1.配置OSPFv3的接口开销值

接着上一张虚链路的拓扑,在R3上查看路由表

##没有IA是因为虚链路到了Area0,传来的是域内路由,这里可以看到去往2010::/128,2011::/128的开销是2(Loopback口在OSPFv3中表现为128位),我们将它修改为5

配置如下:

[R2]interface g0/0/1
[R2-GigabitEthernet0/0/1]ospfv3 cost 4

##关于接口cost值的调整,你需要知道的是,在哪调,调什么,cost值的计算是指去往目的网段路径上所有出接口cost相加,也就是说R3要去往R1的Loopback口,路径如下,R3_g0/0/1--->R2_g0/0/1--->R1_g0/0/1,所以说路径上有2条链路,所以cost就是将这两条链路的cost相加,就等于去往目的地的cost值,在带宽足够的情况下,cost都为1,所以R3去往2010::/128的cost是R2_g0/0/1的cost=1,R1_g0/0/1的cost=1,所以是1+1=2,那么现在将R2_g0/0/1调整为4,也就变成了4+1=5

2.配置OSPFv3最大等价路由数量

[R3]ospfv3 1

[R3-ospfv3-1]maximum load-balancing <1-8>

##最大为8条,按照需求来这个没什么好讲解的

                                                                                                                                                                   以上就是路由属性的操作

------------------------------------------------------------------------------------------------------------------------------------------

控制OSPFv3的路由信息:

1.配置OSPFv3路由聚合

  • 配置OSPFv3ABR路由聚合
  • 配置OSPFv3ASBR路由聚合
  • 配置OSPFv3对接收的路由过滤
  • 配置OSPFv3对发送的路由过滤
  • 配置OSPFv3引入外部路由

##路由聚合分两种,一种是ABR聚合,一种是ASBR聚合,这两种场景我将逐一演示

 先来讲ABR聚合,拓扑如下:

##R3宣告两个Loopback,R2的两个Loopback口重分发进OSPFv3,将R3两个Loopback口汇总后发向Area 0

[R2-ospfv3-1]ospfv3 1  

[R2-ospfv3-1]area 1 

[R2-ospfv3-1-area-0.0.0.1]  abr-summary 2011:1:1:: 48 [not-advertise|cost<cost>]

##这是汇总完毕后,R1的路由表,可以发现最下的一行已经有一条汇总路由了:

##这是没有经过汇总的路由表:

##先来对abr-summary 2011:1:1:: 48这条命令做讲解,最汇总时,你需要知道你在哪里做,你希望汇总的路由发向哪里,那么我们现在做的是ABR汇总,所以一定是在ABR上做,那么R2就是ABR,那么我们希望将2011:1:1:1::/64与2011:1:1:2::/64汇总,那么可以将掩码写作48位,所以汇总后的路由条目是2001:1:1::/48,那么你希望将哪个区域的路由汇总就在哪个区域做,所以这里是在Area1做 

那么再说一下not-advertise参数的用法,如果你不希望R2将2011:1:1:1::/64,2011:1:1:2::/64网段通告Area 0,那么就可以通过汇总的方法,将两个网段汇总成一个网段,然后被这个网段包含的所有条目,都不会被通告Area0,以下是实例:

[R2]ospfv 1

[R2-ospfv3-1]area 1

[R2-ospfv3-1-area-0.0.0.1]abr-summary 2011:1:1:: 48 not-advertise

##这是R1的路由表,这两条明细路由已经被过滤:

最后是cost参数的用法,虽然在前文已经说过非常多次了,但这里还是说一下⑧,如果这条通告出去的汇总路由希望将他的Cost值修改为5,那么可以进行如下配置:

[R2]ospfv 1

[R2-ospfv3-1]area 1

[R2-ospfv3-1-area-0.0.0.1]abr-summary 2011:1:1:: 48 cost 4

##改为4是因为R1本身还有1点开销,算上累加,所以是4,以下是R1的路由表:

2.ASBR聚合

[R2]ospfv3 1 

[R2-ospfv3-1]import-route direct                               ##在R2将两个Loopback接口用重分发直连的方式引入OSPFv3 

##引入之后查看R1路由表:

[R2]ospfv3 1 

[R2-ospfv3-1]asbr-summary 2010:1:1:: 48

##以下是汇总完毕的R1路由表:

[R2-ospfv3-1]asbr-summary 2010:1:1:: 48 [cost | distribute-delay | not-advertise | tag]

接下来将逐一针对这些参数进行讲解,Cost与Tag不说了:

[R2]ospfv3 1

[R2-ospfv3-1]asbr-summary 2010:1:1:: 48 distribute-delay <1-65535>s

##distribute-delay选项可以使你汇总的路由推迟通告

[R2]ospfv3 1

[R2-ospfv3-1]asbr-summary 2010:1:1:1:: 64 not-advertise

##你可以用这条命令来控制明细条目的引入,可以很灵活的运用,那么以下是R1的路由表:

 

 3.配置OSPFv3对接收的路由过滤

[R1]acl ipv6 2000  

[R1-acl6-basic-2000]rule 1 deny source 2010:1:1:2:: 64

[R1-acl6-basic-2000]rule 2 permit

[R1]ospfv3 1 

[R1-ospfv3-1]filter-policy 2000 import

##这里的ACLv6起到的是决策的作用,并不是匹配流量,如果你的rule允许,则允许该条目进入,如果你的rule拒绝,则拒绝该条目进入,隐形拒绝所有,所以你需要在手动以上一条permit any,以放行其他所有条目

##以下是R1的路由表,D表明拒绝引入,但这只会去标志存在的条目:

 4.配置OSPFv3对发送的路由过滤

##在R2上针对向Area0区域通告的R3的Loopback1做路由过滤
[R2]acl ipv6 2000  

[R2-acl6-basic-2000]rule 1 deny source 2010:1:1:1::/64  

[R2-acl6-basic-2000]rule 2 permit

[R2]ospfv3 1 

[R2-ospfv3-1]filter-policy 2000 export 

##以下是R1的路由表:

 ##路由过滤的要点在于,你要想清楚条目流动的方向,想好在哪过滤,那个方向过滤,采用什么工具过滤

5.配置OSPFv3引入外部路由

##这里要说的是一种路由过滤与重分发结合的一种用法,R2引入本地直连路由,但过滤Loopback1

[R2]acl ipv 2000

[R2-acl6-basic-2000]rule 1 deny source 2010:1:1:1::1/64

[R2-acl6-basic-2000]rule 2 permit

[R2]ospfv3 1

[R2-ospfv3-1]import-route direct

[R2-ospfv3-1]filter-policy 2000 export direct

##以下是过滤完成后R1的路由表

##以下是为做过滤前R1的路由表

                                                                                                                                                  以上就是OSPFv3路由控制相关操作

------------------------------------------------------------------------------------------------------------------------------------------

OSPFv3网络调优:

  • 配置SPF定时器
  • 设置LSA频繁震荡时路由计算的延迟时间
  • 配置接收LSA的时间间隔
  • 抑制接口接收或发送OSPFv3报文
  • 配置接口的DR优先级
  • 配置Stub路由器
  • 忽略DD报文中的MTU检查

 1.配置SPF定时器

  • 配置常用定时器

[R1]ospfv3 1  

[R1-ospfv3-1]spf time <0-65535>s(Delay计时器)<0-65535>s(Hold计时器)
##当OSPFv3的链路发生变化时,LSDB就会相应的发生变化,这是就需要重新进行SPF计算,如果SPF计算间隔小,那么网络收敛的时间就会相应的加快,但同时也会占用更多的资源,那么如果网络频繁的发生变化,如果SPF计算间隔时间较大,会占用较少的资源,避免因为网络频繁的变动而导致带宽耗尽,但同时网络收敛速度也会相应的变慢,请酌情配置

  • 配置SPF智能定时器

[R1]ospfv3 1

[R1-ospfv3-1]

spf-schedule-interval [intelligent-timer <Max interval> <Start-interval> <Hold-interval> | <delay time> <hold time>]

##智能定时器用法我也不知道=_=,在这里只能写出他的配置方法,没有应用场景

2.设置LSA频繁震荡时路由计算的延迟时间

[R1]ospfv3 1 

[R1-ospfv3-1]maxage-lsa route-calculate-delay <0-65535>s

##当一个链路Down时,他会发出该条目的老化LSA,但是如果一段链路频繁的Down/Up(震荡),那么路由器会频繁的发出更新LSA与老化LSA,所以这同时浪费了带宽和路由器算力,所以我们可以通过这条命令,来延迟计算老化LSA,也就是说当一台路由器收到一个最大时间的老化LSA时,会延迟X秒再计算(从LSDB中删除),这就可以将震荡的损害降到最低,缺省情况下,老化LSA计算延迟为20s

3. 配置接收LSA的时间间隔

[R1]ospfv3 1  

[R1-ospfv3-1]lsa-arrival-interval <1-10000>millisecond

##这条命令可以有效的避免路由震荡带来的麻烦,它规定了接收同一条LSA的时间间隔。缺省情况下,接收同一条LSA更新信息的时间间隔为1000毫秒(1秒)

4.抑制接口接收或发送OSPFv3报文

[R1]ospfv3 1

[R1-ospfv3-1]silent-interface g0/0/1

##配置之后,该接口不会发送OSPFv3报文,该接口不会建立OSPFv3邻居关系,但这条直连路由还是可以被Intra-Area-Prefix-LSA发布出去

5.配置接口的DR优先级

[R1]interface g0/0/1

[R1-GigabitEthernet0/0/1]ospfv3 dr-priority <0-255>

##接口优先级最好是在宣告接口前指定,因为如果你在宣告之后决定优先级,从接口发送出的Hello包中的优先级并不会改变,所以如果发生了这种情况,可以通过shutdown/undo shutdown命令重启接口,这样可以充值OSPFv3的接口状态机

6.配置Stub路由器

[R1]ospfv3 1 

[R1-ospfv3-1]stub-router [ on-startup <interval>  | <cr>]

##这里的Stub路由器与Stub区域中的成员路由器并没有关系,而是告知其他路由器不用改stub-router转发数据,但会拥有一条到达Stub路由器的路由,on-startup参数表示,仅在重启或故障时保持Stub路由器,保持时间由Interval决定,如果没有指定Interval,则默认时间为500秒

7.忽略DD报文中的MTU检查

[R1]ospfv 1

[R1-GigabitEthernet0/0/1]ospfv3 mtu-ignore

##如果MTU值不一样,邻居会停留在exstart阶段,所以MTU值如果不一样可以启用这个

 

https://blog.csdn.net/qq_40478570/article/details/89053603

posted @ 2020-08-09 16:00  会飞的老虎  阅读(2391)  评论(0编辑  收藏  举报