OSPF邻接建立过程详解
今天主要就是和大家探讨一下OSPF在广播网络中邻居建立的过程,哪里有不同的意见,讨论区可以可以聊天的哦~
接下来我们直接进入主题,直接看拓扑吧!!!!!
大家看到的上图是,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状态的时候,就说明邻接状态已经建立。
(具体如下图)
既然已经建立成功了,那我们就以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报文 实际报文实例如下图
步骤三、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的邻居状态就建立了~ 实际报文实例如下图
步骤四、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是主设备 实际报文实例如下图
步骤五、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的摘要信息 |
实际报文实例如下图
从设备(AR1)收到之后,就会发送一个DD报文 DD的序列号用主设备(AR2)的645来达到隐式确认的作用 实际报文实例如下图
步骤六、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 |
实际报文实例如下图
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的报文)
实际报文实例如下图(LSA的详细信息)
步骤七、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的详细信息)
实际报文实例如下图(LSA的详细信息)
那今天的内容就到这里吧~感谢各位老板观看!!!!