每天資訊聊一聊Router ID,順便說下華為eNSP模擬器的bug

菜單

聊一聊Router ID,順便說下華為eNSP模擬器的bug

Router ID就是路由器的身份標識,在一個自治系統或者路由域內唯一標識一臺裝置,對於華為和華三裝置,它們都有一個全域性的Router ID,思科裝置沒有全域性Router ID, Router ID對於協議的正常執行非常重要,OSPF和BGP等協議都離不開它。

OSPF的RouterID是什麼?

Router ID是一個32位的值,以點分十進位制的形式(X。X。X。X)表示,這讓很多人以為Router ID與IP地址是一回事,但實際上並不是這樣,Router ID只是路由器的標識,只是為了便於閱讀和配置,所以用了IP地址的表示方式,比如0。0。0。1和255。255。255。255顯然不是合法的IP地址,但是你可以在華為裝置上將0。0。0。1作為Router ID,可以在思科裝置上將255。255。255。255作為Router ID,所以不要被形式迷惑了。

Router ID是如何確定的?

華為和華三裝置:上面說了華為和華三裝置有個全域性的Router ID,這個Router ID可以手動配置的,如果沒有配置那會按照規則選擇一個IP地址作為Router ID。

規則是這樣的,路由器有Loopback介面,那就選Loopback介面中最大的IP地址作為Router ID;如果沒有Loopback介面,那就選物理介面中最大的IP地址作為Router ID。

舉例,如果路由器沒有手動配置Router ID,但是配置了Loopback介面(IP地址是1。1。1。1),我們分別在華為和華三模擬器上看看效果。

華為

[R1]display router id

RouterID:1。1。1。1

華三

[H3C-ospf-1]display router id

Info: No router ID configured

Router ID chosen by system is 1。1。1。1

從上面的結果我們能看到,華為和華三路由器都選了Loopback介面的IP地址作為Router ID,華三路由器比較人性化,提示Router ID沒有設定而是由系統選擇。

寫到這裡關鍵的來了,那麼是手動設定Router ID好還是讓系統選擇好呢?我個人認為,既然我們是網路管理者,那麼網路的關鍵配置都該在我們的掌控中,而Router ID就屬於關鍵配置,所以還是花點心思設計一下Router ID,在出問題的時候不會手忙腳亂。

OSPF和BGP等協議在開啟前會檢查是否有Router ID,如果沒有,那麼協議不會執行。當然,可以為協議配置私有Router ID,不使用全域性Router ID,比如在開啟OSPF的時候同時指定Router ID(例ospf 1 router-id x。x。x。x),這在某些情況下非常有用。Router ID如果重新配置,不將相關程序重啟,新的Router ID是不會生效的。

我用華為eNSP模擬器做OSPF實驗的時候,發現eNSP不講武德,不按規則選取Router ID,這估計是映象的一個bug,我想真機應該不會這樣,我用eve-ng實驗了一下也是這個樣子。另一個bug,DR和BDR正常情況不應該是搶佔模式,即DR和BDR一旦選出來後,即便優先順序再高的路由器出現,DR和BDR都不會變。但實際情況是,DR和BDR在優先順序高的路由器出現後,哎嘿,他就變了,就是這麼不講武德。這兩個坑留這,希望你們別再跳進去了。

總結一下華為eNSP模擬器中路由器Router ID選擇的實際情況:

1。手動設定最優;

2。如果沒有手動設定,那麼無論是Loopback介面還是物理介面,不管他們的IP地址誰大誰小,哪個IP地址先設定,哪個IP地址就作為Router ID。

3。想改變Router ID,重啟OSPF等程序是沒用的,因為從上面你也看到了,Router ID的確定跟這些協議是無關的,那怎麼才能改變Router ID,只有將作為Router ID的介面IP更改或者刪除。

4。路由器重啟後,Router ID會重新選舉,這次會選用物理介面編號地址最小的那個IP地址作為Router ID,看到了吧,就是這麼不講武德。

聊一聊Router ID,順便說下華為eNSP模擬器的bug