華為--BGP路由技術


BGP路由技術

一、BGP概述

1、自治系統(AS,autonomous system)

自治系統是由一個技術管理機構管理,使用統一選路策略的一組路由器集合。
自治系統編號范圍:1-65535,其中1-64511是互聯網上注冊公有AS號,類似公網IP地址。64512-65535是私有AS號,類似私網IP地址。

2、動態路由的分類

(1)自治系統分類

①IGP:自治系統內部路由協議,主要有:RIP 1/2、OSPF、IS-IS、EIGRP(思科私有協議)。
IGP是運行在AS內部的路由協議,主要解決AS內部的選路問題,發現、計算路由。
②EGP:自治系統外部路由協議,通常為BGP。
EGP是運行在AS與AS之間的路由協議,他解決AS之間選路問題。

(2)協議類型分類

①距離矢量路由協議:RIP 1/2、BGP、EIGRP
②鏈路狀態路由協議:OSPF、IS-IS

3、BGP的概念

BGP是一種運行在AS和AS之間的動態路由系誒,主要作用在AS之間自動交換無環路由信息以此來構建AS的拓撲圖,從而消除路由環路並實施用戶配置的路由策略。目前公網網絡條目眾多,IGP協議無法承載,而BGP可以輕松應對,通常BGP協議用於ISP和ISP之間或跨越地域總、分公司之間的路由信息交換。

4、BGP的特征

●傳輸協議:TCP,端口號為179
●BGP是外部路由協議,用來在AS之間傳遞路由信息
●是一種增強的路徑矢量路由協議
●擁有可靠的路由更新機制
●具備豐富的Metric度量方法
●無環路協議設計
●為路由條目附帶多種屬性信息
●支持CIDR(無類別域間選路)
●豐富的路由過濾和路由策略
●無需周期性更新
●路由更新時只發送增量路由
●周期性發送Keep Alive報文以保持TCP連通性

二、BGP工作原理

1、BGP鄰居關系

(1)BGP報文

①open報文

open報文是TCP建立后發送那個的第一個報文,用於建立BGPP對等體之間的連接關系。
主要包括BGP版本號、本地AS編號、Holdtime等信息。

②update報文

update報文使用在BGP之間更新路由信息,update報文可以通告多條屬性相同的可達路由信息,也可以撤銷多條路由不可達的路由信息。

③notification報文

報文的作用是當BGP檢測到錯誤狀態時,立即向對等體發送notification報文,之后BGP就會中斷,只要收到notification報文就會返回idle狀態。

④route-refresh報文

用來告知對等體所支持路由的刷新能力,BGP的入口策略路由發生變化,本地的BGP路由會向對等體發送route-refresh報文,收到信息后,對等體將其路由信息重新發送給本地BGP路由器。

⑤keep alive報文

該報文在對等體之間周期的發送報文,用以保持連接的有效性並維護其連接,keep alive報文發送周期為60s,保持時間180s,這個類似於ospf中的hello報文。

(2)BGP狀態機


idle狀態-空閑

connece狀態-連接

active狀態-活動

opensent狀態-開啟發送

openconfirm狀態-開啟確認

established狀態-建立

(3)BGP數據庫

①IP路由表(IP-RIB)

全局路由信息庫,包括最優的路由信息

②BGP路由表(Loc-RIB)

BGP路由信息庫,包括本地BGPspeak通告的路由信息,將其最優的添加到路由表中

③鄰居表

對等體鄰居清單表,包括對等體兩端的鄰居信息及鄰居列表

④Adi-RIB-In

對等體宣告給本地的speak的未處理的路由信息庫

⑤Adj-RIB-Out

本地speak宣告給指定的對等體路由信息庫

(4)BGP的鄰居關系類型

①IBGP

同一個AS內部BGP鄰居關系,IBGP鄰居是指運行BGP協議的對等體兩端在同一個AS域內,屬於BGP AS內部。

②EBGP

AS之間的BGP鄰居關系,EBGP通常指運行BGP協議的對等體兩端在不同AS內部

