OSPF邻接建立过程详解


今天主要就是和大家探讨一下OSPF在广播网络中邻居建立的过程,哪里有不同的意见,讨论区可以可以聊天的哦~ 接下来我们直接进入主题,直接看拓扑吧!!!!!

ospf号和area ospf area0和area1_IP


大家看到的上图是,OSPF单区域的一个拓扑,都属于OSPF的Area 0 ,也就是我们的骨干区域。AR1的G0/0/0的接口地址是12.1.1.1/24;AR2的G0/0/0的接口地址是12.1.1.2/24。首先我们先进行配置,以下就是配置的参考以及注解

AR1配置参考(注解只写一遍)

sys        //进入系统视图[Huawei]sys AR1      //更改系统名称[AR1]int g0/0/0       //进入G0/0/0接口视图下[AR1-GigabitEthernet0/0/0]ip address  12.1.1.1 24       //给G0/0/0接口配置IP地址12.1.1.1/24[AR1-GigabitEthernet0/0/0]quit    //退出当前视图[AR1]ospf 1 router-id  1.1.1.1     //进入OSPF协议视图并设置路由标识为1.1.1.1[AR1-ospf-1]area 0  //进入区域0 (骨干区域)[AR1-ospf-1-area-0.0.0.0]network  12.1.1.1 0.0.0.0  //宣告12.1.1.1这个地址 到OSPF的协议中

AR2配置参考

sys[Huawei]sys AR2[AR2]interface  g0/0/0[AR2-GigabitEthernet0/0/0]ip address 12.1.1.2  24[AR2-GigabitEthernet0/0/0]quit[AR2]ospf 1 router-id  2.2.2.2  //切记进程号必须一致,但是Router-ID不可以一致[AR2-ospf-1]area 0      //区域号必须一致[AR2-ospf-1-area-0.0.0.0]network  12.1.1.2 0.0.0.0


配置结束之后,当弹出的状态提示到达Full状态的时候,就说明邻接状态已经建立。 (具体如下图)

ospf号和area ospf area0和area1_ospf hello时间和dead_02


既然已经建立成功了,那我们就以AR1的第一视角来细细的探究一下,AR1和AR2究竟是如何建立的邻接关系。  

步骤一,AR1状态为Dead状态(与AR2进度/状态/报文内容都相同)


此时,AR1没有发送任何报文,所以OSPF的协议状态是Dead状态  

步骤二,AR1发送了第一个报文,AR2状态为Init,这个状态也叫1-way(与AR2进度/状态/报文内容都相同)


AR1发送出的第一个Hello报文,去往AR2,当AR2收到该报文的时候,状态为INIT状态。那么,这个报文中包含哪些东西呢?首先,想到OSPF的头部,在头部报文中会携带自己的Router-ID、Area ID、验证方式/信息;其次,需要想到Hello报文头部,在头部报文当中会携带自己出接口的地址掩码、hello/dead时间、DR的优先级、DR路由器的接口IP地址、BDR路由器的接口IP地址、邻居列表。 综上所述,在AR1发送给AR2的Hello报文当中,包含的信息分别是:

OSPF头部信息

Router ID   

1.1.1.1

Area ID

0

验证方式

无验证

Hello报文头部信息

子网掩码

255.255.255.0

Hello间隔时间

10S(广播网络)

Hello死亡时间

40S

DR的优先级

1(默认的)

DR 的接口IP

12.1.1.1

BDR的接口IP


邻居列表



当AR2收到该报文的时候,发现对端的Hello报文的邻居列表当中,没有自己的Router ID,所以就会将自己的状态置为init,并发往下一个hello报文 实际报文实例如下图


ospf号和area ospf area0和area1_ospf号和area_03


 

步骤三、AR2回应一个Hello报文,AR1到达2-way状态(与AR2进度/状态/报文内容都相同)


AR2处理完上个报文之后,发现自己的Router-id没有出现在对方的Hello报文的邻居列表中,所以,自己就回应了一个hello报文,报文内容如下:

OSPF头部信息

Router ID   

2.2.2.2

Area ID

0

验证方式

无验证

Hello报文头部信息

子网掩码

255.255.255.0

Hello间隔时间

10S(广播网络)

Hello死亡时间

40S

DR的优先级

1(默认的)

DR 的接口IP

12.1.1.1

BDR的接口IP

12.1.1.2

邻居列表

1.1.1.1


AR2由于收到之前的AR1发送的Hello报文,所以得知AR1的Router-ID是1.1.1.1,所以会将1.1.1.1填充到邻居列表当中。并且,会进行DR和BDR的选举(选举的依据:1、比较DR的优先级,越大越优先,当优先级为0的时候,表示不参加选举;2、当优先级一致的时候,就比较router-id,还是大的优先),所以在DR和BDR的位置会直接填充好。当AR1收到该报文之后,由于在AR2的Hello报文中的邻居类表中发现有自己的router-id,所以会将自己的状态置为2-way。自此和AR2的邻居状态就建立了~ 实际报文实例如下图


ospf号和area ospf area0和area1_ospf hello时间和dead_04

