一。什麼時候要使用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
看紅線處 如果是 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
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
三 AS200中的三個ROU 都啟OSPF
在使用 BGP(IBGP)把 2與3,3與4起IBGP,
建立好後
這是注意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哪個斷了都不影響使用。
如何 才能避免這種構架呢,就是建立鄰居的時候,使用環回口來指定鄰居,
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不用寫。
如下圖
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 中展現,因為無法到達。
解決這個問題,使用一個指令。
R2(config-router)#neighbor 4.4.4.4 next-hop-self
把自己做為下一跳的位址。