文章目錄
CCNP6:重發布技術+路由策略(Route-map)
說明:本次講解的環境爲VMwarePro14.0上運行的webiou,使用CRT作爲遠程登陸工具。
一、認識重發布:
1、什麼是重發布?
重發布(redistribute別名:重發布、重分發、重新分配):
一臺設備同時運行於兩個協議或者兩個進程,默認從兩端學習到的路由條目不共享。重發布技術是 人爲 進行的共享,通過這種技術可以實現不同協議(或同一協議不同進程,例如OSPF)之間的路由條目共享。
2、使用重發布技術時的注意事項:
(1)必須存在 ASBR——自治系統邊界路由器(協議邊界路由器)
(2)必須考慮 種子度量:
協議間共享路由時,度量是不攜帶到新的路由協議中的,因此需要在ASBR中導入路由時需要添加起始度量(種子度量)
3、重發布使用規則:
(1)將A協議發佈到B協議時,在 ASBR上的B協議中配置。
(2)將A協議發佈到B協議時,將 ASBR上所有通過A協議學習,及ASBR直連到A協議中的所有路由全部共享到B協議中。
名詞 | 註釋 |
---|---|
單點單向重發布 | 一臺ASBR運行A、B兩種協議, A協議發給B協議,B協議不發往A協議 |
單點雙向重發布 | 一臺ASBR運行A、B兩種協議, A協議發給B協議、B協議也發給A協議 |
多點單向重發布 | 一臺ASBR運行多種協議,協議之間發送是單向的 |
多點雙向重發布 | 一臺ASBR運行多種協議,多個協議兩兩之間共享路由條目 |
4、重發布的幾種發佈方式:
方式 | 註解 |
---|---|
A→B | 將一種動態路由協議發佈到另一種動態路由協議中。 |
靜態→B | 將ASBR上的 靜態路由 發佈到動態路由協議中。 |
直連→B | 將ASBR上非B協議內工作的 直連路由 發佈到B(動態路由協議)中 |
接下來我就以下圖爲例,將幾種協議的重發布進行講解。
二、配置重發布
1、搭建實驗環境:
底層如上圖搭建,我們以R2爲中心,讓幾個路由器之間互相重發布,選取RIP、OSPF、EIGRP來作爲講解本實驗的主要協議。
(1)R1與R2之間直連網段爲12.1.1.0網段,R2與R3之間直連網段爲23.1.1.0網段,R2與R4之間直連網段爲24.1.1.0網段。
(2)R1、R2、R3、R4的環回分別是1.1.1.1/24、2.2.2.2/24、3.3.3.3/24、4.4.4.4/24
(3)R1運行的是RIPv2協議、R3運行OSPF協議、R4運行EIGRP協議。R2每種協議都運行,並分別將s0/0、s0/1、s0/2宣告到RIP、OSPF、EIGRP中,R2的環回不宣告。
①在R1上運行RIP協議:
R1(config)#router rip
R1(config-router)#version 2
R1(config-router)#no auto-summary
R1(config-router)#network 12.0.0.0
R1(config-router)#network 1.0.0.0
②在R2上配置rip、ospf、eigrp協議
R2(config)#router rip
R2(config-router)#version 2
R2(config-router)#no auto-summary
R2(config-router)#network 12.0.0.0
R2(config)#router ospf 1
R2(config-router)#router-id 2.2.2.2
R2(config-router)#network 23.1.1.2 0.0.0.0 a 0
R2(config)#router eigrp 90
R2(config-router)#no auto-summary
R2(config-router)#network 24.0.0.0
③在R3上配置ospf協議
R3(config)#router ospf 1
R3(config-router)#router-id 3.3.3.3
R3(config-router)#network 23.1.1.1 0.0.0.0 a 0
R3(config-router)#network 3.3.3.3 0.0.0.0 a 0
④在R4上配置eigrp協議
R4(config)#router eigrp 90
R4(config-router)#no auto-summary
R4(config-router)#network 24.0.0.0
R4(config-router)#network 4.0.0.0
2、RIP的重發布:
注意:導入動態路由協議時,如果沒有加種子度量,默認爲無窮大。因此在沒有加種子度量的時候,就無法收到其他路由器的路由表。
(1)A→B:
①將OSPF導入RIP:
在R2中的rip協議中配置:
R2(config)#router rip
R2(config-router)#redistribute ospf 1 metric 2
在R1上查看路由表發現R3的路由表已經進入R1注意度量值跳數爲2:
②將EIGRP導入RIP:
在R2中的協議中配置:
R2(config)#router rip
R2(config-router)#redistribute eigrp 90 metric 2
(2)將靜態(缺省)→B
我們先給R2上隨便添一條缺省,這樣R2的路由表中就有一條靜態的缺省路由。然後進RIP,將靜態重發布到RIP中。
R2(config)#ip route 0.0.0.0 0.0.0.0 loopback 0
R2(config)#router rip
R2(config-router)#redistribute static
在R1上查看路由表:
由此我們發現在重發布靜態路由時:即使我們沒有添加種子度量,R1也可以學習到R2上靜態的路由。是因爲靜態的默認種子度量爲1,但是我們也可以加種子度量。
(3)直連→B
對於重發布R2上的直連網段( R2環回、23.1.1.0、24.1.1.0 網段),其默認的種子度量也爲1。配置如下:
R2(config)#router rip
R2(config-router)#redistribute connected
此時我們再查看R1的路由表
注意 : 運行 OSPF 協議的R3有23.1.1.0網段的直連,在我們第一次把 OSPF 倒入到 RIP 中的時候(第(1)中的第①步),我們可以看到它的度量值爲2,但是當我們將直連重發布到rip中的時候,我們通過上圖發現原本的度量由2跳轉變爲了1跳。爲什麼會轉變呢?這是因爲 R1對兩次重發布進來的同一網段的度量進行了對比,選取其中度量小的路由並加載到路由表中。
3、OSPF的重發布
(1)A→B
將 RIP、EIGRP 導入 OSPF:
R2(config)#router ospf 1
R2(config-router)#redistribute rip subnets(子網)
R2(config-router)#redistribute eigrp 90 subnets
注意事項:
①:subnets在導入無類別路由(攜帶掩碼)時必須攜帶,否則無法導入無類別路由。 如果不攜帶就會出現這樣的提示:
% Only classful networks will be redistributed
②:默認導入的RIP路由爲類型2
類型O*E2:種子度量爲20,在內部傳遞時,不疊加內部的度量值。
③:如果存在多臺ASBR設備,但需要導入相同的路由時,可以將 修改類型 爲1;
類型O*E1:種子度量爲20,在內部傳遞時疊加內部的度量值。
指令如下:
修改種子度量:R2(config-router)#redistribute rip(eigrp) subnets metric ?
修改種子類型:R2(config-router)#redistribute rip(eigrp) subnets metric-type 1
(2)靜態→B
我們再給R2隨便寫一條普通的靜態路由,在將靜態路由導入到OSPF中。
注意:OSPF的缺省路由比較特殊,只能通過專用的命令導入缺省路由 。配置如下
R2(config)#ip route 99.1.1.0 255.255.255.0 loopback 0
R2(config)#router ospf 1
R2(config-router)#redistribute static subnets 重發布普通靜態路由
R2(config-router)#default-information originate 重發布缺省靜態路由
普通靜態:默認進入路由類型爲2、種子度量爲20
缺省路由:默認進入路由爲類型2,種子度量爲1
如果需要修改種子度量或類型的配置如下
R2(config-router)#default-information originate metric ?
R2(config-router)#default-information originate metric-type ?
(3)直連→B
R2(config)#router ospf 1
R2(config-router)#redistribute connected subnets
注:默認進入路由爲 類型2 , 種子度量爲20
4、EIGRP的重發布
(1)A→B
配置如下:
R2(config)#router eigrp 90
R2(config-router)#redistribute rip metric 1544 100 255 1 1500
R2(config-router)#redistribute ospf 1 metric 1544 100 255 1 1500
注意:必須添加種子度量,默認爲無窮大
1544 100 255 1 1500 分別代表帶寬、延時、可靠性、負載、MTU
其中帶寬建議根據網絡的實際帶寬來修改,其他參數已經爲最優參數。
倒入後,我們查看R4的路由表:
注意:重發布到EIGRP的路由,使用字母 D EX 標記,且管理距離變爲170,而OSPF110、RIP120都不會發生改變。
(2)靜態→B
配置如下:
R2(config)#router eigrp 90
R2(config-router)#redistribute static
默認爲主機最佳度量
(3)直連→B
配置如下:
R2(config)#router eigrp 90
R2(config-router)#redistribute connected
默認爲主機最佳度量
5、總結
在一臺運行多種協議的ASBR上要做到全網可達,就需要將該ASBR上運行的協議兩兩之間進行重發布,如下圖示意:
配置命令總結如下:
協議 | RIP | OSPF | EIGRP |
---|---|---|---|
重發布 RIP |
redistribute rip subnets(metric、metric-type) | redistribute rip metric 1544(可改) 100 255 1 1500 | |
重發布 OSPF |
redistribute ospf 1 metric 2 | redistribute ospf 1 metric 1544 100 255 1 1500 | |
重發布 EIGRP |
redistribute eigrp 90 metric 2 | redistribute eigrp 90 subnets(metric、metric-type) | |
重發布 靜態 |
redistribute static(metric) | 靜態:redistribute static subnets(metric、metric-type) 缺省:default-information originate(metric、metric-type) |
redistribute static(metric) |
重發布 直連 |
redistribute connected(metric) | redistribute connected subnets(metric、metric-type) | redistribute connected(metric) |
三、單點雙向重發布
由於篇幅有限,單點雙向重發布與第二節配置一樣,只是圖略微有所變化,這裏不在演示。只是需要注意的是,R2、R4雙向重發布後,R1是可以學到OSPF的路由的,R5也可以學到RIP的路由。特別地,如果在OSPF中加入一條缺省,R1是可以學到的。但如果給RIP中加入一條缺省,OSPF是學不到的,需要敲專用的指令。
注意事項:
DV協議默認接收所有重發布進入的路由,包括缺省條目,
LS協議(例如OSPF)在正常重發布時不接收缺省路由,需要專用指令。
四、多點雙向重發布
說明:爲了更深入的理解多點雙向重發布,我會以該圖作爲講解雙向重發布的示例:
多點雙向重發布:原本一臺ASBR設備運行着多種協議,現在使用兩臺甚至多臺ASBR來頂替原本只有一臺的ASBR設備。這樣做的目的是爲了更穩定,可以做備份。但是必然也會帶來很多的問題:選路不佳、路由回饋。
1、搭建實驗環境:
配置底層、宣告路由網段即可,R1的環回是1.1.1.1/24,其餘的以此類推。由於之前已經演示,這裏不在做演示。
2、在R2、R4上進行雙向重發布
R2配置如下: | R4配置如下 |
---|---|
R2(config)#router rip R2(config-router)#redistribute ospf 1 metric 1 R2(config)#router ospf 1 R2(config-router)#redistribute rip subnets |
R4(config)#router ospf 1 R4(config-router)#redistribute rip subnets R4(config)#router rip R4(config-router)#redistribute ospf 1 metric 1 |
3、多點雙向重發布所帶來的問題:
(1)選路不佳:
①R1的路由表:
此時進行這樣配置由於種子度量都是1,理論上來說R1到OSPF域內應該有4個等開銷負載均衡。但是出現了5個,我們會發現原本在RIP中的R4的環回也出現了負載均衡,這是不應該的,原因是因爲出現了路由回饋。
出此之外我們可以看到去往R2的環回的兩條路由,一個掩碼是24位,一個掩碼是32位,這是因爲R2上顯示直連環回的網段爲掩碼爲24位,而32位掩碼的路由是R4通過把OSPF精確學習到的路由重發布到RIP中去的。爲了防止它影響我們的觀察,我們可以把OSPF中的R2和R3環回的工作類型方式改了,改成點到點模式。這樣我們看到的就都是24位了,配置和結果如下:
R2(config)#int lo0
R2(config-if)#ip ospf network point-to-point
R3(config)#int lo0
R3(config-if)#ip ospf network point-to-point
②R3路由表:
我們在查看R3的路由表,理論上來說R3到RIP域中應該都等開銷負載均衡。但是卻一條等開銷都沒有。
③R2的路由表:
我們可以看到R2的路由表除了去往R1、R3環回的路由和34.1.1.0網段的路由是正確學習到的方式,其他的都有問題。
④R4的路由表:
我們可以看到R4中一條RIP的路由都沒有學到,問題也很大。
總結:出現了等開銷負載均衡,必然會出現選路不佳,這是由於導入的路由原有度量值被去掉,故只要進行多點雙向重發布,必然選路不佳。 比如說R1去往R2的環回,按理所有流量下一跳是12.1.1.2最好,但是一部分流量的下一跳爲14.1.1.2,繞了一大圈。
(2)路由回饋:
當RIP和OSPF(ISIS)之間進行多點雙向重發布時, 由於RIP(120)的管理距離大於OSPF(110) ,導致ASBR優選OSPF路徑,最終將RIP的路由重新發回RIP。因此當RIP和EIGRP進行多點雙向重發布的時候,由於EIGRP的外部重發布距離是170大於RIP(120)正常是不會出現路由回饋的。但是依然會選路不佳。
4、部分解決路由回饋:
(1)實現等開銷負載均衡:
那麼我們第一步就是修改管理距離:
因此要想解決以上問題:我們需要把圖掰正,讓R1到OSPF域內等開銷負載均衡, R4到RIP域內等開銷負載均衡,解決路由回饋。
我們之前說到在R1上多了一條去往R4環回的等開銷負載均衡,是因爲OSPF的管理距離小於RIP導致R4的環回發生了路由回饋,因此我們可以把去往R4的管理距離加大。
R2(config)#router ospf 1
//從該RID學習到的所有路由條目管理距離修改爲121
R2(config-router)#distance 121 4.4.4.4 0.0.0.0
(數值分別代表:管理距離、另一臺ASBR的RID、反掩碼)
同理我們也需要在R4上修改去往R2的管理距離。
R4(config)#router ospf 1
R4(config-router)#distance 121 2.2.2.2 0.0.0.0
關於這個命令補充一下:它還可以基於ACL來僅針對部分路由,進行管理距離的修改,在命令結尾可以加 ACL編號。
(2)檢查路由表:
①R2路由表:
我們發現大部分R2的路由都已經恢復正常,但是還有一條去往R4環回的路由有問題。R2在去往R4的環回時,竟然優選管理距離大的OSPF。這是爲什麼呢?
原因:
OSPF收斂速度比RIP快,R2優先學習到R4的環回,標記爲OE2。緊接着將這條路由重發布到了RIP中,度量爲1跳,由於R1到R4的度量也爲1跳,且R1收到的都是去往R4環回的路由,那麼此時R1就會負載均衡。
因此,根據水平分割原理,R1是不會把R4給R1管理距離爲120的度量給R2。最後導致R2只有OSPF域內學習到的管理距離爲121的去往R4環回的路由。
解決方法:
不讓R2將該路由給R1,或者加大R1到R2之間的度量比R1到R4的度量大。當不存在等開銷負載均衡後,R1就會把管理距離小的路由給R2,R2比對之後機會選擇正確的路由了。
②R4路由表:
我們發現R4的路由表已經恢復正常,一切路由均正確。
總結:即便通過修改管理距離,解決路由回饋之後,也可能因爲協議收斂速度的穩定,導致部分路由依然回饋中,無法完美解決,因此我們還需要使用路由策略進行解決。
5、路由策略解決路由回饋:
(1)使用前綴列表:
首先製作前綴列表讓R2拒絕將去往R4環回的路由從s0/0口發出去,然後在RIP協議中調用。
R2(config)#ip prefix-list xxx deny 4.4.4.0/24
R2(config)#ip prefix-list xxx permit 0.0.0.0/0 le 32
R2(config)#router rip
R2(config-router)#distribute-list prefix xxx out s0/0
我們查看R1、R2的路由表
到這裏R2、R4的路由表已經恢復正常。
我們再查看R3的路由表:
由於前綴列表可準確的抓取網絡網段,但是由於拒絕某個網段在實際工程中很不好,一個網段斷開就會導致相應的路由失去,因此還是建議用偏移列表調整路由的度量值,實現路徑備份。這兩種選一種即可。
(2)使用偏移列表:
R2(config)#access-list 1 permit 4.4.4.0
R2(config)#router rip
R2(config-router)#offset-list 1 out 1 s0/0
我們發現這兩種方式都可以實現等開銷負載均衡,此時這張圖的路由回饋已經全部解決。實現了R1到OSPF域等開銷,R3到RIP域等開銷。R2和R4路由表全齊,接下來我們還需要解決選路不佳的問題,讓R1到R2環回和23.1.1.0網段的下一跳12.1.1.2,去往34.1.1.0網段的下一跳爲14.1.1.2;同理R3也一樣。
6、路由策略解決選路不佳:
R2策略、配置 | R4策略、配置 |
---|---|
R2使用偏移列表,增大一條路徑,是指走另一條路 | R4使用Route-map減小路徑的度量值 |
R2(config)#access-list 2 permit 34.1.1.0 R2(config)#router rip R2(config-router)#offset-list 2 out 1 s0/0 R2(config)#ip prefix-list q permit 12.1.1.0/24 R2(config)#route-map q permit 10 R2(config-route-map)#match ip address prefix-list q R2(config-route-map)#set metric 10 R2(config)#route-map q permit 20 R2(config)#router ospf 1 R2(config-router)#redistribute rip subnets route-map q |
R4(config)#ip prefix-list q permit 14.1.1.0/24 R4(config)#ip prefix-list q permit 4.4.4.0/24 R4(config)#route-map q permit 10 R4(config-route-map)#match ip address prefix-list q R4(config-route-map)#set metric 10 R4(config)#route-map q permit 20 R4(config)#router ospf 1 R4(config-router)#redistribute rip subnets route-map q |
到這裏該圖的選路不佳已經全部解決,我們可以從路由表中看到它們的下一跳均爲正確的選路方式。
最終總結:要想要解決多點雙向重發布的選路不佳的問題,第一要解決的路由回饋,使一個域到另一個域實現等開銷負載均衡;第二解決的是選路不佳,使用路由策略讓它們進行正確的選路。
而解決路由回饋,需要先將管理距離掰正,然後修改度量解決路由回饋。
五、路由策略
路由策略:在控制層面抓取流量後,對流量進行修改,之後影響路由器路由表的生成,最終達到干涉選路的目的。
1、抓取控制層面流量:
(1)ACL:
訪問控制列表,設計用於干涉數據層面流量,也可以用來抓取控制層面流量(不能精確匹配) 可以爲 所有 的路由策略服務。
(2)前綴列表:
專用於抓取控制層面的網絡號,爲 分發列 表和 Route-map 服務。
配置 | 註解 |
---|---|
r2(config)#ip prefix-list xxx permit 2.2.2.0/25 | 掩碼爲25 |
r2(config)#ip prefix-list xxx permit 3.3.3.0/24 le 30 | 掩碼範圍24-30 |
r2(config)#ip prefix-list xxx permit 4.4.4.0/24 ge 30 | 掩碼範圍30-32 |
r2(config)#ip prefix-list xxx permit 5.5.5.0/24 ge 25 le 30 | 掩碼範圍25-30 |
r2(config)#ip prefix-list xxx permit 0.0.0.0/0 le 32 | 允許所有 |
r2(config)#ip prefix-list xxx permit 0.0.0.0/0 | 匹配缺省 |
r2(config)#ip prefix-list xxx seq 11 deny 1.1.1.0/24 | 插入序列號爲11,默認序列號+5遞增 |
le、ge使用規則:len < ge-value <= le-value
匹配規則:至上而下逐一匹配,上條匹配按上條執行,不再查看下條,末尾隱含拒絕所有。
2、策略:
(1)偏移列表:
僅適用於DV(RIP/EIGRP)協議,在控制層面流量的入或出口上抓取路由條目,增大度量值,可以疊加。只能使用ACL爲其服務。
(2)分發列表:
在控制層面流量的入口或出口上,限制路由條目的傳遞
①抓流量:
使用ACL或者前綴列表均可
R2(config)#ip prefix-list xxx deny 4.4.4.0/24
R2(config)#ip prefix-list xxx permit 0.0.0.0/0 le 32
②定製策略
R2(config)#router rip
R2(config-router)#distribute-list prefix xxx out s0/0 再R2的出接口s0/0上調用名爲xxx的偏移列表
注意:若在OSPF協議中使用分發列表,只能入向調用,不能出向調用。因爲OSPF要保證整個拓撲要完整,接收方收到拓撲後,可以不把拓撲的結果放到路由表裏。但是一定要發送放進行發送。
還可以在重發布進行時,直接限制條目的發佈規則。不在接口上操作,而是在流量從A協議緩存區進入B協議緩存區時就限制。有助於節約設備性能。
r3(config)#router rip
r3(config-router)#distribute-list prefix qq out ospf 1
將OSPF發佈到RIP時生效。
由於偏移列表只可以增加度量值,如果是RIP一旦度量值加大,必然會導致工作範圍的減小。分發列表只能限制路由可不可以傳遞,功能性也很弱。因此最常用的路由策略Route-map就出來了。
(3)Route-map:
可以對控制層免流量進行大量的行爲,在重發布、BGP選路、ziPBR(策略路由)三方面可以大量應用。
搭建實驗環境:
該實驗是說將R7上的4個環回通過重發佈讓R9學到以後,1.0爲正常通過,2.0拒絕通過,3.0種子度量類型改爲E1,4.0保持原有E2類型將度量值降低至10,12.1.1.0網段種子度量類型改爲E1並將度量值加到50
R8(config)#router ospf 1
R8(config-router)#redistribute rip subnets
我們查看R9的路由表:
①抓流量:使用ACL或訪問控制列表
ACL | 控制列表 |
---|---|
R8(config)#access-list 1 permit 1.1.2.0 | R8(config)#ip prefix-list a permit 1.1.4.0/24 |
R8(config)#access-list 2 permit 1.1.3.0 | R8(config)#ip prefix-list b permit 12.1.1.0/24 |
②定製Route-map:
定製Route-map | 註釋 |
---|---|
R8(config)#route-map x deny 10 R8(config-route-map)#match ip address 1 |
創建x列表,大動作拒絕,序號10 匹配ACL列表1 |
R8(config)#route-map x permit 20 R8(config-route-map)#match ip address 2 R8(config-route-map)#set metric-type type-1 |
WW列表的序號20,大動作允許 匹配ACL列表2 小動作爲類型修改爲1 |
R8(config)#route-map x permit 30 R8(config-route-map)#match ip address prefix-list a R8(config-route-map)#set metric 10 |
匹配前綴列表a 修改種子度量值爲10 |
R8(config)#route-map x permit 40 R8(config-route-map)#match ip address prefix-list b R8(config-route-map)#set metric-type type-1 R8(config-route-map)#set metric 50 |
|
R8(config)#route-map x 50 | 空列表允許所有 |
策略寫好後,還需要在重發布時調用:
R8(config)#router ospf 1
R8(config-router)#redistribute rip subnets route-map x
我們發現一切都跟我們計劃的一樣。這裏要說明的是由於12.1.1.0網段的度量類型爲E2,因此在計算度量時還需要進行疊加內部度量,出現了114,如果時E2那麼50就是50。
Rout-map配置規則 |
---|
1、在創建route-map時,若不配置大動作,動作爲允許;不配置序號,那麼序號永遠爲10,故從第二條開始必須配置序號 r2(config)#route-map x r2(config-route-map)# |
2、在抓取流量時,使用允許,在route-map中來拒絕流量 |
3、匹配規則—從上往下逐一匹配,上條匹配按上條執行,不再查看下條,末尾隱含拒絕所有 |
4、不匹配及匹配所有,不執行及不做任何小動作,僅按大動作執行。故大動作爲允許的空表,標示允許所有 |
5、存在或or與and 關係:可以用或關係同時匹配3條流量,對它們做同一種策略。 route-map ccsp permit 10 match ip address 1 2 3 或關係 set metric 10 set metric-type type-1 與關係 set origin egp 2 |
6、在一個序號中,匹配流量只能匹配一種抓取流量的協議,ACL或者前綴列表。 |