天天看點

BGP 學習第一課

一。什麼時候要使用BGP路由

1.給營運商使用的

2.成擔網際網路的傳輸與業務。

3.如果企業要使用BGP,

1)如果是一個傳輸AS,(可能要成擔網際網路的流量)

2)連接配接不同的網絡(比如連接配接了聯通,又連接配接到了電信,以保安全)機關使用的就這種。

3)希望流量是可以控制的。

BGP 圍繞的主要是 AS,将整個網際網路分成了幾個若幹的管理域。

多個AS之間做路由使用 BGP,但AS内部還是使用 OSPF RIP 等。

一個AS 是一個單獨的技術管理下的路由器,

AS号是IANA來管理和配置設定,是個組織。

私有的AS号 64512 - 65535 可以内部自己使用。

path-vector  路徑矢量 bgp新的特性。經過AS最少的就是優先使用的路徑

BGP依賴管理者配置設定的屬性,依據屬性進行操作和尋徑。

BGP隻能影響自己的決策,不能影響鄰居(AS)做決策。

什麼時候不能用

硬體不行不能用

隻有一個出口不能用

BGP傳輸的前提,必須要建立一條TCP會話,要想兩個路由器建立一個BGP會話,就必須要先建立一個TCP會話,使用端口179 

促發更新,隻有産生變化時才會向外發送更新。

周期性發送保活資訊,确認雙方是正常的。

OSPF 使用 IP 包

EIGRP 使用 IP 包

RIP 使用 UDP 520端口

使用TCP的意義。BGP使用TCP 179 ,因為TCP可靠,有視窗機制傳大包有保障,有流控,有重傳輸機制。

BGP也是三張表

鄰居表

要建立鄰居表先要建議TCP的會話,然後建議BGP的鄰居關系 ,在周期性發送保活資訊。會把鄰居關系記錄鄰居表中。

轉發表

也叫轉發資料庫。從每個鄰居裡學到的所有網絡的清單。取最優的路徑放IP路由表裡

IP路由表

記錄路由

BGP是有管理距離的

IBGP 是 内部BGP 管理距離是200

EBGP 是外部BGP 管理距離是 20

建議通信時使用四個消息

先建立一條TCP連接配接

OPEN

發送一個OPEN消息 ,如果收到,就每60秒發送KEEPALIVE

OPEN消息包括

version number :  4  如果版本不同,就互相協商,

AS Number : 

Hold time  : 建議秒數 可以是0 但最少是3

route id : 路由器的名子,建議手動設定,如果沒有環回口最高,如果沒有環回口,就是實體口的最高位址

optional parameters : 可選字段,一般用不上

Keepalive

就成功建立了,周期發送保活消息,

update

進行更新

網絡号:network-layer reachability information 網絡層可達性資訊 就是IP的字首資訊,就是網絡号

度量 :PATH attribmtes 路徑屬性

withdraum routes 撤銷的路由,就是發要删除的路由 

notification

有錯誤的時候發送

包含一個error code 資訊

error subcode  &  data

如果路由器收到了,就會關閉和對方的bug連結。

EBGP & IBGP

EGBP 也叫外部BGP,是工作在兩個AS之間的BGP

需要被直連,因為要建立TCP會話,如果不直連,就PING不通,沒有TCP會話

IBGP

可以不直連

把一個運作一個BGP路由的叫 “講者”

建議了鄰居的 BGP路由器叫 ”對等體“

IBGP,

一台路由器隻能存在于一個AS,也就是隻能起一個BGP

BGP 學習第一課

看紅線處 如果是 external link 就是 EBGP , 在AS 之間使用的 BGP  比如AS 100與AS200 或AS 65535 與AS65534

如果是 internal link 就是IBGP,一共是AS内部,比如都是AS100之間建立的BGP

BGP neighbor is 1.1.1.1,  remote AS 100, internal link

  BGP version 4, remote router ID 1.1.1.1

  BGP state = Established, up for 00:29:34

  Last read 00:00:34, last write 00:00:34, hold time is 180, keepalive interval is 60 seconds

  Neighbor capabilities:

    Route refresh: advertised and received(old & new)

    Address family IPv4 Unicast: advertised and received

  Message statistics:

    InQ depth is 0

    OutQ depth is 0

                         Sent       Rcvd

    Opens:                  1          1

    Notifications:          0          0

    Updates:                4          3

    Keepalives:            31         31

    Route Refresh:          0          0

    Total:                 36         35

  Default minimum time between advertisement runs is 0 seconds

