OSPF-5种报文、3个阶段、3张表

发布时间:2019-09-20 07:34:44编辑:auto阅读(2492)

    在理解OSPF各种报文之前,需先清楚OSPF协议,通过下面图例帮助理解(口诀:5种报文、3个阶段、3张表)
    OSPF协商过程1
    (Notice:OSPF报文头部24字节)
    1、3个阶段
    邻居发现阶段:
        直连路由器形成邻居关系,在broadcast和NBMA中还要选举DR/BDR
    1
    路由发现阶段:
          同一个区域内所有路由器LSDB同步
    2
    路由选择阶段:
        LSDB同步后,进行路由计算,最佳路由信息进路由表。
    3
    2、3张表
    邻居表(neighbor table):
          OSPF用邻居机制来发现和维持路由的存在,邻居表存储了双向通信的OSPF路由器列表。
    4
    拓扑表  LSDB:
          OSPF用LSA(link state Advertisement 链路状态通告)来描述网络拓扑信息, LSA存储在LSDB中。
    5
    全局路由表
          路由器的全局路由表,用于数据包转发;OSPF把计算出来的路由,安装到全局路由表。
    6
    3、5种报文(Notice:每种报文都包括24字节的OSPF报文头部)
    (1)Hello:建立和维护OSPF邻居关系。
    8
    9
    OSPF报文头部分解介绍:
    Version(8bit):OSPF报文的版本,最新版本是版本2
    Message Type(8bit):报文的类型;1是Hello,2是DBD,3是LSR,4是LSU,5是LSAck
    Packet Length(16bit):整个OSPF报文的长度(24字节头部+各类报文的长度)
    Source OSPF Router(32bit):路由器的RID
    Area ID(32bit):区域ID
    Packet Checksum(16bit):整个报文的校验
    Auth Type(16bit):认证类型;0表示没有认证,1表示简单的口令认证,2表示MD5认证
    Auth Data(64bit):认证字段
    Hello报文分解介绍:
    Network Mask(32bit):网络掩码;如果这个掩码与接收该报文接口的掩码不一致,那么该报文将被丢弃,无法建立邻居关系
    Hello Interval(16bit):发送Hello报文的间隔时间,默认为10s,广播或NMBA默认为30s,如果与接收该报文接口的Hello Interval时间不一致,同样无法建立邻居关系
    Options(8bit):可选项;DC位表示是否具有支持按需电路上的OSPF能力,1支持,0不支持;NP位表示对NSSA的支持,1为NSSA区域,0为普通区域;MC位表示对IP组播的支持,E位表示对外部路由的支持能力,1支持,0不支持(Stub区域为0)
    Router Priority(8bit):路由器优先级;用作DR与BDR的选举,默认为1,当为0时,说明不具备选举能力
    Router Dead Interval(32bit):宣告邻居无效之前需要等待的时间,通常为4倍的Hello Interval,默认为40s,广播或NMBA默认为120s,如果双方不一致,无法建立邻居关系
    Designated Router(32bit):网络中指定路由器的接口的IP地址(Notice:并不是指定路由器的RID,而且并不一定是最后选举出来的DR,如果不存在,则被置为0.0.0.0
    Backup Designated Router(32bit):网络中备用指定路由器的接口的IP地址,(Notice:并不是备用指定路由器的RID,而且并不一定是最后选举出来的BDR,如果不存在,则被置为0.0.0.0
    Active Neighbor:有效的邻居列表
    (2)DBD:链路状态数据库描述信息(描述LSDB中LSA头部列表),OSPF邻居第一次建立时才交换DBD,LSR。
    1
    (Notice:选举Master/Slave的报文不包含LSA头部)
    7
    DBD报文分解介绍:
    MTU(16bit):在不分段的情况下,始发接口可接收的最大IP包大小。当报文在虚链路上传递时,这个字段是0x0000
    Options(8bit):可选项。在Hello报文中已做过介绍
    DB Description(8bit):前5位总是被置0,I位为1时,表示是第一个报文,为0时,表示不是第一个报文;M位为1时,表示不是最后一个报文,为0时表示是最后一个报文;MS 为1时,表示为主路由器,为0时表示为从路由器。口诀:初始情况下,器由器发送的是I、M、MS都为1的报文,表示这是第一个报文,不是最后一报文,且认为自己是主路由器。
    DD Sequence(32bit):DD报文序列号,由主路由器进行确定,后续报文依次增加。
    (LSA头部在以后文章中介绍)
    (3)LSR:链路状态请求。向OSPF邻居请求特定的LSA。
    3
    1
    (Notice:Link-State Advertisement Type、Link-State ID、Advertising Router三个参数唯一确定的是一个LSA,而不是唯一确定一条路由。request报文请求的是LSA,并不是某条特定的路由,比如LSA-1,我们会发现,对于在路由器上network通告的路由,对端路由器只会发送一个request请求报文,来请求对端network所有通告的路由。)
    Link-State Advertisement Type(32bit):链路状态类型号,主要有LSA-1(路由链路通告),LSA-2(网络链路通告),LSA-3(ABR汇总链路通告),LSA-4(ASBR汇总链路通告),LSA-5(自治系统扩展路由通告),LSA-7(非完全端区NSSA扩展)
    Link-State ID(32bit):链路状态ID,每种类型的LSA定义各不相同
    Advertising Router(32bit):始发LSA通行路由器的RID
    2 
    (4)LSU:链路状态更新(包含一条或多条LSA)。
    4
    6
    Number Of LSAs:LSA的数量,一个更新报文可以携带多个LSA
    (Notice:下面就是具体的LSA,将在以后的文章中介绍)
    (5)LSAck:对LSU中的LSA进行确认。
    5
    8

关键字