OSPF建立邻接关系的过程
13、OSPF协议工作过程
RTA
10.1.1.1
Ethernet
10.1.1.3
10.1.1.2 10.1.1.4
邻接关系指通过交互之后,彼此都有对方路由信息。 形成邻居关系的路由器但不一定会有邻接关系。
3 OSPF 的工作过程:建立邻接关系
我有三个邻居,但是只有 两个邻接
指定路由器(Designated Router,DR) 备用指定路由器(Backup Designated
IP路由表
开销 ...............
计算路由 最短路径树
SPF算法
3 OSPF 的工作过程:邻居发现阶段
我有三个邻居
RTA (RouterID=1.1.1.1)
RTB (RouterID=2.2.2.2)
RTC (RouterID=3.3.3.3)
RTD (RouterID=4.4.4.4)
3 OSPF 的工作过程
• 1、邻居发现阶段
RTA
• 2、建立邻接关系 RTC
• 3、链路状态数据库同步
RTB
泛洪LSA
LSDB
RTA生成的LSA RTB生成的LSA RTC生成的LSA RTD生成的LSA
• 4、路由计算
RTD
目的网
段 .........................
下一跳 .........................
2 OSPF 的关键概念
• 邻居表(Neighbor Database):包括所有建立联系的邻居路由器。 • 链路状态数据库(链路状态表、拓扑数据库)(Link State DataBase):包
含了网络中所有路由器的链接状态。它表示着整个网络的拓扑结构。同区 域内的所有路由器的链路状态数据库都是相同的。 • 路由表(Routing Table):也称转发表,在链路状态表的基础之上,利用SPF 算法计算而来。
OSPF路由协议详解
2024/2/18
R1
TWO-WAY
Hello
Hello
R2
Init
TWO-WAY
带有Active Neighbor字段
17
邻接关系的过程
R1
TWO-WAY
Hello
Hello
R2
Init
TWO-WAY
之后如果链路类型为广播网络,则开始DR/BDR的选举 DR/BDR与LSA链路状态上的其他路由器都建立邻接关系后路由器之间才能交换 链路状态信息
2002244//22//188
OSPF术语
• Router-ID • 度量值cost • 链路状态 • OSPF区域 • 邻居与邻接 • DR和BDR
2002244//22//188
邻居表的建立
2002244//22//188
拓扑表的建立
2002244//22//188
路由表的建立
• 列出通过SPF算法计算出的到达每个相连网络的最佳路径
DBD Exchange
DBD
25
邻接关系的过程
R1发给R2的第三个DBD报文:
2024/2/18
R1
R2
Exchange
DBD
Excha的过程
R2发给R1的第三个DBD报文:
2024/2/18
R1
Exchange
Loading
R2
DBD Exchange
用来存储路由器在某个ospf接口上发现 的邻居,初始的hello没有该字段。
15
邻接关系的过程
点击打开第一个深红色的包(R2发给R1):
2024/2/18
R1
R2
Init Hello
OSPF_协议的解析及详解
OSPF_协议的解析及详解OSPF协议的解析及详解OSPF(Open Shortest Path First)是一种内部网关协议(IGP),用于在IP网络中实现动态路由。
本文将对OSPF协议进行解析和详解,包括其基本概念、工作原理、路由计算算法、协议报文格式以及配置和故障排除等方面的内容。
一、基本概念1.1 OSPF协议OSPF是一种链路状态路由协议,通过交换链路状态信息来计算最短路径,并维护路由表。
它基于Dijkstra算法,具有快速收敛、可扩展性强等特点。
1.2 OSPF区域OSPF将网络划分为不同的区域,每个区域由一个区域边界路由器(Area Border Router,ABR)连接。
区域之间通过区域边界路由器进行路由信息的交换。
1.3 OSPF邻居关系OSPF通过建立邻居关系来交换路由信息。
邻居关系的建立是通过Hello报文来实现的,Hello报文中包含了路由器的标识、优先级、网络类型等信息。
二、工作原理2.1 OSPF路由计算OSPF使用Dijkstra算法来计算最短路径。
每个路由器维护一个链路状态数据库(Link State Database,LSDB),其中保存了所有邻居路由器发送的链路状态信息。
根据LSDB中的信息,路由器计算出最短路径树,并更新路由表。
2.2 OSPF的路由选择OSPF使用最短路径优先(Shortest Path First,SPF)算法来选择最优路径。
SPF算法考虑了路径的成本(Cost),成本越低的路径被认为是最优路径。
2.3 OSPF的路由更新OSPF使用链路状态通告(Link State Advertisement,LSA)来更新路由信息。
当网络拓扑发生变化时,路由器会生成LSA,并向邻居路由器发送更新信息。
邻居路由器收到LSA后,更新自己的链路状态数据库,并重新计算最短路径。
三、协议报文格式3.1 Hello报文Hello报文用于建立邻居关系。
它包含了路由器的标识、优先级、Hello间隔等信息。
13、OSPF协议工作过程
3 OSPF 的工作过程:建立邻接关系
DR(村长)的选举过程
• (1)登记选民
• 本村的18岁以上公民;本网段的OSPF路由器;
• (2)登记候选人
• 本村内的30岁以上公民;本网段的priority>0的OSPF路由器;
• (3)竞选演说
• 所有的候选人都认为自己应该当村长; • 所有的priority>0的OSPF路由器都认为自己是DR
3 OSPF 的工作过程:邻居发现阶段
小王
小一 小二 小三
你好啊
小王 (1)你好,我叫小王
你好啊
小一
小王
小一
(2)你好,小王,我叫小一
嘻嘻嘻,我 有3邻居
(3)邻居关系建立完成
3 OSPF 的工作过程:邻居发现阶段
D
E
Hello
B
A
C
afadjfjorqpoeru 39547439070713
Hello
2 OSPF 的关键概念
• 路由器ID即Router ID,它是唯一标识运行OSPF协议的一台路由器,经 常设置为掩码为32bits的IP主机地址。
• 产生方法: 手工指定:通过命令router-id ip-address 设置,一般指定逻辑的环回口 地址(环回口地址的稳定性) 自动产生:环回口地址——如果没有手工指定,则选择环回口IP地址; 如果有多个环回口,则比较IP地址大的作为Router ID; 物理接口IP地址——如果没有创建环回口,则选用物理接口IP 地址,如果有多个IP地址,则同样选择IP地址最大的作为Router ID。
Frame Checksum
IP协议号为89
1 OSPF 概述
快速收敛:快速扩散链路状态更新并同步计算路由表; 无路由环路:最短路径优先(SPF)算法; 完全无类别:支持可变长子网掩码(VLSM)和无类域间路由(CIDR); 减少所需的网络带宽:采用触发更新机制; 支持接口的包认证:确保路由计算的安全性; 使用组播方式发送更新:减小了对非相关网络设备的干扰。
华为OSPF理论和配置命令
OSPF要求每台运行OSPF的路由器都了解整个网络的链路状态信息,这样才能计算出到达目的地的最优路径。
OSPF的收敛过程由链路状态公告LSA(Link State Advertisement)泛洪开始,LSA中包含了路由器已知的接口IP地址、掩码、开销和网络类型等信息。
收到LSA的路由器都可以根据LSA提供的信息建立自己的链路状态数据库LSDB(Link State Database),并在LSDB的基础上使用SPF算法进行运算,建立起到达每个网络的最短路径树。
最后,通过最短路径树得出到达目的网络的最优路由,并将其加入到IP路由表中。
OSPF直接运行在IP协议之上,使用IP协议号89。
OSPF有五种报文类型,每种报文都使用相同的OSPF报文头。
Hello报文:最常用的一种报文,用于发现、维护邻居关系。
并在广播和NBMA(None-Broadcast Multi-Access)类型的网络中选举指定路由器DR(Designated Router)和备份指定路由器BDR(Backup Designated Router)。
DD报文:两台路由器进行LSDB数据库同步时,用DD报文来描述自己的LSDB。
DD报文的内容包括LSDB中每一条LSA的头部(LSA的头部可以唯一标识一条LSA)。
LSA头部只占一条LSA的整个数据量的一小部分,所以,这样就可以减少路由器之间的协议报文流量。
LSR报文:两台路由器互相交换过DD报文之后,知道对端的路由器有哪些LSA是本地LSDB 所缺少的,这时需要发送LSR报文向对方请求缺少的LSA,LSR只包含了所需要的LSA的摘要信息。
LSU报文:用来向对端路由器发送所需要的LSA。
LSACK报文:用来对接收到的LSU报文进行确认。
邻居和邻接关系建立的过程如下:Down:这是邻居的初始状态,表示没有从邻居收到任何信息。
Attempt:此状态只在NBMA网络上存在,表示没有收到邻居的任何信息,但是已经周期性的向邻居发送报文,发送间隔为HelloInterval。
OSPF邻居-邻接关系建立
OSPF邻接关系建立过程:分两大步骤七种状态:1、建立邻居关系:建立双向通信:DOWN:没有检测到活动邻居INIT:路由器(R2)收到对方(R1)的hello包,并将R1加入到R2的邻居表中,R2成为INIT状态Two-way:收到hello的R2将单播回复R1一个hello,其中包含R2的所有邻居路由器,包括路由器R1。
R1收到来自R2的hello后,发现其中包含有自己的信息,则R1将R2加入到自己的邻居列表中。
R1,R2都处于Two-way状态。
第一步完成后,R1,R2形成邻居关系!2、建立邻接关系:R1,R2成为邻居后,如果在多路访问的广播网络中,R1,R2便选举DR,BDR。
注:新网络的DR,BDR的选举是在two-way状态后完成的,并且DR,BDR是非抢占的,并且DRother只能与DR或BDR建立邻接关系,DRother之间只能建立邻居关系(Two-way状态)。
建立邻接关系的机制是为了减少路由形成的冗余度,成为邻接关系最终是为了能够形成路由,能够转发数据包,所以就要进行发现网络路由和添加链路状态条目1)、发现网络路由:Exstart:确立主从关系,在DR和BDR,DR和DRother,BDR 和DRother之间确立主从关系,Router ID大的为主路由器。
Exchange:发送DBD(LSDB摘要),发现需要更新的LSA的条目2)、添加链路状态条目:Load:交换LSR,LSU以填充LSDB,完成链路状态条目更新。
Full:完全邻接状态。
LSA:链路状态通告DR:制定路由器,只作用于接口,因为邻接关系是基于接口的,而DR是为邻接关系服务的。
也就是说,DR是链路级的,每个网段(MA网络)都有自己DR和BDR。
BDR:备用DR。
ospf协议工作原理
ospf协议工作原理OSPF(Open Shortest Path First)是一种用于路由的链路状态协议,它是一种开放式的协议,不受专利限制,因此得到了广泛的应用。
OSPF协议工作原理是通过计算最短路径来确定数据包的传输路线,下面我们来详细了解一下OSPF协议的工作原理。
首先,OSPF协议使用Dijkstra算法来计算最短路径。
当一个路由器加入到OSPF网络中时,它会向周围的路由器发送Hello消息,以建立邻居关系。
通过Hello消息,路由器可以确定相邻路由器的状态,包括IP地址、路由器ID等信息。
一旦建立了邻居关系,路由器之间就可以交换链路状态信息,这些信息包括链路的带宽、延迟、可靠性等。
每台路由器都会根据收到的链路状态信息,构建链路状态数据库(Link State Database),然后使用Dijkstra算法计算最短路径树,确定到达目的地的最佳路径。
其次,OSPF协议将网络划分为不同的区域(Area),每个区域内部使用自己的链路状态数据库,通过区域边界路由器(Area Border Router)来连接不同的区域。
这样可以减少链路状态数据库的规模,提高路由器的计算效率。
同时,OSPF协议还引入了虚拟链路(Virtual Link)的概念,允许不相邻的区域之间通过其他区域进行通信,从而实现整个网络的连通性。
另外,OSPF协议还引入了路由器优先级(Router Priority)的概念,用于确定每个路由器在选举DR(Designated Router)和BDR(Backup Designated Router)时的优先级。
通过选举DR和BDR,可以减少网络中LSA(Link State Advertisement)的传播次数,降低网络的负载。
此外,OSPF协议还支持多路径(Equal Cost Multi-Path),允许在有多条等价路径时同时使用这些路径进行数据转发,提高网络的负载均衡能力。
OSPF邻居、邻接关系
邻居关系和邻接关系。
如果两台路由器之间共享一条公共数据链路(两台路由器中间没有其它路由器,或者两台路由器之间存在虚连接),并且成功协商了hello包中所指定的参数,那么它们就成为邻居。
如果两个邻居之间需要同步LSDB,那么它们之间需要建立邻接关系。
如果两个路由器之间建立了邻接关系,那么它们的LSDB一定是同步的。
LSA只在存在邻接关系的路由器之间传递。
那么邻居关系和邻接关系怎么建立呢?邻居关系通过hello报文来建立。
Hello报文中包含如下一些内容:1、始发路由器的router-id2、始发路由器接口的area-id3、始发路由器接口的地址掩码4、始发路由器接口的authentication type和authentication message5、始发路由器接口的hello-interval6、始发路由器接口的router dead-interval7、路由器优先级8、指定DR和BDR9、标识可选性能的5个标志位10、始发路由器的所有有效neighbor router-id(始发路由器接收到了它们的hello报文)以两台路由器之间建立邻居关系为例:1、R1发送hello报文(组播或者单播,链路层类型来定),neighbor字段为空2、R2收到hello报文,为R1建立一个邻居数据结构,并把R1的邻居状态臵为init,然后向R1发送hello报文,neighbor字段中包含R1的rougerID,表示自己收到了R1的hello报文。
3、R1收到R2的hello报文之后,为R2建立一个邻居数据结构,并把邻居状态臵为2way,然后向R2发送hello报文,报文的neighbor字段中包含R2的routerID。
4、R2收到R1的hello报文后,把R1的邻居状态臵为2way至此,邻居关系就建立起来了,邻居路由器之间会按时发送hello报文进行保活,如果hello 报文超时,那么该路由器就会宣告这里邻居失效。
OSPF路由协议概念及工作原理
OSPF路由协议概念及工作原理1.概述OSPF路由协议是一种典型的链路状态(Link-state)的路由协议,一般用于同一个路由域内。
在这里,路由域是指一个自治系统(Autonomous System),即AS,它是指一组通过统一的路由政策或路由协议互相交换路由信息的网络。
在这个AS中,所有的OSPF路由器都维护一个相同的描述这个AS结构的数据库,该数据库中存放的是路由域中相应链路的状态信息,OSPF路由器正是通过这个数据库计算出其OSPF路由表的。
作为一种链路状态的路由协议,OSPF将链路状态广播数据包LSA(Link State Advertisement)传送给在某一区域内的所有路由器,这一点与距离矢量路由协议不同。
运行距离矢量路由协议的路由器是将部分或全部的路由表传递给与其相邻的路由器。
2.数据包格式在OSPF路由协议的数据包中,其数据包头长为24个字节,包含如下8个字段:* Version number-定义所采用的OSPF路由协议的版本。
* Type-定义OSPF数据包类型。
OSPF数据包共有五种:* Hello-用于建立和维护相邻的两个OSPF路由器的关系,该数据包是周期性地发送的。
* Database Description-用于描述整个数据库,该数据包仅在OSPF初始化时发送。
* Link state request-用于向相邻的OSPF路由器请求部分或全部的数据,这种数据包是在当路由器发现其数据已经过期时才发送的。
* Link state update-这是对link state请求数据包的响应,即通常所说的LSA数据包。
* Link state acknowledgment-是对LSA数据包的响应。
* Packet length-定义整个数据包的长度。
* Router ID-用于描述数据包的源地址,以IP地址来表示。
* Area ID-用于区分OSPF数据包属于的区域号,所有的OSPF数据包都属于一个特定的OSPF区域。
解析CISCO设备中OSPF路由协议邻居关系建立的过程
OSPF( Open Shortest Path First 开放式最短路径优先 ) 是 所有商厂都支持的采用最短路径优先算法的链路状态 ( Link - state) 路由协议。Link 指的是路由器上的哪些接口运行了 此协议, 这些接口的特征, 包括 IP 地址、 子网掩码、 开销值等 信息; state 指 的 是 此 路 由 器 与 谁 建 立 了 邻 居 关 系 。 Link - state 基本上描述了整个网络的拓扑结构 , 对路由的处理更精 确。为了对路由处理更精确 , 它需要做好以下三件事 , 一是 每个路由器都需要知道自己的邻居是谁 , 二是每个路由器需 要知道在自己本区域内有哪些器由器 , 三是需要通过 SPF 算 法来对链路状态数据库的拓扑结构 , 进行计算, 算出通往目 的网络的最佳路径。 OSPF 形成了三张表。 邻居表: 就是 为了做好这三件事, 记录与谁建立了邻居关系 ; 链路状态数据 邻居关系数据库, LSDB) 表: 记录了哪些路由器, 产生 库( Link - state DataBase , LSA ) 信 息, 了哪些链路状态通告 ( Link State Advertisement, LSA 泛洪到本区域内所有 OSPF 路由器, 而不仅是直连的路 由器, 收集由 OSPF 路由器生成的所有 LSA, 以创建本区域内 同步的链路状态数据库 ; 路由表: 使用 SPF 算法计算到每个 目的地的最短距离, 并将他们放到自己的路由表里 。 OSPF 路由协议有五种类型的包 , Hello 包, Database Description( 数据库描述包) , Link - State Request( 链路状态请求 Link - Stae Update ( 链路状态更新数据包 ) , Link - 数据包) , State Acknowledgment( 链路状态确认包) 。 其中 Hello 包负责建立和维护邻居关系 。 每一个 Hello 数据包都包含以下信息 : ( 一) Router ID。始发路由器的路由器 ID, 在 OSPF 区域 内唯一标识一台路由器的标识 。 可以用以下方法获得路由 Router ID 由 路 由 器 的 ID, 首 先, 如果是使用命令 器的 ID, router - id 手工配置 Router ID, 就优先使用此 Router ID; 其 如果没有手工配置 Router ID, 路由器就选取它所有的环 次, 回( loopback) 接口上数值最高的 IP 地址; 最后如果路由器没
OSPF邻居关系建立过程详解
O S P F邻居关系建立过程详解标准化工作室编码[XX968T-XX89628-XJ668-XT689N]O S P F邻居关系建立过程详解在初始情况下,A、B在某个接口激活了OSPF后,都会开始在这个接口上去发组播的HELLO包,目的是发现OSPF邻居。
HELLO包里,有个activeneighbor字段,用来存储路由器在某个OSPF接口上发现的邻居,当然,初始情况下,这个HELLO包里是不包含任何活跃的邻居的(也就没有activeneighbor字段),因为他谁也没发现。
当OSPF路由器(B)在某个OSPF接口上收到邻居发来的HELLO包(里面没有装activeneighbor),它会记录下A(在自己的OSPF接口数据结构中)并且将A的状态视为init,然后将A的RouterID存储在自己将要发送的HELLO包的activeneighbor字段里发送出去,这样A就会收到这个hello包,并且在这个hello包当中找到自己的RouterID,那么A会认为,与B已经完成了双边关系的建立,因此A会将B的邻居状态置为two-way。
与此同时,A也会继续发送HELLO包,并且将B的routerID放置于HELLO包中,而B收到这个hello包并看见了自己的RouterID后,B也会将A 的状态置为two-way,至此OSPF的第一个稳态就达到了。
接下去A、B会进入ex-start状态并开始进行master、slave的协商,协商M/S的目的是为了决定在后续的LSA交互中,谁来决定DD的序列号,而RouterID大的那个OSPF路由器的接口将会成为master,由它来决定DDseq,对端成为slave。
这里要注意master不是DR,要注意与DR的概念进行区分。
这个协商过程,是由交互DBD包实现的,注意这里使用的是空的DBD包,也就是不包含任何LSA头部的DBD包,这个包当中,有三个位非常关键:I、M、MS。
思科路由器OSPF协议实验
实验需求如上图,本实验结合真实案例,用来检验学员对OSPF协议的掌握情况R5为A公司总部网关,R2和R4分别是一号楼和二号楼的核心交换机,这里用路由器模拟,R1和R3分别为一号楼和二号楼的分发层交换机,这里也是用路由器模拟,每一栋楼是一个ospf区域,包含着诺干个vlan,核心交换机和网关之间是骨干区域。
R6是A公司分公司网关,和总部通过帧中继互联,R7是分部核心交换机,分部的ospf是区域3,因为分部业务扩展,合并了B公司(R8,R9),B公司原来是ospf区域4。
1.根据上图,搭建好拓扑,ISP用一台路由器模拟,服务器和PC机全部采用回环口模拟2.配置好帧中继环境,要求帧中继不能动态获取映射,也不能静态配置映射,配置好IP地址,测试直连PING通3.依据上图,配置好OSPF协议,验证邻居建立4.确保整个内网全网可达5.确保骨干区域邻居建立高安全性6.尽量减小网关的路由表条目7.R1,R3,R9性能不足,尽量减少其路由表条目实验步骤1、对各路由器配置IP地址2、将R10模拟为帧中继R10#conf tR10(config)#frame-relay swiR10(config)#frame-relay switchingR10(config)#int s0/0R10(config-if)#no shutR10(config-if)#encapsulation frame-relayR10(config-if)#frame-relay intf-type dceR10(config-if)#clock rate 64000R10(config-if)#frame-relay route 506 int s0/1 605R10(config-if)#int s0/1R10(config-if)#encapsulation frame-relayR10(config-if)#frame-relay intf-type dceR10(config-if)#clock rate 64000R10(config-if)#frame-relay route 605 int s0/0 506R10(config-if)#exit在R5的s2/0,及R6的s1/0做相应的帧中继封装R5(config)#int s2/0R5(config-if)#encapsulation frame-relayR5(config-if)#frame-relay intf-type dteR5(config-if)#exitR6(config)#int s1/0R6(config-if)#encapsulation frame-relayR6(config-if)#frame-relay intf-type dteR6(config-if)#exit3、配置OSPF协议,并验证邻居建立R1(config)#router ospf 1R1(config-router)#router-idR1(config-router)#router-id 1.1.1.1R1(config-router)#net 172.16.3.1 0.0.0.0 a 1R1(config-router)#exit其他路由器的配置命令类似在R10帧中继线路上,R5的接口s2/0与R6接口s1/0的OSPF类型为非广播因此不能产生Hello包以建立OSPF邻居。
OSPF详解
OSPF详解这篇⽂章将会让你对OSPF有⼀个⼤概的认识,仅仅是个认识,下⾯进⼊正题。
OSPF它是⼀个链路状态路由协议,运⾏OSPF的路由器它是知道知晓整个⽹络拓扑结构,这就使得它不易发⽣路由环路,它本⾝也⽀持VLSM,路由汇总,它还引⼊了Area(区域)的概念使得OSPF能够⽀持更⼤规模的⽹络。
OSPF它只要分为两个版本⼀个是针对IPV4的OSPFv2,⼀个是针对IPV6的OSPFv3。
OSPF的⼀些重要概念Router-ID:它是⼀个长度为32bit数值,⽤于OSPF域中唯⼀标识⼀台OSPF路由器。
MA(多路访问)⽹络:指在同⼀个共享介质中连接着多个设备的⽹络,任意两台设备之间都可以实现⼆次通信。
DR与BDR:OSPF会在每个MA⽹络中选举⼀个DR(指定路由器)和⼀个BDR(备⽤指定路由器),DR主要是负责监听⽹络拓扑中变更信息并通知给其他路由器,BDR主要监视DR状态并在DR发⽣故障后接替它的⼯作。
邻居表:当⼀个接⼝激活OSPF后,该接⼝将会周期性地发送hello报⽂从⽽发现直连路由上的邻居,当发现邻居后邻居信息(它包括Router-ID,address,DR,BDM,MTU,等)就会写⼊OSPF邻居表。
LSDB(链路状态数据库):运⾏在链路状态协议的路由器在⽹络中泛洪的状态信息即LSA(路由状态通告)路由器将所有收集到的LSA装载到⾃⼰的LSDB,所有你可以把它看做成⼀个集合,⽽他的⼦集就是LSA。
你也可以把它看做⼀个对OSPF⽹络的⼀个完整的认知。
OSPF路由表:它是根据LSDB的数据运⾏SPF算法得到⼀颗以⾃⼰为根,⽆环的最短路径树。
基于这棵树能够到达⽹络的最佳路径,从⽽得到的路由信息就组成了OSPF路由表。
度量值:OSPF使⽤Cost(开销)作为它的度量值。
值越⼩路径越优。
报⽂类型:报⽂类型分为五种主要有hello报⽂,DD报⽂,LSR报⽂,LSU报⽂,LSAck报⽂。
邻居关系:在通过Hello报⽂发现彼此并确定双⽅通讯后,边形成了邻居关系。
ospf的建立过程
ospf建立过程刚学完了ospf(open shortest path first)、eigrp、bgp等三大协议,这也是路由原理所要求会的知识,尤其ospf,是我们这门课的重点的重点,所以在这里也觉得有了一些自己的看法,也分享一下吧!!!在理解之前,我觉得,脑中最好有这些东西,它们就像是ospf学习的一些主干吧!!首先有5个报文1.hello报文2.database dscription (DBD)数据描述报文3.link-state request (LSR) 链路状态请求报文4.link-state update (LSU) 链路状态更新报文5.link-state ACK(LSAck) 链路状态确认报文然后是七个状态1.DOWN 状态2.INIT状态3.TWO-WAY状态4.EXSTART状态5.CXCHANGE状态6.LODING 状态7.FULL状态只有有了这些东西,然后把5个报文分别放入相应的状态里,相信你就会有一个新的理解了!!!!好了先从状态入手吧!1.DOWN状态在这状态下,所有的设备刚起动,所以相互之间没有交换任何数据,所以也称关闭状态!2.INIT状态这个状态又称准启动状态,这时所有的设备开始交换hello报文了(有了报文了注意,hello报文就是在这里出现了,内容是通告自己是谁,谁在这个链路上),邻居收到同样也用hello报文回复一个(我是谁,我有这个链路上)这时,设备知道了对方的存在了,所以开始进入下一个状态3.TWO-WAY 状态承上启下,通过比较hello报文中(是否routr-id唯一、是否有相同的生存时间和死亡时间等条件)所有要求符合了,这时就建立了邻居关系(补一点,hello报文也是区分链路状态和距离矢量的重要之处)&&&如果所属的网络类型是广播类型,这时就要在这里选举DR/BDR (靠优先级选,优先级相同时,由router-id来选举),再进入下一状态4.EXSTART状态邻居已建立了(从这里到最后都属于邻接关系的建立了),开始传送一个DBD报文(又出现了一个报文),开始交换自己的(LSDB 的一个摘要数据),当彼此收到了DBD报文后就回复一个LSAck报文(出现了一个报文)表示我收到了,双方确认后,进入下一个状态5.EXCHANGE状态这时设备之间就开始用这个DBD报文描述的内容与自身的LSDB (Link-state database 链路状态数据库)比较,当发现了DBD报文中的自己没有的内容时,这时便进入了下一个状态6.LOAING状态设备由对方的DBD报文比较出了自己没有的内容,所以要开始发送LSR 报文(出现了一个报文)向邻居学习,这时邻居没有的也会向自己发送LSR报文学习,当彼此收到了LSR便发送一个LSAck报文确认收到,并且再向对方发送一个LSU报文(出现了一个报文)告诉邻居所请求的内容,彼此收到了LSU报文后也要发送一个LSAck报文确认!!这时都开始记录了,随之也进入了下一个状态7.FULL状态设备都学习到了LSU报文内容,这时邻接建立完成!!FULL状态也完成!在时,其实设备的路由表中是不会有任何学习来的条目的,因为ospf是基于报文来让其它设备学习记录的,(这也是链路状态与距离矢量的区别吧)这时如果在设备上show ip route只能看到直连网段,因为ospf协议在进行完了上面的七种状态后,还要进行spf计算,最后再由管理距离决定最后进入路由表中的条目!!是不是看了上面的过程有点晕,呵呵!毕竟是我的理解,由于知识及表达能力上的不足,所以也希望你能多看山山几遍!希望对你有些帮助吧!!1.Down状态: 刚刚开启ospf,还没有收到任何数据,此时路由器本身是可以发送hello企图寻找ospf邻居2.attempt状态: 这是在特殊网络条件下才有的状态,就是不支持广播的网络(非广播网络),以太网是没有的,因为ospf需要使用组播发送hello,所以在这种网络环境下,必须要指定使用单播来发送hello,这种状态叫做attempt状态3.init状态: 一方收到了另一方的hello.在这个hello包中还看不到自己是对方的邻居,这种状态叫做init状态.4.two-way状态: 双方的hello已经交换完成,建立了邻居关系(注意区别于邻接关系),dr,bdr选举成功,若两端都是drother路由器则会一直停留在这个状态5.Exstart状态: 交换LSA之前,两端路由器会选择一个主从关系,确定由谁来先发起数据(DBD,LSR等),router-id较大者成为主路由器,先发送,选举主从关系的状态叫做exstart状态6.Exchange状态: 交换DBD的过程,DBD相当于一个路由器自己的链路状态数据库的目录,对方收到DBD根据目录来索要自己需要的信息从而发送lsr7.Loading状态: 邻居收到了对方发来的LSR,回复对方索要的信息LSU,这是一个学习的过程,叫做loading状态8.Full状态: 完全邻接状态,数据库已经同步,网络收敛完成,就是最后达到的正常的状态这就是整个ospf建立的过程,若有某处不解请明示,详尽解答!1.OSPF 邻居停滞于Attempt状态只有在NBMA中才会出现ATTEMPT状态,ATTEMPT状态是路由器在NBMA模式中必须经过的一个普通状态。
OSPF协议详细介绍-非常好
OSPF协议详细介绍-⾮常好1.掌握OSPF的⼯作原理2.掌握OSPF的基本配置开放式最短路径优先(OSPF)OSPF是⼀种基于链路状态的路由协议,它从设计上就保证了⽆路由环路。
OSPF⽀持区域的划分,区域内部的路由器使⽤SPF最短路径算法保证了区域内部的⽆环路。
OSPF还利⽤区域间的连接规则保证了区域之间⽆路由环路。
OSPF⽀持触发更新,能够快速检测并通告⾃治系统内的拓扑变化。
OSPF可以解决⽹络扩容带来的问题。
当⽹络上路由器越来越多,路由信息流量急剧增长的时候,OSPF可以将每个⾃治系统划分为多个区域, 并限制每个区域的范围。
OSPF这种分区域的特点,使得OSPF特别适⽤于⼤中型⽹络。
OSPF还可以同其他协议(⽐如多协议标记切换协议MPLS)同时运⾏来⽀持地理覆盖很⼴的⽹络。
OSPF可以提供认证功能。
OSPF路由器之间的报⽂可以配置成必须经过认证才能进⾏交换。
与RIP协议的⽐较OSPF原理介绍OSPF要求每台运⾏OSPF的路由器都了解整个⽹络的链路状态信息, 这样才能计算出到达⽬的地的最优路径。
OSPF的收敛过程由链路状态公告LSA(Link State Advertisement)泛洪开始,LSA中包含了路由器已知的接⼝IP地址、掩码、开销和⽹络类型等信息。
收到LSA的路由器都可以根据LSA提供的信息建⽴⾃⼰的链路状态数据库LSDB(Link State Database),并在LSDB的基础上使⽤SPF算法进⾏运算,建⽴起到达每个⽹络的最短路径树。
最后,通过最短路径树得出到达⽬的⽹络的最优路由,并将其加⼊到IP路由表中。
OSPF报⽂OSPF直接运⾏在IP协议之上,使⽤IP协议号89。
OSPF有五种报⽂类型,每种报⽂都使⽤相同的OSPF报⽂头。
1. Hello报⽂:最常⽤的⼀种报⽂,⽤于发现、维护邻居关系。
并在⼴播和NBMA(None-Broadcast Multi-Access)类型的⽹络中选举指定路由器DR(Designated Router)和备份指定路由器BDR( Backup Designated Router)。
ospf工作过程
OSPF-工作过程2011-08-19 09:41:06 我来说两句收藏我要投稿1、状态机的变化过程:(1) OSPF路由器接口up,发送Hello包,(NBMA模式时将进入Attempt状态)。
(2) OSPF路由器接口收到Hello包,检查Hello中携带的参数,如果匹配,进入Init状态;并将该Hello包的发送者的Router ID,添加到Hello包(自己将要从该接口发送出去的Hello 包)的邻居列表中。
(3) OSPF路由器接口收到邻居列表中含有自己Router ID的Hello包,进入Two-way状态,形成OSPF邻居关系,并把该路由器的Router ID添加到自己的OSPF邻居表中。
(4) 在进入Two-way状态后,广播、非广播网络类型的链路,在DR选举等待时间内进行DR 选举。
点对点没有这个过程。
(5) 在DR选举完成或跳过DR选举后,建立OSPF邻接关系,进入exstart(准启动)状态;并通过交换DBD交换主从路由器,由主路由器定义DBD序列号,Router ID大的为主路由器。
目的是为了解决DBD自身的可靠性。
(6) 主从路由器选举完成后,进入Exchange(交换)状态,通过交换携带lsa头部信息的DBD包描述各自的LSDB。
(7) 进入Loading状态,对链路状态数据库和收到的DBD的LSA头部进行比较,发现自己数据库中没有的LSA就发送LSR,向邻居请求该LSA;邻居收到LSR后,回应LSU;收到邻居发来的LSU,存储这些LSA到自己的链路状态数据库,并发送LSAck确认。
(8) LSA交换完成后,进入FULL状态,同一个区域内所有OSPF路由器都拥有相同链路状态数据库。
(9) 定期发送Hello包,维护邻居关系。
2、协商过程:本文出自“Esc结束” 博客OSPF协议之详细图解2012-10-10 10:31:46 我来说两句作者:xuzhiming302收藏我要投稿OSPF是一种基于SPF算法的链路状态路由协议。
HC面试题题目完整版
H C面试题题目集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]1.OSPF邻接形成过程?首先通过HELLO报文建立邻居关系然后通过网络类型看是否要选出DR/BDR,如果需要就根据HELLO报文里的DR优先级和routerid选出DR和BDR通过第一个DD报文选出主从关系然后发送LSRLSULSack报文完成同步2.OSPF中承载完整的链路状态的包?LSU3.链路状态协议和距离矢量协议的比较?距离矢量是拿跳数作为COST值的衡量,链路状态协议主要是以带宽做为COST值MTU,接口稳定性4.OSPF防环措施?SPF算法本身就是一种无环的算法,OSPF多区域时,非骨干区域只有通过骨干区域传递路由5.OSPF是纯链路状态的协议吗?在单区域中,OSPF是纯链路状态的协议,在多区域的情况下,区域内部是链路状态,区域间是距离矢量6.OSPF中DR选举的意义DR选举时的网络类型DR和其它路由器的关系选举DR可以降低需要维护的邻接关系数量只有NBMA网络和broadcast网络7.OSPF的NSSA区域和其它区域的区别?NSSA区域和普通区域的区别是不允许4类,5类LSA的通过,但允许7类LSA的通过NSSA区域和STUB区域的区别是NSSA是STUB的变形,允许7类LSA的注入8.OSPF的LSA类型,主要由谁生成?1类是所有路由器都能生成2类是由DR生成3类是由ABR生成4类是由ABR生成5类是由ASBR生成7类是由ASBR生成9.IBGP为什么采用全互联不采用全互联怎么部署10.BGP发布者从IBGP对等体学习到的路由不向其他IBGP对等体发布可以采用反射和联盟10.路由反射器的反射原则?如果从客户机学习到的路由,反射给所有客户机和非客户机如果从非客户机学习到的路由,仅反射给客户机,不反射给其他非客户机从EBGP对等体学习到的路由,反射给所有客户机和非客户机11.OSPF邻居形成过程?id、认证类型和密码、hello时间和dead时间是否一致特殊位的标记(特殊区域)两台路由器由INIT变为2-WAY12.OSPF有几类LSA?一共有11类LSA,常用的有7种13.OSPF的NSSA区域与其它区域的通信方法?14.PPP协商过程?通过LCP报文来建立链路如果开启验证则开始PAP和CHAP验证通过NCP来进行网络层协商15.OSPF没有形成FULL状态的原因?16.OSPF在NBMA网络要配些什么?手工指定邻居17.OSPF虚链路在什么情况下用到为什么要用虚链路18.骨干区域被分割非骨干区域与骨干区域不相连当骨干区域被分割和非骨干区域与骨干区域不相连的情况下,会导致OSFP无法正常学习到路由18.OSPF虚链路的作用为什么有骨干区域19.当骨干区域被分割和非骨干区域与骨干区域不相连的情况下,会导致OSFP无法正常学习到路由任何非骨干区域之间都无法互相学习路由,只有通过骨干区域才能学习19.RIP路由协议环路问题解决机制?路由毒化水平分割毒性逆转定义最大值抑制时间触发更新20.OSPF邻居形成过程?21.PPP协商过程?22.CHAP认证过程?由主验证方发起请求,将自己本端的用户名和一个随机报文发送给被验证方被验证方通过发过来的用户名在本地用户表中查找对应的密码,并通过MD5算法对报文ID,密码和随机报文生成一个摘要,并将摘要和自己的用户名一起发给主验证方主验证方用MD5算法对本地保存的密码,报文ID和随机报文生成一个摘要,与被验证方发送过来的摘要进行对比,如果相同则验证通过,反之则不通过23.LSA5外部路由可以在ABR上做汇总吗?24.OSPF有哪些区域?骨干区域非骨干区域STUB区域totallystub区域NSSA区域totallyNSSA区域25.stub区域特点nssa区域特点26.STUB区域过滤4类5类LSANSSA区域过滤4类5类LSA但允许7类LSA通过26.OSPF有那几种协议包以及他们的作用27.HELLO报文用于建立和维护邻居关系DD报文用于邻居间的数据库同步LSR报文用于请求自己所需的LSALSU报文用于发送对方所需的LSALSack报文对收到的LSA进行确认27.OSPF划区域的好处?减小LSDB表的大小28.OSPF的选路原则;影响OSPF邻居形成的因素及解决方法。
OSPF基本知识和邻居建立
OSPF(Open-Shortest Path First)开放最短路径优先协议距离矢量协议与链路状态协议区别:距离矢量协议:只知道邻居传过来的,其他信息根本不知道(比如rip ,eigrp )链路状态协议:同一区域所有路由器的DB (database )数据库相同,每一个路由器都把与哪些邻居相连接,连接哪些链路,与邻居的距离通告,识别到更多的信息,根据信息自己计算。
总体框架:向宣告进OSPF 接口发送HELLO 包,接收到HELLO 包路由器匹配HELLO 包内字段,看是否能与对方建邻居,若可以,把邻居放入neighbor table ,建立后向邻居发送LSA (链路状态公告)(包含三元组:链路,邻居,与邻居的距离),把向各邻居传来的LSA 放入database 数据库中,运行SPF 算法,以自己为根,计算出一棵最短路径树(SPF Tree :最短,无环),计算最优路由,比较AD ,AD 优者放入路由表。
OSPF 默认AD=110,触发周期30分钟更新一次OSPF 三张表:1.Neighbor table :包含邻居的信息show ip ospf neighbor2.Topology table :LSA同一区域内部所有路由器的databsae 数据库相同3.Routing table把databsae 数据库最优路由放进路由表OSPF 的层次化设计模型的优点:1.可以减小路由表,提高数据包的转发速度。
2.在LSA 泛洪不会影响到其他区域。
3.周期性的泛洪也不会影响到其它区域。
4.方便控制路由,通过汇总/过滤/特殊区域等来实现-----------这个也是现阶段OSPF 分层次的优势以上三个优点并不是在分层之后才体现的,必须在分区域之后进行汇总/过滤/特殊区域等才能表现出来。
OSPF 分两层:Transit area (backbone or area 0):传输区Normal areas (nonbackbone areas)OSPF 基本知识和邻居建立2011年12月23日14:39OSPF包类型:Type=1.Hello:建立和维持邻居关系,在多访问网络上选择DR和BDRType=2.Database Description(DBD或DDP):用于描述本路由器Database数据库中LSA信息,用于选择主/从关系Type=3.Link-State Request(LSR):用于向邻居请求需要哪些LSA,一个数据包可以根据一个LSA 头部类型,ID,DR进行标识Type=4.Link-State Update(LSU):里面有真正的LSA,包含网络拓扑信息Type=5.Link-State Acknowledgment(LS-ACK):向邻居确认LSUDBD序列号确认对端是否收到我发的DBD-----隐式确认,LS-ACK确认LSU----显式确认OSPF包头格式封装在IP包里:源地址目的地址协议号出接口IP组播地址:224.0.0.5 89匹配所有OSPF 报文:access-list 101 permit 89 any any#show ip access-list 101101 peimit ospf any anyOSPFOSPF建邻居:Hello包字段:OSPF建立邻居关系的必要条件:*Hello and dead intervals*Area ID*Authentication password*Stub area flag:末节区域标识OSPF状态机:Down----------没有Active邻居检测Init-----------收到对端hello,可以和对端建立邻居,但是对端的hello的neighbor-list里面不包含自己。
OSPF动态路由协议笔记之(二):基本工作原理(下)
OSPF动态路由协议笔记之(⼆):基本⼯作原理(下)OSPF动态路由协议笔记之(⼆) : 基本原理(下) 本笔记承接上⼀节,继续对OSPF报⽂的报⽂头部和报⽂类型进⾏详尽的介绍,接着介绍OSPF建⽴邻接关系的过程(即LSDB同步的过程),最后补充上⼀节笔记中提及的DR和BDR选举的过程。
OSPF报⽂类型及作⽤ (1)OSPF协议报⽂头部 RIP路由器之间是基于UDP 520的报⽂进⾏通信,OSPF也有其规定的通信标准。
OSPF使⽤IP承载其报⽂,IP报⽂头部协议号为89。
在OSPF Packet部分,所有的OSPF报⽂均使⽤相同的OSPF报⽂头部。
报⽂头部各字段含义如下: ①Version(1个字节):版本。
对于当前所使⽤的OSPFv2,该字段的值为2。
② Type(1个字节):类型。
OSPF报⽂类型。
其值分别代表以下⼏种报⽂类型: l 1:Hello报⽂; l 2:DD报⽂; l 3:LSR报⽂; l 4:LSU报⽂; l 5:LSAck报⽂。
③Packet length(2个字节):数据包长度。
表⽰整个OSPF报⽂的长度,单位是字节。
④Router ID(4个字节):发送该报⽂的路由器标识。
表⽰⽣成此报⽂的路由器的Router ID。
⑤ Area ID(4个字节):发送该报⽂的所属区域。
表⽰此报⽂需要被通告到的区域。
⑥Checksum(2个字节):校验和。
⽤于校验报⽂的完整性,其校验的范围是整个OSPF报⽂,包括OSPF报⽂头部。
⑦Auth Type(2个字节):验证类型。
为0时表⽰不认证;为1时表⽰简单的明⽂密码认证;为2时表⽰加密(MD5)认证。
⑧Authentication(8个字节):鉴定字段。
认证所需的信息,该字段的内容随AuType(验证类型)的值不同⽽不同。
当验证类型为0时未作定义;类型为1时此字段为密码信息;类型为2时此字段包括Key ID、MD5验证数据长度和序列号的信息,MD5验证数据添加在OSPF报⽂后⾯,不包含在Authenticaiton字段中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
OSPF建立邻接关系的过程OSPF 建立邻接关系的过程2008-10-29 23:15:50| 分类:Cisco | 标签:ospf 邻居| 字号大中小订阅首先要了解这个过程中涉及到的几种分组:(1)Hello 分组:这是一台路由器告诉其他路由器自己存在的一种方式。
Hello 分组会定期发送,以告诉其他路由器自己还活着。
(2)DBD 分组:数据库描述,这是链路状态的一个概况,可以把它看做是链路状态的一个目录,其中包含它知道的所有路由器的ID ,以及各条链路的序列号(用来判断链路的新旧程度)。
(3)LSU 分组:链路状态更新,这是真正的链路状态信息,也就是通往某个目标的详细路径信息。
(4)LSR 分组:用来请求一个链路状态信息。
(5)LSAck 分组:对其他分组进行确认。
还有一个概念就是LSDB (链路状态数据库),它保存所有链路状态信息。
下面我们结合在R1 上执行debug ip ospf events 的输出(该输出来自互联网),来详细说明建立的步骤:1.R1的OSPF接口开始向外发送Hello分组,发送的时候使用组播,组播地址是224.0.0.5。
这个Hello 分组包含一些重要的信息:路由器ID、DR/BDR 、区域号、优先级等,以及R1 知道的所有邻居的列表(这时侯为空)。
*Apr 8 00:47:54.059: OSPF: Interface FastEthernet0/0 going Up *Apr 8 00:47:54.059: OSPF: Send hello to 224.0.0.5 area 0 on FastEthernet0/0 from 10.1.1.12.R2 收到Hello 分组后,会将R1 加入到自己的邻居表中,邻居表中除了从Hello 分组中得到的信息之外,还会从承载Hello 分组的IP 数据包中得到源IP 地址(R1 某个接口的IP 地址),以及本路由器收到这个分组的接口。
R2会查看R1发送过来的这个Hello 分组当中的邻居列表字段,发现当中并没有自己的路由器ID,我们称这个状态为init状态,这时候,双方的通信关系还没有建立起来。
3.R2 会发送一个Hello 分组给R1 作为响应(使用单播),其中的邻居列表中包含R1的ID,R1会将R2加到自己的邻居表中,这个时侯,双方的邻居表都已经有对方的存在了。
这时候称为2-way 状态。
*Apr 8 00:47:58.919: OSPF: Rcv hello from 10.1.1.2 area 0from FastEthernet0/0 10.1.1.2*Apr 8 00:47:58.923: OSPF: 2 Way Communication to 10.1.1.2 onFastEthernet0/0, state 2WAY4.R1收到R2的这个分组后,会立即发回一个Hello分组来进行响应,这时候使用的也是单播,只发给R2。
这时候,是真正交换链路之前的状态,称为exstart 状态。
*Apr 8 00:47:58.923: OSPF: Send immediate hello to nbr10.1.1.2, src address 10.1.1.2, on FastEthernet0/0*Apr 8 00:47:58.923: OSPF: Send hello to 10.1.1.2 area 0 on FastEthernet0/0 from 10.1.1.1*Apr 8 00:47:58.927: OSPF: End of hello processing5.接下来我们会看到R1 会继续向外组播Hello 两次,这只是Hello 的周期性行为,以确定对方的状态。
我们看到两次Hello 的时间间隔刚好是10秒。
*Apr 8 00:48:04.063: OSPF: Send hello to 224.0.0.5 area 0 on FastEthernet0/0 from 10.1.1.1*Apr 8 00:48:08.927: OSPF: Rcv hello from 10.1.1.2 area 0 from FastEthernet0/0 10.1.1.2*Apr 8 00:48:08.927: OSPF: End of hello processing*Apr 8 00:48:14.063: OSPF: Send hello to 224.0.0.5 area 0 on FastEthernet0/0 from 10.1.1.1*Apr 8 00:48:18.935: OSPF: Rcv hello from 10.1.1.2 area 0 from FastEthernet0/0 10.1.1.2*Apr 8 00:48:18.939: OSPF: End of hello processing6.接下来R2 开始向R1 发送DBD ,这里我们看到几个重要标记:seq (DBD的序列号)、flag (—个三bit的标志位,第 1 位是initial 位,如果为 1 表示第一个DBD ,第 2 位为more 位,表示后面还有DBD要发送,第3位是master位,表示主、从)。
这里提到的主、从(master、slave)大概可以想象为人跟影子的关系,人是主,影子是从,影子总会跟着人走。
后面的state 表示当前双方的状态,这里依然是2WAY 。
我们看到这里的收到的两条DBD,它们的seq相同。
flag为0x7, 二进制为111,说明这是第一个DBD,而且第2条收到的DBD 还不是最后一条,因为第 2 位为 1 ,最后一位也为 1 ,说明这是MASTER ,在初始的时候, 每个路由器都会认为自己是MASTER 。
*Apr 8 00:48:18.939: OSPF: Rcv DBD from 10.1.1.2 on FastEthernet0/0 seq 0x4DB opt 0x52 flag 0x7 len 32 mtu 1500 state 2WAY*Apr 8 00:48:18.943: OSPF: Nbr state is 2WAY*Apr 8 00:48:23.955: OSPF: Rcv DBD from 10.1.1.2 on FastEthernet0/0 seq 0x4DB opt 0x52 flag 0x7 len 32 mtu 1500 state 2WAY*Apr 8 00:48:23.959: OSPF: Nbr state is 2WAY7.Hello 间隔又到期了,R1 又会组播Hello 分组。
另外,从上面的DBD 中的flag 我们得知该DBD 还没有完整,所以我们看到下面还收到了两条DBD ,序列号跟上面的相同,也是0x4DB 。
最后一行我们看到“end of Wait...” ,这是路由器在推举DR/BDR 之前的一个等待时间,这时候该等待时间到期,于是开始推举DR/BDR ,所以我们可以推断出,接下来路由器的动作应该是推举DR/BDR 。
另外,那个DBD 的flag 依然显示后面还有DBD ,所以后面应该还会收到序列号为0x4DB 的DBD 。
*Apr 8 00:48:24.063: OSPF: Send hello to 224.0.0.5 area 0 on FastEthernet0/0 from 10.1.1.1*Apr 8 00:48:28.919: OSPF: Rcv hello from 10.1.1.2 area 0 from FastEthernet0/0 10.1.1.2*Apr 8 00:48:28.923: OSPF: End of hello processing *Apr 800:48:28.927: OSPF: Rcv DBD from 10.1.1.2 on FastEthernet0/0 seq 0x4DB opt 0x52 flag 0x7 len 32 mtu 1500 state 2WAY*Apr 8 00:48:28.927: OSPF: Nbr state is 2WAY*Apr 8 00:48:33.959: OSPF: Rcv DBD from 10.1.1.2 on FastEthernet0/0 seq 0x4DB opt 0x52 flag 0x7 len 32 mtu 1500 state 2WAY*Apr 8 00:48:33.963: OSPF: Nbr state is 2WAY*Apr 8 00:48:34.059: OSPF: end of Wait on interface FastEthernet0/08.开始DR/BDR 的选举过程。
这里我们两台路由器都使用默认的优先级,所以选举的结果是谁的路由器ID 大就谁当DR,由于只有两台路由器,所以R2为DR, R1为BDR。
*Apr 8 00:48:34.059: OSPF: DR/BDR election on FastEthernet0/0 *Apr 8 00:48:34.059: OSPF: Elect BDR 10.1.1.1*Apr 8 00:48:34.059: OSPF: Elect DR 10.1.1.2*Apr 8 00:48:34.059: OSPF: Elect BDR 10.1.1.1*Apr 8 00:48:34.063: OSPF: Elect DR 10.1.1.2*Apr 8 00:48:34.063: DR: 10.1.1.2 (Id) BDR:10.1.1.1 (Id)9.R1 也开始向R2 发送DBD ,我们看到这时候它的DBD 的序列号是0x56 , flag也是0x7,所以R1也会宣告自己是MASTER 。
另外Hello 定时器又到期,于是又组播Hello 分组。
*Apr 8 00:48:34.063: OSPF: Send DBD to 10.1.1.2 on FastEthernet0/0 seq 0x56 opt 0x52 flag 0x7 len 32 *Apr 800:48:34.067: OSPF: Send hello to 224.0.0.5 area 0 on FastEthernet0/0 from 10.1.1.1*Apr 8 00:48:38.927: OSPF: Rcv hello from 10.1.1.2 area 0 from FastEthernet0/0 10.1.1.2*Apr 8 00:48:38.931: OSPF: End of hello processing10.收到R2 发送过来的最后一个序列号0x4DB 的DBD ,由于这时候R2 已经收到了R1 的序列号为0x56 的那个DBD ,所以这时候R2 可以根据路由器ID 确定自己才是真正的MASTER ,并在最后一个DBD 中将状态更改为EXSTART 状态,而R1 成为SLAVE 。