OSPF:開放式最短路徑優先協議
OSPF LSA詳解
OSPF 網絡優化
OSPF的特殊區域詳解
1.協議簡述
OSPF爲無類別狀態路由協議;基於拓撲工作,更新量大,爲保證可以在中、大型網絡中工作,需要結構化部署–區域劃分、地址規劃
跨層封裝於IP報頭,協議號89;觸發更新、週期更新(30min),組播更新地址224.0.0.5通用地址 224.0.0.6 DR/BDR專用地址
2.距離矢量型與鏈路狀態型協議比較
當網絡規模較小時,OSPF用時長,隨着網絡規模的不斷擴大OSPF收斂速度相比於距離矢量型會更快
3.OSPF的數據包
OSPF有5種數據包
HELLO包-用於鄰居的發現、建立、保活
DBD-數據庫描述包-本地數據庫的目錄
LSR-鏈路狀態請求-查看鄰居的DBD後,對本地未知信息進行查詢
LSU-鏈路狀態更新-應答對端的LSR,分享本地LSA信息
LSACK-鏈路狀態確認
LSA-鏈路狀態通告,具體的拓撲或者路由信息;基於LSU包來進行傳遞;
LSDB-鏈路狀態數據庫,所有LSA的集合
4.OSPF的鄰居關係
1.P2P 224.0.0.5組播更新
2.MA網絡 會縮減鄰居關係(算法所致)-DR/BDR 224.0.0.6組播更新
通信過程
只能讓DR/BDR 收集MA網絡信息,使用兩個組播地址
DR/BDR 發送使用224.0.0.5,監聽使用224.0.0.6
DR OTHER 發送使用224.0.0.6,監聽使用224.0.0.5
5.OSPF鄰居形成過程
(1).鄰居狀態機制
1.DOWN----一旦發出HELLO包進入下一個狀態
2.INIT 初始化----HELLO包發出但未收到含有本地RID的HELLO包
3.TWO-WAY 雙向通信----HELLO包發出並收到含有自己本地RID的回包,只有MA網絡有(P2P網絡直接跳過該狀態),用於選舉DR/BDR,鄰居關係建立的標誌
4.EXSTART----DBD發出,並收到,用於選舉主從關係,RID大的設備爲主,主設備先發送攜帶拓撲縮略信息的DBD,收到對方發送的LSACK結束
5.EXCHANGE----DBD完整結構,由主先發出,從接收後發出,DBD中攜帶的是拓撲的目錄(縮略信息),用來查看該路由器哪些信息時自己需要的,哪些是自己不需要的,收到對方的LSACK結束
6.LOADING----發送LSR請求自己想要的完整拓撲信息,對方用LSU迴應,LSU會攜帶該路由器完整的拓撲信息,以自己發送LSACK確認對方LSU結束
7.FULL----轉發狀態,鄰接關係建立完成
ATTEMPT狀態只有在NBMA中出現(當卡在INIT狀態時會轉到ATTEMPT狀態等待對方的HELLO包)
(2).OSPF建立鄰居的條件
1.HELLO,DEAD時間一致
2.MTU值一致
3.認證
4.相同的AREA ID
5.特殊標識(NSSA和STUB)
6.ROUTER-ID不能相同
7.網絡類型(主要爲HELLO時間)但是點到點和MA建立鄰居關係會引起SPF算法混亂
8.MAX-LSA數量的限制會引發LSA加載失敗影響建鄰
9.掩碼一致(MA網絡可以不相同)
(3).鄰居成爲鄰接關係的條件
基於網絡類型,P2P網絡類型必然成爲鄰接關係;P2P網絡點到點不會有第三者的出現
因爲OSPF協議需要在鄰接關係之間進行數據庫的比對,同步;故不能使用類似距離矢量協議的接口水平分割,導致在MA網絡中將出現大量的重複更新;所以使用DR/BDR選舉規則來解決–非DR/BDR間不能成爲鄰接關係
DR/BDR 選舉規則(非搶佔性)
1.比較接口優先級,點到點優先級默認爲0(不參選,無選舉權),MA網絡優先級默認爲1,範圍0-255,越大越優。
2.若本地優先級相同,對比RID(唯一標識一個路由器,先回環地址,沒有則接口地址,多個地址選最大),值最大爲DR,次大爲BDR
6.拓撲信息LSA
LSA-鏈路狀態通告 LSA頭(縮略信息)+LSA體 完整的LSA攜帶完整的拓撲信息
DBD和LSR攜帶的都是LSA的頭部協議 只有LSU才攜帶LSA的完整信息
LSA頭部內容
1.TYPE類型
2.LS-ID
3.LS-ADVROUTER 通告者路由器
4.序列號
5.校驗
6.長度
LSA內容
1.鏈路的路由前綴
2.鏈路路由掩碼
3.鏈路的開銷
4.連接的鏈路類型,以及連接的路由器
7.路徑收斂(SPF算法)
當收到LSA後,根據LSDB運行SPF算法,找出自己到達所有路由器的所有最短路徑,生成樹裝圖(無環路,且最短),在圖中檢索,自己到達其他路由器網段的路徑,該路徑最短
8.LSA的接收和洪泛
週期洪泛 30min洪泛 60min會老化 1個LSA在60分鐘沒有收到洪泛,就會被刪除
如圖所示,當一個路由器收到LSU後,先判斷LSU中攜帶的LSA是否在自己的LSDB中,如果在,檢查是否含有相同的序列號,如果序列號相同則直接丟棄,序列號不同的判斷此序列號是否在自己LSA的序列號之前,不在則添加進入數據庫發送LSACK,洪泛LSA,運行SPF算法生成新的路由表,在則自己發送LSA更新對方
當一個路由器收到LSU後,判斷LSU中攜帶的LSA是否在自己的LSDB中,不在的話,直接加入DBD表,發送LSACK,洪泛LSA,運行SPF算法計算生成新的路由表
OSPF LSA詳解
OSPF 網絡優化
OSPF的特殊區域詳解
9.OSPF的彙總與默認路由
1.彙總
(1).域間彙總-針對3類LSA彙總-只能在ABR上操作
R3(config)#router ospf 1
R3(config-router)#area 1 range 4.4.4.0 255.255.254.0
彙總同時可以做路由過濾
R3(config-router)#area 1 range 4.4.4.0 255.255.254.0 no-advertise
此條命令可以刪除明細,產生彙總,但不傳播
彙總的本質:刪除明細路由,創造一條彙總路由(一般路由協議都會產生彙總,在本地指向空接口,爲防環)
(2).域外匯總-針對5類7類LSA彙總-只能在ASBR上操作
r5(config)#router ospf 1
r5(config-router)#summary-address 99.1.0.0 255.255.252.0
2.默認路由(缺省路由)
兩種下放方式
1.當路由表中有默認路由時,在OSPF中如下操作
R2(config)#router ospf 1
R2(config-router)#default-information originate
2.強制下放
本地無默認路由也可下放缺省,但是慎用,當在有兩個出口的網絡中,ALWAYS下發默認,會出現問題
R2(config)#router ospf 1
R2(config-router)#default-information originate always
10. OSPF的高級操作
1.STUB路由器
R5(config)#router ospf 1
R5(config-router)#max-metric router-lsa ?
external-lsa Override external-lsa metric with max-metric value
include-stub Set maximum metric for stub links in router-LSAs
on-startup Set maximum metric temporarily after reboot
summary-lsa Override summary-lsa metric with max-metric value
<cr>
(1).max-metric router-lsa 最大開銷1類LSA
經過該路由器傳遞的1類LSA都會把metric加到最大,有其他路徑就不會走該路徑
(2).max-metric router-lsa on-startup X(數值)
收到一個LSA,在X秒內收到的metric都會設置爲最大
用於主備切換
max-metric router-lsa on-startup wait-for-bgp
收到LSA在BGP收斂之前會把metric設置爲最大(防止BGP收斂引發的瞬時黑洞現象)
2.max-lsa
限制該路由器LSA接收的數量,目的是保護該路由器
R2(config-router)#max-lsa 10
低端路由器,承載不了相當多的LSA
3.Graceful restart-完美重啓
當OSPF進程丟失或者重啓的時候,OSPF的路由不會從路由表中刪除
4.域ID
R2(config-router)#domain-id x.x.x.x
用於判斷OSPF是否在一個AS,默認值爲進程號
11.OSFP的認證
1.鏈路認證
用途防止鏈路接入非法路由器,鏈路所有設備均需開啓
1.明文認證//不安全
R1(config)#interface e0/0
R1(config-if)#ip ospf authentication //開啓明文認證,可以不寫祕鑰
R1(config-if)#ip ospf authentication-key cisco //輸入明文認證密碼
2.密文認證(MD5認證)//安全
R1(config)#interface e0/0
R1(config-if)#ip ospf authentication message-digest //開啓認證
R1(config-if)#ip ospf message-digest-key 1 md5 cisco //輸入祕鑰
2.區域認證
用途防止區域內接入非法路由器(無授權),區域內所有路由器都需開啓
路由器所定義區域所有接口都打開認證
1.明文認證(所有所在區域路由器上均需配置)
R1(config)#router ospf 1
R1(config-router)#area 0 authentication //區域開啓明文認證
R1(config-router)#exit
R1(config)#interface e0/0
R1(config-if)#ip ospf authentication //接口開啓明文認證
R1(config-if)#ip ospf authentication-key cisco //接口寫入祕鑰
2.密文認正(MD5認證)所有所在區域路由器均需配置
R1(config)#router ospf 1
R1(config-router)#area 0 authentication message-digest //區域開啓密文認證
R1(config-router)#exit
R1(config)#interface e0/0
R1(config-if)#ip ospf authentication message-digest //接口開啓密文認證
R1(config-if)#ip ospf message-digest-key 1 md5 cisco //接口寫入祕鑰
12.OSPF的過濾技術
1.分發列表
是一種操作路由表顯示路由條目的做法//使用的時候不太推薦,有侷限性,侷限性體現在,本路由器過濾的路由不會影響下游路由器
配置
R1(config)#router ospf 1
R1(config-router)#distribute-list 1 in e0/1 //1爲ACL1
R1(config-router)#exit
R1(config)#access-list 1 deny host 5.5.5.5
R1(config)#access-list 1 permit any
在OSPF中,不能使用OUT操作,只能定義IN,在距離矢量型路由協議中可以定義IN
距離矢量型爲傳遞路由錶行爲,OSPF不能傳遞路由表
2.fliter-list
只能針對3類LSA,如果存在多個ABR,需要在多個ABR上都需要做
R3(config)#router ospf 1
R3(config-router)#area 1 filter-list prefix xx in
R3(config)#ip prefix-list xx deny 5.5.5.5/32
R3(config)#ip prefix-list xx permit 0.0.0.0/32 le 32
3.通過彙總不通告來過濾明細路由
彙總和明細都不通告
配置
R3(config)#router ospf 1
R3(config-router)#area 1 range 10.5.0.0 255.255.0.0 not-advertise
4.重發布的過濾
重發布時使用route-map來過濾
配置
R3(config)#interface loopback 1
R3(config-if)#ip address 10.8.1.1 255.255.255.255
R3(config-if)#exit
R3(config)#interface loopback 2
R3(config-if)#ip address 10.8.2.2 255.255.255.255
R3(config-if)#exit
R3(config)#router ospf 1
R3(config-router)#redistribute connected route-map K subnets
R3(config-router)#exit
R3(config)#route-map K deny 10
R3(config-route-map)#match ip address 1
R3(config-route-map)#exit
R3(config)#route-map K permit 20 //放空一張表,允許其他路由通過
R3(config-route-map)#exit
R3(config)#access-list 1 permit 10.8.2.2 0.0.0.0
route-map爲拒絕,acl爲允許,一真一假結果爲假