华为 OSPF邻居建立的过程
source link: https://blog.csdn.net/HYD696/article/details/112429756
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
哈喽,大家好!我是艺博东 ,是一个思科出身、专注于华为的网工;好了,话不多说,我们直接进入正题。
二、基础配置
[Huawei]sysname AR-1
[AR-1]int g0/0/0
[AR-1-GigabitEthernet0/0/0]ip address 10.1.12.1 24
[AR-1-GigabitEthernet0/0/0]q
[AR-1]ospf 1 router-id 1.1.1.1
[AR-1-ospf-1]a 0
[AR-1-ospf-1-area-0.0.0.0]network 10.1.12.1 0.0.0.0
[Huawei]sysname AR-2
[AR-2]int g0/0/0
[AR-2-GigabitEthernet0/0/0]ip address 10.1.12.2 24
[AR-2-GigabitEthernet0/0/0]q
[AR-2]ospf 1 router-id 2.2.2.2
[AR-2-ospf-1]a 0
[AR-2-ospf-1-area-0.0.0.0]network 10.1.12.2 0.0.0.0
重启OSPF进程:reset ospf process
三、状态机
分邻居建立,邻接建立两部分来进行
在R1的G0/0/0接口进行抓包
1、邻居关系的建立
(1)DOWN状态
表示的是还没有发现邻居
R2 同理;接口使能之后,组播发送hello报文目的地址为224.0.0.5携带了自己的R-ID为2.2.2.2,邻居路由器还不知道,DR也还没有选举出来。
(2)init状态
收到邻居的hello包,但没有发现自己的R-ID。
R1发送hello报文,携带R-ID为1.1.1.1,邻居路由器为R2,R2收到之后,转态进入了init转态。并将该hello报文的R-id,添加到hello的邻居列表中。
同理:R2发送hello报文,携带R-ID为2.2.2.2,邻居路由器为R1,R1收到之后,转态进入了init转态。并将该hello报文的R-id,添加到hello的邻居列表中。
(3)2-way状态
R1收到邻居列表中含有自己R-ID的hello报文,进入2-way状态,建立OSPF邻居关系,并把该R-ID的添加到自己的OSPF邻居列表中。
R2收到邻居列表中含有自己R-ID的hello报文,进入2-way状态,建立OSPF邻居关系,并把该R-ID的添加到自己的OSPF邻居列表中。
注意:当收到一个 HELLO 包中,没有包含自己的 router id,这时为 one-way
2、邻接关系的建立
(4)Exstart,exchange状态
两台设备第一份DD报文发出之后,还是exstart状态
进入exstart状态,并交互R1、R2都会发送一个空的DD报文,用于选举主从路由器。
主路由器定义一个序列号Seq,每发送一个新的DD报文将Seq+1,作为从路由器的一方,每次发送DD报文时使用接收到的上一个主路由器的DD报文中的Seq。
I=1表示这个是第—个DD报文,M=1表示这不是最后一个报文,MS=1表示宣称自己是主路由器seq为=209。
R2,DD seq=209,I=1,M=1,MS=1
R1,DD seq=212,I=1,M=1,MS=1
首先R1发DD报文,seq=212,I=1,M=1,MS=1。
R2发DD报文,seq=209,I=1,M=1,MS=1。
R2收到R1的DD报文后,将R1的邻居状态机改为exstart,并回应一个DD报文,由于R2的R-ID大,所以在报文中R2认为自己是主路由器,并且重新定义一个seq=209 I=1,M=1,MS=1。
R1收到报文后,同意了R2作为主路由,并将R2的邻居状态机改为exchange。R1使用R2的seq=209来发送新的DD报文,该报文开始正式的传送LSA的摘要信息。在报文中R1将I=0,M=0,MS=0,说明自己是从路由器。
R2收到报文后,将R1的邻居状态机改为exchange,并发送新的DD报文来描述自己的LSA摘要,此时R2将报文的seq=209+1。
(5)loadging,full状态
R1收到最后一个DD报文后,发现R2的数据库中有许多LSA是自己没有的,R1将邻居状态机改为Loading状态,此时R2也收到了R1的最后一个DD报文,但R1的LSA,R2都已经有了,不需要再请求,所以直接将R1的邻居状态机改为Full状态。(DD报文交换完成后进入loading状态,发送LSR,LSU, LSAck完成LSA的交换 )
唯一标识一条LSA的三要素:LS type,LS ID,Adv router;
AR2向AR1发送LSR报文请求该LSA,此时状态由exchange变为loading状态。
扩展: DD交互完成后,如果需要对方的LSA,则发LSR请求,如果都一样,那么就直接FULL
AR1收到AR2的LSR请求报文,便会回复一个LSU报文携带AR2要请求的LSA明细信息。
R2收到LSU报文同步完成后进入FULL状态,并且向R1发送LSAck报文表示确定收到了LSU报文且同步完成。
LSACK报文
在第一个空的DD报文之后,hello才选举出DR,BDR。
接口使能之后,发出第一份 hello 报文的时候就开始计时,40S之内不会认为自己是DR。如果40S超时之后,还是没有收到携带DR、BDR参数字段的Hello报文,就认为自己是DR。
千里之堤,溃于蚁穴。
欢迎访问我的易百纳技术社区文章《华为 OSPF邻居建立的过程》
https://www.ebaina.com/articles/140000005378
好了这期就到这里了,如果你喜欢这篇文章的话,请点赞评论分享收藏,如果你还能点击关注,那真的是对我最大的鼓励。谢谢大家,下期见!
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK