CCNP知識點總結——BGP
1、BGP介紹
BGP(Border Gateway Protocol,邊界閘道器路由協議),為路徑向量路由協議,主要作用是在AS之間傳遞路由資訊。BGP的自治系統通過AS號區分,AS號取值範圍1-65535,其中64512-65535是私有AS號。目前BGP有4個版本:V1、V2、V4、V4+(即MBGP)。
2、BGP的路徑向量特徵
路徑向量資訊中包含一個BGP自治系統號列表,BGP路由器不接受路徑列表中包含其AS號的路由更新,是無環路的,BGP支援對BGP自治系統路徑應用路由策略,BGP路由器只能將其使用的路由通告給鄰接自治系統中的對等體。
3、BGP的TCP傳輸
BGP使用TCP為傳輸層協議, TCP埠號179。BGP路由器之間建立TCP連線,這些路由器稱為BGP對等體也叫BGP鄰居:EBGP、 IBGP。對等體之間交換整個BGP路由表, BGP路由器只發送增量更新。BGP通告成千上萬的路由,可採用TCP滑動視窗的機制,停止並等待確認前,可以傳送65576個位元組。
4、BGP的三張表
(1)BGP鄰居表: 鄰居列表 show ip bgp summary。
(2)BGP表: 包含了從鄰居學習所有路由,以及到達目的網段的多個路徑和屬性。
(3)路由表: 列出了到達目的網段的最佳路徑。 EBGP路由AD為20, IBGP路由AD為200。
執行BGP的路由器有一個獨立的表( BGP表)。
路由器將BGP表中最佳路由提供給IP路由表。
5、BGP報文
6、BGP有限狀態機
7、EBGP和IBGP
EBGP: BGP位於不同自治系統的路由器之間,稱為EBGP。建立EBGP鄰接關係,必須滿足三個條件:
(1)EBGP之間自治系統號不同;
(2)neighbor中指定的IP地址要可達;
(3)定義鄰居建立TCP會話。
IBGP:IBGP:BGP位於同一個自治系統的路由器之間執行,用於同一個AS中交換BGP資訊。建立IBGP鄰接關係,滿足的條件:
(1)自治系統號相同;
(2)定義鄰居建立TCP會話;
(3)IBGP鄰居可達。
8、IBGP水平分割原則
EBGP防環是通過AS_PATH實現的,而AS_PATH僅僅在路由離開AS才會被更改。因此在AS內, IBGP就沒有EBGP的防環能力,為了防止環路的出現, BGP路由器不會將從IBGP鄰居學習過來的路由再通告給自己其他IBGP鄰居。由於水平分割原則, BGP要求AS內,須保證IBGP全互聯( 用neighbor命令指定) 。
9、EBGP和IBGP的區別
(1)EBGP—外部邊界閘道器協議主要作用是在不同的自治系統間交換路由資訊。
IBGP—內部邊界閘道器協議主要作用是向內部路由器提供更多資訊。
(2)EBGP一般情況下都要求EBGP鄰居之間存在物理連線。
IBGP不需要IBGP鄰居之間有物理連線,只需要邏輯連線即可(IGP通告路由)。
(3)從EBGP鄰居學到的路由通告給IBGP和EBGP;
從IBGP鄰居學到的路由,是否通告給自己EBGP鄰居,要根據AS內的BGP和IGP路由表是否同步而定,但不會再通告給IBGP鄰居(水平分割,防止環路)。
(4)EBGP防止環路通過AS_PATH屬性來實現。
IBGP和EBGP使用的BGP屬性不同,例如IBGP可以傳遞LOCAL_PREF(本地優先屬性),而EBGP不行。
10、BGP配置
11、BGP同步
(1)BGP同步規則意義:BGP路由器不應使用通過IBGP獲悉的路由或將其通告給外部鄰居,除非該路由是本地的或通過IGP獲悉的。
(2)禁用同步,則BGP可以使用從IBGP鄰居那裡獲悉的但沒有出現在本地路由表中的路由,並將其通告給外部BGP鄰居。Cisco IOS預設禁用同步。
(3)BGP同步規則的目的:為防止一個AS內部(非全互聯)出現路由黑洞,即向外部通告了一個本AS不可達的虛假的路由。
(4)BGP同步規則的問題:若將BGP路由釋出到IGP中,那麼是IGP路由器要維護數以萬計的外部路由,對路由器的資源佔用將帶來巨大的開銷。
(5)結論:通常BGP協議的執行需要關閉同步。
(6)路由的正常傳遞:1.同步問題2.下一跳問題。
禁用同步配置:Router(config-router)#no synchronization
啟用同步配置:Router(config-router)#synchronization
12、Peer Group
將更新策略相同的鄰居劃分到一個對等體組中,簡化配置,對等體組成員繼承對等體組的所有配置選項,更新對於每個對等體組值生成一次,每個成員複製該更新。
配置:
Router(config-router)#neighborpeer-group-namepeer-group
Router(config-router)#neighborip-addresspeer-grouppeer-group-name
13、身份驗證
BGP支援MD5鄰居身份驗證,啟用身份驗證後,將對通過對等體之間的TCP連線傳輸的所有資料等進行驗證,認證都是在TCP建立連線的時候完成的。
配置:Router(config-router)#neighbor{ip-address | peer-group-name} passwordstring
14、管理性關閉
Router(config-router)#neighbor{ip-address|peer-group-name}shutdown
從管理層面暫時關閉某個鄰居,而避免刪除配置
Router(config-router)#no neighbor {ip-address|peer-group-name}shutdown
重新啟用
15、路由匯聚
16、路由反射器
17、聯盟
18、硬重置和軟重置
重置BGP會話:將新策略應用於所有路由,必須觸發一個更新。主要使用2種觸發更新的方式:硬重置、軟重置。
硬重置:斷開相應的TCP連線,通過這些會話收到的所有資訊都將失效,並從BGP表中刪除。
重置命令:clear ip bgp *,clear ip bgp{neighbor-address}
軟重置:不會重置BGP會話,建立一條新的更新,並將整個BGP表傳送給指定的鄰居,需要修改策略時,建議使用該命令。
重置命令:clear ip bgp * soft。
19、檢視BGP表
show ip bgp neighbors {address} routes
show ip bgp
show ip bgp neighbors {address} advertised-routes
debug ip bgp updates
20、BGP屬性
公認屬性Well-Known:(1)公認強制屬性Well-known mandatory;
(2)公認自由屬性 Well-known discretionary;
可選屬性 Optional:(1)可選傳遞的Optional transitive;
(2)可選非傳遞的Optional non-transitive。
(1)WEIGHT
在路由器本地配置,只提供本地路由策略,不會傳播給任何BGP鄰居,範圍:0~65535,越大越優先。路由器本地通告的路徑預設權重為32768,從其他BGP鄰居學習到的為0。
(2)AS-path —公認強制屬性
AS-path是前往目標網路的路由經過的自制系統號列表,通告該路由的自治系統號位於列表末尾。作用:確保無環,通告給EBGP時會加上自己的AS號;通告給IBGP時不修改AS-path。
(3)Origin — 公認強制屬性
Origin指出了路徑資訊的源頭,有下列3種可能:<1>IGP:在AS內部,用network通告路由時,用i表示;<2>EGP:路由通過EGP獲悉,用e表示;<3>Incomplete:路由的源頭未知或是通過其他方法獲悉的,用?表示。例如重發布。路由優選順序: lowest origin code (IGP < EGP < Incomplete) 。
(4)NEXT_HOP —公認強制屬性
NEXT_HOP指出了用於前往目的地的下一跳IP地址,BGP中的下一跳為AS。
對EBGP會話來說, NEXT-HOP就是通告該路徑的EBGP鄰居的介面IP。對IBGP,起源AS內部的路由的NEXT-HOP就是通告該路徑的鄰居的IP。(如果有設定更新源,則為更新源地址),而從EBGP學到的路由的
NEXT-HOP,在IBGP內傳遞時不變,始終指向的是下一個AS(本AS對端的EBGP鄰居介面IP)。
(5)LOCAL PREFERENCE —公認自由屬性
LOCAL PREFERENCE告訴AS中的路由器,哪條路徑是離開AS的首選路徑。LOCAL PREFERENCE越高路徑越優。預設本地優先順序為100。只發送給IBGP鄰居,而不能傳遞給EBGP鄰居。
(6)MED — 可選非傳遞屬性
MED用於向外部鄰居指出進入AS的首選路徑,即當入口有多個時,自治系統可以使用MED動態的影響其他AS如何選擇進入路徑。MED值越小越優先,Cisco定義的MED值預設值是0。MED是在AS之間交換,MED傳送給EBGP對等體,這些路由器在AS內傳播MED,不傳遞給下一個AS。預設情況下,僅當路徑來自同一個AS中的不同鄰居時,路由器才比較他們的MED屬性。MED影響進入AS的資料流;LOCAL PREFERENCE影響離開AS的資料流。
比較原則及配置注意事項
本地在將一條BGP路由通告給EBGP Peer時,是否攜帶MED值,需要根據以下條件進行判斷(不對EBGP Peer使用Route-map的情況下):
<1>如果該BGP路由是本地始發(network或redistribute),則攜帶MED值傳送給EBGP Peer (如果MED為空,則設定為0)。
<2>如果該BGP路由是從其他BGP Peer學習過來的,那麼將該路由通告給EBGPPeer時不攜帶MED。
<3>本地在將一條BGP路由通告給IBGP Peer時,一定會攜帶MED值。如果接收或產生的路由的MED為空,那麼在向IBGP Peer通告時,將MED設定為0。
總結: MED在IBGP之間傳遞不會丟失,在EBGP之間傳遞要看路由是否起源於自己。
(7)COMMUNITY — 可選傳遞屬性
COMMUNITY用於簡化路由策略的執行,可以將某些路由分配一個特定的COMMUNITY屬性,之後就可以基於COMMUNITY值而不是每條路由進行BGP屬性的設定了。
route-map bgp permit 10
set community ?
<1-4294967295> community number
aa:nn community number in aa:nn format // 路由所屬as:nn標識
additive Add to the existing community
internet Internet (well-known community) // 預設所有路由都屬於該團體
local-AS Do not send outside local AS (well-known community)
//不把這條路由傳出本AS(聯邦as中的小聯邦) 。
//如果沒有聯盟,那麼這個效果和no-export是一樣的,都不會傳遞出本AS。
no-advertise Do not advertise to any peer (well-known community)
// 不通告給任何鄰居
no-export Do not export to next AS (well-known community)
//不把這條路由傳給EBGP對等體(如果配置了聯邦,則針對大as)
21、BGP 13條選路原則
前提:路由下一跳不可達或沒有解決同步問題,則不能參與路由選擇:
1. 選擇weight值最高的路由——思科私有
2. 選擇LOCAL_PREF較大的路由
3. 選擇本AS路由器產生的路由
4. 選擇AS路徑較短的路由
5. 依次選擇origin屬性為IGP、 EGP和INCOMPLETE型別的路由
6. 選擇MED較小的路由
7. 優選EBGP而不是IBGP
8. 選擇下一跳IGP度量值較小的路由
9. 負載均衡, BGP預設不支援負載均衡。若配置負載均衡,則不比較後面的引數。( maximum-paths n)
10. 優先選擇最老的路由(即最穩定的路由) —EBGP
11. 選擇BGP Router ID小的BGP對等體通告的路由
12. 優先選擇最短的cluster-list
13. 優先選擇鄰居IP地址最小的路由(neighbor指定的地址)
補充說明:
(1)第3點:意思是路由器本地network的,也就是下一跳為0.0.0.0的路由。
本地發起的路由有多種方式,如在BGP程序下用network命令,或將其它路由協議重分佈進BGP的,或者手工彙總的。通過命令network和重分佈的優先於手工彙總的路由。
(2)第4點:在做聚合路由時,使用as-set後產生的AS-Path列表中{ }裡的AS號長度只算一個AS號的長度,在聯盟內的AS-Path列表中()的AS號長度不做計算依據。
(3)第9點:等價負載均衡,當前面8條選路原則都無法優選出最優路由時,並且在BGP程序下面配置了maximum-paths,那麼將執行負載均衡。
(4)第10條,第11條:如果BGP程序下使用bgp bestpath compare-routerid命令,則忽略第10條,進行第11條的比較。
22、Local preference 使用
IBGP鄰居之間,選擇離開本AS的出口。預設為100 ,越大越優。Local preference是公認自由屬性。
Router(config-router)# bgp default local-preference value
此命令更改預設的本地優先順序,向IBGP鄰居釋出的所有路由都將本地優先順序設定指定的值。
23、MED使用
當EBGP之間存在多個路徑時,使用MED,Cisco的預設設定0,越小越優,MED是可選非傳遞屬性。
Router(config-router)# default-metric number
此命令更改預設的MED值,通告給EBGP鄰居的所有路由都將設定為使用此命令指定的值。
24、BGP路由過濾
neighbor 1.1.1.1 prefix-list 1 {in | out}
用字首列表來過濾,這個是BGP的標準過濾方法,可以用in和out方向。
neighbor 1.1.1.1 distribute-list access-list-number {in | out}
用訪問控制列表來過濾,支援擴充套件訪問控制列表。建議用prefix-list來過濾。
neighbor 1.1.1.1 route-map XX {in | out}
用route-map來過濾,一般用在字首有屬性改變的時候。
neighbor 1.1.1.1 filter-list as-path-access-list-number {in | out}
用as-path-access-list所定義的正則表示式表示的AS-path來過濾。
例:
^123$ 表示只匹配AS 123。
^100 表示匹配以100打頭的字串。
100$ 表示以100結尾的字串。
^$ 表示沒有經過任何AS,即本地AS的路由。
^12[0-3]$ 表示匹配120 121 122 123。
^12. 表示匹配12,120 – 129開始的AS號。
.* 表示匹配任意。
(1)只接收起始於AS5044的路由:
router bgp 65022
no synchronization
neighbor 172.16.0.1 remote-as 4
neighbor 172.16.0.1 filter-list 1 in
no auto-summary
ip as-path access-list 1 permit _5044$
(2)只通告起始於本地( AS100)的字首:
router bgp 100
neighbor 10.1.1.1 remote-as 65535
neighbor 10.1.1.1 route-map map1 out
route-map map1 permit 10
match as-path 1
ip as-path access-list 1 permit ^$
25、移除私有AS號
Remove private AS:過濾私有的AS號
neighbor{ip-address|peer-group-name}remove-private-as
26、限制BGP路由數目
(1)Maximum-Prefix:用來限制路由器最多隻能從鄰居處接收多少條路由:
neighbor 10.10.1.1 maximum-prefix 100
neighbor 10.10.1.1 maximum-prefix 100 85(百分比)
neighbor 10.10.1.1 maximum-prefix 100 85 warning-only
(2)限制路由經過的AS的數目:
bgp maxas-limit {1-2000}
(3)條件路由:
neighbor 10.10.1.1 advertise-maproute-map-Aexist-maproute-map-B
當route-map-B裡面匹配的路由存在於路由表,則向鄰居10.10.1.1通告route-map-A匹配的路由 (必須要network進BGP)。
neighbor 10.10.1.1 advertise-map route-map-Anon-exist-maproute-map-B
當route-map-B裡面匹配的路由不存在於路由表,則向鄰居10.10.1.1通告route-map-A匹配的路由 (必須要network進BGP)。
27、BGP Dampening
BGP利用Dampening機制,將頻繁抖動的路由有條件的加以抑制。
router bgp 1
bgp dampening
Half-life Time : 15 m 半衰期
Reuse : 750 降到這個值以下,重新開始啟用路由
Start Suppress : 2000 升到這個值以上,開始抑制
Max Suppress Time : 60 m (4×15) 最大抑制時間
BGP預設不啟用Dampening,且僅對EBGP鄰居傳來的路由起效。
28、4位元組AS號
2位元組AS號:1-65535,其中,1-64511為公有AS號,64512-65535為私有AS號。
4位元組AS號:最大為4,294,967,295。
4位元組AS號分為asplain和asdot兩種寫法:
asplain:2-byte 和 4-byte 都使用十進位制來表示,
asdot:2-byte 使用十進位制表示, 4-byte 用點號分隔,
如65536=1.0,65,536,005 =1000.5,123=0.123
啟用asdot格式:Router(router-config)# bgp asnotation dot
禁用asdot格式:Router(router-config)# no bgp asnotation dot
硬重置BGP會話:clear ip bgp *
AS 23456作為4位元組AS號路由器到2位元組AS號路由器的替代寫法。
neighbor 10.3.4.2 remote-as 23456
可選傳遞屬性:NEW_AGGREGATOR 和 NEW_ASPATH
當R2#show ip bgp neighbors 12.1.1.1 中出現Four-octets ASN Capability: advertised and received時,代表該路由器支援4位元組AS號。
https://blog.csdn.net/gongxifacai_believe/article/details/79632714