2、通告BGP路由的方法

(1)netwrok方式

[R1-bgp] network 1.1.1.1 32

[R1-bgp] network 2.2.2.2 32

(2)import方式

[R1-bgp] import-route ospf 110 ###注入ospf中的路由

[R1-bgp] import-route static ###注入靜態路由

[R1-bgp] import-route direct ###注入直連路由

三、BGP的配置

1、BGP配置思路

(1)啟用BGP,后面跟AS系統號

(2)宣告route-id,建立鄰居關系用

(3)宣告和誰建立鄰居關系

(4)通告BGP路由(network、import)

2、BGP對等體配置

如R1與R2建立鄰居對等,as系統號為100,R1 router-id為1.1.1.1,R2 router-id為2.2.2.2

R1:

[R1] router id 1.1.1.1

[R1] bgp 100

[R1-bgp] peer 2.2.2.2 as-number 100

[R1-bgp] peer 2.2.2.2 connect-interface LoopBack 0

R2:

[R2] router-id 2.2.2.2

[R2] bgp 100

[R2-bgp] peer 1.1.1.1 as-number 100

[R2-bgp] peer 1.1.1.1 connect-interface LoopBack 0

3、保證IBGP下一跳可達

在EBGP之間建立對等鄰居時,由於它們之間數據傳輸需經2跳,因此需做如下設置

[R2-bgp] peer 3.3.3.3 ebgp-max-hop 2

4、BGP屬性

路由器發送關於目標網絡的BGP更新消息,更新的度量值被稱為路徑屬性。屬性可以是公認的或可選的、強制的或自由決定的、傳遞的或非傳遞的。屬性也可以是部分的。並非組織的和有組合的都是合法的,路徑屬性分為4類:公認必遵、公認自決、可選過渡、可選非過渡。

公認屬性:

是公認所有BGP實現都必須識別的屬性,這些屬性被傳遞給BGP鄰居。

公認強制屬性必須出現在路由描述中,公認自由決定屬性可以不出現在路由描述中。

可選屬性:

非公認屬性被稱為可選的,可選屬性可以是傳遞的或非傳遞的。

可選屬性不要求所有的BGP實現都支持。

對於不支持的可選傳遞屬性,路由器將其原封不動的傳遞給其他BGP路由器,在這種情況下,屬性被標記為部分的。

對於可選非傳遞屬性,路由器必須將其刪除,而不將其傳遞給其他BGP路由器。

5、BGP選路原則

1、優選具有最大Weight值的路由

2、優選具有最大Local_Preference值的路由

3、優選起源於本地的路由(如本地network、aggregate或redistribute的)即下一跳是0.0.0.0(在BGP表中,本路由器通告的路由的下一跳為0.0.0.0)

4、優選AS-Path最短的路由

5、Origin(IGP>EGP>incomplete)

6、優選MED最小的路由,默認情況下僅有當所有備選路由來自同一AS才會比較MED

7、優選EBGP鄰居發來的路由(相對於IBGP鄰居學過來的),在聯邦EBGP和IBGP中首選聯邦EBGP路由

8、優選到BGP next_hop 最近的鄰居

9、執行等價負載均衡(如果有多條來自相同相鄰AS的路由並通過Maximum-paths 使多條路徑可用,則將所有開銷相同的路由放入本地路由表)

10、優選最老的EBGP路由,EBGP路由接收的順序(此條主要對EBGP路由起效,基本不用,不好確定)

11、BGP鄰居的RID越小越優先

12、優選cluster_list最短的路由

13、選擇鄰居IP地址(BGP的neighbor配置中的那個地址)最小的路由

 

什么是BGP?

BGP( Border Gateway Protocol,邊界網關協議)是一個路徑矢量路由協議,和傳統的基於下一跳的IGP協議不同,它是基於AS(自治系統)的協議。BGP屬於外部網關路由協議,它解決的是AS之間的選路問題,如果把一個城市比作一個自治系統,那么像RIP、OSPF等協議就相當於該城市的公交車或地鐵,而BGP則是火車,運行在城市之間。

 

