1. 程式人生 > >BGP

BGP

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