步骤四、AR1发送第一个DD报文、此时状态为Exshart(与AR2进度/状态/报文内容都相同)


AR1通过Hello报文的交互,得知自己是有邻居的,但是并没有什么深入的交流。怎么办呢?就需要首先选举一个主从,总得有个人听另一个的。还是先看报文内容:

OSPF头部信息

Router ID   

1.1.1.1

Area ID

0

验证方式

无验证

DD报文头部信息

MTU 最大数据单元

0(因为华为的设备默认是不检测MTU的)

I

1 (由于这个是第一个DD报文)

M

1 (这个不是最后一个DD报文)

M/S

1(默认的都认为自己是主,需要相互比较)

DD报文的序列号

2816(随机的数字)

LSDB的摘要信息



当AR2收到这一份DD报文之后,就会比较谁是大,谁是小(只比较router ID,大的优先)通过比较得知 AR1是从设备 AR2是主设备 实际报文实例如下图


ospf号和area ospf area0和area1_ospf hello时间和dead_05


 

步骤五、AR1进入到Exchange状态,发送LSDB的摘要信息(与AR2进度/状态/报文内容都相同)


通过DD报文选举主从,AR2是主设备,所以由AR2发送带有LSDB(链路状态数据库)摘要信息的DD报文,DD报文的序列号就使用主设备的顺位序列号,从设备使用主设备序列号回应,从而让主设备得知,自己的报文被接收到了,达到一个隐式确认的作用。接下来看看报文的具体内容:

OSPF头部信息

Router ID   

2.2.2.2

Area ID

0

验证方式

无验证

DD报文头部信息

MTU 最大数据单元

0(因为华为的设备默认是不检测MTU的)

I

0(由于这个是第一个DD报文)

M

0 (这个不是最后一个DD报文)

M/S

1(默认的都认为自己是主,需要相互比较)

DD报文的序列号

645(跟随主设备的序列号)

LSDB的摘要信息

每条LSA的摘要信息

实际报文实例如下图


ospf号和area ospf area0和area1_序列号_06


 

ospf号和area ospf area0和area1_ospf hello时间和dead_07


从设备(AR1)收到之后,就会发送一个DD报文 DD的序列号用主设备(AR2)的645来达到隐式确认的作用 实际报文实例如下图


ospf号和area ospf area0和area1_ospf号和area_08


 

步骤六、AR1进入Loading状态,AR1发送LSR请求,AR2回应LSU(与AR2进度/状态/报文内容都相同)


AR1收到来自AR2(主设备)发送的LSDB的摘要信息,要对自己没有的LSA进行请求详细信息,就需要使用到LSR请求报文了,接下来就看看AR1发送的LSR包含什么信息?示例如下:

OSPF头部信息

Router ID   

1.1.1.1

Area ID

0

验证方式

无验证

LSR报文头部信息

LSA的类型

Type 1

Link State ID

1.1.1.1

产生该条LSA的Router ID

1.1.1.1

实际报文实例如下图


ospf号和area ospf area0和area1_OSPF_09


AR1向AR2请求了三条LSA,分别发送了三条LSA的三要素(LSA的类型、链路信息、产生LSA的Router-ID)可以唯一的标识一条LSA。AR2收到之后,就会按照上图中的三条,使用LSU报文回应这三条LSA的详细信息。报文内容示例如下:

OSPF头部信息

Router ID   

1.1.1.1

Area ID

0

验证方式

无验证

LSU报文头部信息

LSA的数量

3

LSA的头部信息

LSA的详细信息

LSA的头部信息

LSA Age

1

扩展位

暂时不说

LSA的类型

Router-LSA

Link State ID

2.2.2.2

LSA的产生者的Router ID

2.2.2.2

LSA的序列号

0x8000007

检查字段

0x9d90

实际报文实例如下图(LSU的报文)


ospf号和area ospf area0和area1_OSPF_10

实际报文实例如下图(LSA的详细信息)


ospf号和area ospf area0和area1_ospf hello时间和dead_11

ospf号和area ospf area0和area1_ospf hello时间和dead_12

ospf号和area ospf area0和area1_序列号_13


 

步骤七、AR1进入Full状态,完成邻接建立(与AR2进度/状态/报文内容都相同)


AR1收到来自AR2的LSU报文之后,就向对方发送LSAck报文,其中就包含自己lSDB的摘要信息,如果相同就表示同步完成,并表示确认收到报文,进入到Full状态。接下来还是看看报文的具体内容,参考如下:

OSPF头部信息

Router ID   

1.1.1.1

Area ID

0

验证方式

无验证

LSA的摘要信息

LSA Age  LSA的存活时间

 

扩展位

 

LSA的类型

 

Link State ID

 

LSA的产生者的Router ID

 

LSA的序列号

 

检查字段

 

实际报文实例如下图(LSAck的详细信息)


ospf号和area ospf area0和area1_ospf hello时间和dead_14

实际报文实例如下图(LSA的详细信息)


ospf号和area ospf area0和area1_ospf hello时间和dead_15

ospf号和area ospf area0和area1_ospf号和area_16


  那今天的内容就到这里吧~感谢各位老板观看!!!!