什么是自治系統?

自治系統( Autonomous System,AS )是由同一個技術管理機構管理、使用統一選路策略( 運行同一動態路由協議 )的一組路由器的集合,自治系統的編號取值范國為1~ 65535。其中1~64511是互聯網上注冊的公有AS號類,類似公有IP地址,是全球唯一的且不可重復使用,64512-65535是私有AS號,類似於私有地址,可以重復使用但是互聯網上不可以被使用。

 

認識IGP、EGP、IBGP、EBGP?

IGP:即自治系統內部的路由協議,主要包含RIPv1/v2、OSPF、ISIS、EIGRP(思科私有協議),IGP是運行在AS內部的路由協議,它解決AS內部的選路問題,其主要作用是發現、計算路由。

EGP:即自治系統之間的路由協議,通常指BGP。EGP是運行在AS與AS之間的路由協議,它解決的是AS之間的選路問題,BGP的主要作用是控制路由的傳播和選擇最優路由。

IBGP和EBGP所定義於BGP(EGP)里的鄰居關系

IBGP:同一個AS內部的BGP鄰居關系,IBGP鄰居通常是指運行BGP協議的對等體兩端均在同一個AS域內,屬於同一個 BGP AS內部。

EBGP:AS之間的BGP鄰居關系,EBGP鄰居通常是指運行BGP協議的對等體兩端分別在不同的AS內。

如下圖所示

 

總結動態路由分類

按自治系統分類可以分為:

IGP、EGP(BGP)

按協議類型分類可以分為距離矢量路由協議,鏈路狀態路由協議

距離矢量路由協議: RIPv1/v2、BGP(路徑矢量協議)、EIGRP(高級的距離矢量協議)

鏈路狀態路由協議: OSPF、ISIS

 

🆗,上面都了解以后,開始學習BGP

BGP的特性

傳輸協議:TCP,端口號179

BGP是外部路由協議,用來在AS之間傳遞路由信息

是一種增強的路徑矢量路由協議

擁有可靠的路由更新機制,無環路協議設計

具備豐富的 Metric度量方法

無須周期性更新

路由更新時只發送增量路由

周期性發送 Keepalive報文,以保持TCP連通性

BGP的工作原理

BGP是跨公網,跨自治系統的路由協議,可以在自治系統之間學習路由。BGP的動態學習路由也是基於鄰居,只有鄰居關系正常,BGP才可以正常工作。

BGP鄰居關系

運行BGP的路由器通常被稱為 BGPspeaker(發言者),相互之間傳遞報文的 Speaker之間互稱為對等體( Peer ),BGP鄰居關系的建立、更新和刪除是通過對等體之間交互5種報文、6種狀態機和5個表等信息來完成的,最終形成BGP鄰居

BGP的鄰居關系是基於TCP的,也就是說只要 TCP/IP可達,無論是否直連,BGP對等體彼此之間就可以建立鄰居關系

BGP的5種報文

報文

作用

open

建立BGP對等體之間的連接

update

更新增量路由

notification

檢測錯誤狀態,報錯

route-refresh

告知對等體本地支持的路由刷新能力

keepalive

周期性的發送,保持有效的連接

BGP的6種狀態機

狀態機

動作

idle

初始狀態,拒絕任何連接

connect

連接態,等待tcp連接的建立

active

活躍態,嘗試tcp的連接

opensent

檢查態,檢查收到的open報文,如果報文正確轉到下一連接狀態openconfirm;如果報文錯誤,轉到idle

openconfirm

等待態,等待對等體的keepalive或notification報文,如果是keepalive就進入到established;如果是notification就回到idle

established

建立態,對等體之間正常收發信息

通告BGP路由的方法

BGP路由是通過BGP命令通告而成的,而通告BGP路由的方法有兩種: Network和 Import

使用 Network命令可以將當前設備路由表中的路由( 非BGP )發布到BGP路由表中並通告給鄰居。需要特別注意的是, network的對象是路由條目

 

[r1]bgp 100

[r1-bgp]network 1.1.1.1 32

