BGP 邊界網(wǎng)關(guān)協(xié)議

2020-06-12 16:28 更新

一、簡(jiǎn)介

1.簡(jiǎn)介

邊界網(wǎng)關(guān)協(xié)議(BGP)是運(yùn)行于 TCP 上的一種自治系統(tǒng)的路由協(xié)議。 BGP 是唯一一個(gè)用來(lái)處理像因特網(wǎng)大小的網(wǎng)絡(luò)的協(xié)議,也是唯一能夠妥善處理好不相關(guān)路由域間的多路連接的協(xié)議。 BGP 構(gòu)建在 EGP 的經(jīng)驗(yàn)之上。 BGP 系統(tǒng)的主要功能是和其他的 BGP 系統(tǒng)交換網(wǎng)絡(luò)可達(dá)信息。網(wǎng)絡(luò)可達(dá)信息包括列出的自治系統(tǒng)(AS)的信息。這些信息有效地構(gòu)造了 AS 互聯(lián)的拓樸圖并由此清除了路由環(huán)路,同時(shí)在 AS 級(jí)別上可實(shí)施策略決策。

2.作用

BGP用于在不同的自治系統(tǒng)(AS)之間交換路由信息。當(dāng)兩個(gè)AS需要交換路由信息時(shí),每個(gè)AS都必須指定一個(gè)運(yùn)行BGP的節(jié)點(diǎn),來(lái)代表AS與其他的AS交換路由信息。這個(gè)節(jié)點(diǎn)可以是一個(gè)主機(jī)。但通常是路由器來(lái)執(zhí)行BGP。兩個(gè)AS中利用BGP交換信息的路由器也被稱為邊界網(wǎng)關(guān)(Border Gateway)或邊界路由器(Border Router)。

由于可能與不同的AS相連,在一個(gè)AS內(nèi)部可能存在多個(gè)運(yùn)行BGP的邊界路由器。同一個(gè)自治系統(tǒng)(AS)中的兩個(gè)或多個(gè)對(duì)等實(shí)體之間運(yùn)行的BGP 被稱為 IBGP(Internal/Interior BGP)。歸屬不同的AS的對(duì)等實(shí)體之間運(yùn)行的BGP稱為EBGP (External/Exterior BGP)。在AS邊界上與其他AS交換信息的路由器被稱作邊界路由器(border/edge router)。在互聯(lián)網(wǎng)操作系統(tǒng)(Cisco IOS)中,IBGP通告的路由的距離為200,優(yōu)先級(jí)比EBGP和任何內(nèi)部網(wǎng)關(guān)協(xié)議(IGP)通告的路由都低。其他的路由器實(shí)現(xiàn)中,優(yōu)先級(jí)順序也是EBGP高于IGP,而IGP又高于IBGP。

3.BGP基本概念:

自治系統(tǒng)ASAutonomous System: AS是指在一個(gè)實(shí)體管轄下的擁有相同選路策略的IP網(wǎng)絡(luò)。BGP網(wǎng)絡(luò)中的每個(gè)AS都被分配一個(gè)唯一的AS號(hào),用于區(qū)分不同的AS。AS號(hào)分為2字節(jié)AS號(hào)和4字節(jié)AS號(hào),其中2字節(jié)AS號(hào)的范圍為1至65535,4字節(jié)AS號(hào)的范圍為1至4294967295。支持4字節(jié)AS號(hào)的設(shè)備能夠與支持2字節(jié)AS號(hào)的設(shè)備兼容。 BGP分類: BGP按照運(yùn)行方式分為EBGP(External/Exterior BGP)和IBGP(Internal/Interior BGP)。

EBGP:運(yùn)行于不同AS之間的BGP稱為EBGP。為了防止AS間產(chǎn)生環(huán)路,當(dāng)BGP設(shè)備接收EBGP對(duì)等體發(fā)送的路由時(shí),會(huì)將帶有本地AS號(hào)的路由丟棄。 IBGP:運(yùn)行于同一AS內(nèi)部的BGP稱為IBGP。為了防止AS內(nèi)產(chǎn)生環(huán)路,BGP設(shè)備不將從IBGP對(duì)等體學(xué)到的路由通告給其他IBGP對(duì)等體,并與所有IBGP對(duì)等體建立全連接。為了解決IBGP對(duì)等體的連接數(shù)量太多的問(wèn)題,BGP設(shè)計(jì)了路由反射器和BGP聯(lián)盟。

