OSPF网络类型详解
背景
OSPF區域是由不同類型的網絡鏈路組成的,鄰接行為隨網絡類型而異,而要確保OSPF在某些類型的網絡上能正確運行,必須對其進行正確的配置。根據拓撲和需求的變化,OSPF可以手工修接口的網路類型來適應不同的二層鏈路拓撲。
OSPF定義了如下3種RFC公有網絡類型:
點到點(Point-to-Point):網絡中只有一對路由器相互連接。如,WAN中的HDLC,PPP和幀中繼的點到點子接口。
廣播(Broadcast):多路訪問廣播網絡,如以太網(Ethenet),令牌環網(TokenRing),?光纖分布式數據接口(FDDI)。
非廣播多路訪問(NBMA):連接的路由器超過兩臺,但是沒有廣播能力。如幀中繼、ATM和X.25等網絡都屬于NBMA。在NBMA網絡中,OSPF可以有5種運行模式。
注意:其實NBMA網絡不是沒有廣播的能力,而是廣播針對每一條VC發送,這樣就使得一臺路由器在不是Full-Mesh的NBMA拓撲中,發送的廣播或組播分組可能無法到達其他所有路由器。
RFC在以3種鏈路類型的基礎上擴展出5種網絡類型:
點到點(Point-to-Point)
點到多點(Point-to-Multipoint)
虛鏈路(Virtual Link)
廣播(Broadcast)
非廣播多路訪問(NBMA)
注意:其中虛鏈路較為特殊,不針對具體鏈路。而NBMA鏈路對應NBMA和點到多點兩種網絡類型。思科路由器在NBMA網絡上實現的鏈路類型有5個,2 × RFC(非廣播和點到多點) + 3 × Cisco(點到點,廣播,點到多點非廣播),區分較為復雜。
默認情況下OSPF 不能通過NBMA接口自動與鄰居建立鄰接關系,RFC 2328為OSPF在NBMA拓撲中的運行定義了兩種模式:非廣播和點到多點,分別對應的接口模式為:
ip ospf network non-broadcast
在Non-Broadcast 模式下是模仿OSPF在廣播型鏈路中的運行,通常在Full-Mesh 者Partial-Mesh 使用,如果不是Full-Mesh必須手動選舉DR/BDR。路由器接口處于同一IP子網,手動指定鄰居,選舉DR/BDR且必須與DRother在VC 上直連。
ip ospf network point-to-multipoint
在 Point-to-Multipoint 模式下是將NBMA視為一系列點到點的集合,通常用于Hub-and-Spoke 者Partial-Mesh,接口處于同一IP子網,使用OSPF組播自動發現鄰居,不選舉DR/BDR。
Cisco為NBMA多設計了三種模式:為廣播,點到多點非廣播和點到點,分別對應的接口模式為:
ip ospf network broadcast
如果說non-broadcast是在模仿廣播型鏈路,那么broadcast就是將NBMA完全當成廣播型鏈路,讓WAN接口就像Lan接口。使用OSPF組播Hello來自動發現鄰居,而不是像non-broadcast為每個PVC提供一個LSA拷貝。應用這種模式的前提是NMBA拓撲為Full-Mesh,且在FR Map中使用了關鍵字broadcast。
ip ospf network point-to-multipoint non-broadcast
如果在VC上沒有啟用組播和廣播功能,即定義Map時沒有使用關鍵字broadcast,那么就要應用point-to-multipoint non-broadcast相應的取消組播hello功能,代以手動配置鄰居,無需選舉DR和BDR。
ip ospf network point-to-pioint
如果鏈路中涉及多個子網,那么一定要用到Point-to-Point類型,也一定會用到子接口,每個子接口屬于不同的子網,接口可以是WAN接口也可以是LAN接口。子接口分為兩種模式,點到點和點到多點,其中點到多點子接口和主接口配置方式一致,而點到點子接口則有些不同:
interface Serial0/0?????????????????????????????????????????????????? interface Serial0/0.2 multipoint
encapsulation frame-relay????????????????????????????????????? ip address 20.1.1.1 255.255.255.0
frame-relay lmi-type? ansi????????????????????????????????????? ip ospf network point-to-point
interface Serial0/0.1 point-to-point??????????????????????? frame-relay map ip 20.1.1.2 105 broadcast
ip address 10.1.1.1 255.255.255.0???????????????????????? frame-relay map ip 20.1.1.3 106 broadcast
frame-relay interface-dlci 101??????????????????????????????? frame-relay map ip 20.1.1.4 107 broadcast
注意:
若子接口使用point-to-point模式,則意味著這個子接口對應的子網里只有一臺路由器,即這個IP子網只有兩個節點;而使用 multipoint模式時,意味著這個子接口對應多條VC,IP子網內有多于兩臺的路由器。通過配置就可以理解為什么說點到多點是點到點鏈路的集合。
最初創建子接口的目的在于解決在NBMA上運行距離矢量協議引起的水平分割問題,即從一接口收到的路由信息不會再從這個接口發出去。而這個接口本身 可能連著多個鄰居,這樣就阻礙了網絡中路由信息的傳遞,子接口是物理接口在邏輯上的劃分,能很好的解決水平分割帶來的問題。
虛鏈路 可以認為是點到點的一種特殊配置,在虛鏈路上OSPF數據包是以單播形式發送,并不在意物理鏈路是什么類型,關鍵是虛鏈路兩端可以實現互通。
以上5種網絡類型形式上的差異在于:
是否選舉DR?
是否自動發現鄰居
更新時間
這5種網絡類型應用上的差異在于:
NBMA拓撲是否是Full-Mesh
NBMA接口是否在同一IP子網
Frame-Relay 在定義Map時是否支持廣播,即是否加了關鍵字broadcast。
所以總的來說,OSPF有8種網絡類型:點到點,虛鏈路,點到多點,NBMA有5種(cisco:點到點,廣播,點到多點非廣播;RFC:非廣播,點到多點),在接口下使用如下命令可以知道OSPF支持哪些網絡類型:R1(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
從上面輸出的內容上看,你是否會問,手動接口下的OSPF網絡類型只有4種哪來的5種?其實point-to-multipoint nonbroadcast是隸屬于上面的point-to-multipoint網絡類型下的,請看下面命令:
R1(config-if)#ip ospf network point-to-multipoint ?
? non-broadcast? Specify non-broadcast point-to-mpoint network
? <cr>
由此可以知道,OSPF接口下的網絡類型。總結如下:
網絡 類型 | 二層 封裝 | Hell/ Dead | DR/ BDR | 手動指 定鄰居 | 支持32位主機路由 | 支持2個 以上路由 | 動態鄰 居發現 |
點對點 | HDLC,PPP,FR-SUB-P2P,GRE | 10/40 | No | No | No | No | Yes |
廣播 | ETH, TokenRing, FDDI | 10/40 | Yes | No | No | Yes | Yes |
NBMA | FR-Primar/SUB-MP,ATM,X.25 | 30/120 | Yes | Yes | No | Yes | No |
點到多點 | 無默認 | 30/120 | No | No | No | Yes | Yes |
點到多點非廣播 | 無默認 | 30/120 | No | Yes | No | Yes | No |
Loopback | Loopback接口 | NA | NA | NA | Yes | NA | NA |
OSPF在NBMA的一些局限和優化方案
點到多點和點到多點非廣播可以改善NBMA部分互聯(Hub-Spoke模式)拓撲下,原有NBMA網絡類型的以下缺點:
在Hub要手工指定每一個Spoke端的neighbor,也許你會問,是否可以在Spoke端指定Hub為neighbor?答案是可以,但是配置比較分散不能集中配置需要在每個Spoke都指定neighbor。另外,Spoke端設置Priority 0以后,指neighbor打了命令后能生效但是show running看不見,其實命令是存在的,no掉priority后就可以看到。
需要在每個Spoke配置ip ospf priority 0,也許你會問,為什么不在Hub端把它的Priority設置成255?可以這么做,但是假如Hub down了很短時間,這時候Spoke就會成為DR,等Hub再恢復時,不搶占。
每個Spoke端都需要其他Spoke端的二層映射表項。
RFC的點到多點網絡類型可以優化以上3個問題:
在有條件使用“偽廣播”一類的方法在NBMA網絡上支持廣播時,發送組播Hello可以自動發現鄰居,無需手工指定neighbor地址。
點到多點,等于多個點到點,所以不需要選DR,自然也就不需要設Spoke端的Priority為0來讓Spoke不參與DR的選舉。
Spoke學習到其他Spoke的路由,下一跳指向的是Hub(相當于Hub代轉),所以Spoke只要擁有Hub的二層映射項即可。如果Spoke還想訪問其他Spoke的接口用于測試(直連路由,沒有下一跳),仍然會用到其他Spoke接口的二層映射,點到多點網絡類型的解決辦法是:生成一條接口的IP的32位主機路由,下一跳指向Hub。從而徹底不需要Spoke之間的二層映射表項。
而Cisco的點到多點非廣播類型的優化方案和上面大同小異:
用在無條件使用“偽廣播”等方法在NBMA上支持廣播時,不能自動發現鄰居,只能退而求其次手動指定neighbor地址。
其他“點對多點”的優點仍然繼承。
show ip ospf interface InterfaceType看到的網絡類型仍然是Point-to-Point,但是實際上是不同的(只能通過show running查看)。
Loopback網絡類型
環回接口(邏輯接口)的定義決定了它不可能連接主機或者其他網絡設備,如果環回接口配置成一個網段,實際上也只有接口配置的一個主機IP被用到。實際工作中通常將環回接口用于管理或者測試。
對于環回接口宣告OSPF時,默認的OSPF網絡類型是Loopback,不管接口實際配置的掩碼是多少位,都會被OSPF當做32位主機路由生成鏈路狀態信息并計算出路由。如果希望不要被處理成32為主機路由,而是顯示為真實掩碼長度。可以手動修改環回接口的網絡類型,但是只支持修改成point-to-point。
OSPF類型巧記技巧
1. 凡是“Point-to系列”(包括to-point,to-multipoint,to-multipoint nonbroadcast)均不需要選舉DR/BDR,在Hub-and-Spoke這種星型拓撲中建議使用“Point-to系列”模式。
2. 凡是“Broadcast系列”(包括broadcast,non-broadcast),不管加不加non,多少都是廣播型鏈路的翻版,需要選舉DR/BDR。
3 .凡是“Nonbroadcast系列”(包括non-broadcast,point-to-multipoint nonbroadcast),一個non就是廢除廣播 & 組播能力,只能手動指定鄰居。
4 .在Full-Mesh的拓撲中才可以應用non-broadcast 或broadcast模式,配置較為簡單,但是如果發生鏈路中斷,DRother可能會找不到DR,導致路由信息丟失。
5. Hub-Spoke拓撲中如果運行non-broadcast模式,要在hub 位置配置neighbor命令,并且都設置Spoke接口的優先級為0使其不參與DR/BDR選舉。如果配置為點到多點模式,命令可大為簡化。
6. 如果一個NBMA鏈路里有多個IP子網,則主接口網絡類型一定是point-to-point,并且一定得用子接口,再看IP子網內接口,多于兩個就用點到多點子接口,因為點到點子接口只能容納一個DLCI。
7. 如果在配置FR Map時沒加關鍵字broadcast,則只能使用“non-broadcast系列”,即non-broadcast和point-to-multipoint broadcast兩種網絡類型。
轉載于:https://blog.51cto.com/jettcai/1666310
總結
以上是生活随笔為你收集整理的OSPF网络类型详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 消息中间件系列四:RabbitMQ与Sp
- 下一篇: HDFS学习心得