OSPF是一個水很深的路由協議,即使把RFC 2328 吃透了,倒背如流了,也不一定能完全掌握OSPF的精髓。作為使用最廣泛的路由協議,其優秀的性能和兼容性確實值得誇讚,但也正是因為如此,不同廠商在使用OSPF時還是會根據廠商自身的資源和優勢對OSPF進行定製化,雖然變的不多,但是對於一些沒有啥項目經驗、沒怎麼摸過設備的「小白」來說,OSPF的水很深。那麼這篇文章就帶大家深入的了解一下OSPF的鄰居建立機制,幫助大家強化記憶OSPF的鄰居建立要素及機制。

影響OSPF鄰居關係及鄰接關係建立的主要問題:

Hello/Dead發送時間間隔:時間一致才能建立鄰居關係。若Hello間隔為10S,而Dead間隔默認是Hello間隔的4倍。

區域ID:相鄰的路由器在同一區域才能建立鄰居關係,檢查OSPF頭中的Area ID,Area ID出現在所有OSPF報文的頭部而非Hello報文中。

區域類型:區域類型要一致。判斷區域類型是否一致要參考Hello報文中的Option位,其中,E和N/P置位代表的含義不同。這裡的區域類型指STUB區域類型、NSSA區域類型和常規及骨幹區域類型。

認證類型和密鑰一致:只有驗證通過才能建立鄰居關係。

Router ID無衝突:OPSF的Router ID是可以手工指定或系統自動選定的。直連路由器要建立鄰居關係是,Router ID一定不能相同。

特殊的鄰居關係建立問題:

1、 主IP網路和掩碼

Hello報文中,攜帶有介面主IP網路的掩碼,Hello報文中通過掩碼和報文的源IP地址,就可以判定鄰居雙方是否在同一個主IP網路,主IP網路是介面配置的第一個IP地址網路。如下圖:R1發送的OSPF報文源地址是10.1.1.1,掩碼為24,那麼主IP網路就是10.1.1.0/24,同樣,R2的主IP網路就是11.1.1.0/24。此時,二者之間的鏈路如果是點對點鏈路,那麼R1和R2就能成功建立鄰居關係;如果是廣播網路類型,則不能建立鄰居關係。

如果直連鏈路是乙太網鏈路,當R1收到R2的Hello報文後,根據報文的源IP地址和Hello中的介面掩碼,可以算出R2的主IP網路和R1的主IP網路二者不一致,由於OSPF設計要求接在同一個廣播網路上的節點的主IP網路由虛節點,也就是指定路由器DR來傳遞,DR不允許網路上有多個主IP網路,所以建立鄰居關係時,不允許主IP網路不一致的網路節點間建立鄰居關係。

如果R1和R2間是點到點類型的網路,在OSPF中,點到點網路類型的節點間都可以獨立表達自己介面的所有網路,彼此間沒有關係,建立鄰居關係沒有限制,所以R1和R2間建立鄰居關係時既不檢查掩碼,也不檢查源地址,能正常建立鄰居關係。

結論:

OSPF網路類型,如果是廣播或非廣播(NBMA)網路,則接在該網路上的所有節點上的主IP網路必須一致才能建立鄰居關係,如果網路類型是P2P或P2MP,則沒有此要求。

2、 MTU不一致

OSPF在Exstart狀態下會檢查鄰居彼此的介面MTU,MTU決定了發送的OSPF報文大小,同時也決定了可接收的OSPF報文大小。

OSPF在鄰接關係處在Exstart/Exchange狀態時,預設情況下DD報文中Interface MTU為0,OSPF既不填充介面實際MTU值,也不執行MTU一致性檢查。如果通信雙方介面配置的MTU不一致,OSPF在同步LSDB時可能因MTU不一致而無法進入FULL狀態。

在上圖中,如果R1和R2的介面MTU不一致,R1介面MTU=1490,R2介面MTU=1500,並且OSPF介面MTU填充及檢查功能被開啟,在資料庫同步過程中,若R1收到大小為1500Byte的DD或LSU或LSR報文,OSPF在任一狀態下都將無法處理超出其接收能力的報文。例如,若收到的是DD報文,則R1忽略該報文,且不會回應DD報文,R2會因超時收不到R1的DD報文而停留在Exchange狀態,當然,OSPF也可能基於同樣原因停留在Loading狀態。

華為使用ospf mtu-enable命令可開啟介面填充及檢查MTU。

由於其他設備廠商可能會使用不同的MTU預設設置,所以為了保證一致,可以設置介面發送DD報文時MTU值不填充及檢查,為預設值0(華為默認),但帶來的風險是同步過程中可能會停留在某個狀態。

結論:

OSPF在建立鄰居關係後,在同步資料庫時,若路由器停留在Exstart或Exchange或Loading狀態,多是由於MTU不匹配而導致的。

不同的OSPF網路類型互聯後能否正常建立鄰居計算路由呢?

NBMA+其他網路類型:該類型無法建立鄰居,也無法進行鄰接關係的同步及路由計算,因為NBMA網路智能和同類型的節點建立鄰居關係。

P2MP+Broadcast:將Hello間隔時間調整一致後可以建立鄰居,也可以進行鄰接關係建立,但是無法計算出對方的路由。

P2MP+P2P:將Hello間隔時間調整一致後可以建立鄰居,也可以進行鄰接關係建立,並且路由計算也是正常的。

Broadcast+P2P:可以直接建立鄰居關係,也可以成為鄰接關係,但是無法計算出對方的路由。

註:以上結論僅限於非Cisco設備,Cisco設備之間P2P環境直連不同網段之間是無法建立OSPF鄰居關係的。

更多內容請關注公開課

新盟教育/HCNP全新升級(含HCNA+項目實戰)-學習視頻教程-培訓課程-騰訊課堂?

ke.qq.com
圖標

推薦閱讀:
相关文章