二、報(bào)文

1.報(bào)文格式

2.BGP使用如下四種消息類型:

Open消息:Open消息是TCP連接建立后發(fā)送的第一個(gè)消息,用于建立BGP對(duì)等體之間的連接關(guān)系。 Keepalive消息:BGP會(huì)周期性地向?qū)Φ润w發(fā)出Keepalive消息,用來(lái)保持連接的有效性。 Update消息:Update消息用于在對(duì)等體之間交換路由信息。它既可以發(fā)布可達(dá)路由信息,也可以撤銷(xiāo)不可達(dá)路由信息。 Notification消息:當(dāng)BGP檢測(cè)到錯(cuò)誤狀態(tài)時(shí),就向?qū)Φ润w發(fā)出Notification消息,之后BGP連接會(huì)立即中斷。

BGP鄰居建立中的狀態(tài)和過(guò)程如下:

  1. 空閑(Idle):為初始狀態(tài),當(dāng)協(xié)議激活后開(kāi)始初始化,復(fù)位計(jì)時(shí)器,并發(fā)起第一個(gè)TCP連接,并開(kāi)始傾聽(tīng)遠(yuǎn)程對(duì)等體所發(fā)起的連接,同時(shí)轉(zhuǎn)向Connect狀態(tài)。。
  2. 連接(Connect):開(kāi)始TCP連接并等待TCP連接成功的消息。如果TCP連接成功,則進(jìn)入OpenSent狀態(tài);如果TCP連接失敗,進(jìn)入Active狀態(tài)。
  3. 行動(dòng)(Active):BGP總是試圖建立TCP連接,若連接計(jì)時(shí)器超時(shí),則退回到Connect狀態(tài),TCP連接成功就轉(zhuǎn)為Open sent狀態(tài)。
  4. OPEN發(fā)送(Open sent):TCP連接已建立,自己已發(fā)送第一個(gè)OPEN報(bào)文,等待接收對(duì)方的Open報(bào)文,并對(duì)報(bào)文進(jìn)行檢查,若發(fā)現(xiàn)錯(cuò)誤則發(fā)送Notification消息報(bào)文并退回到Idle狀態(tài)。若檢查無(wú)誤則發(fā)送Keepalive消息報(bào)文,Keepalive計(jì)時(shí)器開(kāi)始計(jì)時(shí),并轉(zhuǎn)為Open confirm狀態(tài)。
  5. OPEN證實(shí)(Open confirm):BGP等待Keepalive報(bào)文,同時(shí)復(fù)位保持計(jì)時(shí)器。如果收到了Keepalive報(bào)文,就轉(zhuǎn)為Established狀態(tài),鄰居關(guān)系協(xié)商完成。如果系統(tǒng)收到一條更新或Keepalive消息,它將重新啟動(dòng)保持計(jì)時(shí)器;如果收到Notification消息,BGP就退回到空閑狀態(tài)。
  6. 已建立(Established):即建立了鄰居(對(duì)等體)關(guān)系,路由器將和鄰居交換Update報(bào)文,同時(shí)復(fù)位保持計(jì)時(shí)器。

三、BGP路由通告原則

BGP在進(jìn)行路由通告的時(shí)候,需要遵循以下原則:

  1. 多條路徑時(shí),BGP Speaker只選最優(yōu)的給自己使用(負(fù)載均衡和FRR除外)。
  2. BGP Speaker只把自己使用的路由(最優(yōu)路由)通告給相鄰體。
  3. BGP Speaker從EBGP獲得的路由會(huì)向自己所有BGP相鄰體通告(包括EBGP和IBGP)。
  4. BGP Speaker從IBGP獲得的路由不向自己的IBGP相鄰體通告(反射器除外)。
  5. BGP Speaker從IBGP獲得的路由是否通告給自己的EBGP相鄰體要根據(jù)IGP和BGP同步的情況來(lái)決定。
  6. 當(dāng)收到對(duì)端的refresh報(bào)文并且本端鄰居支持refresh能力,BGP Speaker將把自己所 有BGP路由通告給對(duì)等體。
  7. GR過(guò)程中,主備倒換方在GR結(jié)束時(shí)BGP Speaker會(huì)把自己所有BGP路由通告給對(duì)等體。
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)