CCNP5:OSPF的【不规则、末梢、NSSA】区域、【1、2、3、4、5、7】类LSA、【3、5、7】缺省 2019.07.26补充

CCNP5:OSPF的【不规则、末梢、NSSA】区域、【1、2、3、4、5、7】类LSA、【3、5、7】缺省

一、OSPF的不规则区域:

1、不规则区域:

当我们把一个OSPF的拓扑设计好后,如果有一天又需要加入一个新的区域,而且该区域比较远,扯一条线过去太贵,将两个区域合并为一个区域又太大,会导致网络卡顿。

因此可以向下面这样构造不规则区域:
在这里插入图片描述
因此要能够实现OSPF不规则区域的信息传递,我们就需要配置不规则区域。
OSPF的不规则区域有两种:
(1)远离骨干的非骨干区域:
这种区域ABR必须同时工作于区域0,才能进行区域间的路由共享。
在这里插入图片描述
(2)不连续骨干:
从x区域获取到的路由信息不得发往编号为x的区域,即便x区域连接了本区域不同的ABR(水平分割)。
在这里插入图片描述

2、解决方案:

(1)普通tunnel:

我之前的这篇文章CCNP2:二层技术、PPP、HDLC、GRE(Tunnel)、MGRE技术提到过GRE的技术。

这里的 tunnel 是在两台ABR上建立隧道,然后将 tunnel 宣告在OSPF中。

正常情况下,我们是将 tunnel 宣告在0区域中,但是我们知道,这个tunnel只是虚构的,实际上控制方面的流量走的都是1区域,OSPF本来就是一个占用资源大的协议,这就导致了area1中的区域会十分卡顿。

缺点:
①占用资源:周期的保活和更新,触发的信息均需要通过中间的穿越区域,对中间区域影响较大。
②选路不佳:由于 tunnel 被宣告在了区域0中,那么area0和area1之间的ABR在选路的时候会优选 tunnel 口,裹报头就会占用资源特别大

在这里插入图片描述
OSPF隐性规则:OSPF协议若通过不同的区域学习到的相同的路由,优选区域0,若均为非骨干,则比较度量值,这就会导致选路不佳。

如果按下面这种方式,左边的ABR便不会再像上面一样去纠结是选择走 area0(tunnel) 还是走area1,因为两个均为非骨干。但是这样带来的问题更为严重,
在这里插入图片描述
将tunnel宣告到区域2中,右边的ABR将不再拥有路由共享资格,就会形成下面这样:
在这里插入图片描述
此时,area1中的设备学习路由时,area2中的网段就会通过 tunnel 然后再经过左边的ABR,最后才能让area1学到,但是 tunnel的实际流量还是在area1中,这就更卡了,选路也不佳。

总之这种解决方案很差劲。

(2)虚拟链路:

OSPF虚拟链路:非骨干区域间的ABR到骨干区域的ABR处授权,建立一条虚链路。

两台ABR都要配置:
R1(config)#router ospf 1 
R1(config-router)#area 1 virtual-link 4.4.4.4

area1:中间穿越的区域
4.4.4.4:对端的ABR的RID

因为没有新的网段出现,故选路正常,为了避免周期的信息对中间区域的影响,故停止虚链路间的所有周期行为(保活机制)。这就导致两台ABR之间的虚链路之间没有dead time ,这就很不可靠。
在这里插入图片描述
DNA:无老化时间,表示去掉 更新时间hello 时间。
因此也不建议去使用。

(3)多进程双向重发布:

一台设备上若同时运行多个进程,那么不同进程拥有不同的RID,生成各自的数据库,但数据库不共享。仅将各自计算所得路由加载于同一张路由表内。

若多个进程工作于同一个接口上,仅最早的进程生效(一个接口只能工作一个进程,谁先来谁先工作)

在解决不规则区域时,让连接两个非骨干区域的ABR设备,将不同区域宣告到本地的不同进程下,之后使用重发布技术,进行路由共享即可。

总结:

多进程双向重发布 选路佳、共享路由条目
tunnel 选路不佳、占用资源大
虚链路 选路佳、占用资源大、不可靠

二、减少LSA的更新量:

看到特殊区域时,如果没有底子,可能会比较混乱需要知道各类LSA,但是先讲LSA又不知道什么是特殊区域。可以将文章前后结合起来看。

1、LSA介绍:

LSA:链路状态通告,或者说是拓扑信息都可以。
链路状态通告=LSA头部(缩略信息)+ LSA 主体
对于完整的LSA是携带完整的拓扑信息的,DBD与LSR携带的都是LSA的头部信息,只有LSU才携带完整的LSA信息。
完整的LSA头部内容包含
①Type:LSA类型
②LS-ID:连接对象的ID编号
③ADV Router:该LSA的通告路由器
在这里插入图片描述
LSA内容应该包含以下
①链路路由前缀
②链路掩码
③链路开销
④连接的链路类型
⑤连接的路由器
在这里插入图片描述

(1)LSA更新过程:

在这里插入图片描述
这个图解释的比较形象,首先LSU携带了LSA信息。经过一个判断:条目是否在链路状态数据库中?

如果,则比较条条目的序列号,相同的话说明数据库中的该条目与接收到的该条目是一样的,那么就忽略。不一样的话比较条目的序列号,若该新来的条目的序列号比较新则更新原来的条目,若收到的新来的条目还没有数据库里面的新,那么将使用LSU发送该数据库的LSA给刚才的源,反更新它。

如果,则会将新来的LSA加载到数据库中,然后回复LSack作为确认。接着洪泛该LSA,让其它的路由器获取该未知网段。最后运行SPF计算新的路由表。

(2)LSA的接收和洪泛:

周期洪泛:30分钟,60分钟便会老化,之所以维持这么长时间是为了更加稳定。

2、手工汇总:

例如下面这样将area1、area2、area3各汇成一条给area0,它是减少骨干区域的LSA量
在这里插入图片描述

(1)域间路由汇总(3类):

假设R1是ABR,它有两个环回,1.1.5.5/24、1.1.6.5/24,汇总之后便是1.1.4.0/22,其所在区域为area2,area2为需要汇总的区域。只能在ABR上汇总,汇总之后它会自动产生空接口防环路由。

R1(config)#router ospf 1 
R1(config-router)#area 2 range 1.1.4.0 255.255.252.0

注:汇总时是通过该区域的1、2类LSA计算所得路由才能汇总成功

(2)域外路由汇总(5类):

假设R2是ASBR,它有两个环回,2.1.1.1/24、2.1.2.1/24,汇总之后便是2.1.0.0/22,汇总之后也会自动产生空接口防环路由。。

R2(config)#router ospf 1 
R2(config-router)#summary-address 2.1.0.0 255.255.252.0

3、设置特殊区域:

特殊区域不可以为骨干区域、设置的区域不能存在虚链路

比如说将area1设置为特殊区域,那么它就只会学本区域的路由,对于其它区域的,它不会去学习,而是缺省指向与area0相连的ABR,这样就可以减少非骨干区域的更新量
在这里插入图片描述
特殊区域分为两大类:一类是不存在ASBR,另一类是存在ASBR。
我们先说第一类:不存在ASBR

(1)末梢区域:

要既不是骨干区域、也不能存在虚链路,还不存在ASBR,因此满足这些条件的只有区域1了。

将area1设置为末梢区域后,该区域将拒绝4、5类LSA进入,4类是ASBR的位置,5类是域外路由(图中为EIGRP),拒绝之后ABR将会自动产生3类缺省发向该区域

R1(config)#router ospf 1 
R1(config-router)#area 1 stub
该区域所有的设备均需要配置,否则邻居关系就会断开

(2)完全末梢区域:

上面我们说到,设置为末梢区域的区域会拒绝4、5类LSA进入,然后自动产生3类缺省,那为什么不干脆进一步拒绝3类LSA,然后保留一条去往区域0的缺省呢?因此这就是完全末梢区域:在末梢区域的基础上,进一步拒绝3类的LSA,仅保留一条3类的缺省。

配置规则:
先将该区域配置为末梢区域,然后仅在ABR上定义完全即可

ABR(config-router)#area 1 stub no-summary

接下来要说的是第二类存在ASBR:

(3)NSSA(非完全末梢区域):

图中的area2就是一个NSSA非完全末梢区域
在这里插入图片描述
什么是非完全?图中的area2它是一个OSPF的一个末梢,但是它后面又跟了个EIGRP,虽然跟OSPF没有多大关系,但是这样area2就不算是完全末梢区域了,因此它就是非完全的了。

