OSPF
協議本身
詳細資料OSPF思維導圖
OSPF(Open Shortest Path First,開放式最短路徑優先協議) 基於SPF(最短路徑算法)所開發,是一個鏈路狀態型路由協議,路由與路由間所傳爲拓撲狀態,無類別協議,更新時攜帶子網掩碼;組播更新地址爲224.0.0.5/6。但是需要結構化部署(區域劃分、地址規劃)區域內傳拓撲,區域間傳路由。
5種數據包
- hello包—用於發現、建立、維持、週期保活鄰居關係
- DBD包(數據庫描述包)—本地數據庫
- LSR(鏈路狀態請求)—收到鄰居DBD後查詢其他未知信息
- LSU(鏈路狀態更新)—回答鄰居的LSU並分享本地LSA的信息
- LSack(鏈路狀態確認)
7個狀態機
- down—本地發出hello包進入下一狀態
- lint—接收到存在本地router-id的hello包後,進入下一狀態
- 2way—鄰居關係建立,點到點網絡直接進入下一狀態,MA網絡進行DR/BDR選舉,DRother不進入下一狀態
- Exstart—發送類DBD包進行主從選舉,router-id大進入下一狀態
- Exchange—使用真正的DBD包,進行數據庫目錄的共享,需要ACK確認
- Loading—使用LSR/LSU/lsack獲取未知拓撲信息
- Full—鄰接關係建立
起初本地爲down狀態,一旦本地發出hello包就進入lint初始化;接收到hello包後,若存在本地的RID,則進入2way狀態;2way雙向通信標誌着鄰居關係的建立(條件匹配:點到點網絡直接進入下一狀態,MA網絡將進行DR/BDR的選舉 DRother不得進入下一狀態)Exstart預啓動:發送類hello的DBD包進行主從關係的選舉,RID數字大的爲主優先進入Exchange準交換狀態;準交換狀態使用真正的DBD包進行數據庫目錄的共享,需要ack來進行確認,確認完畢進入Loading加載狀態;加載狀態使用LSR/LSU/LSack來獲取未知的lsa信息,獲取完畢進入full轉發狀態;轉發狀態標誌着鄰接關係的建立
6類LSA
類別 | 傳播範圍 | 通告者 | 攜帶信息 |
---|---|---|---|
LSA1router | 本區域 | 該區域所有路由器 | 本地直連拓撲 |
LSA2network | 本區域 | DR | MA部分網絡拓撲 |
LSA3summary | 本區域 | ABR | O IA域間路由 |
LSA4asbr-summary | 除ASBR外其他區域 | ABR | ASBR的位置,所在區域用LSA1告知 |
LSA5external | 整個OSPF區域 | ASBR | OE域外路由 |
LSA7nssa-external | NSSA區域 | ASBR | ON域外路由 |
類別 | Link id | 通告者 |
---|---|---|
LSA1router | 通告者的RID(直連信息) | 本區域所有路由器 |
LSA2network | DR的接口IP地址 | DR |
LSA3summary | O IA路由目標地址(域內路由) | ABR,經過一個ABR 會修改 |
LSA4asbr-summary | ASBR的RID(位置) | ABR,經過一個ABR 會修改 |
LSA5external | OE路由目標地址(域內路由) | ASBR |
LSA7nssa-external | ON路由目標地址 | ASBR |
工作過程
啓動配置完成後,本地使用組播發送hello包到所有鄰居處,若收集到其他鄰居的hello包,那麼建立鄰居關係,生成鄰居表;
和所有鄰居間進行條件匹配,若失敗將停留於鄰居關係,僅hello包週期保活即可;
若匹配成功,將建立鄰接關係;鄰接關係間將使用DBD/LSR/LSU/LSack來獲取未知的LSA信息;當收集齊所有的LSA信息後,本地生成LSDB–鏈路狀態數據庫—數據庫表;
再本地基於LSDB計算到達所有未知網段的最佳路徑,然後將其加載到路由表中;
不規則區域的解決方法
- tunnel —在兩臺ABR上創建tunnel,然後將其宣告到OSPF協議中
缺點:選路不佳且週期hello和更新均對中間區域進行影響 - 虛鏈路—OSPF自帶,在兩臺ABR上配置,使未連接骨幹的ABR得知骨幹的存在,之後將域間路由進行交互;取消週期的更新和鄰居保活
優點:選路佳、佔用中間區域資源少;
缺點:不可靠 - 多進程雙向重發布,不同的進程擁有不同的RID和數據庫,不同進程間的數據庫是不共享的;且計算所得路徑同時放置於路由表中;若多個進程同時工作於一個接口,那麼僅最先工作進程生效## ospf的優化
ospfLSA的優化
-
優化非骨幹區域
【1】不存在ASBR
1.末梢區域—拒絕4、5類LSA;產生一條3類缺省,需在該區域內所有設備修改
2.完全末梢區域—在末梢區域的基礎上進一步拒絕3類的LSA,僅保留一條3類的缺,先將該區域配置爲末梢區域,然後僅需要在ABR上定義爲完全末梢即可
【2】存在ASBR
1.NSSA—拒絕4、5的LSA,不自動產生3類缺省(華爲設備產生一條缺省,思科設備需手工添加);5類在NSSA區域內被轉換爲7類轉發;離開該區域後還原爲5類
2.完全的NSSA----在NSSA的基礎上,進一步拒絕3/4/5類LSA,5類轉7類;自動產生缺省指向ABR;先將該區域配置爲NSSA,然後僅需要在ABR上定義爲完全即可 -
優化骨幹區域
在ABR上進行域間路由彙總;在ASBR上進行域外路由彙總
鏈路類型
類型type | link id | 數據data |
---|---|---|
P2P | 鄰居的router id | 該網段本地接口的IP地址 |
Transnet | DR的接口IP地址 | 該網段本地接口的IP地址 |
Stubnet | 該stub網段的IP地址 | 該stub網段的網絡掩碼 |
Virtual | 虛鏈路鄰居的router id | 該虛鏈路鄰居的本地接口IP地址 |
SPF算法
SPF算法將每一個路由器作爲root來計算到每一個路由器的距離,形成一個有向圖,SPF算法會優先記錄最小cost值的路徑
優點:
域間彙總減少路由條目數量
彙總路由是在所有明細路由均消失後才刪除,網絡更穩定
區域劃分後不同類別的LSA傳播範圍不同,控制更新量
不規則區域實驗
實驗要求:
1.R4爲ISP
2.R1-R3中R3爲DR,無BDR,IP爲192.168.1.0/24
3.R5-R14ip地址爲172.16.0.0/16
4.合理規劃ip,減少LSA更新量
5.兩邊區域可以互相通信
子網劃分(OSPFip可按區域劃分)
區域 | IP網段 | 細分網段 | IP網段 |
---|---|---|---|
A0 | 172.16.0.0/19 | R5-8 | 172.16.0.0/20 |
- | - | R5環回 | 172.16.16.0/22 |
- | - | R6環回 | 172.16.20.0/22 |
- | - | R7環回 | 172.16.24.0/22 |
- | - | R8環回 | 172.16.28.0/22 |
A1 | 172.16.32.0/19 | R9骨幹+環回 | 172.16.32.0/20 |
- | - | R10骨幹+環回 | 172.16.48.0/20 |
A2 | 172.16.64.0/19 | R11骨幹 | 172.16.64.0/21 |
- | - | R11環回 | 172.16.72.0/21 |
- | - | R12骨幹 | 172.16.80.0/21 |
A3 | 172.16.96.0/19 | R13骨幹+環回 | 172.16.96.0/19 |
A4 | 172.16.128.0/19 | R14骨幹+環回 | 172.16.128.0/19 |
A5 | 172.16.160.0/19 | R12環回 | 172.16.160.0/19 |
網段 | IP地址 |
---|---|
R1環回 | 192.168.1.0/26 |
R2環回 | 192.168.1.64/26 |
R3環回 | 192.168.1.128/26 |
R1-3 | 192.168.1.192/26 |
R3-R4和R4-R5之間使用34.1.1.0/24和45.1.1.0/24網段
實驗及各區域網段如下:
1.基本ip配置略
2.在兩個區域分別啓兩個OSPF協議
R1(config)#router ospf 10
R1(config-router)#router-id 1.1.1.1
R1(config-router)#exit
R1(config)#interface loopback 0
R1(config-if)#ip ospf 10 area 0 可以在接口進行宣告
R1(config-if)#exit
R1(config)#interface f0/0
R1(config-if)#ip ospf 10 area 0
R1(config-if)#exit
R12右邊兩個環回啓的RIPV2協議
R12(config)#router rip
R12(config-router)#version 2
R12(config-router)#no auto-summary
R12(config-router)#network 172.16.160.0
R12(config-router)#network 172.16.176.0
3.R1-R3區域修改接口優先級 使R3爲DR 無BDR
R1(config)#interface f0/0
R1(config-if)#ip ospf priority 0 接口等級爲0表示放棄選舉
R1(config-if)#end
R1#clear ip ospf process 因爲OSPF選舉爲非搶佔行性,所以修改優先級後要重啓進程
Reset ALL OSPF processes? [no]: y
R2略
4.R3,R5直接用tunnel
R3(config)#interface tunnel 0
R3(config-if)#ip address 35.1.1.1 255.255.255.0 配置缺省
R3(config-if)#tunnel source fastEthernet 1/0 隧道源
R3(config-if)#tunnel destination 45.1.1.2 隧道目標,必須爲真是IP地址
R3(config-if)#ip ospf 100 area 0 tunnel接口劃入ospf
R3(config)#ip route 172.16.0.0 255.255.0.0 tunnel 0 流量引入接口
R5(config)#interface tunnel 0
R5(config-if)#ip address 35.1.1.2 255.255.255.0
R5(config-if)#tunnel source f0/0
R5(config-if)#tunnel destination 34.1.1.1
R5(config-if)#ip ospf 100 area 0
R5(config)#ip route 192.168.1.0 255.255.255.0 tunnel 0
5.R7,R14做虛鏈路virtual-link
R7(config)#router ospf 100
R7(config-router)#area 3 virtual-link 1.0.1.3 Area 3爲穿越區域 後面跟對端的router-id
R13(config)#router ospf 100
R13(config-router)#area 3 virtual-link 7.7.7.7
6.R12上做重發布
R12(config)#router ospf 100
R12(config-router)#redistribute rip subnets 因爲R12右邊是環回接口,所以只需要將環回的路由信息導入到area2即可
7.進行區域優化
Area1區域爲末梢區域,可配置完全末梢
R8(config)#router ospf 100
R8(config-router)#area 1 stub
R9(config)#router ospf 100
R9(config-router)#area 1 stub
R10(config)#router ospf 100
R10(config-router)#area 1 stub
R8(config)#router ospf 100
R8(config-router)#area 1 stub no-summary
Area2爲nssa區域,可進行優化
R6(config)#router ospf 100
R6(config-router)#area 2 nssa
R11(config)#router ospf 100
R11(config-router)#area 2 nssa
R12(config)#router ospf 100
R12(config-router)#area 2 nssa
R6(config)#router ospf 100
R6(config-router)#area 2 nssa no-summary
每個區域可以進行路由信息的彙總進行優化
R5(config)#router ospf 100
R5(config-router)#area 0 range 172.16.0.0 255.255.224.0每個區域的每個路由器都需要配置
8.R5和R3上寫缺省,做NAT並下放缺省
R5(config)#ip route 0.0.0.0 0.0.0.0 45.1.1.1 寫一條缺省指向ISP
R5(config)#access-list 1 permit 172.16.0.0 0.0.255.255 定義感興趣流量
R5(config)#ip nat inside source list 1 interface f0/0 做nat
R5(config)#interface f0/0
R5(config-if)#ip nat outside
R5(config-if)#exit
R5(config)#interface f1/0
R5(config-if)#ip nat inside
R5(config)#router ospf 100
R5(config-router)#default-information originate 向ospf區域內路由器下方缺省
R3(config)#ip route 0.0.0.0 0.0.0.0 34.1.1.2
R3(config)#access-list 1 permit 192.168.1.0 0.0.0.255
R3(config)#ip nat inside source list 1 interface f1/0
R3(config)#interface f1/0
R3(config-if)#ip nat outside
R3(config-if)#ex
R3(config)#interface f0/0
R3(config-if)#ip nat inside
R3(config-if)#exit
R3(config)#router ospf 10
R3(config-router)#default-information originate
測試
R10可以ping通R4的環回
R1可以ping通R10的環回