CCNP---BGP筆記之二

·BGP用Open報文建鄰居,用KeepaLive報文作平常聯繫網絡

·OPEN消息中包含如下內容:
  一、版本
  二、自主系統號
  三、hold time 注意:這個時間是能夠協商的,取兩個BGP鄰居中較小的保持時間。
  四、BGP 路由器的 router-id,選擇方法與OSPF中相同
  五、可選參數tcp

·一個UPDATE 消息一次能夠只通告一條路由,並攜帶多個屬性。
一個UPDATE 消息一次也可通告多條路由,但它們的全部屬性必須相同。
一個UPDATE 消息能夠同時撤消多條路由。ide

實際上也就是說一個UPDATE中只能有一組相同的路徑屬性,也就是說只能有一條路徑,但能夠有多個目標網絡號。oop

BGP的鄰居關係:
BGP鄰居也叫BGP對等體,分兩種:
  EBGP--位於當前AS以外的,屬於其它AS的鄰居,一般要求直連。
  IBGP--位於同一個AS以內的鄰居,無需彼此相連,只要它們可以彼此到達對方,完成TCP握手便可。學習

·建議EBPG之間用直鏈接口來建鄰居
·建議IBGP中用環回口建鄰居優化

·從EBGP鄰居學到的路由管理距離是20
·從IBGP鄰居學到的路由管理距離是200ui

BGP的防環機制:
·BGP's Split Horizon Rule:
IBGP:從IBGP鄰居收到的路由再也不傳給其餘的IBGP鄰居。
EBGP:不接收攜帶本AS號的路由更新。命令行

BGP路由黑洞問題:
·BGP路由黑洞的解決方法:
  1)物理線路的Full Mesh
  2)BGP重分佈進IGP
  3)IGP內全部路由器都運行BGP
  4)MPLS/×××
  5)BGP鄰居的Full Meshdebug

·IBGP水平分割的解決方法:
1)Full Mesh
2)BGP's Partial Mesh (路由反射器/聯邦)
  3)不接收含有本AS號的BGP路由調試

·若是是宣告一個主類網絡,則它的掩碼不會在BGP路由表中顯示出來,表示默認使用主類網絡的標準掩碼。

BGP的配置
 

<BGP試驗>

例一:用物理接口創建BGP鄰居關係

 

R4和R2建EBGP鄰居關係:
R4:
router bgp 4
  bgp router-id 4.4.4.4
  neighbor 24.1.1.2 remote-as 123   //指定EBGP鄰居

R2:
router bgp 123
  bgp router-id 2.2.2.2
  neighbor 24.1.1.4 remote-as 4     //指定EBGP鄰居


R2和R3創建IBGP鄰居關係:(須要先在AS123內部運行IGP)
R1:
router ospf 110
router-id 1.1.1.1
network 12.1.1.0 0.0.0.255 area 0
network 13.1.1.0 0.0.0.255 area 0
network 1.1.1.0 0.0.0.255 area 0

R2:
router ospf 110
router-id 2.2.2.2
network 12.1.1.0 0.0.0.255 area 0
network 2.2.2.0 0.0.0.255 area 0

router bgp 123
  neighbor 3.3.3.3 remote-as 123 利用環回口來創建鄰居關係   
  neighbor 13.1.1.3 next-hop-self   //IBGP中,邊界路由器須要對鄰居打上這一命令

R3:
router ospf 110
router-id 3.3.3.3
network 13.1.1.0 0.0.0.255 area 0
network 3.3.3.0 0.0.0.255 area 0

router bgp 123
  neighbor 12.1.1.2 remote-as 123    
  neighbor 12.1.1.2 next-hop-self

 

例二:用環回接口創建BGP鄰居關係:

 
R4和R2建EBGP鄰居關係:
R4:
ip route 2.2.2.0 255.255.255.0 24.1.1.2  //先確保有去鄰居的路由
router bgp 4
  bgp router-id 4.4.4.4
  neighbor 2.2.2.2 remote-as 123         //指定EBGP鄰居
  neighbor 2.2.2.2 update-source lo0     //指定自已的更新源
  neighbor 2.2.2.2 ebgp-multihop 2       //設置EBGP的多跳

R2:
ip route 4.4.4.0 255.255.255.0 24.1.1.4  //先確保有去鄰居的路由
  router bgp 123
  bgp router-id 2.2.2.2
  neighbor 4.4.4.4 remote-as 4          //指定EBGP鄰居
  neighbor 4.4.4.4 update-source lo0    //指定自已的更新源
  neighbor 4.4.4.4 ebgp-multihop 2      //設置EBGP的多跳

