BGP
1:路徑矢量協議
2:AS:單獨技術管理域控制下的網絡匯聚端;範圍可大可小,相對而言;
AS no. 1-65535, 私有64512-65535
IGP協議運行在一個相同AS內部,保證該AS的內部連通性,並負責收集該AS內有哪些可達的路由信息;
BGP運行在不同AS之間;
3:BGP選路是基於策略設置,而不是最優路徑;BGP策略可基於AS-AS來設置,也可以基於hop-hop來設置;
4:協議基本屬性:
基於TCP:179端口運行;
只進行增量觸發更新;
通過周期性的發送keepalive消息,來確保兩個鄰居之間TCP鏈路的有效性;
豐富的路徑屬性;
5:BGP的表:
鄰居表:放置著BGP的鄰居;所有的BGP鄰居關系都是“單播、雙向手工鄰居”
BGP表:包含通過每個鄰居學習來的每條BGP網段信息;
到達這些目標網段的所有路徑;
每條路徑的路徑屬性;
IP路由表:經過BGP策略選擇之後的最優路徑;
6:消息類型:所有的BGP消息包都是單播包;
*OPEN:發現並建立鄰居關系;包含hold-time和BGP的RID;
*keepalive:周期性的發送,維護鄰居關系;
*Update:到達所以目標網段的所有路徑,以及每條路徑的BGP屬性;
*Notification:當設備運行BGP檢測到錯誤產生時向所有鄰居發送,發送之後
便將本地的BGP會話關閉;
8:BGP鄰居關系:所有的BGP鄰居關系建立都是雙向手工配置,而且所有BGP鄰居之間的消息包都是單播包。
(1)EBGP:在兩個位於不同AS內的路由器之間建立的鄰居關系叫 EBGP
缺省:EBGP鄰居要使用直連接口地址來建立鄰居關系;原因是缺省EBGP鄰居之間消息包的TTL=1;
(2)IBGP:在兩個位於相同AS內的路由器之間建立的鄰居關系叫 IBGP;
一個BGP路由器不會把從某個IBGP鄰居學習來的路由再轉發給其他IBGP鄰居;目的是為了防環;
9:BGP鄰居狀態:
Idle:查找本地路由表中是否存在著到達鄰居目標地址的路由條目;
Connect:已經在本地路由表中查找到相應路由條目,並開始與鄰居建立TCP連接,完成3次TCP握手;
Open send:向該鄰居發送Open消息,並開始等待來自鄰居的回復確認;
Open confirm:已經收到對方回復的確認消息,向下進入established狀態;
Active:未收到對方的確認消息將停留在active狀態,並有可能在idle和active之間不斷循環;
BGP基本配置:
(1)router bgp AS-no. :自治系統號範圍 1-65535,65536-4294967295;
該AS號碼直接指定了當前路由器所在的AS;
也決定了該路由器與其他BGP路由器的鄰居關系是EBGP還是IBGP;
缺省在一個單獨時刻,只能在一個設備上邊開啟一個BGP進程;
(2)bgp雙向手工鄰居的配置:
-router)#neighbor ip-address remote-as as-no
*ip-address:是鄰居路由器上某個可達的IP地址;
該ip-address直接指定了本地路由器發往這個bgp鄰居,所有BGP消息包的目標IP;
而發往該鄰居所有BGP消息包的源ip取決於帶有該目標ip-address的消息包從本地哪個接口發出去;
*而建鄰居雙方需要滿足這樣的地址要求:確保本地指向鄰居消息包的目標IP,作為鄰居向本地回包
的源地址;
*as-no. :鄰居路由器所在AS號碼;
-router)#neighbor 2.2.2.2 remote-as 65123
-router)#neighbor 2.2.2.2 update-source loopbace 0 -->指定本地某個接口(loopback0)的地址作為發往鄰居2.2.2.2所有BGP消息包的源地址;
-config)#router bgp 65300
-router)#no synchronization
-router)#bgp log-neighbor-changes
-router)#neighbor 2.2.2.2 remote-as 65123
-router)#neighbor 2.2.2.2 ebgp-multihop 5 --->將發往EBGP鄰居2.2.2.2的BGP消息包的TTL改成5
-router)#neighbor 2.2.2.2 update-source Loopback0
-router)#no auto-summary
(4)BGP鄰居驗證:
neighbor 2.2.2.2 password 123455 只支持MD5驗證
(5)關閉與某個BGP鄰居的會話,但並不移除本地有關該鄰居的配置信息:
router)#neighbor 2.2.2.2 shutdown
router)#no neighbor 2.2.2.2 shutdown
(3)向BGP內宣告路由:
-rotuer)#network 10.1.1.0 mask 255.255.255.0
*只要該路由存在於設備路由表中,就可以將其network進BGP,而無需考慮該條目之前是如何進入本地路由表中;
*必須保證向BGP內宣告的網段和當前路由表相應條目保持一致;
缺省,EBGP路由條目在向IBGP鄰居宣告時,next-hop-ip保持不變;
-router)#neighbor 1.1.1.1 next-hop-self --->向IBGP鄰居1.1.1.1宣告本地學習到的EBGP路由時,將next-hop-ip指向本地路由器自己;
(6)常見show命令
*show ip bgp summary -->查看當前簡要的BGP鄰居信息
*show ip bgp neighbor -->查看當前詳細的BGP鄰居信息
*show ip bgp -->查看本地BGP表
*show ip route bgp -->查看BGP路由表
*show ip bgp rib-filure -->查看當前BGP表中沒有最終進入路由表的路由條目有哪些,以及沒有進入路由表的原因
(7)清理BGP會話:使得本地針對鄰居修改的BGP策略立即生效
*硬清:#clear ip bgp * ----->重置與本地所有BGP鄰居的會話
clear ip bgp 2.2.2.2 ---->只重置本地與鄰居2.2.2.2的BGP會話
*軟清:#clear ip bgp * soft ---->讓當前本地針對所有鄰居調整的BGP策略立即生效,並不會重置鄰居關系;
clear ip bgp 2.2.2.2 soft ---->讓當前本地針對鄰居2.2.2.2調整的BGP策略立即生效,並不會重置鄰居關系;
(8):同步規則:當開啟bgp同步規則的時候,如果將一條路由信息僅宣告進BGP,而同時沒有被宣告進相應的IGP協議,
在設備本地發生BGP數據庫和IGP數據庫不同步的情況,那麽BGP協議不會使用所學習到的不同步的路由條目,
也不會把它轉發給其他的BGP鄰居;
(9):BGP對等體組(peer-group)
減少多個鄰居相同的BGP策略設置;先創建邏輯的對等體組,然後將之前賦予每個鄰居的BGP策略賦予到peer-group,
再將具體鄰居加入到peer-group;而對等體組內的成員可單獨再設置與其他組成員不同的BGP策略;
neighbor kaka peer-group
neighbor kaka remote-as 65123
neighbor kaka update-source Loopback0
neighbor kaka next-hop-self
neighbor 1.1.1.1 peer-group kaka
neighbor 2.2.2.2 peer-group kaka
(10):BGP選路
*最高Weight值 (Cisco Only)
*最高本地優先級
*本地發起路由(next-hop 0.0.0.0)(network通告的路由優先、從IGP重分布的路由次優、手工匯總路由)
*最短AS_PATH (跳過這一步:bgp bestpath as-path ignore)
*比較源頭碼:IGP優於BGP
EBGP優於IBGP
不完整
*最小MED(默認只比較第一個鄰接AS相同的路由;比較不同鄰接AS的MED用命令bgp always-compare-med)
*EBGP優於IBGP(IBGP優於聯盟EBGP,聯盟EBGP優於聯盟IBGP)
負載均衡輸入:maximum-paths 6
註:負載均衡條件:
1:鄰接關系都是EBGP,且到下一跳IGP度量相等
2:鄰接關系都是IBGP,且到下一跳IGP度量相等(可通過unequal-cost ibgp multipath忽略這步)
*(1)如果都是EBGP,選取最早學習到的路由;
(2)如果都是IBGP,選取到下一跳具有最低IGP度量的路由
*最小Router-ID的下一跳路由(RR環境)
*最小IP地址的下一跳(建鄰居時所指向的IP地址)
(11):bgp策略 neighbor 1.1.1.1 route-map kaka in/out -->將名字為kaka的route-map應用到從鄰居1.1.1.1學習到(in)的bgp路由或發向(out)鄰居1.1.1.1的bgp路由
*修改weight影響選路結果:
!
access-list 53 permit 50.1.3.0 0.0.0.255
!
route-map wei permit 10
match ip address 53
set weight 100
!
route-map wei permit 20
!
*修改local-Prf影響選路結果:
!
access-list 53 permit 50.1.3.0 0.0.0.255
!
route-map lpf permit 10
match ip address 53
set local-preference 200
!
route-map lpf permit 20
!
*修改AS-Pathx影響選路結果:針對EBGP鄰居來修改
!
access-list 53 permit 50.1.3.0 0.0.0.255
!
route-map pth permit 10
match ip address 53
set as-path prepend 100 200 300
!
route-map pth permit 20
!
*修改MED影響選路結果:針對EBGP鄰居來修改
!
access-list 53 permit 50.1.3.0 0.0.0.255
!
route-map med permit 10
match ip address 53
set metric 20000
!
route-map med permit 20
!
本文出自 “A man and A computer” 博客,請務必保留此出處http://juispan.blog.51cto.com/943137/1950663
BGP