OSPF鄰居:
OSPF路由器需要鄰居路由器在幾種狀態間轉換,然後會到達FULL
失效狀態(down):一個會話的初始狀態,除了在NBMA網絡中,其他類型的網絡不會發送hello包給那些失效的鄰居路由器。如果鄰居狀態轉到了失效狀態,路由器將會清空鏈路狀態重傳列表,數據庫摘要列表和鏈路狀態請求列表
嘗試狀態(Attempt):僅適用於NBMA網絡,如果具有DR選舉資格的路由器連接其他路由器的接口變爲active的時候(本地接口),這臺路由器會把鄰居路由器的狀態轉換到Attempt狀態,使用hello間隔代替Pollinterval向鄰居發送hello包.因爲他無法動態的去發現鄰居
初始狀態(init):表明在最近的deadinterval中收到了來自鄰居路由器的hello包,雙向通信依然沒有建立,路由器會在hello包的鄰居字段中包含,在此狀態或者更高狀態下,所有學習到的所有鄰居RID,如果是第一個hello包,爲空(接收到的hello中有RID)
雙向通信狀態(2-way):表示本地路由器從來自鄰居的hello包的鄰居字段中看到了自己的RID。意味着雙向通信建立成功,在MA網絡中,路由器只有在此狀態或者更高的狀態中才有資格參與DR/BDR選舉,如果在init狀態下從鄰居收到數據庫描述報文,也可使本地路由器直接進入2-way狀態
信息交換初始狀態(ExStart):本地路由器和他的鄰居將在這一狀態下建立主/從關係,確定數據庫描述數據包的序列號,爲後面的DBD交換做準備。具有最大RID的路由器爲主路由器
信息交換狀態(Exchange):本地路由器將向他的鄰居路由器發送數據庫描述包,此狀態下,也會發送鏈路狀態請求數據包給鄰居,用來請求LSA
信息加載狀態(Loading):本地路由器向他鄰居路由器發送鏈路狀態請求,用來請求最新LSA,雖然在Exchange狀態發現了新的LSA,但是本地路由器還沒有收到這些LSA
完全鄰接狀態(full):路由器建立起完全的鄰接關係
鄰居建立過程:
互相發送HELLO包來協商一些參數。
OSPF會週期性的從啓用OSPF的接口上發送HELLO包,OSPF啓動之初,就進入了INIT狀態。直到從鄰居的HELLO包中看到了自己的RID,纔會將鄰居的狀態轉爲2-WAY
發送第一個DBD報文,來協商主從關係(是空的DBD報文,僅僅用來協商主從關係)
R1:
R2:
協商過主從關係以後,狀態就從Exstart轉到Exchange,並且開始交互剩下的DBD報文:
DBD報文間用序列號進行確認,主發送的序列號遞增,從序列號跟隨主序列號,來進行確認。這算一種隱性的確認方法。
從鄰居收來的DBD報文中會攜帶LSA頭部信息,如果有本地沒有的,或更新的LSA,將他放入我自己的鏈路狀態請求列表,然後去發送LSR來請求這條LSA的完整信息。直到自己的鏈路狀態請求列表爲空。
有可能在交互DBD的中間,Exchange狀態的時候,就開始發送了LSR,來請求LSA的信息。LSR只包含被請求LSA的頭部信息。
在Exchange狀態下,如果LSU和LSR的交互完成了,則直接轉到FULL狀態,如果還有,則轉到Loading狀態。
接收到LSR的路由器,會返回一個LSU,包含被請求的LSA的詳細信息。
MA網絡和其他網絡的區別,1.需要選舉DR/BDR,建立完整的FULL狀態最少40S,wait time:在開始選舉DR和BDR之間,路由器等待鄰居路由器的Hello數據包通告DR和BDR的時長。
並不是先啓動OSPF進程的路由器就是DR,而是有一個時間間隔讓路由器來等待其他路由器,在這個時間間隔內,路由器相互監聽Hello包中的DR和DBR字段中的信息,並且服從優先級原則,可以這樣認爲——選舉是公平的。(要充分考慮是否真實情況40S內一個MA網絡的OSPF能跑完)
R1先啓動OSPF,40S以後,R2啓用OSPF。看DR/BDR的選舉
(config-router)#do show ip os int f0/0
FastEthernet0/0 is up, line protocol is up
Internet Address 12.0.0.1/24, Area 0
Process ID 1, Router ID 1.1.1.1, Network Type BROADCAST, Cost: 1
Transmit Delay is 1 sec, State DR, Priority 1
Designated Router (ID) 1.1.1.1, Interface address 12.0.0.1
Backup Designated router (ID) 2.2.2.2, Interface address 12.0.0.2
DR/BDR的選舉規則,先選舉BDR,然後這個BDR成爲DR,再選出一個BDR。(因爲所有路由器在開始的時候並沒有聲明自己是DR/BDR,優先級又一樣,故RID大的成爲BDR,然後這個BDR成爲DR,再重新找一個RID次大的,成爲BDR)
如果是串口,默認是點到點的網絡類型,是不需要選舉DR/BDR的。鄰居建立的方式差不多,只是不需要等待40S那麼長時間。
DR/BDR指的是一個接口的概念,虛鏈路也是指的接口。
注:所謂的隱式確認和顯式確認,隱式確認指的是DBD的確認和LSR的確認,這兩個確認是和Retransmit計時器有關的。顯式確認只有LSAck。
OSPF接口:
OSPF協議通過路由器的接口來了解鏈路信息,分清接口和鏈路的概念。
觀察接口結構
R1#show ip ospf interface serial 1/0
Serial1/0 is up, line protocol is up
Internet Address 12.0.0.1/24, Area 0
Process ID 1, Router ID 1.1.1.1, Network Type POINT_TO_POINT, Cost: 64
Transmit Delay is 1 sec, State POINT_TO_POINT,
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
oob-resync timeout 40
Hello due in 00:00:08
Index 1/1, flood queue length 0
Next 0x0(0)/0x0(0)
Last flood scan length is 1, maximum is 1
Last flood scan time is 0 msec, maximum is 0 msec
Neighbor Count is 1, Adjacent neighbor count is 1
Adjacent with neighbor 2.2.2.2
Suppress hello for 0 neighbor(s)
Internet Address:此接口所配置的ip/mask
Area 0:指定的區域ID,始發這個接口的OSPF數據包使用這個區域ID
Process ID:進程ID,CISCO私有,依靠這個CISCO來在同一設備中使用多個OSPF進程,僅僅本地有效
Router ID:路由器ID,選舉規則見LS協議最後一節
Network Type:和接口相連的網絡類型:廣播,點到點,點到多點,NBMA,虛鏈路等。
Cost:發出數據包的出站代價,即數據層面的出接口,控制層面的入接口。
OSPF帶寬計算規則:10的8次方/接口帶寬,這樣會有一個問題凡是大於100M的,cost都爲1.無法衡量出不同鏈路的帶寬
使用auto-cost reference-bandwitch修改分母
InfTransDelay=Transmit Delay :LSA從接口發送經歷的時間,LSA發出後會引發此參數不斷變大 cisco中默認是1S
ip ospf transmit-delay來更改
因爲網絡類型關係,沒有DR/BDR的顯示
Wait 40:在serial 口中沒有意義,表示的是在開始選取DR/BDR之前,路由器等待鄰居路由器的HELLO數據包通告DR/BDR的時長。
Retransmit:在沒有得到確認的情況下,重傳OSPF數據包等待的時間長度,ip ospf retransmit-interval更改
neighbor:只有建立鄰接關係的路由器纔會在此有顯示。
如果開啓認證,此命令最後輸出也會有顯示。如果沒有使用或使用了null認證,則不會顯示。
每臺路由器都會維護一個鄰居數據結構表:
R1#show ip ospf neighbor 2.2.2.2
Neighbor 2.2.2.2, interface address 12.0.0.2
In the area 0 via interface FastEthernet0/0
Neighbor priority is 1, State is FULL, 6 state changes
DR is 12.0.0.2 BDR is 12.0.0.1
Options is 0x52
LLS Options is 0x1 (LR)
Dead timer due in 00:00:36
Neighbor is up for 00:00:59
Index 1/1, retransmission queue length 0, number of retransmission 1
First 0x0(0)/0x0(0) Next 0x0(0)/0x0(0)
Last retransmission scan length is 1, maximum is 1
Last retransmission scan time is 0 msec, maximum is 0 msec
Neighbor :鄰居路由器的RID
interface address:鄰居路由器的IP地址
areaID:收到的hello包中的areaID需要和接收hello包接口的areaID一致,保證互爲鄰居路由器
interface :本地通過哪個接口連接到這個鄰居
state:從本地看鄰居的狀態,此輸出來看是full
DR/BDR:DR/BDR的IP地址,包含在hello包中的DR/BDR字段
Dead timer:收到hello會刷新此計時器