BGP路由彙總
BGP路由彙總
BGP彙總,支援CIDR,這麼牛B的協議肯定是支援的
Auto summary,在cisco的IOS中,預設是關閉的,
如果想要進行自動彙總的話,就要先手動開啟功能,
自動彙總
開啟自動彙總後
並不意味著什麼樣的條目都能夠進行自動彙總,
對此BGP是這樣規定的 開啟auto-summary以後
通過network+mask精確宣告的,不會被自動彙總
通過network+mask彙總宣告的,會被彙總 //廢話
通過重分佈進BGP的,會自動被彙總成主類 ,這一點很重要
所以綜上所述,可以總結出一句話,那就是BGP只會針對重分佈的型別條目進行自動彙總
測試一下重分佈後的條目能否被自動彙總
所有裝置上開啟自動彙總,然後在R1和R2上重分佈進直連網段,為了不要它們自已的更新源地址,我們要建立route-map,進行有條件的重分佈,此處不再贅述,
直接看結果吧
咱們先來分析一下,彙總是彙總了,但是有問題的
1 明細條目被彙總也是顯示的兩條,分別來自於AS100和AS200,這沒問題,本來就是來自於兩個AS的,但是,你會發現,2.2.2.2的條目沒有被視為最優,
不最優的結果就是不能被寫入路由表,同時也無法傳遞給我的鄰居
那R4上,肯定就不可能ping通AS200的條目嘍~,
咱們試一下,
通過結果,我們不難看出,的確是存在這樣的問題,
我的AS200去哪裡了,連PATH列表中都沒有,(因為在R3上面 2.2.2.2的條止不是最優的,所以不會傳遞給BGP鄰居)肯定是不可能通的.
所以,自動彙總是多麼的,多麼的不靠譜,
我們之前在學習IGP路由協議的時候也一再強調這個事兒,
自動彙總,會產生路由黑洞,現在倒好,連黑洞還沒出來呢,直接就給你拋棄了
我們主要講述的是BGP 的手動彙總,
手動彙總
還是上圖的環境,我們將條目的形式改變一下,全都變成network
配置完成
在R3上檢視BGP表
來自於兩個下一跳,兩個AS,而且條目全都有效,
並且沒有被自動彙總,因為我們把au sum給關了
現在R4和R5上看到的都是一樣的條目
由於是EBGP的peer,在離開自己的AS時,會將AS加上去,所以在這裡看到的就是300 200/ 300 100,現在的狀態是正常的,完全沒有問題
現在開始彙總
1 首先要明白,在哪裡彙總,
2 彙總後的IP地址是多少,~要不要精確的計算
對於BGP的彙總而言,肯定是在傳送端這邊來做彙總,如上圖所示,R3是R4-R5的傳送端
R1,R2是R3的傳送端 ,
為了省事兒,我們直接 在R3上做,
第二個, 172.16.1.0 /2.0/10.0/11.0/24條目,彙總後應該是多少呢?
2的4次方=-16,那就用這個吧
172.16.0.0 /20 255.255.240.0
BGP的彙總命令
Aggregate-address172.16.0.0 255.255.240.0
實驗來試一下
R3(config)#router bgp 300 R3(config-router)#aggregate-address 172.16.0.0 255.255.240.0
來看一下最終的效果,在R4上檢視BGP表
哦~,有了,有了,
但是為啥明細條目還有啊~
這不科學啊,按理來說,明細 條目應該不在才對啊~
是的,沒錯,但是在BGP中,如果想要清除明細條目,只保留彙總條目的話,就要再加單獨的命令
手動彙總summary-only
我們把剛才的彙總條命令NO掉,重新寫一下
R3(config-router)#aggregate-address 172.16.0.0 255.255.240.0 summary-only
好,再來檢視一下,是不是奏效呢~
OK,沒問題,看來summary-only 還是很有效果的,
彙總告警訊息
Aggregated 聚合,由誰聚合的
Atomic-aggregate 原子聚合
針對於這兩個屬性,我們可以直接在明細中看到,
這個條目是由AS300的RID為3.3.3.3的裝置進行彙總的,
另外,這是一條告警訊息,原子聚合。當出現這個訊息的時候你要注意了,
是有問題的。因為彙總條目中並不包含明細條目的AS-path資訊。
這會造成環路。
手動彙總 as-set
這個時候你要不要考慮一個問題
R1和R2上有沒有這個彙總條目???
想一想
我們看一下在R4上的結果是什麼樣的啊~
首先,在R4看來,這是一個嶄新的條目,我可以收,
PATH上寫的是300
但是,注意啊.........但是來了,
對於R1和R2而言,這不是新的嗎?
假設R2和R4之間存在著EBGP的鄰居關係,怎麼辦?
R2收到這個更新以後,會不會接收,??? 肯定會接收,因為在as-path中根本就沒有他的AS標識,可現在即使是沒有這個EBGP的關係,我們也不防到R1和R2上看一下
我們在R1上看,
同樣可以看到這個條目,且下一跳裝置為3.3.3.3, 為什麼他會接收呢?你往後面看,看到了什麼>?
Path 300,根本就沒有100,我為什麼不收呢~ 這就是問題的所在
那這個時候我要怎麼樣才可以將明細的AS編號加到PATH中呢?
是否還記得之前講AS-PATH路徑屬性的時候,講過AS-PATH的4種類型
我們最常見的就是這種AS-senquence 是EBGP 都會標記的,而且是有序的,
還有一種是無序的,前面只是提了一句,說是在這裡要講
As-set型別的path ,主要用於標記彙總條目的明細 AS的,
它們的表現形式是{xx,xx}裡面並沒有順序可言,只要有就可以了
回到實驗中
我們重寫一下彙總命令
R3(config-router)#aggregate-address 172.16.0.0 255.255.240.0 summary-only as-set
好了,再來看一下R4上的BGP表吧
看看這個條目發生了哪些變化
嘿嘿,不一樣了吧
這時變成了300{100,200}300是彙總的AS,100和200是明細的所在AS
檢視彙總條目的詳細資訊,也可以看到 這個彙總條目產生在AS 300 RID是3.3.3.3
那這個時候請問R1和R2能否收到呢?
猜一下?
還用說嗎?肯定是收不到的,因為有了as-set的關鍵字以後,就會在{ }裡面加上明細條目所在的AS號,這和EBGP 的防環機制也是有關係的.看到更新資訊中有自己的AS號,則直接丟棄這個包.不進行更新。這一關鍵字,解決了EBGP的環路問題
彙總繼承origin
彙總條目會繼承明細條目上最差的origin,我們來測試一下是否奏效
我們把R2上的條目改成e,把R1上的條目改成?
來看一下會怎麼樣,
那麼問題又來了,修改origin,In/out?哪個生效呢?
答:哪個都生效,因為起源屬性,是公認必遵屬性,每個update包中都是包含的
所以我們現在直接就在明細的源頭進行修改就好了
R1(config)#access-list 1 per 172.16.1.0 R1(config)#route-map ori per 10 R1(config-route-map)#ma ip add 1 R1(config-route-map)#set origin egp 500 R1(config-route-map)#exit R1(config)#route-map ori per 20 R1(config)#router bgp 100 R1(config-router)#nei 3.3.3.3 route-map ori out R1(config-router)#exit 在R1上效條目的origin 改成了e 在R2上將條止的origin改成了incomplete? R2(config)#access-list 1 per 172.16.10.0 R2(config)#route-map ori per 10 R2(config-route-map)#ma ip add 1 R2(config-route-map)#set ori incomplete R2(config-route-map)#exit R2(config)#route-map ori per 20 R2(config-route-map)#exit R2(config)#router bgp 200 R2(config-router)#nei 3.3.3.3 route-map ori out
此時我們到R3上先來檢視一下
可以看到,明細條目都已經改了,
我們說過,彙總條目會繼承明細條目中origin最差的那個
順序還記得嗎?i>e>?
那麼此圖中,最差的就是?了,
我們到R4上來驗證一下中否繼承了
沒錯,真的是繼承了,並且是繼承的最差的。
BGP路由彙總的額外特性
Suppress-map 抑制條目
在前面的實驗中,我們可以看到,使用了summary-only以後,所有的明細條目都被幹掉了,一個不留,
但有沒有一些特殊的情況,我需要一些明細的條目呢?肯定是有的
那麼如何來操作呢?
就要用到suppress-map了
配置思路
ACL抓取條目
定義route-map
在彙總時呼叫關鍵字
這裡要額外的提一下,這個是有點兒繞的地主
當route-map和suppress相結合時, route-map的permit,就等於是抑制
Deny 就等於不是抑制
說白了,就是你permit哪個條目,哪個條目就不能顯示出來
因為在route-map的最後還隱藏著deny ,所以想放行的可以不寫Permit就預設被放行了。
還是結合我們上面的例項來看一下
我想要彙總條目到達R4的時候,還要攜帶著明細條目 172.16.1.0 以及 172.16.10.0
那應該怎麼做呢?
配置
R3(config)#access-list 1 per 172.16.1.0 R3(config)#access-list 1 per 172.16.10.0 R3(config)#route-map sup deny 10 //這時的deny等於是針對suppress放行,不彙總 R3(config-route-map)#ma ip add 1 R3(config-route-map)#exit R3(config)#route-map sup per 20 //這裡的permit等於是被抑制了,其它全部被抑制了 R3(config-route-map)#exit R3(config)#router bgp 300 R3(config-router)#aggregate-address 172.16.0.0 255.255.240.0 suppress-map sup as-set
這裡就不再是summary-only了,而是換成了suppress-map了
最終在彙總的時候進行呼叫suppress-map即可
Unsuppress-map
如果說我有多個EBGP鄰居,而其中有一個鄰居,不想在彙總的時候被抑制,那要如何操作呢?
如果結合使用了suppress-map的話,就要對單獨的peer,指定一個unsuppress-map
當然,這一操作要在彙總的裝置上進行
R3(config-router)#nei 5.5.5.5 unsuppress-map sup //sup為之前定義的route-map名稱
此時再到R5上看一下,
哎呀,不對啊,怎麼都出來了?
那麼請問,怎麼就不能都出來,我前邊的命令是怎麼敲的?有summary-only嗎?
沒有吧,我只是應用了suppress-map,而針對於5.5.5.5而言,我還被配置了 unsuppress-map,不接受這個策略的限制,也就是不抑制,
那我為啥不能接收全部的訊息呢~你說呢?~
Advertist-map 單獨繼承屬性
前文提過,彙總條目會繼承明細條止的路徑屬性origin,其實不全然,
繼承的還是挺多的,
as-path,需要as-set的關鍵字
Local prefen本地優先順序,彙總條目會在AS內部為100
Origin
Community 這個在後面會有更加詳細的解釋
我們拿origin來做個例子吧
之前說過,彙總條目會繼承明細路徑中origin屬性最差的,
那麼,我想不繼承那個最差的行不行?
只繼承那個最好的,可不可以?
當然可以
我們來測試一下
我們將 172.16.1.0 設定為?
172.16.10.0 設定為 ?
172.16.2.0和172.16.11.0不變,就是i
如果是預設情況下,肯定會繼承最差的那個 ?,我們不讓它這麼選
我們最終讓彙總條目只繼承i的屬性,看看可不可以
配置思路
ACL抓取條止
Route-map permit條目
這裡要注意一下千萬不要在後面加上per 20
重新彙總條目
配置命令 R3(config)#access-list 1 per 172.16.2.0 R3(config)#access-list 1 per 172.16.10.0 R3(config)#route-map adv per 10 R3(config-route-map)#ma ip add 1 R3(config-route-map)#exit
///這裡千萬要注意,不要per 20了,如果再per20的話,所有的屬性又都過去了
R3(config-router)#aggregate-address 172.16.0.0 255.255.240.0 summary-only as-set advertise-map adv
在R3上先看一下它們的origin
可以看到有? 有i的,就像我們之前所說的,我就讓這個彙總條目只繼承i的,
上面的命令已經輸入完成,
到R4上來驗證一下
神奇不?
總結一下這個關鍵字吧,advertise-list,可以針對於某一個,某多個條目的屬性進行選擇性繼承,
設定好以後,比如說你選擇了兩條路由麼屬性做為彙總屬性的繼承,那麼當這兩條明細路由正常的時候,彙總路由也正常,
當兩條明細掛掉一個,彙總還正常,
可是,當兩條明細都掛掉了,不管你那邊兒有多少個明細,彙總都會隨之消失,因為你只選擇了這兩個路徑做為依據。
我們可以來測試一下
之前參考的是172.16.2.0 和 11.0這兩個條目的屬性,
現在我們一一的斷開,看一下效果會是什麼樣的,
1 down掉172.16.2.0 的loopback介面,看會發生什麼
關掉以後 我們看一下R3上的BGP表,有沒有什麼變化
彙總條目還在,沒問題
我們再斷開另外一個 172.16.11.0
此時再到R3上檢視一下
你會發現,選擇性繼承的那兩條明細都down掉以後,彙總路由立即也跟著down掉了,
Attribute-map路由策略
對待彙總路由就像是對待一個普通 的明細路由一樣,可以使用route-map來為其修改路徑屬性。
但前提是修改的路徑屬性在AS之間支援傳遞
可以修改的屬性,主要遵循BGP的路徑屬性一篇提到的
大概可以支援 weight 、 med 、as-path...
這裡我們來修改一下as-path的屬性,讓它在R4上看起來與眾不同。
配置思路
Acl 抓取條目。 prefix-list
1 route-map定義 針對於彙總條目不用再單獨的抓取了
2 set 具體屬性值
3重新彙總,並加上具體的策略
配置如下
現在要求彙總路由在出去的時候1111的med值 ,看看可不可以實現
R3(config)#route-map wfy per 10 R3(config-route-map)#set metric 11111 R3(config-route-map)#exit R3(config)#router bgp 300 R3(config-router)#aggregate-address 172.16.0.0 255.255.240.0 summary-only as-set attribute-map wfy
此時到R4上再看一下
以上就是關於BGP路由彙總的內容,
-------------------------------------------
CCIE成長之路 ---梅利