当OSPF邻居建立的过程之中,路由器在和邻居达到完全邻接关系之前,要经过几个状态。这些状态在OSPF RFC2328有相关的定义,这些状态分别是Down, Attempt, Init, 2-Way, Exstart, Exchange, Loading和Full。本文将介绍一下各种状态的详细工作内容。

 

Down

  这是第一个OSPF邻居状态,在这个状态下路由器没有从邻居那收到任何信息(包括hello包),不过在这个状态下,路由器可以主动发出hello包给自己的邻居。

  当路由器之间是Full状态的时候,如果在RouterDeadInterval时间段内(4倍的默认HelloInterval)没有从邻居收到任何hello包,或者手工配置的邻居信息被移除,那么邻居状态会从Full变为Down.

Attempt

  Attempt状态仅仅存在与NBMA网络中手工配置邻居的情况下。在这个状态下,路由器发送单播的hello包给邻居而且在dead interval超时之前没有收到邻居发过来的hello包。

Init

  Init状态说明了路由器已经收到了来自邻居发送的hello包,但是hello包中没有包含发送者的RID。当路由器从邻居接受hello包时,封包里面应该包含发送的RID信息,以确保这是一个可认知的hello包。

2-Way

  2-Way状态说明了两台路由器之间已经建立了双向的链接,每一个路由器都已经收到了对方的hello包。这个状态发生在路由器收到了一个包含自己Router ID的hello包。在这个状态下,路由器决定是否要去跟邻居建立临接关系。在广播和NBMA网络类型中,一个路由器仅与designated router (DR) 和 backup designated router (BDR)建立Full状态关系,而和其他路由器最终停留在2-way状态。在点对点和电对多点网络类型中,路由器和所有相连接的路由器最终都达到Full状态。

  在2-Way状态的结束之前,广播网络和NBMA网络类型中的DR和BDR选举出来。

  注意:在init状态下接受到邻居发来的Database Descriptor (DBD)包也会导致路由器转变成2-way状态。

Exstart

  一旦DR和BDR选举出来,真正的链路状态信息交换才会发生在路由器和DR,BDR之间。

  在Exstart状态下,路由器和它的DR, BDR建立了一种master-slave的关系并且选择一个初始的sequence number来形成临接。拥有更高的Router ID的路由器将会成为master并且开始交换信息,同时master也是唯一一个可以增加sequence number的路由器。需要注意的是,逻辑上可以认为DR/BDR中拥有更高的Router ID的一个可以成为master。但是请记住,DR/BDR的选举可能会因为手工配置了priority而不一样,不仅仅依赖与Router ID。因此有可能DR会在这个状态下充当slave状态。

Exchange

  在Exchange状态下,OSPF路由器交换database descriptor (DBD)包。DBD包含了链路状态通告(LSA)头部文件,并且描述了整个链路状态数据库的内容。每一个DBD报文都含有一个sequence number,并且这个号码会每一次被master增加。在Exchange状态下,路由器同时会发送链路状态请求报文(LSR)和链路状态更新报文(LSU)。接收到的DBD报文会和路由器链路状态数据库进行比较以确保是否有任何新的或者更多的链路状态信息是可用的。

Loading

  在Loading状态下,发生的是真正的链路状态信息交换。基于DBD报文所提供的信息,路由器会发送链路状态请求报文。邻居会在链路状态更新报文中提供相应的链路状态信息。在临接关系下,如果一个路由器收到了一个过期或者丢失了LSA,它会发送一个LSR请求相应的LSA。所有链路状态更新数据包都会在这个状态下达到同步。

Full

  在Full状态下,路由器和其邻居会达到完全临接状态。所有路由器和网络LSA都会交换并且路由器数据库达到同步。

  Full状态是OSPF路由器的一个最常见的状态。如果一个路由器停留在另外一个状态,那么就说明了在路由器建立临接关系的过程中是存在问题的。唯一的例外是2-way状态,是在广播网络中常见的。在广播网络中,邻居之间(除了和DR,BDR之外)会最终处于2-way状态。

OSPF邻居状态机的更多相关文章

  1. 路由软件quagga和bird日志配置打印ospf邻居变化

    背景: 网络侧反馈偶尔会出现ospf邻居状态变化:full-> other status -> full.历史原因,线上运行的路由软件有quagga和bird两种.两种路由软件的日志级别配 ...

  2. IEEP部署企业级网络工程-OSPF邻居关系故障排除

    OSPF邻居关系故障-现象与排除 一.OSPF邻居关系故障-现象与排除 1.OSPF建立邻居关系时,将检验hello报文中的Area ID .Autype.Authentication.network ...

  3. Renix软件如何建立OSPF邻居——网络测试仪实操

    OSPF可以通过OSPF向导的方式方便的创建OSPF邻居, 也可以通过纯手工的方式创建OSPF邻居, 本文介绍的是纯手工的方式创建. 在工作中, 推荐使用OSPF向导的方式来创建, 会比较简单和高效. ...

  4. ospf邻居建立过程

    1. hello报文的作用 邻居发现:自动发现邻居路由器. 邻居建立:完成Hello报文中的参数协商,建立邻居关系. 邻居保持:通过Keepalive机制,检测邻居运行状态. hello报文的发送时间 ...

  5. ros建立ospf邻居的条件

    Two routers do not become neighbors unless the following conditions are met. Two way communication b ...

  6. H3C 显示OSPF邻居信息

  7. OSPF相关知识与实例配置【第一部分】

    OSPF相关知识与实例配置[基本知识及多区域配置] OSPF(开放式最短路径优先协议)是一个基于链路状态的IGP,相比于RIP有无环路:收敛快:扩展性好等优点,也是现在用的最多的:所以这次实验就针对于 ...

  8. 《OSPF和IS-IS详解》

    <OSPF和IS-IS详解> 基本信息 作者: (美)Jeff Doyle 译者: 孙余强 出版社:人民邮电出版社 ISBN:9787115347886 上架时间:2014-4-25 出版 ...

  9. 开放式最短路径优先OSPF

    1.OSPF基本知识 OSPF作为基于链路状态的协议,解决了RIP在收敛慢,路由环路,可扩展性差等问题,还有以下优点: 采用组播方式发布报文,可以减少对其他不运行ospf路由器的影响 ospf直尺无类 ...

随机推荐

  1. 群主微信sdk说明地址

    群主微信sdk说明地址官网地址:http://weixin.senparc.com/ 源代码及最新更新:https://github.com/JeffreySu/WeiXinMPSDK 最新DLL发布 ...

  2. TCP三次握手,四次分手

    1.什么是HTTP连接 http是建立在TCP协议之上的一种应用. 最显著的特点是每次请求,都需要服务器响应,请求结束后,会主动释放连接. 1)在HTTP 1.0中,客户端的每次请求都要建立一次单独的 ...

  3. vim学习日志(7):替换、删除文件中的字符

    vim全局替换文件: 语法为 :[addr]s/源字符串/目的字符串/[option] 全局替换命令为::%s/源字符串/目的字符串/g [addr] 表示检索范围,省略时表示当前行. 如:“1,20 ...

  4. Android 开发添加控件事件的三种方式

    import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view ...

  5. EntityFramework安装和EF升级方法

    例如:如何在vs2010上安装EntityFramework5.0? 首先,需要安装一个vs插件,名称为NuGet Package Manager,微软官方发布的,其作用就是为vs工程项目自动下载.安 ...

  6. Scala中的foreach forall exists map函数及其区别

    forall 对集合中的元素进行某个判断,全部为true则返回true,反之返回false. 例如: scala> var s = List("hello", "w ...

  7. 多媒体文件格式之ASF

    [时间:2016-06] [状态:Open] ASF,全称Advanced Systems Format,是由微软提出的开放封装格式标准.ASF是微软公司Windows Media的核心.这是一种包含 ...

  8. Java使用HttpClient实现Post请求

    http://www.cnblogs.com/mengrennwpu/p/6418114.html ******************************************* 基于项目需求 ...

  9. LeetCode: Gas Station 解题报告

    Gas Station There are N gas stations along a circular route, where the amount of gas at station i is ...

  10. mybatis批量更新的两种实现方式

    mapper.xml文件,后台传入一个对象集合,另外如果是mysql数据库,一点在配置文件上加上&allowMultiQueries=true,这样才可以执行多条sql,以下为mysql: & ...