天天看點

快速掌握BGP外部網關協定

@[toc]

自治系統(autonomous system,as)指的是在同一組織管理下、使用相同政策的裝置的集合。

不同的as通過as号區分,as号取值範圍1-655535,其中64512-65535是私有as号。iana負責as号的分發。

中國電信163 as号:4134

中國電信cn2 as号:4809

中國網通as号:9929

iana:網際網路數字配置設定機構,在全球範圍内制定統一标準

bgp是自治系統間的路由協定。bgp交換的網絡可達性資訊提供了足夠的資訊來檢測路由回路并根據性能優先和政策限制對路由進行決策,是一種實作自治系統as之間的路由可達,并選擇最佳路由的距離矢量路由協定。

bgp能夠承載大批量的路由資訊

bgp使用tcp作為其傳輸層協定(監聽端口号為179),提高了協定的可靠性----重要

bgp是外部路由協定,用來在as之間傳遞資料,對穩定性要求極高,是以用tcp協定的高可靠性來保證bgp協定的穩定性

bgp的對等體之間必須邏輯上連通,并經行tcp連接配接。目的端口号為179,本地端口号任意。

bgp對等體和igp對等體不同,bgp對等體(peer)是指使用tcp建立連結的兩端,而非與igp同概念的直連鄰居,隻要tcp能夠建立連接配接并不一定需要直連------重要

bgp本身隻負責控制路由,資料轉發依然靠靜态或igp路由

bgp支援無類别域間路由cidr

路由更新時,bgp隻發送更新的路由,大大減少bgp傳播路由所占用的帶寬,适用于在internet上傳播大量的路由資訊-----重要

bgp時一種增強的距離矢量路由協定,從設計上避免了環路的發生------重要

as之間:bgp通過攜帶as-path資訊标記途經的as,帶有本地as号的路由将被丢棄,進而避免了域間産生環路-----重要

as内部:bgp在as内學到的路由不會再通告給as内的bgp鄰居,避免了as内産生環路-----重要

bgp提供了豐富的路由政策,能夠對路由實作靈活的過濾和選擇

bgp提供了防止路由震蕩的機制(路由衰減),有效提高了internet網絡的穩定性

bgp易于擴充,能夠适應網絡新的發展。主要是通過tlv進行擴充

ebgp

運作與不同as之間的bgp稱為ebgp。為了防止as間産生環路,當bgp裝置接收ebgp對等體發送的路由時,會将帶有本地as号的路由丢棄。

ibgp

運作于同一as内部的bgp稱為ibgp。為了防止as内部産生環路,bgp裝置不将從ibgp對等體學習到的路由通告給其他ibgp對等體,并與所有ibgp對等體建立全連接配接。為了解決ibgp對等體的連接配接數量太多的問題,bgp設計了路由反射器和bgp聯盟。

bgp的router-id是一個用于辨別bgp裝置的32位值,通常是ipv4位址的形式,在bgp回話建立時發送的open封包中攜帶。對等體之間建立bgp會話時,每個bgp裝置都必須有唯一的router id。否則對等體之間不能建立bgp連接配接。

bgp的router id在bgp網絡中必須是唯一的,可以采用手工配置,也可以讓裝置自動選取。預設情況下,bgp選擇裝置上的loopback接口的ipv4位址作為bgp的router id。如果裝置上沒有配置loopback接口,系統會選擇接口中最大的ipv4位址作為bgp的router id。一旦選出router id,除非發生接口位址删除等事件,否則即使配置了更大的位址,也保持原來的router id。

bgp對等體間通過以下5種封包進行互動,其中keepalive封包為周期性發送,其餘封包為觸發式發送:

封包

作用

open封包

用于協商bgp對等體的各項參數

update封包

通告對端可達或者撤銷路由資訊及路徑屬性

notification封包

用于中斷bgp連接配接

keepalive封包

用于保持bgp連接配接。( 保活)

route-refresh封包

用于在改變路由政策後軟複位bgp路由表請求對等體重新發送路由資訊

open封包:是tcp建立連接配接發送的第一個封包

協商bgp對等體的各種參數,包括版本、as号等資訊,建立bgp對等體連接配接。

