引言
我之前寫過一篇介紹ISIS的文章,我打算把BGP知識總結以后再做實驗。那么現在就講述一下BGP的一些特點和概念。
BGP特點?
BGP屬于EGP(EGP也是BGP前身,指的是具體協議,被淘汰了成為了BGP),無類協議。
它的封裝方式:Layer 2|IPV4|TCP|BGP|FCS|79
BGP基于TCP,為點到點協議,因此它僅支持單播,需手工指定目的地址。BGP提供了穩定的傳輸(基于TCP封裝)因此只能以單播發送。BGP需要指定發送的單播報文的目的地址。
BGP僅支持MD5認證(neighbor{ip-address/peer-group-name}password String 這個認證結構)
BGP使用場景
BGP的使用場景是:
(1)當你允許你的AS成為傳輸AS時候,可運行BGP,如果不希望,不運行BGP
解釋下所謂的傳輸AS:比如AS1在訪問AS3時,流量可能經過AS2中轉,這時AS2為傳輸AS,我可以接受并非我始發或者以我為目的地址的流量穿越其中
如果一個組織由其一個團隊管理OSPF更好,但假如電信和聯通進行通信,電信與聯通不是一個組織,OSPF管理不同,這會影響通信傳輸效率。路由協議中OSPF,VPN,組播MDT還是什么IGP協議都無法管理好通信傳輸效率的問題,除了IS-IS可以談談,但BGP可以做到以上不能做到的,因為BGP可以根據自身多種屬性進行路徑操控。
我們可以跨國訪問就是運用了BGP。
(2)多宿主:有兩個線路連入一個或兩個運營商
BGP的定位是讓邊界路由器通過跟運營商的邊界運行BGP,可以接收到其它AS的明細路由。(但如果連入外網僅有一根,使用默認或者明細路由都無所謂,只是默認會更好)
但如果連入外網有多條,如雙宿主(有兩個線路連入一個或兩個運營商)這時明細路由更好。如果路由CPU強大,可以指定用BGP獲得外網明細路由并配置哪些流量可以流出,也能操控外網流量從外向內的流入。如果該流量不是特別大,我可以接收部分明細路由,再通過靜態默認一起完成流量轉發,因此做到冗余備份和負載均衡。(我們后面的實驗會展示到)
(3)當你有復雜的策略和選路需求的時候,用BGP
注:BGP需要占用大量的CPU!!!
IBGP和EBGP
運行BGP的路由器,當兩臺路由器屬于同一個AS時,我們稱之為IBGP,如果不在一個AS內就是EBGP
在同一個AS內傳遞IBGP方便信息交流。EBGP最好直連建立鄰居。比如:
IBGP是為了輔助EBGP使用的,可以不用直連。IBGP建議用環回口建立(不讓他綁定在物理接口上)如:
AS(自治區域)號
BGP要申請AS號,報頭需要AS號標識,運行BGP也要AS號,AS號會影響一些參數,而且AS號是全球唯一的。
AS號范圍在0-65535,可用1-64511作為公有AS號,64512-65535作為私有AS號。(后來的IPV6技術讓AS號擴展了,32位有近42億個)由于AS號是私有的,因此運營商要對AS-Path進行轉換,才能在Internet中傳遞,這類似于NAT\PAT。BGP將一個AS當作一個路由器,因此在AS之間傳遞路由。在AS之間傳遞路由的時候,AS的變化也只有跨越AS的時候才會改變。例:
R1——R2——R3——X(假設R1和R2屬于一個AS區域,那么從R1到R2的AS不會改變;如果R3和R1及R2不屬于一個區域,那么AS到達R3時就會改變)
注:BGP在穿越AS時才會改變自己的參數屬性和下一跳
BGP的Next_hop_self
舉一個例子:B——D——C——A這個拓撲中,我們使用BGP協議,設BDC為一個AS自治區域,A為另一個不同于BDC的AS自治區域。那么當C把路由傳遞給了A,C也把路由傳遞給了B,對于B而言,它的下一跳仍然是A,而不是C,但是B沒有去往A的路由,就會發生下一跳不可達。因此要改變C與B的地址,將C中A到C的更新源改為C到B的,這個問題就解決了。
這個就是Next_hop_self,它可預防以上問題導致的接受IBGP鄰居不可達。BGP路由重分發到其它協議默認只有EBGP路由可以重分發。如果IBGP也想重分發。必須要這個參數(redistribute)但這會導致BGP能接收到附近協議鄰居的近10萬條路由!!!重分發時要注意!!!
因為BGP只能把其他協議的表信息加入到BGP中,從而再轉換為路由表。直連路由和下一跳的靜態路由引入BGP,它們默認為全0.0.0.0;
如果是IBGP或者EBGP包含下一跳的靜態路由學到的路由,那么它們會繼承(原本路由多少,加入后還是多少);
但如果本地的BGP表中路由下一跳為全0.0.0.0時,發送給任何鄰居的下一跳都會變為自身針對鄰居的更新源地址。(這無論是不是發給IBGP或EBGP)而且,本地BGP表中的路由表包含下一跳,路由發送給IBGP鄰居時下一跳改變,發送給EBGP時變更為自身針對鄰居的更新源地址。
說白了就是BGP會繼承其他協議學到的路由的下一跳。
BGP特殊下一跳
!!!!當一臺路由器通過上游鄰居收到一條路由時,并把路由放給下游鄰居,如果去往上游的鄰居的下一跳地址和它去往下游的鄰居的下一跳地址在同一個IP子網段內,這時再發往下游鄰居前會直接把路由下一跳改寫為它去往上游鄰居的下一跳地址,這個稱為BGP特殊下一跳!
BGP的水平分割
當收到一條EBGP路由時候,查看AS-path中是否包含AS號,沒有則可以接受,包含則不會接收。
但當我通過鄰居收到一條路由呢?IBGP只能把路由通告給EBGP的鄰居而不能通告給其它任何IBGP鄰居(IBGP水平分割)并且改變下一跳。EBGP可以通告給任何鄰居,通告給IBGP時下一跳不變,通告給EBGP時下一跳改變。
BGP的報文
OPEN:通過OPEN報文建立鄰居關系且僅發送一次;
Keepalive:交互Keepalive報文(60s或180s一次)來維持聯系;
Update:用Update報文來更新信息;
Notification:Notification代表BGP連接中斷或故障;
Router Refresh:Router Refresh來進行路由器的刷新,(如果我想更改某些路由器的策略,可以通告R1向R2發送修改以重新獲得路由策略)。BGP默認不會產生任何路由,也不會通告,它只能通過其它方式將其他協議的路由進行處理,通過Network(宣告)和Redistribute(再分配)將其它協議記錄的路由轉到BGP中去,然后運行通告。
BGP的三個表項
BGP的DataBase:
BGP有三個表:鄰居表(BGP鄰居) BGP表(備用渠道獲得的表) IP路由表
BGP沒有度量值,但是MED(多出口鑒別器)可以硬說成BGP的“度量值”;BGP也不支持ECMP(等價負載均衡)不過可以手動開啟這個功能。
BGP的重置方式
BGP有兩種重置方式:
硬重置:Clear BGP ipv4 unicast*,強行斷掉BGP,讓其重新進入并使其策略可通(但是不推薦)
軟重置:Clear BGP ipv4 unicast*soft(out/in)選擇是否出入軟重置,讓其鄰居或者自身重新發布下路由的更新
如果軟重置沒有執行,會默認執行硬重置!!!
華為有自動的刷新Route refresh功能,當部署出入策略后,會自動發送refresh重新讓鄰居發送路由信息。
{neighbor [ip-address]soft-reconfiguration inbound/outbound}
上述命令意思為BGP其實除了鄰居/BGP/路由三個表外,還有出入流向表,出入的路由信息會加入此表后驗證策略,轉發該信息給BGP表;而出向表是我把路由加給出向策略表后,隨后接上對方的入向策略表后再加入BGP表,命令可以查看我的出入表是否有問題。
BGP鄰居關系組在配置BGP時命令太多,創建對等體組{Neighbor internal peer-group}從而大量建立配制相近的鄰居(IBGP用的多)
BGP的鄰居關系
BGP鄰居關系狀態機的刷新
BGP鄰居關系狀態分為IDLE,Connect,OpenSent,OpenConfirm,Established
IDEL:當我在BGP進程中寫入一條Neighbor命令,指向鄰居的某處地址,這時根據鄰居位置查路由表路徑的過程就是Idel。找不到則會一直處于Idle狀態證明路由有問題(一般是AS號,Neighbor等配置有問題了)。
Connect:找到鄰居,進入了3次握手,它會在限制時間內完成握手。如果收不到握手的信息會加速(也就是還處在Active狀態)進行報文發送以來完成Connect加快建立鄰居。
OpenSent:我和鄰居完成握手,發送Open等待回應,我要接收你的回饋信息。
OpenConfirm:路由接收信息回復Keepalive證明成功,回復Notification證明不行。
OpenSent和OpenConfirm也就是Open報文包含參數,雙方進行互發。
Established:你回復了Keepalive,意味著路由BGP協議運行完成
BGP路由匯總
BGP路由匯總分為自動和手動。
自動匯總:也叫做主類匯總,它會精確匹配主類地址段的network(子網)和mask(掩碼)只要你有屬于主類條目的任意明細路由存在,子網就會以主要形式匯總,且不會繼承路由下一跳和度量值(hop=0.0.0.0.MED=0)
(注:這個前提是你做了network且表中沒有這條主類路由,僅有屬于該主類的子網路由存在,這時才會進行自動匯總將子網通告出來并用主類來表示)
不建議開啟以上方法,因為重分發BGP也會導致以此方式進行。
手動匯總:經常用手動匯總;手動匯總需要aggregate命令用于在BGP表中創建一條聚合路由,該命令可以對BGP本地路由表中的路由進行聚合。(記得在掩碼后加入summary-only,它可以抑制明細路由,這樣就只能發送匯總路由了)在ACL前綴permit(指的是被抑制的路由)的策略也可以
在BGP默認路由下放機制中
* | 可加表 | 傳遞peer |
---|---|---|
R | 不加表 | 可傳遞Peer |
S | 不加表 | 不傳遞Peer |
BGP的屬性
當BGP和OSPF學到路由后,他們誰加入了路由表呢?BGP與其它協議則是以優先級的方式進行好壞比較。而BGP與BGP之間則以屬性比較路徑好壞,因為在華為中,EBGP和IBGP屬于一個優先級(255)所以結果是它們都無法優先加表。
BGP選路原則
BGP屬性分為公有屬性和可選(私有)屬性。公有屬性是官方支持的,它分為公認必遵(必須攜帶)和公認自由(可不攜帶)兩種屬性;可選屬性為私有的屬性,它是各個廠商設置的。私有屬性分為可選傳遞(完整和不完整傳遞)和可選非傳遞。
注:可選傳遞指的是當廠商發現該屬性時,我可以傳遞該屬性給下一個設備;但是可選非傳遞自然就是我不會將我不識別的屬性進行傳遞。
公認必遵的屬性為:Origin,Next-hop,As-Path(這三種屬性,它們可以為空值,但不能沒有。)
公認自由的屬性為:Local Perference,Atomic,aggregate(你是否攜帶這些字段都可以)
可選傳遞的屬性為:aggregator,Community(不同的廠商發現該屬性時,我可以將屬性傳遞給下一個路由設備)(可選傳遞中還有完整和不完整。不完整指我不識別這個字段并標記后告訴后續字段我不理解它;完整是指我會攜帶所有這些字段)
可選非傳遞的屬性為:weight,MED等等。。。。(不可傳遞自然是我不打算把我不識別的屬性繼續向后傳遞)
BGP在選路時一定選擇最優的路徑,基于13步選路原則且要有資格參加選舉,其參選資格條件為EBGP本身滿足即可,而IBGP要滿足同步和下一跳可達(這不是選路,而是參選資格,如果IBGP之間沒有同步或者下一跳根本不可達,不會進行參選)。
思科BGP選路原則:
先比較權重(weight)高的優先,如果一樣;
本地優先級(perference)高的優先,如果一樣;
是否為本地產生(Local)優選始發者路由;
比較AS Path長短,短的優先,經過AS少的優先;
起源路由(origin)IGP>EGP>incomplete;
MED小的優先,如果一樣;
EBGP優先好于IBGP,如果都是IBGP;
我離這些通告IBGP的鄰居哪個更接近的優先(IBGP決定);
到了分水嶺!如果以上都無法判斷,如果你開啟了BGP負載均衡,那么全部加入表中,否則的話;
多跳路徑始發路由器ID相同,選擇CLUSTER_List短的優先;
RID大小,小的優先;
誰接收路由的時間長,時間不長的優先;
華為BGP選路原則
若下一跳不可達,忽略該路由;
preference_value高的優先;
Local-preference最高的優先;
聚合路由優先于非聚合路由;
本地手動聚合路由優先級高于本地自動聚合路由;
本地通過network命令引入的路由優先級高于本地通過的import-route命令引入路由;
AS路徑最短的優先;
比較Origin屬性,IGP優先于EGP,EGP優先于incomplete;
選擇MED小的;
EBGP優于IBGP;
BGP優先選擇到BGP下一跳的IGP度量最低的路徑;
此時進入分水嶺,以上全部相同的話,為等價路由,可以負載均衡的話則以下三條無效并全部加表,否則;
比較Cluster-List長度,短的優先;
比較Origin_ID(或者用RID也行)數值小的優先;
比較對等體IP,IP小的優先。
注:BGP的聚合路由不參加選擇過程(有原子屬性的)和其他協議引入路由也不參加選擇過程
BGP路由反射器和聯邦
IBGP full mesh是針對IBGP水平分割導致的防環,但是代價太大。它會導致一個AS內,如果IBGP太多則需大量的命令配置來解決路由傳遞。
注:IBGP full mesh是路由反射器,它由Cluster組成,其里面包含了IBGP鄰接關系
這里要提到一個概念:Server(服務器)端和Client(客戶)端
所有Client與Server建立IBGP運行關系。Client發送一條IBGP給Server,Server收到后發射給其它Client和非Client的連接的設備。Server通過Non-Client收到IBGP,反射給所有Client。它通過Cluster list(集群列表)和Originator ID(起源ID)來防環,它們在設置S-C時出現
Server收到路由后,查看Cluster List是否包含自身的Cluster ID以判斷是否向你發送,告訴路由器我通過你獲得的信息,Client收到反射后判斷自身RID是否等同于Originator ID
如果你不想用S-C的路由反射器,可以用confederation也就是聯邦BGP
在一個大的AS域內,劃分成多個小的聯邦,每個聯邦間的關系可以看成EBGP,通過合理劃分聯邦,將原來IBGP對等體關系轉變成EBGP對等體關系,使得不傳送的BGP路由可以傳遞。但它是AS內配置,對于所有AS外的路由器來說,在并不知道AS內的情況,一個AS域內BGP通過聯邦號建立。對AS外而言,所有的路由器又有相同的AS號,外部通過AS號認定BGP鄰居(聯邦BGP因此基本用不上)
BGP團體屬性(community)
團體standard Tag(tag標準屬性為100)或者寫成xx:yy(100:100);團體屬性不好,就算你路由沒了,既不會生效,默認也不會攜帶,你需要開啟攜帶可通過許可,這樣才可攜帶。
團體Extended會使用RT參數讓路由知道如何添加入哪張表,一共有四個值可選(可攜帶的屬性)
Internet(全體通告)
No-advertise(告訴鄰居可接受但不要再發送給任何人)
No-export(鄰居收到后只能給IBGP,不給EBGP)
Local-AS(只能給EBGP不給IBGP)
注:如果你配置了聯邦BGP,那么No-export只給IBGP與聯邦內鄰居EBGP,Local-As則為不轉發給聯盟內EBGP鄰居,只轉發給IBGP鄰居Internet,轉發給任何鄰居
BGP進程
BGP底層需要IGP或者靜態作為基礎,從而建立BGP鄰居(IBGP/EBGP),默認情況下BGP不會主動產生路由傳遞,其路由傳遞方式有三種:
(1)NetWork 路由通告(路由表中已存在的其它協議的路由)
當你開啟了自動匯總,NetWork后跟上一個主類網絡號,若路由表中有任何一條屬于該主類的明細路由,那它就會被NetWork方式通告
(2)Redistribute 路由重分發
我通過Origin起源屬性得知路由以何種方式進入的(IGP|incomplete|EGP)
(3)Aggregate BGP匯總(聚合)前提是在BGP表域內已經通告的和被匯總的明細路由
原子聚合:通過他這個屬性來告知所有接收者路由器你們收到的路由是非匯總路由還是匯總路由。只要是匯總路由的原子聚合屬性置為1如果不是則為空
BGP實驗配置
BGP的實驗需要用到IS-IS和OSPF,可以查看下我之前寫的文章:
???????數據通信——OSPF高級特性_咕嚕跳的博客-CSDN博客
?數據通信——網絡層(IS-IS)_咕嚕跳的博客-CSDN博客
首先,連接以下拓撲結構:?
解釋:圖中的網段和環回口均已給出,拓撲劃分為了兩個不同的區域,其中綠色為AS 10,AS:10內部運行IS-IS 1,兩臺路由器均為L2。另外一個為AS 20
需求如下:
(1)R1上的環回口需要宣告進IS-IS。但不通告與AS 20互聯的網段。
(2)AS 20內部互聯網絡運行OSPF 1,R3,R4,R5上面均有環回口和網段都要宣告進OSPF,但是不通告給AS 10互聯網段。
(3)R2和R3運行EBGP,R2和R4也運行EBGP來建立鄰居關系
(4)R3和R4分別與R5建立IBGP鄰居關系(通過環回口)
(5)R5的4個環回口均以network方式通告進BGP
(6)R5上面做路由聚合,對R5引入的BGP路由做精確的聚合,需要抑制明細路由發布,而且需要讓聚合后的路由可以攜帶明細路由的AS-Path
(7)通告BGP屬性控制,讓R2訪問聚合路由優先選擇R4訪問;使得R2訪問R1的Loopback0口優先選擇R4訪問。不能通過BGP公認必遵屬性來實現上述需求。
(8)使得R1環回口可以與R5的環回口通信?
基礎配置
R1:
[Huawei]int g0/0/0
[Huawei-GigabitEthernet0/0/0]ip add 10.1.12.1 24
[Huawei-GigabitEthernet0/0/0]int loopback 0
[Huawei-LoopBack0]ip add 192.168.1.1 24R2:
[Huawei]int g0/0/1
[Huawei-GigabitEthernet0/0/1]ip add 10.1.23.2 24
[Huawei-GigabitEthernet0/0/1]int g0/0/0
[Huawei-GigabitEthernet0/0/0]ip add 10.1.12.2 24
[Huawei-GigabitEthernet0/0/0]int g0/0/2
[Huawei-GigabitEthernet0/0/2]ip add 10.1.24.2 24R3:
[Huawei]int g0/0/1
[Huawei-GigabitEthernet0/0/1]ip add 10.1.23.3 24
[Huawei-GigabitEthernet0/0/1]int g0/0/0
[Huawei-GigabitEthernet0/0/0]ip add 10.1.35.3 24
[Huawei-GigabitEthernet0/0/0]int loopback 0
[Huawei-LoopBack0]ip add 10.1.3.3 32
[Huawei-LoopBack0]R4:
[Huawei]int g0/0/0
[Huawei-GigabitEthernet0/0/0]ip add 10.1.24.4 24
[Huawei-GigabitEthernet0/0/0]int g0/0/1
[Huawei-GigabitEthernet0/0/1]ip add 10.1.45.4 24
[Huawei-GigabitEthernet0/0/1]int loopback 0
[Huawei-LoopBack0]ip add 10.1.4.4 32R5:
[Huawei]int g0/0/0
[Huawei-GigabitEthernet0/0/0]ip add 10.1.35.5 24
[Huawei-GigabitEthernet0/0/0]int g0/0/1
[Huawei-GigabitEthernet0/0/1]ip add 10.1.45.5 24
[Huawei-GigabitEthernet0/0/1]int loopback 0
[Huawei-LoopBack0]ip add 10.1.5.5 32
?IS-IS配置
AS10中需要ISIS完成網絡互聯,我們現在建立ISIS后宣告R1的環回口。
R1:
?[Huawei]isis 1
[Huawei-isis-1]is-level level-2
[Huawei-isis-1]network-entity 49.0001.0000.0000.0001.00
Nov 23 2023 13:53:40-08:00 Huawei %%01ISIS/4/START_ENABLE_ISIS(l)[0]:ISIS 256 en
abled all ISIS modules.?
[Huawei-isis-1]int g0/0/0?
[Huawei-GigabitEthernet0/0/0]isis enable 1?
[Huawei-GigabitEthernet0/0/0]int loopback 0
[Huawei-LoopBack0]isis enable 1
R2:
?[Huawei]isis 1
[Huawei-isis-1]is-level level-2
[Huawei-isis-1]network-entity 49.0001.0000.0000.0002.00
Nov 23 2023 13:56:02-08:00 Huawei %%01ISIS/4/START_ENABLE_ISIS(l)[0]:ISIS 256 en
abled all ISIS modules.?
[Huawei-isis-1]int g0/0/0
[Huawei-GigabitEthernet0/0/0]isis enable 1
Nov 23 2023 13:56:13-08:00 Huawei %%01ISIS/4/ADJ_CHANGE_LEVEL(l)[1]:The neighbor
?of ISIS was changed. (IsisProcessId=256, Neighbor=0000.0000.0001, InterfaceName
=GE0/0/0, CurrentState=up, ChangeType=NEW_L2_ADJ, Level=Level-2)?
[Huawei-GigabitEthernet0/0/0]
我們來看下ISIS的鄰居情況:
鄰居的建立沒有問題?
OSPF配置?
接下來,我們要在AS 20上面運行OSPF協議,現在開始配置:
R3:?
[Huawei]ospf 1 router-id 10.1.3.3
[Huawei-ospf-1]area 0
[Huawei-ospf-1-area-0.0.0.0]network 10.1.3.3 0.0.0.0?
[Huawei-ospf-1-area-0.0.0.0]network 10.1.35.3 0.0.0.0R4:
[Huawei]ospf 1 router-id 10.1.4.4?
[Huawei-ospf-1]area 0
[Huawei-ospf-1-area-0.0.0.0]network 10.1.4.4 0.0.0.0
[Huawei-ospf-1-area-0.0.0.0]network 10.1.45.4 0.0.0.0R5:
[Huawei]ospf 1 router-id 10.1.5.5
[Huawei-ospf-1]area 0
[Huawei-ospf-1-area-0.0.0.0]network 10.1.5.5 0.0.0.0
[Huawei-ospf-1-area-0.0.0.0]network 10.1.35.5 0.0.0.0
[Huawei-ospf-1-area-0.0.0.0]network 10.1.45.5 0.0.0.0
現在在R5上看一下OSPF的鄰居:
鄰居狀態為FULL,OSPF配置建立完成?
EBGP的配置
我們接下來實現R2和R3以及R2和R4通過直連網絡建立EBGP鄰居關系。
R2:
[Huawei]bgp 10
[Huawei-bgp]router-id 10.1.2.2
[Huawei-bgp]peer 10.1.23.3 as-number 20
[Huawei-bgp]peer 10.1.24.4 as-number 20R3:
[Huawei]bgp 20
[Huawei-bgp]router-id 10.1.3.3
[Huawei-bgp]peer 10.1.23.2 as-number 10
[Huawei-bgp]peer 10.1.5.5 as-number 20
[Huawei-bgp]peer 10.1.5.5 connect-interface LoopBack 0? ?//向鄰居發送BGP報文的源地址更改為LoopBack 0接口的地址
查看R2的BGP鄰居情況:
IBGP配置?
配置完了EBGP,我們還要配置IBGP在AS 20中的鄰居關系。
R4:
[Huawei]bgp 20
[Huawei-bgp]router-id 10.1.4.4
[Huawei-bgp]peer 10.1.24.2 as-number 10
[Huawei-bgp]peer 10.1.5.5 as-number 20
[Huawei-bgp]peer 10.1.5.5 connect-interface loopback 0R5:?
[Huawei]bgp 20
[Huawei-bgp]router-id 10.1.5.5
[Huawei-bgp]peer 10.1.3.3 as-number 20
[Huawei-bgp]peer 10.1.3.3 connect-interface loopback 0
[Huawei-bgp]peer 10.1.4.4 as-number 20
[Huawei-bgp]peer 10.1.4.4 connect-interface loopback 0
查看R5的BGP鄰居情況:
BGP訪問設置
通過設置,使得AS 20內的路由器只能訪問AS 10的R1的Loopback0口。我們可以在R2上面僅宣告R1的環回口:
R2:
[Huawei]bgp 10
[Huawei-bgp]network 192.168.1.0 24
R5的所有環回口以Network方式宣告進BGP。
?R5:
[Huawei]int LoopBack 1
[Huawei-LoopBack1]ip add 172.16.0.1 24
[Huawei-LoopBack1]int loopback 2
[Huawei-LoopBack2]ip add 172.16.1.1 24
[Huawei-LoopBack2]int loopback 3
[Huawei-LoopBack3]ip add 172.16.2.1 24
[Huawei-LoopBack3]int loopback 4
[Huawei-LoopBack4]ip add 172.16.3.1 24
[Huawei-LoopBack4]q
[Huawei]bgp 20
[Huawei-bgp]network 172.16.0.0 24
[Huawei-bgp]network 172.16.1.0 24
[Huawei-bgp]network 172.16.2.0 24
[Huawei-bgp]network 172.16.3.0 24
BGP精準聚合
在R5上配置BGP的精準聚合后對R5引入的BGP路由做精確聚合,需要抑制明細路由的發布,而且需要讓聚合后的路由可以攜帶明細路由的AS-Path。
R5:
[Huawei]bgp 20
[Huawei-bgp]aggregate 172.16.0.0 22 as-set detail-suppressed?
//對as-set攜帶的明細路由的as-Path,detail-suppressed抑制明細路由
現在在R3和R5上查看下BGP路由表:
R5:
R3:
?我們發現明細路由被抑制了,聚合后的路由攜帶了明細路由的AS-path
訪問路徑選擇?
通過BGP路由屬性控制,使得R2訪問聚合路由優先選擇R4訪問;使得R5訪問R1的Loopback0口優先選擇R4訪問。上述需求不能通過控制BGP公認必遵屬性來實現:
MED修改
R2優先訪問聚合路由優先選擇R4的路徑,我們通過對R3進行修改:
R3:
[Huawei]acl 2000
[Huawei-acl-basic-2000]rule permit source 172.16.0.0 0
[Huawei-acl-basic-2000]q
[Huawei]route-policy med permit node 10
Info: New Sequence of this List.
[Huawei-route-policy]if-match acl 2000
[Huawei-route-policy]apply cost 10
[Huawei-route-policy]bgp 20
[Huawei-bgp]peer 10.1.23.2 route-policy med export?
在R2上查看BGP路由表:
優先級修改
R5訪問R1的環回口優先選擇R4訪問,我們可以修改本地的優先級,但是要保證下一跳可達!!!
R3:?
?[Huawei]bgp 20
[Huawei-bgp]peer 10.1.5.5 next-hop-localR4:
[Huawei]bgp 20
[Huawei-bgp]peer 10.1.5.5 next-hop-local
[Huawei-bgp]q
[Huawei]acl 2000
[Huawei-acl-basic-2000]rule permit source 192.168.1.0 0
[Huawei-acl-basic-2000]q
[Huawei]route-policy lp p?? ?
[Huawei]route-policy lp permit node 10
Info: New Sequence of this List.?
[Huawei-route-policy]if-match acl 2000
[Huawei-route-policy]apply l?? ?
[Huawei-route-policy]apply local-preference 120
[Huawei-route-policy]bgp 20
[Huawei-bgp]peer 10.1.5.5 ro?? ?
[Huawei-bgp]peer 10.1.5.5 route-policy lp export?
觀察R5的bgp路由表:
最后就是完成互相訪問,R1和R5環回口們互通,我們在R2的ISIS中引入BGP路由:
R2:
[Huawei]isis
[Huawei-isis-1]im?? ?
[Huawei-isis-1]import-route b?? ?
[Huawei-isis-1]import-route bgp?
這是R1中運行ISIS的路由表?
Ping通
?最后,抓包,抓R4與R5的互聯接口后開ping:
ping前,我們可以先看一看BGP的一個報文情況:
我們可以看到OSPF的HELLO報文的傳輸,以及TCP協議握手和攜帶的BGP報文
?Ping通!!!
后續?
BGP是不可或缺的一個協議,跨域訪問離不開BGP,后續的VPN等配置仍然需要BGP來實現。