OSPF鄰居創建條件&鄰接創建
一個接口能夠配多個地址,一個主地址,一個從地址
R1(config-if)#ip add 192.168.0.1 255.255.255.0 secondary
OSPF鄰接關係的創建:兩端是點到點的網絡類型確定是能夠創建鄰接關係的,在廣播網和非廣播網中只和DR和BDR創建鄰接關係,而DRother之間只能創建鄰居關係,其餘的網絡類型中所有創建鄰接關係
鄰居:交互Hello報文創建鄰居關係但不交互LSA
鄰接:只有在創建鄰接的設備上纔會交互LSA,LSA-鏈路信息,經過交互LSA構建LSDB,有了LSDB,執行SPF算法,計算到達目的端的最短路徑
2-way ---> exstart:開始創建鄰接關係:
若是能夠創建鄰接關係,鄰居狀態機會從2WAY過渡到exstart,過渡到exstart狀態後 ,雙方開始發送 DBD報文,通告LSA的摘要信息
鄰居狀態變換:
Down->Attempt:在NBMA網絡環境中才有,NBMA環境中,經過手動的方式配置 目標IP地址,單播方式創建鄰居,會存在一個Attempt狀態
鄰居狀態變換(鄰接關係)
*****************************************************************
ExStart和Exchange
兩端變爲ExStart後,雙方開始發送DBD報文,雙方發送的第一個 DBD報文裏面不包含LSA,第一個DBD報文的主要做用是用來選舉主從關係。
一、爲何DBD報文須要選舉主從?(隱示確認的報文)
選舉主從的主要目的是爲了保證DBD報文交互過程當中的可靠性
二、主/從怎麼選?
主從經過router-id選舉,大的成爲主,小的成爲從
DBD報文在主從選舉涉及到幾個bit位:(I M MS)
一、 I=init,若是I比特位設置爲1;,說明是第一個DBD報文
二、M=More,若是M比特位設置爲1,說明後面還有更多的 DBD報文,若是爲0,表示是最後一個DBD
三、MS=Master/slave,若是設置爲1,表示爲主;若是爲0,表示爲從
MTU不會影響鄰居的創建但會影響鄰接的創建
DBD報文中 同
時會 攜帶你接口MTU值,經過這種 方式檢測兩端的MTU是否一致,若是 收到的DBD報文中多攜帶的MTU值大於接收接口的MTU值,
DBD報文會被丟棄掉;小的話能夠正常接收
。
如何經過DD報文保證它的可靠性?
經過序列號seq來保證它的可靠性。
ExStart:開始選舉主從,主從尚未選舉出來
Exchange:主從已經選舉出來,開始發送攜帶LSA信息的DD報文
變爲Exchange狀態,
後續,從會引用主,用主的序列號做爲本身的序列號開始發送DD報文;這樣主就已經知道從已經收到他的DD報文;
後續,主會把序列號seq+1發給從,這樣,從就知道主已經收到了他的DD報文;若是序列號不變,從就會將這個報文重傳,重傳時間5秒鐘。
從什麼狀況下從exstart變爲exchange?主在什麼狀況下變爲exchange?
從一旦肯定主是誰,就會從exstart變爲exchange;主在收到從的回覆後,變爲exchange
如何看沒有更多的LSA信息?
看M比特位,若是此時從的 M=0,表示從這邊後續已經沒有的DD報文,DD報文交互完,沒有更多的LSA信息 ;
若此時主還有,從沒有了,從 還會 按主序列號來回,但M比特位一直爲0;
若是主沒有更多序列號,從還有 ,主還會一直生成序列號讓從去傳。
繼續傳, 直到兩端都沒有之後纔算傳完,傳完之後會從Exchange過分到Loading狀態;
DBD報文交互的時候還會檢測一個MTU值,有沒有可能兩端的狀態都是處於exstart狀態?一端是exstart,一端是exchange?
1.主MTU大於從MTU
M>S,從是否會接收主發送的DD報文?從不接收,它會認爲本身是主,它的狀態不會從exstart過分到exchange;反過來,主是能夠接收從的,但收不到從發過來的「確認」;兩端過渡到exstart狀態;
2.主MTU小於從MTU
M<S,從能夠接收主發送的DD報文,從已經確認了主,從會過渡到exchange;主不接收從發過來的確認報文,主仍是Exstart狀態。
兩端如何變爲Loading狀態?
一、兩端的MTU值設爲同樣的
二、忽略MTU值
接口下 配置忽略MTU檢查
ip ospf mtu-ignore
【實驗驗證】36:40
Loading
若是接收到的DD報文中M比特位=0,維護鄰居的狀態從exchange過渡到loading。在Loading狀態下開始發送LSR和 LSU
一、鏈路狀態請求列表:將須要請求的LSA放到列表中,並經過LSR請求。(
收到LSA摘要信息後須要和本身的LSDB作對比,若是本身的LSDB中不存在該LSA,就須要將LSA放入到請求列表中作請求處理。若是存在須要執行LSA比較流程。)
二、鏈路狀態重傳列表:若是發送了LSR,可是沒有收到LSU,就須要將這部分LSA放到重傳列表中從新請求。從新發送LSR,默認的重傳時間是5秒鐘。
show ip os inter fast 0/0
重傳時間是5秒鐘
若是這兩張列表中其中有一個列表不爲空,就須要處於loading狀態。只有在兩張列表都爲空的狀況下,纔會從loading過渡到FULL的狀態。
【實驗驗證】模擬處於loading狀態
=================================================================
OSPF次日課堂筆記
option選項在哪裏報文中存在? (DN\DC\NP\E)
一、hello 二、DBD 三、LSA
OSPF支持的網絡類型:
一、RFC(IETF)定義的:點到點、點到多點、廣播、非廣播、虛鏈路
二、Cisco私有:cisco的私有網絡類型主要是對NBMA作的擴展:點到點、廣播、點到多點非廣播
Router-id的主要做用是惟一標識一臺設備。
OSPF中如何選舉Router-id,能夠手工指定也能夠自動選舉,手工指定優先於自動選舉。
Router-id自動選舉步驟
一、優先設備上邏輯接口IP地址大的
二、若是沒有邏輯接口的狀況下,優選活動的物理接口IP地址大的。
Cisco中同一臺設備上配置多個OSPF進程,每一個進程須要使用獨立的Router-id,不能公用(若是同一設備多進程使用同一個Router-id會對5類LSA的通告形成影響)。
注:一個接口只能宣告進一個OSPF進程的一個區域。
R1#show ip os inter fast 0/0 \\查看宣告進OSPF的接口信息
FastEthernet0/0 is up, line protocol is up
Internet Address 12.1.1.1/24, Area 0
Process ID 1, Router ID 12.1.1.1, Network Type BROADCAST, Cost: 1
Enabled by interface config, including secondary ip addresses
Transmit Delay is 1 sec, State WAITING, Priority 1
No designated router on this network
No backup designated router on this network
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
oob-resync timeout 40
Hello due in 00:00:05
Wait time before Designated router selection 00:00:35
Supports Link-local Signaling (LLS)
Index 1/1, flood queue length 0
Next 0x0(0)/0x0(0)
Last flood scan length is 0, maximum is 0
Last flood scan time is 0 msec, maximum is 0 msec
Neighbor Count is 0, Adjacent neighbor count is 0
Suppress hello for 0 neighbor(s)
R1#
OSPF的鄰居狀態機:(本設備維護鄰居的當前狀態)
一、DOWN 二、Attempt(NBMA) 三、Init 四、2WAY 五、Exstart 六、Exchange 七、loading 八、FULL
一、DOWN:初始狀況下維護鄰居的狀態爲DOWN,在DOWN狀態下開始發送HELLO報文,廣播網絡類型中hello報文是每隔10S發送一次,而Dead interval是hello interval的4倍,也就是40S,用於維護鄰居關係,若是在dead interval時間範圍內都沒有收到鄰居發送的hello報文,就說明鄰居故障須要斷開鄰居關係。
二、Attempt(NBMA)
三、Init:收到鄰居發送的hello報文而且檢測經過,本地維護鄰居的狀態從DOWN變爲Init,若是處於Init狀態,說明已經和鄰居創建了單向鏈接。
四、2WAY:在鄰居發送的hello報文中包含本身的router-id,說明對方已經收到並確認了本端發送的hello報文,鄰居狀態須要從Init變爲2WAY。若是處於2WAY狀態,說明和鄰居創建了雙向鏈接。2WAY狀態標識鄰居創建完成。
有哪些因素會影響OSPF的鄰居創建?
一、hello和dead時間不一致 (修改hello時間dead時間會自動改變,修改dead時間hello時間不變)
二、認證類型和認證數據不一致 (認證類型=0表示不認證,爲1表示明文認證,爲2表示密文認證)
(1):配置接口認證後,從該接口發送的OSPF報文中會攜帶認證
(2):配置區域認證後,全部屬於該區域的接口在發送OSPF報文中都會攜帶認證
注:若是同時配置了接口認證和區域認證,那麼接口認證優先於區域認證
接口認證配置
(1)明文配置
interface FastEthernet0/0
ip address 12.1.1.1 255.255.255.0
ip ospf authentication
ip ospf authentication-key cisco \\在接口下配置明文認證
ip ospf 1 area 0
duplex half
(2)密文認證 (MD5認證中的序列號做用是抗重放攻擊,一樣的序列號報文只執行一次)
interface FastEthernet0/0
ip address 12.1.1.1 255.255.255.0
ip ospf authentication message-digest \\接口下開啓MD5認證
ip ospf message-digest-key 1 md5 cisco
ip ospf 1 area 0
duplex half
end
區域認證配置
(1)明文配置
router ospf 1
log-adjacency-changes
area 0 authentication\\首先須要在區域下開啓認證功能
•R1(config)#interface serial 0
ip ospf authentication-key cisco \\區域開啓認證後還須要在接口下配置認證密碼
(2)密文配置
router ospf 1
log-adjacency-changes
area 0 authentication message-digest \\首先須要在區域下開啓認證功能
•R1(config)#interface serial 0
•R1(config-if)#ip ospf message-digest-key 1 md5 cisco
注:配置MD5認證後,若是接口下存在多個KEY,創建鄰居前會使用最後一次配置的KEY計算HASH,若是創建成功後經過全部KEY值。配置的KEY-ID是不參與HASH計算的,只是一個索引值。
三、Router-id衝突
R1(config)#router ospf 1
R1(config-router)#router-id ? \\進程下手工修改router-id(建議使用手工指定)
A.B.C.D OSPF router-id in IP address format
Reload or use "clear ip ospf process" command, for this to take effect
R1(config-router)#
四、區域ID不一致
五、網絡類型不一致 ? (hello和dead不一致) \\若是一邊是廣播網,另外一邊是點到點,能夠正常創建鄰居關係,可是沒法正常選路。
網絡類型 hello interval dead interval
廣播 10S 40S
非廣播 30S 120S
點到點 10S 40S
點到多點 30S 120S
虛鏈路 cisco 無 cisco 無
R2(config-if)#ip ospf network ? \\修改接口網絡類型
broadcast Specify OSPF broadcast multi-access network
non-broadcast Specify OSPF NBMA network
point-to-multipoint Specify OSPF point-to-multipoint network
point-to-point Specify OSPF point-to-point network
六、掩碼不一致 ? \\只有在廣播、非廣播網絡型中才會檢查掩碼,緣由是由於這兩種網絡類型中都須要生成2類LSA,而2類LSA中須要掩碼長度,而在點到點、點到多點和虛鏈路的網絡類型中不須要檢查掩碼匹配。
七、接口地址不在同一網段 ? \\若是在點到點網絡類型中,接口的IP地址使用地址借用的方式是不會執行源檢查的,若是接口直接配置IP地址,一樣會存在源檢查。
例:R1----R2經過串口互聯,R1上配置IP地址,R2上使用IP地址借用,R1和R2配置OSPF,結果以下:
R1#show ip os neighbor
R2#show ip os neighbor
Neighbor ID Pri State Dead Time Address Interface
12.1.1.1 0 INIT/ - 00:00:32 2.2.2.1 Serial1/0
八、區域類型不一致 \\option選項中的Ebit表示能夠接收和傳遞外部路由(5類LSA),在stub和totllay stub中Ebit位須要設置爲0.同時N/Pbit位也是屬於區域類型位(nssa和tollay nssa)。 若是在hello和DBD報文中N/P位置爲,Ebit位就須要設置0,這兩個bit位不能同時被設置。
九、ACL
十、PASSIVE接口(OSPF中的passive接口不收發hello報文)
R2#show ip os neighbor \\查看鄰居狀態
Neighbor ID Pri State Dead Time Address Interface
12.1.1.1 1 FULL/DR 00:00:38 12.1.1.1 FastEthernet0/0
(鄰居狀態機/接口狀態機)
OSPF的報文類型:
一、hello:發現創建和維護鄰居關係
二、DBD(數據庫描述報文):用於通告LSDB中全部的LSA的摘要信息(LSA的頭部信息)
三、LSR(鏈路狀態請求):用於請求具體的LSA信息
四、LSU(鏈路狀態更新):用於通告具體的LSA信息
五、LSACK(鏈路狀態確認):用於確認接收到的LSA
在OSPF中有兩種確認機制:一、隱式確認(hello、DBD、LSU) 二、顯示確認(LSACK)
OSPF鄰接關係的創建:在廣播網和非廣播網中只和DR和BDR創建鄰接關係,而DRother之間只創建鄰居關係。其它的網絡類型中所有創建鄰接關係。
若是能夠創建鄰接關係,鄰居狀態機會從2WAY過渡到exstart,過渡到exstart狀態後,雙方開始發送DBD報文。雙方發送的第一個DBD報文中不會攜帶LSA摘要信息,第一個DBD報文的主要做用是選舉主/從關係。
一、爲何DBD報文須要選舉主從?
選舉主從的主要目的是爲了保證DBD報文交互過程當中的可靠性。
二、主/從怎麼選?
主從經過router-id選舉,大的成爲主,小的成爲從。
DBD報文在主從選舉涉及到幾個bit位: (I M MS)
一、I=init, 若是I比特位設置爲1,說明是第一個DBD報文
二、M=More, 若是M比特位設置爲1,說明後面還有更多的DBD報文,若是爲0,表示是最後一個DBD
三、MS=Master/slave,若是設置爲1,表示爲主,若是爲0,表示爲從
DBD報文中同時會攜帶接口MTU值,經過這種方式檢查兩段的MTU值是否一致。若是收到的DBD報文中攜帶的MTU值大於接收接口的MTU,那麼DBD報文會被丟棄。
interface FastEthernet0/0
ip address 12.1.1.2 255.255.255.0
ip mtu 1300
ip ospf mtu-ignore \\接口下配置忽略MTU檢查
duplex half
end
若是接收到的DD報文中M比特位=0,維護鄰居的狀態從exchange過渡到loading。在loading狀態下開始發送LSR和LSU。
在loading狀態下有兩張列表:
一、鏈路狀態請求列表:將須要請求的LSA放到列表中,並經過LSR請求。(收到LSA摘要信息後須要和本身的LSDB作對比,若是本身的LSDB中不存在該LSA,就須要將LSA放入到請求列表中作請求處理。若是存在須要執行LSA比較流程。)
二、鏈路狀態重傳列表:若是發送了LSR,可是沒有收到LSU,就須要將這部分LSA放到重傳列表中從新請求。從新發送LSR,默認的重傳時間是5秒鐘。
若是這兩張列表中其中有一個列表不爲空,就須要處於loading狀態。只有在兩張列表都爲空的狀況下,纔會從loading過渡到FULL的狀態。
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">算法
附件列表