華為 BGP協(xié)議基礎(chǔ)配置與總結(jié)
哈嘍,大家好!我是藝博東 ,一個思科出身專注于華為的網(wǎng)工;好了,話不多說,我們直接進(jìn)入正題。

點(diǎn)擊上方“藍(lán)字”關(guān)注我們
文章目錄
一、BGP概述
二、拓?fù)?/p>
三、基礎(chǔ)配置
四、BGP與IGP比較
五、BGP的數(shù)據(jù)包
六、BGP的鄰居狀態(tài)機(jī)
七、BGP計(jì)時器
八、BGP的更新源
九、BGP的路由生成
十、BGP的路由通告

BGP的鄰居建立很關(guān)鍵,涉及環(huán)回口地址建立bgp鄰居就需要指定更新源,單一的直連物理接口建立bgp鄰居時不需要指定更新源的。
BGP的防環(huán)屬性是影響路由更新傳的重要因素,一定要牢記BGP的防環(huán)策略。
IBGP防環(huán)是從IBGP鄰居學(xué)到的路由不再傳遞給其他的IBGP鄰居注意這里是IBGP鄰居,EBGP鄰居不受影響。
IBGP之間路由傳遞時要更改下一跳屬性,使得從EBGP鄰居學(xué)到的路由可以順利在IBGP鄰居之間傳遞。
一、BGP概述
1、簡介:
BGP-Border Gateway Protocol邊界網(wǎng)關(guān)協(xié)議,是一種在自治系統(tǒng)AS(Autononmous System)之間傳遞并選擇最佳路由的高級矢量路由協(xié)議。
路由協(xié)議通常分為內(nèi)部網(wǎng)關(guān)協(xié)議(IGP)和外部網(wǎng)關(guān)協(xié)議(EGP)兩大類。
BGP雖然是一種動態(tài)路由協(xié)議,但它實(shí)際上本身并不產(chǎn)生路由、不發(fā)現(xiàn)路由、不計(jì)算路由,其主要功能是完成最佳路由的選擇并在BGP鄰居之間進(jìn)行最佳路由的傳遞。BGP選擇了TCP作為其傳輸協(xié)議,端口號是179。
BGP的鄰居關(guān)系分為IBGP和EBGP兩種:兩臺BGP路由器位于同一AS時,它們的鄰居關(guān)系為IBGP鄰居關(guān)系;兩臺BGP路由器位于不同的AS時,它們的鄰居關(guān)系為EBGP鄰居關(guān)系。BGP沒有自動建立鄰居關(guān)系的能力,鄰居關(guān)系必須通過手動配置來建立。
2、版本:
(1)BGP-1(RFC1105);
(2)BGP-2(RFC1163);
(3)BGP-3(RFC1267);
(4)BGP-4(RFC1771,1994年開始使用);
(5)BGP-4(RFC4271,2006年后單播IPv4網(wǎng)絡(luò)使用),這個版本是當(dāng)前的BGP版本;
(6)MP-BGP(RFC4760)供其他網(wǎng)絡(luò)使用;
(7)BGP-4+提供對IPv6單播網(wǎng)絡(luò)的支持;
注意:
華為路由器運(yùn)行的BGP特性同時支持BGP-4,BGP-4+和MP-BGP。即在BGP下的配置同時對這三個版本生效。默認(rèn)情況在BGP IPv4單播地址族視圖下的配置可以在BGP視圖配置,但只對BGP-4生效。
3、特性:
(1)BGP擁有豐富的選路參考屬性,靈活組合可以實(shí)現(xiàn)路由的優(yōu)選和避免路由環(huán)路,能夠高效率的傳遞路由和維護(hù)大量的路由信息;
(2)BGP提供了豐富的路由策略,能夠靈活的進(jìn)行路由選路,并且能指導(dǎo)鄰居按策略發(fā)布路由;
(3)BGP提供了路由聚合和路由衰減功能,用于防止路由振蕩,有效提高網(wǎng)絡(luò)的穩(wěn)定性;
(4)BGP是一種距離矢量協(xié)議,將AS作為一個節(jié)點(diǎn)來計(jì)算;IGP協(xié)議以一個路由器為節(jié)點(diǎn);
(5)BGP使用TCP(端口號179)作為底層傳輸協(xié)議,與每個BGP對等體形成獨(dú)特的基于單播的連接 并支持BGP于BFD聯(lián)動,提高了網(wǎng)絡(luò)的可靠性。
4、AS
(1)BGP的AS是指在一個組織機(jī)構(gòu)管轄下?lián)碛邢嗤x路策略的IP網(wǎng)絡(luò),BGP網(wǎng)絡(luò)中的每個AS都被分配了一個唯一的AS號,用于區(qū)域不同的AS。
(2)BGP的AS號分為2字節(jié)和4字節(jié)的AS號,
2字節(jié)AS號范圍1----65535的整數(shù),
4字節(jié)AS號范圍2----4 294 967 295的整數(shù)(可以有不同的表示格式)
RFC 5389規(guī)定在2字節(jié)的AS號中;1–64511是公網(wǎng)AS,64512—65534為私網(wǎng)AS,65535保留用于特殊用途。
二、拓?fù)?/p>