该区域拒绝4、5类LSA,不自动产生3类缺省,本地的5类LSA基于7类转发,通过NSSA区域后转回5类。
在这里插入图片描述
我们知道将area2设置为非完全NSSA区域后,可以为骨干区域减少一条4类LSA,但是4类LSA很少啊,它携带的是ASBR的位置,能有很多个ASBR吗,它的意义是在这吗?

现在我们回想一下我们的初心,减少骨干区域的LSA靠的是区域间手工汇总,因此设置NSSA非完全末梢区域的并不在于减少骨干区域的LSA,它的意义在于它能够拒绝区域ASBR产生的4、5类LSA,为了避免环路的出现,默认不自动产生缺省路由,导致无法访问其他的的域外网段,故在管理员确定无环的情况下,可以手工添加缺省路由

R4(config)#router ospf 1 
R4(config-router)#area 2 nssa   
该区域所有设备配置

(4)完全NSSA:

原理:该区域是在NSSA的基础上进一步拒绝3类LSA,自动产生3类缺省
在这里插入图片描述
这个比较好理解,之前是拒绝4、5类LSA,但是没有拒绝area0的LSA。那么完全NSSA就是拒绝其它全部区域的LSA,然后产生一条3类缺省。背后的EIGRP,通过7类转为5类穿过area2。

配置规则:先将该区域配置为NSSA,然后仅在ABR上定义完全即可。

R4(config)#router ospf 1 
R4(config-router)#area 2 nssa no-summary 

接下来我们聊一下出环的事情,这个环是怎么出的?
我们知道一般末梢区域是不会连ISP的,连接ISP的是区域0,但是当末梢区域要访问运营商时,会使用缺省指向区域0,由区域0通过缺省发给运营商。因此环也是这样出的,如果把一个末梢区域连接了ISP,然后区域0访问ISP时缺省指向该末梢区域,但是该末梢区域由于自动产生了3类缺省又会指向区域0,这样就出环了。

注:
①ISP所在位置的非骨干区域不得配置为任何的特殊区域。
②若ISP连接在其它的协议时,连接该协议的非骨干区域也不得配置为任何特殊区域。

三、OSPF的数据库表:

首先我们知道OSPF协议基于LSU(包、相当于打包在一起)来共享LSA信息。
LSA:描述了路由器所有的链路、接口、路由器的邻居以及链路状态信息。
OSPF会在不同的条件下发出不同类别的LSA

详细查看某条LSA
R1#show ip ospf database router 1.1.1.1

router:类别名
1.1.1.1:link-id

接下来我要说明的是各种LSA,LSA总共有11种,这里我只介绍1、2、3、4、5、7类LSA。
我们先宏观的讲:无论哪种类别的LSA必携带**以下参数:

参数 注解 详细
LS Age 老化时间 周期为1800归0,也可触发归0,最大老化时间3609秒
Option 选项 这里不做介绍
LS Type 类别名 标注此类LSA是属于哪种LSA
Link State ID 在目录中的编号 这个编号是方便我们去打开它
Advertising Router 通告者的RID
LS Seq Number 序列号 使用棒棒糖规则,杆和圈(循环阶段)
Checksum 校验和
Length 长度
Number of links 包含的信息条数

LSA1:路由器

首先,我会以下面这张图为基础讲解各种LSA。
在这里插入图片描述
我们查看一下R1的路由器的LSA,图中显示它的通告者就是自己,等信息。 在这里插入图片描述
下面这张图是它携带的信息:我们发现都是直连的拓扑。它的传播范围是本区域,Link-ID为通过者的RID,且本区域的所有设备均为通告者。
在这里插入图片描述

(1)LSA1的链路类型:

这类LSA存在3种链路类型:
①stub:末梢网络,例如环回
②transit:在传递一类LSA时会产生二类LSA描述完整拓扑,通告DR的位置。
③p2p(点到点):串型链路中为该链路类型。

LSA2:网络

这张图是目录信息,我们一会儿打开第一个看看。
在这里插入图片描述
下图是R1的网络LSA,里面包含了掩码和这个MA网段所包含的设备的RID。当收到这条LSA的设备,便知道这个MA网段中都包含了哪些设备,它的传播范围也是本区域。

除此之外显示通告者为2.2.2.2,通过显示邻居表发现,R2就是DR,Link-ID为DR的接口IP地址。
在这里插入图片描述

LSA3:网络汇总LSA

