【HCIP】OSPF协议(三)

 G Z H : 数通那点事

目录

一、OSPF邻接关系建立过程

二、OSPF的6中LSA

三、OSPF的4种区域


一、OSPF邻接关系建立过程

路由器在建立OSPF邻接关系的过程中,主要包含down、int、2-way、exstart、loading、exchange、full 七种状态。

      我们还是以上篇文章的OSPF拓扑为主要研究对象。

       通过对R1的接口进行抓包,我们可以观察在建立邻接关系时,各报文的流转。具体如下图:

下面详细介绍邻接关系的建立流程:

1.当R1的G0接口(后面我们成为接口1)和R2的G0(后面我们称为接口2)接口宣告到OSPF协议的Area0区域后,两个端口会向OSPF的组播地址224.0.0.5发送hello报文,此时的hello报文用于探测邻居的存在,报文中没有DR、BDR和邻居的信息。

在宣告前,两个借口状态均为down,在发出上面的hello报文后,接口状态变为int状态。

2.当两个接口探测到对方的存在后,会将对方的router id加到自身的hello报文的actvie neighbor中,并再次通过发送hello报文选举出DR和BDR。

当收到对端router id后,接口状态为2-way。然后判断是否需要选举DR和BDR(我们在hcia中提到过,并不是所有的情况都要选举DR和BDR)。

3.两个接口选举完DR和BDR之后,会以单播的形式发送DD报文,此DD报文用于选举主从路由,(init=1,m=1,ms=1)

此时,两个接口均为exstart。

4.比较完router id以后,从路由器首先发送含有LSA摘要的DD报文,此DD报文中的参数(init=0,m=0,ms=0)。

从路由(路由1)发送完含有LSA摘要的DD报文后,从路由的状态为exchange,主路由(路由2)​的状态为exstart。

5.主路由器(路由2)收到从路由(路由1)的DD报文后,

      (1)会与自己的Lsdb进行比对,并将需要更新的LSA条目,用LSR报文告诉从路由器。

      (2)发送包含自己LSA条目的DD报文给从路由。

    此时从路由为loading,主路由为exchange。

6.从路由器收到主路由器的LSR报文后,会根据其需求,将LSA的详细条目,放入LSU报文中,以单播的方式发送。

      当收到主路由的DD报文后,会对比自身lsdb,将需要的lsa条目,用LSR报文告诉从路由。

       同时,发送DD报文,里面不含任何信息,只是用于隐式确认,表示已经更新完毕lsa条目。

此时,主路由器为loading状态。

7.主路由收到从路由的LSR报文后,发送LSU报文给从路由,用于其更新lsdb。

      然后,主从路由都会以组播的形式,发送自己的LSU报文,其中包含了,自身的lsa条目,用于各路由之间的对比。

      最后,各路由同样以组播的形式,发送LSAck报文(内含更新的lsa摘要)用于确定lsdb更新完毕。

      此时,两个路由器进入full状态。

      需要注意的是:各报文发送方式具体是单播还是组播,这个与OSPF的网络类型有关,这个我们在[Hcia]No.11  OSPF(二)的文章中有过具体阐述,本篇文章是在广播类型下进行的,有兴趣的朋友可以进行比对。

二、OSPF的6中LSA

在Hcia阶段,我们介绍过OSPF常用的LSA类型主要为1、2、3、4、5、7共6种LSA。

      今天我们主要对OSPF的1类、2类、3类LSA进行梳理。为此我们搭设OSPF网络如下图:

    区域0为广播类型,R1的G0口(以下简称接口1)和R2的G0口(以下简称接口2)宣告到区域0中。R2的S0口(以下简称串口1) 和R4的S0口(以下简称串口2)宣告到区域1中。区域1为p2p网络类型。具体配置不在赘述。

     我们在R2路由器上,查看lsdb如下图。(命令为:[R2]display  ospf  lsdb)

1类Lsa:

(1)主要描述的是与该路由的直连接口的链路信息;

(2)每个路由器都会生成一条1类Lsa条目;

(3)1类Lsa的类型有四种,分别为p2p、stubnet、transnet、vlink;

(4)Lsa内部各要素的含义:

     我们可以看出,在2.2.2.2的lsdb中,包含3种1类Lsa。

Transnet类型:

其中:

      type:表示Lsa的类型,router表示1类Lsa;

       Ls id:表示该lsa的名称;

       adv rtr:表示产生该lsa的路由器;

       Ls age:表示老化时间,初始为0,3600为老化;

       Len:表示Lsa的报文长度;

     seq:序列号,用于比较Lsa的新旧;

     Checksum:校验和

     Link count:链路信息的数量

            Link id:表示伪节点的信息

            Data:表示自身连接伪节点的IP

            link type:描述1类Lsa的类型,transnet表示为广播或NBMA类型

            Metric:开销值

P2P类型:

  其中,Lsa头部信息都相同,不再叙述:

         Link id:表示邻居信息;

         Data:表示自身与邻居相连的接口;

         Link type:描述1类Lsa的类型,p2p表示网络类型为P2P,

         Metric:表示链路的开销值。

stubnet类型:

          Link id:自身直连的路由网络号;

         Data:表示该网络号的掩码;

         Link type:表示为节点信息;

         Metric:表示链路的开销值。

vlink为虚链路的Lsa,后期涉及到在说。

2类Lsa:

(1)主要在广播或者NBMA网络类型中,用于描述伪节点的信息;

(2)Lsa内部各要素如下图:

       type:表示lsa类型,network表示为2类Lsa;

        Attached router:表示邻居路由

3类Lsa:

(1)主要是将不同区域内的1类Lsa和2类Lsa进行转换,以便于其在不同区域中进行传递。

(2)只有ABR路由才能进行转换,且3类Lsa在本区域内泛洪。

(3)3类Lsa各要素的含义:

与上图对比来看:

      1、2、 3类Lsa描述的都是opsf域内的链路信息,下面说的4,5,7类Lsa是用于传递外部链路信息。

我们讲了OSPF协议里的1类,2类,3类Lsa,这三类Lsa主要是传递的OSPF协议内的链路信息,然而,我们日常生活中,不可能所有的路由器都运行ospf协议,这就涉及到外部路由引入的概念,就是将非ospf协议的路由信息,宣告进ospf协议中。具体配置为:

[ospf进程]import-router  static(路由协议,这里显示的是静态路由)

      我们先搭设一个简要的拓扑。

       上图中,分别有3个area区域,R4为外部路由,R3的G0口没有宣告到OSPF中,而是在R3中加一条静态路由,从而找到R4的loopback0口。

       在R3上,通过刚才学到的外部路由引入,将这条静态路由引入到ospf中。

      R5的loopback0也没有宣告进ospf中,而是一条直连的外部路由。

       根据Hcia学过的配置命令,我们将上图网络配置完毕后,将外部路由引入ospf中,在R1上查看ospf的lsdb信息:

我们发现,出现两种新类型的lsa条目,分别是sum-asbr,external。这就是我们今天说的4类,5类Lsa。

5类Lsa:

(1)当外部路由被引入到ospf协议中时,连接外部路由的路由器(例如图中的R3路由器)会被置位为asbr路由,并发送1条1类Lsa信息,告诉邻居,我为asbr,而后,将外部路由信息,以5类Lsa的形式,进行转发。

(2)5类Lsa是在ospf全区域内进行转发的。

(3)5类Lsa的要素

        type:表示Lsa类型,External表示为5类Lsa;

       Ls id:表示路由信息的网络号;

       adv rtr:表示通告者的router-id:

       E type:asbr到达目标网络cost的计算类型,默认为2,表示只计算asbr到目标网络的cost值;可更改为1,表示除了计算上述的cost值,还要再+自身到达asbr的cost值。

       Forwarding  address:用来做ospf链路优化,如果Fa为0.0.0.0,那么去往外部路由会通过adv rtr。如果Fa有具体的ip,那么去往外部路由,会通过Fa的地址去往外部路由。

4类Lsa:

(1)4类lsa的是asbr发送的1类Lsa转换而来的,主要的作用是告诉其他区域可以通我来找5类Lsa所包含的链路状态信息。

(2)4类Lsa是由Abr产生的,并在ospf的本区域内进行泛洪。这也就是为什么area0和area1中都有一个4类lsa,而只有5类Lsa是单独的一条。

(3)4类Lsa的要素:

    type:表示Lsa的类型,sum-asbr表示该Lsa为4类Lsa;

    Ls id:表示asbr的路由名称;

    adv rtr:表示可以去往asbr的路由名称,在abr路由器上,会进行再次转换,比如上图,R1知道要找Asbr可以通过R2路由器,同时R1通过对4类Lsa的进行更新,告诉区域2的路由,通过我可以找到asbr。

    其余要素和其他Lsa相同。

7类Lsa:

(1)7类Lsa是Nssa区域用于引入外部路由时生成的Lsa;

(2)7类Lsa只能在本区域内泛洪;

(3)7类Lsa往其他区域传递时,abr会将7类Lsa转换为5类Lsa,在其他区域内泛洪。

(4)7类Lsa的要素:

      type:表示Lsa类型,nssa为7类lsa

      Ls  id:表示宣告路由信息的网络号;

     Adv  rtr:表示通告者;

    其余的内容和5类Lsa完全一致,7类lsa就是为了解决特殊区域引入外部路由问题而产生的,可以简单的理解为nssa区域的7类相当于普通区域的5类。

三、OSPF的4种区域

OSPF中的区域分为骨干区域(area0)和非骨干区域(非area0)。为了进一步优化Lsdb,减少非骨干区域的链路状态信息,Ospf在非骨干区域定义了四种特殊区域:stub区域,完全stub区域,nssa区域,完全nssa区域。

首先我们搭建一个实验网络拓扑:

      将R5的4个环回接口,以静态路由的形式宣告到ospf协议中。在R1上观察lsdb的信息:

     大家可以看一下图中1类,2类,3类,4类,5类Lsa各有多少条。以便我们与特殊区域内的lsdb进行比对。

      

stub区域:

(1)主要用于阻止4类和5类Lsa在stub区域内的泛洪。

(2)同时生成一条3类的默认路由,用于与其他区域的路由进行通联。

(3)主要配置命令:

    [区域]stub

   这个配置需要在本区域的所有路由器上进行。

(4)stub区域的lsdb信息:

      不论去往R5外部的哪一个网段,我们都需要通过R2路由器,因此,在ospf的stub区域中,用一条3类的缺省,替换了区域中的所有4类和5类lsa。

完全stub区域:

(1)主要作用在stub的基础上,阻止3类lsa的传播,同时保留3类的默认lsa。

(2)主要配置命令:

    [区域]stub  no-summary

   这个只需要在ABR路由器上配置,其他区域配置为stub即可。

(3)完全stub区域的lsdb信息:

    实验中,当配置为完全stub区域后,区域1内只维护2条1类,1条2类,1条3类默认。

nssa区域:

(1)stub区域的不足:

   当我们将ospf的area1区域设置为stub或者完全stub区域后,我们是无法将R1上的外部路由引入到ospf协议中的。

    因此,为了解决这类问题,ospf引入nssa区域的概念,就是让stub区域可以引入外部路由,使R1上的外部路由在ospf的nssa区域内以7类lsa的形式进行传递。原来stub区域内的3类默认以7类默认来替代。

(2)主要配置命令:

     [区域]nssa

     区域内的所有路由器都需要配置为nssa模式。

(3)nssa区域的lsdb信息:

完全nssa区域:

(1)主要作用是,在nssa的基础上,阻止将3类Lsa在区域内的泛洪,从而生成一条3类默认lsa。

(2)主要配置命令:

    [区域]nssa  no-summary

    这里只需要在与其他ospf的区域相连的路由器上配置(R2),其余路由器配置nssa即可。

(3)完全nssa区域的lsdb信息:

   我们可以看到,这里既有一个3类的默认,还有一个7类的默认,路由器在选择链路状态信息进行路由加表时,会按照:1类>2类>3类>外部的优先级进行。所以,R1会选择3类的lsa进行路由加表。

     

      以上就是ospf协议的4个特殊区域。有什么不明白的地方记得联系我们!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值