R2和R3創建IBGP鄰居關係:(須要先在AS123內部運行IGP)
R2:
router bgp 123
  neighbor 3.3.3.3 remote-as 123
  neighbor 3.3.3.3 update-source lo0
  neighbor 3.3.3.3 next-hop-self    

R3:
router bgp 123
  neighbor 2.2.2.2 remote-as 123
  neighbor 2.2.2.2 update-source lo0
  neighbor 2.2.2.2 next-hop-self

其它命令:

·宣告路由進BGP,注意BGP的network可以通告路由表中的全部非BGP路由量。
router bgp 123
  network 172.16.1.0 mask 255.255.255.0   //宣告網絡時要說明掩碼

·下面這條命令修改對全部鄰居的keepalive-interval和hold-time
router bgp 123
  timers bgp keepalive-interval hold-time

·下面這條命令修改對特定鄰居的keepalive-interval和hold-time。
router bgp 123
  neighbor 1.1.1.1 times keepalive-interval hold-time

·各種顯示命令:
show ip bgp summary      //摘要的鄰居鄰居信息
show ip bgp 2.2.2.0/24   //顯示明細路由的詳細信息
show tcp brief           //能夠看到是誰發起的TCP連接
show ip bgp neighbors    //詳細的鄰居信息
show ip bgp rib-failure  //能夠看到提示有更高AD的路由

show ip bgp neighbors 2.2.2.2 advertised-routes  //看向這個鄰居發了哪些路由信息
show ip bgp neighbors 3.3.3.3 received-routes    //看這個鄰居給我發了哪些路由信息,必須在本路由器上用下面這條命令開啓後才能用
R2(config-router)#neighbor 3.3.3.3 soft-reconfiguration inbound  //開啓查看接收到的路由信息的功能

debgu ip routing        //查看路由表調試信息
debug ip bgp updata     //查看BGP更新信息

------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------

<關於更新源>Update-Source
路由器用來和鄰居創建鄰居關係的地址,咱們稱之爲更新源地址。

注意:在BGP建鄰居過程當中,neighbor命令所指定的鄰居的IP地址,也必須是鄰居用來和本路由器創建TCP鏈接的地址。若是不匹配,兩端創建不起鄰居關係。

「show ip bgp summary中的Neighbor」 / 「show ip bgp中的Next Hop 」
都是指Update-Source。

能夠在路由器上用如下命令指定使用哪一個接口來和鄰居創建聯繫,這個接口就是自已的更新源:
router bgp 123
  neighbor 3.3.3.3 update-source loopback 0

BGP的鄰接狀態機:

一、idle  空閒--查找是否有去往鄰居的路由
二、connect  鏈接--創建TCP三次握手
三、Active  活動--協商還未成功
四、open sent  打開發送--互發參數進行協商,也就是發送open報文
五、open confirm  打開確認--協商取得一致
六、established   創建

IDLE:       State when BGP peer refuses any incoming connections.
n CONNECT:  State in which BGP peer is waiting for its TCPconnection to be 
completed.
n ACTIVE:    State in which BGP peer is trying to acquire a peer by listening and 
accepting TCP connection.
n OPENSENT:  BGP peer is waiting for OPEN message from its peer.
n OPENCONFIRM:  BGP peer is waiting for KEEPALIVE or NOTIFICATION
message from its peer.
n ESTABLISHED:  BGP peer connection is established and exchanges UPDATE,
NOTIFICATION, and KEEPALIVE messages with itspeer.

只有當鏈接處於創建狀態時,才能交換更新、存活和通知消息

若是一直停在idle狀態,則可能:
   一、沒有去往鄰居的路由
   二、neighbor命令指錯了鄰居的地址

若是一直停在active狀態,則可能:
   一、鄰居沒有過來的路由
   二、鄰居沒有指neighbor命令
   三、鄰居neighbor中指的地址錯誤
   四、兩端的AS號不匹配 

<BGP的下一跳機制>
BGP是一個AS-by-AS的路由協議,而不是一個router-by-router的路由協議。

BGP路由的下一跳並非指下一個路由器的IP地址,而是指到達下一個AS的IP地址。

因此,默認狀況下,從EBGP鄰居學到的路由再向其它的IBGP鄰居傳遞的時候,下一跳不改變。

<MA網絡的下一跳問題>

 

當在R4上宣告172.16.1.0的路由進入BGP後,你會在R3上發現以下狀況:

R3:
sh ip bgp
   Network          Next Hop            Metric LocPrf Weight Path
*> 172.16.1.0/24   10.1.1.2                1             0 64513 i

router#debug ip bgp updates

MA網絡的下一跳:當把一條路由發送給EBGP鄰居時,若是接收這條路由的接口與EBGP鄰居的更新源地址在同一網段的時候,路由的下一跳不改變。

<Peer-Group>對等體組,相似於創建一個批處理文件
BGP中,創建鄰居關係的時候,有可能要對鄰居指上多條命令,peer-group能夠將多條命令組合在一塊兒,用來在建鄰居關係的時候一次性調用。減小了配置量。

BGP爲每一個鄰居都佔用一部分Buffer,使用Peer-Group可使多個鄰居共用同一部分Buffer。減小資源佔用。
並且針對比較多的鄰居關係,能夠減小配置量。

router bgp 123
  neighbor CCNP peer-group              //定義一個peer-group組
  neighbor CCNP remote-as 64513         //向組中加入命令
  neighbor CCNP update-source loopback 0

  neighbor 2.2.2.2 peer-group CCNP      //調用

network---關於BGP中的宣告:
注意:本命令只會宣告路由,不會激活一個接口進入BGP域

·在BGP中,network的特色是:
  一、可以通告路由表中的全部非BGP路由量、只要是路由表中有的路由,它均可以宣告,直連的,靜態的,即便從IGP學到的也能夠
  二、默認狀況下必須精確宣告網絡和掩碼
  三、只起到宣告做用,不建鄰居
  四、可宣告IGP學到的路由,並攜帶Metric和Next-hop

auto-summary 不攜帶原有的下一跳和metric值,並且會自動彙總
            
NO auto-summary   攜帶原有的下一跳和metric值,並且會自動彙總

·Auto-summary對於network的影響:
   一、能夠是主類方式宣告(如:network 3.0.0.0),條件是:在路由表中必須有子網路由;
   二、也能夠是明細方式宣告,必須帶mask(如:network 3.3.3.0 mask 255.255.255.0),條件是:必須和IGP表的路由精確匹配。
   三、若是是用no auto-summary,那麼network只能用明細方式宣告(除非是主類網絡)。一般都會用這一方式。

R4(config-router)#network 4.4.4.0 mask 255.255.255.0 (在no auto-summary時,嚴格按照IP地址掩碼通告,不加mask按主類掩碼匹配)
R4(config-router)#network 100.0.0.0 (在auto-summary時,也能夠主類方式通告,前提是有一條明細)

若是路由器從IGP和IBGP都學到一條路由,因爲IBGP路由的AD值爲200,一般會大於IGP學到的路由,因此它會選擇從IGP學到的放進路由表,並在IBGP路由的前面打上r,表示自已有一條一樣的IGP路由。在與其競爭時IBGP路由失敗了。

<Synchronization>同步。只針對IBGP鄰居

·Do not use or advertise to an external neighbor a route learned by IBGP
until a matching route has been learned from an IGP.
解釋:開啓同步的狀況下,AS內的一個路由器從IBGP鄰居處學到一條路由,不用也不傳,除非是從IGP(RIP,igrp,eigrp,OSPF,is-is)學到一樣一條路由。(網絡號和掩碼都必須徹底同樣)
BGP路由優化的條件
一、同步(從IGP學習到路由或者關掉同步)
二、下一跳不可達(靜態路由/next-hop-self)

同步規則是爲了在一個不是full-mesh的網絡中解決路由黑洞而產生的。若是路由器認爲一條BGP路由存在黑洞的可能性,它就不會去傳這條路由。因爲同步規則會對路由的傳遞產生影響,因此建議關閉它。

router bgp 123
  no synchronization    


BGP路由不優的2個緣由:
1)同步問題
2)下一跳是否可達 

解決方案:

router bgp 123
   no synchronization     //關閉同步,高版本IOS默認開啓
   neighbor 3.3.3.3 next-hop-self

Peer Group 做用:減小Buffer,減小命令行 router bgp 123 bgp router-id 1.1.1.1 neighbor shxke peer-group 創建一個peer-group的模板 neighbor shxke next-hop-self 定義模板的內容 neighbor shxke update-source loopback0 定義模板的內容 neighbor 2.2.2.2 peer-group shxke 調用peer-group模板 neighbor 3.3.3.3 peer-group shxke 調用peer-group模板

相關文章
相關標籤/搜索