一、ebgp和ibgp
1、ebgp(external border gateway protocol):外部邊界網關協議,AS之間建立的bgp鄰居關系
2、ibgp(internal border gateway protocol):內部bgp協議,AS內部之間建立的bgp鄰居關系
(1)IBGP路由器必須以全網狀結構相連,以防止路由環路。如果使用了路由反射器或者路由聯盟,則IBGP網狀結構可能遭遇收斂問題,會導致路由黑洞問題。
3、兩者的區別
(1)路由環路的避免措施不一樣。
IBGP規定:ibgp speaker不允許把一個IBGP鄰居學習到的前綴去傳遞給其它的IBGP鄰居,因此IBGP要求邏輯全連接。
EBGP:ebgp對路由環路的避免是通過as_path屬性來實現的
(2)使用的bgp屬性不同。如:ibgp可以傳遞local_pore(本地優先性);ebgp不行。
(3)ibgp有同步的要求,而ebgp沒有同步的要求。
(4)ibgp不需要ibgp鄰居之間有物理連接,只需要邏輯連接即可;
ebgp一般情況下都要求ebgp鄰居之間存在物理連接。
4、路由通告的傳遞
(1)如何將一個AS學到的路由通告給另外一個AS,要視過渡AS內部的情況而定。
(2)規則
a,bgp路由器會把從ebgp對端學到的路由通告給所有bgp鄰居,包括ibgp鄰居和ebgp鄰居。
b,從ibgp鄰居處學到的路由是否通告給自己ebgp對端,這就要視本AS內的egp和igp路由表是否同步而定,而是否需要同步——就要看本AS內的“過渡”路由器之間有沒有全互聯ibgp,如果是全互聯的ibgp,就不需要同步。
二,十三條路由的選路原則
前提:每條路由都是最優的,也就是下一條可達,以及同步關閉
序號 | 名稱 | 介紹 |
1 | weight值 | 最高有weight優先,默認是0 |
2 | local preference | 本地優先級高的優先 |
3 | next hop | 起源本路由器上的路由 |
4 | as path | as-path最短的優先 |
5 | origin | 最小的起源代碼 |
6 | MED | 最低的med |
7 | EBGP>IBGP | ebgp:20;ibgp:200/255 |
8 | 度量值最小的IGP | 通過最近bgp鄰居的路由 |
9 | EBGP鄰居建立時間 | 最老的egbp鄰居學到的路由 |
10 | 最小的BGP route ID | 更低的route-id |
11 | max-path是否配置 | 如果配置了,就負載均衡 |
12 | cluster-list短 | 始發路由器ID相同,選擇cluster-list短的(每經過一個RR(路由反射器),cluster-list會加上這個RR的cluster-id) |
13 | neighbor配置小 | 優選來自於最低的鄰居地址的路徑,是bgp的neighbor配置中的地址 |
1、weight值(權重值)
(1)優選有最大weight的路由(0---65535),weight是Cisco私有的參數,路由器配置了weight在本地有效。
(2)缺省情況下,通過本路由器宣告、重分布或者匯總的路由的weight為32768,從bgp鄰居學習到的路由的weight為0
(3)只在本地有用,影響本路由的選路。
(4)修改方法(在本路由器的入方向上做)
a,neighbor xxx weight xxx (從此xxx鄰居學到的所有的路由都加)
b,router-map xxx permit 10 set weight xxx
2、local-preference(本地優先級)
(1)通過第一條選路原則不能選出最優bgp條目的情況下,優選有最大local preference值得bgp條目。
(2)local preference值只可以在ibgp鄰居之間傳遞,在ebgp鄰居之間不能傳遞(不能在ebgp的出方向上做,因為只在本AS內生效)
(3)對於從ebgp鄰居學習到的bgp條目,local preference缺省值為100(show IP bgp中看到是空,其實也是100;show ip bgp xxx看明細的時候可以看見路由的local-preference),這個值可以通過命令bgp default local-preference修改
(4)修改方法
a,bgp default local-preference xxx //修改后,對ibgp學來的路由不起作用,只對ebgp傳來的和自己產生的路由起作用。
b,route-map xxx permit 10 set local-preference xxx
c,不能在ebgp鄰居關系的出方向做修改
3、起源本路由器上的路由
優選從本路由器始發的路由:包括本地network配置的重分布,或者在igp表中已經有一些需要被配置路由聚合的地址。
4、AS--PATH
若前三條選路不能選出最優bgp條目的情況下,優選as path長度短的路由條目
修改as path長度只能在ebgp鄰居關系之間進行,ibgp鄰居關系是不可以的
(1)as-path只可以在ebgp鄰居關系的out方向和in方向去修改:
a,out方向:加在本來as號的前面/右邊
b,in方向:加在本來as號的后面/左邊
(2)last-as表示在離這個路由器最近的as號,重復加次數
route-map xxx permit 10
match ip address 1
set as-path prepend last as xx(xx表示加的次數)
(3)入/出方向的時候,as-path prepend與last-as同時使用,last-as先,as-path prepend后
聚合 聚合后的{ }內的as算一個。
聯邦 聯盟內的( )內的as一個都不算。
neighbor xxx remove-private-as刪除私有as號,起源於本as無效,在出方向做。
bgp best path as-path ignore // 跳過as-path選路原則
5、起源代碼origin
前四條選路原則不能選出最優bgp條目,優選最低起源類型的bgp路由
origin的順序是igp優先egp優先incomplete(egp現在已不用)
(1)類型
i-----igp,network xxx :通過network,aggregate方式產生的bgp路由的起源屬性
e-----egp:現在已不使用
?-----重分發:通過重分布產生的bgp路由的起源屬性是incomplete
(2)origin在ebgp/ibgp的in和out方向都可以做。
6、MED值
前五條選路原則都不能選出最優bgp條目
(1)用途:在兩個相鄰as之間有多個bgp連接的情況下,MED值用於影響從相鄰as到本as的路由選擇(用於影響鄰居as到本as的流量從哪個接口進來)
(2)MED的生成
a,本地network方式生成的bgp條目,會帶上igp的metric,(同時也會帶上路由的下一跳,開啟匯總后會被取消)會傳給所有鄰居。
b,如果從ebgp鄰居學習到的bgp條目的metric值傳遞給其它ibgp鄰居,但不傳給ebgp
-------------------------------a,b表示MED值只傳遞一次ebgp鄰居--------------
c,若ibgp鄰居學習到一條bgp條目的metric為0或者其它值,缺省不會傳給ebgp鄰居,會顯示為空
d,匯總方式生成的bgp條目,metric值為空
e,重分布方式生成的bgp條目,metric值為igp的cost】metric、hop,如果開啟自動匯總會被清楚
f,缺省情況下,空的metric當0看待
(3)優選最小MED值的路由(范圍0到4,294,9671295)
a,只在通過兩條路徑得到第一個AS(對等體)是同一個AS時才進行MED比較(as序列號中第一個as號碼一致,才比較MED),任何子自治域的聯盟系統都會被忽略(從不同聯邦學到的路由都會比較MED)
b,如果路由器上配置了bgp always-compare-med,在全部路徑進行med比較(全體as都同時啟用這個功能,否則有可能會發生路由環路)
c,若路由器上配置了bgp best path med confed,將進行med比較(所有包括/.AS_CONFED_SEQUENCE的路徑下),默認不比較
d,如果接收到的路徑沒有分配med值,則將此路徑分配為0,除非路由器上配置了bgp best path med missing-as-worst,將被看作MED值為4,294,967,295的路由將在注入到路由選擇表之前被改為4,294,967,294。
7、ebgp > ebgp:ebgp>聯盟ebgp>ibgp
8、最近的bgp鄰居
指的去往bgp鄰居用的igp路由的metric值,對ebgp,igbp鄰居都會有效。
9、old最長的ebgp路由(存在時間最長的優先)
(1)可以把路由擺動的影響減到最小,因為新接收到的路徑不會取代老的。
(2)使用bgp best path compare router id 可以關閉此步驟
(3)若路由器的標志一樣,此步驟可以被屏蔽,說明路由器正在從自己那里接受路由
(4)如果當前沒有最有路由器,此步驟可以被屏蔽。當提供某個路徑的鄰居路由器宕機,就會發生丟失
10、lowest router id (最小的ibgp鄰居route-id)
在有RR(路由反射器)的情況下不比鄰居的route-id,比起原id起始者表示將代替route-id在路徑選擇過程中起作用。