前期回顧:
BGPTCP三次握手后發(fā)送的報(bào)文:
open報(bào)文:
鄰居建立和能力參數(shù)協(xié)商乒验,(至少有一個(gè)地址簇能力要一致)
keepalive報(bào)文:
默認(rèn)每隔60s周期性發(fā)送,如果180s沒(méi)有收到keepalive報(bào)文郁油,則認(rèn)為BGP鄰居失效
斷開(kāi)TCP連接。
update報(bào)文:
BGP路由傳遞以及撤銷
Route-refresh報(bào)文:
用于手動(dòng)進(jìn)行BGP路由的觸發(fā)更新,或者用于ORF功能。
Notificationn報(bào)文:
通知報(bào)文够坐,用于報(bào)錯(cuò),收到該報(bào)文會(huì)斷開(kāi)TCP連接崖面。
BGP的狀態(tài)機(jī):
Idle:
產(chǎn)生原因:
1元咙、沒(méi)有去往鄰居地址的路由,無(wú)法發(fā)起TCP三次握手嘶朱,也無(wú)法完成TCP的三次握手。
2光酣、發(fā)起TCP連接請(qǐng)求后被對(duì)端拒絕疏遏,發(fā)起TCP報(bào)文的源地址,不是本端指定的鄰居地址救军。
Connect(連接):
產(chǎn)生原因:發(fā)起TCP連接路由器财异,無(wú)法收到鄰居的TCP回應(yīng)報(bào)文時(shí)會(huì)變?yōu)閏onnect狀態(tài),并且5s后重傳一次TCP連接請(qǐng)求唱遭,再等待32s左右戳寸,重新發(fā)起TCP連接請(qǐng)求。
Active狀態(tài):
產(chǎn)生原因:
本節(jié)我們繼續(xù)從BGP建立鄰居前的TCP三次握手到發(fā)送Open報(bào)文拷泽、Keepalive報(bào)文疫鹊。鄰居建立之后袖瞻,我們對(duì)現(xiàn)網(wǎng)的操作可能會(huì)產(chǎn)生update報(bào)文。
現(xiàn)在我們談一談Update報(bào)文
Update報(bào)文
BGP通過(guò)Network和Import兩種方式生成BGP路由拆吆,BGP路由封裝在Update報(bào)文中通告給鄰居聋迎,BGP在鄰居關(guān)系建立后才開(kāi)始通告路由信息。
Update消息主要用來(lái)發(fā)布可用路由和撤銷路由枣耀,Update中包含以下信息:
1霉晕、網(wǎng)絡(luò)層可達(dá)信息(NLRI):用來(lái)公布IP前綴和前綴長(zhǎng)度。
2捞奕、路由屬性:為BGP提供環(huán)路檢測(cè)牺堰,控制路由優(yōu)選。
3颅围、撤銷路由:用來(lái)描述無(wú)法到達(dá)且從業(yè)務(wù)中撤銷的路由前綴和前綴長(zhǎng)度伟葫。
再通告BGP路由時(shí),由于各種因素的影響谷浅,為了避免路由通告過(guò)程中出現(xiàn)的問(wèn)題扒俯,BGP路由通告需要遵守一定的規(guī)則,下面進(jìn)行詳細(xì)分析一疯。
1撼玄、BGP通告原則之一:僅將自己最優(yōu)的路由發(fā)布給鄰居
[R1]dis bgp routing-table
BGP Local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 2.2.2.2/32 0.0.0.0 0 0 ?
*> 10.1.12.0/24 0.0.0.0 0 0 i
BGP路由信息中如何看一條鄰居是最好的路由?
在BGP路由表中墩邀,帶>的路由是最優(yōu)的路由掌猛。
2、BGP通告原則之二:通過(guò)EBGP獲得的最優(yōu)路由發(fā)布給所有BGP鄰居
3眉睹、BGP通告原則之三:通過(guò)IBGP獲得的最優(yōu)路由不會(huì)發(fā)布給其他的IBGP鄰居
這是IBGP中重要的防止環(huán)路規(guī)則之一荔茬,又稱之為IBGP的水平分割。
4竹海、BGP通告原則之四:BGP與IGP同步
這個(gè)只會(huì)產(chǎn)生在BGP非全互聯(lián)的拓?fù)渲心轿担赐粋€(gè)AS內(nèi)存在沒(méi)有做BGP處理的路由器中,才會(huì)進(jìn)行BGP與IGP的同步斋配。
路由黑洞
我們看以下實(shí)驗(yàn):
在這個(gè)拓?fù)鋱D中孔飒,BGP傳播路由是可以跨路由器傳遞的,A路由器可以將路由通過(guò)EBGP傳遞給B艰争,B可以通過(guò)IBGP傳遞給D坏瞄,因?yàn)锽路由器到D路由器有運(yùn)行OSPF協(xié)議,路由可達(dá)甩卓,D再次通過(guò)EBGP傳遞給E鸠匀。
但是C路由器上卻沒(méi)有A路由器100.0.o.o的路由,因?yàn)镃路由器沒(méi)有運(yùn)行BGP協(xié)議逾柿。
這樣就會(huì)導(dǎo)致E路由器在回包的時(shí)候缀棍,將100.0.o.o的路由先發(fā)送給D宅此,D繼續(xù)轉(zhuǎn)發(fā)給C,C直接丟棄睦柴。這就出現(xiàn)了BGP的路由黑洞诽凌。最終導(dǎo)致路由不通。
這種又該怎么處理呢坦敌?
其實(shí)侣诵,我們的D路由器會(huì)在IBGP報(bào)文發(fā)送過(guò)來(lái)之后携龟,查詢自己的IGP路由表中是否存在該路由氏义,如果存在,則認(rèn)為在這個(gè)區(qū)域內(nèi)个束,其他路由器都存在該條路由蘸炸,就認(rèn)為是同步了躬络,繼續(xù)通過(guò)EBGP傳遞給E路由器,反之搭儒,則認(rèn)為在這個(gè)區(qū)域內(nèi)穷当,其他路由器都不存在該條路由,直接丟棄淹禾。
*1馁菜、將EBGP路由引入到IGP協(xié)議中,(基本被淘汰)比較消耗設(shè)備資源铃岔,因?yàn)锽GP路由數(shù)量過(guò)于龐大汪疮,引入到IGP協(xié)議,增加的IGP協(xié)議計(jì)算路由負(fù)擔(dān)毁习。BGP路由震蕩智嚷,IGP路由也會(huì)產(chǎn)生震蕩。
*2纺且、AS內(nèi)部所有路由器均運(yùn)行BGP協(xié)議盏道,即IBGP全互聯(lián)。主流架構(gòu)载碌,此時(shí)不再需要同步檢測(cè)猜嘱。
從IBGP鄰居得到的路由不會(huì)傳遞給IBGP鄰居
從IBGP鄰居得到的路由同步檢測(cè)后傳遞給EBGP
記錄:
BGP防環(huán)機(jī)制:
1、AS內(nèi)部防患恐仑,IBGP的水平分割:通過(guò)IBGP獲得的最優(yōu)路由不會(huì)發(fā)布給其他的IBGP鄰居泉坐。