[r1-bgp]network 192.168.100.0 24

使用Import命令可以將所學習到的路由信息重分發到BGP路由表中,是BGP宣告路由的一種方式,可以引入BGP的路由包括直連路由、靜態路由及動態路由協議學習的路由。和 Network方式的區別是,Import的對象是某種動態路由協議,而不是路由條目

 

[R2]bgp 100

[R2-bgp]import-route ospf 110

保證IBGP下一跳可達

在AS邊緣的BGP設備,會接收到它的EBGP對等體鄰居傳遞過來的BGP路由信息,因為EBGP鄰居接收到的BGP路由信息中下一跳改變,而在同一個AS內通過IBGP鄰居接收過來的BGP路由信息中的下一跳不會改變

如下圖所示:

在不同AS里面,他們呢屬於EBGP鄰居,R2,R3的下一跳都正常;

在同一AS中,R3,R4是IBGP鄰居,下一跳都會指向R2,這樣R4就會有問題

解決辦法是在R3上宣稱下一跳為R3自己,那么R4看到的下一跳就變成34.1.1.3,而34.1.1.3可以通過IGP(ospf)學習到(圖中是直連),從而解決了路由無效的問題

[R3]bgp 300

[R3-bgp]router-id 3.3.3.3

[R3-bgp]peer 23.0.0.2 as-number 200

[R3-bgp]peer 34.1.1.4 as-number 300

[R3-bgp]peer 34.1.1.4 next-hop-local

BGP的屬性

BGP的常用屬性有 Origin、AS-PATH、Next-Hop、Local-Pref和MED等

 

屬性

作用

origin屬性

用來定義路徑信息的來源,標記一條路由是怎么成為BGP路由的

AS-PATH(AS路徑)屬性

記錄了某條路由從本地到目的地址所要經過的所有AS編號,且離本設備最近的AS號在最前面

Next-Hop(下一跳)

IGP中的下一跳描述的是下一個路由器,而BGP中的下一跳描述的是下一個AS

Local-Pref屬性

標識BGP路由的優先級,用於判斷流量離開AS時的最佳路由

med屬性

判斷流量進入鄰居AS時的最佳路由,其他條件相同的情況下,將優先選擇MED值較小者作為最佳路由

BGP選路的規則

Local-Preference優先級以數值高的路由優先

聚合路由優先級高於非聚合路由

本地通過 Network命令引入的路由的優先級高於本地通過 Import-route命令引入的路由

AS路徑長度最短(最少個數)的路徑優先級高

比較 Origin屬性,IGP優先級高於EGP,EGP優先級高於 Incomplete

選擇MED優先級較小的路由

EBGP路由優先級高於IBGP路由

下面,再看一個BGP的實驗

BGP實驗

使PC1可以ping通PC2

然后修改BGP屬性來改變路徑

r1配置端口並建立對等體

[r1]int g0/0/0

[r1-GigabitEthernet0/0/0]ip add 10.0.12.1 24

[r1-GigabitEthernet0/0/0]

[r1-GigabitEthernet0/0/0]int g0/0/1

[r1-GigabitEthernet0/0/1]ip add 10.0.13.1 24

[r1]int g0/0/2

[r1-GigabitEthernet0/0/2]ip add 192.168.100.254 24

[r1-LoopBack0]ip add 1.1.1.1 32

[r1-LoopBack0]q

## 創建對等體

[r1]bgp 100

[r1-bgp] router-id 1.1.1.1

[r1-bgp] peer 10.0.12.2 as-number 200

[r1-bgp] peer 10.0.13.2 as-number 200

[r1-bgp]network 1.1.1.1 32

[r1-bgp]network 192.168.100.0 24

r2添加端口並創建對等體

[r2]int g0/0/0

[r2-GigabitEthernet0/0/0]ip add 10.0.12.2 24

[r2-GigabitEthernet0/0/0]int g0/0/1

[r2-GigabitEthernet0/0/1]ip add 10.0.24.1 24

[r2]int LoopBack 0

