·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模板