三、基礎(chǔ)配置

AR-3與AR-4通過直連地址建立EBGP鄰居;
AR-4:dis bgp peer
AR-3:dis bgp peer
AR-3配置類似
在AR-1的BGP路由表查看4.4.4.4/32路由前面帶“下一跳可達(dá)”
AR-1的BGP路由表信息
AR-1和AR-3 BGP配置內(nèi)容(dis cu se bgp)

在設(shè)備AR-3、4配置ospf協(xié)議時
AR-1的BGP路由表信息:
AR-1:dis bgp routing-table
AR-1: ping -c 3 -a 1.1.1.1 4.4.4.4
IBGP不用配置多跳,可以用loopback建立鄰居。EBGP不是直連接口建立鄰居,需要指多跳。
四、BGP與IGP比較
IGP協(xié)議特點(diǎn):
(1)在AS之內(nèi)使用的協(xié)議,主要用于發(fā)現(xiàn)和計(jì)算路由;
(2)IGP的路由收斂都相對迅速。工作在直連鄰居間;
(3)單一的度量值,列如OSPF和IS-IS當(dāng)然鏈路開銷cost,RIP的跳數(shù);
(4)適用于中小型網(wǎng)絡(luò)。
BGP協(xié)議特點(diǎn):
(1)BGP作為外部網(wǎng)關(guān)協(xié)議,著眼于控制路由的傳播和選擇最佳路由;
(2)BGP可以工作在非直連鄰居之間,使用TCP作為其傳輸層協(xié)議(端口號179);
(3)BGP支持五類別域間路由,路由更新時只發(fā)送更新的路由,大大減少了BGP傳播路由所占用的帶寬, 適用在Internet上傳播大量的路由信息;
(4)BGP提供了豐富的路由策略,能夠?qū)崿F(xiàn)路由的過濾和選擇;
(5)BGP易于擴(kuò)展,能夠適應(yīng)網(wǎng)絡(luò)新技術(shù)的發(fā)展。適用于大型,超大型運(yùn)營商網(wǎng)絡(luò)。
五、BGP的數(shù)據(jù)包
BGP數(shù)據(jù)包都由2部分組成,BGP報(bào)文頭部+類型報(bào)文本體
1、BGP報(bào)文頭部:
Marker 16字節(jié):用于檢測BGP對等體之間同步丟失情況;在支持消息驗(yàn)證功能的情況下進(jìn)行消息驗(yàn)證;
五驗(yàn)證時字段全為1(16 進(jìn)制顯示全FFFF)
Length 2字節(jié):長度,表示此BGP報(bào)文的總長度(包含頭部,總長度在19–4096字節(jié)之間)
Type 1字節(jié):類型值,標(biāo)識本BGP報(bào)文的類型(open 1;update 2;Notification 3;keepalive 4;route-refresh 5)。
2、Open報(bào)文(類型1)
(1)作用:
TCP 會話建立起來自以后,兩個鄰居都要發(fā)送一個 Open 報(bào)文,每個鄰居都使用該報(bào)文標(biāo)識自己, 并且規(guī)定自己的 BGP 運(yùn)行參數(shù)。如果 open 消息被接受,則回送一條 keepalive 消息進(jìn)行確認(rèn), 確認(rèn)后就能發(fā)送 update 。
(2)內(nèi)容:
Version 8bit :BGP版本號,BGP對等體的使用的版本,默認(rèn)為BGP-4,如果鄰居運(yùn)行版本低于本設(shè)備,會拒絕V-4信息, 本設(shè)備將發(fā)送低版本信息直至協(xié)商成功。
My AS 號 16bit :本地 AS 號(決定雙方建立什么樣的BGP鄰居;通AS建立IBGP;不同AS建立EBGP)
Hold Time 16bit:對等體相互協(xié)商及保存鄰居最大時間,默認(rèn)為Keepalive時間的3倍-180S
(如果兩端hold time時間不一致,將會采用較短時間作為保存時間;最小可以為0,這種情況BGP連接被認(rèn)為永遠(yuǎn)是UP的,不再發(fā)送Keepalive報(bào)文來檢測鄰居是否失效)
BGP Identifer 32bit:用來標(biāo)識發(fā)送此Open報(bào)文設(shè)備的Router-ID(ROUTER-ID 和 OSPF 選取 routerID 的方式一致)
Optional Parameters Length 8bit:標(biāo)識下面的可選參數(shù)的總長度(如果為0,那么本報(bào)文中沒有包含可選參數(shù)字段)
Optional Parameters 可變長大小:用于BGP鄰居會話協(xié)商過程中所使用的可選列表;每一個參數(shù)為一個
(參數(shù)類型參數(shù)長度,參數(shù)值)三元組,用于公布一些可選功能的支持,如多協(xié)議擴(kuò)展,路由刷新能力, 四字節(jié)AS號等能力。
3、KEEPALIVE 消息(類型4)
(1)作用:
如果路由器接受了鄰居在 OPEN 消息中的參數(shù),就會應(yīng)答一個 keeplive 消息,并且在此后 1/3 的 holdtime(但不小于 1S)為周期發(fā)送該消息,華為設(shè)備默認(rèn) 60S一發(fā),保持時間默認(rèn)180S。如果協(xié)商后保持時間為 0,標(biāo)識此鄰居永遠(yuǎn)UP,則不發(fā)送 keepalive 保活消息。
(2)內(nèi)容:
只包含BGP的消息頭部?
Marker 16字節(jié):用于檢測BGP對等體之間同步丟失情況;在支持消息驗(yàn)證功能的情況下進(jìn)行消息驗(yàn)證;
五驗(yàn)證時字段全為1(16 進(jìn)制顯示全FFFF)
Length 2字節(jié):長度,表示此BGP報(bào)文的總長度(包含頭部,總長度在19–4096字節(jié)之間)
Type 1字節(jié):類型值,標(biāo)識本BGP報(bào)文的類型(open 1;update 2;Notification 3;keepalive 4;route-refresh 5)。
(3)其他:
KEEPALIVE 消息實(shí)際上彌補(bǔ)了 TCP 無法確認(rèn)對端存活情況的缺陷;
KEEPALIVE 消息僅包含 19bytes 的 BGP 頭部,除此之外不包含任何其他數(shù)據(jù)。
4、Update報(bào)文(類型2)
(1)作用:
當(dāng)BGP對等體之間成功建立會話后利用Update報(bào)文進(jìn)行路由信息的交換;Update報(bào)文既用來通告可用路由信息,也可以通告不可達(dá)需要撤銷的路由信息。每條update 消息只描述一類具有相同路徑屬性的可達(dá)路由;可達(dá)路由信息放在NLRI字段中同時Update報(bào)文可以攜帶多條不可達(dá)路由信息;不可達(dá)路由信息放在Withdrawn Router字段中。
(2)內(nèi)容:
Withdrawn Routes Length 2字節(jié):撤銷路由長度,標(biāo)識不可達(dá)路由的的長度,為0表示此字段 沒有任何數(shù)據(jù),本報(bào)文不存在需要撤銷的路由;
Withdrawn Routes :撤銷路由,與NLRI格式相同,同樣是前綴長度+前綴組合;
Total Path Attribute Length 2字節(jié):路徑屬性字段長度。如果為0表示沒有下面的Path attributes,本報(bào)文沒有通告可用路由信息;
Path attributes 可變長:路徑屬性,每個路徑屬性都由可變長的三元組(屬性類型;屬性長度;屬性值),為BGP提供最短路徑,檢查路由環(huán)路以及決定路由策略的信息;
Network Layer Reachability Information (NLRI) 可變長度:標(biāo)識網(wǎng)絡(luò)層可達(dá)信息,包含要向?qū)Φ润w通告的每條可達(dá)路由的前綴(IPv4的地址前綴),和前綴長度(IPv4的掩碼)。
5、Notification 報(bào)文(類型3)
(1)作用:
當(dāng)BGP檢測到錯誤狀態(tài)時,就會向?qū)Φ润w發(fā)出Notification通知報(bào)文,之后BGP連接會立即中斷;例如對等體之間的AS號非法,認(rèn)證失敗,鄰居地址不可達(dá)等。
(2)內(nèi)容:
Error code 1字節(jié):錯誤碼;描述錯誤類型,每個錯誤都使用唯一的錯誤碼來表示;
Errsubcode 1字節(jié):錯誤子碼;描述錯誤類型的詳細(xì)信息;
Data 可變長字段:包含了與錯誤有關(guān)的數(shù)據(jù),用來診斷錯誤原因,比如非法的AS號,認(rèn)證失敗等。
6、Route-refresh報(bào)文(類型5)
(1)作用:
路由刷新報(bào)文用來要求對等體重新發(fā)送指定地址族的路由信息;
(2)內(nèi)容:
AFI Address Family Identifier 2字節(jié):地址族標(biāo)識,用來標(biāo)識所采用的地址族類型;
Res 1字節(jié):保留
SAFI:Subsequent Address Family Identifier 1字節(jié):子地址族標(biāo)識,用于標(biāo)識地址族的類型。
六、BGP的鄰居狀態(tài)機(jī)
1、Idle狀態(tài)
(1)BGP空閑狀態(tài),在Idle狀態(tài)下BGP拒絕鄰居發(fā)送的連接請求,此時等待由BGP系統(tǒng)發(fā)出的Start事件;
(2)Start(管理員配置鄰居)事件發(fā)生后,BGP會對自己的資源進(jìn)行初始化,重置連接計(jì)時器(Connect Retry 默認(rèn)32S)發(fā)起TCP 連接請求,并開始偵聽遠(yuǎn)端對等體發(fā)起的連接端口,并轉(zhuǎn)至Connect狀態(tài)。
1.1. 停留在此狀態(tài)的原因:
(1)本BGP設(shè)備沒有去往對等體的路由;
(2)收到來自鄰居的Notification報(bào)文觸發(fā)Notification報(bào)文條件(再一個重置計(jì)時器后重新建立BGP的TCP連接,即重新發(fā)送用于BGP的TCP連接報(bào)文)
a. AS號錯誤;
b0 R-ID重復(fù);
c. 認(rèn)證失敗;
d. hold time連接超時(中間設(shè)備或者目標(biāo)設(shè)備策略限制)
e. 其他錯誤原因。
2、Connect狀態(tài)
在Connect狀態(tài)下,BGP啟動連接重傳定時器,等待TCP完成連接!
(1)如果TCP連接成功,那么BGP會向?qū)Φ润w發(fā)送Open報(bào)文,并轉(zhuǎn)至OpenSent狀態(tài);
(2)如果TCP連接失敗,那么BGP轉(zhuǎn)至Active狀態(tài);
(3)如果連接重傳定時器超時,BGP任沒有收到BGP對等體的響應(yīng),那么BGP繼續(xù)嘗試TCP連接,停留在Connect狀態(tài)。
2.1. 停留在Connect狀態(tài)的原因:
(1)與BGP對等體TCP連接超時!
a. 中間設(shè)備沒有本設(shè)備去往對等體的路由;
b. 中間設(shè)備拒絕了本BGP設(shè)備發(fā)出的BGP相關(guān)數(shù)據(jù)(過濾了本設(shè)備IP流量或者TCP流量或者TCP-179端口數(shù)據(jù))
c. 對等體設(shè)備未開啟BGP(TCP-179端口處于關(guān)閉狀態(tài))
3、Active
在Active狀態(tài)下,BGP總是試圖建立TCP連接!
(1)如果TCP連接成功,那么BGP向?qū)Φ润w發(fā)送Open報(bào)文,關(guān)閉連接重傳定時器,并轉(zhuǎn)至OpenSent;
(2)如果TCP連接失敗,停留在Active狀態(tài);
(3)如果連接重傳定時器超時,任沒有收到BGP對等體的響應(yīng),那么BGP轉(zhuǎn)至Connect狀態(tài)。
3.1. 停留在Active狀態(tài)的原因:
(1)與BGP對等體TCP失敗;
(2)本BGP設(shè)備配置錯誤的對等體地址。
4、OpenSent
在OpenSent狀態(tài),BGP等對等體的Open報(bào)文,并對收到的Open報(bào)文中的AS號,版本號,認(rèn)證信息等進(jìn)行檢查!
(1)如果收到的Open報(bào)文正確,那么BGP發(fā)送Keepalive報(bào)文,且重置Keepalive定時器,并轉(zhuǎn)至OpenConfirm狀態(tài);
(2)如果發(fā)現(xiàn)收到的Open報(bào)文有錯誤,那么BGP發(fā)送Notification報(bào)文給對等體。并轉(zhuǎn)至Idle狀態(tài)。
4.1. 停留在OpenSent狀態(tài)的原因:
(1)對等體發(fā)送的Open報(bào)文中的AS號與本BGP設(shè)備配置不一致(本端BGP配置時鄰居的AS號配置錯誤)
5、OpenConfirm
在OpenConfirm狀態(tài)下,BGP等待Keepalive或Notification報(bào)文;
(1)如果收到Keepalive報(bào)文,則轉(zhuǎn)至Established狀態(tài)(BGP鄰居的最終狀態(tài))
(2)如果收到Notification報(bào)文,則轉(zhuǎn)至Idle狀態(tài)。
5.1. 停留在OpenConfirm狀態(tài)的原因:
(1)BGP的TCP建立成功,對等體未發(fā)送Keepalive報(bào)文(鄰居設(shè)備BGP配置對本BGP的AS號錯誤配置)
6、Established狀態(tài)
在Established狀態(tài)下,BGP對等體之間交互Update,Keepalive,Route-refresh報(bào)文和Notification報(bào)文!
(1)如果收到正確的Update或Keepalive報(bào)文,那么BGP就人為對端處于正常運(yùn)行狀態(tài),保持BGP連接;
(2)如果收到錯誤的就發(fā)送Notification報(bào)文告知對端,并轉(zhuǎn)至Idle狀態(tài);
(3)Route-reFresh報(bào)文不會改變BGP狀態(tài);
(4)如果收到Notification報(bào)文,那么BGP轉(zhuǎn)至Idle狀態(tài);
(5)如果收到TCP拆除鏈接通知,那么BGP將斷開連接,轉(zhuǎn)至Idle狀態(tài)。
七、BGP計(jì)時器
1、Connect Retry重置連接計(jì)時器,默認(rèn)32S;
2、Keepalive保持時間,默認(rèn)60S;
3、Hold time 默認(rèn)為Keeplive時間的三倍(180S),保持時間可以改大,但是不能小于Keepalive的三倍。如果兩端 Holdtime 不一致,雙方接受較小的的時間;
4、timer keepalive 0 hold 0 ,當(dāng)檢測時間和保持時間都為0時表示本BGP設(shè)備認(rèn)為鄰居永遠(yuǎn)UP;
5、BGP 不會周期性更新路由,僅在需要的時候更新,由于公網(wǎng)的路由可能的動蕩的,因此觸發(fā)更新也會有一定的等待時間,IBGP peer 為 5S;EBGP peer 為 30S,而在這段時間內(nèi),BGP 仍可以進(jìn)行路由信息的搜集,所以 BGP收斂會比慢。
八、BGP的更新源
1、BGP 無法像 IGP 那樣自動發(fā)現(xiàn)鄰居,而需手工指定,鄰居的 IP 由本地的 peer 命令指定,而該 BGP 連接的源 IP(更新源)默認(rèn)情況下為流量的出接口 IP。注意只有當(dāng)本地配置的鄰居 IP 與鄰居用于 BGP 連接建立的源 IP 相同時,BGP 連接才能被正常建立;
2、IBGP 鄰居之間建立鄰居,為了保證鄰居關(guān)系的穩(wěn)定,一般使用 loopback 接口建立,這是因?yàn)槿绻褂梦锢斫涌冢敲次锢斫涌诠收希従雨P(guān)系就 DOWN 了,并且在 AS 內(nèi)部,路徑可能是冗余的,鄰居之間的 LOOPBACK 路由可通過IGP獲取并提供一定的路由冗余性(當(dāng)物理線路也存在冗余的情況下)注意:在使用loopback接口建立BGP鄰居關(guān)系時,務(wù)必注意還需要指定更新源 IP;
3、如果是建立 EBGP 鄰居關(guān)系,因?yàn)?EBGP 鄰居關(guān)系的建立會檢查直連路由,并且默認(rèn) TTL=1, 而這個時候?qū)嶋H上loopback 口到 對方loopback 口至少 2 跳 ,那么這個時候 還需要兩者配置 peer x.x.x.x ebgp-max-hop 。
九、BGP的路由生成
1、通過手動宣告,只能將本BGP設(shè)備路由表存在的路由條目通告出去;
2、通過路由引入,將IGP或者靜態(tài),直連路由的重分發(fā)進(jìn)來。
十、BGP的路由通告
1、當(dāng)存在多條路徑時,BGP Router 只選取最優(yōu)的路由(BEST)來使用(沒有負(fù)載均衡的情況下);
2、BGP 只把自己使用的路由,也就是自己認(rèn)為 Best 的路由傳遞給 BGP peer;
3、BGP Speaker 從 EBGP 獲得的路由會向它所有 BGP 相鄰體通告(包括 EBGP 和 IBGP);
4、BGP Speaker 從 IBGP 獲得的路由不向它的 IBGP 相鄰體通告。(避免環(huán)路,水平分割;存在路由 RR 的情況除外)
OK
良藥苦口利于病,忠言逆耳利于行。

好了這期就到這里了,如果你喜歡這篇文章的話,請點(diǎn)贊評論分享收藏,如果你還能點(diǎn)擊關(guān)注,那真的是對我最大的鼓勵。謝謝大家,下期見!

往期推薦:
2021-03-08
2021-03-04
2021-02-15
關(guān)注 藝博東 公眾號,與你一起學(xué)習(xí)共同進(jìn)步。秀秀秀秀秀~

點(diǎn)贊在看養(yǎng)成習(xí)慣