[r2-LoopBack0]ip add 2.2.2.2 32

[r2]ospf 110

[r2-ospf-110]area 0

[r2-ospf-110-area-0.0.0.0]network 10.0.24.0 0.0.0.255

[r2-ospf-110-area-0.0.0.0]network 2.2.2.2 0.0.0.0

## 建立對等體

[r2]bgp 200

[r2-bgp]router-id 2.2.2.2

[r2-bgp]peer 10.0.12.1 as-number 100

[r2-bgp]peer 10.0.24.2 as-number 200

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

[r2-bgp]q

r3添加端口並創建對等體

[r3]int g0/0/0

[r3-GigabitEthernet0/0/0]ip add 10.0.13.2 24

[r3-GigabitEthernet0/0/0]int g0/0/1

[r3-GigabitEthernet0/0/1]ip add 10.0.34.1 24

[r3]int LoopBack 0

[r3-LoopBack0]ip add 3.3.3.3 32

[r3]ospf 110

[r3-ospf-110]area 0

[r3-ospf-110-area-0.0.0.0]network 10.0.34.0 0.0.0.255

[r3-ospf-110-area-0.0.0.0]network 3.3.3.3 0.0.0.0

## 建立對等體

[r3]bgp 200

[r3-bgp]router-id 3.3.3.3

[r3-bgp]peer 10.0.13.1 as-number 100

[r3-bgp]peer 10.0.34.2 as-number 200

[r3-bgp]peer 10.0.34.2 next-hop-local

r4添加端口並創建對等體

[r4]int g0/0/0

[r4-GigabitEthernet0/0/0]ip add 10.0.24.2 24

[r4-GigabitEthernet0/0/0]int g0/0/1

[r4-GigabitEthernet0/0/1]ip add 10.0.34.2 24

[r4]int g0/0/2

[r4-GigabitEthernet0/0/2]ip add 172.16.46.254 24

[r4]int LoopBack 0

[r4-LoopBack0]ip add 4.4.4.4 32

[r4]ospf 110

[r4-ospf-110]area 0

[r4-ospf-110-area-0.0.0.0]network 10.0.24.0 0.0.0.255

[r4-ospf-110-area-0.0.0.0]network 10.0.34.0 0.0.0.255

[r4-ospf-110-area-0.0.0.0]network 172.16.46.0 0.0.255.255

## 建立對等體

[r4]bgp 200

[r4-bgp]router-id 4.4.4.4

[r4-bgp]peer 10.0.24.1 as-number 200

[r4-bgp]peer 10.0.34.1 as-number 200

[r4-bgp]network 4.4.4.4 32

[r4-bgp]network 172.16.46.0 24

配置完成

在r1查看路由如下

*代表有效的路由,>代表最優的路由,只有最優的路由才會最終放入路由表中

ping通測試

修改優先級屬性來修改r1到r4的路徑

[r3]route-policy lop permit node 10

Info: New Sequence of this List.

[r3-route-policy]apply local-preference 222

[r3-route-policy]q

[r3]bgp 200

[r3-bgp]peer 10.0.34.2 route-policy lop export

[r3]q

<r3>reset bgp all # 刷新bgp路由表

修改AS-PATH屬性控制選路

自己指定經過那些AS

[R2]route-policy as permit node 10

Info: New Sequence of this List.

[R2-route-policy]apply as-path 100 200 300 additive

[R2-route-policy]quit

[R2]bgp 200

[R2-bgp]peer 10.0.24.2 route-policy as export

[R2-bgp]quit

[R2]quit

<R2>reset bgp all

修改完r4查看路由表如下

通過MED屬性控制選路

[R2]route-policy med permit node 20

Info: New Sequence of this List.

[R2-route-policy]apply cost + 500

[R2-route-policy]quit

[R2]bgp 200

[R2-bgp]peer 10.0.12.1 route-policy med export

[R2-bgp]quit

在r1查看路由表如下

注:這里只是演示怎么修改,上面也能看出,修改完不一定是最優的路徑,所以,你在公司里面一定要根據實際情況。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM