如果您喜歡這裡的內容,記得分享到您的Facebook和Twitter上面所有的朋友們吧!

2009年12月31日 星期四

IOS 中 OSPF 的 "network area" 命令, Wildcard Mask 其實可以是 Subnet Mask

 router ospf 1
 network 192.168.1.0 0.0.0.255 area 0 
IOS 中 OSPF 的 "network area" 命令, Wildcard Mask 的欄位其實可以改使用 Subnet Mask 來輸入. 雖然我還沒有找到官方的文件說明, 不過我試了幾個 IOS 的版本/平台都是如此. (感謝 Danny 的發現!)



一般我們在設定 OSPF 時, 通常都使用類似於以下的命令片段, 啟用 OSPF 協定:

router ospf 1
 network 192.168.1.0 0.0.0.255 area 0
! ...

應該大家都知道, 其中 192.168.1.0 0.0.0.255 代表 "基準位址" 和 "Wildcard Mask", 跟 Access Control List (ACL) 一樣, 二進位表示法中, "Wildcard Mask" 標示為 "0" 的位元代表比對基準位址的相同位元需要符合, 標示為 "1" 的位元代表不需比對 ("Don't Care"). 然後所有的網路卡中, 如果IP位址符合, 就啟動 OSPF; 否則就不啟動.

但是如果我們改用等價的 Subnet Mask 取代, 也就是說, 本例子改成以下片段, 是否可以設定得進去?

router ospf 1
 network 192.168.1.0 255.255.255.0 area 0
! ...

試驗結果, 竟然是可以的! 只不過, 當我們檢查 "show run" 時, 會發現 IOS 自動會幫我們轉成等價的 "Wildcard Mask" 格式.

另外, OSPF "network area" 命令中的 Wildcard Mask, 是否可以像 ACL 中一樣地彈性, 將 "0" 和 "1" 的位元自由調配嗎? 試驗結果發現 "並不是"!

R0(config)#router ospf 1
R0(config-router)# network 10.1.0.1 0.15.255.248 area 0
OSPF: Invalid address/mask combination (discontiguous mask)
R0(config-router)#

自由調配, 會有 "OSPF: Invalid address/mask combination (discontiguous mask)" 的錯誤訊息.

結論

從以上分析, 發現 OSPF network area 命令中的 Wildcard Mask 功能, 甚至可以完全使用 Network Mask 來取代.

至於 Cisco 當時為何要設計成使用 Wildcard Mask, 我猜想只是軟體設計的方向不同, 也許當初Cisco 的 OSPF 軟體開發小組, 想法/偏好跟其他像是 RIP, EIGRP 的開發小組不一樣吧! 然後為了向後相容, 所以就不改過來了!

至於平常應該如何設定 OSPF? 我建議還是按照官方文件的說明, 使用 Wildcard Mask. 養成好習慣, 所有的 IOS 版本都可以適用.
如果您喜歡這篇文章,不考慮試試Email訂閱嗎?




4 則留言:

  1. EIGRP也是這樣,可以直接使用subnet mask來取代wildcard

    http://www.cisco.com/en/US/tech/tk365/technologies_q_and_a_item09186a008012dac4.shtml

    Q. When I configure EIGRP, how can I configure a network statement with a mask?

    A. The optional network-mask argument was first added to the network statement in Cisco IOS Software Release 12.0(4)T. The mask argument can be configured in any format (such as in a network mask or in wild card bits). For example, you can use network 10.10.10.0 255.255.255.252 or network 10.10.10.0 0.0.0.3.

    回覆刪除
  2. 還是劉老師比較厲害! 幫大家找到官方文件, 同時文件中還說明了 EIGRP 也是一樣的!

    感謝! Happy New Year 2010!

    回覆刪除
  3. 不過在新版的IOS上面,我偏好使用-if)#ip ospf {process-id} area x這個interface指令,我喜歡這個指令的簡潔和明確,又跟IPv6的格式一致

    回覆刪除
  4. 我贊成藍天使的建議! 改天我們可以一起寫一些相關的文章跟大家分享!

    感謝補充!

    回覆刪除

小技巧:也可以 匿名 留言!

經典熱門文章