OSPF状态机分析

OSPF邻居状态机有7个:

Down-->Init---->2way--->exstart--->exchange--->loading--->full

状态机分析:

①Down

表示路由器本身既没有收到hello包也不对外发送hello包。这是OSPF建立交互关系的初始化状态。

②Init

路由器一方发送hello包,但不知道对方是否已经收到了自己发送的数据包。

③2-Way

当双方都收到各自发送的hello数据包时,称为2-Way状态。实现DR/BDR的选举。

DR:指定路由器    BDR:备份指定路由器

④Exstart

涉及两个DBD

主要用来选出主从关系(比较RID的大小,大的为主,小的为从)。

过程:路由A发送第一个DBD报文后,需要进行确认邻居B是否收到,确认方式为隐形确认,即B会发送一个DBD报文回复,作为确认。交互完毕,选出主从关系。

隐形确认机制:

DBD报文中的三个字段:

I:Init

M:More

M/S:Master/Slave

I字段置为1(表示为第一个DBD报文)

M字段置为1(表示不止一个,后面还会发出DBD报文)

M/S字段置为1(未比较时,初始自认为自己是Master,很正常嘛,谁都想当老大的

⑤Exchange

主从关系确立后,开始交换DBD报文,LSDB同步的第一个阶段,主要是建立LSDB的总体框架

也就是双方互发自己的全部LSDB信息。

⑥Loading

加载DBD,发送LSA,通过更新LSU,LSA报文,交互相互缺少的DD报文,完成LSDB同步。

⑦Full

交互完LSU,并发出LSAck确认后,将本地状态设置为Full状态。

时间: 2024-11-02 12:03:24

OSPF状态机分析的相关文章

Memcached 状态机分析

worker线程拿到了这个连接之后,就应该是分配给这个连接一个结构体,包括这个连接所有的状态,都写buf等,这个结构体就是conn,然后这个worker线程会在它自己的event_base加入对这个新的连接的事件的监听.上面也说过了worker的event_base有两套处理逻辑,一个对notify_ receive_fd的,还有一套是对新连接的.这个notify_ receive_fd的处理逻辑就是处理2个事件,一个是建立连接,一个是改变锁的粒度.连接有个状态机: 1.listening:这个

ospf状态机与对应报文

Ospf-type类型:Type==1:hello报文Type==2:DD报文Type==3:LSR报文Type==4:LSU报文Type==5:LSACK报文 报文类型hello报文详解:Hello报文用于发现及维护邻居关系,间隔是十秒发送一次,deadinterval是四十秒,意思是四十秒内如果没能收到邻居发来的hello报文,则认为邻居不存在,老化时间为deadinterval的3倍注意:hello报文的间隔可改动,相对应的deadinterval的时间也为它的4倍双方交换hello报文形

OSPF详解二之OSPF邻接关系剖析

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

OSPF相关知识与实例配置

OSPF相关知识与实例配置[基本知识及多区域配置] OSPF(开放式最短路径优先协议)是一个基于链路状态的IGP,相比于RIP有无环路:收敛快:扩展性好等优点,也是现在用的最多的:所以这次实验就针对于OSPF(HCNA)内容进行一个探究: 在说ospf配置前:我们先来了解下ospf LSA的类型: type1 LSA:每个ospf路由器都会产生type1 LSA:描述了对应设备接口的物理接口所连接的链路或接口,并且表明了个链路的状态.开销等参数:(只在区域内泛洪) Type2 LSA:网络LSA

freeswitch源码阅读 之 sofia模块

sofia模块在freeswitch中的位置非常重要, 所有的sip通话都和它有关, 那么我们就看一下该模块的执行流程. 一. 实现的功能: 1. sip注册; 2. 呼叫; 3. Presence; 4. SLA, 等. 二. 主要的方法, 有三个, 分别为: [cpp] view plain copy #define SWITCH_MODULE_LOAD_FUNCTION(name) switch_status_t name SWITCH_MODULE_LOAD_ARGS #define S

SDR SDRAM控制器设计

p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; font-size: 10.5pt; font-family: "Calibri", "sans-serif" } h1 { margin-top: 0cm; margin-right: 0cm; margin-left: 21.6pt; margin-bottom: .

nginx module 开发谈(1)

nginx是什么?可能很多人不是很了解,除非是做WEB服务器开发的朋友才可能涉猎,而且如果不懂C语言,又或者对WEB SERVER性能要求不高,也是没必要去研究它的. 说到这里,大家想必已经知道,nginx就是一个高性能的WEB SERVER,它的工作就像apache, tomcat一样.那么已经有apache这样的成熟产品了,nginx又有何存在必要呢?下面说下它的特点,各位就明白为何nginx在世界WEB服务里占有相当大的份额了. 1.nginx支持linux的epoll,以及其他常见OS的

根据指定规则生成游戏选项编码实战

进入遇到这样的需求 “有不定数量的游戏选项和不定的游戏人数选项给用户选择,我们按照  游戏人数<<24 | 游戏规则A<<16 | 游戏规则B<<8 | 游戏规则C      游戏规则D<<24 | 游戏规则E<<16 | 游戏规则F<<8 | 游戏规则G ........  来生成所有规则可能选中和未选中的游戏码” 该需求中,不定数量的游戏选项和游戏人数需要动态输入  我们需要使用读取配置文件来获取多少游戏人数和游戏规则 这是待实现

YARN中MRAppMaster的事件驱动模型与状态机处理消息过程的分析

在MRv1中,对象之间的作用关系是基于函数调用实现的,当一个对象向另外一个对象传递消息时,会直接采用函数调用的方式,并且这个过程是串行的.比如,当TaskTracker需要执行一个Task的时候,将首先下载Task依赖的文件(JAR包,二进制文件等,字典文件等),然后执行Task.在整个过程中,下载依赖文件是阻塞式的,也就是说,前一个任务未完成文件下载之前,后一个新任务将一直处于等待状态,只有在下载完成之后,才会启动一个独立进程运行该任务.基于函数调用式的编程模型是低效的,它隐含着整个过程是串行