update封包:對等體之間交換路由資訊。

連接配接建立後,有路由需要發送或路由變化時,發送update封包通告對端可達或撤銷路由資訊及路徑。

notification封包:用于中斷bgp連接配接。

bgp發現錯誤時,發送封包通告bgp對端,随後與之相關的鄰居将被關閉。

keepalive封包:用于保持bgp連接配接。

定時發送keepalive封包以保持bgp對等體關系的有效化,響應正确的open封包。

route-refresh封包:用于在改變路由政策後軟複位bgp路由表請求對等體重新發送路由資訊。隻有支援路由重新整理(route-refresh)能力的bgp裝置會發送和響應此封包

idle狀态是bgp初始狀态。在idle狀态下,bgp拒絕鄰居發送的連接配接請求。隻有在收到本裝置的start事件後,bgp才開始嘗試和其它bgp對等體進行tcp連接配接,并轉至connect狀态。

在connect狀态下,bgp啟動連接配接重傳定時器(connect retry) ,等待tcp完成連接配接。

如果tcp連接配接成功,那麼bgp向對等體發送0pen封包,并轉至opensent狀态。

如果tcp連接配接失敗,那麼bgp轉至active狀态,反複嘗試連接配接。

如果連接配接重傳定時器逾時,bgp仍沒有收到bgp對等體的響應,那麼bgp繼續嘗試和其它bgp對等體進行tcp連接配接,停留在connect狀

在active狀态下,bgp總是在試圖建立tcp連接配接。

如果tcp連接配接成功,那麼bgp向對等體發送open封包,關閉連接配接重傳定時器,并轉至opensent狀态。

如果tcp連接配接失敗,那麼bgp停留在active狀态。

如果連接配接重傳定時器逾時,bgp仍沒有收到bgp對等體的響應,那麼bgp轉至connect狀态。

在opensent狀态下,bgp等待對等體的open封包,并對收到的open封包中的as号、版本号、認證碼等進行檢查。

如果收到的open封包正确,那麼bgp發送keepalive封包,并轉至openconfirm狀态。

如果發現收到的open封包有錯誤,那麼bgp發送notification封包給對等體,并轉至idle狀态。

在openconfirm狀态下,bgp等待keepalive或notification封包。如果收到keepalive封包,則轉至established狀态, 如果收到notification封包,則轉至idle狀态。

在established狀态下,bgp可以和對等體交換update、 keepalive、 route-refresh封包和noti fication封包。

如果收到正确的update或keepalive封包,那麼bgp就認為對端處于正常運作狀态,将保持bgp連接配接。

如果收到錯誤的update或keepalive封包,那麼bgp發送notification封包通知對端,并轉至idle狀态。

如果收到noti fication封包,那麼bgp轉至idle狀态。

如果收到tcp拆鍊通知,那麼bgp斷開連接配接,轉至idle狀态。

route-refresh封包不會改變bgp狀态。

從ibgp對等體獲得的bgp路由,bgp裝置隻釋出給它的ebgp對等體。

從ebgp對等體獲得的bgp路由,bgp裝置釋出給它所有ebgp和ibgp對等體。

當存在多條到達同一目的位址的有效路由時,bgp裝置隻将最優路由釋出給對等體。

路由更新時,bgp裝置隻發送更新的bgp路由。

所有對等體發送的路由,bgp裝置都會接收。

所有ebgp對等體在傳遞過程中下一跳改變。

所有ibgp對等體在傳遞過程中下一跳不變。

預設ebgp傳遞時ttl為1

預設ibgp傳遞時ttl為225

```html/xml

建立bgp編号為100 (as号)

[r1]bgp 100

配置bgp的route id

[r1-bgp]route-id 1.1.1.1

指定對等體的回環口的ip位址及其所屬的as編号

[r1-bgp]peer 2.2.2.2 as-number 100

更新發送bgp封包的接口為lookback0接口

[r1-bgp]peer 2.2.2.2 connect-interface lookback 0

修改下一跳為自己

[r2-bgp]peer 1.1.1.1 next-hop-local

修改最大跳數值(≥2),用于ebgp

[r1-bgp] peer 2.2.2.2 ebgp-max-hop 2

繼續閱讀