哈嘍,大家好!我是藝博東 ,是一個思科出身、專注于華為的網工;好了,話不多說,我們直接進入正題,
文章目錄
- 一、拓撲
- 二、基礎配置
- 三、狀態機
一、拓撲

二、基礎配置
AR1
[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
AR2
[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

好了這期就到這里了,如果你喜歡這篇文章的話,請點贊評論分享收藏,如果你還能點擊關注,那真的是對我最大的鼓勵,謝謝大家,下期見!
CSDN認證博客專家
網路
路由交換
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/249106.html
標籤:其他
上一篇:C++描述 LeetCode 1. 兩數之和 哈希表實作
下一篇:nginx實作session共享
