专栏首页python3OSPF-5种报文、3个阶段、3张表

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

在理解OSPF各种报文之前,需先清楚OSPF协议,通过下面图例帮助理解(口诀:5种报文、3个阶段、3张表)

(Notice:OSPF报文头部24字节)

1、3个阶段

邻居发现阶段:     直连路由器形成邻居关系,在broadcast和NBMA中还要选举DR/BDR

路由发现阶段:       同一个区域内所有路由器LSDB同步

路由选择阶段:     LSDB同步后,进行路由计算,最佳路由信息进路由表。

2、3张表

邻居表(neighbor table):       OSPF用邻居机制来发现和维持路由的存在,邻居表存储了双向通信的OSPF路由器列表。

拓扑表  LSDB:       OSPF用LSA(link state Advertisement 链路状态通告)来描述网络拓扑信息, LSA存储在LSDB中。

全局路由表       路由器的全局路由表,用于数据包转发;OSPF把计算出来的路由,安装到全局路由表。

3、5种报文(Notice:每种报文都包括24字节的OSPF报文头部)

(1)Hello:建立和维护OSPF邻居关系。

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。

(Notice:选举Master/Slave的报文不包含LSA头部)

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。

(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

(4)LSU:链路状态更新(包含一条或多条LSA)。

Number Of LSAs:LSA的数量,一个更新报文可以携带多个LSA

(Notice:下面就是具体的LSA,将在以后的文章中介绍)

(5)LSAck:对LSU中的LSA进行确认。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python 提案

    PEP是Python增强提案(Python Enhancement Proposal)的缩写。https://www.python.org/dev/peps/ ...

    用户2398817
  • 3.HTTP报文内的HTTP信息

    HTTP通信过程包括从客户端发往服务端的请求及从服务端返回客户端的响应.本章就来让我们了解一下请求和响应是怎么运作的.

    用户2398817
  • Scrapy持久化存储

      保证爬虫文件的parse方法中有可迭代类型对象(通常为列表or字典)的返回,该返回值可以通过终端指令的形式写入指定格式的文件中进行持久化操作;

    用户2398817
  • 看了这些愚蠢的智能硬件,整个假期人都不好了

    镁客网
  • DeepCTR-Torch:基于深度学习的CTR预测算法库

    在计算广告和推荐系统中,CTR预估一直是一个核心问题。无论在工业界还是学术界都是一个热点研究问题,近年来也有若干相关的算法竞赛陆续举办。本文介绍一个使用PyTo...

    石晓文
  • 简单易学的机器学习算法——极限学习机(ELM)

           极限学习机(Extreme Learning Machine) ELM,是由黄广斌提出来的求解单隐层神经网络的算法。

    zhaozhiyong
  • 容器云之K8s自动化安装方式的选择

    目前kubernetes 已经发展到1.5的时代,但在这之前学习和使用kubernetes还是走了不少弯路,第一个问题就是安装,也许你会说安装很简单。照着官网或...

    yuanyi928
  • 埃森哲:2016 技术趋势与展望

    2016年,数字化技术变革将主导各个经济领域。要适应这场数字化冲击,企业必须从文化和管理思路上做出改变。《2016埃森哲技术趋势与展望》提出企业数字化成功转型的...

    华章科技
  • Flutter 约束宽高比的控件 AspectRatio

    撸码前有个点要注意一下,文档上面说了, 该widget 首先会尝试布局约束所允许的最大宽度。

    Flutter笔记
  • 备战阿里面试的经历:如何在一晚上拿到阿里offer的?(获得offer却没去)

    网上的面试题很多,但是讲解备战面试经历的文章很少,这篇文章从简历到模拟面试再到面试都有详细的讲解,十分难得,推荐给大家一起学习下。下文中的我指的是作者七分熟pi...

    Android技术干货分享

扫码关注云+社区

领取腾讯云代金券