OSPF邻接关系建立过程剖析

在OSPF网络中,为了交换路由信息,邻居设备之间首先要建立邻接关系,邻居(Neighbors)关系和邻接(Adjacencies)关系是两个不同的概念。邻居关系:OSPF设备启动后,会通过OSPF接口向外发送Hello报文,收到Hello报文的OSPF设备会检查报文中所定义的参数,如果双方一致就会形成邻居关系,两端设备互为邻居。邻接关系:形成邻居关系后,如果两端设备成功交换DD报文和LSA,才建立邻接关系。

OSPF状态机

OSPF共有8种状态机,分别是:Down、Attempt、Init、2-way、Exstart、Exchange、Loading、Full。

1、Down:邻居会话的初始阶段,表明没有在邻居失效时间间隔内收到来自邻居路由器的Hello数据包。

2、Attempt:该状态仅发生在NBMA网络中,表明对端在邻居失效时间间隔(dead interval)超时后仍然没有回复Hello报文。此时路由器依然每发送轮询Hello报文的时间间隔(poll interval)向对端发送Hello报文。

3、Init:收到Hello报文后状态为Init。

4、2-way:收到的Hello报文中包含有自己的Router ID,则状态为2-way;如果不需要形成邻接关系则邻居状态机就停留在此状态,否则进入Exstart状态。

5、Exstart:开始协商主从关系,并确定DD的序列号,此时状态为Exstart。

6、Exchange:主从关系协商完毕后开始交换DD报文,此时状态为Exchange。

7、Loading:DD报文交换完成即Exchange done,此时状态为Loading。

8、Full:LSR重传列表为空,此时状态为Full。

OSPF邻接关系建立过程图解:


注:此图为网图,谅解博主懒病犯了。哈哈。。

邻接关系建立过程详解(Broadcast类型):【对比着图更容易理解哦】

1、在Down状态下路由器发出第一个hello包。当R2收到一个Hello包,并且在这个hello包中看不到自已的ID,则将自已和邻居的关系转到Init状态。Init是一个one way 状态,当R1和R2都认识对方后就会进入2-Way状态。

2、当收到包含自己router-id的hello包时,将自己和邻居的状态置为2-way。在Two Way时,将选举DB/BDR(MA网络)。进入Two way状态后(即从Exstart开始),表示这两个路由器已经建立了邻居关系了。但最终能不能邻接关系要看最后是不是FULL。

3、Exstart:Exstart交互的是firstDBD,主要是用于选举主从关系(router-id大的为主),确定接下来DD报文的序列号(用主的序列号),为lsdb同步做准备。

进入Exstart状态后,R1和R2分别向对方发送firstDBD报文,并将I位置为1,代表是第一个DBD报文;M位置为1,代表不是最后一个DBD报文;MS位置为1,最初会自己认为自己是主。当收到对方的first DBD报文后,通过router-id选举出主从,由主来决定seq的值。

根据上图中能看到第二个DBD报文中包含seq值,第一个报文的seq值为n+1,以此类推。当主发送以此DBD报文,从必须给予一次回复,这是由于OSPF是基于IP的,没有确认机制,需要seq做隐式确认,保证了可靠性。

4、Exchange: Exchange是通过DBD交换LSA的头部信息。

5、Loading:等待收到M位为0的DD报文时,才进入loading。

进入Loading之后,R1开始向R2发送LS request报文,请求那些在Exchange状态下通过DD报文发现的,而且在本地LSDB中没有的链路状态信息。R2收到LS Request报文之后,向R1发送LS Update报文,在LS Update报文中,包含了那些被请求的链路状态的详细信息。R1收到LS Update报文之后,R1向R2发送LS Ack报文,确保信息传输的可靠性。

6、FULL:lsdb同步完成,邻接关系的完整建立。

转载来源:https://blog.51cto.com/xiaojiejt/1939388
©著作权归作者所有:来自51CTO博客作者SupermanNet的原创作品,如需转载,请注明出处,否则将追究法律责任