要想出现3类LSA,就需要在上图添加一个路由器,然后把它划到区域1
在这里插入图片描述
R1上show ip ospf database,我们可以看到出现了3类LSA
在这里插入图片描述
我们把它打开其中一条详细查看一下:
在这里插入图片描述
我们发现这其实就是一条路由,里面包含目标网络号,还有度量值,传播的范围为整个OSPF域。

这条LSA携带的是O IA域间路由,就是去往OSPF其它区域中的网段,通告者是ABR,至于如何到ABR,就用LSA1、2进行计算,在之后其它的ABR收到该条3类LSA之后,便会将通告者修改为本地。

LSA5:自治系统外部LSA

先将5类LSA,之后引出4类。

我们将上图再稍加修改,为R4添加一个环回,然后让R4运行EIGRP宣告该环回,再通过重发布技术把它发进OSPF域中。
在这里插入图片描述
之后R1上就会出现下面这条O E2域外路由
在这里插入图片描述
接着我们查看一下OSPF的数据库表,发现了产生了一个5类的LSA:
在这里插入图片描述
我们打开这个目录,进行详细的查看:
在这里插入图片描述
因此,该类LSA它的传播范围为整个OSPF域,通告者为ASBR 4.4.4.4,携带的信息是 O E 域外路由,Link-ID为99.0.0.0(目标网络号)。

注:我们发现它的通告者是4.4.4.4,而不是2.2.2.2,这个不像我们之前提到的LSA3,在经过下一跳ABR的时候会将通告者修改为本地,它没有发生改变,这就违背了拓扑算路由。那么R1、R2是如何找到ASBR 4.4.4.4的位置呢?这就是我接下来要讲的LSA4

LSA4:ASBR汇总LSA

将上述环回重发布的时候,4、5类LSA均会同时产生,因此我们直接查看OSPF的数据库表就会发现4类LSA:
在这里插入图片描述
我们解开这条目录:
在这里插入图片描述
它的传播范围是除了ASBR所在区域外的整个OSPF域,上面这张图就说明了Link-ID为4.4.4.4,通告者为3.3.3.3,意思就是说要想去4.4.4.4这个网段找3.3.3.3,此时R1、R2、就知道了ASBR的位置了,接着利用LSA5就可以找到目标了。

如果还有其它ABR,那么在经过下一跳ABR时,也需要将通告者修改为本地。

LSA7:NSSA外部LSA

在这里插入图片描述
7类LSA是指在非完全末梢区域内(not-so-stubby area)由ASBR(由ABR2充当)发出的通告外部区域的LSA,因此图中的ABR2路由器将把与NSSA区域相连的接口收到的类型7的LSA转换成类型5的LSA洪泛到整个骨干区域中去,从而也洪泛扩散到其他的区域中去。.

而这些原本的7类LSA其实就是5类,只不过将区域2设置为NSSA后,把5类变成了7类,7类透过area2,到达ABR2时,向OSPF其它域通告时,在将它从7类转为5类。(这里可以看文章前面,更详细)

这张图与我画的所有的拓扑都没关系,看看7类LSA长什么样好。
在这里插入图片描述

LSA总结:

类别 类别名 传播范围 通告者 携带信息 Link-ID 通告者
LSA1 router
路由器
本区域 本地区域所有设备 本地直连拓扑 通告者的RID 本地区域所有设备
LSA2 network
网络
本区域 DR MA网段部分的拓扑 DR的接口IP地址 DR
LSA3 Summary Network
网络汇总
整个OSPF域 ABR O IA域间路由 O IA路由
目标网络号
ABR,在经过下一跳ABR时,修改为本地
LSA4 asbr-summary
ASBR汇总LSA
除ASBR所在区域外的整个OSPF域 ABR ASBR位置 ASBR的RID ABR,在经过下一跳ABR时,修改为本地
LSA5 External
自治系统外部LSA
整个OSPF域 ASBR O E域外路由 O E路由,目标网络号 ASBR(不修改)
LSA7 NSSA外部LSA NSSA区域内
(离开该区域后转回5类)
ASBR O N域外路由 O N路由,目标网络号 ASBR(不修改)

四、扩展配置:

1、认证:

(1)接口认证:

①接口明文:

//连接邻居的接口上配置
R1(config)#interface s1/1              
// 开启接口明文认证需要,开启后本地hello包中认证类型字段被修改,若邻居间不一致,将无法建立邻居关系
R1(config-if)#ip ospf authentication  
//定义明文认证的秘钥
R1(config-if)#ip ospf authentication-key cisco  

②接口密文

R2(config)#interface s1/1
//开启密文认证需要
R2(config-if)#ip ospf authentication message-digest  
//配置秘钥及编号
R2(config-if)#ip ospf message-digest-key 1 md5 cisco123  

(2)区域认证:

例:在R1上开启关于区域0的明文或密文认证,实际就是在R1上所有的区域0接口配置了明文或密文的认证需求,修改了认证类型字段而已。

接口的秘钥还需要到各个接口上逐一匹配

R2(config)#router ospf 1 
//区域明文
R2(config-router)#area 1 authentication
//区域密文
R2(config-router)#area 1 authentication  message-digest 

(3)虚链路认证:

明文认证

//开启明文认证需求
R2(config-router)#area 1 virtual-link 4.4.4.4 authentication  
//在配明文认证密码:cisco
R2(config-router)#area 1 virtual-link 4.4.4.4 authentication-key cisco 

密文认证

r2(config-router)#area 1 virtual-link 4.4.4.4 authentication message-digest
r2(config-router)#area 1 virtual-link 4.4.4.4 message-digest-key 1 md5 cisco123 

2、被动接口:

被动接口:只接收不发送路由协议信息,仅用于连接用户的接口,不得用于连接邻居的接口

R2(config)#router ospf 1 
R2(config-router)#passive-interface f0/0

3、加快收敛:

R2(config)#interface s1/1
//修改hello time
R2(config-if)#ip ospf hello-interval 10  
//修改dead time
R2(config-if)#ip ospf dead-interval 40  

切记:修改本端的hello time,本端的dead time将自动4倍关系匹配,且邻居间hello 和 dead time必须一致。

4、缺省路由:

OSPF的缺省有3种:分别是3、5、7类缺省,其中5类比较重要。

(1)3类缺省:

3类缺省特殊区域(末梢、完全末梢、完全NSSA)中连接骨干区域的ABR自动产生3类缺省

普通的NSSA区域不产生缺省,需要人工添加

(2)5类缺省:

将area1设置为特殊区域后,ABR会自动下放3类缺省给area1中的设备,此时ASBR也会学到一个3类缺省。接着我们让该ASBR做重发布,该ASBR会将这条3类缺省发放给area2中的设备。
在这里插入图片描述
5类缺省是由重发布产生,前提是本地(ASBR)路由表中已经拥有缺省路由(任何方式获取均可),满足前提后,需要专用的重发布命令

ASBR(config)#router ospf 1
ASBR(config-router)#default-information originate

当把该条命令一敲,它就会把自己路由表中的缺省路由重发布到area2区域内,这样area2中就会存在一个 O*E2的5类缺省。
默认导入的路由为类型2(O*E2),不叠加内部度量,种子度量1。

//修改种子度量和类型
R1(config-router)#default-information originate ?
metric       OSPF default metric
metric-type  OSPF metric type for default routes

如果本地路由表中还没有缺省路由,又希望强制向area2域内发放缺省路由。

R1(config-router)#default-information originate always
默认导入的路由为类型2,种子度量1

修改种子度量和类型:

R1(config-router)#default-information originate always ?
  metric       OSPF default metric
  metric-type  OSPF metric type for default routes

(3)7类缺省:

这类缺省比较少见,我们知道7类是只有NSSA区域产生之后才会出现的缺省。
在这里插入图片描述
7类缺省产生的条件是:正常仅在普通的NSSA环境配置,因为普通的NSSA不自动产生缺省路由,故需要在区域0和NSSA区域间的ABR上,向NSSA区域发布一条缺省路由。

R1(config-router)#area 1 nssa default-information-originate
默认进入路由为类型2,种子度量为1

修改种子度量和类型:

R1(config-router)#area 1 nssa default-information-originate ?
  metric             OSPF default metric
  metric-type        OSPF metric type for default routes

切记:一旦本地为完全NSSA区域,若再导入7类缺省必然产生环路,只有普通的NSSA区域可以导入。

若一台设备同时学习到不同类别的缺省路由规则:
内部优于外部:3类优于5、7类
若5、7类相遇,先比管理距离再比较度量,越小越优选;若度量一致,5类优于7类。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章