一、BGP簡(jiǎn)介
1.BGP概述
邊界網(wǎng)關(guān)協(xié)議(BGP)是運(yùn)行于 TCP 上的一種自治系統(tǒng)的路由協(xié)議
BGP(Border Gateway Protocol),我們稱(chēng)之為邊界網(wǎng)關(guān)路由協(xié)議,用于自治系統(tǒng)(Autonomous System)之間交換路由信息(交換網(wǎng)絡(luò)可達(dá)信息)
這些信息有效地構(gòu)造了 AS 互聯(lián)的拓?fù)鋱D,并由此清除了路由環(huán)路
同時(shí)在 AS 級(jí)別上可實(shí)施策略決策(選擇最佳路由的矢量協(xié)議)
2.AS概述
自治系統(tǒng)(AS),指的是在同一個(gè)組織管理下、使用相同策略的設(shè)備的集合(也就是說(shuō),對(duì)于互聯(lián)網(wǎng)來(lái)說(shuō),一個(gè)AS是一個(gè)獨(dú)立的整體網(wǎng)絡(luò))
每個(gè)AS有自己唯一的編號(hào),不同AS通過(guò)AS號(hào)區(qū)分
AS號(hào)取值范圍:1-65535,其中64512-65535是私有AS號(hào),IANA(互聯(lián)網(wǎng)數(shù)字分配機(jī)構(gòu))負(fù)責(zé)AS號(hào)的分發(fā)
二、BGP分類(lèi)
1.EBGP
運(yùn)行于不同AS之間的BGP稱(chēng)為EBGP(自治系統(tǒng)之間交換路由信息)
為了防止AS間產(chǎn)生環(huán)路,當(dāng)BGP設(shè)備接收EBGP對(duì)等體發(fā)送的路由時(shí),會(huì)將帶有本地AS號(hào)的路由丟棄
2.IBGP
運(yùn)行于同一AS內(nèi)部的BGP稱(chēng)為IBGP(在自治系統(tǒng)內(nèi)部路由器之間來(lái)同步路由信息)
為了防止AS內(nèi)產(chǎn)生環(huán)路,BGP設(shè)備不將從IBGP對(duì)等體學(xué)到的路由通告給其他IBGP對(duì)等體,并與所有IBGP對(duì)等體建立全連接
三、BGP的路由器號(hào)(Router-ID)
BGP的Router-ID是一個(gè)用于標(biāo)識(shí)BGP設(shè)備的32位值,通常是IPv4地址的形式,在BGP會(huì)話建立時(shí)發(fā)送的Open報(bào)文中攜帶
對(duì)等體之間建立BGP會(huì)話時(shí),每個(gè)BGP設(shè)備都必須有唯一的Router ID,否則對(duì)等體之間不能建立BGP連接
BGP的Router-ID在BGP網(wǎng)絡(luò)中必須是唯一的,可以采用手工配置,也可以讓設(shè)備自動(dòng)選取
缺省情況下,BGP選擇設(shè)備上的Loopback接口的IPv4地址作為BGP的Router-ID
如果設(shè)備上沒(méi)有配置Loopback接口,系統(tǒng)會(huì)選擇接口中最大的IPv4地址作為BGP的Router-ID
一旦選出Router-ID,除非發(fā)生接口地址刪除等事件,否則即使配置了更大的地址,也保持原來(lái)的Router-ID
四、BGP的特點(diǎn)
BGP使用TCP作為其傳輸層協(xié)議(監(jiān)聽(tīng)端口號(hào)為179),提高了協(xié)議的可靠性
BGP是外部路由協(xié)議,用來(lái)在AS之間傳遞數(shù)據(jù),對(duì)穩(wěn)定性要求非常高。因此用TCP協(xié)議的高可靠性來(lái)保證BGP協(xié)議的穩(wěn)定性
BGP的對(duì)等體之間必須邏輯上連通,并進(jìn)行TCP連接(目的端口號(hào)為179,本地端口號(hào)任意)
BGP對(duì)等體和IGP對(duì)等體不同,BGP對(duì)等體(Peer)是指使用TCP建立連接的兩端,而非與IGP同概念的直連鄰居,只要TCP能夠建立連接并不一定需要直連
BGP本身只負(fù)責(zé)控制路由,數(shù)據(jù)轉(zhuǎn)發(fā)依然靠靜態(tài)或IGP路由
BGP支持無(wú)類(lèi)別域間路由CIDR
路由更新時(shí),BGP只發(fā)送更新的路由,大大減少了BGP傳播路由所占用的帶寬,適用于在Internet上傳播大量的路由信息
BGP是一種增強(qiáng)的距離矢量路由協(xié)議,從設(shè)計(jì)上避免了環(huán)路的發(fā)生
AS之間:BGP通過(guò)攜帶AS_Path信息標(biāo)記途經(jīng)的AS,帶有本地AS號(hào)的路由將被丟棄,從而避免了域間產(chǎn)生環(huán)路
AS內(nèi)部:BGP在AS內(nèi)學(xué)到的路由不會(huì)再通告給AS內(nèi)的BGP鄰居,避免了AS內(nèi)產(chǎn)生環(huán)路
BGP提供了豐富的路由策略,能夠?qū)β酚蓪?shí)現(xiàn)靈活的過(guò)濾和選擇
BGP提供了防止路由振蕩的機(jī)制(路由衰減),有效提高了Internet網(wǎng)絡(luò)的穩(wěn)定性
BGP易于擴(kuò)展,能夠適應(yīng)網(wǎng)絡(luò)新的發(fā)展(ipv4單/組播、vpv4單/組播),主要是通過(guò)TLV進(jìn)行擴(kuò)展
五、BGP的工作原理
BGP對(duì)等體的建立、更新和刪除等交互過(guò)程主要有5種報(bào)文、6種狀態(tài)機(jī)和9個(gè)原則
1.BGP的5種報(bào)文
BGP對(duì)等體間通過(guò)以下5種報(bào)文進(jìn)行交互,其中Keepalive報(bào)文為周期性發(fā)送,其余報(bào)文為觸發(fā)式發(fā)送:
Open報(bào)文:用于協(xié)商BGP對(duì)等體的各項(xiàng)參數(shù),主要包括BGP版本(V4)、AS號(hào)等信息,建立BGP對(duì)等體連接
Open是TCP連接建立后發(fā)送的第一個(gè)報(bào)文
Update報(bào)文:用于在對(duì)等體之間交換路由信息
連接建立后,有路由需要發(fā)送或者路由變化時(shí),發(fā)送Update通告對(duì)端可達(dá)或者撤銷(xiāo)路由信息及路徑屬性
Notification報(bào)文:用于中斷BGP連接
當(dāng)BGP在運(yùn)行中發(fā)現(xiàn)錯(cuò)誤時(shí),發(fā)送Notification報(bào)文通告BGP對(duì)端,隨后與之相關(guān)的鄰居關(guān)系將被關(guān)閉
Keepalive報(bào)文:用于保持BGP連接(?;睿?/p>
定時(shí)發(fā)送Keepalive報(bào)文以保持BGP對(duì)等體關(guān)系的有效性
響應(yīng)收到的正確的Open報(bào)文
Route-refresh報(bào)文:用于在改變路由策略后軟復(fù)位(刷新)BGP路由表請(qǐng)求對(duì)等體重新發(fā)送路由信息
只有支持路由刷新(Route-refresh)能力的BGP設(shè)備會(huì)發(fā)送和響應(yīng)此報(bào)文
2.BGP的6種狀態(tài)機(jī)
BGP對(duì)等體的交互過(guò)程中存在6種狀態(tài)機(jī):空閑(Idle)、連接(Connect)、活躍(Active)、Open報(bào)文已發(fā)送(OpenSent)、Open報(bào)文已確認(rèn)(OpenConfirm)和連接已建立(Established)
在BGP對(duì)等體建立的過(guò)程中,通??梢?jiàn)的3個(gè)狀態(tài)是:Idle、Active和Established
Idle狀態(tài)是BGP初始狀態(tài),在Idle狀態(tài)下,BGP拒絕鄰居發(fā)送的連接請(qǐng)求
只有在收到本設(shè)備的Start事件后,BGP才開(kāi)始嘗試和其它BGP對(duì)等體進(jìn)行TCP連接,并轉(zhuǎn)至Connect狀態(tài)
在Connect狀態(tài)下,BGP啟動(dòng)連接重傳定時(shí)器(Connect Retry),等待TCP完成連接
●如果TCP連接成功,那么BGP向?qū)Φ润w發(fā)送Open報(bào)文,并轉(zhuǎn)至OpenSent狀態(tài)
●如果TCP連接失敗,那么BGP轉(zhuǎn)至Active狀態(tài),反復(fù)嘗試連接
●如果連接重傳定時(shí)器超時(shí),BGP仍沒(méi)有收到BGP對(duì)等體的響應(yīng),那么BGP繼續(xù)嘗試和其它BGP對(duì)等體進(jìn)行TCP連接,停留在Connect狀態(tài)
在Active狀態(tài)下,BGP總是在試圖建立TCP連接
●如果TCP連接成功,那么BGP向?qū)Φ润w發(fā)送Open報(bào)文,關(guān)閉連接重傳定時(shí)器,并轉(zhuǎn)至OpenSent狀態(tài)。
●如果TCP連接失敗,那么BGP停留在Active狀態(tài)。
●如果連接重傳定時(shí)器超時(shí),BGP仍沒(méi)有收到BGP對(duì)等體的響應(yīng),那么BGP轉(zhuǎn)至Connect狀態(tài)
在OpenSent狀態(tài)下,BGP等待對(duì)等體的Open報(bào)文,并對(duì)收到的Open報(bào)文中的AS號(hào)、版本號(hào)、認(rèn)證碼等進(jìn)行檢查
●如果收到的Open報(bào)文正確,那么BGP發(fā)送Keepalive報(bào)文,并轉(zhuǎn)至OpenConfirm狀態(tài)
●如果發(fā)現(xiàn)收到的Open報(bào)文有錯(cuò)誤,那么BGP發(fā)送Notification報(bào)文給對(duì)等體,并轉(zhuǎn)至Idle狀態(tài)
在OpenConfirm狀態(tài)下,BGP等待Keepalive或Notification報(bào)文
如果收到Keepalive報(bào)文,則轉(zhuǎn)至Established狀態(tài),如果收到Notification報(bào)文,則轉(zhuǎn)至Idle狀態(tài)
在Established狀態(tài)下,BGP可以和對(duì)等體交換Update、Keepalive、Route-refresh報(bào)文和Notification報(bào)文。
●如果收到正確的Update或Keepalive報(bào)文,那么BGP就認(rèn)為對(duì)端處于正常運(yùn)行狀態(tài),將保持BGP連接。
●如果收到錯(cuò)誤的Update或Keepalive報(bào)文,那么BGP發(fā)送Notification報(bào)文通知對(duì)端,并轉(zhuǎn)至Idle狀態(tài)
●Route-refresh報(bào)文不會(huì)改變BGP狀態(tài)
●如果收到Notification報(bào)文,那么BGP轉(zhuǎn)至Idle狀態(tài)
●如果收到TCP拆鏈通知,那么BGP斷開(kāi)連接,轉(zhuǎn)至Idle狀態(tài)
3.BGP的9個(gè)原則(對(duì)等體之間的交互原則)
BGP設(shè)備將最優(yōu)路由加入BGP路由表,形成BGP路由。BGP設(shè)備與對(duì)等體建立鄰居關(guān)系后,采取以下交互原則:
從IBGP對(duì)等體獲得的BGP路由,BGP設(shè)備只發(fā)布給它的EBGP對(duì)等體
從EBGP對(duì)等體獲得的BGP路由,BGP設(shè)備發(fā)布給它所有EBGP和IBGP對(duì)等體
當(dāng)存在多條到達(dá)同一目的地址的有效路由時(shí),BGP設(shè)備只將最優(yōu)路由發(fā)布給對(duì)等體
路由更新時(shí),BGP設(shè)備只發(fā)送更新的BGP路由
所有對(duì)等體發(fā)送的路由,BGP設(shè)備都會(huì)接收
所有EBGP對(duì)等體在傳遞過(guò)程中下一跳改變
所有IBGP對(duì)等體在傳遞過(guò)程中下一跳不變
默認(rèn)EBGP傳遞時(shí)TTL值為1
默認(rèn)IBGP傳遞時(shí)TTL值為255
4.建立對(duì)等體注意點(diǎn)
直連建立對(duì)等體需要注意的點(diǎn)
建立IBGP對(duì)等體時(shí)要讓下一跳可達(dá),處于邊界的IBGP對(duì)等體需要將下一跳指向自己,這樣才能建立IBGP對(duì)等體
用環(huán)回口建立鄰居需要注意的點(diǎn)
需要修改更新源,默認(rèn)更新源是物理口,需要修改成環(huán)回口,建立IBGP對(duì)等體時(shí)要保障下一跳可達(dá),處于邊界的IBGP對(duì)等體需要將下一跳指向自己,這樣才能建立IBGP對(duì)等體
建立EBGP對(duì)等體時(shí)因?yàn)镋BGP只能傳一跳,因而,在建立EBGP對(duì)等體時(shí),需要修改EBGP多跳的跳數(shù)為2以上(自己環(huán)回到對(duì)端環(huán)回是兩跳,默認(rèn)一跳)
關(guān)于為什么要用環(huán)回口建鄰居
原因是環(huán)回口穩(wěn)定,只要路由器啟動(dòng)著,環(huán)回口就不DOWN,而物理鏈路可能會(huì)受線路或者接口等因素的影響導(dǎo)致對(duì)等體關(guān)系有問(wèn)題,因而一般BGP建立對(duì)等體都是環(huán)回口來(lái)建
審核編輯:郭婷
-
互聯(lián)網(wǎng)
+關(guān)注
關(guān)注
55文章
11249瀏覽量
106388 -
路由器
+關(guān)注
關(guān)注
22文章
3837瀏覽量
116675
原文標(biāo)題:BGP理論難理解?別怕,這篇文章給你總結(jié)的明明白白!
文章出處:【微信號(hào):網(wǎng)絡(luò)技術(shù)干貨圈,微信公眾號(hào):網(wǎng)絡(luò)技術(shù)干貨圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
Path Bandwidth Extended Community:藏在BGP屬性里的智能路由革命

動(dòng)態(tài)BGP與靜態(tài)BGP的區(qū)別?
Type-C PD Sink快充協(xié)議芯片XSP01E的特點(diǎn)及工作原理

確保藍(lán)牙網(wǎng)關(guān)穩(wěn)定連接的8個(gè)核心方法
何時(shí)選擇OSPF作為路由協(xié)議

多線BGP技術(shù)通過(guò)哪幾種方式提升網(wǎng)絡(luò)穩(wěn)定性?
芯科科技Wi-SUN邊界路由器解析
快充協(xié)議的工作原理及應(yīng)用場(chǎng)景

天拓四方:Modbus協(xié)議網(wǎng)關(guān)工作原理及功能解析
MQTT協(xié)議網(wǎng)關(guān)的工作原理及功能特性

網(wǎng)關(guān)和路由器的對(duì)比分析
UART協(xié)議的工作原理和應(yīng)用場(chǎng)景
諧振電路的工作原理和特點(diǎn)
華為設(shè)備中的BGP命令詳解
利用Modbus轉(zhuǎn)OPC UA協(xié)議網(wǎng)關(guān)實(shí)現(xiàn)Modbus設(shè)備無(wú)縫通信

評(píng)論