OSPF邻接关系的建立步骤相关推荐

  1. HCNP学习笔记之OSPF邻接关系的建立和LSDB同步

    HCNP学习笔记之OSPF协议原理及配置4-邻接关系的建立和LSDB同步 本文转自:https://blog.51cto.com/4625416/1678913 进入ExStart状态后,广播和NBM ...

  2. OSPF邻居关系建立的六个条件

    OSPF邻居关系建立的六个条件,缺一不可 1.Router ID不相同 2.Area 相同,两台设备处于相同区域 3.Authentication-type(验证类型)和Authentication- ...

  3. TI IPNC_RDK_V3.8.0开发环境建立步骤备忘

    TI IPNC_RDK_V3.8.0开发环境建立步骤备忘: # RDK installation steps:# 1.mkdir /usr/local/IPNC_RDK_V3.8.0 2.cd /us ...

  4. 大数据管理平台建立步骤_改善数据管理的7个步骤

    大数据管理平台建立步骤 Data has become one of the most valuable resources for business, providing key insights ...

  5. 众筹平台建立步骤有哪些

    当今社会众筹绝对是一个新鲜的词汇,它的出现所带来的意义和撼动也是非同一般的.作为连接支持者和项目发起人之间的服务平台,众筹平台的出现十分具有新意.它逐步推广了众筹这一种商业模式,将为大部分的中小项目提 ...

  6. STM32工程建立步骤

    最近在跟着B站的江科大自化协Up主学习STM32,STM32工程建立比较复杂,虽然在学习工程中为了方便都是复制粘贴工程文件夹,但为了以后使用其他类型的STM32芯片时创建工程目录,特意记录一下STM3 ...

  7. 人力资源管理计划—RACI表的建立步骤

    RACI表的建立步骤 RACI模型通常利用RACI表来帮助讨论.交流各个角色及相关责任.RACI表的建立步骤: 1. 辨识整个流程,找出各项活动,将它们记录在RACI表的左侧. 2. 辨识流程.活动中 ...

  8. OSPF 邻接关系建立

  9. ospf hello时间和dead_图文并茂解释OSPF邻居关系建立失败的几种常见情况(太实用了!)...

    网络工程师阿龙 中国网工圈最早的公益公众号(关注近5w+)! 关注 最近有人遇到OSPF邻居建立不起来,本期龙哥就与大家分享个人见解.如有讲错地方或有更好的见解欢迎评论区见哈~ 拓扑图 本期我讲以此拓 ...

最新文章

  1. 专访1药网技术副总裁黄哲铿:揭秘技术跨界管理之道
  2. Linux网络相关知识
  3. Python基础教程:字典(当索引不好用时)
  4. Linux / openwrt / Ubuntu 18.04 虚拟机中的 openwrt 如何联网
  5. 三年经验java工资,含爱奇艺,小米,腾讯,阿里
  6. 上海大厂Java面试经历:初步理解类加载运行机制和类加载过程
  7. 【TensorFlow】池化层max_pool中两种paddding操作
  8. PHP trim()函数详解
  9. php语言输出九九乘法表_PHP 输出九九乘法表
  10. linux内核实时补丁的实现,Canonical释出用于Ubuntu 18.04 LTS和16.04 LTS的新Linux内核实时补丁...
  11. java中滚动字幕做法_四种滚动字幕的方法
  12. 【裴礼文数学分析】例1.1.3
  13. H3C网络暑期培训大作业-某银行支行内部网络整改方案
  14. 图样图森破:认识WiFi以后
  15. 相比于深度学习,传统的机器学习算法难道就此没落了吗,还有必要去学习吗?
  16. DOS时代往事的回忆
  17. 一加6可以刷的rom_一加6刷机包
  18. Python应用之植物大战僵尸2-功夫世界BOSS关卡无限刷金币
  19. python实现lagrange函数
  20. 大数据助公交行业降成本提效率

热门文章

  1. 拼接大屏数据展示_可视化大屏的UI设计是根据哪几个方面来进行?
  2. c语言字符串定界符,关于c ++:按字符分割字符串
  3. python编的俄罗斯方块游戏_python编写俄罗斯方块
  4. java断点续传 http_http断点续传简单实现(java)
  5. mysql中 视图的优缺点_数据库视图优缺点分析
  6. java中广告维护轮播图怎么做_Banner广告轮播图
  7. 如何关闭Win11系统更新
  8. win7系统屏幕键盘打开教程
  9. php将get传参解析成数组,php解析url (parse_url) 参数成数组 (parse_str)
  10. Java面向对象编程篇4——内部类