BGP 學習第一課

二 建立BGP

R1

router bgp 100

 no synchronization

 bgp router-id 1.1.1.1

 bgp log-neighbor-changes

 neighbor 12.1.1.2 remote-as 200

 no auto-summary

R2

router bgp 200

 no synchronization

 bgp router-id 2.2.2.2

 bgp log-neighbor-changes

 neighbor 12.1.1.1 remote-as 100

 no auto-summary

這樣 R1 R2 的EBGP就起來了。

宣告網絡

1,可宣告非直連的網絡,與其它的不一樣,以前的是哪些接口參與就宣哪個,

而現在是哪一個網絡在哪裡做一個起源,

2. 條件是,他必須存在IP路由表中,不管用什麼方式得取的,隻要在路由表就行

R1(config)#route bgp 100

R1(config-router)#network 1.1.1.0 mask 255.255.255.0  //掩碼是正常的掩碼 這裡接的掩碼一定要

和路由表裡的掩碼是一樣的,否則不生效,子網一定要是網絡号,如果是其它的也不好使。

R1#show ip bgp

BGP table version is 2, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path

*> 1.1.1.0/24       0.0.0.0                  0         32768 i

宣告後,要等一段時間,不是立即響應。

在R2上 執行下面的指令,就會發現 因為是 EBGP 是以管理距離是 20

BGP 學習第一課

三 AS200中的三個ROU 都啟OSPF 

在使用 BGP(IBGP)把 2與3,3與4起IBGP,

建立好後

BGP 學習第一課

這是注意R1發送 1.1.1.1 10.10.10.0 這兩條路由

R2能學到 R3能學到 但R4不能學到,這是為什麼呢。

因為BGP的一個特性(BGP的水準分割),就是我從一個IBGP鄰居裡收到的路由更新不會

發給另外一個IBGP鄰居。就是R3收到了R2的路由更新資訊,不會發給R4。

是以BGP要求全互聯的,就是2 - 4 也要建立鄰居

因為使用了OSPF,是以2與4的任何接口位址都是互通的,是以很輕松的就建議了BGP,

就會學到路由資訊。

當我們去往目地地的時候,如果有備援路徑,建立關系就要指定 環回口,

比如下圖,如果A與D建立關系,IP就是指向 4,這樣B C哪個斷了都不影響使用。

BGP 學習第一課

如何 才能避免這種構架呢,就是建立鄰居的時候,使用環回口來指定鄰居,

R2(config-router)#neighbor 3.3.3.3 remote-as 200

但是資料是不會用環回口來進行向對方發包的,因為使用三層接口位址,如果還要指定一下

neighbor 3.3.3.3 update-source loopback 0

這樣就沒問題了。

在ebgp與ebgp中也要使用環回口建立,之間使用靜态進行指一下路由,

如果多條路徑就指多條靜态。

在最後要寫這下面這條指令

neighbor 3.3.3.3 ebgp-multihop 2

就是最多的跳數,如果不保險就寫大點。

在IBGP與IBGP不用寫。

如下圖

BGP 學習第一課

R2如果是 AS 100 R3 R4 是AS 200, 如果使用 LOOPBACK位址讓R2與R3 R4之間建立鄰居時,就要使用這個指令 neighbor XXX ebgp-multihop 2 ,否則建立鄰居無效,但如果使用接口位址進行的話,就可以。

BGP又一個特性,看下圖,

當 2和3,2和4,3和4 都建立了IBGP,1和2之間是EBGP。是你會發現

1,2,3,4,在show ip bgp時都會學到 Bgp釋出的路由

但3和4在 show ip route 的時候就沒有bgp路由,

這是因為bgp的又一個特性,就是釋出路由資訊的時候,下一跳是不會變的

比如2從1那學到一條路由,下一跳就是1,這時可以PING通1,

但3從2那又到1釋出的路由,下一跳資訊仍然還是1,但3還沒有到1的路由資訊。導緻不在 ip route 中展現,因為無法到達。

BGP 學習第一課

解決這個問題,使用一個指令。

R2(config-router)#neighbor 4.4.4.4 next-hop-self

把自己做為下一跳的位址。