十一、OSPF聚合(匯總)
1、路由聚合(匯總)
路由匯總是一種重要的思想,在大型的項目中是必須考慮的一個重點事項。隨著網絡的規模越來越大,網絡中的設備所需維護的路由表項也就會越來越多,路由表的規模也就會逐漸變大,而路由表是需要占用設備的內存空間的,路由的查詢也是需要占用設備的資源的。
因此需要考慮(尤其在一些大型的網絡中)在保證網絡中路由暢通的同時,減小路由表的規模。在不使用路由匯總的情況下,每個鏈路的LSA會發送到OSPF骨干一級其他區域中,這就造成了不必要的網絡流量和路由開銷。假如使用路由匯總,只有匯總的路由會傳播到骨干區域,避免了大量LSA占用帶寬,CPU以及內存資源。即便鏈路出現了故障,這種變化也不會傳播到骨干網絡中,使得骨干網絡更加穩定。
幾乎所有的路由協議都支持路由匯總。RIP、EIGRP等協議支持自動及手工路由匯總,而OSPF只支持手工路由匯總。
路由聚合(Route Aggregation or Route Summarization,路由匯總):是指ABR可以將學習到的具有相同前綴的路由信息,按照一定的規則聚合到一起,只發布一條路由到其它區域。
一般來說,路由匯總可以大大減少設備路由表項和轉發表項。一方面可以減輕設備的負擔,另一方面也可以讓設備保存更多不同地址的路由。
作用:通過匯總路由的方式減小路由表規模以及優化設備資源利用率。
缺陷:最大的問題是它會導致黑洞路由。
(上圖)R2將學習到外網10.1.1.0/28的路由發送給R1,R1將這條路由匯總為10.1.1.0/24。如果R2配備了到R1的默認路由,此時如果R1收到發往10.1.1.1/28的數據包,就會轉發給R2,而R2上沒有到10.1.1.1/28的路由,就會發送數據數據包返回到R1,在這種情況下,會生成一個循環。因此,在配置路由匯總的過程中,需要慎重考慮是否會導致此類問題。
(1)路由聚合的優/缺點
1)針對明細路由做匯總可以有效地減少OSPF路由器的數據庫條目也就是路由表條目,合理的節省了設備性能。
2)可以隱藏明細路由不穩定所造成的路由震蕩問題。
3)在雙出口做路由聚合時,有一個做,有一個沒做會影響到路由選路。
(2)OSPF匯總的使用場景
當OSPF域內某臺ASBR(自治域邊界路由器)設備重分布了大量的路由進入OSPF域內,而這些路由條目又是連續的,可以匯總成幾條子網掩碼更大的路由條目的時候,就可以考慮在ASBR設備上做路由匯總,以便向OSPF域內傳遞的時候只通告這些匯總的路由,減少OSPF域內的路由數量,節約設備資源。
??當OSPF域內某臺ABR(區域邊界路由器)設備學習到了普通區域傳遞過來的大量的路由,而這些路由條目又是連續的,可以匯總成幾條子網掩碼更大的路由條目的時候,就可以考慮在這臺ABR設備上做路由匯總,以便這些路由條目經過骨干區域(area 0)傳遞到其他普通區域的時候只通告這些匯總的路由,減少OSPF域內的路由數量,節約設備資源。
(3)為什么我們需要OSPF路由匯總?
對于OSPF邊緣路由器,我們可以配置stub area、total stub area、NSSA area或total NSSA area來減少其存儲的LSDB和OSPF路由表項。但是如果骨干路由器上的LSDB表項太多,或者不是骨干但不能配置為特殊區域的區域,如何減少這些路由器上的LSDB和OSPF路由數量呢?
從前面的描述可以知道,可以通過路由匯總來實現。
OSPF是一種鏈路狀態路由協議,因此OSPF路由器不傳輸路由,而是傳輸鏈路狀態信息。因此,OSPF路由通過匯總LSA來控制鏈路狀態信息的傳輸,從而減小LSDB數據庫的大小,進而控制路由的匯總。
由于OSPF路由分為區域內路由、區域間路由和外部路由(即引入OSPF進程的路由),所以區域內路由不需要匯總。
概念:將多條具有相同前綴的路由聚合成一條,通告到其他區域
目的:1.減少維護數據庫的規模? 2.減少路由表維護數量? 3.減少其他區域不穩定鏈路的影響
2、聚合機制
與RIP不同,OSPF不支持自動路由聚合,僅支持手動路由聚合。
(1)OSPF路由聚合方式
域間匯總(區域間路由聚合) :可以減少路由信息,從而減小路由表的規模,提高設備的性能。
區域間路由聚合,必須配置在ABR路由器上。ABR把與自己直接相連區域(Area)的路由進行聚合,把Type-1和Type-2 LSA轉換成Type-3 LSA時,對生成的Type-3 LSA進行聚合。從而減少傳播至與自己直接相連的其他區域的Type-3 LSA的數量。
需要特別強調的是,區域間路由只能聚合由Type-1 LSA或Type-2 LSA產生的路由;如果路由是由外部或其他區域傳到本區域的(或者說路由是由Type-5 LSA或 Type-3 LSA生成的),則對于這樣的路由ABR是不能夠進行聚合的。
域外匯總(外部路由聚合):必須配置在ASBR路由器上,在ASBR路由器上,針對引入OSPF網絡的外部路由進行的聚合,目的是減少在OSPF網絡中的Type-5 LSA的數量。
對于NSSA區域,當該區域的ABR將Type-7 LSA轉換為Type-5 LSA時,該ABR也可以充當ASBR的角色,并對Type-5 LSA進行聚合。需要注意的是,當NSSA區域存在多臺ABR時,必須由Router-ID最大的ABR進行Type-7 LSA到Type-5 LSA的轉換操作。
NSSA區域的外部路由聚合有兩種方式:
1)在NSSA區域的ASBR上直接對外部路由進行聚合,
2)在NSSA區域中Router-ID最大的、負責將Type-7 LSA轉成Type-5 LSA的ABR上進行聚合。
1)OSPF區域間路由匯總(ABR聚合)
僅針對本區域域內路由(以O開頭的域內路由)做匯總,本區域的OIA的域間路由沒有辦法匯總。
ABR向其它區域發送路由信息時,以網段為單位生成Type3 LSA。如果該區域中存在一些連續的網段,則可以通過命令將這些連續的網段聚合成一個網段。這樣ABR只發送一條聚合后的LSA,所有屬于命令指定的聚合網段范圍的LSA將不會再被單獨發送出去。(如下右圖)
OSPF區域間路由聚合是指當OSPF LSA在不同區域間擴散時,通過在ABR上配置,將多條LSA聚合為一個LSA,然后進行擴散操作。
????????
(如上左圖)假設R1和R2之間的網段是10.1.1.0/24,R2和R3之間的網段是10.1.0.0/24網段,那么在R4和R5上,你會學到兩條OSPF路由,即10.1.1.0/24和10.1.0.0/24。如果我們把R1上的這兩個網段匯總起來,匯總成10.1.0.0/23,那么R4和R5上就只有一個OSPF網段,即10.1.0.0/23。
需要注意的是,在ABR上配置路由聚合時,需要在區域下進行配置。(如上左圖)我們要匯總區域1中的兩個網段10.1.0.0/24和10.1.1.0/24,那么需要在R1的區域1下配置聚合。
觀察R1和R4上的LSDB數據,我們可以看到R1將10.1.1.0/24和10.1.0.0/24兩條路由聚合成一個 LSA發送到區域0。
[R1]display ospf lsdb
OSPF Process 1 with Router ID 10.1.14.1
Link State Database
Area:0.0.0.0
Type????????? LinkStateID??????? AdvRouter???? Age? ???? Len? ???? Sequence ???? Metric??
Router??????? 10.1.14.1????????? 10.1.14.1???? 1353???? 36?? ??? 88888886????? ???? 1
Router??????? 10.1.14.4????????? 10.1.14.4???? 1362???? 36?????? 80088083????? ???? 1
Network?????? 10.1.14.1????????? 10.1.14.1???? 1353???? 32?????? 80880002????? ???? 0
Sum-Net?????? 10.1.0.0?????????? 10.1.14.1???? 1130???? 28?????? 80888882????? ???? 2
Area:0.0.0.1
Type????????? LinkStateID??????? AdvRouter???? Age????? Len????? Sequence????? Metric??
Router??????? 10.1.0.2?????????? 10.1.0.2????? 1366???? 48?????? 88888885?????????? 1
Router??????? 10.1.14.1????????? 10.1.14.1???? 1396???? 36?????? 88888885?????????? 1
Network?????? 10.1.1.1?????????? 10.1.14.1???? 1396???? 32?????? 88888882?????????? 0
Sum-Net?????? 10.1.14.0????????? 10.1.14.1???? 1438???? 28?????? 80888881?????????? 1
[R4]display ospf lsdb
OSPF Process 1 with Router ID 10.1.14.4
Link State Database
Area:0.0.0.0
Type????????? LinkStateID??????? AdvRouter???? Age????? Len????? Sequence????? Metric??
Router??????? 10.1.14.1????????? 10.1.14.1???? 1393???? 36?????? 808868861????????? 1
Router??????? 10.1.14.4????????? 10.1.14.4???? 1488???? 36?????? 800000031????????? 1
Network?????? 10.1.14.1????????? 10.1.14.1???? 1393???? 32?????? 800660820????????? 0
Sum-Net?????? 10.1.0.0?????????? 10.1.14.1???? 1170???? 28?????? 80000002?????????? 2
2)OSPF外部路由匯總(ASBR聚合)
配置路由聚合后,如果本地設備是自治系統邊界路由器ASBR,將對引入的聚合地址范圍內的Type5 LSA進行聚合。當配置了NSSA區域時,還要對引入的聚合地址范圍內的Type7 LSA進行聚合。
如果本地設備既是ASBR又是ABR,則對由Type7 LSA轉化成的Type5 LSA進行聚合處理。
??? 對于NSSA區域,當該區域的ABR將Type-7LSA轉換為Type-5LSA時,該ABR也可以充當ASBR的角色,并對Type-5LSA進行聚合。
ASBR:針對重分發進來的外部路由做路由匯總
除了OSPF區域間路由匯總,OSPF引入外部路由時,我們還可以在ASBR上配置路由聚合。
????????
與OSPF 區域間路由聚合類似,OSPF 外部路由聚合也是在路由聚合完成后根據聚合路由生成LSA 進行擴散。
查看R2上的LSDB,可以看到聚合的LSA。
3、匯總(聚合)計算方法
(1)簡單的,同一子網的匯總
(下左圖)判斷第幾位發生變化,轉換成二進制,將不變的位,保留下來作為子網掩碼的位數=16+5=21。也可以算變化的位24-3=21,變化的位全部值為0,那么這個時候的網絡地址就是匯總后的地址。
192.168.00000000.0/21=192.168.0.0/21(255.255.248.0)
案例1:
IP地址?????????????????????????????????????????????????????????????????????????? | 二進制 |
172.18.129.0/24???????????????????????????????????????????????????????????? | 129:10000001 |
172.18.130.0/24???????????????????????????????????????????????????????????? | 130:10000010 |
172.18.132.0/24???????????????????????????????????????????????????????????? | 132:10000100 |
172.18.133.0/24???????????????????????????????????????????????????????????? | 133:10000101 |
前5位相同(10000),后3位不同 |
相同的前綴有21位,保留相同位數,將相同比特后面的數(到末尾)填充為0將不相同的3個001比特填充為0,得到10000000,根據8\4\2\1法計算出,十進制為128。
結果:路由匯聚的Ip地址就是172.18.128.0,172.18.128.0/21。掩碼=8+8+5,前21位比特為1不能變,變化為后11位。
不變的10000:128+64+32+16+8=128+80+40=248掩碼為255.255.248.0。
案例2:
IP地址?????????????????????????????????????????????????????????????????????????? | 二進制 |
202.113.79.128/27???????????????????????????????????????????????????????? | 128:1000 0000 |
202.113.79.160/27???????????????????????????????????????????????????????? | 160:1010 0000 |
202.113.79.192/27???????????????????????????????????????????????????????? | 192:1100 0000 |
202.113.79.224/27???????????????????????????????????????????????????????? | 133:1110 0000 |
相同的前綴有25位,保留相同位數,將不相同比特后面的數(到末尾)填充為0。
將不相同的比特填充為0,得到10000000,根據8\4\2\1法計算出,十進制為128。
結果:路由匯聚的Ip地址就是202.113.79.128。202.113.79.128/25。掩碼=8+8+8+1,前25位比特為1不能變,變化為后7位。可用地址數為2^7-2=126。
(2)復雜的,不同子網的匯總
首先判斷是第幾段的地址位發生變化,后面的可以忽略,匯總成這個段的地址的主網絡號,其次使用上面簡單的處理方法 ,匯總后子網為8+1=9 或者16-7=9
4、配置OSPF路由匯總
配置OSPF路由聚合分為:配置OSPF域間路由聚合和配置OSPF外部路由聚合。
注意:OSPF區域間路由聚合只能在ABR上配置,OSPF外部路由聚合只能在ASBR上配置。
配置區域間路由匯總
[R1] ospf 1
[R1-ospf-1] area 1
[R1-ospf-1-area-0.0.0.1] abr-summary 10.1.0.0 255.255.254.0
配置外部路由匯總
[R3] ospf 1
[R3-ospf-1] asbr-summary 1.1.0.0 255.255.252.0
(1)OSPF路由匯總案例(一)
?
(上圖所示)R1、R2、R3、R4及R5運行OSPF,OSPF區域的規劃如圖。
R5將三個直連網段(172.16.1.0/24、172.16.2.0/24、172.16.3.0/24)都network到OSPF。
R1將三個直連網段(10.1.1.0/24、10.1.2.0/24、10.1.3.0/24)都重發布到OSPF。
完成上述配置后,所有的路由器應該都能學習到全網的路由。在ABR上執行路由匯總(下圖所示)
在R3(ABR)上對Area2內的路由執行匯總:
[R3]router ospf 1
[R3]area 2 range 172.16.0.0 255.255.0.0 cost ?
注意,這種匯總方式(area range)只能在ABR上配置,而且只能對ABR直接連接的區域中的Intra-Area路由(區域內部路由)執行匯總。
R3執行匯總后,R1及R2的路由表中將出現172.16.0.0/16的匯總路由,而不會再學習到明細路由。如此一來,R1及R2的路由表就精簡了,而且當它們需要訪問R5下掛的那三個網段時,可以通過這條匯總路由到達。
要強點的是,如果不是在R3,而是在R2上對R5下掛的網段進行匯總,則無法實現。因此此時R3作為ABR,已經將描述這些網段的3類LSA注入到了Area0,而在R2上,是無法對這些3類LSA進行路由匯總的。?在ASBR上執行路由匯總(下圖所示)
?
在R1上對其自己重發布進OSPF的路由執行匯總:
router ospf 1
? summary-address 10.1.0.0 255.255.0.0
完成上述配置后,R2、R3、R4及R5都會學習到一條10.1.0.0/16的匯總路由(使用Type-5 LSA描述),而不會再學習到10.1.1.0/24、10.1.2.0/24以及10.1.3.0/24這三條明細路由。
在NSSA的ABR上執行路由匯總
?
? 將網絡做一點小小的變更,Area1被配置為NSSA。R1將三條直連路由引入NSSA,R2會學習到這三條外部路由(Type-7 LSA),并執行Type-7 LSA轉Type-5 LSA的動作,因此其實R2既是ABR又是ASBR,這些Type-5 LSA是由其產生的,那么R2也能執行路由匯總:
router ospf 1
??summary-address 10.1.0.0 255.255.0.0
OSPF匯總路由的防環設計
?
? 在上圖所示的場景中,R3將R5下掛的三個子網匯總成172.16.0.0/16并向R2通告這條匯總路由。R1則下發一條OSPF默認路由到整個OSPF域。此時R5下掛的某個子網里有PC中毒,瘋狂掃描一個并不存在的子網的IP地址(如172.16.222.0/24子網),這些數據包被發給網關R5,R5通過路由表查詢,最終將這些報文依照默認路由進行轉發,也就是發送給R4,而R4也一樣,將報文依照默認路由轉發給R3,R3再轉給R2,而R2由于已經收到R3傳遞過來的匯總路由(172.16.0.0/16),因此經過路由表查詢后,數據包的目的地址匹配上了這條匯總路由,于是它又把這些數據包丟回去給R3,數據包的目的地址在R3處匹配了默認路由,又被丟回R2,如此反復,直到報文的TTL遞減為0。這就出現了環路。
OSPF為了解決這個問題,在執行路由匯總時,會在本地自動產生一條指向Null0的路由。例如在R3處執行了路由匯總,則它會自動產生一條指向Null0的路由:
O ??????172.16.0.0/16 is a summary, 00:00:02, Null0
這樣一來當再有類似事件發生,數據包將在R3這就被丟棄(匹配Null0路由)。
實際上,當執行路由匯總時,自動在本地路由表產生一條指向Null0的路由是一種非常常規的防環手段,許多動態路由協議都具備這個特征。
(2)OSPF路由匯總案例(二)
域間匯總,在ABR上進行
R1配置:
router ospf 100
router-id 1.1.1.1
network 1.1.1.1 0.0.0.0 area 0
network 12.1.1.0 0.0.0.255 area 0
R2配置:
router ospf 100
router-id 2.2.2.2
network 2.2.2.2 0.0.0.0 area 0
network 12.1.1.0 0.0.0.255 area 0
? network 23.1.1.0 0.0.0.255 area 1
??network 24.1.1.0 0.0.0.255 area 2
R3配置:
router ospf 100
router-id 3.3.3.3
network 3.3.3.3 0.0.0.0 area 1
network 192.168.20.1 0.0.0.255 area 1
network 192.168.21.1 0.0.0.255 area 1
network 192.168.22.1 0.0.0.255 area 1
network 192.168.23.1 0.0.0.255 area 1
network 23.1.1.0 0.0.0.255 area 1
R4配置:
router ospf 100
router-id 4.4.4.4
network 4.4.4.4 0.0.0.0 area 2
network 192.168.32.0 0.0.0.255 area 2
network 192.168.33.0 0.0.0.255 area 2
network 192.168.34.0 0.0.0.255 area 2
network 192.168.35.0 0.0.0.255 area 2
network 192.168.36.0 0.0.0.255 area 2
network 192.168.37.0 0.0.0.255 area 2
network 192.168.38.0 0.0.0.255 area 2
network 192.168.39.0 0.0.0.255 area 2
network 24.1.1.0 0.0.0.255 area 2
show ip route 查看路由表可以看見,由于域間路由的傳播,R1上多達進20條路由,有R3宣告的4個。R4宣告的8個192.68網段的路由如果不進行匯總,會泛洪到全網,所以我們應該在Area 1和Area 2的ABR,也就是R2上進行匯總操作,具體操作如下:
R2(config)#router ospf 100?
R2(config-router)#area 1 range 192.168.20.0 255.255.252.0
R2(config-router)#area 2 range 192.168.32.0 255.255.248.0
此時查看R1的路由表,發現
O IA?192.168.20.0/22 [110/21] via?12.1.1.2
O IA?192.168.32.0/21 [110/12] via?12.1.1.2
可以看見,Area 1和Area 2上的192.168網段已經完成了匯總。這樣會節省很多資源,拓撲發生變化也不會影響Area 0的路由表。
域外匯總,在ASBR上進行
拓撲圖不變,但將Area 2變為EIGRP?
R2更改配置
router ospf 100
no network 24.1.1.0 0.0.0.255 area 2
router eigrp 90
no auto-summary
network 24.1.1.0 0.0.0.255
R4更改配置
no router ospf 100
router eigrp 90
no auto-summary
? network 24.1.1.0 0.0.0.255
? network 4.4.4.4 0.0.0.0
? network?192.168.32.0 0.0.0.255
? network?192.168.33.0 0.0.0.255
? network?192.168.34.0 0.0.0.255
? network?192.168.35.0 0.0.0.255
? network?192.168.36.0 0.0.0.255
? network?192.168.37.0 0.0.0.255
? network?192.168.38.0 0.0.0.255
? network?192.168.39.0 0.0.0.255
之后在R2上進行雙向重分發
?? router ospf 100
? redistribute eigrp 90 subnets
?? router eigrp 90
? redistribute ospf 100 metric 1000 1 255 1 1500
可以看見O E2標記的為外部的EIGRP路由,并沒有匯總。
在R2上進行域間路由匯總
?? router ospf 100
? summary-address 192.168.32.0 255.255.248.0
然后查看R1的路由表
O IA?192.168.20.0/22 [110/21] via?12.1.1.2
O E2?192.168.32.0/21 [110/20] via?12.1.1.2
已經完成匯總。
整個華為數通學習筆記系列中,本人是以網絡視頻與網絡文章的方式自學的,并按自己理解的方式總結了學習筆記,某些筆記段落中可能有部分文字或圖片與網絡中有雷同,并非抄襲。完處于學習態度,覺得這段文字更通俗易懂,融入了自己的學習筆記中。如有相關文字涉及到某個人的版權利益,可以直接聯系我,我會把相關文字刪除。【VX:czlingyun ? ?暗號:CSDN】